Hi all,
This patchset contains several HCI commands and events addition.
These HCI commands and events are included in Bluetooth Core
Specification Addendum 4, and it will be used to implement 3DS
profile.
Also I'm still implementing 3DS profile's master role in the BR/EDR
controller. Summit and I'll send the patchsets about 3DS MGMT APIs
soon.
Regards,
Pyun
Hi Dohyun,
> The Write_Synchronization_Train_Parameters command configures
> the Synchronization Train functionality in the BR/EDR Controller.
>
> The Core Spec Addendum 4 adds this command in part B Connectionless
> Slave Broadcast.
>
> Bluetooth Core Specification Addendum 4 - Page 97
>
> "7.3.90 Write Synchronization Train Parameters Command [New Section]
> ...
> Note: The AFH_Channel_Map used in the Synchronization Train packets is
> configured by the Set_AFH_Channel_Classification command and the local
> channel classification in the BR/EDR Controller.
>
> Interval_Min and Interval_Max specify the allowed range of
> Sync_Train_Interval. Refer to [Vol. 2], Part B, section 2.7.2 for
> a detailed description of Sync_Train_Interval. The BR/EDR Controller shall
> select an interval from this range and return it in Sync_Train_Interval.
> If the Controller is unable to select a value from this range, it shall
> return the Invalid HCI Command Parameters (0x12) error code.
>
> Once started (via the Start_Synchronization_Train Command) the
> Synchronization Train will continue until synchronization_trainTO slots have
> passed or Connectionless Slave Broadcast has been disabled."
>
> Signed-off-by: Dohyun Pyun <[email protected]>
> Signed-off-by: C S Bhargava <[email protected]>
> ---
> include/net/bluetooth/hci.h | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index d5a0da0..6579bd3 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -870,6 +870,18 @@ struct hci_rp_set_clb_data {
> __u8 lt_addr;
> } __packed;
>
> +#define HCI_OP_WRITE_SYNC_TRAIN_PARAMS 0x0c78
> +struct hci_cp_write_sync_train_params {
> + __le16 interval_min;
> + __le16 interval_max;
> + __le32 sync_train_tout;
> + __u8 service_data;
> +} __packed;
> +struct hci_rp_write_sync_train_params {
> + __u8 status;
> + __le16 sync_train_int;
> +} __packed;
> +
> #define HCI_OP_READ_SYNC_TRAIN_PARAMS 0x0c77
we sort commands in order and 0c78 comes after 0xc77.
Regards
Marcel
Hi Dohyun,
> The Set_Connectionless_Slave_Broadcast_Data command provides the
> ability for the Host to set Connectionless Slave Broadcast data in
> the BR/EDR Controller.
>
> The Core Spec Addendum 4 adds this command in part B Connectionless
> Slave Broadcast.
>
> Bluetooth Core Specification Addendum 4 - Page 93
>
> "7.3.88 Set Connectionless Slave Broadcast Data Command [New Section]
> ...
> If connectionless slave broadcast mode is disabled, this data shall be
> kept by the BR/EDR Controller and used once connectionless slave broadcast
> mode is enabled. If connectionless slave broadcast mode is enabled,
> and this command is successful, this data will be sent starting with
> the next Connectionless Slave Broadcast instant.
>
> The Data_Length field may be zero, in which case no data needs to be
> provided.
>
> The Host may fragment the data using the Fragment field in the command. If
> the combined length of the fragments exceeds the capacity of the largest
> allowed packet size specified in the Set Connectionless Slave Broadcast
> command, all fragments associated with the data being assembled shall be
> discarded and the Invalid HCI Command Parameters error (0x12) shall be
> returned."
>
> Signed-off-by: Dohyun Pyun <[email protected]>
> Signed-off-by: C S Bhargava <[email protected]>
> ---
> include/net/bluetooth/hci.h | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index 28294ac..d5a0da0 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -35,6 +35,8 @@
>
> #define HCI_MAX_AMP_ASSOC_SIZE 672
>
> +#define HCI_MAX_CLB_DATA_SIZE 252
> +
I have no idea what CLB stands for and how that got derived from connection slave broadcast.
Regards
Marcel
Hi Dohyun,
your adding the structures and definitions for this command. Not that actual command. That should be clear in the subject.
> The Set_Reserved_LT_ADDR command allows the host to request that the
> BR/EDR Controller reserve a specific LT_ADDR for Connectionless Slave
> Broadcast.
>
> The Core Spec Addendum 4 adds this command in part B Connectionless
> Slave Broadcast.
>
> Bluetooth Core Specification Addendum 4 - Page 90
>
> "7.3.86 Set Reserved LT_ADDR Command [New Section]
> ...
> If the LT_ADDR indicated in the LT_ADDR parameter is already in use by the
> BR/EDR Controller, it shall return the ACL Connection Already Exists (0x0B)
> error code. If the LT_ADDR indicated in the LT_ADDR parameter is out of
> range, the controller shall return the Invalid HCI Command Parameters (0x12)
> error code. If the command succeeds, then the reserved LT_ADDR shall be
> used when issuing subsequent Set Connectionless Slave Broadcast Data and
> Set Connectionless Slave Broadcast commands.
> To ensure that the reserved LT_ADDR is not already allocated, it is
> recommended that this command be issued at some point after HCI_Reset is
> issued but before page scanning is enabled or paging is initiated."
>
> Signed-off-by: Dohyun Pyun <[email protected]>
> Signed-off-by: C S Bhargava <[email protected]>
> ---
> include/net/bluetooth/hci.h | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index 7ede266..dead0b0 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -838,6 +838,15 @@ struct hci_cp_write_le_host_supported {
> __u8 simul;
> } __packed;
>
> +#define HCI_OP_SET_RESERVED_LT_ADDR 0x0c74
> +struct hci_cp_set_reserved_lt_addr {
> + __u8 lt_addr;
> +} __packed;
> +struct hci_rp_set_reserved_lt_addr {
> + __u8 status;
> + __u8 lt_addr;
> +} __packed;
> +
Please follow the coding style of all the other structs in this area. They clearly have a tab between the type and the variable name.
Regards
Marcel
From: DoHyun Pyun <[email protected]>
The Slave Page Response Timeout event indicates to the Host that a
slave page response timeout has occurred in the BR/EDR Controller.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 110
"7.7.67 Synchronization Train Complete Event [New Section]
...
Note: this event will be generated if the slave BR/EDR Controller
responds to a page but does not receive the master FHS packet
(see Baseband, Section 8.3.3) within pagerespTO.
Event Parameters: NONE"
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 022d44f..809c9ee 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -1507,6 +1507,8 @@ struct hci_ev_sync_train_complete {
__u8 status;
} __packed;
+#define HCI_EV_SLAVE_PAGE_RESP_TIMEOUT 0x54
+
/* Low energy meta events */
#define LE_CONN_ROLE_MASTER 0x00
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
The Synchronization Train Complete event indicates that the Start
Synchronization Train command has completed.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 103
"7.7.67 Synchronization Train Complete Event [New Section]
...
Event Parameters:
Status 0x00 Start Synchronization Train command completed
successfully.
0x01-0xFF Start Synchronization Train command failed.
See Part D, Error Codes, for error codes and
descriptions."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 3bd316f..022d44f 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -1502,6 +1502,11 @@ struct hci_ev_num_comp_blocks {
struct hci_comp_blocks_info handles[0];
} __packed;
+#define HCI_EV_SYNC_TRAIN_COMPLETE 0x4F
+struct hci_ev_sync_train_complete {
+ __u8 status;
+} __packed;
+
/* Low energy meta events */
#define LE_CONN_ROLE_MASTER 0x00
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
The Start_Synchronization_Train command controls the Synchronization
Train functionality in the BR/EDR Controller.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 86
"7.1.51 Start Synchronization Train Command [New Section]
...
If connectionless slave broadcast mode is not enabled, the Command
Disallowed (0x0C) error code shall be returned. After receiving this
command and returning a Command Status event, the Baseband starts
attempting to send synchronization train packets containing information
related to the enabled Connectionless Slave Broadcast packet timing.
Note: The AFH_Channel_Map used in the synchronization train packets is
configured by the Set_AFH_Channel_Classification command and the local
channel classification in the BR/EDR Controller.
The synchronization train packets will be sent using the parameters
specified by the latest Write_Synchronization_Train_Parameters command.
The Synchronization Train will continue until synchronization_trainTO
slots (as specified in the last Write_Synchronization_Train command)
have passed or until the Host disables the Connectionless Slave Broadcast
logical transport."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index ebdc7cc..3bd316f 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -643,6 +643,8 @@ struct hci_rp_set_clb {
__le16 interval;
} __packed;
+#define HCI_OP_START_SYNC_TRAIN 0x0443
+
#define HCI_OP_SNIFF_MODE 0x0803
struct hci_cp_sniff_mode {
__le16 handle;
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
The Write_Synchronization_Train_Parameters command configures
the Synchronization Train functionality in the BR/EDR Controller.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 97
"7.3.90 Write Synchronization Train Parameters Command [New Section]
...
Note: The AFH_Channel_Map used in the Synchronization Train packets is
configured by the Set_AFH_Channel_Classification command and the local
channel classification in the BR/EDR Controller.
Interval_Min and Interval_Max specify the allowed range of
Sync_Train_Interval. Refer to [Vol. 2], Part B, section 2.7.2 for
a detailed description of Sync_Train_Interval. The BR/EDR Controller shall
select an interval from this range and return it in Sync_Train_Interval.
If the Controller is unable to select a value from this range, it shall
return the Invalid HCI Command Parameters (0x12) error code.
Once started (via the Start_Synchronization_Train Command) the
Synchronization Train will continue until synchronization_trainTO slots have
passed or Connectionless Slave Broadcast has been disabled."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index d5a0da0..6579bd3 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -870,6 +870,18 @@ struct hci_rp_set_clb_data {
__u8 lt_addr;
} __packed;
+#define HCI_OP_WRITE_SYNC_TRAIN_PARAMS 0x0c78
+struct hci_cp_write_sync_train_params {
+ __le16 interval_min;
+ __le16 interval_max;
+ __le32 sync_train_tout;
+ __u8 service_data;
+} __packed;
+struct hci_rp_write_sync_train_params {
+ __u8 status;
+ __le16 sync_train_int;
+} __packed;
+
#define HCI_OP_READ_SYNC_TRAIN_PARAMS 0x0c77
#define HCI_OP_READ_LOCAL_VERSION 0x1001
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
he Set_Connectionless_Slave_Broadcast command controls the
Connectionless Slave Broadcast functionality in the BR/EDR
Controller.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 78
"7.1.49 Set Connectionless Slave Broadcast Command [New Section]
...
The LT_ADDR indicated in the Set_Connectionless_Slave_Broadcast shall be
pre-allocated using the HCI_Set_Reserved_LT_ADDR command. If the
LT_ADDR has not been reserved, the Unknown Connection Identifier (0x02)
error code shall be returned. If the controller is unable to reserve
sufficient bandwidth for the requested activity, the Connection Rejected
Due to Limited Resources (0x0D) error code shall be returned.
The LPO_Allowed parameter informs the BR/EDR Controller whether it is
allowed to sleep.
The Packet_Type parameter specifies which packet types are allowed. The
Host shall either enable BR packet types only, or shall enable EDR and DM1
packet types only.
The Interval_Min and Interval_Max parameters specify the range from which
the BR/EDR Controller must select the Connectionless Slave Broadcast
Interval. The selected Interval is returned."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 6579bd3..ebdc7cc 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -627,6 +627,22 @@ struct hci_rp_logical_link_cancel {
__u8 flow_spec_id;
} __packed;
+#define HCI_OP_SET_CLB 0x0441
+struct hci_cp_set_clb {
+ __u8 enable;
+ __u8 lt_addr;
+ __u8 lpo_allowed;
+ __le16 packet_type;
+ __le16 interval_min;
+ __le16 interval_max;
+ __le16 csb_sv_tout;
+} __packed;
+struct hci_rp_set_clb {
+ __u8 status;
+ __u8 lt_addr;
+ __le16 interval;
+} __packed;
+
#define HCI_OP_SNIFF_MODE 0x0803
struct hci_cp_sniff_mode {
__le16 handle;
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
The Set_Connectionless_Slave_Broadcast_Data command provides the
ability for the Host to set Connectionless Slave Broadcast data in
the BR/EDR Controller.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 93
"7.3.88 Set Connectionless Slave Broadcast Data Command [New Section]
...
If connectionless slave broadcast mode is disabled, this data shall be
kept by the BR/EDR Controller and used once connectionless slave broadcast
mode is enabled. If connectionless slave broadcast mode is enabled,
and this command is successful, this data will be sent starting with
the next Connectionless Slave Broadcast instant.
The Data_Length field may be zero, in which case no data needs to be
provided.
The Host may fragment the data using the Fragment field in the command. If
the combined length of the fragments exceeds the capacity of the largest
allowed packet size specified in the Set Connectionless Slave Broadcast
command, all fragments associated with the data being assembled shall be
discarded and the Invalid HCI Command Parameters error (0x12) shall be
returned."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 28294ac..d5a0da0 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -35,6 +35,8 @@
#define HCI_MAX_AMP_ASSOC_SIZE 672
+#define HCI_MAX_CLB_DATA_SIZE 252
+
/* HCI dev events */
#define HCI_DEV_REG 1
#define HCI_DEV_UNREG 2
@@ -856,6 +858,18 @@ struct hci_rp_delete_reserved_lt_addr {
__u8 lt_addr;
} __packed;
+#define HCI_OP_SET_CLB_DATA 0x0c76
+struct hci_cp_set_clb_data {
+ __u8 lt_addr;
+ __u8 fragment;
+ __u8 data_length;
+ __u8 data[HCI_MAX_CLB_DATA_SIZE];
+} __packed;
+struct hci_rp_set_clb_data {
+ __u8 status;
+ __u8 lt_addr;
+} __packed;
+
#define HCI_OP_READ_SYNC_TRAIN_PARAMS 0x0c77
#define HCI_OP_READ_LOCAL_VERSION 0x1001
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
The Delete_Reserved_LT_ADDR command requests that the BR/EDR
Controller cancel the reservation for a specific LT_ADDR reserved for the
purposes of Connectionless Slave Broadcast.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 92
"7.3.87 Delete Reserved LT_ADDR Command [New Section]
...
If the LT_ADDR indicated in the LT_ADDR parameter is not reserved by the
BR/EDR Controller, it shall return the Unknown Connection Identifier (0x02)
error code.
If connectionless slave broadcast mode is still active, then the Controller
shall return the Command Disallowed (0x0C) error code."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index dead0b0..28294ac 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -847,6 +847,15 @@ struct hci_rp_set_reserved_lt_addr {
__u8 lt_addr;
} __packed;
+#define HCI_OP_DELETE_RESERVED_LT_ADDR 0x0c75
+struct hci_cp_delete_reserved_lt_addr {
+ __u8 lt_addr;
+} __packed;
+struct hci_rp_delete_reserved_lt_addr {
+ __u8 status;
+ __u8 lt_addr;
+} __packed;
+
#define HCI_OP_READ_SYNC_TRAIN_PARAMS 0x0c77
#define HCI_OP_READ_LOCAL_VERSION 0x1001
--
1.8.1.2
From: DoHyun Pyun <[email protected]>
The Set_Reserved_LT_ADDR command allows the host to request that the
BR/EDR Controller reserve a specific LT_ADDR for Connectionless Slave
Broadcast.
The Core Spec Addendum 4 adds this command in part B Connectionless
Slave Broadcast.
Bluetooth Core Specification Addendum 4 - Page 90
"7.3.86 Set Reserved LT_ADDR Command [New Section]
...
If the LT_ADDR indicated in the LT_ADDR parameter is already in use by the
BR/EDR Controller, it shall return the ACL Connection Already Exists (0x0B)
error code. If the LT_ADDR indicated in the LT_ADDR parameter is out of
range, the controller shall return the Invalid HCI Command Parameters (0x12)
error code. If the command succeeds, then the reserved LT_ADDR shall be
used when issuing subsequent Set Connectionless Slave Broadcast Data and
Set Connectionless Slave Broadcast commands.
To ensure that the reserved LT_ADDR is not already allocated, it is
recommended that this command be issued at some point after HCI_Reset is
issued but before page scanning is enabled or paging is initiated."
Signed-off-by: Dohyun Pyun <[email protected]>
Signed-off-by: C S Bhargava <[email protected]>
---
include/net/bluetooth/hci.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 7ede266..dead0b0 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -838,6 +838,15 @@ struct hci_cp_write_le_host_supported {
__u8 simul;
} __packed;
+#define HCI_OP_SET_RESERVED_LT_ADDR 0x0c74
+struct hci_cp_set_reserved_lt_addr {
+ __u8 lt_addr;
+} __packed;
+struct hci_rp_set_reserved_lt_addr {
+ __u8 status;
+ __u8 lt_addr;
+} __packed;
+
#define HCI_OP_READ_SYNC_TRAIN_PARAMS 0x0c77
#define HCI_OP_READ_LOCAL_VERSION 0x1001
--
1.8.1.2