aboutsummaryrefslogtreecommitdiff
path: root/en/devices/bluetooth/hci_requirements.html
diff options
context:
space:
mode:
Diffstat (limited to 'en/devices/bluetooth/hci_requirements.html')
-rw-r--r--en/devices/bluetooth/hci_requirements.html564
1 files changed, 303 insertions, 261 deletions
diff --git a/en/devices/bluetooth/hci_requirements.html b/en/devices/bluetooth/hci_requirements.html
index 217850dc..43ffefbd 100644
--- a/en/devices/bluetooth/hci_requirements.html
+++ b/en/devices/bluetooth/hci_requirements.html
@@ -1,6 +1,11 @@
-<html devsite> <head> <title>HCI Requirements</title> <meta name="project_path"
- value="/_project.yaml" /> <meta name="book_path" value="/_book.yaml" />
- </head> <body>
+<html devsite>
+ <head>
+ <title>HCI Requirements</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+
+ <body>
<!--
Copyright 2017 The Android Open Source Project
@@ -21,55 +26,62 @@
Bluetooth controller.</p>
<p>This document provides a list of Bluetooth (BT) and Bluetooth Low
- Energy (BLE) requirements. The aim is for Host BT stack vendors and BT
- controller vendors to conform to these platform requirements in order to
- use the feature set described below</p>
-
- <p>The Bluetooth Core 4.1 Specification, referred to in this document as
- the "BT 4.1 core specification," is available on the <a
- href="https://www.bluetooth.org/en-us/specification/adopted-specifications">Bluetooth
- SIG website</a> along with other adopted documents.</p>
+ Energy (BLE) HCI requirements. The aim is for Host BT stack vendors and
+ BT controller vendors to conform to these platform requirements in order
+ to use the feature set described below.</p>
+
+ <p>This document refers to the Bluetooth Core 4.1 Specification as the
+ "spec." The Bluetooth Core 4.1 Specification is available on the
+ <a href="https://www.bluetooth.org/en-us/specification/adopted-specifications">
+ Bluetooth SIG website</a> along with other adopted documents.</p>
+
<h2
id="general-design-overview">General design overview</h2>
+
<h3
id="chip-capabilities-and-configuration">Chip capabilities and
configuration</h3>
- <p>Android, as an open platform, has a matrix of software
+
+ <p>As an open platform, Android has a matrix of software
releases, OEMs, vendors, and platform and chip capabilities.</p>
<p>To manage the varying landscape and to manage migrations, a design
philosophy of allowing BT controllers to expose their capabilities
- (beyond the standard BT 4.1 core specification) is described in this
- document. The host BT stack can then use these capabilities to
- determine which features to enable.</p>
+ (beyond the standard Bluetooth Core 4.1 Specification) is described
+ in this document. The host BT stack can then use these capabilities
+ to determine which features to enable.</p>
<h3 id="supporting-open-standards">Supporting open standards</h3>
<p> One goal of Android is to support open standards after
ratification in a Bluetooth specification. If a feature described
below becomes available in standard HCI methods in a future Bluetooth
specification, we will lean towards making that approach the default.</p>
+
<h2 id="vendor-specific-capabilities">Vendor-specific capabilities</h2>
<p>Vendor-specific command:
<code>LE_Get_Vendor_Capabilities_Command</code></p>
- <p>OCF (OpCode Command Field): 0x153</p>
+ <p>OpCode Command Field (OCF): 0x153</p>
<table>
<tr>
- <th>Command Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
<tr>
<td></td>
<td>NA</td>
- <td>Empty command parameter list</td>
+ <td>Empty Command parameter list</td>
</tr>
</table>
+
<p> A Command Complete event will be generated for this command.</p>
+
<table>
<tr>
- <th>Return Parameter</th>
- <th>Size</th> <th>Purpose</th>
+ <th>Return parameter</th>
+ <th>Size</th>
+ <th>Purpose</th>
</tr>
<tr>
<td><code>Status</code></td>
@@ -84,8 +96,8 @@
<tr>
<td><code>offloaded_resolution_of_private-address</code></td>
<td>1 octet</td>
- <td>BT chip capability of RPA; if supported by a chip,
- it needs enablement by the host.<br/>
+ <td>BT chip capability of RPA.<br/>
+ If supported by a chip, it needs enablement by the host.<br/>
0 = Not capable<br/>
1 = Capable</td>
</tr>
@@ -102,7 +114,7 @@
<tr>
<td><code>filtering_support</code></td>
<td>1 octet</td>
- <td>Support for filtering in the controller.<br/>
+ <td>Support for filtering in the controller<br/>
0 = Not supported<br/>
1 = Supported</td>
</tr>
@@ -114,7 +126,7 @@
<tr>
<td><code>activity_energy_info_support</code></td>
<td>1 octet</td>
- <td>Supports reporting of activity and energy information.<br/>
+ <td>Supports reporting of activity and energy information<br/>
0 = Not capable<br/>
1 = Capable</td>
</tr>
@@ -122,9 +134,9 @@
<td><code>version_supported</code></td>
<td>2 octets<br/>
[0x00, 0x60]</td>
- <td>Specifies the version of the Google feature spec supported.<br/>
- byte[0] = major number<br/>
- byte[1] = minor number</td>
+ <td>Specifies the version of the Google feature spec supported<br/>
+ byte[0] = Major number<br/>
+ byte[1] = Minor number</td>
</tr>
<tr>
<td><code>total_num_of_advt_tracked</code></td>
@@ -146,14 +158,14 @@
<td><code>LE_address_generation_offloading_support</code></td>
<td>1 octet</td>
<td>0 = Not supported<br/>
- 1 = supported</td>
+ 1 = Supported</td>
</tr>
</table>
<p>The <code>max_advt_instances parameter</code> represents the total
advertisement instances in the controller. The range of
<code>advt_instance</code> IDs will be 0 to
- <code>max_advt_instances-1</code>.</p>
+ <code>max_advt_instances</code> minus 1.</p>
<p>An advertisement instance with an ID equal to 0 will map to an
existing (default/standard) HCI instance. When operating on a
@@ -161,6 +173,7 @@
used.</p>
<h2 id="multi-advertiser-support">Multi-advertiser support</h2>
+
<p>The objectives of multi-advertiser support are the following:</p>
<ul>
@@ -182,7 +195,7 @@
<table>
<tr>
- <th>Command Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -201,7 +214,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -222,17 +235,18 @@
</table>
<h4
- id="le_multi_advt_command-set_advt_param_multi_sub_cmd">LE_Multi_Advt_Command:
- Set_Advt_Param_Multi_Sub_Cmd</h4>
- <p>Base reference (referred to below as "spec"):
- The BT 4.1 core specification, page 964 (LE Set Advertising
+ id="le_multi_advt_command-set_advt_param_multi_sub_cmd">
+ LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd</h4>
+
+ <p>Base reference:
+ Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising
Parameter Command)</p>
<p>Sub OCF: 0x01</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -312,7 +326,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -332,14 +346,14 @@
id="le_multi_advt_command-set_advt_data_multi_sub_cmd">LE_Multi_Advt_Command:
Set_Advt_Data_Multi_Sub_Cmd</h4>
- <p>Base reference: The BT 4.1 core specification, page 969 (LE Set
- Advertising Data Command)</p>
+ <p>Base reference: Bluetooth Core 4.1 Specification, page 969
+ (LE Set Advertising Data Command)</p>
<p>Sub OCF: 0x02</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -369,7 +383,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -388,14 +402,15 @@
<h4
id="le_multi_advt_command-set_scan_resp_data_multi_sub_cmd">LE_Multi_Advt_Command:
Set_Scan_Resp_Data_Multi_Sub_Cmd</h4>
- <p>Base reference: The BT 4.1 core specification, page 970
+
+ <p>Base reference: Bluetooth Core 4.1 Specification, page 970
(LE Set Scan Response Data Command)</p>
<p>Sub OCF: 0x03</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -425,7 +440,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -444,19 +459,19 @@
<h4
id="le_multi_advt_command-set_random_addr_multi_sub_cmd">LE_Multi_Advt_Command:
Set_Random_Addr_Multi_Sub_Cmd</h4>
- <p>Base reference: The BT 4.1 core specification, page 963 (LE Set
- Random Address Command)</p>
+ <p>Base reference: Bluetooth Core 4.1 Specification, page 963
+ (LE Set Random Address Command)</p>
<p>Sub OCF: 0x04</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
<tr>
- <td>Random Address</td>
+ <td><code>Random Address</code></td>
<td>Per spec</td>
<td>Per spec</td>
</tr>
@@ -472,7 +487,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -491,14 +506,14 @@
<h4
id="le_multi_advt_command-set_advt_enable_multi_sub_cmd">LE_Multi_Advt_Command:
Set_Advt_Enable_Multi_Sub_Cmd</h4>
- <p>Base reference: The BT 4.1 core specification, page 971 (LE Set
- Advertise Enable Command in that core specification)</p>
+ <p>Base reference: Bluetooth Core 4.1 Specification, page 971
+ (LE Set Advertise Enable Command in that core specification)</p>
<p>OCF: 0x05</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -520,7 +535,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -538,8 +553,8 @@
<h2 id="offloaded-resolution-of-private-address">Offloaded resolution of
private address</h2>
- <p> This feature allows the resolution of a private address in the
- controller firmware or hardware, which provides the following benefits:
+ <p> This feature resolves a private address in the controller firmware
+ or hardware, which provides the following benefits:
</p>
<ul>
@@ -553,7 +568,7 @@
<table>
<tr>
- <th>Command Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -585,7 +600,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -597,8 +612,8 @@
Suggested HCI status values:<br/>
0x00 Success<br/>
0x01 Unknown command (if not supported)<br/>
- 0x12 Invalid command parameters (if any
- parameters are outside the given range)</td>
+ 0x12 Invalid command parameters (if any parameters are outside
+ the given range)</td>
</tr>
</table>
@@ -607,7 +622,7 @@
<table>
<tr>
- <th>Command Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -626,7 +641,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -653,7 +668,7 @@
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -667,15 +682,15 @@
<p>RPA offload is required to be enabled by the host, based on the
chip capability. Refer to the
- <code>LE_Get_Vendor_Capabilities_Command.</code> Each chip can have
- a varying <code>max_irk_list_sz </code>in the firmware. </p>
+ <code>LE_Get_Vendor_Capabilities_Command</code>. Each chip can have
+ a varying <code>max_irk_list_sz</code> in the firmware.</p>
<p>A Command Complete event will be generated for this command.
</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -696,7 +711,7 @@
<p>Sub OCF: 0x02</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -723,7 +738,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -750,7 +765,7 @@
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -763,8 +778,7 @@
<tr>
<td><code>LE_Device_Address</code></td>
<td>6 octets</td>
- <td>Public or random address that associates to
- the IRK</td>
+ <td>Public or random address that associates to the IRK</td>
</tr>
</table>
@@ -772,7 +786,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -798,7 +812,7 @@
<p>Sub OCF: 0x04</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -813,7 +827,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -841,7 +855,7 @@
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -857,7 +871,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -933,7 +947,7 @@
<table>
<tr>
- <th>Command Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -952,7 +966,7 @@
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -972,12 +986,12 @@
</table>
<h4
- id="le_batch_scan_command-enable-customer-specific-feature">LE_Batch_Scan_Command:
- Enable Customer Specific feature</h4>
+ id="le_batch_scan_command-enable-customer-specific-feature">
+ LE_Batch_Scan_Command: Enable Customer Specific feature</h4>
<p>Sub OCF: 0x01</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -992,7 +1006,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1012,32 +1026,32 @@
</table>
<h4
- id="le_batch_scan_command-set-batch-scan-storage-param-subcommand">LE_Batch_Scan_Command:
- Set Batch Scan Storage Param subcommand</h4>
+ id="le_batch_scan_command-set-batch-scan-storage-param-subcommand">
+ LE_Batch_Scan_Command: Set Batch Scan Storage Param subcommand</h4>
<p>Sub OCF: 0x02</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
<tr>
<td><code>Batch_Scan_Full_Max</code></td>
<td>1 octet</td>
- <td>Max storage space (in %) allocated to full style [Range:
- 0-100]</td>
+ <td>Max storage space (in %) allocated to full style<br/>
+ [Range: 0-100]</td>
</tr>
<tr>
<td><code>Batch_Scan_Truncated_Max</code></td>
<td>1 octet</td>
- <td>Max storage space (in %) allocated to truncated style [Range:
- 0-100]</td>
+ <td>Max storage space (in %) allocated to truncated style<br/>
+ [Range: 0-100]</td>
</tr>
<tr>
<td><code>Batch_Scan_Notify_Threshold</code></td>
<td>1 octet</td>
<td>Setup notification level (in %) for individual storage pool
- [Range: 0-100].<br/>
+ <br/>[Range: 0-100]<br/>
Setting to 0 will disable notification.
Vendor-specific HCI event is generated (Storage threshold breach
subevent)</td>
@@ -1047,7 +1061,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1064,12 +1078,12 @@
</table>
<h4
- id="le_batch_scan_command-set-batch-scan-param-subcommand">LE_Batch_Scan_Command:
- Set Batch Scan Param subcommand</h4>
+ id="le_batch_scan_command-set-batch-scan-param-subcommand">
+ LE_Batch_Scan_Command: Set Batch Scan Param subcommand</h4>
<p>Sub OCF: 0x03</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1110,24 +1124,25 @@
unique key for Truncated style = {<code>BD_ADDR,</code>
scan_interval}. This means only one <code>BD_ADDR will</code> be
recorded for each scan interval. The record to keep for Truncated
- mode is the following: {<code>BD_ADDR,</code> Tx Power, RSSI,
+ mode is the following: {<code>BD_ADDR</code>, Tx Power, RSSI,
Timestamp} </p>
<p> When Full mode is enabled, active scanning will be used and Scan
Responses will be recorded. The Full style unique key = {MAC, Ad
packet}, irrespective of scan interval. The record to keep for Full
- mode is {<code>BD_ADDR,</code> Tx Power, RSSI, Timestamp, Ad packet,
- Scan Response}. In Full style, the same AD packet, when seen
- multiple times across different scan intervals, is recorded only
- once. However, in Truncated mode, it is the visibility of
- <code>BA_ADDR </code>across different scan intervals that is of
- interest (once per scan interval). The RSSI is the averaged value of
- all duplicates of a unique advertisement within a scan interval.</p>
+ mode is {<code>BD_ADDR</code>, Tx Power, RSSI, Timestamp, Ad
+ packet, Scan Response}. In Full style, the same AD packet, when
+ seen multiple times across different scan intervals, is recorded
+ only once. However, in Truncated mode, it is the visibility of
+ <code>BA_ADDR</code> across different scan intervals that is of
+ interest (once per scan interval). The RSSI is the averaged value
+ of all duplicates of a unique advertisement within a scan interval.
+ </p>
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1148,7 +1163,7 @@
<p>Sub OCF: 0x04</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1159,28 +1174,30 @@
0x02 – Full mode data</td>
</tr>
</table>
+
<p>A Command Complete event will be generated for this command.
- When the host issues this command, all the results in the controller
- may not fit in one Command Complete event. The host will iterate
- issuing this command until the corresponding results in the Command
- Complete event indicate 0 in the number of records, which indicates
- the controller has no more records to communicate to the host. Each
- Command Complete event could contain multiple records of only one
- type of data (Full or Truncated).</p>
-
- <p>Controller and host time references are not synchronized. Thus
- the timestamp needs special explanation. The unit of the timestamp
- is 50ms. The value of the timestamp is based off when the
- <code>Read_Batch_Scan_Results_Sub_cmd </code>is given by the host.
- If a command arrival time is <code>T_c</code> in the firmware, then
- the actual time the timestamp was taken in the firmware is
- <code>T_fw.</code> The reporting time will be: (<code>T_c</code> -
- <code>T_fw)</code>. <code>T_c</code> and <code>T_fw </code>are in
- the firmware time domain. This lets the host compute how long ago
- the event happened.</p>
+ When the host issues this command, all the results in the
+ controller may not fit in one Command Complete event. The host
+ will iterate issuing this command until the corresponding results
+ in the Command Complete event indicate 0 in the number of records,
+ which indicates the controller has no more records to communicate
+ to the host. Each Command Complete event could contain multiple
+ records of only one type of data (Full or Truncated).</p>
+
+ <p>Controller and host time references are not synchronized. The
+ unit of the timestamp is 50ms. The value of the timestamp is
+ based off when the <code>Read_Batch_Scan_Results_Sub_cmd</code>
+ is given by the host. If a command arrival time is
+ <code>T_c</code> in the firmware, then the actual time the
+ timestamp was taken in the firmware is <code>T_fw</code>. The
+ reporting time will be: (<code>T_c</code> - <code>T_fw</code>).
+ <code>T_c</code> and <code>T_fw </code>are in the firmware time
+ domain. This lets the host compute how long ago the event
+ happened.</p>
+
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1214,7 +1231,7 @@
Tx_Pwr[0]: 1 octet<br/>
RSSI[0] : 1 octet<br/>
Timestamp[0]: 2 octets<br/>
- [multiple records (<code>num_of_records)</code>
+ [multiple records (<code>num_of_records</code>)
with above format]<br/>
<br/>
<span style="text-decoration:underline;">Full
@@ -1229,9 +1246,10 @@
Scan_data_resp_len[0]: 1 octet<br/>
Scan_data_resp[0]: <code>Scan_data_resp </code>octets<br/>
[multiple records with above format
- (<code>num_of_records)]</code></td>
+ (<code>num_of_records</code>)]</td>
</tr>
</table>
+
<h2 id="advertising-packet-content-filter">Advertising Packet Content
Filter</h2>
<p>Use this to enable/disable/setup the
@@ -1241,7 +1259,7 @@
<p>OCF: 0x157</p>
<table>
<tr>
- <th>Command Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1261,7 +1279,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1289,7 +1307,7 @@
<p>Sub OCF: 0x00</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1303,7 +1321,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1323,15 +1341,16 @@
<td>Enable/disable is set via <code>APCF_enable</code></td>
</tr>
</table>
+
<h4
- id="le_apcf_command-set_filtering_parameters_sub_cmd">LE_APCF_Command:
- set_filtering_parameters_sub_cmd</h4>
+ id="le_apcf_command-set_filtering_parameters_sub_cmd">
+ LE_APCF_Command: set_filtering_parameters_sub_cmd</h4>
<p>This subcommand is used to add or delete a filter specification
or clear a filter list for on-chip filtering.</p>
<p>Sub OCF: 0x01</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1347,8 +1366,8 @@
</tr>
<tr>
<td><code>APCF_Filter_Index</code></td>
- <td>1 octet</td> <td>Filter index (0,
- <code>max_filter-1)</code></td>
+ <td>1 octet</td>
+ <td>Filter index (0, <code>max_filter-1</code>)</td>
</tr>
<tr>
<td><code>APCF_Feature_Selection</code></td>
@@ -1365,9 +1384,9 @@
<tr>
<td><code>APCF_List_Logic_Type</code></td>
<td>2 octets</td>
- <td>Logic operation for each feature selection
- (per bit position) specified in
- <code>APCF_Feature_Selection.</code><br/>
+ <td>Logic operation for each feature selection (per-bit
+ position) specified in <code>APCF_Feature_Selection</code>.
+ <br/>
Valid only when a feature is enabled.<br/>
Bit position value:<br/>
0: OR<br/>
@@ -1384,14 +1403,15 @@
<td>0x00: OR<br/>
0x01: AND<br/>
Note: The logic type is N/A for the first three fields
- of <code>APCF_Feature_Selection,</code> which is always "AND"
- logic. They are only applicable for (Bit 3 ­Bit 6)
- four fields of <code>APCF_Feature_Selection.</code></td>
+ of <code>APCF_Feature_Selection</code>, which is always "AND"
+ logic. They are only applicable for (Bit 3 - ­Bit 6)
+ four fields of <code>APCF_Feature_Selection</code>.</td>
</tr>
<tr>
<td><code>rssi_high_thresh</code></td>
<td>1 octet</td>
- <td>[In dBm] the advertiser is considered seen only if the
+ <td>[in dBm]<br/>
+ The advertiser is considered seen only if the
signal is higher than the RSSI high threshold. Otherwise,
the firmware must behave as if it never saw it.</td>
</tr>
@@ -1405,8 +1425,8 @@
<tr>
<td><code>onfound_timeout</code></td>
<td>2 octets</td>
- <td>Valid only if <code>delivery_mode </code>is
- <code>on_found</code><br/>
+ <td>Valid only if <code>delivery_mode</code> is
+ <code>on_found</code>.<br/>
[in milliseconds]<br/>
Time for firmware to linger and collect additional
advertisements before reporting.</td>
@@ -1415,19 +1435,20 @@
<td><code>onfound_timeout_cnt</code></td>
<td>1 octet</td>
<td>Valid only if <code>delivery_mode</code> is
- <code>on_found</code><br/>
+ <code>on_found</code>.<br/>
[count]<br/>
If an advertisement in <code>onFound</code> lingers in
- firmware for the <code>onfound_timeout </code>duration,
+ firmware for the <code>onfound_timeout</code> duration,
it will collect a few advertisements and the count is checked.
If the count exceeds <code>onfound_timeout_cnt</code>,
- it's reported <code>OnFound</code>,
+ it's reported <code>OnFound</code>
immediately thereafter.</td>
</tr>
<tr>
<td><code>rssi_low_thresh</code></td>
<td>1 octet</td> <td>Valid only if <code>delivery_mode</code>
- is <code>on_found</code> [in dBm].<br/>
+ is <code>on_found</code>.<br/>
+ [in dBm]<br/>
The advertiser packet is considered as not seen if the RSSI
of the received packet is not above the RSSI
low threshold.</td>
@@ -1436,17 +1457,18 @@
<td><code>onlost_timeout</code></td>
<td>2 octets</td>
<td>Valid only if <code>delivery_mode</code> is
- <code>on_found</code><br/>
+ <code>on_found</code>.<br/>
[in milliseconds]<br/>
If an advertisement, after being found, is not seen
- contiguously for the <code>lost_timeout </code>period,
- it will be reported lost. Reporting of lost is immediate.</td>
+ contiguously for the <code>lost_timeout</code> period,
+ it will immediately be reported lost.</td>
</tr>
<tr>
<td><code>num_of_tracking_entries</code></td>
<td>2 octets</td>
<td>Valid only if <code>delivery_mode</code> is
- <code>on_found</code><br/> [count]<br/>
+ <code>on_found</code>.<br/>
+ [count]<br/>
Total number of advertisers to track per filter.</td>
</tr>
</table>
@@ -1454,55 +1476,60 @@
<p> RSSI values must use 2's complement to represent negative
values. </p>
- <p> Host shall be able to configure multiple filters with
+ <p>Host shall be able to configure multiple filters with
<code>APCF_Application_Address_type</code> set to 0x02 (for all
broadcaster addresses) to manage various filter combinations. </p>
<p> Filtering, batching and reporting are inter-related concepts.
Every advertisement and related scan response will have to go
through all the filters, one after the other. Thus, resulting
- actions (<code>delivery_mode)</code> are closely tied to filtering.
+ actions (<code>delivery_mode</code>) are closely tied to filtering.
The delivery modes are the following:
- <code>report_immediately,</code> <code>batch</code>, and
- <code>onFound.</code> The <code>OnLost</code> value is related to
+ <code>report_immediately</code>, <code>batch</code>, and
+ <code>onFound</code>. The <code>OnLost</code> value is related to
<code>OnFound</code> in the sense that it will come after
- <code>OnFound</code> when lost. </p>
+ <code>OnFound</code> when lost.</p>
- <p> The following processing flow depicts the conceptual model.
- </p>
+ <p> This processing flow depicts the conceptual model:</p>
<img src="images/bt_filter_batch_report.png">
<p> When an advertisement (or scan response) frame is received, it
- is applied to all the filters in serial order. It's possible that an
- advertisement can cause immediate reporting based on one filter and
- batching of the same due to a different filter action. </p>
-
- <p> RSSI level thresholds (high and low) give the ability to control
- when the frame is visible for filter processing, even when a valid
- packet is received by the controller. In case of delivery mode being
- set to immediate or batched, the RSSI of an considered for further
- controller processing. Different apps need different reporting and
- batching behavior. This allows multiple apps to have direct
- reporting and/or batching of results in firmware, concurrently. An
- example is a case when a batch scan is active from one app and later
- a regular LE scan is issued by another app. Before a batch scan is
- issued, the framework/app sets appropriate filters. Later, when the
- second app issues a regular scan, previous batching continues.
- However, due to the regular scan, it is akin to conceptually adding
- a null filter (along with all the existing filters) along with the
- LE scan command. The LE scan command parameters take precedence when
- active. When the regular LE scan is disabled, the controller will
- revert back to a previous batch scan, if it existed. </p>
+ is applied to all the filters in serial order. It's possible that
+ an advertisement can cause immediate reporting based on one filter
+ and batching of the same due to a different filter action.</p>
+
+ <p> RSSI level thresholds (high and low) give the ability to
+ control when the frame is visible for filter processing, even
+ when a valid packet is received by the controller. In case of
+ delivery mode being set to immediate or batched, the RSSI of a
+ frame is considered for further controller processing. Different
+ apps need different reporting and batching behavior. This allows
+ multiple apps to have direct reporting and/or batching of
+ results in firmware, concurrently. An example is a case when a
+ batch scan is active from one app and later a regular LE scan is
+ issued by another app. Before a batch scan is issued, the
+ framework/app sets appropriate filters. Later, when the second
+ app issues a regular scan, previous batching continues. However,
+ due to the regular scan, it is akin to conceptually adding a
+ null filter (along with all the existing filters) along with the
+ LE scan command. The LE scan command parameters take precedence
+ when active. When the regular LE scan is disabled, the controller
+ will revert back to a previous batch scan, if it existed.</p>
+
<p> The <code>OnFound</code> delivery mode is based on configured
- filters. A combination that triggers a filter's action to succeed is
- considered the entity to track for <code>onLost</code>. The
- corresponding event is the LE Advt tracking subevent. </p>
+ filters. A combination that triggers a filter's action to succeed
+ is considered the entity to track for <code>onLost</code>. The
+ corresponding event is the LE Advt tracking subevent.</p>
+
<p> The <code>OnFound/OnLost</code> transition for a filter (if
enabled) will look like the following: </p>
<img src="images/bt_onfound_onlost.png">
- <p> A Command Complete event will be generated for this command.</p>
+
+ <p>
+ A Command Complete event will be generated for this command.</p>
+
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1530,12 +1557,14 @@
<h4 id="le_apcf_command-broadcast_address_sub_cmd">LE_APCF_Command:
broadcast_address_sub_cmd</h4>
+
<p>This subcommand is used to add or delete an advertiser address
or to clear the advertiser address list for on-chip filtering.</p>
+
<p>Sub OCF: 0x02</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1553,7 +1582,7 @@
<tr>
<td><code>APCF_Filter_Index</code></td>
<td>1 octet</td>
- <td>Filter index (0, <code>max_filter-1)</code></td>
+ <td>Filter index (0, <code>max_filter-1</code>)</td>
</tr>
<tr>
<td><code>APCF_Broadcaster_Address</code></td>
@@ -1573,7 +1602,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1607,7 +1636,7 @@
<p>Sub OCF: 0x03</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1645,7 +1674,7 @@
<p> A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1679,7 +1708,7 @@
<p>Sub OCF: 0x04</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1710,13 +1739,13 @@
<td>2,4,16 octet</td>
<td>The Solicitation UUID Mask (16-bit, 32-bit,
or 128-bit) to add to the list. It should have the same
- length as the <code>APCF_UUID.</code></td>
+ length as the <code>APCF_UUID</code>.</td>
</tr>
</table>
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1745,12 +1774,12 @@
<h4 id="le_apcf_command-local_name_sub_cmd">LE_APCF_Command:
local_name_sub_cmd</h4>
- <p>This subcommand is used to add or delete a local name string or
+ <p>This sub-command is used to add or delete a local name string or
to clear the local name string list for on-chip filtering.</p>
<p>Sub OCF: 0x05</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1776,15 +1805,18 @@
<td>A character string for local name.<br/>
<br/>
Notes:<br/>
- i) Currently the max number of characters in a local name
- string is 29<br/>
- ii) Not applicable when action is "Clear" (0x2)</td>
+ <ul>
+ <li>Currently the max number of characters in a local name
+ string is 29</li>
+ <li>Not applicable when action is "Clear" (0x2)</li>
+ </ul>
+ </td>
</tr>
</table>
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1807,7 +1839,7 @@
<td><code>APCF_AvailableSpaces</code></td>
<td>1 octet</td>
<td>Number of free entries still available in the Local name
- table.</td>
+ table</td>
</tr>
</table>
@@ -1819,7 +1851,7 @@
<p>Sub OCF: 0x06</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1845,9 +1877,12 @@
<td>A character string for manufacturer data.<br/>
<br/>
Notes:<br/>
- i) Currently the max number of characters in a local name
- string is 29<br/>
- ii) Not applicable when action is "Clear" (0x2)</td>
+ <ul>
+ <li>Currently the max number of characters in a local name
+ string is 29</li>
+ <li>Not applicable when action is "Clear" (0x2)</li>
+ </ul>
+ </td>
</tr>
<tr>
<td><code>APCF_ManData_Mask</code></td>
@@ -1861,7 +1896,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1876,14 +1911,15 @@
<td>0x06 - APCF Manufacturer Data</td>
</tr>
<tr>
- <td><code>APCF_Action</code></td> <td>1 octet</td>
+ <td><code>APCF_Action</code></td>
+ <td>1 octet</td>
<td>Echo back command's <code>APCF_Action</code></td>
</tr>
<tr>
<td><code>APCF_AvailableSpaces</code></td>
<td>1 octet</td>
<td>Number of free entries still available in the Manufacturer
- Data table.</td>
+ Data table</td>
</tr>
</table>
@@ -1894,7 +1930,7 @@
<p>Sub OCF: 0x07</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1920,9 +1956,12 @@
<td>A character string for service data.<br/>
<br/>
Notes:<br/>
- i) Currently the max number of characters in a local name
- string is 29<br/>
- ii) Not applicable when action is "Clear" (0x2)</td>
+ <ul>
+ <li>Currently the max number of characters in a local name
+ string is 29</li>
+ <li>Not applicable when action is "Clear" (0x2)</li>
+ </ul>
+ </td>
</tr>
<tr>
<td><code>APCF_LocName_Mandata_or_SerData_Mask</code></td>
@@ -1935,7 +1974,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -1958,17 +1997,17 @@
<td><code>APCF_AvailableSpaces</code></td>
<td>1 octet</td>
<td>Number of free entries still available for Service Data
- table.</td>
+ table</td>
</tr>
</table>
<h2 id="controller-activity-and-energy-information-command">Controller
activity and energy information command</h2>
<p>The objective of this information is for higher host system
- functions to analyzethe total activities of all components, including
- the BT controller and itsmacro state, in conjunction with what is
- happening in the apps and framework. Todo this, the following
- information is required from the BT stack and thecontroller: </p>
+ functions to analyze the total activities of all components, including
+ the BT controller and its macro state, in conjunction with what is
+ happening in the apps and framework. To do this, the following
+ information is required from the BT stack and the controller: </p>
<ul>
<li>BT stack: Reporting the current macro-operational state of the
controller</li>
@@ -1982,14 +2021,16 @@
<li>Active: [ACL link on, SCO link ongoing, sniff mode]</li>
</ul>
<p>The activities that the controller keeps track of over its life are
- Tx time, Rx time, idle time, and total energy consumed. They are cleared
- when read from the host.</p>
- <p>Vendor-specific command:
- <code>LE_Get_Controller_Activity_Energy_Info</code> </p>
+ Tx time, Rx time, idle time, and total energy consumed. They are
+ cleared when read from the host.</p>
+
+ <h3 id="le_get_controller_activity_energy_info">
+ LE_Get_Controller_Activity_Energy_Info</h3>
+ <p>This is a vendor-specific command.</p>p>
<p>OCF: 0x159</p>
<table>
<tr>
- <th>Sub-command Parameter</th>
+ <th>Sub-command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -2002,7 +2043,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -2029,30 +2070,30 @@
<tr>
<td><code>total_energy_used</code></td>
<td>4 octets</td>
- <td>Total energy used [product of current (mA), voltage (V) and time
- (ms)]</td>
+ <td>Total energy used [product of current (mA), voltage (V) and
+ time (ms)]</td>
</tr>
</table>
<h2 id="le-extended-set-scan-parameters-command">LE extended set scan
parameters command</h2>
<p>This command can be used to enable a larger scan window and interval
- in the controller. Per the BT 4.1 core specification, a scan window and
+ in the controller. Per the BT Core 4.1 Specification, a scan window and
interval have an upper bound limit of 10.24 seconds, which hampers
applications' longer scan intervals beyond 10.24 seconds.</p>
- <p>Base reference: The BT 4.1 core specification, page 973 (LE Set Scan
+ <p>Base reference: BT Core 4.1 Specification, page 973 (LE Set Scan
Parameters Command)</p>
<p>OCF: 0x15A</p>
<table>
<tr>
- <th>Cmd Parameter</th>
+ <th>Command Parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
<tr>
<td><code>LE_Ex_Scan_Type</code></td>
<td>1 octet</td>
- <td>0x00 - Passive scanning. No <code>SCAN_REQ </code>packets shall
+ <td>0x00 - Passive scanning. No <code>SCAN_REQ</code> packets shall
be sent (default).<br/>
0x01 - Active scanning.
<code>SCAN_REQ</code> packets may be sent.</td>
@@ -2060,8 +2101,8 @@
<tr>
<td><code>LE_Ex_Scan_Interval</code></td>
<td>4 octets</td>
- <td>Defined as the time interval from when the Controller started its
- last LE scan until it begins the subsequent LE scan.<br/>
+ <td>Defined as the time interval from when the Controller started
+ its last LE scan until it began the subsequent LE scan.<br/>
Range: 0x0004 to 0x00FFFFFF<br/>
Default: 0x0010 (10 ms)<br/>
Time = N * 0.625 ms<br/>
@@ -2071,7 +2112,8 @@
<td><code>LE_Ex_Scan_Window</code></td>
<td>4 octets</td>
<td>The duration of the LE scan. <code>LE_Scan_Window</code>
- shall be less than or equal to <code>LE_Scan_Interval</code>.<br/>
+ shall be less than or equal to <code>LE_Scan_Interval</code>.
+ <br/>
Range: 0x0004 to 0xFFFF<br/>
Default: 0x0010 (10 ms)<br/>
Time = N * 0.625 ms<br/>
@@ -2090,15 +2132,14 @@
Directed advertising packets which are not addressed for this
device shall be ignored.<br/>
0x01 - Ignore advertisement packets from devices not
- in the White List Only list.<br/>
- Directed advertising packets which are not addressed for this
- device shall be ignored.</td>
+ in the White List Only list. Directed advertising packets which
+ are not addressed for this device shall be ignored.</td>
</tr>
</table>
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -2113,16 +2154,16 @@
command</h2>
<p>The objective of this information element is to acquire controller
debug information by a host, in binary form, for post-processing and
- analysis. This helps debug on-field issues and provides engineers with a
- toolkit to log information for analysis. A Controller can provide the
- information when requested by a host via the event (Controller Debug Info
- sub event) or autonomously when desired by the controller. Example uses
- could be to report firmware state information, crash dump information,
- logging information, etc.</p>
+ analysis. This helps debug on-field issues and provides engineers with
+ a toolkit to log information for analysis. A Controller can provide the
+ information when requested by a host via the event (Controller Debug
+ Info sub-event) or autonomously when desired by the controller.
+ Example uses could be to report firmware state information, crash dump
+ information, logging information, etc.</p>
<p>OCF: 0x15B</p>
<table>
<tr>
- <th>Cmd Parameter</th>
+ <th>Command parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -2135,7 +2176,7 @@
<p>A Command Complete event will be generated for this command.</p>
<table>
<tr>
- <th>Return Parameter</th>
+ <th>Return parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
@@ -2147,9 +2188,9 @@
</table>
<h2 id="hci-event-vendor-specific">HCI event (vendor-specific)</h2>
<p>Vendor-specific HCI events are required in some cases. Refer to
- Figure 5.4 on page 486 of the BT 4.1 core specification. Event
- parameter 0 will always contain the first sub-event code, based on which
- the rest of the HCI event is decoded.</p>
+ Figure 5.4 on page 486 of the BT Core 4.1 Specification. Event
+ parameter 0 will always contain the first sub-event code, based on
+ which the rest of the HCI event is decoded.</p>
<table>
<tr>
<th>Event Parameter</th>
@@ -2170,7 +2211,7 @@
</table>
<h3 id="storage-threshold-breach-subevent">Storage threshold breach
- subevent</h3>
+ sub-event</h3>
<p>This event indicates that the storage threshold has been breached.
</p>
<p>Sub-event code = 0x54</p>
@@ -2186,8 +2227,8 @@
<td></td>
</tr> </table>
- <h3 id="le-multi-advertising-state-change-subevent">LE multi-advertising
- state change subevent</h3>
+ <h3 id="le-multi-advertising-state-change-sub-event">LE
+ multi-advertising state change sub-event</h3>
<p>This event indicates that an advertising instance has changed its
state. At this time, this event is only used to indicate which
@@ -2195,15 +2236,16 @@
<p>Sub-event code = 0x55</p>
<table>
<tr>
- <th>Sub-event Parameter</th>
+ <th>Sub-event parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
<tr>
<td><code>Advertising_instance</code></td>
<td>1 octet</td>
- <td>Identifies the specific advertising instance.<br/>
- Valid values are 0 through <code>max_advt_instances</code> -1</td>
+ <td>Identifies the specific advertising instance<br/>
+ Valid values are 0 through <code>max_advt_instances</code>-1
+ </td>
</tr>
<tr>
<td><code>State_Change_Reason</code></td>
@@ -2218,20 +2260,20 @@
</tr>
</table>
- <h3 id="le-advertisement-tracking-subevent">LE advertisement tracking
- subevent</h3>
+ <h3 id="le-advertisement-tracking-sub-event">LE advertisement tracking
+ sub-event</h3>
<p>This event indicates when an advertiser is found or lost.</p>
<p>Sub event code = 0x56</p>
<table>
<tr>
- <th>Sub Event Parameter</th>
+ <th>Sub-event Parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>
<tr>
<td><code>APCF_Filter_Index</code></td>
<td>1 octet</td>
- <td>Filter Index (0, <code>max_filter-1)</code></td>
+ <td>Filter Index (0, <code>max_filter</code>-1)</td>
</tr>
<tr>
<td><code>Advertiser_State</code></td>
@@ -2242,9 +2284,9 @@
<tr>
<td><code>Advt_Info_Present</code></td>
<td>1 octet</td>
- <td>0x00: Advertiser information (<code>Advt_Info)</code>
+ <td>0x00: Advertiser information (<code>Advt_Info</code>)
present<br/>
- 0x01: Advertiser information (<code>Advt_Info)</code> not
+ 0x01: Advertiser information (<code>Advt_Info</code>) not
present</td>
</tr>
<tr>
@@ -2269,18 +2311,18 @@
<code>Adv_packet_len</code> octets<br/>
<code>Scan_data_resp_len[0]</code>: 1 octet<br/>
<code>Scan_data_resp[0]</code>:
- <code>Scan_data_resp </code>octets</td>
+ <code>Scan_data_resp</code> octets</td>
</tr>
</table>
- <h3 id="controller-debug-info-subevent">Controller debug info
- subevent</h3>
+ <h3 id="controller-debug-info-sub-event">Controller debug info
+ sub-event</h3>
<p>This event is used by a Controller to provide binary debug
information to a host.</p>
- <p>Sub event code = 0x57</p>
+ <p>Sub-event code = 0x57</p>
<table>
<tr>
- <th>Sub Event Parameter</th>
+ <th>Sub-event Parameter</th>
<th>Size</th>
<th>Purpose</th>
</tr>