svn commit: r360440 - in head: sys/netgraph/bluetooth/include usr.sbin/bluetooth/hccontrol
Takanori Watanabe
takawata at FreeBSD.org
Tue Apr 28 16:00:35 UTC 2020
Author: takawata
Date: Tue Apr 28 16:00:34 2020
New Revision: 360440
URL: https://svnweb.freebsd.org/changeset/base/360440
Log:
Add le_read_buffer_size command and manpage.
It supports both v1 and v2 command.
PR:245964
Submitted by: Marc Veldman <marc at bumblingdork.com>
Modified:
head/sys/netgraph/bluetooth/include/ng_hci.h
head/usr.sbin/bluetooth/hccontrol/hccontrol.8
head/usr.sbin/bluetooth/hccontrol/le.c
Modified: head/sys/netgraph/bluetooth/include/ng_hci.h
==============================================================================
--- head/sys/netgraph/bluetooth/include/ng_hci.h Tue Apr 28 15:44:39 2020 (r360439)
+++ head/sys/netgraph/bluetooth/include/ng_hci.h Tue Apr 28 16:00:34 2020 (r360440)
@@ -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*/
Modified: head/usr.sbin/bluetooth/hccontrol/hccontrol.8
==============================================================================
--- head/usr.sbin/bluetooth/hccontrol/hccontrol.8 Tue Apr 28 15:44:39 2020 (r360439)
+++ head/usr.sbin/bluetooth/hccontrol/hccontrol.8 Tue Apr 28 16:00:34 2020 (r360440)
@@ -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
Modified: head/usr.sbin/bluetooth/hccontrol/le.c
==============================================================================
--- head/usr.sbin/bluetooth/hccontrol/le.c Tue Apr 28 15:44:39 2020 (r360439)
+++ head/usr.sbin/bluetooth/hccontrol/le.c Tue Apr 28 16:00:34 2020 (r360440)
@@ -554,7 +554,65 @@ 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[] = {
{
"le_enable",
@@ -620,5 +678,11 @@ struct hci_command le_commands[] = {
"le_set_advertising_data -n $name -f $flag -u $uuid16,$uuid16 \n"
"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
},
};
More information about the svn-src-all
mailing list