Add le_read_buffer_size command and manpage.
It supports both v1 and v2 command. PR:245964 Submitted by: Marc Veldman <marc@bumblingdork.com>
This commit is contained in:
parent
b7eae75807
commit
1f5d883dd7
@ -1672,6 +1672,15 @@ typedef struct {
|
||||
u_int16_t connection_handle;
|
||||
}__attribute__ ((packed)) ng_hci_le_long_term_key_request_negative_reply_rp;
|
||||
|
||||
#define NG_HCI_OCF_LE_READ_BUFFER_SIZE_V2 0x0060
|
||||
/*No command parameter */
|
||||
typedef struct {
|
||||
u_int8_t status;
|
||||
u_int16_t hc_le_data_packet_length;
|
||||
u_int8_t hc_total_num_le_data_packets;
|
||||
u_int16_t hc_iso_data_packet_length;
|
||||
u_int8_t hc_total_num_iso_data_packets;
|
||||
} __attribute__ ((packed)) ng_hci_le_read_buffer_size_rp_v2;
|
||||
|
||||
#define NG_HCI_OCF_LE_READ_SUPPORTED_STATES 0x001c
|
||||
/*No command parameter*/
|
||||
|
@ -25,7 +25,7 @@
|
||||
.\" $Id: hccontrol.8,v 1.6 2003/08/06 21:26:38 max Exp $
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd April 24, 2020
|
||||
.Dd April 27, 2020
|
||||
.Dt HCCONTROL 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -154,6 +154,7 @@ are:
|
||||
.It Cm LE_Set_Scan_Parameters
|
||||
.It Cm LE_Set_Scan_Enable
|
||||
.It Cm LE_Read_Supported_States
|
||||
.It Cm LE_Read_Buffer_Size
|
||||
.El
|
||||
.Pp
|
||||
The currently supported node commands in
|
||||
|
@ -554,6 +554,64 @@ le_set_advertising_data(int s, int argc, char *argv[])
|
||||
|
||||
return (OK);
|
||||
}
|
||||
static int
|
||||
le_read_buffer_size(int s, int argc, char *argv[])
|
||||
{
|
||||
union {
|
||||
ng_hci_le_read_buffer_size_rp v1;
|
||||
ng_hci_le_read_buffer_size_rp_v2 v2;
|
||||
} rp;
|
||||
|
||||
int n, ch;
|
||||
uint8_t v;
|
||||
uint16_t cmd;
|
||||
|
||||
optreset = 1;
|
||||
optind = 0;
|
||||
|
||||
/* Default to version 1*/
|
||||
v = 1;
|
||||
cmd = NG_HCI_OCF_LE_READ_BUFFER_SIZE;
|
||||
|
||||
while ((ch = getopt(argc, argv , "v:")) != -1) {
|
||||
switch(ch) {
|
||||
case 'v':
|
||||
v = (uint8_t)strtol(optarg, NULL, 16);
|
||||
if (v == 2)
|
||||
cmd = NG_HCI_OCF_LE_READ_BUFFER_SIZE_V2;
|
||||
else if (v > 2)
|
||||
return (USAGE);
|
||||
break;
|
||||
default:
|
||||
v = 1;
|
||||
}
|
||||
}
|
||||
|
||||
n = sizeof(rp);
|
||||
if (hci_simple_request(s, NG_HCI_OPCODE(NG_HCI_OGF_LE, cmd),
|
||||
(void *)&rp, &n) == ERROR)
|
||||
return (ERROR);
|
||||
|
||||
if (rp.v1.status != 0x00) {
|
||||
fprintf(stdout, "Status: %s [%#02x]\n",
|
||||
hci_status2str(rp.v1.status), rp.v1.status);
|
||||
return (FAILED);
|
||||
}
|
||||
|
||||
fprintf(stdout, "ACL data packet length: %d\n",
|
||||
rp.v1.hc_le_data_packet_length);
|
||||
fprintf(stdout, "Number of ACL data packets: %d\n",
|
||||
rp.v1.hc_total_num_le_data_packets);
|
||||
|
||||
if (v == 2) {
|
||||
fprintf(stdout, "ISO data packet length: %d\n",
|
||||
rp.v2.hc_iso_data_packet_length);
|
||||
fprintf(stdout, "Number of ISO data packets: %d\n",
|
||||
rp.v2.hc_total_num_iso_data_packets);
|
||||
}
|
||||
|
||||
return (OK);
|
||||
}
|
||||
|
||||
struct hci_command le_commands[] = {
|
||||
{
|
||||
@ -621,4 +679,10 @@ struct hci_command le_commands[] = {
|
||||
"set LE device advertising packed data",
|
||||
&le_set_advertising_data
|
||||
},
|
||||
{
|
||||
"le_read_buffer_size",
|
||||
"le_read_buffer_size [-v 1|2]\n"
|
||||
"Read the maximum size of ACL and ISO data packets",
|
||||
&le_read_buffer_size
|
||||
},
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user