From aca8b4b31ef457dc212e026fb216298ad91b86de Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Mon, 27 Nov 2023 10:59:40 -0600 Subject: [PATCH 01/18] basic addition of commands --- .../controller/sources/ble/lhci/lhci_int.h | 8 +- Libraries/Cordio/docs/HCI_INTERFACE.md | 376 ++++++++++++++++++ 2 files changed, 380 insertions(+), 4 deletions(-) create mode 100644 Libraries/Cordio/docs/HCI_INTERFACE.md diff --git a/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h b/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h index bd903c4da52..ce140b42e2f 100644 --- a/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h +++ b/Libraries/Cordio/controller/sources/ble/lhci/lhci_int.h @@ -293,6 +293,8 @@ extern "C" { HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F2) /*!< Set Local Feature opcode. */ #define LHCI_OPCODE_VS_SET_OP_FLAGS \ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F3) /*!< Set Operational Flags opcode. */ +#define LHCI_OPCODE_VS_GET_PDU_FILT_STATS \ + HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F4) /*!< Get PDU Filter Statistics opcode. */ #define LHCI_OPCODE_VS_SET_ADV_TX_PWR \ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F5) /*!< Set Advertising Tx Power opcode. */ #define LHCI_OPCODE_VS_SET_CONN_TX_PWR \ @@ -307,8 +309,6 @@ extern "C" { #define LHCI_OPCODE_VS_SET_SNIFFER_ENABLE \ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3CD) /*!< Enable sniffer packet forwarding. */ -#define LHCI_OPCODE_VS_GET_PDU_FILT_STATS \ - HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F4) /*!< Get PDU Filter Statistics opcode. */ #define LHCI_OPCODE_VS_GET_SYS_STATS \ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FA) /*!< Get Memory Statistics opcode. */ #define LHCI_OPCODE_VS_GET_ADV_STATS \ @@ -354,8 +354,8 @@ extern "C" { #define LHCI_OPCODE_VS_SET_CONN_PHY_TX_PWR \ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DD) /*!< Set Connection Phy Tx Power opcode. */ -#define LHCI_OPCODE_VS_REG_WRITE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x300) /*!< Write register. */ -#define LHCI_OPCODE_VS_REG_READ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x301) /*!< Read register. */ +#define LHCI_OPCODE_VS_REG_WRITE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x300) /*!< Write data to MCU register or memory space. */ +#define LHCI_OPCODE_VS_REG_READ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x301) /*!< Read data from MCU register or memory space. */ #define LHCI_OPCODE_VS_RESET_CONN_STATS \ HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x302) /*!< Reset connection stats. */ #define LHCI_OPCODE_VS_TX_TEST \ diff --git a/Libraries/Cordio/docs/HCI_INTERFACE.md b/Libraries/Cordio/docs/HCI_INTERFACE.md new file mode 100644 index 00000000000..6dea1f056c7 --- /dev/null +++ b/Libraries/Cordio/docs/HCI_INTERFACE.md @@ -0,0 +1,376 @@ +# Host Controller Interface (HCI) + + + +## Vendor Specific Commands +OGF = 0x3F +
+OPCODE = (OGF << 10) | OCF + + +### Write Memory +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: 0x300 +- Length: 5 + N + +Parameters + + +### Read Memory +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: 0x301 +- Length: 5 +- Parameters: + - Length : 1 Bytes + - Adresss: 4 Bytes + +### Reset Connection Stats +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF +- Length: +- Parameters: +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + + + +|Reset connection stats|Clear all current connection stats|0x302|0|N/A|z| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Vendor specific TX test | Normal TX test, but can specify the number of packets to transmit|0x303|6| |x| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Vendor specific End Test|0|0x304|None|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Enable sniffer packet forwarding| |0x3CD||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Additional AuxPtr| |0x3D0|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Set extended advertising data fragmentation length | |0x3D1|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set extended advertising PHY options | |0x3D2|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set extended advertising default PHY options | |0x3D3|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Set extended scanning default PHY options| |0x3D4|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Generate ISO Packets opcode| |0x3D5|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Get ISO Test Report opcode| |0x3D6|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Enable ISO Packet Sink opcode| |0x3D7|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Enable Auto Generate ISO Packets | |0x3D8|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Get ISO Connection Statistics opcode| |0x3D9|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Get Auxiliary Advertising Statistics opcode| |0x3DA|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Get Auxiliary Scanning Statistics| |0x3DB|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Get Periodic Scanning Statistics | |0x3DC|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +| Set Connection Phy Tx Power | |0x3DD|| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get channel map of periodic scan/adv| |0x3DE||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Scan Channel Map| xc|0x3E0|xx|xx| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Event Mask| xc|0x3E2|xx|xx| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Enable ACL Packet Sink| xc|0x3E3|xx|xx| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Generate ACL Packets | xc|0x3E4|xx|xx| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Enable Auto Generate ACL Packets | xc|0x3E5||xx| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Tx Test Error Pattern| |0x3E6||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Connection Operational Flags| |0x3E0||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set P-256 Private Key ||0x3E8||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get ACL Test Report | |0x3E9||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set local minimum number of used channels| |0x3EA||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get peer minimum number of used channels| |0x3EB||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set validate public key mode between ALT1 and ALT2| |0x3EC||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set BD address opcode| |0x3F0||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Random Address | |0x3F1||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: +|Set Local Feature | |0x3F2||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Operational Flags| |0x3F3||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get PDU Filter Statistics| |0x3F4||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Advertising Tx Power| |0x3F5||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Connection Tx Power | |0x3F6||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Encryption Mode| |0x3F7||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Channel Map | |0x3F8||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Set Diagnostic Mode| |0x3F9||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Memory Statistics| |0x3FA||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Advertising Statistics| |0x3FB||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Scan Statistics | |0x3FC||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Connection Statistics| |0x3FD||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Test Statistics| |0x3FE||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + +|Get Pool Statistics | |0x3FF||| +### VS End Test +- Desciription: Write data to MCU register or memory space at sepcified addresss +- OCF: +- Length: +- Parameters: + + + + From bfcf489c8f477772c3f7aa9b411ea7926c0cb7bc Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 13:21:47 -0600 Subject: [PATCH 02/18] added HCI doc for vendor specific commands --- Libraries/Cordio/docs/HCI_INTERFACE.md | 2692 +++++++++++++++++++++--- 1 file changed, 2379 insertions(+), 313 deletions(-) diff --git a/Libraries/Cordio/docs/HCI_INTERFACE.md b/Libraries/Cordio/docs/HCI_INTERFACE.md index 6dea1f056c7..251b2fe8d27 100644 --- a/Libraries/Cordio/docs/HCI_INTERFACE.md +++ b/Libraries/Cordio/docs/HCI_INTERFACE.md @@ -1,376 +1,2442 @@ -# Host Controller Interface (HCI) +# Vendor Specific Commands +NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. +### Write Memory -## Vendor Specific Commands -OGF = 0x3F -
-OPCODE = (OGF << 10) | OCF - +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | -### Write Memory -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: 0x300 -- Length: 5 + N +#### Description + +Write N bytes to a specified 32-bit address. + +#### Parameters + +_Length_ (1 Byte): + +| **Description** | **Value** | +| --- | --- | +| Number of bytes to write to address | 0 – 0xFF | + +_Address_ (4 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Address to write data to | 0 - 0xFFFFFFFF | -Parameters +#### Return +Status ### Read Memory -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: 0x301 -- Length: 5 -- Parameters: - - Length : 1 Bytes - - Adresss: 4 Bytes - + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x301 | 5 | Length, Address | + +#### Description + +Read memory from a specified 32-bit address. + +#### Parameters + +_Length_ (1 Byte): + +| **Description** | **Value** | +| --- | --- | +| Number of bytes to write to address | 0 – 0xFF | + +_Address_ (4 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Address to write data to | 0 - 0xFFFFFFFF | + +#### Return + +_Data_ (N) + +| **Description** | **Value** | +| --- | --- | +| Data read from address | 0 - 0xFF | + ### Reset Connection Stats -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF -- Length: -- Parameters: -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x302 | 0 | N/A | +#### Description +Clear all connection statistics. -|Reset connection stats|Clear all current connection stats|0x302|0|N/A|z| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Return -|Vendor specific TX test | Normal TX test, but can specify the number of packets to transmit|0x303|6| |x| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +Status -|Vendor specific End Test|0|0x304|None|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +### VS TX Test -|Enable sniffer packet forwarding| |0x3CD||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | -|Set Additional AuxPtr| |0x3D0|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Description -| Set extended advertising data fragmentation length | |0x3D1|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +Start a TX test using a specific number of packets. -|Set extended advertising PHY options | |0x3D2|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Parameters -|Set extended advertising default PHY options | |0x3D3|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_RF Channel_ (1 Byte): -| Set extended scanning default PHY options| |0x3D4|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| RF channel to transmit on | 0 – 39 | -| Generate ISO Packets opcode| |0x3D5|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_Packet Length_ (1 Byte): -| Get ISO Test Report opcode| |0x3D6|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Number of bytes in single packet | 0 - 255 | -| Enable ISO Packet Sink opcode| |0x3D7|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_Packet Type (1 Byte)_ -| Enable Auto Generate ISO Packets | |0x3D8|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| PRBS9 | 0x00 | +| 00001111'b packet payload | 0x01 | +| 01010101'b packet payload | 0x02 | +| PRBS15 | 0x03 | +| 11111111'b packet payload | 0x04 | +| 00000000'b packet payload | 0x05 | +| 11110000'b packet payload | 0x06 | +| 10101010'b packet payload | 0x07 | -| Get ISO Connection Statistics opcode| |0x3D9|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_PHY (1 Byte)_ -| Get Auxiliary Advertising Statistics opcode| |0x3DA|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| 1M | 0x01 | +| 2M | 0x02 | +| Coded Unspecified | 0x03 | +| Coded S8 | 0x04 | +| Coded S2 | 0x05 | -| Get Auxiliary Scanning Statistics| |0x3DB|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_Num Packets (2 Bytes)_ -| Get Periodic Scanning Statistics | |0x3DC|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Number of packets to send over courser of test | 0 - 0xFFFF | -| Set Connection Phy Tx Power | |0x3DD|| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Return -|Get channel map of periodic scan/adv| |0x3DE||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +Status -|Set Scan Channel Map| xc|0x3E0|xx|xx| ### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: -|Set Event Mask| xc|0x3E2|xx|xx| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x304 | 0 | N/A | -|Enable ACL Packet Sink| xc|0x3E3|xx|xx| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Description -|Generate ACL Packets | xc|0x3E4|xx|xx| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +End current DTM test and return all test stats. -|Enable Auto Generate ACL Packets | xc|0x3E5||xx| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Return -|Set Tx Test Error Pattern| |0x3E6||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_TX Data (2 Bytes)_ -|Set Connection Operational Flags| |0x3E0||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Number of packets transmitted | 0 - 0xFFFF | -|Set P-256 Private Key ||0x3E8||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_RX Data Ok_(2 Bytes) -|Get ACL Test Report | |0x3E9||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Number of packets received ok | 0 – 0xFFFF | -|Set local minimum number of used channels| |0x3EA||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_RX Data CRC_ (2 Bytes) -|Get peer minimum number of used channels| |0x3EB||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Number of packets received with a CRC error | 0 - 0xFFFF | -|Set validate public key mode between ALT1 and ALT2| |0x3EC||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_RX Data Timeout_ (2 Bytes) -|Set BD address opcode| |0x3F0||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Number of timeouts waiting to receive a packet | 0 - 0xFFFF | -|Get Random Address | |0x3F1||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: -|Set Local Feature | |0x3F2||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +### Set Scan Channel Map -|Set Operational Flags| |0x3F3||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x301 | 1 | Channel Map | -|Get PDU Filter Statistics| |0x3F4||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +**Description** -|Set Advertising Tx Power| |0x3F5||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +Set channel map to scan on -|Set Connection Tx Power | |0x3F6||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Parameters -|Set Encryption Mode| |0x3F7||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +_Channel Map (1 Byte):_ -|Set Channel Map | |0x3F8||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **Description** | **Value** | +| --- | --- | +| Channel map used to scan | 0 – 0xFF | -|Set Diagnostic Mode| |0x3F9||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Return -|Get Memory Statistics| |0x3FA||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +Status -|Get Advertising Statistics| |0x3FB||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +### Set Event Mask -|Get Scan Statistics | |0x3FC||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E1 | 5 | Mask, Enable | +| + | + | + | -|Get Connection Statistics| |0x3FD||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +#### Description -|Get Test Statistics| |0x3FE||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +Enables/Disabled events the controller will flag -|Get Pool Statistics | |0x3FF||| -### VS End Test -- Desciription: Write data to MCU register or memory space at sepcified addresss -- OCF: -- Length: -- Parameters: +**Parameters** + +_Mask (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | +| + | + | + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 | + +#### Return + +Status + +### Enable ACL Sink + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E3 | 1 | Enable | +| + | + | + | + +#### Description + +Enables/Disables asynchronous connection-oriented logical transport. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 | + +#### Return + +Status + +### Generate ACL + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E4 | 5 | Handle, Packet Length, Num Packets | +| + | + | + | + +#### Description + +Generate ACL for a specified connection. + +**Parameters** + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Packet Length (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | + +MAX\_ACL\_LEN set at application layer by user. + +Num Packets (1 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of packets to send in generated ACL | 0x00 – 0xFF | + +#### Return + +Status + +### Enable Autogenerate ACL + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E3 | 1 | Enable | +| + | + | + | + +#### Description + +Enable/Disable Autogenerate ACL + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 | + +#### Return + +Status + +### Set TX Test Error Pattern + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E6 | 4 | Error Pattern | +| + | + | + | + +#### Description + +Set pattern of errors for TX test mode. + +**Parameters** + +_Error Pattern (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | +| + | + | + +#### Return + +Status + +### Set Connection Operational Flags + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E7 | 7 | Handle, Flags, Enable | +| + | + | + | + +#### Description + +Enable/Disable connection operational flags for a given connection. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Flags (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Flags to enable or disable | 0x0 – 0xFFFFFFFF | +| + | + | + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 | + +#### Return + +Status + +### Set P-256 Private Key + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3E8 | 32 | Private Key | +| + | + | + | + +#### Description + +Set P-256 private key or clear set private key. The private key will be used for generating key + +pairs and Diffie-Hellman keys until cleared. + +#### Parameters + +_Private Key (32 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Clear Private Key | 0x00… | +| Private Key | 0x1 – 0xFF… | +| + | + | + +#### Return + +Status + +### Get channel map of periodic scan/adv + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3DE | **3** | Advertising Handle, Adverting | Channel Map | + +#### Description + +Get the channel map used for periodic scanning or advertising. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Advertising (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Scanner | 0x00 | +| Advertiser | 0x01 | +| + | + | + +#### Return + +_Channel Map (5 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| **Channel Masks** | **{0x00-0xFF, …}** | + +### Get ACL Test Report + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3E9 | 0 | **N/A** | RX ACL Packet Count, RX ACL Octet Count, Generate ACL Packet Count,Generate ACL Octet Count | + +#### Description + +Get ACL Test Report + +#### Return + +_RX ACL Packet Count (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| **Number of ACL packets received** | **0x0 – 0xFFFFFFFF** | + +_RX ACL Octet Count (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| **Number of ACL octets received** | **0x0 – 0xFFFFFFFF** | +| + | + | + +_Generated ACL Packet Count (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of generated ACL packets | 0x0 – 0xFFFFFFFF | +| + | + | + +_Generated ACL Octet Count (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of generated ACL octets | 0x0 – 0xFFFFFFFF | +| + | + | + +### Set Local Minimum Number of Used Channels + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| **0x3EA** | **3** | **PHYs, Power Threshold, Min Used Channels** | +| + | + | + | + +#### Description + +Set local minimum number of used channels. + +#### Parameters + +_PHYs (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| 1M | 0x1 | +| 2M | 0x2 | +| Coded | 0x3 | +| + | + | + +_Power Threshold (1 Byte, signed 8-Bit):_ + +| **Description** | **Value** | +| --- | --- | +| Power Threshold for PHY | +/-127 | +| + | + | + +Min Used Channels (1 Byte) + +| **Description** | **Value** | +| --- | --- | +| Minimum number of used channels | 1 - 37 | +| + | + | + +#### Return + +Status + +### Get Peer Minimum Number of Used Channels + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3EB | **2** | **Handle** | **1M PHY, 2M PHY, Coded PHY** | + +#### Description + +Get peer minimum number of used channels. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +#### Return + +_1M PHY (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| 1M min used channels | 1 - 37 | + +_2M PHY (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| 2M min used channels | 1 - 37 | + +_Coded PHY (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Coded min used channels | 1 – 37 | + +### Set validate public key mode between ALT1 and ALT2 + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| **0x3EC** | **1** | **Validate Mode** | +| + | + | + | + +#### Description + +Set mode used to validate public key. + +#### Parameters + +_Validate Mode (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| ALT2 | 0x0 | +| ALT1 | 0x1 | +| + | + | + +#### Return + +Status + +### Set BD Address + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3F0 | 6 | BD Address | +| + | + | + | + +#### Description + +Set the device address. + +#### Parameters + +_BD Address (6 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Device Address | {0x00-0xFF, …} | +| + | + | + +#### Return + +Status + +### Get Random Address + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3F1 | 0 | N/A | BD Address | + +#### Description + +Get random device address. + +#### Return + +_BD Address (6 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Device Address | {0x00-0xFF, …} | + +### Set Local Feature + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3F2 | 8 | Local Features | +| + | + | + | + +#### Description + +Set local supported features. + +#### Parameters + +_Local Features (8 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | +| + | + | + +#### Return + +Status + +### Set Operational Flags + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3F3 | 5 | Flags, Enable | +| + | + | + | + +#### Description + +Enable Disable Operational Flags + +#### Parameters + +_Flags_ (4 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Flags to enable or disable | 0x0 – 0xFFFFFFFF | +| + | + | + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 | + +#### Return + +Status + +### Get PDU Filter Statistics + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3F4 | 0 | N/A | Filter Stats, in order of documentation | + +#### Description + +Get the accumulated PDU filter statistics. + +#### Return + +_Fail PDU Type Filter_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | + +_Pass PDU Type Filter_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | + +_Fail Whitelist Filter_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | + +_Pass Whitelist Filter_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | + +_Fail Peer Address Match_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUS failing peer address match | 0x0 – 0xFFFF | + +_Pass Peer Address Match_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs passing peer address match | 0x0 – 0xFFFF | + +_Fail Local Address Match_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUS failing local address match | 0x0 – 0xFFFF | + +_Pass local Address Match_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs passing local address match | 0x0 – 0xFFFF | + +_Fail Peer RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of peer RPAs failing verification | 0x0 – 0xFFFF | + +_Pass Peer RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of peer RPAs passing verification | 0x0 – 0xFFFF | + +_Fail Local RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of local RPAs failing verification | 0x0 – 0xFFFF | + +_Pass Local RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of local RPAs passing verification | 0x0 – 0xFFFF | + +_Fail Peer Private Address_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | + +_Fail Local Private Address_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | + +_Fail Peer Address Res Req_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | + +_Pass Peer Address Res Req_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | + +_Pass Local Address Res Opt._ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | + +_Peer Res Address Pend_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of peer address resolutions pended | 0x0 – 0xFFFF | + +_Local Res Address Pend_ (2 Bytes): + +| **Description** | **Value** | +| --- | --- | +| Number of local address resolutions pended | 0x0 – 0xFFFF | + +### Set Advertising TX Power + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3F5 | 1 | Power | Status | + +#### Description + +Set the TX power used for advertising. + +#### Parameters + +_Power (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --- | --- | +| Power | -15 - 6 | +| + | + | + +#### Return + +Status + +### Set Connection TX Power + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3F6 | 1 | Power | Status | + +#### Description + +Set the TX power used for connections. + +#### Parameters + +_Power (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --- | --- | +| Power | -15 - 6 | +| + | + | + +#### Return + +Status + +### Set Encryption Mode + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | +| + | + | + | + +#### Description + +Set encryption mode for a given connection. + +#### Parameters + +_Enable Auth (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x0 | +| Enable | 0x1 | +| + | + | + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +#### Return + +Status + +### Set Channel Map + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3F8 | 6 | Handle, Channel Map | +| + | + | + | + +#### Description + +Set the channel map + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +_Channel Map (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Channel Map | 0x00 – 0xFFFFFFFF | +| + | + | + +#### Return + +Status + +### Set Diagnostic Mode + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3F9 | 1 | Enable | +| + | + | + | + +#### Description + +Enable/Disable PAL System Assert Trap + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x0 | +| Enable | 0x1 | +| + | + | + +#### Return + +Status + +### Enable Sniffer Packet Forwarding + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3CD | 1 | Enable | +| + | + | + | + +#### Description + +Enable/Disable sniffer packet forwarding. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x0 | +| Enable | 0x1 | +| + | + | + +#### Return + +Status + +### Get Memory Stats + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3FA | 0 | N/A | + +#### Description + +Read memory and system statistics. + +#### Return + +_Stack Usage (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Number of bytes used by stack | 0x0 – 0xFFFF | +| + | + | + +_Sys Assert Count (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Number of times assertions hit | 0x0 – 0xFFFF | + +_Free Memory (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Memory free for stack usage | 0x0 – 0xFFFFFFFF | + +_Used Memory (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Memory used by stack | 0x00 – 0xFFFFFFFF | + +_Max Connections (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | + +_Connection Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of bytes used for connection context | 0x00 – 0xFFFF | + +_CS Watermark Level (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Critical section watermark duration in microseconds | 0x00 – 0xFFFF | + +_LL Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| LL handler watermark level in microseconds | 0x00 – 0xFFFF | + +_Sch Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | + +_LHCI Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | + +_Max Adv Sets (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Maximum number of advertising sets | 0x00 – 0xFFFF | + +_Adv Set Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Size of advertising set context in bytes | 0x00 – 0xFFFF | + +_Ext Scan Max (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Maximum number of extended scanners | 0x0 – 0xFFFF | + +_Ext Scan Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | + +_Max Num Extended Init (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| maximum number of extended initiators. | 0x00 – 0xFFFF | + +_Ext Init Context Size (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | + +_Max Periodic Scanners (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Maximum number of periodic scanners | 0x00-0xFFFF | + +_Periodic Scanners Context Size(2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Context size of periodic scanners in bytes | 0x00-0xFFFF | + +_Max CIG (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Maximum number of CIG | 0x00-0xFFFF | + +_CIG Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Context size of CIG in bytes | 0x00-0xFFFF | + +_Max CIS (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Maximum number of CIS | 0x00-0xFFFF | + +_CIS Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Context size of CIS in bytes | 0x00-0xFFFF | + +### Get Advertising Stats + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3FB | 0 | N/A | + +#### Description + +Get the accumulated adverting stats. + +#### Return + +_TX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Req (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Req CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Req Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| + | + | + +_TX RSP (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent response packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_Err ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +### Get Scan Stats + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3FC | 0 | N/A | + +#### Description + +Get the statistics captured during scanning. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| + | + | + +_TX Req (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX RSP (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX RSP CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX RSP Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| + | + | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +| + | + | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | + +### Get Connection Stats + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3FD | 0 | N/A | + +#### Description + +Get the statistics captured during connection. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| + | + | + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| + | + | + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +### Get Test Stats + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3FE | 0 | N/A | Test stats in order as documented | + +#### Description + +Get the statistics captured during test mode. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| + | + | + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| + | + | + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + +### Get Pool Stats + +| **OCF** | **Length** | **Parameters** | **Return** | +| --- | --- | --- | --- | +| 0x3FF | 0 | N/A | Pool stats in order as documented | + +#### Description + +Get the memory pool statistics captured during runtime. + +**NOTE:** The flag _WSF\_BUF\_STATS_ must be defined to _TRUE_ at compile time + +#### Return + +_Num Pool (1 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of pools defined | 0x00 – 0xFF | +| + | + | + +**Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). + +_Buf Size (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Pool Buffer Size | 0x00 – 0xFFFF | +| + | + | + +_Num Buf (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Total Number of buffers | 0x00 – 0xFF | +| + | + | + +_Num Alloc (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Number of outstanding allocations | 0x00 – 0xFF | +| + | + | + +_Max Alloc (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| High allocation watermark | 0x00 – 0xFF | +| + | + | + +_Max Req Len (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Maximum requested buffer length | 0x00 – 0xFFFF | +| + | + | + +### Set Additional AuxPtr Offset + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D0 | 5 | Delay, Handle | +| + | + | + | + +#### Description + +Set auxiliary packet offset delay. + +#### Parameters + +_Delay (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Delay in microseconds | 0x1 – 0xFFFFFFFF | +| + | + | + +_Handle (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +#### Return + +Status + +### Set Extended Advertising Data Fragmentation + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D1 | 2 | Handle, Frag Length | +| + | + | + | + +#### Description + +Set the extended advertising fragmentation length. + +#### Parameters + +_Handle (1 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +_Frag Length (1 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Fragmentation Length | 0x00-0xFF | + +#### Return + +Status + +### Set Extended Advertising PHY Options + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | +| + | + | + | + +#### Description + +Set extended advertising PHY options + +#### Parameters + +_Handle (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +_Primary Opt. (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Primary advertising channel PHY options. | 0x00-0xFF | + +_Secondary Opt. (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Secondary advertising channel PHY options. | 0x00-0xFF | + +#### Return + +Status + +### Set extended Advertising Default PHY Options + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D3 | 1 | PHY Opt. | +| + | + | + | + +#### Description + +Set the default TX PHY options for extended adv slave primary and secondary channel. + +#### Parameters + +_PHY Opt. (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| PHY Options | 0x00 – 0xFF | +| + | + | + +#### Return + +Status + +### Generate ISO Packets + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D5 | 5 | Handle, Packet Length, Num Packets | +| + | + | + | + +#### Description + +Generate ISO packets. + +#### Parameters + +_Handle (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| + | + | + +_Packet Length (2 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Packet Length | 0x00-0xFFFF | + +_Num Packets (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Number of packets | 0x00-0xFF | + +#### Return + +Status + +### Get ISO Test Report + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count + | +| + | + | + | + +#### Description + +Get statistics captured during ISO test. + +#### Return + +_RX ISO Packet Count (4 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ISO Octet Count (4 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | +| + | + | + +_Generate Packet Count (4 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | +| + | + | + +_Generate Octet Count (4 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | +| + | + | + +### Enable ISO Packet Sink + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D7 | 1 | Enable | +| + | + | + | + +#### Description + +Enable/Disable ISO packet sink. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 | +| + | + | + +#### Return + +Status + +### Enable Autogenerate ISO Packets + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D8 | 2 | Packet Length | +| + | + | + | + +#### Description + +Enable autogenerate ISO packets. + +#### Parameters + +_Packet Length (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Disable | 0x00 | +| Enable | 0x01 – 0xFFFF | +| + | + | + +#### Return + +Status + +### Get ISO Connection Statistics + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3D9 | 0 | N/A | + +#### Description + +Get statistics captured during ISO connection. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| + | + | + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| + | + | + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| + | + | + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + +### Get Auxiliary Advertising Statistics + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3DA | 0 | N/A | + +#### Description + +Get accumulated auxiliary advertising stats. + +#### Return + +_TX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Req (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Req CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Req Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| + | + | + +_TX RSP (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent response packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_TX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent chain packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_Err ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +### Get Auxiliary Scanning Statistics + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3DB | 0 | N/A | + +#### Description + +Get accumulated auxiliary scanning statistics. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| + | + | + +_TX REQ (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX RSP (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX RSP CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX RSP Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Chain CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX Chain Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| + | + | + +### Get Periodic Scanning Statistics + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3DC | 0 | N/A | + +#### Description + +Get accumulated periodic scanning statistics. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | +| + | + | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_RX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | + +_RX Chain CRC (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX Chain Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +### Set Connection PHY TX Power + +| **OCF** | **Length** | **Parameters** | +| --- | --- | --- | +| 0x3DD | 4 | Handle, Level, PHY | + +#### Description + +Set power level during a connection for a given PHY. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| --- | --- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +_Level (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --- | --- | +| Power Level | -15 - 6 | +| + | + | +_PHY (1 Byte, Signed 8-Bit):_ +| **Description** | **Value** | +| --- | --- | +| 1M | 0x00 | +| 2M | 0x01 | +| Coded | 0x02 | +| + | + | +#### Return +Status \ No newline at end of file From 9bfa8ec35833880b49b0d34a410931a851ddf00a Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 13:44:36 -0600 Subject: [PATCH 03/18] fixed formatting --- Libraries/Cordio/docs/HCI_INTERFACE.md | 1953 +++++++++++------------- 1 file changed, 898 insertions(+), 1055 deletions(-) diff --git a/Libraries/Cordio/docs/HCI_INTERFACE.md b/Libraries/Cordio/docs/HCI_INTERFACE.md index 251b2fe8d27..c537530e670 100644 --- a/Libraries/Cordio/docs/HCI_INTERFACE.md +++ b/Libraries/Cordio/docs/HCI_INTERFACE.md @@ -2,12 +2,14 @@ NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. -### Write Memory +MAX\_NUMBER\_CONNECTIONS: set at application layer by user. -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | +### Write Memory +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------------------------------------------- | --------------- | ---------- | +| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | +| | #### Description Write N bytes to a specified 32-bit address. @@ -16,15 +18,16 @@ Write N bytes to a specified 32-bit address. _Length_ (1 Byte): -| **Description** | **Value** | -| --- | --- | -| Number of bytes to write to address | 0 – 0xFF | - +| **Description** | **Value** | +| ----------------------------------- | --------- | +| Number of bytes to write to address | 0 – 0xFF | +| | _Address_ (4 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------ | -------------- | | Address to write data to | 0 - 0xFFFFFFFF | +| | #### Return @@ -32,9 +35,10 @@ Status ### Read Memory -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x301 | 5 | Length, Address | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------- | +| 0x301 | 5 | Length, Address | +| | #### Description @@ -44,29 +48,29 @@ Read memory from a specified 32-bit address. _Length_ (1 Byte): -| **Description** | **Value** | -| --- | --- | -| Number of bytes to write to address | 0 – 0xFF | +| **Description** | **Value** | +| ----------------------------------- | --------- | +| Number of bytes to write to address | 0 – 0xFF | _Address_ (4 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------ | -------------- | | Address to write data to | 0 - 0xFFFFFFFF | #### Return _Data_ (N) -| **Description** | **Value** | -| --- | --- | -| Data read from address | 0 - 0xFF | +| **Description** | **Value** | +| ---------------------- | --------- | +| Data read from address | 0 - 0xFF | ### Reset Connection Stats | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x302 | 0 | N/A | +| ------- | ---------- | -------------- | +| 0x302 | 0 | N/A | #### Description @@ -78,10 +82,10 @@ Status ### VS TX Test -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | - +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------------------------------------------- | +| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | +| | #### Description Start a TX test using a specific number of packets. @@ -90,43 +94,47 @@ Start a TX test using a specific number of packets. _RF Channel_ (1 Byte): -| **Description** | **Value** | -| --- | --- | -| RF channel to transmit on | 0 – 39 | +| **Description** | **Value** | +| ------------------------- | --------- | +| RF channel to transmit on | 0 – 39 | +| _Packet Length_ (1 Byte): -| **Description** | **Value** | -| --- | --- | -| Number of bytes in single packet | 0 - 255 | +| **Description** | **Value** | +| -------------------------------- | --------- | +| Number of bytes in single packet | 0 - 255 | +| _Packet Type (1 Byte)_ -| **Description** | **Value** | -| --- | --- | -| PRBS9 | 0x00 | -| 00001111'b packet payload | 0x01 | -| 01010101'b packet payload | 0x02 | -| PRBS15 | 0x03 | -| 11111111'b packet payload | 0x04 | -| 00000000'b packet payload | 0x05 | -| 11110000'b packet payload | 0x06 | -| 10101010'b packet payload | 0x07 | +| **Description** | **Value** | +| ------------------------- | --------- | +| PRBS9 | 0x00 | +| 00001111'b packet payload | 0x01 | +| 01010101'b packet payload | 0x02 | +| PRBS15 | 0x03 | +| 11111111'b packet payload | 0x04 | +| 00000000'b packet payload | 0x05 | +| 11110000'b packet payload | 0x06 | +| 10101010'b packet payload | 0x07 | +| _PHY (1 Byte)_ -| **Description** | **Value** | -| --- | --- | -| 1M | 0x01 | -| 2M | 0x02 | -| Coded Unspecified | 0x03 | -| Coded S8 | 0x04 | -| Coded S2 | 0x05 | +| **Description** | **Value** | +| ----------------- | --------- | +| 1M | 0x01 | +| 2M | 0x02 | +| Coded Unspecified | 0x03 | +| Coded S8 | 0x04 | +| Coded S2 | 0x05 | +| _Num Packets (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------------- | ---------- | | Number of packets to send over courser of test | 0 - 0xFFFF | #### Return @@ -136,9 +144,9 @@ Status ### VS End Test | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x304 | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x304 | 0 | N/A | +| #### Description End current DTM test and return all test stats. @@ -147,33 +155,38 @@ End current DTM test and return all test stats. _TX Data (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------- | ---------- | | Number of packets transmitted | 0 - 0xFFFF | +| _RX Data Ok_(2 Bytes) -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------- | ---------- | | Number of packets received ok | 0 – 0xFFFF | +| _RX Data CRC_ (2 Bytes) -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ---------- | | Number of packets received with a CRC error | 0 - 0xFFFF | +| _RX Data Timeout_ (2 Bytes) -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------------- | ---------- | | Number of timeouts waiting to receive a packet | 0 - 0xFFFF | +| ### Set Scan Channel Map | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x301 | 1 | Channel Map | +| ------- | ---------- | -------------- | +| 0x301 | 1 | Channel Map | +| **Description** @@ -183,10 +196,10 @@ Set channel map to scan on _Channel Map (1 Byte):_ -| **Description** | **Value** | -| --- | --- | -| Channel map used to scan | 0 – 0xFF | - +| **Description** | **Value** | +| ------------------------ | --------- | +| Channel map used to scan | 0 – 0xFF | +| #### Return Status @@ -194,12 +207,10 @@ Status ### Set Event Mask | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E1 | 5 | Mask, Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3E1 | 5 | Mask, Enable | +| | + #### Description @@ -209,19 +220,19 @@ Enables/Disabled events the controller will flag _Mask (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------- | ------------------------ | | Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | -| - | - | +| | + _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| #### Return @@ -230,12 +241,10 @@ Status ### Enable ACL Sink | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E3 | 1 | Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3E3 | 1 | Enable | +| | + #### Description @@ -246,9 +255,10 @@ Enables/Disables asynchronous connection-oriented logical transport. _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| #### Return @@ -256,13 +266,11 @@ Status ### Generate ACL -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E4 | 5 | Handle, Packet Length, Num Packets | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------- | +| 0x3E4 | 5 | Handle, Packet Length, Num Packets | +| | + #### Description @@ -272,28 +280,29 @@ Generate ACL for a specified connection. _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + MAX\_NUMBER\_CONNECTIONS set at application layer by user. _Packet Length (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | -------------------- | | Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | +| MAX\_ACL\_LEN set at application layer by user. Num Packets (1 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | ----------- | | Number of packets to send in generated ACL | 0x00 – 0xFF | +| #### Return @@ -302,12 +311,9 @@ Status ### Enable Autogenerate ACL | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E3 | 1 | Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3E3 | 1 | Enable | +| | #### Description @@ -318,9 +324,10 @@ Enable/Disable Autogenerate ACL _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| #### Return @@ -329,12 +336,9 @@ Status ### Set TX Test Error Pattern | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E6 | 4 | Error Pattern | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3E6 | 4 | Error Pattern | +| | #### Description @@ -344,12 +348,10 @@ Set pattern of errors for TX test mode. _Error Pattern (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------- | ---------------- | | 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | -| - | - | +| | #### Return @@ -357,13 +359,11 @@ Status ### Set Connection Operational Flags -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E7 | 7 | Handle, Flags, Enable | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------------- | +| 0x3E7 | 7 | Handle, Flags, Enable | +| | + #### Description @@ -373,30 +373,29 @@ Enable/Disable connection operational flags for a given connection. _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + MAX\_NUMBER\_CONNECTIONS set at application layer by user. _Flags (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------- | ---------------- | | Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| - | - | +| | + _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| #### Return @@ -405,12 +404,10 @@ Status ### Set P-256 Private Key | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3E8 | 32 | Private Key | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3E8 | 32 | Private Key | +| | + #### Description @@ -422,13 +419,12 @@ pairs and Diffie-Hellman keys until cleared. _Private Key (32 Bytes):_ -| **Description** | **Value** | -| --- | --- | -| Clear Private Key | 0x00… | -| Private Key | 0x1 – 0xFF… | -| - | - | +| **Description** | **Value** | +| ----------------- | ----------- | +| Clear Private Key | 0x00… | +| Private Key | 0x1 – 0xFF… | +| | + #### Return @@ -436,9 +432,10 @@ Status ### Get channel map of periodic scan/adv -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3DE | **3** | Advertising Handle, Adverting | Channel Map | +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | ----------------------------- | ----------- | +| 0x3DE | **3** | Advertising Handle, Adverting | Channel Map | +| #### Description @@ -448,36 +445,36 @@ Get the channel map used for periodic scanning or advertising. _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------- | ----------------------------- | | Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + -MAX\_NUMBER\_CONNECTIONS set at application layer by user. _Advertising (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Scanner | 0x00 | -| Advertiser | 0x01 | -| - | - | +| --------------- | --------- | +| Scanner | 0x00 | +| Advertiser | 0x01 | +| | #### Return _Channel Map (5 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ------------------ | | **Channel Masks** | **{0x00-0xFF, …}** | +| | ### Get ACL Test Report -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3E9 | 0 | **N/A** | RX ACL Packet Count, RX ACL Octet Count, Generate ACL Packet Count,Generate ACL Octet Count | - +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ------------------------------------------------------------------------------------------- | +| 0x3E9 | 0 | **N/A** | RX ACL Packet Count, RX ACL Octet Count, Generate ACL Packet Count,Generate ACL Octet Count | +| | #### Description Get ACL Test Report @@ -486,46 +483,41 @@ Get ACL Test Report _RX ACL Packet Count (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------- | -------------------- | | **Number of ACL packets received** | **0x0 – 0xFFFFFFFF** | +| | _RX ACL Octet Count (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | -------------------- | | **Number of ACL octets received** | **0x0 – 0xFFFFFFFF** | -| - | - | +| | + _Generated ACL Packet Count (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------- | ---------------- | | Number of generated ACL packets | 0x0 – 0xFFFFFFFF | -| - | - | +| | + _Generated ACL Octet Count (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------ | ---------------- | | Number of generated ACL octets | 0x0 – 0xFFFFFFFF | -| - | - | +| | ### Set Local Minimum Number of Used Channels -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| **0x3EA** | **3** | **PHYs, Power Threshold, Min Used Channels** | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| --------- | ---------- | -------------------------------------------- | +| **0x3EA** | **3** | **PHYs, Power Threshold, Min Used Channels** | +| | + #### Description @@ -536,31 +528,28 @@ Set local minimum number of used channels. _PHYs (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| 1M | 0x1 | -| 2M | 0x2 | -| Coded | 0x3 | -| - | - | +| --------------- | --------- | +| 1M | 0x1 | +| 2M | 0x2 | +| Coded | 0x3 | +| | + _Power Threshold (1 Byte, signed 8-Bit):_ -| **Description** | **Value** | -| --- | --- | -| Power Threshold for PHY | +/-127 | -| - | - | +| **Description** | **Value** | +| ----------------------- | --------- | +| Power Threshold for PHY | +/-127 | +| | + Min Used Channels (1 Byte) -| **Description** | **Value** | -| --- | --- | -| Minimum number of used channels | 1 - 37 | -| - | - | +| **Description** | **Value** | +| ------------------------------- | --------- | +| Minimum number of used channels | 1 - 37 | +| | + #### Return @@ -568,9 +557,10 @@ Status ### Get Peer Minimum Number of Used Channels -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3EB | **2** | **Handle** | **1M PHY, 2M PHY, Coded PHY** | +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ----------------------------- | +| 0x3EB | **2** | **Handle** | **1M PHY, 2M PHY, Coded PHY** | +| | #### Description @@ -580,42 +570,42 @@ Get peer minimum number of used channels. _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + #### Return _1M PHY (1 Byte):_ -| **Description** | **Value** | -| --- | --- | -| 1M min used channels | 1 - 37 | +| **Description** | **Value** | +| -------------------- | --------- | +| 1M min used channels | 1 - 37 | +| | _2M PHY (1 Byte):_ -| **Description** | **Value** | -| --- | --- | -| 2M min used channels | 1 - 37 | +| **Description** | **Value** | +| -------------------- | --------- | +| 2M min used channels | 1 - 37 | +| | _Coded PHY (1 Byte):_ -| **Description** | **Value** | -| --- | --- | -| Coded min used channels | 1 – 37 | +| **Description** | **Value** | +| ----------------------- | --------- | +| Coded min used channels | 1 – 37 | +| | ### Set validate public key mode between ALT1 and ALT2 -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| **0x3EC** | **1** | **Validate Mode** | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| --------- | ---------- | ----------------- | +| **0x3EC** | **1** | **Validate Mode** | +| | + #### Description @@ -626,12 +616,10 @@ Set mode used to validate public key. _Validate Mode (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| ALT2 | 0x0 | -| ALT1 | 0x1 | -| - | - | +| --------------- | --------- | +| ALT2 | 0x0 | +| ALT1 | 0x1 | +| | #### Return @@ -640,12 +628,10 @@ Status ### Set BD Address | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3F0 | 6 | BD Address | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3F0 | 6 | BD Address | +| | + #### Description @@ -655,12 +641,11 @@ Set the device address. _BD Address (6 Bytes):_ -| **Description** | **Value** | -| --- | --- | -| Device Address | {0x00-0xFF, …} | -| - | - | +| **Description** | **Value** | +| --------------- | -------------- | +| Device Address | {0x00-0xFF, …} | +| | + #### Return @@ -669,9 +654,9 @@ Status ### Get Random Address | **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3F1 | 0 | N/A | BD Address | - +| ------- | ---------- | -------------- | ---------- | +| 0x3F1 | 0 | N/A | BD Address | +| | #### Description Get random device address. @@ -680,19 +665,17 @@ Get random device address. _BD Address (6 Bytes):_ -| **Description** | **Value** | -| --- | --- | -| Device Address | {0x00-0xFF, …} | - +| **Description** | **Value** | +| --------------- | -------------- | +| Device Address | {0x00-0xFF, …} | +| | ### Set Local Feature | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3F2 | 8 | Local Features | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3F2 | 8 | Local Features | +| | + #### Description @@ -702,12 +685,11 @@ Set local supported features. _Local Features (8 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------- | ------------------------- | | Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | -| - | - | +| | + #### Return @@ -716,12 +698,10 @@ Status ### Set Operational Flags | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3F3 | 5 | Flags, Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3F3 | 5 | Flags, Enable | +| | + #### Description @@ -731,19 +711,18 @@ Enable Disable Operational Flags _Flags_ (4 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------- | ---------------- | | Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| - | - | +| | _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | #### Return @@ -751,9 +730,10 @@ Status ### Get PDU Filter Statistics -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3F4 | 0 | N/A | Filter Stats, in order of documentation | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F4 | 0 | N/A | +| | #### Description @@ -763,124 +743,141 @@ Get the accumulated PDU filter statistics. _Fail PDU Type Filter_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------- | ------------ | | Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | +| | _Pass PDU Type Filter_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------- | ------------ | | Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | +| | _Fail Whitelist Filter_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------- | ------------ | | Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | +| | _Pass Whitelist Filter_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------- | ------------ | | Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | +| | _Fail Peer Address Match_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------ | | Number of PDUS failing peer address match | 0x0 – 0xFFFF | +| | _Pass Peer Address Match_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------ | | Number of PDUs passing peer address match | 0x0 – 0xFFFF | +| | _Fail Local Address Match_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | ------------ | | Number of PDUS failing local address match | 0x0 – 0xFFFF | +| | _Pass local Address Match_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | ------------ | | Number of PDUs passing local address match | 0x0 – 0xFFFF | +| | _Fail Peer RPA Verify_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------- | ------------ | | Number of peer RPAs failing verification | 0x0 – 0xFFFF | +| | _Pass Peer RPA Verify_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------- | ------------ | | Number of peer RPAs passing verification | 0x0 – 0xFFFF | +| | _Fail Local RPA Verify_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------ | | Number of local RPAs failing verification | 0x0 – 0xFFFF | +| | _Pass Local RPA Verify_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------ | | Number of local RPAs passing verification | 0x0 – 0xFFFF | +| | _Fail Peer Private Address_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | | Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | +| | _Fail Local Private Address_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------------------- | ------------ | | Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | +| | _Fail Peer Address Res Req_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | | Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | +| | _Pass Peer Address Res Req_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | | Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | +| | _Pass Local Address Res Opt._ (2 Bytes): - -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------------------- | ------------ | | Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | +| | _Peer Res Address Pend_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------ | | Number of peer address resolutions pended | 0x0 – 0xFFFF | +| | _Local Res Address Pend_ (2 Bytes): -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | ------------ | | Number of local address resolutions pended | 0x0 – 0xFFFF | - +| | ### Set Advertising TX Power | **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3F5 | 1 | Power | Status | - +| ------- | ---------- | -------------- | ---------- | +| 0x3F5 | 1 | Power | Status | +| | #### Description Set the TX power used for advertising. @@ -890,11 +887,10 @@ Set the TX power used for advertising. _Power (1 Byte, Signed 8-Bit):_ | **Description** | **Value** | -| --- | --- | -| Power | -15 - 6 | -| - | - | +| --------------- | --------- | +| Power | -15 - 6 | +| | + #### Return @@ -903,9 +899,9 @@ Status ### Set Connection TX Power | **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3F6 | 1 | Power | Status | - +| ------- | ---------- | -------------- | ---------- | +| 0x3F6 | 1 | Power | Status | +| | #### Description Set the TX power used for connections. @@ -915,11 +911,10 @@ Set the TX power used for connections. _Power (1 Byte, Signed 8-Bit):_ | **Description** | **Value** | -| --- | --- | -| Power | -15 - 6 | -| - | - | +| --------------- | --------- | +| Power | -15 - 6 | +| | + #### Return @@ -927,13 +922,11 @@ Status ### Set Encryption Mode -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------------------- | +| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | +| | + #### Description @@ -944,21 +937,19 @@ Set encryption mode for a given connection. _Enable Auth (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x0 | -| Enable | 0x1 | -| - | - | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + #### Return @@ -966,13 +957,11 @@ Status ### Set Channel Map -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3F8 | 6 | Handle, Channel Map | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------- | +| 0x3F8 | 6 | Handle, Channel Map | +| | + #### Description @@ -982,21 +971,18 @@ Set the channel map _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + _Channel Map (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | -| Channel Map | 0x00 – 0xFFFFFFFF | -| - | - | +| **Description** | **Value** | +| --------------- | ----------------- | +| Channel Map | 0x00 – 0xFFFFFFFF | +| | #### Return @@ -1005,12 +991,10 @@ Status ### Set Diagnostic Mode | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3F9 | 1 | Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3F9 | 1 | Enable | +| | + #### Description @@ -1021,12 +1005,11 @@ Enable/Disable PAL System Assert Trap _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x0 | -| Enable | 0x1 | -| - | - | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + #### Return @@ -1035,12 +1018,10 @@ Status ### Enable Sniffer Packet Forwarding | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3CD | 1 | Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3CD | 1 | Enable | +| | + #### Description @@ -1051,12 +1032,11 @@ Enable/Disable sniffer packet forwarding. _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x0 | -| Enable | 0x1 | -| - | - | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + #### Return @@ -1065,8 +1045,9 @@ Status ### Get Memory Stats | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3FA | 0 | N/A | +| ------- | ---------- | -------------- | +| 0x3FA | 0 | N/A | +| | #### Description @@ -1076,145 +1057,162 @@ Read memory and system statistics. _Stack Usage (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------- | ------------ | | Number of bytes used by stack | 0x0 – 0xFFFF | -| - | - | +| | + _Sys Assert Count (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------ | ------------ | | Number of times assertions hit | 0x0 – 0xFFFF | +| | _Free Memory (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------- | ---------------- | | Memory free for stack usage | 0x0 – 0xFFFFFFFF | +| | _Used Memory (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------- | ----------------- | | Memory used by stack | 0x00 – 0xFFFFFFFF | +| | _Max Connections (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ------------------------------- | | Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | +| | _Connection Context Size (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | Number of bytes used for connection context | 0x00 – 0xFFFF | +| | _CS Watermark Level (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------- | ------------- | | Critical section watermark duration in microseconds | 0x00 – 0xFFFF | +| | _LL Handler Watermark Level (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | ------------- | | LL handler watermark level in microseconds | 0x00 – 0xFFFF | +| | _Sch Handler Watermark Level (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------- | ------------- | | Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | +| | _LHCI Handler Watermark Level (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------- | ------------- | | LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | +| | _Max Adv Sets (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------- | ------------- | | Maximum number of advertising sets | 0x00 – 0xFFFF | +| | _Adv Set Context Size (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------- | ------------- | | Size of advertising set context in bytes | 0x00 – 0xFFFF | +| | _Ext Scan Max (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------- | ------------ | | Maximum number of extended scanners | 0x0 – 0xFFFF | _Ext Scan Context Size (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------- | ------------- | | Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | +| | _Max Num Extended Init (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------- | ------------- | | maximum number of extended initiators. | 0x00 – 0xFFFF | +| | _Ext Init Context Size (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------------------- | ------------- | | Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | - +| | _Max Periodic Scanners (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------- | ----------- | | Maximum number of periodic scanners | 0x00-0xFFFF | +| | _Periodic Scanners Context Size(2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | ----------- | | Context size of periodic scanners in bytes | 0x00-0xFFFF | +| | _Max CIG (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------- | ----------- | | Maximum number of CIG | 0x00-0xFFFF | +| | _CIG Context Size (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------- | ----------- | | Context size of CIG in bytes | 0x00-0xFFFF | - +| | _Max CIS (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------- | ----------- | | Maximum number of CIS | 0x00-0xFFFF | +| | + _CIS Context Size (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------- | ----------- | | Context size of CIS in bytes | 0x00-0xFFFF | - +| | ### Get Advertising Stats | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3FB | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x3FB | 0 | N/A | +| | #### Description Get the accumulated adverting stats. @@ -1223,100 +1221,88 @@ Get the accumulated adverting stats. _TX ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------- | ----------------- | | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX Req (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------------------- | ----------------- | | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX Req CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX Req Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _TX RSP (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------- | ----------------- | | Number of sent response packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _Err ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------- | ----------------- | | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | _TX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | + _RX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | + _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | + ### Get Scan Stats | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3FC | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x3FC | 0 | N/A | +| | #### Description Get the statistics captured during scanning. @@ -1325,112 +1311,102 @@ Get the statistics captured during scanning. _RX ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX ADV CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------ | ----------------- | | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX ADV Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------------- | ----------------- | | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _TX Req (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------- | ----------------- | | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX RSP (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------ | ----------------- | | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX RSP CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------------------- | ----------------- | | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX RSP Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------------ | ----------------- | | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _Err Scan (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------------- | | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ----------------- | | RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _TX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ----------------- | | TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ----------------- | | RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ----------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | - +| | ### Get Connection Stats | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3FD | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x3FD | 0 | N/A | +| | #### Description Get the statistics captured during connection. @@ -1439,91 +1415,78 @@ Get the statistics captured during connection. _RX Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _RX Data CRC (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _RX Data Timeout (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _TX Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------- | ----------------- | | Number of sent data packets | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _Err Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------------- | | Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| - | - | +| | _RX Setup (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | _TX Setup (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | _RX ISR (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | _TX ISR (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | -### Get Test Stats -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3FE | 0 | N/A | Test stats in order as documented | +### Get Test Stats +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | --------------------------------- | +| 0x3FE | 0 | N/A | Test stats in order as documented | +| | #### Description Get the statistics captured during test mode. @@ -1532,87 +1495,80 @@ Get the statistics captured during test mode. _RX Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _RX Data CRC (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _RX Data Timeout (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _TX Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------- | ----------------- | | Number of sent data packets | 0x00 - 0xFFFFFFFF | -| - | - | +| | + _Err Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------------- | | Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| - | - | +| | _RX Setup (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | + _TX Setup (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | + _RX ISR (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | + _TX ISR (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | ### Get Pool Stats -| **OCF** | **Length** | **Parameters** | **Return** | -| --- | --- | --- | --- | -| 0x3FF | 0 | N/A | Pool stats in order as documented | +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | --------------------------------- | +| 0x3FF | 0 | N/A | Pool stats in order as documented | +| | #### Description @@ -1624,69 +1580,58 @@ Get the memory pool statistics captured during runtime. _Num Pool (1 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------- | ----------- | | Number of pools defined | 0x00 – 0xFF | -| - | - | +| | **Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). _Buf Size (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------- | ------------- | | Pool Buffer Size | 0x00 – 0xFFFF | -| - | - | +| | _Num Buf (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------- | ----------- | | Total Number of buffers | 0x00 – 0xFF | -| - | - | +| | + _Num Alloc (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------- | | Number of outstanding allocations | 0x00 – 0xFF | -| - | - | +| | _Max Alloc (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------- | ----------- | | High allocation watermark | 0x00 – 0xFF | -| - | - | +| | + _Max Req Len (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------- | ------------- | | Maximum requested buffer length | 0x00 – 0xFFFF | -| - | - | +| | + ### Set Additional AuxPtr Offset | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D0 | 5 | Delay, Handle | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3D0 | 5 | Delay, Handle | +| | + #### Description @@ -1696,22 +1641,19 @@ Set auxiliary packet offset delay. _Delay (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | +| **Description** | **Value** | +| --------------------- | ---------------- | +| Disable | 0x00 | | Delay in microseconds | 0x1 – 0xFFFFFFFF | -| - | - | +| | _Handle (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + #### Return @@ -1719,13 +1661,11 @@ Status ### Set Extended Advertising Data Fragmentation -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D1 | 2 | Handle, Frag Length | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------- | +| 0x3D1 | 2 | Handle, Frag Length | +| | + #### Description @@ -1735,17 +1675,16 @@ Set the extended advertising fragmentation length. _Handle (1 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------ | ----------------------------- | | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | + _Frag Length (1 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------- | --------- | | Fragmentation Length | 0x00-0xFF | #### Return @@ -1754,13 +1693,11 @@ Status ### Set Extended Advertising PHY Options -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------------------------ | +| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | +| | + #### Description @@ -1770,23 +1707,21 @@ Set extended advertising PHY options _Handle (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------ | ----------------------------- | | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | _Primary Opt. (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------- | --------- | | Primary advertising channel PHY options. | 0x00-0xFF | _Secondary Opt. (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------ | --------- | | Secondary advertising channel PHY options. | 0x00-0xFF | #### Return @@ -1796,12 +1731,10 @@ Status ### Set extended Advertising Default PHY Options | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D3 | 1 | PHY Opt. | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3D3 | 1 | PHY Opt. | +| | + #### Description @@ -1811,12 +1744,10 @@ Set the default TX PHY options for extended adv slave primary and secondary chan _PHY Opt. (1 Byte):_ -| **Description** | **Value** | -| --- | --- | -| PHY Options | 0x00 – 0xFF | -| - | - | +| **Description** | **Value** | +| --------------- | ----------- | +| PHY Options | 0x00 – 0xFF | +| | #### Return @@ -1824,13 +1755,10 @@ Status ### Generate ISO Packets -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D5 | 5 | Handle, Packet Length, Num Packets | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------- | +| 0x3D5 | 5 | Handle, Packet Length, Num Packets | +| | #### Description @@ -1840,39 +1768,34 @@ Generate ISO packets. _Handle (2 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| - | - | +| | _Packet Length (2 Byte):_ -| **Description** | **Value** | -| --- | --- | -| Packet Length | 0x00-0xFFFF | +| **Description** | **Value** | +| --------------- | ----------- | +| Packet Length | 0x00-0xFFFF | +| | _Num Packets (1 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | --------- | | Number of packets | 0x00-0xFF | - +| | #### Return Status ### Get ISO Test Report -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count - | -| - | - | - | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------------------------------------------------------------------------- | +| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count | +| | #### Description @@ -1882,49 +1805,38 @@ Get statistics captured during ISO test. _RX ISO Packet Count (4 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------ | ----------------- | | Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX ISO Octet Count (4 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------- | ----------------- | | Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | -| - | - | +| | _Generate Packet Count (4 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------- | ----------------- | | Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | -| - | - | +| | _Generate Octet Count (4 Byte):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------ | ----------------- | | Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | -| - | - | +| | ### Enable ISO Packet Sink | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D7 | 1 | Enable | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3D7 | 1 | Enable | +| | #### Description @@ -1935,12 +1847,10 @@ Enable/Disable ISO packet sink. _Enable (1 Byte):_ | **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 | -| - | - | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | #### Return @@ -1949,12 +1859,9 @@ Status ### Enable Autogenerate ISO Packets | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D8 | 2 | Packet Length | -| - | - | - | +| ------- | ---------- | -------------- | +| 0x3D8 | 2 | Packet Length | +| | #### Description @@ -1964,13 +1871,11 @@ Enable autogenerate ISO packets. _Packet Length (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | -| Disable | 0x00 | -| Enable | 0x01 – 0xFFFF | -| - | - | +| **Description** | **Value** | +| --------------- | ------------- | +| Disable | 0x00 | +| Length | 0x01 – 0xFFFF | +| | #### Return @@ -1979,9 +1884,9 @@ Status ### Get ISO Connection Statistics | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3D9 | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x3D9 | 0 | N/A | +| | #### Description Get statistics captured during ISO connection. @@ -1990,88 +1895,73 @@ Get statistics captured during ISO connection. _RX Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| - | - | +| | _RX Data CRC (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| - | - | +| | _RX Data Timeout (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| - | - | +| | _TX Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------- | ----------------- | | Number of sent data packets | 0x00 - 0xFFFFFFFF | -| - | - | +| | _Err Data (4 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------------- | | Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| - | - | +| | _RX Setup (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | _TX Setup (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | _RX ISR (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| - | - | +| | + _TX ISR (2 Bytes)_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - +| | ### Get Auxiliary Advertising Statistics | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3DA | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x3DA | 0 | N/A | +| | #### Description Get accumulated auxiliary advertising stats. @@ -2080,109 +1970,89 @@ Get accumulated auxiliary advertising stats. _TX ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------- | ----------------- | | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX Req (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------------------- | ----------------- | | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX Req CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX Req Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _TX RSP (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------- | ----------------- | | Number of sent response packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _TX Chain (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------- | ----------------- | | Number of sent chain packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _Err ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------------- | ----------------- | | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | _TX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | _RX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | + ### Get Auxiliary Scanning Statistics | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3DB | 0 | N/A | - +| ------- | ---------- | -------------- | +| 0x3DB | 0 | N/A | +| | #### Description Get accumulated auxiliary scanning statistics. @@ -2191,138 +2061,116 @@ Get accumulated auxiliary scanning statistics. _RX ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ---------------------------------- | ----------------- | | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX ADV CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX ADV Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| - | - | +| | _TX REQ (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------- | ----------------- | | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX RSP (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------ | ----------------- | | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX RSP CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------------------- | ----------------- | | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX RSP Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------------------ | ----------------- | | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX Chain (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------- | ----------------- | | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | + _RX Chain CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------ | ----------------- | | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | _RX Chain Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | _Err Scan (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------------- | | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | + _TX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | _RX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| - | - | +| | + ### Get Periodic Scanning Statistics | **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3DC | 0 | N/A | +| ------- | ---------- | -------------- | +| 0x3DC | 0 | N/A | #### Description @@ -2332,78 +2180,76 @@ Get accumulated periodic scanning statistics. _RX ADV (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| - | - | +| | _RX ADV CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------------ | ----------------- | | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | _RX ADV Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------------- | ----------------- | | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | _RX Chain (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------- | ----------------- | | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | _RX Chain CRC (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------------ | ----------------- | | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | _RX Chain Timeout (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | _Err Scan (4 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| --------------------------------- | ----------------- | | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | _TX Setup (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------------------------------- | ------------- | | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | _RX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | ### Set Connection PHY TX Power -| **OCF** | **Length** | **Parameters** | -| --- | --- | --- | -| 0x3DD | 4 | Handle, Level, PHY | +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------ | +| 0x3DD | 4 | Handle, Level, PHY | #### Description @@ -2413,29 +2259,26 @@ Set power level during a connection for a given PHY. _Handle (2 Bytes):_ -| **Description** | **Value** | -| --- | --- | +| **Description** | **Value** | +| ----------------- | ----------------------------- | | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | _Level (1 Byte, Signed 8-Bit):_ | **Description** | **Value** | -| --- | --- | -| Power Level | -15 - 6 | -| - | - | +| --------------- | --------- | +| Power Level | -15 - 6 | +| | _PHY (1 Byte, Signed 8-Bit):_ | **Description** | **Value** | -| --- | --- | -| 1M | 0x00 | -| 2M | 0x01 | -| Coded | 0x02 | -| - | - | +| --------------- | --------- | +| 1M | 0x00 | +| 2M | 0x01 | +| Coded | 0x02 | +| | + #### Return From 196bf7d33b3c2f2f57aaf6ef1e0dd8b63fa467ef Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 13:45:30 -0600 Subject: [PATCH 04/18] ran formatter --- Libraries/Cordio/docs/HCI_INTERFACE.md | 36 +++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Libraries/Cordio/docs/HCI_INTERFACE.md b/Libraries/Cordio/docs/HCI_INTERFACE.md index c537530e670..81c7953c008 100644 --- a/Libraries/Cordio/docs/HCI_INTERFACE.md +++ b/Libraries/Cordio/docs/HCI_INTERFACE.md @@ -97,14 +97,14 @@ _RF Channel_ (1 Byte): | **Description** | **Value** | | ------------------------- | --------- | | RF channel to transmit on | 0 – 39 | -| +| | _Packet Length_ (1 Byte): | **Description** | **Value** | | -------------------------------- | --------- | | Number of bytes in single packet | 0 - 255 | -| +| | _Packet Type (1 Byte)_ @@ -118,7 +118,7 @@ _Packet Type (1 Byte)_ | 00000000'b packet payload | 0x05 | | 11110000'b packet payload | 0x06 | | 10101010'b packet payload | 0x07 | -| +| | _PHY (1 Byte)_ @@ -129,7 +129,7 @@ _PHY (1 Byte)_ | Coded Unspecified | 0x03 | | Coded S8 | 0x04 | | Coded S2 | 0x05 | -| +| | _Num Packets (2 Bytes)_ @@ -146,7 +146,7 @@ Status | **OCF** | **Length** | **Parameters** | | ------- | ---------- | -------------- | | 0x304 | 0 | N/A | -| +| | #### Description End current DTM test and return all test stats. @@ -158,35 +158,35 @@ _TX Data (2 Bytes)_ | **Description** | **Value** | | ----------------------------- | ---------- | | Number of packets transmitted | 0 - 0xFFFF | -| +| | _RX Data Ok_(2 Bytes) | **Description** | **Value** | | ----------------------------- | ---------- | | Number of packets received ok | 0 – 0xFFFF | -| +| | _RX Data CRC_ (2 Bytes) | **Description** | **Value** | | ------------------------------------------- | ---------- | | Number of packets received with a CRC error | 0 - 0xFFFF | -| +| | _RX Data Timeout_ (2 Bytes) | **Description** | **Value** | | ---------------------------------------------- | ---------- | | Number of timeouts waiting to receive a packet | 0 - 0xFFFF | -| +| | ### Set Scan Channel Map | **OCF** | **Length** | **Parameters** | | ------- | ---------- | -------------- | | 0x301 | 1 | Channel Map | -| +| | **Description** @@ -199,7 +199,7 @@ _Channel Map (1 Byte):_ | **Description** | **Value** | | ------------------------ | --------- | | Channel map used to scan | 0 – 0xFF | -| +| | #### Return Status @@ -232,7 +232,7 @@ _Enable (1 Byte):_ | --------------- | --------- | | Disable | 0x00 | | Enable | 0x01 | -| +| | #### Return @@ -258,7 +258,7 @@ _Enable (1 Byte):_ | --------------- | --------- | | Disable | 0x00 | | Enable | 0x01 | -| +| | #### Return @@ -293,7 +293,7 @@ _Packet Length (2 Bytes):_ | **Description** | **Value** | | --------------------------------- | -------------------- | | Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | -| +| | MAX\_ACL\_LEN set at application layer by user. @@ -302,7 +302,7 @@ Num Packets (1 Bytes): | **Description** | **Value** | | ------------------------------------------ | ----------- | | Number of packets to send in generated ACL | 0x00 – 0xFF | -| +| | #### Return @@ -327,7 +327,7 @@ _Enable (1 Byte):_ | --------------- | --------- | | Disable | 0x00 | | Enable | 0x01 | -| +| | #### Return @@ -395,7 +395,7 @@ _Enable (1 Byte):_ | --------------- | --------- | | Disable | 0x00 | | Enable | 0x01 | -| +| | #### Return @@ -435,7 +435,7 @@ Status | **OCF** | **Length** | **Parameters** | **Return** | | ------- | ---------- | ----------------------------- | ----------- | | 0x3DE | **3** | Advertising Handle, Adverting | Channel Map | -| +| | #### Description From 347988e281f0c4994f66acc7cc2eefe4c2c9f63d Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:42:06 -0600 Subject: [PATCH 05/18] added short intro into how to build packets --- Libraries/Cordio/docs/HCI_INTERFACE.md | 2285 ------------------------ 1 file changed, 2285 deletions(-) delete mode 100644 Libraries/Cordio/docs/HCI_INTERFACE.md diff --git a/Libraries/Cordio/docs/HCI_INTERFACE.md b/Libraries/Cordio/docs/HCI_INTERFACE.md deleted file mode 100644 index 81c7953c008..00000000000 --- a/Libraries/Cordio/docs/HCI_INTERFACE.md +++ /dev/null @@ -1,2285 +0,0 @@ -# Vendor Specific Commands - -NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. - -MAX\_NUMBER\_CONNECTIONS: set at application layer by user. - -### Write Memory - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------------------------------------------- | --------------- | ---------- | -| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | -| | -#### Description - -Write N bytes to a specified 32-bit address. - -#### Parameters - -_Length_ (1 Byte): - -| **Description** | **Value** | -| ----------------------------------- | --------- | -| Number of bytes to write to address | 0 – 0xFF | -| | -_Address_ (4 Bytes): - -| **Description** | **Value** | -| ------------------------ | -------------- | -| Address to write data to | 0 - 0xFFFFFFFF | -| | - -#### Return - -Status - -### Read Memory - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------- | -| 0x301 | 5 | Length, Address | -| | - -#### Description - -Read memory from a specified 32-bit address. - -#### Parameters - -_Length_ (1 Byte): - -| **Description** | **Value** | -| ----------------------------------- | --------- | -| Number of bytes to write to address | 0 – 0xFF | - -_Address_ (4 Bytes): - -| **Description** | **Value** | -| ------------------------ | -------------- | -| Address to write data to | 0 - 0xFFFFFFFF | - -#### Return - -_Data_ (N) - -| **Description** | **Value** | -| ---------------------- | --------- | -| Data read from address | 0 - 0xFF | - -### Reset Connection Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x302 | 0 | N/A | - -#### Description - -Clear all connection statistics. - -#### Return - -Status - -### VS TX Test - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------------------------------------------- | -| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | -| | -#### Description - -Start a TX test using a specific number of packets. - -#### Parameters - -_RF Channel_ (1 Byte): - -| **Description** | **Value** | -| ------------------------- | --------- | -| RF channel to transmit on | 0 – 39 | -| | - -_Packet Length_ (1 Byte): - -| **Description** | **Value** | -| -------------------------------- | --------- | -| Number of bytes in single packet | 0 - 255 | -| | - -_Packet Type (1 Byte)_ - -| **Description** | **Value** | -| ------------------------- | --------- | -| PRBS9 | 0x00 | -| 00001111'b packet payload | 0x01 | -| 01010101'b packet payload | 0x02 | -| PRBS15 | 0x03 | -| 11111111'b packet payload | 0x04 | -| 00000000'b packet payload | 0x05 | -| 11110000'b packet payload | 0x06 | -| 10101010'b packet payload | 0x07 | -| | - -_PHY (1 Byte)_ - -| **Description** | **Value** | -| ----------------- | --------- | -| 1M | 0x01 | -| 2M | 0x02 | -| Coded Unspecified | 0x03 | -| Coded S8 | 0x04 | -| Coded S2 | 0x05 | -| | - -_Num Packets (2 Bytes)_ - -| **Description** | **Value** | -| ---------------------------------------------- | ---------- | -| Number of packets to send over courser of test | 0 - 0xFFFF | - -#### Return - -Status - -### VS End Test - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x304 | 0 | N/A | -| | -#### Description - -End current DTM test and return all test stats. - -#### Return - -_TX Data (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------- | ---------- | -| Number of packets transmitted | 0 - 0xFFFF | -| | - -_RX Data Ok_(2 Bytes) - -| **Description** | **Value** | -| ----------------------------- | ---------- | -| Number of packets received ok | 0 – 0xFFFF | -| | - -_RX Data CRC_ (2 Bytes) - -| **Description** | **Value** | -| ------------------------------------------- | ---------- | -| Number of packets received with a CRC error | 0 - 0xFFFF | -| | - -_RX Data Timeout_ (2 Bytes) - -| **Description** | **Value** | -| ---------------------------------------------- | ---------- | -| Number of timeouts waiting to receive a packet | 0 - 0xFFFF | -| | - -### Set Scan Channel Map - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x301 | 1 | Channel Map | -| | - -**Description** - -Set channel map to scan on - -#### Parameters - -_Channel Map (1 Byte):_ - -| **Description** | **Value** | -| ------------------------ | --------- | -| Channel map used to scan | 0 – 0xFF | -| | -#### Return - -Status - -### Set Event Mask - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E1 | 5 | Mask, Enable | -| | - - -#### Description - -Enables/Disabled events the controller will flag - -**Parameters** - -_Mask (4 Bytes):_ - -| **Description** | **Value** | -| -------------------------------- | ------------------------ | -| Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | -| | - - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Enable ACL Sink - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E3 | 1 | Enable | -| | - - -#### Description - -Enables/Disables asynchronous connection-oriented logical transport. - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Generate ACL - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------- | -| 0x3E4 | 5 | Handle, Packet Length, Num Packets | -| | - - -#### Description - -Generate ACL for a specified connection. - -**Parameters** - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -MAX\_NUMBER\_CONNECTIONS set at application layer by user. - -_Packet Length (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | -------------------- | -| Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | -| | - -MAX\_ACL\_LEN set at application layer by user. - -Num Packets (1 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ----------- | -| Number of packets to send in generated ACL | 0x00 – 0xFF | -| | - -#### Return - -Status - -### Enable Autogenerate ACL - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E3 | 1 | Enable | -| | - -#### Description - -Enable/Disable Autogenerate ACL - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Set TX Test Error Pattern - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E6 | 4 | Error Pattern | -| | - -#### Description - -Set pattern of errors for TX test mode. - -**Parameters** - -_Error Pattern (1 Byte):_ - -| **Description** | **Value** | -| ------------------------------- | ---------------- | -| 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | -| | - -#### Return - -Status - -### Set Connection Operational Flags - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------------- | -| 0x3E7 | 7 | Handle, Flags, Enable | -| | - - -#### Description - -Enable/Disable connection operational flags for a given connection. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -MAX\_NUMBER\_CONNECTIONS set at application layer by user. - -_Flags (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------- | ---------------- | -| Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| | - - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Set P-256 Private Key - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E8 | 32 | Private Key | -| | - - -#### Description - -Set P-256 private key or clear set private key. The private key will be used for generating key - -pairs and Diffie-Hellman keys until cleared. - -#### Parameters - -_Private Key (32 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------- | -| Clear Private Key | 0x00… | -| Private Key | 0x1 – 0xFF… | -| | - - -#### Return - -Status - -### Get channel map of periodic scan/adv - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | ----------------------------- | ----------- | -| 0x3DE | **3** | Advertising Handle, Adverting | Channel Map | -| | - -#### Description - -Get the channel map used for periodic scanning or advertising. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------------------- | -| Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - - -_Advertising (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Scanner | 0x00 | -| Advertiser | 0x01 | -| | - -#### Return - -_Channel Map (5 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ------------------ | -| **Channel Masks** | **{0x00-0xFF, …}** | -| | - -### Get ACL Test Report - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ------------------------------------------------------------------------------------------- | -| 0x3E9 | 0 | **N/A** | RX ACL Packet Count, RX ACL Octet Count, Generate ACL Packet Count,Generate ACL Octet Count | -| | -#### Description - -Get ACL Test Report - -#### Return - -_RX ACL Packet Count (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | -------------------- | -| **Number of ACL packets received** | **0x0 – 0xFFFFFFFF** | -| | - -_RX ACL Octet Count (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | -------------------- | -| **Number of ACL octets received** | **0x0 – 0xFFFFFFFF** | -| | - - -_Generated ACL Packet Count (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ---------------- | -| Number of generated ACL packets | 0x0 – 0xFFFFFFFF | -| | - - -_Generated ACL Octet Count (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------ | ---------------- | -| Number of generated ACL octets | 0x0 – 0xFFFFFFFF | -| | - -### Set Local Minimum Number of Used Channels - -| **OCF** | **Length** | **Parameters** | -| --------- | ---------- | -------------------------------------------- | -| **0x3EA** | **3** | **PHYs, Power Threshold, Min Used Channels** | -| | - - -#### Description - -Set local minimum number of used channels. - -#### Parameters - -_PHYs (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| 1M | 0x1 | -| 2M | 0x2 | -| Coded | 0x3 | -| | - - -_Power Threshold (1 Byte, signed 8-Bit):_ - -| **Description** | **Value** | -| ----------------------- | --------- | -| Power Threshold for PHY | +/-127 | -| | - - -Min Used Channels (1 Byte) - -| **Description** | **Value** | -| ------------------------------- | --------- | -| Minimum number of used channels | 1 - 37 | -| | - - -#### Return - -Status - -### Get Peer Minimum Number of Used Channels - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ----------------------------- | -| 0x3EB | **2** | **Handle** | **1M PHY, 2M PHY, Coded PHY** | -| | - -#### Description - -Get peer minimum number of used channels. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -#### Return - -_1M PHY (1 Byte):_ - -| **Description** | **Value** | -| -------------------- | --------- | -| 1M min used channels | 1 - 37 | -| | - -_2M PHY (1 Byte):_ - -| **Description** | **Value** | -| -------------------- | --------- | -| 2M min used channels | 1 - 37 | -| | - -_Coded PHY (1 Byte):_ - -| **Description** | **Value** | -| ----------------------- | --------- | -| Coded min used channels | 1 – 37 | -| | - -### Set validate public key mode between ALT1 and ALT2 - -| **OCF** | **Length** | **Parameters** | -| --------- | ---------- | ----------------- | -| **0x3EC** | **1** | **Validate Mode** | -| | - - -#### Description - -Set mode used to validate public key. - -#### Parameters - -_Validate Mode (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| ALT2 | 0x0 | -| ALT1 | 0x1 | -| | - -#### Return - -Status - -### Set BD Address - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F0 | 6 | BD Address | -| | - - -#### Description - -Set the device address. - -#### Parameters - -_BD Address (6 Bytes):_ - -| **Description** | **Value** | -| --------------- | -------------- | -| Device Address | {0x00-0xFF, …} | -| | - - -#### Return - -Status - -### Get Random Address - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F1 | 0 | N/A | BD Address | -| | -#### Description - -Get random device address. - -#### Return - -_BD Address (6 Bytes):_ - -| **Description** | **Value** | -| --------------- | -------------- | -| Device Address | {0x00-0xFF, …} | -| | -### Set Local Feature - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F2 | 8 | Local Features | -| | - - -#### Description - -Set local supported features. - -#### Parameters - -_Local Features (8 Bytes):_ - -| **Description** | **Value** | -| ---------------------- | ------------------------- | -| Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | -| | - - -#### Return - -Status - -### Set Operational Flags - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F3 | 5 | Flags, Enable | -| | - - -#### Description - -Enable Disable Operational Flags - -#### Parameters - -_Flags_ (4 Bytes): - -| **Description** | **Value** | -| -------------------------- | ---------------- | -| Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| | - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Get PDU Filter Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F4 | 0 | N/A | -| | - -#### Description - -Get the accumulated PDU filter statistics. - -#### Return - -_Fail PDU Type Filter_ (2 Bytes): - -| **Description** | **Value** | -| -------------------------------------- | ------------ | -| Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | -| | - -_Pass PDU Type Filter_ (2 Bytes): - -| **Description** | **Value** | -| -------------------------------------- | ------------ | -| Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | -| | - -_Fail Whitelist Filter_ (2 Bytes): - -| **Description** | **Value** | -| --------------------------------------- | ------------ | -| Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | -| | - -_Pass Whitelist Filter_ (2 Bytes): - -| **Description** | **Value** | -| --------------------------------------- | ------------ | -| Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | -| | - -_Fail Peer Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of PDUS failing peer address match | 0x0 – 0xFFFF | -| | - -_Pass Peer Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of PDUs passing peer address match | 0x0 – 0xFFFF | -| | - -_Fail Local Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of PDUS failing local address match | 0x0 – 0xFFFF | -| | - -_Pass local Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of PDUs passing local address match | 0x0 – 0xFFFF | -| | - -_Fail Peer RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ---------------------------------------- | ------------ | -| Number of peer RPAs failing verification | 0x0 – 0xFFFF | -| | - -_Pass Peer RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ---------------------------------------- | ------------ | -| Number of peer RPAs passing verification | 0x0 – 0xFFFF | -| | - -_Fail Local RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of local RPAs failing verification | 0x0 – 0xFFFF | -| | - -_Pass Local RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of local RPAs passing verification | 0x0 – 0xFFFF | -| | - -_Fail Peer Private Address_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -| | - -_Fail Local Private Address_ (2 Bytes): - -| **Description** | **Value** | -| -------------------------------------------------------- | ------------ | -| Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -| | - -_Fail Peer Address Res Req_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | -| | - -_Pass Peer Address Res Req_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | -| | - -_Pass Local Address Res Opt._ (2 Bytes): -| **Description** | **Value** | -| -------------------------------------------------------- | ------------ | -| Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | -| | - -_Peer Res Address Pend_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of peer address resolutions pended | 0x0 – 0xFFFF | -| | - -_Local Res Address Pend_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of local address resolutions pended | 0x0 – 0xFFFF | -| | -### Set Advertising TX Power - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F5 | 1 | Power | Status | -| | -#### Description - -Set the TX power used for advertising. - -#### Parameters - -_Power (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Power | -15 - 6 | -| | - - -#### Return - -Status - -### Set Connection TX Power - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F6 | 1 | Power | Status | -| | -#### Description - -Set the TX power used for connections. - -#### Parameters - -_Power (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Power | -15 - 6 | -| | - - -#### Return - -Status - -### Set Encryption Mode - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------------------- | -| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | -| | - - -#### Description - -Set encryption mode for a given connection. - -#### Parameters - -_Enable Auth (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | - - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -#### Return - -Status - -### Set Channel Map - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------- | -| 0x3F8 | 6 | Handle, Channel Map | -| | - - -#### Description - -Set the channel map - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -_Channel Map (4 Bytes):_ - -| **Description** | **Value** | -| --------------- | ----------------- | -| Channel Map | 0x00 – 0xFFFFFFFF | -| | - -#### Return - -Status - -### Set Diagnostic Mode - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F9 | 1 | Enable | -| | - - -#### Description - -Enable/Disable PAL System Assert Trap - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | - - -#### Return - -Status - -### Enable Sniffer Packet Forwarding - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3CD | 1 | Enable | -| | - - -#### Description - -Enable/Disable sniffer packet forwarding. - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | - - -#### Return - -Status - -### Get Memory Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FA | 0 | N/A | -| | - -#### Description - -Read memory and system statistics. - -#### Return - -_Stack Usage (2 Byte):_ - -| **Description** | **Value** | -| ----------------------------- | ------------ | -| Number of bytes used by stack | 0x0 – 0xFFFF | -| | - - -_Sys Assert Count (2 Byte):_ - -| **Description** | **Value** | -| ------------------------------ | ------------ | -| Number of times assertions hit | 0x0 – 0xFFFF | -| | - -_Free Memory (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------- | ---------------- | -| Memory free for stack usage | 0x0 – 0xFFFFFFFF | -| | - -_Used Memory (4 Bytes):_ - -| **Description** | **Value** | -| -------------------- | ----------------- | -| Memory used by stack | 0x00 – 0xFFFFFFFF | -| | - -_Max Connections (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ------------------------------- | -| Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | -| | - -_Connection Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| Number of bytes used for connection context | 0x00 – 0xFFFF | -| | - -_CS Watermark Level (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ------------- | -| Critical section watermark duration in microseconds | 0x00 – 0xFFFF | -| | - -_LL Handler Watermark Level (2 Byte):_ - -| **Description** | **Value** | -| ------------------------------------------ | ------------- | -| LL handler watermark level in microseconds | 0x00 – 0xFFFF | -| | - -_Sch Handler Watermark Level (2 Byte):_ - -| **Description** | **Value** | -| ------------------------------------------------- | ------------- | -| Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | -| | - -_LHCI Handler Watermark Level (2 Byte):_ - -| **Description** | **Value** | -| -------------------------------------------- | ------------- | -| LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | -| | - -_Max Adv Sets (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ------------- | -| Maximum number of advertising sets | 0x00 – 0xFFFF | -| | - -_Adv Set Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------- | ------------- | -| Size of advertising set context in bytes | 0x00 – 0xFFFF | -| | - -_Ext Scan Max (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ------------ | -| Maximum number of extended scanners | 0x0 – 0xFFFF | - -_Ext Scan Context Size (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ------------- | -| Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | -| | - -_Max Num Extended Init (2 Bytes):_ - -| **Description** | **Value** | -| -------------------------------------- | ------------- | -| maximum number of extended initiators. | 0x00 – 0xFFFF | -| | - -_Ext Init Context Size (2 Byte):_ - -| **Description** | **Value** | -| ----------------------------------------------------- | ------------- | -| Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | -| | -_Max Periodic Scanners (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ----------- | -| Maximum number of periodic scanners | 0x00-0xFFFF | -| | - -_Periodic Scanners Context Size(2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------ | ----------- | -| Context size of periodic scanners in bytes | 0x00-0xFFFF | -| | - -_Max CIG (2 Bytes):_ - -| **Description** | **Value** | -| --------------------- | ----------- | -| Maximum number of CIG | 0x00-0xFFFF | -| | - -_CIG Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------- | ----------- | -| Context size of CIG in bytes | 0x00-0xFFFF | -| | -_Max CIS (2 Bytes):_ - -| **Description** | **Value** | -| --------------------- | ----------- | -| Maximum number of CIS | 0x00-0xFFFF | -| | - - -_CIS Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------- | ----------- | -| Context size of CIS in bytes | 0x00-0xFFFF | -| | -### Get Advertising Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FB | 0 | N/A | -| | -#### Description - -Get the accumulated adverting stats. - -#### Return - -_TX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX Req (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------------------- | ----------------- | -| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| | - - -_RX Req CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX Req Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_TX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ----------------- | -| Number of sent response packets | 0x00 – 0xFFFFFFFF | -| | - - -_Err ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------- | ----------------- | -| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -### Get Scan Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FC | 0 | N/A | -| | -#### Description - -Get the statistics captured during scanning. - -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| | - - -_RX ADV CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------ | ----------------- | -| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX ADV Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------- | ----------------- | -| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_TX Req (4 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ----------------- | -| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| | - - -_RX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------ | ----------------- | -| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| | - - -_RX RSP CRC (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------------- | ----------------- | -| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX RSP Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------ | ----------------- | -| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_Err Scan (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ----------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ----------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ----------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ----------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | -### Get Connection Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FD | 0 | N/A | -| | -#### Description - -Get the statistics captured during connection. - -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data CRC (4 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data Timeout (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | - - -_TX Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | - - -_Err Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_TX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_RX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - -_TX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - - -### Get Test Stats - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | --------------------------------- | -| 0x3FE | 0 | N/A | Test stats in order as documented | -| | -#### Description - -Get the statistics captured during test mode. - -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data CRC (4 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data Timeout (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | - - -_TX Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | - - -_Err Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_TX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_RX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_TX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - -### Get Pool Stats - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | --------------------------------- | -| 0x3FF | 0 | N/A | Pool stats in order as documented | -| | - -#### Description - -Get the memory pool statistics captured during runtime. - -**NOTE:** The flag _WSF\_BUF\_STATS_ must be defined to _TRUE_ at compile time - -#### Return - -_Num Pool (1 Bytes):_ - -| **Description** | **Value** | -| ----------------------- | ----------- | -| Number of pools defined | 0x00 – 0xFF | -| | - -**Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). - -_Buf Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------- | ------------- | -| Pool Buffer Size | 0x00 – 0xFFFF | -| | - -_Num Buf (1 Byte):_ - -| **Description** | **Value** | -| ----------------------- | ----------- | -| Total Number of buffers | 0x00 – 0xFF | -| | - - -_Num Alloc (1 Byte):_ - -| **Description** | **Value** | -| --------------------------------- | ----------- | -| Number of outstanding allocations | 0x00 – 0xFF | -| | - -_Max Alloc (1 Byte):_ - -| **Description** | **Value** | -| ------------------------- | ----------- | -| High allocation watermark | 0x00 – 0xFF | -| | - - -_Max Req Len (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ------------- | -| Maximum requested buffer length | 0x00 – 0xFFFF | -| | - - -### Set Additional AuxPtr Offset - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D0 | 5 | Delay, Handle | -| | - - -#### Description - -Set auxiliary packet offset delay. - -#### Parameters - -_Delay (4 Bytes):_ - -| **Description** | **Value** | -| --------------------- | ---------------- | -| Disable | 0x00 | -| Delay in microseconds | 0x1 – 0xFFFFFFFF | -| | - -_Handle (1 Byte):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -#### Return - -Status - -### Set Extended Advertising Data Fragmentation - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------- | -| 0x3D1 | 2 | Handle, Frag Length | -| | - - -#### Description - -Set the extended advertising fragmentation length. - -#### Parameters - -_Handle (1 Bytes):_ - -| **Description** | **Value** | -| ------------------ | ----------------------------- | -| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -_Frag Length (1 Bytes):_ - -| **Description** | **Value** | -| -------------------- | --------- | -| Fragmentation Length | 0x00-0xFF | - -#### Return - -Status - -### Set Extended Advertising PHY Options - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------------------------ | -| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | -| | - - -#### Description - -Set extended advertising PHY options - -#### Parameters - -_Handle (1 Byte):_ - -| **Description** | **Value** | -| ------------------ | ----------------------------- | -| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - -_Primary Opt. (1 Byte):_ - -| **Description** | **Value** | -| ---------------------------------------- | --------- | -| Primary advertising channel PHY options. | 0x00-0xFF | - -_Secondary Opt. (1 Byte):_ - -| **Description** | **Value** | -| ------------------------------------------ | --------- | -| Secondary advertising channel PHY options. | 0x00-0xFF | - -#### Return - -Status - -### Set extended Advertising Default PHY Options - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D3 | 1 | PHY Opt. | -| | - - -#### Description - -Set the default TX PHY options for extended adv slave primary and secondary channel. - -#### Parameters - -_PHY Opt. (1 Byte):_ - -| **Description** | **Value** | -| --------------- | ----------- | -| PHY Options | 0x00 – 0xFF | -| | - -#### Return - -Status - -### Generate ISO Packets - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------- | -| 0x3D5 | 5 | Handle, Packet Length, Num Packets | -| | - -#### Description - -Generate ISO packets. - -#### Parameters - -_Handle (2 Byte):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - -_Packet Length (2 Byte):_ - -| **Description** | **Value** | -| --------------- | ----------- | -| Packet Length | 0x00-0xFFFF | -| | - -_Num Packets (1 Byte):_ - -| **Description** | **Value** | -| ----------------- | --------- | -| Number of packets | 0x00-0xFF | -| | -#### Return - -Status - -### Get ISO Test Report - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------------------------------------------------------------------------- | -| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count | -| | - -#### Description - -Get statistics captured during ISO test. - -#### Return - -_RX ISO Packet Count (4 Byte):_ - -| **Description** | **Value** | -| ------------------------ | ----------------- | -| Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | -| | - -_RX ISO Octet Count (4 Byte):_ - -| **Description** | **Value** | -| ----------------------- | ----------------- | -| Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | -| | - -_Generate Packet Count (4 Byte):_ - -| **Description** | **Value** | -| ------------------------- | ----------------- | -| Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | -| | - -_Generate Octet Count (4 Byte):_ - -| **Description** | **Value** | -| ------------------------ | ----------------- | -| Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | -| | - -### Enable ISO Packet Sink - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D7 | 1 | Enable | -| | - -#### Description - -Enable/Disable ISO packet sink. - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Enable Autogenerate ISO Packets - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D8 | 2 | Packet Length | -| | - -#### Description - -Enable autogenerate ISO packets. - -#### Parameters - -_Packet Length (2 Bytes):_ - -| **Description** | **Value** | -| --------------- | ------------- | -| Disable | 0x00 | -| Length | 0x01 – 0xFFFF | -| | - -#### Return - -Status - -### Get ISO Connection Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D9 | 0 | N/A | -| | -#### Description - -Get statistics captured during ISO connection. - -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - -_RX Data CRC (4 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Data Timeout (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | - -_TX Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | - -_Err Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_TX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_RX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_TX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | -### Get Auxiliary Advertising Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DA | 0 | N/A | -| | -#### Description - -Get accumulated auxiliary advertising stats. - -#### Return - -_TX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX Req (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------------------- | ----------------- | -| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| | - -_RX Req CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | - -_RX Req Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_TX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ----------------- | -| Number of sent response packets | 0x00 – 0xFFFFFFFF | -| | - -_TX Chain (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------- | ----------------- | -| Number of sent chain packets | 0x00 – 0xFFFFFFFF | -| | - -_Err ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------- | ----------------- | -| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -### Get Auxiliary Scanning Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DB | 0 | N/A | -| | -#### Description - -Get accumulated auxiliary scanning statistics. - -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX ADV CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | - -_RX ADV Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - -_TX REQ (4 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ----------------- | -| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| | - -_RX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------ | ----------------- | -| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| | - -_RX RSP CRC (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------------- | ----------------- | -| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | - -_RX RSP Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------ | ----------------- | -| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_RX Chain (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------- | ----------------- | -| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | -| | - - -_RX Chain CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------ | ----------------- | -| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | - -_RX Chain Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -_Err Scan (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -### Get Periodic Scanning Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DC | 0 | N/A | - -#### Description - -Get accumulated periodic scanning statistics. - -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX ADV CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------ | ----------------- | -| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | - -_RX ADV Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------- | ----------------- | -| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -_RX Chain (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------- | ----------------- | -| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | - -_RX Chain CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------ | ----------------- | -| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | - -_RX Chain Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -_Err Scan (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -### Set Connection PHY TX Power - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------ | -| 0x3DD | 4 | Handle, Level, PHY | - -#### Description - -Set power level during a connection for a given PHY. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -_Level (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Power Level | -15 - 6 | -| | - -_PHY (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| 1M | 0x00 | -| 2M | 0x01 | -| Coded | 0x02 | -| | - - -#### Return - -Status \ No newline at end of file From da8f684413ab908628bdc95f7423efe6cc1ebaf4 Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:50:00 -0600 Subject: [PATCH 06/18] rename --- .../Cordio/docs/Host_Controller_Interface.md | 2353 +++++++++++++++++ 1 file changed, 2353 insertions(+) create mode 100644 Libraries/Cordio/docs/Host_Controller_Interface.md diff --git a/Libraries/Cordio/docs/Host_Controller_Interface.md b/Libraries/Cordio/docs/Host_Controller_Interface.md new file mode 100644 index 00000000000..9975d5b6abd --- /dev/null +++ b/Libraries/Cordio/docs/Host_Controller_Interface.md @@ -0,0 +1,2353 @@ +# Intro +The Host Controller Interface (HCI) is the common point where devices are split. Typically this interface is over an asynchronous protocol such as UART. Some devices will define proprietary interfaces between the application and host layers. Multi-core SOCs can also use the HCI or proprietary interfaces to split the stack between multiple CPUs. + +# Packets +All contents in the packets are formatted little endian unless stated otherwise +
+ + + + +## Packet Types +| Packet | Packet Type | +| ---------- | ----------- | +| Command | 0x01 | +| Async Data | 0x02 | +| Sync Data | 0x03 | +| Event | 0x04 | + +### Command Type +The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. + +Here is a general overview of the HCI command packet structure: + +| Type (1 Byte) | OpCode (2 Bytes) | Parameters (N Bytes) | +| ------------- | ---------------- | -------------------- | +| 0x01 | 0xXXXX | ... | + +Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) + +**Opcode** = (OGF << 10) | OCF + +Below is an example of the BLE standard command for reset + +RESET +
+| OGF | OCF | Paramters | +| --- | --- | ---------- | +| 0x3 | 0x3 | Length = 0 | + +Type = 0x1 +Opcode = (0x3 << 10) | 0x3 = 0x0C03 +Parmeters = 0 + +Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} + +Note the little endian format of the opcode. + +### Async Data Type +The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. +| Handle (12 Bits) | PB Flag (2 Bits) | BC Flag (2 Bits) | Total Length (2 Bytes) | Data (Total Length) | +| ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | +| 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | + +### Sync Data +This synchronous data packet is not used in BLE. + +### Event Data +The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: +| Type (1 Byte) | Event Code (2 Bytes) | Event Params (N Bytes) | +| ------------- | -------------------- | ---------------------- | +| 0x04 | 0xXX | ... | + + + +# Vendor Specific Commands + +**OGF** : 0x3F +
+**MAX\_NUMBER\_CONNECTIONS**: set at application layer by user. + +NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. + +### Write Memory + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------------------------------------------- | --------------- | ---------- | +| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | +| | +#### Description + +Write N bytes to a specified 32-bit address. + +#### Parameters + +_Length_ (1 Byte): + +| **Description** | **Value** | +| ----------------------------------- | --------- | +| Number of bytes to write to address | 0 – 0xFF | +| | +_Address_ (4 Bytes): + +| **Description** | **Value** | +| ------------------------ | -------------- | +| Address to write data to | 0 - 0xFFFFFFFF | +| | + +#### Return + +Status + +### Read Memory + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------- | +| 0x301 | 5 | Length, Address | +| | + +#### Description + +Read memory from a specified 32-bit address. + +#### Parameters + +_Length_ (1 Byte): + +| **Description** | **Value** | +| ----------------------------------- | --------- | +| Number of bytes to write to address | 0 – 0xFF | + +_Address_ (4 Bytes): + +| **Description** | **Value** | +| ------------------------ | -------------- | +| Address to write data to | 0 - 0xFFFFFFFF | + +#### Return + +_Data_ (N) + +| **Description** | **Value** | +| ---------------------- | --------- | +| Data read from address | 0 - 0xFF | + +### Reset Connection Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x302 | 0 | N/A | + +#### Description + +Clear all connection statistics. + +#### Return + +Status + +### VS TX Test + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------------------------------------------- | +| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | +| | +#### Description + +Start a TX test using a specific number of packets. + +#### Parameters + +_RF Channel_ (1 Byte): + +| **Description** | **Value** | +| ------------------------- | --------- | +| RF channel to transmit on | 0 – 39 | +| | + +_Packet Length_ (1 Byte): + +| **Description** | **Value** | +| -------------------------------- | --------- | +| Number of bytes in single packet | 0 - 255 | +| | + +_Packet Type (1 Byte)_ + +| **Description** | **Value** | +| ------------------------- | --------- | +| PRBS9 | 0x00 | +| 00001111'b packet payload | 0x01 | +| 01010101'b packet payload | 0x02 | +| PRBS15 | 0x03 | +| 11111111'b packet payload | 0x04 | +| 00000000'b packet payload | 0x05 | +| 11110000'b packet payload | 0x06 | +| 10101010'b packet payload | 0x07 | +| | + +_PHY (1 Byte)_ + +| **Description** | **Value** | +| ----------------- | --------- | +| 1M | 0x01 | +| 2M | 0x02 | +| Coded Unspecified | 0x03 | +| Coded S8 | 0x04 | +| Coded S2 | 0x05 | +| | + +_Num Packets (2 Bytes)_ + +| **Description** | **Value** | +| ---------------------------------------------- | ---------- | +| Number of packets to send over courser of test | 0 - 0xFFFF | + +#### Return + +Status + +### VS End Test + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x304 | 0 | N/A | +| | +#### Description + +End current DTM test and return all test stats. + +#### Return + +_TX Data (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------- | ---------- | +| Number of packets transmitted | 0 - 0xFFFF | +| | + +_RX Data Ok_(2 Bytes) + +| **Description** | **Value** | +| ----------------------------- | ---------- | +| Number of packets received ok | 0 – 0xFFFF | +| | + +_RX Data CRC_ (2 Bytes) + +| **Description** | **Value** | +| ------------------------------------------- | ---------- | +| Number of packets received with a CRC error | 0 - 0xFFFF | +| | + +_RX Data Timeout_ (2 Bytes) + +| **Description** | **Value** | +| ---------------------------------------------- | ---------- | +| Number of timeouts waiting to receive a packet | 0 - 0xFFFF | +| | + +### Set Scan Channel Map + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x301 | 1 | Channel Map | +| | + +**Description** + +Set channel map to scan on + +#### Parameters + +_Channel Map (1 Byte):_ + +| **Description** | **Value** | +| ------------------------ | --------- | +| Channel map used to scan | 0 – 0xFF | +| | +#### Return + +Status + +### Set Event Mask + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E1 | 5 | Mask, Enable | +| | + + +#### Description + +Enables/Disabled events the controller will flag + +**Parameters** + +_Mask (4 Bytes):_ + +| **Description** | **Value** | +| -------------------------------- | ------------------------ | +| Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | +| | + + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Enable ACL Sink + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E3 | 1 | Enable | +| | + + +#### Description + +Enables/Disables asynchronous connection-oriented logical transport. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Generate ACL + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------- | +| 0x3E4 | 5 | Handle, Packet Length, Num Packets | +| | + + +#### Description + +Generate ACL for a specified connection. + +**Parameters** + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Packet Length (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | -------------------- | +| Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | +| | + +MAX\_ACL\_LEN set at application layer by user. + +Num Packets (1 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ----------- | +| Number of packets to send in generated ACL | 0x00 – 0xFF | +| | + +#### Return + +Status + +### Enable Autogenerate ACL + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E3 | 1 | Enable | +| | + +#### Description + +Enable/Disable Autogenerate ACL + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + + +#### Return + +Status + +### Set TX Test Error Pattern + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E6 | 4 | Error Pattern | +| | + +#### Description + +Set pattern of errors for TX test mode. + +**Parameters** + +_Error Pattern (1 Byte):_ + +| **Description** | **Value** | +| ------------------------------- | ---------------- | +| 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | +| | + +#### Return + +Status + +### Set Connection Operational Flags + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------------- | +| 0x3E7 | 7 | Handle, Flags, Enable | +| | + + +#### Description + +Enable/Disable connection operational flags for a given connection. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Flags (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------- | ---------------- | +| Flags to enable or disable | 0x0 – 0xFFFFFFFF | +| | + + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Set P-256 Private Key + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E8 | 32 | Private Key | +| | + + +#### Description + +Set P-256 private key or clear set private key. The private key will be used for generating key + +pairs and Diffie-Hellman keys until cleared. + +#### Parameters + +_Private Key (32 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------- | +| Clear Private Key | 0x00… | +| Private Key | 0x1 – 0xFF… | +| | + + +#### Return + +Status + +### Get channel map of periodic scan/adv + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | ----------------------------- | ----------- | +| 0x3DE | 3 | Advertising Handle, Adverting | Channel Map | +| | + +#### Description + +Get the channel map used for periodic scanning or advertising. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------------------- | +| Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + + +_Advertising (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Scanner | 0x00 | +| Advertiser | 0x01 | +| | + +#### Return + +_Channel Map (5 Bytes):_ + +| **Description** | **Value** | +| --------------- | -------------- | +| Channel Masks | {0x00-0xFF, …} | +| | + +### Get ACL Test Report + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E9 | 0 | **N/A** | +| | + +#### Description + +Get ACL Test Report + +#### Return + +_RX ACL Packet Count (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------ | ---------------- | +| Number of ACL packets received | 0x0 – 0xFFFFFFFF | +| | + +_RX ACL Octet Count (4 Bytes):_ + +| **Description** | **Value** | +| ----------------------------- | ---------------- | +| Number of ACL octets received | 0x0 – 0xFFFFFFFF | +| | + + +_Generated ACL Packet Count (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ---------------- | +| Number of generated ACL packets | 0x0 – 0xFFFFFFFF | +| | + + +_Generated ACL Octet Count (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------ | ---------------- | +| Number of generated ACL octets | 0x0 – 0xFFFFFFFF | +| | + +### Set Local Minimum Number of Used Channels + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------------- | +| 0x3EA** | 3 | PHYs, Power Threshold, Min Used Channels | +| | + + +#### Description + +Set local minimum number of used channels. + +#### Parameters + +_PHYs (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| 1M | 0x1 | +| 2M | 0x2 | +| Coded | 0x3 | +| | + + +_Power Threshold (1 Byte, signed 8-Bit):_ + +| **Description** | **Value** | +| ----------------------- | --------- | +| Power Threshold for PHY | +/-127 | +| | + + +Min Used Channels (1 Byte) + +| **Description** | **Value** | +| ------------------------------- | --------- | +| Minimum number of used channels | 1 - 37 | +| | + + +#### Return + +Status + +### Get Peer Minimum Number of Used Channels + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ------------------------- | +| 0x3EB | 2 | Handle | 1M PHY, 2M PHY, Coded PHY | +| | + +#### Description + +Get peer minimum number of used channels. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +#### Return + +_1M PHY (1 Byte):_ + +| **Description** | **Value** | +| -------------------- | --------- | +| 1M min used channels | 1 - 37 | +| | + +_2M PHY (1 Byte):_ + +| **Description** | **Value** | +| -------------------- | --------- | +| 2M min used channels | 1 - 37 | +| | + +_Coded PHY (1 Byte):_ + +| **Description** | **Value** | +| ----------------------- | --------- | +| Coded min used channels | 1 – 37 | +| | + +### Set validate public key mode between ALT1 and ALT2 + +| **OCF** | **Length** | **Parameters** | +| --------- | ---------- | ----------------- | +| **0x3EC** | **1** | **Validate Mode** | +| | + + +#### Description + +Set mode used to validate public key. + +#### Parameters + +_Validate Mode (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| ALT2 | 0x0 | +| ALT1 | 0x1 | +| | + +#### Return + +Status + +### Set BD Address + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F0 | 6 | BD Address | +| | + + +#### Description + +Set the device address. + +#### Parameters + +_BD Address (6 Bytes):_ + +| **Description** | **Value** | +| --------------- | -------------- | +| Device Address | {0x00-0xFF, …} | +| | + + +#### Return + +Status + +### Get Random Address + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ---------- | +| 0x3F1 | 0 | N/A | BD Address | +| | +#### Description + +Get random device address. + +#### Return + +_BD Address (6 Bytes):_ + +| **Description** | **Value** | +| --------------- | -------------- | +| Device Address | {0x00-0xFF, …} | +| | +### Set Local Feature + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F2 | 8 | Local Features | +| | + + +#### Description + +Set local supported features. + +#### Parameters + +_Local Features (8 Bytes):_ + +| **Description** | **Value** | +| ---------------------- | ------------------------- | +| Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | +| | + + +#### Return + +Status + +### Set Operational Flags + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F3 | 5 | Flags, Enable | +| | + + +#### Description + +Enable Disable Operational Flags + +#### Parameters + +_Flags_ (4 Bytes): + +| **Description** | **Value** | +| -------------------------- | ---------------- | +| Flags to enable or disable | 0x0 – 0xFFFFFFFF | +| | + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Get PDU Filter Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F4 | 0 | N/A | +| | + +#### Description + +Get the accumulated PDU filter statistics. + +#### Return + +_Fail PDU Type Filter_ (2 Bytes): + +| **Description** | **Value** | +| -------------------------------------- | ------------ | +| Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | +| | + +_Pass PDU Type Filter_ (2 Bytes): + +| **Description** | **Value** | +| -------------------------------------- | ------------ | +| Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | +| | + +_Fail Whitelist Filter_ (2 Bytes): + +| **Description** | **Value** | +| --------------------------------------- | ------------ | +| Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | +| | + +_Pass Whitelist Filter_ (2 Bytes): + +| **Description** | **Value** | +| --------------------------------------- | ------------ | +| Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | +| | + +_Fail Peer Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of PDUS failing peer address match | 0x0 – 0xFFFF | +| | + +_Pass Peer Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of PDUs passing peer address match | 0x0 – 0xFFFF | +| | + +_Fail Local Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ------------ | +| Number of PDUS failing local address match | 0x0 – 0xFFFF | +| | + +_Pass local Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ------------ | +| Number of PDUs passing local address match | 0x0 – 0xFFFF | +| | + +_Fail Peer RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ---------------------------------------- | ------------ | +| Number of peer RPAs failing verification | 0x0 – 0xFFFF | +| | + +_Pass Peer RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ---------------------------------------- | ------------ | +| Number of peer RPAs passing verification | 0x0 – 0xFFFF | +| | + +_Fail Local RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of local RPAs failing verification | 0x0 – 0xFFFF | +| | + +_Pass Local RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of local RPAs passing verification | 0x0 – 0xFFFF | +| | + +_Fail Peer Private Address_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | +| Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | +| | + +_Fail Local Private Address_ (2 Bytes): + +| **Description** | **Value** | +| -------------------------------------------------------- | ------------ | +| Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | +| | + +_Fail Peer Address Res Req_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | +| Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | +| | + +_Pass Peer Address Res Req_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | +| Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | +| | + +_Pass Local Address Res Opt._ (2 Bytes): +| **Description** | **Value** | +| -------------------------------------------------------- | ------------ | +| Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | +| | + +_Peer Res Address Pend_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of peer address resolutions pended | 0x0 – 0xFFFF | +| | + +_Local Res Address Pend_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ------------ | +| Number of local address resolutions pended | 0x0 – 0xFFFF | +| | +### Set Advertising TX Power + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ---------- | +| 0x3F5 | 1 | Power | Status | +| | +#### Description + +Set the TX power used for advertising. + +#### Parameters + +_Power (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Power | -15 - 6 | +| | + + +#### Return + +Status + +### Set Connection TX Power + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ---------- | +| 0x3F6 | 1 | Power | Status | +| | +#### Description + +Set the TX power used for connections. + +#### Parameters + +_Power (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Power | -15 - 6 | +| | + + +#### Return + +Status + +### Set Encryption Mode + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------------------- | +| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | +| | + + +#### Description + +Set encryption mode for a given connection. + +#### Parameters + +_Enable Auth (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +#### Return + +Status + +### Set Channel Map + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------- | +| 0x3F8 | 6 | Handle, Channel Map | +| | + + +#### Description + +Set the channel map + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +_Channel Map (4 Bytes):_ + +| **Description** | **Value** | +| --------------- | ----------------- | +| Channel Map | 0x00 – 0xFFFFFFFF | +| | + +#### Return + +Status + +### Set Diagnostic Mode + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F9 | 1 | Enable | +| | + + +#### Description + +Enable/Disable PAL System Assert Trap + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + + +#### Return + +Status + +### Enable Sniffer Packet Forwarding + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3CD | 1 | Enable | +| | + + +#### Description + +Enable/Disable sniffer packet forwarding. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + + +#### Return + +Status + +### Get Memory Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FA | 0 | N/A | +| | + +#### Description + +Read memory and system statistics. + +#### Return + +_Stack Usage (2 Byte):_ + +| **Description** | **Value** | +| ----------------------------- | ------------ | +| Number of bytes used by stack | 0x0 – 0xFFFF | +| | + + +_Sys Assert Count (2 Byte):_ + +| **Description** | **Value** | +| ------------------------------ | ------------ | +| Number of times assertions hit | 0x0 – 0xFFFF | +| | + +_Free Memory (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------- | ---------------- | +| Memory free for stack usage | 0x0 – 0xFFFFFFFF | +| | + +_Used Memory (4 Bytes):_ + +| **Description** | **Value** | +| -------------------- | ----------------- | +| Memory used by stack | 0x00 – 0xFFFFFFFF | +| | + +_Max Connections (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ------------------------------- | +| Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | +| | + +_Connection Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| Number of bytes used for connection context | 0x00 – 0xFFFF | +| | + +_CS Watermark Level (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ------------- | +| Critical section watermark duration in microseconds | 0x00 – 0xFFFF | +| | + +_LL Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| ------------------------------------------ | ------------- | +| LL handler watermark level in microseconds | 0x00 – 0xFFFF | +| | + +_Sch Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| ------------------------------------------------- | ------------- | +| Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | +| | + +_LHCI Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| -------------------------------------------- | ------------- | +| LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | +| | + +_Max Adv Sets (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ------------- | +| Maximum number of advertising sets | 0x00 – 0xFFFF | +| | + +_Adv Set Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------- | ------------- | +| Size of advertising set context in bytes | 0x00 – 0xFFFF | +| | + +_Ext Scan Max (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ------------ | +| Maximum number of extended scanners | 0x0 – 0xFFFF | + +_Ext Scan Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ------------- | +| Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | +| | + +_Max Num Extended Init (2 Bytes):_ + +| **Description** | **Value** | +| -------------------------------------- | ------------- | +| maximum number of extended initiators. | 0x00 – 0xFFFF | +| | + +_Ext Init Context Size (2 Byte):_ + +| **Description** | **Value** | +| ----------------------------------------------------- | ------------- | +| Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | +| | +_Max Periodic Scanners (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ----------- | +| Maximum number of periodic scanners | 0x00-0xFFFF | +| | + +_Periodic Scanners Context Size(2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------ | ----------- | +| Context size of periodic scanners in bytes | 0x00-0xFFFF | +| | + +_Max CIG (2 Bytes):_ + +| **Description** | **Value** | +| --------------------- | ----------- | +| Maximum number of CIG | 0x00-0xFFFF | +| | + +_CIG Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------- | ----------- | +| Context size of CIG in bytes | 0x00-0xFFFF | +| | +_Max CIS (2 Bytes):_ + +| **Description** | **Value** | +| --------------------- | ----------- | +| Maximum number of CIS | 0x00-0xFFFF | +| | + + +_CIS Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------- | ----------- | +| Context size of CIS in bytes | 0x00-0xFFFF | +| | +### Get Advertising Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FB | 0 | N/A | +| | +#### Description + +Get the accumulated adverting stats. + +#### Return + +_TX ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX Req (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------------------- | ----------------- | +| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | +| | + + +_RX Req CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX Req Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_TX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ----------------- | +| Number of sent response packets | 0x00 – 0xFFFFFFFF | +| | + + +_Err ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------- | ----------------- | +| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +### Get Scan Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FC | 0 | N/A | +| | +#### Description + +Get the statistics captured during scanning. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | +| | + + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------ | ----------------- | +| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------- | ----------------- | +| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_TX Req (4 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ----------------- | +| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | +| | + + +_RX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------ | ----------------- | +| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | +| | + + +_RX RSP CRC (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------------- | ----------------- | +| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX RSP Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------ | ----------------- | +| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ----------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | + + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ----------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ----------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ----------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | +### Get Connection Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FD | 0 | N/A | +| | +#### Description + +Get the statistics captured during connection. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| | + + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------- | ----------------- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| | + + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + + +### Get Test Stats + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | --------------------------------- | +| 0x3FE | 0 | N/A | Test stats in order as documented | +| | +#### Description + +Get the statistics captured during test mode. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| | + + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------- | ----------------- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| | + + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + +### Get Pool Stats + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | --------------------------------- | +| 0x3FF | 0 | N/A | Pool stats in order as documented | +| | + +#### Description + +Get the memory pool statistics captured during runtime. + +**NOTE:** The flag _WSF\_BUF\_STATS_ must be defined to _TRUE_ at compile time + +#### Return + +_Num Pool (1 Bytes):_ + +| **Description** | **Value** | +| ----------------------- | ----------- | +| Number of pools defined | 0x00 – 0xFF | +| | + +**Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). + +_Buf Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------- | ------------- | +| Pool Buffer Size | 0x00 – 0xFFFF | +| | + +_Num Buf (1 Byte):_ + +| **Description** | **Value** | +| ----------------------- | ----------- | +| Total Number of buffers | 0x00 – 0xFF | +| | + + +_Num Alloc (1 Byte):_ + +| **Description** | **Value** | +| --------------------------------- | ----------- | +| Number of outstanding allocations | 0x00 – 0xFF | +| | + +_Max Alloc (1 Byte):_ + +| **Description** | **Value** | +| ------------------------- | ----------- | +| High allocation watermark | 0x00 – 0xFF | +| | + + +_Max Req Len (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ------------- | +| Maximum requested buffer length | 0x00 – 0xFFFF | +| | + + +### Set Additional AuxPtr Offset + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D0 | 5 | Delay, Handle | +| | + + +#### Description + +Set auxiliary packet offset delay. + +#### Parameters + +_Delay (4 Bytes):_ + +| **Description** | **Value** | +| --------------------- | ---------------- | +| Disable | 0x00 | +| Delay in microseconds | 0x1 – 0xFFFFFFFF | +| | + +_Handle (1 Byte):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +#### Return + +Status + +### Set Extended Advertising Data Fragmentation + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------- | +| 0x3D1 | 2 | Handle, Frag Length | +| | + + +#### Description + +Set the extended advertising fragmentation length. + +#### Parameters + +_Handle (1 Bytes):_ + +| **Description** | **Value** | +| ------------------ | ----------------------------- | +| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +_Frag Length (1 Bytes):_ + +| **Description** | **Value** | +| -------------------- | --------- | +| Fragmentation Length | 0x00-0xFF | + +#### Return + +Status + +### Set Extended Advertising PHY Options + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------------------------ | +| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | +| | + + +#### Description + +Set extended advertising PHY options + +#### Parameters + +_Handle (1 Byte):_ + +| **Description** | **Value** | +| ------------------ | ----------------------------- | +| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + +_Primary Opt. (1 Byte):_ + +| **Description** | **Value** | +| ---------------------------------------- | --------- | +| Primary advertising channel PHY options. | 0x00-0xFF | + +_Secondary Opt. (1 Byte):_ + +| **Description** | **Value** | +| ------------------------------------------ | --------- | +| Secondary advertising channel PHY options. | 0x00-0xFF | + +#### Return + +Status + +### Set extended Advertising Default PHY Options + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D3 | 1 | PHY Opt. | +| | + + +#### Description + +Set the default TX PHY options for extended adv slave primary and secondary channel. + +#### Parameters + +_PHY Opt. (1 Byte):_ + +| **Description** | **Value** | +| --------------- | ----------- | +| PHY Options | 0x00 – 0xFF | +| | + +#### Return + +Status + +### Generate ISO Packets + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------- | +| 0x3D5 | 5 | Handle, Packet Length, Num Packets | +| | + +#### Description + +Generate ISO packets. + +#### Parameters + +_Handle (2 Byte):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + +_Packet Length (2 Byte):_ + +| **Description** | **Value** | +| --------------- | ----------- | +| Packet Length | 0x00-0xFFFF | +| | + +_Num Packets (1 Byte):_ + +| **Description** | **Value** | +| ----------------- | --------- | +| Number of packets | 0x00-0xFF | +| | +#### Return + +Status + +### Get ISO Test Report + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------------------------------------------------------------------------- | +| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count | +| | + +#### Description + +Get statistics captured during ISO test. + +#### Return + +_RX ISO Packet Count (4 Byte):_ + +| **Description** | **Value** | +| ------------------------ | ----------------- | +| Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | +| | + +_RX ISO Octet Count (4 Byte):_ + +| **Description** | **Value** | +| ----------------------- | ----------------- | +| Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | +| | + +_Generate Packet Count (4 Byte):_ + +| **Description** | **Value** | +| ------------------------- | ----------------- | +| Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | +| | + +_Generate Octet Count (4 Byte):_ + +| **Description** | **Value** | +| ------------------------ | ----------------- | +| Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | +| | + +### Enable ISO Packet Sink + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D7 | 1 | Enable | +| | + +#### Description + +Enable/Disable ISO packet sink. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Enable Autogenerate ISO Packets + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D8 | 2 | Packet Length | +| | + +#### Description + +Enable autogenerate ISO packets. + +#### Parameters + +_Packet Length (2 Bytes):_ + +| **Description** | **Value** | +| --------------- | ------------- | +| Disable | 0x00 | +| Length | 0x01 – 0xFFFF | +| | + +#### Return + +Status + +### Get ISO Connection Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D9 | 0 | N/A | +| | +#### Description + +Get statistics captured during ISO connection. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| | + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| | + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------- | ----------------- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| | + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | +### Get Auxiliary Advertising Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3DA | 0 | N/A | +| | +#### Description + +Get accumulated auxiliary advertising stats. + +#### Return + +_TX ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX Req (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------------------- | ----------------- | +| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | +| | + +_RX Req CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| | + +_RX Req Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_TX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ----------------- | +| Number of sent response packets | 0x00 – 0xFFFFFFFF | +| | + +_TX Chain (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------- | ----------------- | +| Number of sent chain packets | 0x00 – 0xFFFFFFFF | +| | + +_Err ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------- | ----------------- | +| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +### Get Auxiliary Scanning Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3DB | 0 | N/A | +| | +#### Description + +Get accumulated auxiliary scanning statistics. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + +_TX REQ (4 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ----------------- | +| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | +| | + +_RX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------ | ----------------- | +| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | +| | + +_RX RSP CRC (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------------- | ----------------- | +| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +| | + +_RX RSP Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------ | ----------------- | +| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_RX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------- | ----------------- | +| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | +| | + + +_RX Chain CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------ | ----------------- | +| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX Chain Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +### Get Periodic Scanning Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3DC | 0 | N/A | + +#### Description + +Get accumulated periodic scanning statistics. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------ | ----------------- | +| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------- | ----------------- | +| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_RX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------- | ----------------- | +| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | + +_RX Chain CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------ | ----------------- | +| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX Chain Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +### Set Connection PHY TX Power + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------ | +| 0x3DD | 4 | Handle, Level, PHY | + +#### Description + +Set power level during a connection for a given PHY. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +_Level (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Power Level | -15 - 6 | +| | + +_PHY (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| 1M | 0x00 | +| 2M | 0x01 | +| Coded | 0x02 | +| | + + +#### Return + +Status \ No newline at end of file From 317dd3c8150d4ed7e4faf741f5f0b28325947050 Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:50:35 -0600 Subject: [PATCH 07/18] rename --- .../Cordio/docs/Host_Controller_Interface.md | 2353 ----------------- 1 file changed, 2353 deletions(-) delete mode 100644 Libraries/Cordio/docs/Host_Controller_Interface.md diff --git a/Libraries/Cordio/docs/Host_Controller_Interface.md b/Libraries/Cordio/docs/Host_Controller_Interface.md deleted file mode 100644 index 9975d5b6abd..00000000000 --- a/Libraries/Cordio/docs/Host_Controller_Interface.md +++ /dev/null @@ -1,2353 +0,0 @@ -# Intro -The Host Controller Interface (HCI) is the common point where devices are split. Typically this interface is over an asynchronous protocol such as UART. Some devices will define proprietary interfaces between the application and host layers. Multi-core SOCs can also use the HCI or proprietary interfaces to split the stack between multiple CPUs. - -# Packets -All contents in the packets are formatted little endian unless stated otherwise -
- - - - -## Packet Types -| Packet | Packet Type | -| ---------- | ----------- | -| Command | 0x01 | -| Async Data | 0x02 | -| Sync Data | 0x03 | -| Event | 0x04 | - -### Command Type -The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. - -Here is a general overview of the HCI command packet structure: - -| Type (1 Byte) | OpCode (2 Bytes) | Parameters (N Bytes) | -| ------------- | ---------------- | -------------------- | -| 0x01 | 0xXXXX | ... | - -Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) - -**Opcode** = (OGF << 10) | OCF - -Below is an example of the BLE standard command for reset - -RESET -
-| OGF | OCF | Paramters | -| --- | --- | ---------- | -| 0x3 | 0x3 | Length = 0 | - -Type = 0x1 -Opcode = (0x3 << 10) | 0x3 = 0x0C03 -Parmeters = 0 - -Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} - -Note the little endian format of the opcode. - -### Async Data Type -The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. -| Handle (12 Bits) | PB Flag (2 Bits) | BC Flag (2 Bits) | Total Length (2 Bytes) | Data (Total Length) | -| ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | -| 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | - -### Sync Data -This synchronous data packet is not used in BLE. - -### Event Data -The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: -| Type (1 Byte) | Event Code (2 Bytes) | Event Params (N Bytes) | -| ------------- | -------------------- | ---------------------- | -| 0x04 | 0xXX | ... | - - - -# Vendor Specific Commands - -**OGF** : 0x3F -
-**MAX\_NUMBER\_CONNECTIONS**: set at application layer by user. - -NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. - -### Write Memory - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------------------------------------------- | --------------- | ---------- | -| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | -| | -#### Description - -Write N bytes to a specified 32-bit address. - -#### Parameters - -_Length_ (1 Byte): - -| **Description** | **Value** | -| ----------------------------------- | --------- | -| Number of bytes to write to address | 0 – 0xFF | -| | -_Address_ (4 Bytes): - -| **Description** | **Value** | -| ------------------------ | -------------- | -| Address to write data to | 0 - 0xFFFFFFFF | -| | - -#### Return - -Status - -### Read Memory - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------- | -| 0x301 | 5 | Length, Address | -| | - -#### Description - -Read memory from a specified 32-bit address. - -#### Parameters - -_Length_ (1 Byte): - -| **Description** | **Value** | -| ----------------------------------- | --------- | -| Number of bytes to write to address | 0 – 0xFF | - -_Address_ (4 Bytes): - -| **Description** | **Value** | -| ------------------------ | -------------- | -| Address to write data to | 0 - 0xFFFFFFFF | - -#### Return - -_Data_ (N) - -| **Description** | **Value** | -| ---------------------- | --------- | -| Data read from address | 0 - 0xFF | - -### Reset Connection Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x302 | 0 | N/A | - -#### Description - -Clear all connection statistics. - -#### Return - -Status - -### VS TX Test - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------------------------------------------- | -| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | -| | -#### Description - -Start a TX test using a specific number of packets. - -#### Parameters - -_RF Channel_ (1 Byte): - -| **Description** | **Value** | -| ------------------------- | --------- | -| RF channel to transmit on | 0 – 39 | -| | - -_Packet Length_ (1 Byte): - -| **Description** | **Value** | -| -------------------------------- | --------- | -| Number of bytes in single packet | 0 - 255 | -| | - -_Packet Type (1 Byte)_ - -| **Description** | **Value** | -| ------------------------- | --------- | -| PRBS9 | 0x00 | -| 00001111'b packet payload | 0x01 | -| 01010101'b packet payload | 0x02 | -| PRBS15 | 0x03 | -| 11111111'b packet payload | 0x04 | -| 00000000'b packet payload | 0x05 | -| 11110000'b packet payload | 0x06 | -| 10101010'b packet payload | 0x07 | -| | - -_PHY (1 Byte)_ - -| **Description** | **Value** | -| ----------------- | --------- | -| 1M | 0x01 | -| 2M | 0x02 | -| Coded Unspecified | 0x03 | -| Coded S8 | 0x04 | -| Coded S2 | 0x05 | -| | - -_Num Packets (2 Bytes)_ - -| **Description** | **Value** | -| ---------------------------------------------- | ---------- | -| Number of packets to send over courser of test | 0 - 0xFFFF | - -#### Return - -Status - -### VS End Test - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x304 | 0 | N/A | -| | -#### Description - -End current DTM test and return all test stats. - -#### Return - -_TX Data (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------- | ---------- | -| Number of packets transmitted | 0 - 0xFFFF | -| | - -_RX Data Ok_(2 Bytes) - -| **Description** | **Value** | -| ----------------------------- | ---------- | -| Number of packets received ok | 0 – 0xFFFF | -| | - -_RX Data CRC_ (2 Bytes) - -| **Description** | **Value** | -| ------------------------------------------- | ---------- | -| Number of packets received with a CRC error | 0 - 0xFFFF | -| | - -_RX Data Timeout_ (2 Bytes) - -| **Description** | **Value** | -| ---------------------------------------------- | ---------- | -| Number of timeouts waiting to receive a packet | 0 - 0xFFFF | -| | - -### Set Scan Channel Map - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x301 | 1 | Channel Map | -| | - -**Description** - -Set channel map to scan on - -#### Parameters - -_Channel Map (1 Byte):_ - -| **Description** | **Value** | -| ------------------------ | --------- | -| Channel map used to scan | 0 – 0xFF | -| | -#### Return - -Status - -### Set Event Mask - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E1 | 5 | Mask, Enable | -| | - - -#### Description - -Enables/Disabled events the controller will flag - -**Parameters** - -_Mask (4 Bytes):_ - -| **Description** | **Value** | -| -------------------------------- | ------------------------ | -| Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | -| | - - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Enable ACL Sink - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E3 | 1 | Enable | -| | - - -#### Description - -Enables/Disables asynchronous connection-oriented logical transport. - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Generate ACL - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------- | -| 0x3E4 | 5 | Handle, Packet Length, Num Packets | -| | - - -#### Description - -Generate ACL for a specified connection. - -**Parameters** - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -MAX\_NUMBER\_CONNECTIONS set at application layer by user. - -_Packet Length (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | -------------------- | -| Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | -| | - -MAX\_ACL\_LEN set at application layer by user. - -Num Packets (1 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ----------- | -| Number of packets to send in generated ACL | 0x00 – 0xFF | -| | - -#### Return - -Status - -### Enable Autogenerate ACL - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E3 | 1 | Enable | -| | - -#### Description - -Enable/Disable Autogenerate ACL - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - - -#### Return - -Status - -### Set TX Test Error Pattern - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E6 | 4 | Error Pattern | -| | - -#### Description - -Set pattern of errors for TX test mode. - -**Parameters** - -_Error Pattern (1 Byte):_ - -| **Description** | **Value** | -| ------------------------------- | ---------------- | -| 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | -| | - -#### Return - -Status - -### Set Connection Operational Flags - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------------- | -| 0x3E7 | 7 | Handle, Flags, Enable | -| | - - -#### Description - -Enable/Disable connection operational flags for a given connection. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -MAX\_NUMBER\_CONNECTIONS set at application layer by user. - -_Flags (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------- | ---------------- | -| Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| | - - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Set P-256 Private Key - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E8 | 32 | Private Key | -| | - - -#### Description - -Set P-256 private key or clear set private key. The private key will be used for generating key - -pairs and Diffie-Hellman keys until cleared. - -#### Parameters - -_Private Key (32 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------- | -| Clear Private Key | 0x00… | -| Private Key | 0x1 – 0xFF… | -| | - - -#### Return - -Status - -### Get channel map of periodic scan/adv - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | ----------------------------- | ----------- | -| 0x3DE | 3 | Advertising Handle, Adverting | Channel Map | -| | - -#### Description - -Get the channel map used for periodic scanning or advertising. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------------------- | -| Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - - -_Advertising (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Scanner | 0x00 | -| Advertiser | 0x01 | -| | - -#### Return - -_Channel Map (5 Bytes):_ - -| **Description** | **Value** | -| --------------- | -------------- | -| Channel Masks | {0x00-0xFF, …} | -| | - -### Get ACL Test Report - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E9 | 0 | **N/A** | -| | - -#### Description - -Get ACL Test Report - -#### Return - -_RX ACL Packet Count (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------ | ---------------- | -| Number of ACL packets received | 0x0 – 0xFFFFFFFF | -| | - -_RX ACL Octet Count (4 Bytes):_ - -| **Description** | **Value** | -| ----------------------------- | ---------------- | -| Number of ACL octets received | 0x0 – 0xFFFFFFFF | -| | - - -_Generated ACL Packet Count (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ---------------- | -| Number of generated ACL packets | 0x0 – 0xFFFFFFFF | -| | - - -_Generated ACL Octet Count (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------ | ---------------- | -| Number of generated ACL octets | 0x0 – 0xFFFFFFFF | -| | - -### Set Local Minimum Number of Used Channels - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------------- | -| 0x3EA** | 3 | PHYs, Power Threshold, Min Used Channels | -| | - - -#### Description - -Set local minimum number of used channels. - -#### Parameters - -_PHYs (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| 1M | 0x1 | -| 2M | 0x2 | -| Coded | 0x3 | -| | - - -_Power Threshold (1 Byte, signed 8-Bit):_ - -| **Description** | **Value** | -| ----------------------- | --------- | -| Power Threshold for PHY | +/-127 | -| | - - -Min Used Channels (1 Byte) - -| **Description** | **Value** | -| ------------------------------- | --------- | -| Minimum number of used channels | 1 - 37 | -| | - - -#### Return - -Status - -### Get Peer Minimum Number of Used Channels - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ------------------------- | -| 0x3EB | 2 | Handle | 1M PHY, 2M PHY, Coded PHY | -| | - -#### Description - -Get peer minimum number of used channels. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -#### Return - -_1M PHY (1 Byte):_ - -| **Description** | **Value** | -| -------------------- | --------- | -| 1M min used channels | 1 - 37 | -| | - -_2M PHY (1 Byte):_ - -| **Description** | **Value** | -| -------------------- | --------- | -| 2M min used channels | 1 - 37 | -| | - -_Coded PHY (1 Byte):_ - -| **Description** | **Value** | -| ----------------------- | --------- | -| Coded min used channels | 1 – 37 | -| | - -### Set validate public key mode between ALT1 and ALT2 - -| **OCF** | **Length** | **Parameters** | -| --------- | ---------- | ----------------- | -| **0x3EC** | **1** | **Validate Mode** | -| | - - -#### Description - -Set mode used to validate public key. - -#### Parameters - -_Validate Mode (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| ALT2 | 0x0 | -| ALT1 | 0x1 | -| | - -#### Return - -Status - -### Set BD Address - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F0 | 6 | BD Address | -| | - - -#### Description - -Set the device address. - -#### Parameters - -_BD Address (6 Bytes):_ - -| **Description** | **Value** | -| --------------- | -------------- | -| Device Address | {0x00-0xFF, …} | -| | - - -#### Return - -Status - -### Get Random Address - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F1 | 0 | N/A | BD Address | -| | -#### Description - -Get random device address. - -#### Return - -_BD Address (6 Bytes):_ - -| **Description** | **Value** | -| --------------- | -------------- | -| Device Address | {0x00-0xFF, …} | -| | -### Set Local Feature - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F2 | 8 | Local Features | -| | - - -#### Description - -Set local supported features. - -#### Parameters - -_Local Features (8 Bytes):_ - -| **Description** | **Value** | -| ---------------------- | ------------------------- | -| Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | -| | - - -#### Return - -Status - -### Set Operational Flags - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F3 | 5 | Flags, Enable | -| | - - -#### Description - -Enable Disable Operational Flags - -#### Parameters - -_Flags_ (4 Bytes): - -| **Description** | **Value** | -| -------------------------- | ---------------- | -| Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| | - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Get PDU Filter Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F4 | 0 | N/A | -| | - -#### Description - -Get the accumulated PDU filter statistics. - -#### Return - -_Fail PDU Type Filter_ (2 Bytes): - -| **Description** | **Value** | -| -------------------------------------- | ------------ | -| Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | -| | - -_Pass PDU Type Filter_ (2 Bytes): - -| **Description** | **Value** | -| -------------------------------------- | ------------ | -| Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | -| | - -_Fail Whitelist Filter_ (2 Bytes): - -| **Description** | **Value** | -| --------------------------------------- | ------------ | -| Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | -| | - -_Pass Whitelist Filter_ (2 Bytes): - -| **Description** | **Value** | -| --------------------------------------- | ------------ | -| Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | -| | - -_Fail Peer Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of PDUS failing peer address match | 0x0 – 0xFFFF | -| | - -_Pass Peer Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of PDUs passing peer address match | 0x0 – 0xFFFF | -| | - -_Fail Local Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of PDUS failing local address match | 0x0 – 0xFFFF | -| | - -_Pass local Address Match_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of PDUs passing local address match | 0x0 – 0xFFFF | -| | - -_Fail Peer RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ---------------------------------------- | ------------ | -| Number of peer RPAs failing verification | 0x0 – 0xFFFF | -| | - -_Pass Peer RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ---------------------------------------- | ------------ | -| Number of peer RPAs passing verification | 0x0 – 0xFFFF | -| | - -_Fail Local RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of local RPAs failing verification | 0x0 – 0xFFFF | -| | - -_Pass Local RPA Verify_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of local RPAs passing verification | 0x0 – 0xFFFF | -| | - -_Fail Peer Private Address_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -| | - -_Fail Local Private Address_ (2 Bytes): - -| **Description** | **Value** | -| -------------------------------------------------------- | ------------ | -| Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -| | - -_Fail Peer Address Res Req_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | -| | - -_Pass Peer Address Res Req_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | -| | - -_Pass Local Address Res Opt._ (2 Bytes): -| **Description** | **Value** | -| -------------------------------------------------------- | ------------ | -| Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | -| | - -_Peer Res Address Pend_ (2 Bytes): - -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of peer address resolutions pended | 0x0 – 0xFFFF | -| | - -_Local Res Address Pend_ (2 Bytes): - -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of local address resolutions pended | 0x0 – 0xFFFF | -| | -### Set Advertising TX Power - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F5 | 1 | Power | Status | -| | -#### Description - -Set the TX power used for advertising. - -#### Parameters - -_Power (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Power | -15 - 6 | -| | - - -#### Return - -Status - -### Set Connection TX Power - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F6 | 1 | Power | Status | -| | -#### Description - -Set the TX power used for connections. - -#### Parameters - -_Power (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Power | -15 - 6 | -| | - - -#### Return - -Status - -### Set Encryption Mode - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------------------- | -| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | -| | - - -#### Description - -Set encryption mode for a given connection. - -#### Parameters - -_Enable Auth (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | - - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -#### Return - -Status - -### Set Channel Map - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------- | -| 0x3F8 | 6 | Handle, Channel Map | -| | - - -#### Description - -Set the channel map - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -_Channel Map (4 Bytes):_ - -| **Description** | **Value** | -| --------------- | ----------------- | -| Channel Map | 0x00 – 0xFFFFFFFF | -| | - -#### Return - -Status - -### Set Diagnostic Mode - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F9 | 1 | Enable | -| | - - -#### Description - -Enable/Disable PAL System Assert Trap - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | - - -#### Return - -Status - -### Enable Sniffer Packet Forwarding - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3CD | 1 | Enable | -| | - - -#### Description - -Enable/Disable sniffer packet forwarding. - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | - - -#### Return - -Status - -### Get Memory Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FA | 0 | N/A | -| | - -#### Description - -Read memory and system statistics. - -#### Return - -_Stack Usage (2 Byte):_ - -| **Description** | **Value** | -| ----------------------------- | ------------ | -| Number of bytes used by stack | 0x0 – 0xFFFF | -| | - - -_Sys Assert Count (2 Byte):_ - -| **Description** | **Value** | -| ------------------------------ | ------------ | -| Number of times assertions hit | 0x0 – 0xFFFF | -| | - -_Free Memory (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------- | ---------------- | -| Memory free for stack usage | 0x0 – 0xFFFFFFFF | -| | - -_Used Memory (4 Bytes):_ - -| **Description** | **Value** | -| -------------------- | ----------------- | -| Memory used by stack | 0x00 – 0xFFFFFFFF | -| | - -_Max Connections (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ------------------------------- | -| Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | -| | - -_Connection Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| Number of bytes used for connection context | 0x00 – 0xFFFF | -| | - -_CS Watermark Level (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ------------- | -| Critical section watermark duration in microseconds | 0x00 – 0xFFFF | -| | - -_LL Handler Watermark Level (2 Byte):_ - -| **Description** | **Value** | -| ------------------------------------------ | ------------- | -| LL handler watermark level in microseconds | 0x00 – 0xFFFF | -| | - -_Sch Handler Watermark Level (2 Byte):_ - -| **Description** | **Value** | -| ------------------------------------------------- | ------------- | -| Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | -| | - -_LHCI Handler Watermark Level (2 Byte):_ - -| **Description** | **Value** | -| -------------------------------------------- | ------------- | -| LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | -| | - -_Max Adv Sets (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ------------- | -| Maximum number of advertising sets | 0x00 – 0xFFFF | -| | - -_Adv Set Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------- | ------------- | -| Size of advertising set context in bytes | 0x00 – 0xFFFF | -| | - -_Ext Scan Max (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ------------ | -| Maximum number of extended scanners | 0x0 – 0xFFFF | - -_Ext Scan Context Size (2 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ------------- | -| Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | -| | - -_Max Num Extended Init (2 Bytes):_ - -| **Description** | **Value** | -| -------------------------------------- | ------------- | -| maximum number of extended initiators. | 0x00 – 0xFFFF | -| | - -_Ext Init Context Size (2 Byte):_ - -| **Description** | **Value** | -| ----------------------------------------------------- | ------------- | -| Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | -| | -_Max Periodic Scanners (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ----------- | -| Maximum number of periodic scanners | 0x00-0xFFFF | -| | - -_Periodic Scanners Context Size(2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------ | ----------- | -| Context size of periodic scanners in bytes | 0x00-0xFFFF | -| | - -_Max CIG (2 Bytes):_ - -| **Description** | **Value** | -| --------------------- | ----------- | -| Maximum number of CIG | 0x00-0xFFFF | -| | - -_CIG Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------- | ----------- | -| Context size of CIG in bytes | 0x00-0xFFFF | -| | -_Max CIS (2 Bytes):_ - -| **Description** | **Value** | -| --------------------- | ----------- | -| Maximum number of CIS | 0x00-0xFFFF | -| | - - -_CIS Context Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------------------- | ----------- | -| Context size of CIS in bytes | 0x00-0xFFFF | -| | -### Get Advertising Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FB | 0 | N/A | -| | -#### Description - -Get the accumulated adverting stats. - -#### Return - -_TX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX Req (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------------------- | ----------------- | -| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| | - - -_RX Req CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX Req Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_TX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ----------------- | -| Number of sent response packets | 0x00 – 0xFFFFFFFF | -| | - - -_Err ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------- | ----------------- | -| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -### Get Scan Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FC | 0 | N/A | -| | -#### Description - -Get the statistics captured during scanning. - -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| | - - -_RX ADV CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------ | ----------------- | -| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX ADV Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------- | ----------------- | -| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_TX Req (4 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ----------------- | -| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| | - - -_RX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------ | ----------------- | -| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| | - - -_RX RSP CRC (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------------- | ----------------- | -| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX RSP Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------ | ----------------- | -| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_Err Scan (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| | - - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ----------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ----------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ----------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ----------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | -### Get Connection Stats - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FD | 0 | N/A | -| | -#### Description - -Get the statistics captured during connection. - -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data CRC (4 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data Timeout (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | - - -_TX Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | - - -_Err Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_TX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_RX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - -_TX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - - -### Get Test Stats - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | --------------------------------- | -| 0x3FE | 0 | N/A | Test stats in order as documented | -| | -#### Description - -Get the statistics captured during test mode. - -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data CRC (4 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data Timeout (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | - - -_TX Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | - - -_Err Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_TX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_RX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_TX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - -### Get Pool Stats - -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | --------------------------------- | -| 0x3FF | 0 | N/A | Pool stats in order as documented | -| | - -#### Description - -Get the memory pool statistics captured during runtime. - -**NOTE:** The flag _WSF\_BUF\_STATS_ must be defined to _TRUE_ at compile time - -#### Return - -_Num Pool (1 Bytes):_ - -| **Description** | **Value** | -| ----------------------- | ----------- | -| Number of pools defined | 0x00 – 0xFF | -| | - -**Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). - -_Buf Size (2 Bytes):_ - -| **Description** | **Value** | -| ---------------- | ------------- | -| Pool Buffer Size | 0x00 – 0xFFFF | -| | - -_Num Buf (1 Byte):_ - -| **Description** | **Value** | -| ----------------------- | ----------- | -| Total Number of buffers | 0x00 – 0xFF | -| | - - -_Num Alloc (1 Byte):_ - -| **Description** | **Value** | -| --------------------------------- | ----------- | -| Number of outstanding allocations | 0x00 – 0xFF | -| | - -_Max Alloc (1 Byte):_ - -| **Description** | **Value** | -| ------------------------- | ----------- | -| High allocation watermark | 0x00 – 0xFF | -| | - - -_Max Req Len (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ------------- | -| Maximum requested buffer length | 0x00 – 0xFFFF | -| | - - -### Set Additional AuxPtr Offset - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D0 | 5 | Delay, Handle | -| | - - -#### Description - -Set auxiliary packet offset delay. - -#### Parameters - -_Delay (4 Bytes):_ - -| **Description** | **Value** | -| --------------------- | ---------------- | -| Disable | 0x00 | -| Delay in microseconds | 0x1 – 0xFFFFFFFF | -| | - -_Handle (1 Byte):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -#### Return - -Status - -### Set Extended Advertising Data Fragmentation - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------- | -| 0x3D1 | 2 | Handle, Frag Length | -| | - - -#### Description - -Set the extended advertising fragmentation length. - -#### Parameters - -_Handle (1 Bytes):_ - -| **Description** | **Value** | -| ------------------ | ----------------------------- | -| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - - -_Frag Length (1 Bytes):_ - -| **Description** | **Value** | -| -------------------- | --------- | -| Fragmentation Length | 0x00-0xFF | - -#### Return - -Status - -### Set Extended Advertising PHY Options - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------------------------ | -| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | -| | - - -#### Description - -Set extended advertising PHY options - -#### Parameters - -_Handle (1 Byte):_ - -| **Description** | **Value** | -| ------------------ | ----------------------------- | -| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - -_Primary Opt. (1 Byte):_ - -| **Description** | **Value** | -| ---------------------------------------- | --------- | -| Primary advertising channel PHY options. | 0x00-0xFF | - -_Secondary Opt. (1 Byte):_ - -| **Description** | **Value** | -| ------------------------------------------ | --------- | -| Secondary advertising channel PHY options. | 0x00-0xFF | - -#### Return - -Status - -### Set extended Advertising Default PHY Options - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D3 | 1 | PHY Opt. | -| | - - -#### Description - -Set the default TX PHY options for extended adv slave primary and secondary channel. - -#### Parameters - -_PHY Opt. (1 Byte):_ - -| **Description** | **Value** | -| --------------- | ----------- | -| PHY Options | 0x00 – 0xFF | -| | - -#### Return - -Status - -### Generate ISO Packets - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------- | -| 0x3D5 | 5 | Handle, Packet Length, Num Packets | -| | - -#### Description - -Generate ISO packets. - -#### Parameters - -_Handle (2 Byte):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | - -_Packet Length (2 Byte):_ - -| **Description** | **Value** | -| --------------- | ----------- | -| Packet Length | 0x00-0xFFFF | -| | - -_Num Packets (1 Byte):_ - -| **Description** | **Value** | -| ----------------- | --------- | -| Number of packets | 0x00-0xFF | -| | -#### Return - -Status - -### Get ISO Test Report - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------------------------------------------------------------------------- | -| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count | -| | - -#### Description - -Get statistics captured during ISO test. - -#### Return - -_RX ISO Packet Count (4 Byte):_ - -| **Description** | **Value** | -| ------------------------ | ----------------- | -| Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | -| | - -_RX ISO Octet Count (4 Byte):_ - -| **Description** | **Value** | -| ----------------------- | ----------------- | -| Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | -| | - -_Generate Packet Count (4 Byte):_ - -| **Description** | **Value** | -| ------------------------- | ----------------- | -| Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | -| | - -_Generate Octet Count (4 Byte):_ - -| **Description** | **Value** | -| ------------------------ | ----------------- | -| Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | -| | - -### Enable ISO Packet Sink - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D7 | 1 | Enable | -| | - -#### Description - -Enable/Disable ISO packet sink. - -#### Parameters - -_Enable (1 Byte):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | - -#### Return - -Status - -### Enable Autogenerate ISO Packets - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D8 | 2 | Packet Length | -| | - -#### Description - -Enable autogenerate ISO packets. - -#### Parameters - -_Packet Length (2 Bytes):_ - -| **Description** | **Value** | -| --------------- | ------------- | -| Disable | 0x00 | -| Length | 0x01 – 0xFFFF | -| | - -#### Return - -Status - -### Get ISO Connection Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D9 | 0 | N/A | -| | -#### Description - -Get statistics captured during ISO connection. - -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - -_RX Data CRC (4 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Data Timeout (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | - -_TX Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | - -_Err Data (4 Bytes)_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_TX Setup (2 Bytes)_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | - -_RX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | - - -_TX ISR (2 Bytes)_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | -### Get Auxiliary Advertising Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DA | 0 | N/A | -| | -#### Description - -Get accumulated auxiliary advertising stats. - -#### Return - -_TX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX Req (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------------------- | ----------------- | -| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| | - -_RX Req CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | - -_RX Req Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_TX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------- | ----------------- | -| Number of sent response packets | 0x00 – 0xFFFFFFFF | -| | - -_TX Chain (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------- | ----------------- | -| Number of sent chain packets | 0x00 – 0xFFFFFFFF | -| | - -_Err ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------------- | ----------------- | -| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -### Get Auxiliary Scanning Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DB | 0 | N/A | -| | -#### Description - -Get accumulated auxiliary scanning statistics. - -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX ADV CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | - -_RX ADV Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - -_TX REQ (4 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------- | ----------------- | -| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| | - -_RX RSP (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------ | ----------------- | -| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| | - -_RX RSP CRC (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------------- | ----------------- | -| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | - -_RX RSP Timeout (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------------------ | ----------------- | -| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | - - -_RX Chain (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------- | ----------------- | -| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | -| | - - -_RX Chain CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------ | ----------------- | -| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | - -_RX Chain Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -_Err Scan (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| | - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - - -### Get Periodic Scanning Statistics - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DC | 0 | N/A | - -#### Description - -Get accumulated periodic scanning statistics. - -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX ADV CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------------ | ----------------- | -| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | - -_RX ADV Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------------- | ----------------- | -| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -_RX Chain (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------- | ----------------- | -| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | - -_RX Chain CRC (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------------ | ----------------- | -| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | - -_RX Chain Timeout (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -_Err Scan (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | - -_RX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -_TX Setup (2 Bytes):_ - -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -_RX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -### Set Connection PHY TX Power - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------ | -| 0x3DD | 4 | Handle, Level, PHY | - -#### Description - -Set power level during a connection for a given PHY. - -#### Parameters - -_Handle (2 Bytes):_ - -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -_Level (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| Power Level | -15 - 6 | -| | - -_PHY (1 Byte, Signed 8-Bit):_ - -| **Description** | **Value** | -| --------------- | --------- | -| 1M | 0x00 | -| 2M | 0x01 | -| Coded | 0x02 | -| | - - -#### Return - -Status \ No newline at end of file From eee596153430b93b154c3dfe335bb95816be2ed6 Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 15:39:07 -0600 Subject: [PATCH 08/18] rename? --- .../Cordio/docs/HOST_CONTROLLER_INTERFACE.md | 2353 +++++++++++++++++ 1 file changed, 2353 insertions(+) create mode 100644 Libraries/Cordio/docs/HOST_CONTROLLER_INTERFACE.md diff --git a/Libraries/Cordio/docs/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/HOST_CONTROLLER_INTERFACE.md new file mode 100644 index 00000000000..9975d5b6abd --- /dev/null +++ b/Libraries/Cordio/docs/HOST_CONTROLLER_INTERFACE.md @@ -0,0 +1,2353 @@ +# Intro +The Host Controller Interface (HCI) is the common point where devices are split. Typically this interface is over an asynchronous protocol such as UART. Some devices will define proprietary interfaces between the application and host layers. Multi-core SOCs can also use the HCI or proprietary interfaces to split the stack between multiple CPUs. + +# Packets +All contents in the packets are formatted little endian unless stated otherwise +
+ + + + +## Packet Types +| Packet | Packet Type | +| ---------- | ----------- | +| Command | 0x01 | +| Async Data | 0x02 | +| Sync Data | 0x03 | +| Event | 0x04 | + +### Command Type +The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. + +Here is a general overview of the HCI command packet structure: + +| Type (1 Byte) | OpCode (2 Bytes) | Parameters (N Bytes) | +| ------------- | ---------------- | -------------------- | +| 0x01 | 0xXXXX | ... | + +Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) + +**Opcode** = (OGF << 10) | OCF + +Below is an example of the BLE standard command for reset + +RESET +
+| OGF | OCF | Paramters | +| --- | --- | ---------- | +| 0x3 | 0x3 | Length = 0 | + +Type = 0x1 +Opcode = (0x3 << 10) | 0x3 = 0x0C03 +Parmeters = 0 + +Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} + +Note the little endian format of the opcode. + +### Async Data Type +The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. +| Handle (12 Bits) | PB Flag (2 Bits) | BC Flag (2 Bits) | Total Length (2 Bytes) | Data (Total Length) | +| ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | +| 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | + +### Sync Data +This synchronous data packet is not used in BLE. + +### Event Data +The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: +| Type (1 Byte) | Event Code (2 Bytes) | Event Params (N Bytes) | +| ------------- | -------------------- | ---------------------- | +| 0x04 | 0xXX | ... | + + + +# Vendor Specific Commands + +**OGF** : 0x3F +
+**MAX\_NUMBER\_CONNECTIONS**: set at application layer by user. + +NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. + +### Write Memory + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------------------------------------------- | --------------- | ---------- | +| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | +| | +#### Description + +Write N bytes to a specified 32-bit address. + +#### Parameters + +_Length_ (1 Byte): + +| **Description** | **Value** | +| ----------------------------------- | --------- | +| Number of bytes to write to address | 0 – 0xFF | +| | +_Address_ (4 Bytes): + +| **Description** | **Value** | +| ------------------------ | -------------- | +| Address to write data to | 0 - 0xFFFFFFFF | +| | + +#### Return + +Status + +### Read Memory + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------- | +| 0x301 | 5 | Length, Address | +| | + +#### Description + +Read memory from a specified 32-bit address. + +#### Parameters + +_Length_ (1 Byte): + +| **Description** | **Value** | +| ----------------------------------- | --------- | +| Number of bytes to write to address | 0 – 0xFF | + +_Address_ (4 Bytes): + +| **Description** | **Value** | +| ------------------------ | -------------- | +| Address to write data to | 0 - 0xFFFFFFFF | + +#### Return + +_Data_ (N) + +| **Description** | **Value** | +| ---------------------- | --------- | +| Data read from address | 0 - 0xFF | + +### Reset Connection Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x302 | 0 | N/A | + +#### Description + +Clear all connection statistics. + +#### Return + +Status + +### VS TX Test + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------------------------------------------- | +| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | +| | +#### Description + +Start a TX test using a specific number of packets. + +#### Parameters + +_RF Channel_ (1 Byte): + +| **Description** | **Value** | +| ------------------------- | --------- | +| RF channel to transmit on | 0 – 39 | +| | + +_Packet Length_ (1 Byte): + +| **Description** | **Value** | +| -------------------------------- | --------- | +| Number of bytes in single packet | 0 - 255 | +| | + +_Packet Type (1 Byte)_ + +| **Description** | **Value** | +| ------------------------- | --------- | +| PRBS9 | 0x00 | +| 00001111'b packet payload | 0x01 | +| 01010101'b packet payload | 0x02 | +| PRBS15 | 0x03 | +| 11111111'b packet payload | 0x04 | +| 00000000'b packet payload | 0x05 | +| 11110000'b packet payload | 0x06 | +| 10101010'b packet payload | 0x07 | +| | + +_PHY (1 Byte)_ + +| **Description** | **Value** | +| ----------------- | --------- | +| 1M | 0x01 | +| 2M | 0x02 | +| Coded Unspecified | 0x03 | +| Coded S8 | 0x04 | +| Coded S2 | 0x05 | +| | + +_Num Packets (2 Bytes)_ + +| **Description** | **Value** | +| ---------------------------------------------- | ---------- | +| Number of packets to send over courser of test | 0 - 0xFFFF | + +#### Return + +Status + +### VS End Test + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x304 | 0 | N/A | +| | +#### Description + +End current DTM test and return all test stats. + +#### Return + +_TX Data (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------- | ---------- | +| Number of packets transmitted | 0 - 0xFFFF | +| | + +_RX Data Ok_(2 Bytes) + +| **Description** | **Value** | +| ----------------------------- | ---------- | +| Number of packets received ok | 0 – 0xFFFF | +| | + +_RX Data CRC_ (2 Bytes) + +| **Description** | **Value** | +| ------------------------------------------- | ---------- | +| Number of packets received with a CRC error | 0 - 0xFFFF | +| | + +_RX Data Timeout_ (2 Bytes) + +| **Description** | **Value** | +| ---------------------------------------------- | ---------- | +| Number of timeouts waiting to receive a packet | 0 - 0xFFFF | +| | + +### Set Scan Channel Map + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x301 | 1 | Channel Map | +| | + +**Description** + +Set channel map to scan on + +#### Parameters + +_Channel Map (1 Byte):_ + +| **Description** | **Value** | +| ------------------------ | --------- | +| Channel map used to scan | 0 – 0xFF | +| | +#### Return + +Status + +### Set Event Mask + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E1 | 5 | Mask, Enable | +| | + + +#### Description + +Enables/Disabled events the controller will flag + +**Parameters** + +_Mask (4 Bytes):_ + +| **Description** | **Value** | +| -------------------------------- | ------------------------ | +| Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | +| | + + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Enable ACL Sink + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E3 | 1 | Enable | +| | + + +#### Description + +Enables/Disables asynchronous connection-oriented logical transport. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Generate ACL + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------- | +| 0x3E4 | 5 | Handle, Packet Length, Num Packets | +| | + + +#### Description + +Generate ACL for a specified connection. + +**Parameters** + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Packet Length (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | -------------------- | +| Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | +| | + +MAX\_ACL\_LEN set at application layer by user. + +Num Packets (1 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ----------- | +| Number of packets to send in generated ACL | 0x00 – 0xFF | +| | + +#### Return + +Status + +### Enable Autogenerate ACL + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E3 | 1 | Enable | +| | + +#### Description + +Enable/Disable Autogenerate ACL + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + + +#### Return + +Status + +### Set TX Test Error Pattern + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E6 | 4 | Error Pattern | +| | + +#### Description + +Set pattern of errors for TX test mode. + +**Parameters** + +_Error Pattern (1 Byte):_ + +| **Description** | **Value** | +| ------------------------------- | ---------------- | +| 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | +| | + +#### Return + +Status + +### Set Connection Operational Flags + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | --------------------- | +| 0x3E7 | 7 | Handle, Flags, Enable | +| | + + +#### Description + +Enable/Disable connection operational flags for a given connection. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +MAX\_NUMBER\_CONNECTIONS set at application layer by user. + +_Flags (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------- | ---------------- | +| Flags to enable or disable | 0x0 – 0xFFFFFFFF | +| | + + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Set P-256 Private Key + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E8 | 32 | Private Key | +| | + + +#### Description + +Set P-256 private key or clear set private key. The private key will be used for generating key + +pairs and Diffie-Hellman keys until cleared. + +#### Parameters + +_Private Key (32 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------- | +| Clear Private Key | 0x00… | +| Private Key | 0x1 – 0xFF… | +| | + + +#### Return + +Status + +### Get channel map of periodic scan/adv + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | ----------------------------- | ----------- | +| 0x3DE | 3 | Advertising Handle, Adverting | Channel Map | +| | + +#### Description + +Get the channel map used for periodic scanning or advertising. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------------------- | +| Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + + +_Advertising (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Scanner | 0x00 | +| Advertiser | 0x01 | +| | + +#### Return + +_Channel Map (5 Bytes):_ + +| **Description** | **Value** | +| --------------- | -------------- | +| Channel Masks | {0x00-0xFF, …} | +| | + +### Get ACL Test Report + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3E9 | 0 | **N/A** | +| | + +#### Description + +Get ACL Test Report + +#### Return + +_RX ACL Packet Count (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------ | ---------------- | +| Number of ACL packets received | 0x0 – 0xFFFFFFFF | +| | + +_RX ACL Octet Count (4 Bytes):_ + +| **Description** | **Value** | +| ----------------------------- | ---------------- | +| Number of ACL octets received | 0x0 – 0xFFFFFFFF | +| | + + +_Generated ACL Packet Count (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ---------------- | +| Number of generated ACL packets | 0x0 – 0xFFFFFFFF | +| | + + +_Generated ACL Octet Count (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------ | ---------------- | +| Number of generated ACL octets | 0x0 – 0xFFFFFFFF | +| | + +### Set Local Minimum Number of Used Channels + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------------- | +| 0x3EA** | 3 | PHYs, Power Threshold, Min Used Channels | +| | + + +#### Description + +Set local minimum number of used channels. + +#### Parameters + +_PHYs (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| 1M | 0x1 | +| 2M | 0x2 | +| Coded | 0x3 | +| | + + +_Power Threshold (1 Byte, signed 8-Bit):_ + +| **Description** | **Value** | +| ----------------------- | --------- | +| Power Threshold for PHY | +/-127 | +| | + + +Min Used Channels (1 Byte) + +| **Description** | **Value** | +| ------------------------------- | --------- | +| Minimum number of used channels | 1 - 37 | +| | + + +#### Return + +Status + +### Get Peer Minimum Number of Used Channels + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ------------------------- | +| 0x3EB | 2 | Handle | 1M PHY, 2M PHY, Coded PHY | +| | + +#### Description + +Get peer minimum number of used channels. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +#### Return + +_1M PHY (1 Byte):_ + +| **Description** | **Value** | +| -------------------- | --------- | +| 1M min used channels | 1 - 37 | +| | + +_2M PHY (1 Byte):_ + +| **Description** | **Value** | +| -------------------- | --------- | +| 2M min used channels | 1 - 37 | +| | + +_Coded PHY (1 Byte):_ + +| **Description** | **Value** | +| ----------------------- | --------- | +| Coded min used channels | 1 – 37 | +| | + +### Set validate public key mode between ALT1 and ALT2 + +| **OCF** | **Length** | **Parameters** | +| --------- | ---------- | ----------------- | +| **0x3EC** | **1** | **Validate Mode** | +| | + + +#### Description + +Set mode used to validate public key. + +#### Parameters + +_Validate Mode (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| ALT2 | 0x0 | +| ALT1 | 0x1 | +| | + +#### Return + +Status + +### Set BD Address + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F0 | 6 | BD Address | +| | + + +#### Description + +Set the device address. + +#### Parameters + +_BD Address (6 Bytes):_ + +| **Description** | **Value** | +| --------------- | -------------- | +| Device Address | {0x00-0xFF, …} | +| | + + +#### Return + +Status + +### Get Random Address + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ---------- | +| 0x3F1 | 0 | N/A | BD Address | +| | +#### Description + +Get random device address. + +#### Return + +_BD Address (6 Bytes):_ + +| **Description** | **Value** | +| --------------- | -------------- | +| Device Address | {0x00-0xFF, …} | +| | +### Set Local Feature + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F2 | 8 | Local Features | +| | + + +#### Description + +Set local supported features. + +#### Parameters + +_Local Features (8 Bytes):_ + +| **Description** | **Value** | +| ---------------------- | ------------------------- | +| Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | +| | + + +#### Return + +Status + +### Set Operational Flags + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F3 | 5 | Flags, Enable | +| | + + +#### Description + +Enable Disable Operational Flags + +#### Parameters + +_Flags_ (4 Bytes): + +| **Description** | **Value** | +| -------------------------- | ---------------- | +| Flags to enable or disable | 0x0 – 0xFFFFFFFF | +| | + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Get PDU Filter Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F4 | 0 | N/A | +| | + +#### Description + +Get the accumulated PDU filter statistics. + +#### Return + +_Fail PDU Type Filter_ (2 Bytes): + +| **Description** | **Value** | +| -------------------------------------- | ------------ | +| Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | +| | + +_Pass PDU Type Filter_ (2 Bytes): + +| **Description** | **Value** | +| -------------------------------------- | ------------ | +| Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | +| | + +_Fail Whitelist Filter_ (2 Bytes): + +| **Description** | **Value** | +| --------------------------------------- | ------------ | +| Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | +| | + +_Pass Whitelist Filter_ (2 Bytes): + +| **Description** | **Value** | +| --------------------------------------- | ------------ | +| Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | +| | + +_Fail Peer Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of PDUS failing peer address match | 0x0 – 0xFFFF | +| | + +_Pass Peer Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of PDUs passing peer address match | 0x0 – 0xFFFF | +| | + +_Fail Local Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ------------ | +| Number of PDUS failing local address match | 0x0 – 0xFFFF | +| | + +_Pass local Address Match_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ------------ | +| Number of PDUs passing local address match | 0x0 – 0xFFFF | +| | + +_Fail Peer RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ---------------------------------------- | ------------ | +| Number of peer RPAs failing verification | 0x0 – 0xFFFF | +| | + +_Pass Peer RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ---------------------------------------- | ------------ | +| Number of peer RPAs passing verification | 0x0 – 0xFFFF | +| | + +_Fail Local RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of local RPAs failing verification | 0x0 – 0xFFFF | +| | + +_Pass Local RPA Verify_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of local RPAs passing verification | 0x0 – 0xFFFF | +| | + +_Fail Peer Private Address_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | +| Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | +| | + +_Fail Local Private Address_ (2 Bytes): + +| **Description** | **Value** | +| -------------------------------------------------------- | ------------ | +| Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | +| | + +_Fail Peer Address Res Req_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | +| Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | +| | + +_Pass Peer Address Res Req_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------------------- | ------------ | +| Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | +| | + +_Pass Local Address Res Opt._ (2 Bytes): +| **Description** | **Value** | +| -------------------------------------------------------- | ------------ | +| Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | +| | + +_Peer Res Address Pend_ (2 Bytes): + +| **Description** | **Value** | +| ----------------------------------------- | ------------ | +| Number of peer address resolutions pended | 0x0 – 0xFFFF | +| | + +_Local Res Address Pend_ (2 Bytes): + +| **Description** | **Value** | +| ------------------------------------------ | ------------ | +| Number of local address resolutions pended | 0x0 – 0xFFFF | +| | +### Set Advertising TX Power + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ---------- | +| 0x3F5 | 1 | Power | Status | +| | +#### Description + +Set the TX power used for advertising. + +#### Parameters + +_Power (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Power | -15 - 6 | +| | + + +#### Return + +Status + +### Set Connection TX Power + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | ---------- | +| 0x3F6 | 1 | Power | Status | +| | +#### Description + +Set the TX power used for connections. + +#### Parameters + +_Power (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Power | -15 - 6 | +| | + + +#### Return + +Status + +### Set Encryption Mode + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------------------- | +| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | +| | + + +#### Description + +Set encryption mode for a given connection. + +#### Parameters + +_Enable Auth (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +#### Return + +Status + +### Set Channel Map + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------- | +| 0x3F8 | 6 | Handle, Channel Map | +| | + + +#### Description + +Set the channel map + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +_Channel Map (4 Bytes):_ + +| **Description** | **Value** | +| --------------- | ----------------- | +| Channel Map | 0x00 – 0xFFFFFFFF | +| | + +#### Return + +Status + +### Set Diagnostic Mode + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3F9 | 1 | Enable | +| | + + +#### Description + +Enable/Disable PAL System Assert Trap + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + + +#### Return + +Status + +### Enable Sniffer Packet Forwarding + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3CD | 1 | Enable | +| | + + +#### Description + +Enable/Disable sniffer packet forwarding. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x0 | +| Enable | 0x1 | +| | + + +#### Return + +Status + +### Get Memory Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FA | 0 | N/A | +| | + +#### Description + +Read memory and system statistics. + +#### Return + +_Stack Usage (2 Byte):_ + +| **Description** | **Value** | +| ----------------------------- | ------------ | +| Number of bytes used by stack | 0x0 – 0xFFFF | +| | + + +_Sys Assert Count (2 Byte):_ + +| **Description** | **Value** | +| ------------------------------ | ------------ | +| Number of times assertions hit | 0x0 – 0xFFFF | +| | + +_Free Memory (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------- | ---------------- | +| Memory free for stack usage | 0x0 – 0xFFFFFFFF | +| | + +_Used Memory (4 Bytes):_ + +| **Description** | **Value** | +| -------------------- | ----------------- | +| Memory used by stack | 0x00 – 0xFFFFFFFF | +| | + +_Max Connections (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ------------------------------- | +| Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | +| | + +_Connection Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| Number of bytes used for connection context | 0x00 – 0xFFFF | +| | + +_CS Watermark Level (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ------------- | +| Critical section watermark duration in microseconds | 0x00 – 0xFFFF | +| | + +_LL Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| ------------------------------------------ | ------------- | +| LL handler watermark level in microseconds | 0x00 – 0xFFFF | +| | + +_Sch Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| ------------------------------------------------- | ------------- | +| Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | +| | + +_LHCI Handler Watermark Level (2 Byte):_ + +| **Description** | **Value** | +| -------------------------------------------- | ------------- | +| LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | +| | + +_Max Adv Sets (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ------------- | +| Maximum number of advertising sets | 0x00 – 0xFFFF | +| | + +_Adv Set Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------- | ------------- | +| Size of advertising set context in bytes | 0x00 – 0xFFFF | +| | + +_Ext Scan Max (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ------------ | +| Maximum number of extended scanners | 0x0 – 0xFFFF | + +_Ext Scan Context Size (2 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ------------- | +| Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | +| | + +_Max Num Extended Init (2 Bytes):_ + +| **Description** | **Value** | +| -------------------------------------- | ------------- | +| maximum number of extended initiators. | 0x00 – 0xFFFF | +| | + +_Ext Init Context Size (2 Byte):_ + +| **Description** | **Value** | +| ----------------------------------------------------- | ------------- | +| Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | +| | +_Max Periodic Scanners (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ----------- | +| Maximum number of periodic scanners | 0x00-0xFFFF | +| | + +_Periodic Scanners Context Size(2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------ | ----------- | +| Context size of periodic scanners in bytes | 0x00-0xFFFF | +| | + +_Max CIG (2 Bytes):_ + +| **Description** | **Value** | +| --------------------- | ----------- | +| Maximum number of CIG | 0x00-0xFFFF | +| | + +_CIG Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------- | ----------- | +| Context size of CIG in bytes | 0x00-0xFFFF | +| | +_Max CIS (2 Bytes):_ + +| **Description** | **Value** | +| --------------------- | ----------- | +| Maximum number of CIS | 0x00-0xFFFF | +| | + + +_CIS Context Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------------------- | ----------- | +| Context size of CIS in bytes | 0x00-0xFFFF | +| | +### Get Advertising Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FB | 0 | N/A | +| | +#### Description + +Get the accumulated adverting stats. + +#### Return + +_TX ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX Req (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------------------- | ----------------- | +| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | +| | + + +_RX Req CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX Req Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_TX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ----------------- | +| Number of sent response packets | 0x00 – 0xFFFFFFFF | +| | + + +_Err ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------- | ----------------- | +| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +### Get Scan Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FC | 0 | N/A | +| | +#### Description + +Get the statistics captured during scanning. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | +| | + + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------ | ----------------- | +| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------- | ----------------- | +| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_TX Req (4 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ----------------- | +| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | +| | + + +_RX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------ | ----------------- | +| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | +| | + + +_RX RSP CRC (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------------- | ----------------- | +| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX RSP Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------ | ----------------- | +| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +| | + + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ----------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | + + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ----------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ----------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ----------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | +| | +### Get Connection Stats + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FD | 0 | N/A | +| | +#### Description + +Get the statistics captured during connection. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| | + + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------- | ----------------- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| | + + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + + +### Get Test Stats + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | --------------------------------- | +| 0x3FE | 0 | N/A | Test stats in order as documented | +| | +#### Description + +Get the statistics captured during test mode. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| | + + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| | + + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------- | ----------------- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| | + + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + +### Get Pool Stats + +| **OCF** | **Length** | **Parameters** | **Return** | +| ------- | ---------- | -------------- | --------------------------------- | +| 0x3FF | 0 | N/A | Pool stats in order as documented | +| | + +#### Description + +Get the memory pool statistics captured during runtime. + +**NOTE:** The flag _WSF\_BUF\_STATS_ must be defined to _TRUE_ at compile time + +#### Return + +_Num Pool (1 Bytes):_ + +| **Description** | **Value** | +| ----------------------- | ----------- | +| Number of pools defined | 0x00 – 0xFF | +| | + +**Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). + +_Buf Size (2 Bytes):_ + +| **Description** | **Value** | +| ---------------- | ------------- | +| Pool Buffer Size | 0x00 – 0xFFFF | +| | + +_Num Buf (1 Byte):_ + +| **Description** | **Value** | +| ----------------------- | ----------- | +| Total Number of buffers | 0x00 – 0xFF | +| | + + +_Num Alloc (1 Byte):_ + +| **Description** | **Value** | +| --------------------------------- | ----------- | +| Number of outstanding allocations | 0x00 – 0xFF | +| | + +_Max Alloc (1 Byte):_ + +| **Description** | **Value** | +| ------------------------- | ----------- | +| High allocation watermark | 0x00 – 0xFF | +| | + + +_Max Req Len (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ------------- | +| Maximum requested buffer length | 0x00 – 0xFFFF | +| | + + +### Set Additional AuxPtr Offset + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D0 | 5 | Delay, Handle | +| | + + +#### Description + +Set auxiliary packet offset delay. + +#### Parameters + +_Delay (4 Bytes):_ + +| **Description** | **Value** | +| --------------------- | ---------------- | +| Disable | 0x00 | +| Delay in microseconds | 0x1 – 0xFFFFFFFF | +| | + +_Handle (1 Byte):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +#### Return + +Status + +### Set Extended Advertising Data Fragmentation + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------- | +| 0x3D1 | 2 | Handle, Frag Length | +| | + + +#### Description + +Set the extended advertising fragmentation length. + +#### Parameters + +_Handle (1 Bytes):_ + +| **Description** | **Value** | +| ------------------ | ----------------------------- | +| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + + +_Frag Length (1 Bytes):_ + +| **Description** | **Value** | +| -------------------- | --------- | +| Fragmentation Length | 0x00-0xFF | + +#### Return + +Status + +### Set Extended Advertising PHY Options + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------------------------ | +| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | +| | + + +#### Description + +Set extended advertising PHY options + +#### Parameters + +_Handle (1 Byte):_ + +| **Description** | **Value** | +| ------------------ | ----------------------------- | +| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + +_Primary Opt. (1 Byte):_ + +| **Description** | **Value** | +| ---------------------------------------- | --------- | +| Primary advertising channel PHY options. | 0x00-0xFF | + +_Secondary Opt. (1 Byte):_ + +| **Description** | **Value** | +| ------------------------------------------ | --------- | +| Secondary advertising channel PHY options. | 0x00-0xFF | + +#### Return + +Status + +### Set extended Advertising Default PHY Options + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D3 | 1 | PHY Opt. | +| | + + +#### Description + +Set the default TX PHY options for extended adv slave primary and secondary channel. + +#### Parameters + +_PHY Opt. (1 Byte):_ + +| **Description** | **Value** | +| --------------- | ----------- | +| PHY Options | 0x00 – 0xFF | +| | + +#### Return + +Status + +### Generate ISO Packets + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ---------------------------------- | +| 0x3D5 | 5 | Handle, Packet Length, Num Packets | +| | + +#### Description + +Generate ISO packets. + +#### Parameters + +_Handle (2 Byte):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +| | + +_Packet Length (2 Byte):_ + +| **Description** | **Value** | +| --------------- | ----------- | +| Packet Length | 0x00-0xFFFF | +| | + +_Num Packets (1 Byte):_ + +| **Description** | **Value** | +| ----------------- | --------- | +| Number of packets | 0x00-0xFF | +| | +#### Return + +Status + +### Get ISO Test Report + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------------------------------------------------------------------------- | +| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count | +| | + +#### Description + +Get statistics captured during ISO test. + +#### Return + +_RX ISO Packet Count (4 Byte):_ + +| **Description** | **Value** | +| ------------------------ | ----------------- | +| Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | +| | + +_RX ISO Octet Count (4 Byte):_ + +| **Description** | **Value** | +| ----------------------- | ----------------- | +| Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | +| | + +_Generate Packet Count (4 Byte):_ + +| **Description** | **Value** | +| ------------------------- | ----------------- | +| Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | +| | + +_Generate Octet Count (4 Byte):_ + +| **Description** | **Value** | +| ------------------------ | ----------------- | +| Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | +| | + +### Enable ISO Packet Sink + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D7 | 1 | Enable | +| | + +#### Description + +Enable/Disable ISO packet sink. + +#### Parameters + +_Enable (1 Byte):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Disable | 0x00 | +| Enable | 0x01 | +| | + +#### Return + +Status + +### Enable Autogenerate ISO Packets + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D8 | 2 | Packet Length | +| | + +#### Description + +Enable autogenerate ISO packets. + +#### Parameters + +_Packet Length (2 Bytes):_ + +| **Description** | **Value** | +| --------------- | ------------- | +| Disable | 0x00 | +| Length | 0x01 – 0xFFFF | +| | + +#### Return + +Status + +### Get ISO Connection Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3D9 | 0 | N/A | +| | +#### Description + +Get statistics captured during ISO connection. + +#### Return + +_RX Data (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------- | ----------------- | +| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +| | + +_RX Data CRC (4 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------------- | ----------------- | +| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Data Timeout (4 Bytes)_ + +| **Description** | **Value** | +| -------------------------------------------------- | ----------------- | +| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | +| | + +_TX Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------- | ----------------- | +| Number of sent data packets | 0x00 - 0xFFFFFFFF | +| | + +_Err Data (4 Bytes)_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of data transaction errors | 0x00 - 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_TX Setup (2 Bytes)_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | +| | + +_RX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | + + +_TX ISR (2 Bytes)_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +| | +### Get Auxiliary Advertising Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3DA | 0 | N/A | +| | +#### Description + +Get accumulated auxiliary advertising stats. + +#### Return + +_TX ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX Req (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------------------- | ----------------- | +| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | +| | + +_RX Req CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| | + +_RX Req Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_TX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------- | ----------------- | +| Number of sent response packets | 0x00 – 0xFFFFFFFF | +| | + +_TX Chain (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------- | ----------------- | +| Number of sent chain packets | 0x00 – 0xFFFFFFFF | +| | + +_Err ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------------- | ----------------- | +| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +### Get Auxiliary Scanning Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3DB | 0 | N/A | +| | +#### Description + +Get accumulated auxiliary scanning statistics. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| ---------------------------------- | ----------------- | +| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------- | ----------------- | +| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +| | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------- | ----------------- | +| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + +_TX REQ (4 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------- | ----------------- | +| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | +| | + +_RX RSP (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------ | ----------------- | +| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | +| | + +_RX RSP CRC (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------------- | ----------------- | +| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +| | + +_RX RSP Timeout (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------------------ | ----------------- | +| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | +| | + + +_RX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------- | ----------------- | +| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | +| | + + +_RX Chain CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------ | ----------------- | +| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX Chain Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +| | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +| | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +| | + + +### Get Periodic Scanning Statistics + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3DC | 0 | N/A | + +#### Description + +Get accumulated periodic scanning statistics. + +#### Return + +_RX ADV (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | +| | + +_RX ADV CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------------ | ----------------- | +| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX ADV Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------------- | ----------------- | +| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_RX Chain (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------- | ----------------- | +| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | + +_RX Chain CRC (4 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------------ | ----------------- | +| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +_RX Chain Timeout (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------------------------- | ----------------- | +| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +_Err Scan (4 Bytes):_ + +| **Description** | **Value** | +| --------------------------------- | ----------------- | +| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | + +_RX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +_TX Setup (2 Bytes):_ + +| **Description** | **Value** | +| ----------------------------------------- | ------------- | +| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +_RX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +_TX ISR (2 Bytes):_ + +| **Description** | **Value** | +| ------------------------------------------- | ------------- | +| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +### Set Connection PHY TX Power + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | ------------------ | +| 0x3DD | 4 | Handle, Level, PHY | + +#### Description + +Set power level during a connection for a given PHY. + +#### Parameters + +_Handle (2 Bytes):_ + +| **Description** | **Value** | +| ----------------- | ----------------------------- | +| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +_Level (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| Power Level | -15 - 6 | +| | + +_PHY (1 Byte, Signed 8-Bit):_ + +| **Description** | **Value** | +| --------------- | --------- | +| 1M | 0x00 | +| 2M | 0x01 | +| Coded | 0x02 | +| | + + +#### Return + +Status \ No newline at end of file From 3b1a1354a0f139dfb385aa01dceb187f7f84a396 Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Tue, 28 Nov 2023 15:48:10 -0600 Subject: [PATCH 09/18] added HCI to main cordio page --- Libraries/Cordio/docs/CORDIO_USERGUIDE.md | 3 +++ .../Cordio/docs/{ => Tooling}/HOST_CONTROLLER_INTERFACE.md | 0 2 files changed, 3 insertions(+) rename Libraries/Cordio/docs/{ => Tooling}/HOST_CONTROLLER_INTERFACE.md (100%) diff --git a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md index 5ce2e56b4a3..129967d6f6d 100644 --- a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md +++ b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md @@ -305,6 +305,9 @@ Documentation for each of the supporting applications can be found below: - [BLE Periph](Applications/BLE_periph.md) - [RF Test](Applications/RF_Test.md) +### Test and Toolkits +- [HCI](Tooling/HOST_CONTROLLER_INTERFACE.md) + ## Certification Bluetooth LE Mesh solution implementing the Bluetooth Mesh Profile 1.0 and the Bluetooth Mesh Model 1.0 wireless technical specifications diff --git a/Libraries/Cordio/docs/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md similarity index 100% rename from Libraries/Cordio/docs/HOST_CONTROLLER_INTERFACE.md rename to Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md From dd1e520951e4787b8866fdc3a71097b0833a0549 Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Tue, 28 Nov 2023 18:15:20 -0600 Subject: [PATCH 10/18] Fix some formatting errors --- .../Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md index 9975d5b6abd..0a4a4b8d267 100644 --- a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md +++ b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md @@ -9,6 +9,7 @@ All contents in the packets are formatted little endian unless stated otherwise ## Packet Types + | Packet | Packet Type | | ---------- | ----------- | | Command | 0x01 | @@ -17,6 +18,7 @@ All contents in the packets are formatted little endian unless stated otherwise | Event | 0x04 | ### Command Type + The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. Here is a general overview of the HCI command packet structure: @@ -32,7 +34,9 @@ Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field Below is an example of the BLE standard command for reset RESET +
+ | OGF | OCF | Paramters | | --- | --- | ---------- | | 0x3 | 0x3 | Length = 0 | @@ -46,16 +50,21 @@ Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} Note the little endian format of the opcode. ### Async Data Type + The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. + | Handle (12 Bits) | PB Flag (2 Bits) | BC Flag (2 Bits) | Total Length (2 Bytes) | Data (Total Length) | | ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | | 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | ### Sync Data + This synchronous data packet is not used in BLE. ### Event Data + The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: + | Type (1 Byte) | Event Code (2 Bytes) | Event Params (N Bytes) | | ------------- | -------------------- | ---------------------- | | 0x04 | 0xXX | ... | @@ -152,6 +161,7 @@ Status | ------- | ---------- | --------------------------------------------------- | | 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | | | + #### Description Start a TX test using a specific number of packets. @@ -213,6 +223,7 @@ Status | ------- | ---------- | -------------- | | 0x304 | 0 | N/A | | | + #### Description End current DTM test and return all test stats. @@ -266,6 +277,7 @@ _Channel Map (1 Byte):_ | ------------------------ | --------- | | Channel map used to scan | 0 – 0xFF | | | + #### Return Status From 0b5884140d146ced23a45a4dbb6ce084a8fdcb0e Mon Sep 17 00:00:00 2001 From: EricB-ADI <122300463+EricB-ADI@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:49:46 -0600 Subject: [PATCH 11/18] made small changes --- .../docs/Tooling/HOST_CONTROLLER_INTERFACE.md | 32 +++++++++++------- .../Cordio/docs/res/async-data-packet.png | Bin 0 -> 19040 bytes Libraries/Cordio/docs/res/command-packet.png | Bin 0 -> 41159 bytes Libraries/Cordio/docs/res/event-packet.png | Bin 0 -> 55456 bytes 4 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 Libraries/Cordio/docs/res/async-data-packet.png create mode 100644 Libraries/Cordio/docs/res/command-packet.png create mode 100644 Libraries/Cordio/docs/res/event-packet.png diff --git a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md index 0a4a4b8d267..420a9f7b5e8 100644 --- a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md +++ b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md @@ -17,7 +17,7 @@ All contents in the packets are formatted little endian unless stated otherwise | Sync Data | 0x03 | | Event | 0x04 | -### Command Type +### Command Packet The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. @@ -29,7 +29,9 @@ Here is a general overview of the HCI command packet structure: Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) -**Opcode** = (OGF << 10) | OCF +``` +Opcode = (OGF << 10) | OCF +``` Below is an example of the BLE standard command for reset @@ -41,15 +43,17 @@ RESET | --- | --- | ---------- | | 0x3 | 0x3 | Length = 0 | +``` Type = 0x1 Opcode = (0x3 << 10) | 0x3 = 0x0C03 Parmeters = 0 Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} +``` -Note the little endian format of the opcode. +**Note the little endian format of the opcode** -### Async Data Type +### Async Data Packet The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. @@ -57,11 +61,11 @@ The asynchronous data packet is comprised of the connection handle, fragmentatio | ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | | 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | -### Sync Data +### Sync Data Packet This synchronous data packet is not used in BLE. -### Event Data +### Event Data Packet The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: @@ -81,13 +85,15 @@ NOTE: All data parameters and return values are returned little endian formatted ### Write Memory +Write N bytes to a specified 32-bit address. + +Returns the Status + + | **OCF** | **Length** | **Parameters** | **Return** | | ------- | ---------------------------------------------- | --------------- | ---------- | -| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address | Status | +| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address, Byte1, Byte2,...,ByteN | Status | | | -#### Description - -Write N bytes to a specified 32-bit address. #### Parameters @@ -104,12 +110,13 @@ _Address_ (4 Bytes): | Address to write data to | 0 - 0xFFFFFFFF | | | -#### Return -Status + ### Read Memory +Read memory from a specified 32-bit address. + | **OCF** | **Length** | **Parameters** | | ------- | ---------- | --------------- | | 0x301 | 5 | Length, Address | @@ -117,7 +124,6 @@ Status #### Description -Read memory from a specified 32-bit address. #### Parameters diff --git a/Libraries/Cordio/docs/res/async-data-packet.png b/Libraries/Cordio/docs/res/async-data-packet.png new file mode 100644 index 0000000000000000000000000000000000000000..233c41b1a76771bbd9d48016bbb3632fe0ec61f1 GIT binary patch literal 19040 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 a`w=TgtMLif!M^aHh81K~rRycl!u~HB&=;%# literal 0 HcmV?d00001 diff --git a/Libraries/Cordio/docs/res/command-packet.png b/Libraries/Cordio/docs/res/command-packet.png new file mode 100644 index 0000000000000000000000000000000000000000..1b725312a6d1e7a79a1548c93153dbaa9763b9b9 GIT binary patch literal 41159 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

qSJO|DcS|WE@CfjqhZ=@ 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 literal 0 HcmV?d00001 diff --git a/Libraries/Cordio/docs/res/event-packet.png b/Libraries/Cordio/docs/res/event-packet.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f9a158640d7eca691532b69a7630e4a64ee524 GIT binary patch literal 55456 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 Date: Thu, 7 Dec 2023 19:16:17 -0600 Subject: [PATCH 12/18] Update formatting --- .../docs/Tooling/HOST_CONTROLLER_INTERFACE.md | 2782 ++++++++--------- 1 file changed, 1293 insertions(+), 1489 deletions(-) diff --git a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md index 420a9f7b5e8..ff8a28645bf 100644 --- a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md +++ b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md @@ -3,10 +3,6 @@ The Host Controller Interface (HCI) is the common point where devices are split. # Packets All contents in the packets are formatted little endian unless stated otherwise -
- - - ## Packet Types @@ -37,8 +33,6 @@ Below is an example of the BLE standard command for reset RESET -
- | OGF | OCF | Paramters | | --- | --- | ---------- | | 0x3 | 0x3 | Length = 0 | @@ -75,10 +69,10 @@ The structure of an HCI asynchronous event packet typically consists of an HCI e -# Vendor Specific Commands +## Vendor Specific Commands **OGF** : 0x3F -
+ **MAX\_NUMBER\_CONNECTIONS**: set at application layer by user. NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. @@ -87,2285 +81,2095 @@ NOTE: All data parameters and return values are returned little endian formatted Write N bytes to a specified 32-bit address. -Returns the Status +Packet type: Command Packet + +| **OGF** | **OCF** | ** Length (bytes) ** | * *Parameters** | **Return** | +| ------- | ------- | ------------------- | ----------------- | ---------- | +| 0x3F | 0x300 | 5 + N | {Length, Address} | Status | +_where N is the number of bytes to write_ -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------------------------------------------- | --------------- | ---------- | -| 0x300 | 5 + N, where N is the number of bytes to write | Length, Address, Byte1, Byte2,...,ByteN | Status | -| | +#### Parameters (Write Memory) -#### Parameters +- _Length_ : -_Length_ (1 Byte): + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Number of bytes to write to address | `0 – 0xFF` | -| **Description** | **Value** | -| ----------------------------------- | --------- | -| Number of bytes to write to address | 0 – 0xFF | -| | -_Address_ (4 Bytes): +- _Address_ : Address to read data from -| **Description** | **Value** | -| ------------------------ | -------------- | -| Address to write data to | 0 - 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Address to write data to | `0 - 0xFFFFFFFF` | +#### Return (Write Memory) +Returns a status byte. +--- ### Read Memory Read memory from a specified 32-bit address. -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------- | -| 0x301 | 5 | Length, Address | -| | +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | --------------------------- | ----------------- | ---------- | +| 0x3F | 0x301 | 5 | {Length, Address} | Data (N) | +#### Parameters (Read Memory) -#### Parameters +- _Length_ : -_Length_ (1 Byte): + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Number of bytes to read from address | `0 – 0xFF` | -| **Description** | **Value** | -| ----------------------------------- | --------- | -| Number of bytes to write to address | 0 – 0xFF | +- _Address_ : Address to read data from -_Address_ (4 Bytes): + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Address to read data from | `0 - 0xFFFFFFFF` | -| **Description** | **Value** | -| ------------------------ | -------------- | -| Address to write data to | 0 - 0xFFFFFFFF | +#### Return (Read Memory) -#### Return +- _Data_ (N) : -_Data_ (N) + | **Description** | **Value** | + | ----------------------------------------- | ---------------- | + | _N_ bytes read from the specified address | {`0 - 0xFF`,...} | -| **Description** | **Value** | -| ---------------------- | --------- | -| Data read from address | 0 - 0xFF | +--- ### Reset Connection Stats -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x302 | 0 | N/A | +Clear all connection statistics. -#### Description +- Packet type: [Command Packet](#command-packet) -Clear all connection statistics. +| **OGF** | **OCF** | ** Param. Length (bytes) ** | **Parameters** | +| ------- | ------- | ------------------------- | --------------- | +| 0x3F | 0x302 | 0 | N/A | -#### Return +#### Return (Reset Connection Stats) + +Returns a status byte. -Status +--- ### VS TX Test -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------------------------------------------- | -| 0x303 | 6 | RF Channel, Packet Length, Packet Type, Num Packets | -| | +Start a TX test using a specific number of packets. + +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------------------------------------------- | ---------- | +| 0x3F | 0x303 | 6 | {RF Channel, Packet Length, Packet Type, PHY, Num Packets} | Status | -Start a TX test using a specific number of packets. +#### Parameters (VS TX Test) -#### Parameters +- _RF Channel (1 Byte):_ -_RF Channel_ (1 Byte): + | **Description** | **Value** | + | ------------------------- | --------- | + | RF channel to transmit on | 0 – 39 | -| **Description** | **Value** | -| ------------------------- | --------- | -| RF channel to transmit on | 0 – 39 | -| | +- _Packet Length (1 Byte):_ -_Packet Length_ (1 Byte): + | **Description** | **Value** | + | -------------------------------- | --------- | + | Number of bytes in a single packet | 0 - 255 | -| **Description** | **Value** | -| -------------------------------- | --------- | -| Number of bytes in single packet | 0 - 255 | -| | +- _Packet Type (1 Byte):_ -_Packet Type (1 Byte)_ + | **Description** | **Value** | + | ------------------------- | --------- | + | PRBS9 | 0x00 | + | 00001111'b packet payload | 0x01 | + | 01010101'b packet payload | 0x02 | + | PRBS15 | 0x03 | + | 11111111'b packet payload | 0x04 | + | 00000000'b packet payload | 0x05 | + | 11110000'b packet payload | 0x06 | + | 10101010'b packet payload | 0x07 | -| **Description** | **Value** | -| ------------------------- | --------- | -| PRBS9 | 0x00 | -| 00001111'b packet payload | 0x01 | -| 01010101'b packet payload | 0x02 | -| PRBS15 | 0x03 | -| 11111111'b packet payload | 0x04 | -| 00000000'b packet payload | 0x05 | -| 11110000'b packet payload | 0x06 | -| 10101010'b packet payload | 0x07 | -| | +- _PHY (1 Byte):_ -_PHY (1 Byte)_ + | **Description** | **Value** | + | ----------------- | --------- | + | 1M | 0x01 | + | 2M | 0x02 | + | Coded Unspecified | 0x03 | + | Coded S8 | 0x04 | + | Coded S2 | 0x05 | -| **Description** | **Value** | -| ----------------- | --------- | -| 1M | 0x01 | -| 2M | 0x02 | -| Coded Unspecified | 0x03 | -| Coded S8 | 0x04 | -| Coded S2 | 0x05 | -| | +- _Num Packets (2 Bytes):_ -_Num Packets (2 Bytes)_ + | **Description** | **Value** | + | ---------------------------------------------- | ---------- | + | Number of packets to send over the course of the test | 0 - 0xFFFF | -| **Description** | **Value** | -| ---------------------------------------------- | ---------- | -| Number of packets to send over courser of test | 0 - 0xFFFF | +#### Return (VS TX Test) -#### Return +Returns a status byte. -Status +--- ### VS End Test -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x304 | 0 | N/A | -| | +End the current DTM test and return all test stats. -#### Description +- Packet type: [Command Packet](#command-packet) -End current DTM test and return all test stats. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | -------------- | +| 0x3F | 0x304 | 0 | N/A | {TX Data, RX Data Ok, RX Data CRC, RX Data Timeout} | -#### Return +#### Return (VS End Test) + +- _TX Data (2 Bytes)_ : Number of packets transmitted -_TX Data (2 Bytes)_ + | **Description** | **Value** | + | ----------------------------- | ---------- | + | Number of packets transmitted | 0 - 0xFFFF | -| **Description** | **Value** | -| ----------------------------- | ---------- | -| Number of packets transmitted | 0 - 0xFFFF | -| | +- _RX Data Ok (2 Bytes)_ : Number of packets received ok -_RX Data Ok_(2 Bytes) + | **Description** | **Value** | + | ----------------------------- | ---------- | + | Number of packets received ok | 0 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------- | ---------- | -| Number of packets received ok | 0 – 0xFFFF | -| | +- _RX Data CRC (2 Bytes)_ : Number of packets received with a CRC error -_RX Data CRC_ (2 Bytes) + | **Description** | **Value** | + | ------------------------------------------- | ---------- | + | Number of packets received with a CRC error | 0 - 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ---------- | -| Number of packets received with a CRC error | 0 - 0xFFFF | -| | +- _RX Data Timeout (2 Bytes)_ : Number of timeouts waiting to receive a packet -_RX Data Timeout_ (2 Bytes) + | **Description** | **Value** | + | ---------------------------------------------- | ---------- | + | Number of timeouts waiting to receive a packet | 0 - 0xFFFF | -| **Description** | **Value** | -| ---------------------------------------------- | ---------- | -| Number of timeouts waiting to receive a packet | 0 - 0xFFFF | -| | +--- ### Set Scan Channel Map -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x301 | 1 | Channel Map | -| | +Set the channel map to scan on. -**Description** +- Packet type: [Command Packet](#command-packet) -Set channel map to scan on +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x301 | 1 | Channel Map | Status | -#### Parameters +#### Parameters (Set Scan Channel Map) -_Channel Map (1 Byte):_ +- _Channel Map (1 Byte):_ -| **Description** | **Value** | -| ------------------------ | --------- | -| Channel map used to scan | 0 – 0xFF | -| | + | **Description** | **Value** | + | ------------------------ | --------- | + | Channel map used to scan | 0 – 0xFF | -#### Return +#### Return (Set Scan Channel Map) + +Returns a status byte. -Status +--- ### Set Event Mask -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E1 | 5 | Mask, Enable | -| | +Enables or disables events the controller will flag. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E1 | 5 | {Mask, Enable} | Status | -Enables/Disabled events the controller will flag +#### Parameters (Set Event Mask) -**Parameters** +- _Mask (4 Bytes):_ -_Mask (4 Bytes):_ + | **Description** | **Value** | + | -------------------------------- | ------------------------ | + | Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | -| **Description** | **Value** | -| -------------------------------- | ------------------------ | -| Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | -| | +- _Enable (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | -_Enable (1 Byte):_ +#### Return (Set Event Mask) -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | +Returns a status byte. -#### Return +--- -Status ### Enable ACL Sink -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E3 | 1 | Enable | -| | +Enables or disables asynchronous connection-oriented logical transport. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E3 | 1 | {Enable} | Status | -Enables/Disables asynchronous connection-oriented logical transport. +#### Parameters (Enable ACL Sink) -#### Parameters +- _Enable (1 Byte):_ -_Enable (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | +#### Return (Enable ACL Sink) -#### Return +Returns a status byte. -Status +--- ### Generate ACL -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------- | -| 0x3E4 | 5 | Handle, Packet Length, Num Packets | -| | +Generate ACL for a specified connection. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ----------------------------------- | ---------- | +| 0x3F | 0x3E4 | 5 | {Handle, Packet Length, Num Packets} | Status | -Generate ACL for a specified connection. +#### Parameters (Generate ACL) -**Parameters** +- _Handle (2 Bytes):_ -_Handle (2 Bytes):_ + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | + MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. +- _Packet Length (2 Bytes):_ -MAX\_NUMBER\_CONNECTIONS set at application layer by user. + | **Description** | **Value** | + | --------------------------------- | -------------------- | + | Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | -_Packet Length (2 Bytes):_ + MAX\_ACL\_LEN set at the application layer by the user. -| **Description** | **Value** | -| --------------------------------- | -------------------- | -| Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | -| | +- _Num Packets (1 Byte):_ -MAX\_ACL\_LEN set at application layer by user. + | **Description** | **Value** | + | ------------------------------------------ | ----------- | + | Number of packets to send in generated ACL | 0x00 – 0xFF | -Num Packets (1 Bytes): +#### Return (Generate ACL) -| **Description** | **Value** | -| ------------------------------------------ | ----------- | -| Number of packets to send in generated ACL | 0x00 – 0xFF | -| | +Returns a status byte. -#### Return +--- -Status ### Enable Autogenerate ACL -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E3 | 1 | Enable | -| | +Enable or disable Autogenerate ACL. -#### Description +- Packet type: [Command Packet](#command-packet) -Enable/Disable Autogenerate ACL +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E3 | 1 | {Enable} | Status | -#### Parameters +#### Parameters (Enable Autogenerate ACL) -_Enable (1 Byte):_ +- _Enable (1 Byte):_ -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | +#### Return (Enable Autogenerate ACL) -#### Return +- _Status (1 Byte)_ : Status of the Enable Autogenerate ACL command execution. -Status + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -### Set TX Test Error Pattern +--- -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E6 | 4 | Error Pattern | -| | +### Set TX Test Error Pattern -#### Description +Set the pattern of errors for the TX test mode. -Set pattern of errors for TX test mode. +- Packet type: [Command Packet](#command-packet) -**Parameters** +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E6 | 4 | {Error Pattern} | Status | -_Error Pattern (1 Byte):_ +#### Parameters (Set TX Test Error Pattern) -| **Description** | **Value** | -| ------------------------------- | ---------------- | -| 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | -| | +- _Error Pattern (1 Byte):_ -#### Return + | **Description** | **Value** | + | ------------------------------- | ---------------- | + | 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | -Status +#### Return (Set TX Test Error Pattern) -### Set Connection Operational Flags +Returns a status byte. -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | --------------------- | -| 0x3E7 | 7 | Handle, Flags, Enable | -| | +--- +### Set Connection Operational Flags -#### Description +Enable or disable connection operational flags for a given connection. -Enable/Disable connection operational flags for a given connection. +- Packet type: [Command Packet](#command-packet) -#### Parameters +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------- | ---------- | +| 0x3F | 0x3E7 | 7 | {Handle, Flags, Enable} | Status | -_Handle (2 Bytes):_ +#### Parameters (Set Connection Operational Flags) -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | +- _Handle (2 Bytes):_ + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -MAX\_NUMBER\_CONNECTIONS set at application layer by user. + MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. -_Flags (4 Bytes)_ +- _Flags (4 Bytes):_ -| **Description** | **Value** | -| -------------------------- | ---------------- | -| Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | -------------------------- | ---------------- | + | Flags to enable or disable | 0x0 – 0xFFFFFFFF | +- _Enable (1 Byte):_ -_Enable (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | +#### Return (Set Connection Operational Flags) -#### Return +Returns a status byte. -Status +--- ### Set P-256 Private Key -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E8 | 32 | Private Key | -| | - - -#### Description +Set P-256 private key or clear set private key. The private key will be used for generating key pairs and Diffie-Hellman keys until cleared. -Set P-256 private key or clear set private key. The private key will be used for generating key +- Packet type: [Command Packet](#command-packet) -pairs and Diffie-Hellman keys until cleared. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ----------------- | ---------- | +| 0x3F | 0x3E8 | 32 | {Private Key} | Status | -#### Parameters +#### Parameters (Set P-256 Private Key) -_Private Key (32 Bytes):_ +- _Private Key (32 Bytes):_ -| **Description** | **Value** | -| ----------------- | ----------- | -| Clear Private Key | 0x00… | -| Private Key | 0x1 – 0xFF… | -| | + | **Description** | **Value** | + | ----------------- | ----------- | + | Clear Private Key | 0x00… | + | Private Key | 0x1 – 0xFF… | +#### Return (Set P-256 Private Key) -#### Return +Returns a status byte. -Status +--- ### Get channel map of periodic scan/adv -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | ----------------------------- | ----------- | -| 0x3DE | 3 | Advertising Handle, Adverting | Channel Map | -| | +Get the channel map used for periodic scanning or advertising. -#### Description +- Packet type: [Command Packet](#command-packet) -Get the channel map used for periodic scanning or advertising. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ----------------------------- | ----------- | +| 0x3F | 0x3DE | 3 | {Advertising Handle, Advertising} | Channel Map | -#### Parameters +#### Parameters (Get channel map of periodic scan/adv) -_Handle (2 Bytes):_ +- _Handle (2 Bytes):_ -| **Description** | **Value** | -| ---------------------------------- | ----------------------------- | -| Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | + | **Description** | **Value** | + | ---------------------------------- | ----------------------------- | + | Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. +- _Advertising (1 Byte):_ -_Advertising (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Scanner | 0x00 | + | Advertiser | 0x01 | -| **Description** | **Value** | -| --------------- | --------- | -| Scanner | 0x00 | -| Advertiser | 0x01 | -| | +#### Return (Get channel map of periodic scan/adv) -#### Return +- _Channel Map (5 Bytes)_ : Channel map used for periodic scanning or advertising. -_Channel Map (5 Bytes):_ + | **Return Length (bytes)** | **Value** | + | ------------------------- | -------------- | + | 5 | {0x00-0xFF, …} | -| **Description** | **Value** | -| --------------- | -------------- | -| Channel Masks | {0x00-0xFF, …} | -| | +--- ### Get ACL Test Report -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3E9 | 0 | **N/A** | -| | +Get ACL Test Report. -#### Description +- Packet type: [Command Packet](#command-packet) -Get ACL Test Report +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3E9 | 0 | N/A | {Report Data} | -#### Return +#### Return (Get ACL Test Report) -_RX ACL Packet Count (4 Bytes):_ +- _RX ACL Packet Count (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------ | ---------------- | -| Number of ACL packets received | 0x0 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------ | ---------------- | + | Number of ACL packets received | 0x0 – 0xFFFFFFFF | -_RX ACL Octet Count (4 Bytes):_ +- _RX ACL Octet Count (4 Bytes):_ -| **Description** | **Value** | -| ----------------------------- | ---------------- | -| Number of ACL octets received | 0x0 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ----------------------------- | ---------------- | + | Number of ACL octets received | 0x0 – 0xFFFFFFFF | +- _Generated ACL Packet Count (4 Bytes):_ -_Generated ACL Packet Count (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------- | ---------------- | + | Number of generated ACL packets | 0x0 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------- | ---------------- | -| Number of generated ACL packets | 0x0 – 0xFFFFFFFF | -| | +- _Generated ACL Octet Count (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------ | ---------------- | + | Number of generated ACL octets | 0x0 – 0xFFFFFFFF | -_Generated ACL Octet Count (4 Bytes):_ - -| **Description** | **Value** | -| ------------------------------ | ---------------- | -| Number of generated ACL octets | 0x0 – 0xFFFFFFFF | -| | +--- ### Set Local Minimum Number of Used Channels -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------------- | -| 0x3EA** | 3 | PHYs, Power Threshold, Min Used Channels | -| | - - -#### Description - Set local minimum number of used channels. -#### Parameters +- Packet type: [Command Packet](#command-packet) -_PHYs (1 Byte):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------------------------- | ---------- | +| 0x3F | 0x3EA | 3 | {PHYs, Power Threshold, Min Used Channels} | Status | -| **Description** | **Value** | -| --------------- | --------- | -| 1M | 0x1 | -| 2M | 0x2 | -| Coded | 0x3 | -| | +#### Parameters (Set Local Minimum Number of Used Channels) +- _PHYs (1 Byte):_ -_Power Threshold (1 Byte, signed 8-Bit):_ + | **Description** | **Value** | + | --------------- | --------- | + | 1M | 0x1 | + | 2M | 0x2 | + | Coded | 0x3 | -| **Description** | **Value** | -| ----------------------- | --------- | -| Power Threshold for PHY | +/-127 | -| | +- _Power Threshold (1 Byte, signed 8-Bit):_ + | **Description** | **Value** | + | ----------------------- | --------- | + | Power Threshold for PHY | +/-127 | -Min Used Channels (1 Byte) +- _Min Used Channels (1 Byte):_ -| **Description** | **Value** | -| ------------------------------- | --------- | -| Minimum number of used channels | 1 - 37 | -| | + | **Description** | **Value** | + | ------------------------------- | --------- | + | Minimum number of used channels | 1 - 37 | +#### Return (Set Local Minimum Number of Used Channels) -#### Return +Returns a status byte. -Status +--- ### Get Peer Minimum Number of Used Channels -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ------------------------- | -| 0x3EB | 2 | Handle | 1M PHY, 2M PHY, Coded PHY | -| | +Get peer minimum number of used channels. -#### Description +- Packet type: [Command Packet](#command-packet) -Get peer minimum number of used channels. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3EB | 2 | {Handle} | {1M PHY, 2M PHY, Coded PHY} | -#### Parameters +#### Parameters (Get Peer Minimum Number of Used Channels) -_Handle (2 Bytes):_ +- _Handle (2 Bytes):_ -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +#### Return (Get Peer Minimum Number of Used Channels) -#### Return +- _1M PHY (1 Byte):_ -_1M PHY (1 Byte):_ + | **Description** | **Value** | + | -------------------- | --------- | + | 1M min used channels | 1 - 37 | -| **Description** | **Value** | -| -------------------- | --------- | -| 1M min used channels | 1 - 37 | -| | +- _2M PHY (1 Byte):_ -_2M PHY (1 Byte):_ + | **Description** | **Value** | + | -------------------- | --------- | + | 2M min used channels | 1 - 37 | -| **Description** | **Value** | -| -------------------- | --------- | -| 2M min used channels | 1 - 37 | -| | +- _Coded PHY (1 Byte):_ -_Coded PHY (1 Byte):_ + | **Description** | **Value** | + | ----------------------- | --------- | + | Coded min used channels | 1 – 37 | -| **Description** | **Value** | -| ----------------------- | --------- | -| Coded min used channels | 1 – 37 | -| | +--- ### Set validate public key mode between ALT1 and ALT2 -| **OCF** | **Length** | **Parameters** | -| --------- | ---------- | ----------------- | -| **0x3EC** | **1** | **Validate Mode** | -| | +Set mode used to validate public key. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------------- | ---------- | +| 0x3F | 0x3EC | 1 | {Validate Mode} | Status | -Set mode used to validate public key. +#### Parameters (Set validate public key mode between ALT1 and ALT2) -#### Parameters +- _Validate Mode (1 Byte):_ -_Validate Mode (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | ALT2 | 0x0 | + | ALT1 | 0x1 | -| **Description** | **Value** | -| --------------- | --------- | -| ALT2 | 0x0 | -| ALT1 | 0x1 | -| | +#### Return (Set validate public key mode between ALT1 and ALT2) -#### Return +Returns a status byte. -Status +--- ### Set BD Address -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F0 | 6 | BD Address | -| | - +Set the device address. -#### Description +- Packet type: [Command Packet](#command-packet) -Set the device address. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------------- | ---------- | +| 0x3F | 0x3F0 | 6 | {BD Address} | Status | -#### Parameters +#### Parameters (Set BD Address) -_BD Address (6 Bytes):_ +- _BD Address (6 Bytes):_ -| **Description** | **Value** | -| --------------- | -------------- | -| Device Address | {0x00-0xFF, …} | -| | + | **Description** | **Value** | + | --------------- | -------------- | + | Device Address | {0x00-0xFF, …} | +#### Return (Set BD Address) -#### Return +Returns a status byte. -Status +--- ### Get Random Address -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F1 | 0 | N/A | BD Address | -| | -#### Description - Get random device address. -#### Return +- Packet type: [Command Packet](#command-packet) -_BD Address (6 Bytes):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3F1 | 0 | N/A | {BD Address} | -| **Description** | **Value** | -| --------------- | -------------- | -| Device Address | {0x00-0xFF, …} | -| | -### Set Local Feature +#### Return (Get Random Address) -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F2 | 8 | Local Features | -| | +- _BD Address (6 Bytes):_ + + | **Description** | **Value** | + | --------------- | -------------- | + | Device Address | {0x00-0xFF, …} | +--- -#### Description +### Set Local Feature Set local supported features. -#### Parameters +- Packet type: [Command Packet](#command-packet) -_Local Features (8 Bytes):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ------------------ | ---------- | +| 0x3F | 0x3F2 | 8 | {Local Features} | Status | -| **Description** | **Value** | -| ---------------------- | ------------------------- | -| Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | -| | +#### Parameters (Set Local Feature) +- _Local Features (8 Bytes):_ -#### Return + | **Description** | **Value** | + | ---------------------- | ------------------------- | + | Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | + +#### Return (Set Local Feature) + +- _Status (1 Byte)_ : Status of the Set Local Feature command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -Status +--- ### Set Operational Flags -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F3 | 5 | Flags, Enable | -| | +Enable or Disable Operational Flags. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ------------------ | ---------- | +| 0x3F | 0x3F3 | 5 | {Flags, Enable} | Status | -Enable Disable Operational Flags +#### Parameters (Set Operational Flags) -#### Parameters +- _Flags (4 Bytes):_ -_Flags_ (4 Bytes): + | **Description** | **Value** | + | -------------------------- | ---------------- | + | Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| **Description** | **Value** | -| -------------------------- | ---------------- | -| Flags to enable or disable | 0x0 – 0xFFFFFFFF | -| | +- _Enable (1 Byte):_ -_Enable (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | +#### Return (Set Operational Flags) -#### Return +Returns a status byte. -Status +--- ### Get PDU Filter Statistics -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F4 | 0 | N/A | -| | +Get the accumulated PDU filter statistics. -#### Description +- Packet type: [Command Packet](#command-packet) -Get the accumulated PDU filter statistics. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F4 | 0 | N/A | Statistics | -#### Return +#### Return (PDU Filter Statistics) -_Fail PDU Type Filter_ (2 Bytes): +- _Fail PDU Type Filter_ (2 Bytes) : -| **Description** | **Value** | -| -------------------------------------- | ------------ | -| Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | -------------------------------------- | ------------ | + | Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | -_Pass PDU Type Filter_ (2 Bytes): +- _Pass PDU Type Filter_ (2 Bytes) : -| **Description** | **Value** | -| -------------------------------------- | ------------ | -| Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | -------------------------------------- | ------------ | + | Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | -_Fail Whitelist Filter_ (2 Bytes): +- _Fail Whitelist Filter_ (2 Bytes) : -| **Description** | **Value** | -| --------------------------------------- | ------------ | -| Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | --------------------------------------- | ------------ | + | Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | -_Pass Whitelist Filter_ (2 Bytes): +- _Pass Whitelist Filter_ (2 Bytes) : -| **Description** | **Value** | -| --------------------------------------- | ------------ | -| Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ---------------------------------------- | ------------ | + | Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | -_Fail Peer Address Match_ (2 Bytes): +- _Fail Peer Address Match_ (2 Bytes) : -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of PDUS failing peer address match | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of PDUs failing peer address match | 0x0 – 0xFFFF | -_Pass Peer Address Match_ (2 Bytes): +- _Pass Peer Address Match_ (2 Bytes) : -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of PDUs passing peer address match | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of PDUs passing peer address match | 0x0 – 0xFFFF | -_Fail Local Address Match_ (2 Bytes): +- _Fail Local Address Match_ (2 Bytes) : -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of PDUS failing local address match | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------ | ------------ | + | Number of PDUs failing local address match | 0x0 – 0xFFFF | -_Pass local Address Match_ (2 Bytes): +- _Pass Local Address Match_ (2 Bytes) : -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of PDUs passing local address match | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------ | ------------ | + | Number of PDUs passing local address match | 0x0 – 0xFFFF | -_Fail Peer RPA Verify_ (2 Bytes): +- _Fail Peer RPA Verify_ (2 Bytes) : -| **Description** | **Value** | -| ---------------------------------------- | ------------ | -| Number of peer RPAs failing verification | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ---------------------------------------- | ------------ | + | Number of peer RPAs failing verification | 0x0 – 0xFFFF | -_Pass Peer RPA Verify_ (2 Bytes): +- _Pass Peer RPA Verify_ (2 Bytes) : -| **Description** | **Value** | -| ---------------------------------------- | ------------ | -| Number of peer RPAs passing verification | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ---------------------------------------- | ------------ | + | Number of peer RPAs passing verification | 0x0 – 0xFFFF | -_Fail Local RPA Verify_ (2 Bytes): +- _Fail Local RPA Verify_ (2 Bytes) : -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of local RPAs failing verification | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of local RPAs failing verification | 0x0 – 0xFFFF | -_Pass Local RPA Verify_ (2 Bytes): +- _Pass Local RPA Verify_ (2 Bytes) : -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of local RPAs passing verification | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of local RPAs passing verification | 0x0 – 0xFFFF | -_Fail Peer Private Address_ (2 Bytes): +- _Fail Peer Private Address_ (2 Bytes) : -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------- | ------------ | + | Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -_Fail Local Private Address_ (2 Bytes): +- _Fail Local Private Address_ (2 Bytes) : -| **Description** | **Value** | -| -------------------------------------------------------- | ------------ | -| Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | -------------------------------------------------------- | ------------ | + | Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | -_Fail Peer Address Res Req_ (2 Bytes): +- _Fail Peer Address Res Req_ (2 Bytes) : -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------- | ------------ | + | Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | -_Pass Peer Address Res Req_ (2 Bytes): +- _Pass Peer Address Res Req_ (2 Bytes) : -| **Description** | **Value** | -| ------------------------------------------------------- | ------------ | -| Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------- | ------------ | + | Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | -_Pass Local Address Res Opt._ (2 Bytes): -| **Description** | **Value** | -| -------------------------------------------------------- | ------------ | -| Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | -| | +- _Pass Local Address Res Opt._ (2 Bytes) : -_Peer Res Address Pend_ (2 Bytes): + | **Description** | **Value** | + | -------------------------------------------------------- | ------------ | + | Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------ | -| Number of peer address resolutions pended | 0x0 – 0xFFFF | -| | +- _Peer Res Address Pend_ (2 Bytes) : -_Local Res Address Pend_ (2 Bytes): + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of peer address resolutions pended | 0x0 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------ | ------------ | -| Number of local address resolutions pended | 0x0 – 0xFFFF | -| | -### Set Advertising TX Power +- _Local Res Address Pend_ (2 Bytes) : -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F5 | 1 | Power | Status | -| | -#### Description + | **Description** | **Value** | + | ------------------------------------------ | ------------ | + | Number of local address resolutions pended | 0x0 – 0xFFFF | + +--- + +### Set Advertising TX Power Set the TX power used for advertising. -#### Parameters +- Packet type: [Command Packet](#command-packet) -_Power (1 Byte, Signed 8-Bit):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F5 | 1 | {Power} | Status | -| **Description** | **Value** | -| --------------- | --------- | -| Power | -15 - 6 | -| | +#### Parameters (Set Advertising TX Power) +- _Power (1 Byte, Signed 8-Bit):_ -#### Return + | **Description** | **Value** | + | --------------- | --------- | + | Power | -15 - 6 | -Status +#### Return (Set Advertising TX Power) -### Set Connection TX Power +Returns a status byte. -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | ---------- | -| 0x3F6 | 1 | Power | Status | -| | -#### Description +--- + +### Set Connection TX Power Set the TX power used for connections. -#### Parameters +- Packet type: [Command Packet](#command-packet) -_Power (1 Byte, Signed 8-Bit):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F6 | 1 | {Power} | Status | -| **Description** | **Value** | -| --------------- | --------- | -| Power | -15 - 6 | -| | +#### Parameters (Set Connection TX Power) +- _Power (1 Byte, Signed 8-Bit):_ -#### Return + | **Description** | **Value** | + | --------------- | --------- | + | Power | -15 - 6 | -Status +#### Return (Set Connection TX Power) -### Set Encryption Mode +Returns a status byte. -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------------------- | -| 0x3F7 | 4 | Enable Auth, Nonce Mode, Handle | -| | +--- - -#### Description +### Set Encryption Mode Set encryption mode for a given connection. -#### Parameters +- Packet type: [Command Packet](#command-packet) -_Enable Auth (1 Byte):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ------------------------ | ---------- | +| 0x3F | 0x3F7 | 4 | {Enable Auth, Nonce Mode, Handle} | Status | -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | +#### Parameters (Set Encryption Mode) +- _Enable Auth (1 Byte):_ -_Handle (2 Bytes):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x0 | + | Enable | 0x1 | -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | +- _Handle (2 Bytes):_ + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -#### Return +#### Return (Set Encryption Mode) -Status +Returns a status byte. -### Set Channel Map +--- -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------- | -| 0x3F8 | 6 | Handle, Channel Map | -| | +### Set Channel Map +Set the channel map. -#### Description +- Packet type: [Command Packet](#command-packet) -Set the channel map +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------- | ---------- | +| 0x3F | 0x3F8 | 6 | {Handle, Channel Map} | Status | -#### Parameters +#### Parameters (Set Channel Map) -_Handle (2 Bytes):_ +- _Handle (2 Bytes):_ -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +- _Channel Map (4 Bytes):_ -_Channel Map (4 Bytes):_ + | **Description** | **Value** | + | --------------- | ----------------- | + | Channel Map | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------- | ----------------- | -| Channel Map | 0x00 – 0xFFFFFFFF | -| | +#### Return (Set Channel Map) -#### Return +Returns a status byte. -Status +--- ### Set Diagnostic Mode -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3F9 | 1 | Enable | -| | +Enable/Disable PAL System Assert Trap. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F9 | 1 | {Enable} | Status | -Enable/Disable PAL System Assert Trap +#### Parameters (Set Diagnostic Mode) -#### Parameters +- _Enable (1 Byte):_ -_Enable (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x0 | + | Enable | 0x1 | -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | +#### Return (Set Diagnostic Mode) +Returns a status byte. -#### Return - -Status +--- ### Enable Sniffer Packet Forwarding -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3CD | 1 | Enable | -| | +Enable/Disable sniffer packet forwarding. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3CD | 1 | {Enable} | Status | -Enable/Disable sniffer packet forwarding. +#### Parameters (Enable Sniffer Packet Forwarding) -#### Parameters +- _Enable (1 Byte):_ -_Enable (1 Byte):_ + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x0 | + | Enable | 0x1 | -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x0 | -| Enable | 0x1 | -| | +#### Return (Enable Sniffer Packet Forwarding) +Returns a status byte. -#### Return +--- -Status ### Get Memory Stats +Read memory and system statistics. + +- Packet type: [Command Packet](#command-packet) + | **OCF** | **Length** | **Parameters** | | ------- | ---------- | -------------- | | 0x3FA | 0 | N/A | -| | - -#### Description - -Read memory and system statistics. #### Return -_Stack Usage (2 Byte):_ - -| **Description** | **Value** | -| ----------------------------- | ------------ | -| Number of bytes used by stack | 0x0 – 0xFFFF | -| | - +- _Stack Usage (2 Byte):_ -_Sys Assert Count (2 Byte):_ + | **Description** | **Value** | + | ----------------------------- | ------------ | + | Number of bytes used by stack | 0x0 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------ | ------------ | -| Number of times assertions hit | 0x0 – 0xFFFF | -| | -_Free Memory (4 Bytes):_ +- _Sys Assert Count (2 Byte):_ -| **Description** | **Value** | -| --------------------------- | ---------------- | -| Memory free for stack usage | 0x0 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------ | ------------ | + | Number of times assertions hit | 0x0 – 0xFFFF | -_Used Memory (4 Bytes):_ +- _Free Memory (4 Bytes):_ -| **Description** | **Value** | -| -------------------- | ----------------- | -| Memory used by stack | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------- | ---------------- | + | Memory free for stack usage | 0x0 – 0xFFFFFFFF | -_Max Connections (2 Bytes):_ +- _Used Memory (4 Bytes):_ -| **Description** | **Value** | -| --------------------------------- | ------------------------------- | -| Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | -| | + | **Description** | **Value** | + | -------------------- | ----------------- | + | Memory used by stack | 0x00 – 0xFFFFFFFF | -_Connection Context Size (2 Bytes):_ +- _Max Connections (2 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| Number of bytes used for connection context | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | --------------------------------- | ------------------------------- | + | Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | -_CS Watermark Level (2 Bytes):_ +- _Connection Context Size (2 Bytes):_ -| **Description** | **Value** | -| --------------------------------------------------- | ------------- | -| Critical section watermark duration in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | Number of bytes used for connection context | 0x00 – 0xFFFF | -_LL Handler Watermark Level (2 Byte):_ +- _CS Watermark Level (2 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------ | ------------- | -| LL handler watermark level in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | --------------------------------------------------- | ------------- | + | Critical section watermark duration in microseconds | 0x00 – 0xFFFF | -_Sch Handler Watermark Level (2 Byte):_ +- _LL Handler Watermark Level (2 Byte):_ -| **Description** | **Value** | -| ------------------------------------------------- | ------------- | -| Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------ | ------------- | + | LL handler watermark level in microseconds | 0x00 – 0xFFFF | -_LHCI Handler Watermark Level (2 Byte):_ +- _Sch Handler Watermark Level (2 Byte):_ -| **Description** | **Value** | -| -------------------------------------------- | ------------- | -| LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------- | ------------- | + | Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | -_Max Adv Sets (2 Bytes):_ +- _LHCI Handler Watermark Level (2 Byte):_ -| **Description** | **Value** | -| ---------------------------------- | ------------- | -| Maximum number of advertising sets | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | -------------------------------------------- | ------------- | + | LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | -_Adv Set Context Size (2 Bytes):_ +- _Max Adv Sets (2 Bytes):_ -| **Description** | **Value** | -| ---------------------------------------- | ------------- | -| Size of advertising set context in bytes | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ---------------------------------- | ------------- | + | Maximum number of advertising sets | 0x00 – 0xFFFF | -_Ext Scan Max (2 Bytes):_ +- _Adv Set Context Size (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------- | ------------ | -| Maximum number of extended scanners | 0x0 – 0xFFFF | + | **Description** | **Value** | + | ---------------------------------------- | ------------- | + | Size of advertising set context in bytes | 0x00 – 0xFFFF | -_Ext Scan Context Size (2 Bytes):_ +- _Ext Scan Max (2 Bytes):_ -| **Description** | **Value** | -| --------------------------------------------------- | ------------- | -| Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------- | ------------ | + | Maximum number of extended scanners | 0x0 – 0xFFFF | -_Max Num Extended Init (2 Bytes):_ +- _Ext Scan Context Size (2 Bytes):_ -| **Description** | **Value** | -| -------------------------------------- | ------------- | -| maximum number of extended initiators. | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | --------------------------------------------------- | ------------- | + | Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | -_Ext Init Context Size (2 Byte):_ +- _Max Num Extended Init (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------------------- | ------------- | -| Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | -| | -_Max Periodic Scanners (2 Bytes):_ + | **Description** | **Value** | + | -------------------------------------- | ------------- | + | maximum number of extended initiators. | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------- | ----------- | -| Maximum number of periodic scanners | 0x00-0xFFFF | -| | +- _Ext Init Context Size (2 Byte):_ -_Periodic Scanners Context Size(2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------------------- | ------------- | + | Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------ | ----------- | -| Context size of periodic scanners in bytes | 0x00-0xFFFF | -| | +- _Max Periodic Scanners (2 Bytes):_ -_Max CIG (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------- | ----------- | + | Maximum number of periodic scanners | 0x00-0xFFFF | -| **Description** | **Value** | -| --------------------- | ----------- | -| Maximum number of CIG | 0x00-0xFFFF | -| | +- _Periodic Scanners Context Size(2 Bytes):_ -_CIG Context Size (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------ | ----------- | + | Context size of periodic scanners in bytes | 0x00-0xFFFF | -| **Description** | **Value** | -| ---------------------------- | ----------- | -| Context size of CIG in bytes | 0x00-0xFFFF | -| | -_Max CIS (2 Bytes):_ +- _Max CIG (2 Bytes):_ -| **Description** | **Value** | -| --------------------- | ----------- | -| Maximum number of CIS | 0x00-0xFFFF | -| | + | **Description** | **Value** | + | --------------------- | ----------- | + | Maximum number of CIG | 0x00-0xFFFF | +- _CIG Context Size (2 Bytes):_ -_CIS Context Size (2 Bytes):_ + | **Description** | **Value** | + | ---------------------------- | ----------- | + | Context size of CIG in bytes | 0x00-0xFFFF | +- _Max CIS (2 Bytes):_ -| **Description** | **Value** | -| ---------------------------- | ----------- | -| Context size of CIS in bytes | 0x00-0xFFFF | -| | -### Get Advertising Stats + | **Description** | **Value** | + | --------------------- | ----------- | + | Maximum number of CIS | 0x00-0xFFFF | -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FB | 0 | N/A | -| | -#### Description +- _CIS Context Size (2 Bytes):_ -Get the accumulated adverting stats. + | **Description** | **Value** | + | ---------------------------- | ----------- | + | Context size of CIS in bytes | 0x00-0xFFFF | -#### Return +--- -_TX ADV (4 Bytes):_ - -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | - -_RX Req (4 Bytes):_ +### Get Advertising Stats -| **Description** | **Value** | -| ---------------------------------------------------- | ----------------- | -| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| | +Get the accumulated advertising statistics. +- Packet type: [Command Packet](#command-packet) -_RX Req CRC (4 Bytes):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3FB | 0 | N/A | Advertising Stats | -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | +#### Return (Advertising Stats) +- _TX ADV (4 Bytes):_ -_RX Req Timeout (4 Bytes):_ + | **Description** | **Value** | + | ---------------------------------- | ----------------- | + | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | +- _RX Req (4 Bytes):_ + | **Description** | **Value** | + | ---------------------------------------------------- | ----------------- | + | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -_TX RSP (4 Bytes):_ +- _RX Req CRC (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------- | ----------------- | -| Number of sent response packets | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------- | ----------------- | + | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | +- _RX Req Timeout (4 Bytes):_ -_Err ADV (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------------------------- | ----------------- | + | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ---------------------------------------- | ----------------- | -| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| | +- _TX RSP (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------- | ----------------- | + | Number of sent response packets | 0x00 – 0xFFFFFFFF | -_RX Setup (2 Bytes):_ +- _Err ADV (4 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ---------------------------------------- | ----------------- | + | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -_TX Setup (2 Bytes):_ +- _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +- _TX Setup (2 Bytes):_ -_RX ISR (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | +- _RX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -_TX ISR (2 Bytes):_ +- _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +--- ### Get Scan Stats -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FC | 0 | N/A | -| | -#### Description - Get the statistics captured during scanning. -#### Return - -_RX ADV (4 Bytes):_ - -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| | - +- Packet type: [Command Packet](#command-packet) -_RX ADV CRC (4 Bytes):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3FC | 0 | N/A | Scan Stats | -| **Description** | **Value** | -| ------------------------------------------------------ | ----------------- | -| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | +#### Return (Scan Stats) +- _RX ADV (4 Bytes):_ -_RX ADV Timeout (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------------------------------- | ----------------- | -| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | +- _RX ADV CRC (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------------ | ----------------- | + | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | -_TX Req (4 Bytes):_ +- _RX ADV Timeout (4 Bytes):_ -| **Description** | **Value** | -| ----------------------------------- | ----------------- | -| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------------------------------------- | ----------------- | + | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | +- _TX Req (4 Bytes):_ -_RX RSP (4 Bytes):_ + | **Description** | **Value** | + | ----------------------------------- | ----------------- | + | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------------------------------------ | ----------------- | -| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| | +- _RX RSP (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------------------ | ----------------- | + | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -_RX RSP CRC (4 Bytes):_ +- _RX RSP CRC (4 Bytes):_ -| **Description** | **Value** | -| --------------------------------------------------------------- | ----------------- | -| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------------------------------------------- | ----------------- | + | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +- _RX RSP Timeout (4 Bytes):_ -_RX RSP Timeout (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------------------------ | ----------------- | + | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------------------------------------------ | ----------------- | -| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | +- _Err Scan (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -_Err Scan (4 Bytes):_ +- _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ----------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | +- _TX Setup (2 Bytes):_ -_RX Setup (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ----------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ----------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | +- _RX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ----------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -_TX Setup (2 Bytes):_ +- _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------- | ----------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------- | ----------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -_RX ISR (2 Bytes):_ +--- -| **Description** | **Value** | -| ------------------------------------------- | ----------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | - -_TX ISR (2 Bytes):_ - -| **Description** | **Value** | -| ------------------------------------------- | ----------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | -| | ### Get Connection Stats -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FD | 0 | N/A | -| | -#### Description - -Get the statistics captured during connection. - -#### Return - -_RX Data (4 Bytes)_ +Get the statistics captured during a connection. -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | +- Packet type: [Command Packet](#command-packet) +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3FD | 0 | N/A | Connection Stats | -_RX Data CRC (4 Bytes)_ +#### Return (Connection Stats) -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | +- _RX Data (4 Bytes):_ + | **Description** | **Value** | + | -------------------------------------------- | ----------------- | + | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -_RX Data Timeout (4 Bytes)_ +- _RX Data CRC (4 Bytes):_ -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------------- | ----------------- | + | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | +- _RX Data Timeout (4 Bytes):_ -_TX Data (4 Bytes)_ + | **Description** | **Value** | + | -------------------------------------------------- | ----------------- | + | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | +- _TX Data (4 Bytes):_ + | **Description** | **Value** | + | --------------------------- | ----------------- | + | Number of sent data packets | 0x00 - 0xFFFFFFFF | -_Err Data (4 Bytes)_ +- _Err Data (4 Bytes):_ -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of data transaction errors | 0x00 - 0xFFFFFFFF | -_RX Setup (2 Bytes)_ +- _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -_TX Setup (2 Bytes)_ +- _TX Setup (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -_RX ISR (2 Bytes)_ +- _RX ISR (2 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -_TX ISR (2 Bytes)_ +- _TX ISR (2 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +--- ### Get Test Stats -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | --------------------------------- | -| 0x3FE | 0 | N/A | Test stats in order as documented | -| | -#### Description - Get the statistics captured during test mode. -#### Return - -_RX Data (4 Bytes)_ - -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | - - -_RX Data CRC (4 Bytes)_ +- Packet type: [Command Packet](#command-packet) -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | --------------------------------- | +| 0x3F | 0x3FE | 0 | N/A | Test stats in order as documented | +#### Return (Get Test Stats) -_RX Data Timeout (4 Bytes)_ +- _RX Data (4 Bytes)_ -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | + | **Description** | **Value** | + | -------------------------------------------- | ----------------- | + | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | +- _RX Data CRC (4 Bytes)_ -_TX Data (4 Bytes)_ + | **Description** | **Value** | + | ----------------------------------------------- | ----------------- | + | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | +- _RX Data Timeout (4 Bytes)_ + | **Description** | **Value** | + | -------------------------------------------------- | ----------------- | + | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -_Err Data (4 Bytes)_ +- _TX Data (4 Bytes)_ -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------- | ----------------- | + | Number of sent data packets | 0x00 - 0xFFFFFFFF | -_RX Setup (2 Bytes)_ +- _Err Data (4 Bytes)_ -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of data transaction errors | 0x00 - 0xFFFFFFFF | +- _RX Setup (2 Bytes)_ -_TX Setup (2 Bytes)_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | +- _TX Setup (2 Bytes)_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -_RX ISR (2 Bytes)_ +- _RX ISR (2 Bytes)_ -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | +- _TX ISR (2 Bytes)_ -_TX ISR (2 Bytes)_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | +--- ### Get Pool Stats -| **OCF** | **Length** | **Parameters** | **Return** | -| ------- | ---------- | -------------- | --------------------------------- | -| 0x3FF | 0 | N/A | Pool stats in order as documented | -| | - -#### Description - Get the memory pool statistics captured during runtime. -**NOTE:** The flag _WSF\_BUF\_STATS_ must be defined to _TRUE_ at compile time +- Packet type: [Command Packet](#command-packet) -#### Return +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | ---------------------------------- | +| 0x3F | 0x3FF | 0 | N/A | {Num Pool, {Buf Size, Num Buf, Num Alloc, Max Alloc, Max Req Len} * Num Pool} | -_Num Pool (1 Bytes):_ +#### Return (Get Pool Stats) -| **Description** | **Value** | -| ----------------------- | ----------- | -| Number of pools defined | 0x00 – 0xFF | -| | +- _Num Pool (1 Byte):_ -**Note:** The rest of the return parameters may be repeated _Num Pool_ times and will be sent in order of the pool number (e.g., pool 0, pool 1, …, pool N-1). + | **Description** | **Value** | + | ----------------------- | ----------- | + | Number of pools defined | 0x00 – 0xFF | -_Buf Size (2 Bytes):_ +- _Pool Stats (variable):_ -| **Description** | **Value** | -| ---------------- | ------------- | -| Pool Buffer Size | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | --------------------------------- | ------------- | + | _Buf Size (2 Bytes):_ | 0x00 – 0xFFFF | + | _Num Buf (1 Byte):_ | 0x00 – 0xFF | + | _Num Alloc (1 Byte):_ | 0x00 – 0xFF | + | _Max Alloc (1 Byte):_ | 0x00 – 0xFF | + | _Max Req Len (2 Bytes):_ | 0x00 – 0xFFFF | -_Num Buf (1 Byte):_ +### Set Additional AuxPtr Offset -| **Description** | **Value** | -| ----------------------- | ----------- | -| Total Number of buffers | 0x00 – 0xFF | -| | +Set auxiliary packet offset delay. +- Packet type: [Command Packet](#command-packet) -_Num Alloc (1 Byte):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | ---------- | +| 0x3F | 0x3D0 | 5 | {Delay, Handle} | Status | -| **Description** | **Value** | -| --------------------------------- | ----------- | -| Number of outstanding allocations | 0x00 – 0xFF | -| | +#### Parameters (Set Additional AuxPtr Offset) -_Max Alloc (1 Byte):_ +- _Delay (4 Bytes):_ -| **Description** | **Value** | -| ------------------------- | ----------- | -| High allocation watermark | 0x00 – 0xFF | -| | + | **Description** | **Value** | + | --------------------- | ---------------- | + | Disable | 0x00 | + | Delay in microseconds | 0x1 – 0xFFFFFFFF | +- _Handle (1 Byte):_ -_Max Req Len (2 Bytes):_ + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| **Description** | **Value** | -| ------------------------------- | ------------- | -| Maximum requested buffer length | 0x00 – 0xFFFF | -| | +#### Return (Set Additional AuxPtr Offset) +Returns a status byte -### Set Additional AuxPtr Offset +--- -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D0 | 5 | Delay, Handle | -| | +### Set Extended Advertising Data Fragmentation +Set the extended advertising fragmentation length. -#### Description +- Packet type: [Command Packet](#command-packet) -Set auxiliary packet offset delay. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------------- | ---------- | +| 0x3D | 0x3D1 | 2 | {Handle, Frag Length} | Status | -#### Parameters +#### Parameters (Set Extended Advertising Data Fragmentation) -_Delay (4 Bytes):_ +- _Handle (1 Byte):_ -| **Description** | **Value** | -| --------------------- | ---------------- | -| Disable | 0x00 | -| Delay in microseconds | 0x1 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------ | ----------------------------- | + | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -_Handle (1 Byte):_ +- _Frag Length (1 Byte):_ -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | + | **Description** | **Value** | + | -------------------- | --------- | + | Fragmentation Length | 0x00-0xFF | +#### Return (Set Extended Advertising Data Fragmentation) -#### Return +- _Status (1 Byte)_ : Status of the Set Extended Advertising Data Fragmentation command execution. -Status + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -### Set Extended Advertising Data Fragmentation +--- -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------- | -| 0x3D1 | 2 | Handle, Frag Length | -| | +### Set Extended Advertising PHY Options +Set extended advertising PHY options. -#### Description +- Packet type: [Command Packet](#command-packet) -Set the extended advertising fragmentation length. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------------- | ---------- | +| 0x3D | 0x3D2 | 3 | {Handle, Primary Opt., Secondary Opt.} | Status | -#### Parameters +#### Parameters (Set Extended Advertising PHY Options) -_Handle (1 Bytes):_ +- _Handle (1 Byte):_ -| **Description** | **Value** | -| ------------------ | ----------------------------- | -| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | + | **Description** | **Value** | + | ----------------------- | ----------------------------- | + | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | +- _Primary Opt. (1 Byte):_ -_Frag Length (1 Bytes):_ + | **Description** | **Value** | + | ---------------------------------------- | --------- | + | Primary advertising channel PHY options. | 0x00-0xFF | -| **Description** | **Value** | -| -------------------- | --------- | -| Fragmentation Length | 0x00-0xFF | +- _Secondary Opt. (1 Byte):_ -#### Return + | **Description** | **Value** | + | ------------------------------------------ | --------- | + | Secondary advertising channel PHY options. | 0x00-0xFF | -Status +#### Return (Set Extended Advertising PHY Options) -### Set Extended Advertising PHY Options +- _Status (1 Byte)_ : Status of the Set Extended Advertising PHY Options command execution. -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------------------------ | -| 0x3D2 | 3 | Handle, Primary Opt., Secondary Opt. | -| | + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | +--- -#### Description +### Set Extended Advertising Default PHY Options -Set extended advertising PHY options +Set the default TX PHY options for extended advertising slave primary and secondary channel. -#### Parameters +- Packet type: [Command Packet](#command-packet) -_Handle (1 Byte):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | ---------- | +| 0x3D | 0x3D3 | 1 | {PHY Opt.} | Status | -| **Description** | **Value** | -| ------------------ | ----------------------------- | -| Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | +#### Parameters (Set Extended Advertising Default PHY Options) -_Primary Opt. (1 Byte):_ +- _PHY Opt. (1 Byte):_ -| **Description** | **Value** | -| ---------------------------------------- | --------- | -| Primary advertising channel PHY options. | 0x00-0xFF | + | **Description** | **Value** | + | --------------- | ----------- | + | PHY Options | 0x00 – 0xFF | -_Secondary Opt. (1 Byte):_ +#### Return (Set Extended Advertising Default PHY Options) -| **Description** | **Value** | -| ------------------------------------------ | --------- | -| Secondary advertising channel PHY options. | 0x00-0xFF | +- _Status (1 Byte)_ : Status of the Set Extended Advertising Default PHY Options command execution. -#### Return + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -Status +--- -### Set extended Advertising Default PHY Options +### Generate ISO Packets -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D3 | 1 | PHY Opt. | -| | +Generate ISO packets. +- Packet type: [Command Packet](#command-packet) -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------------------------- | ---------- | +| 0x3D | 0x3D5 | 5 | {Handle, Packet Length, Num Packets} | Status | -Set the default TX PHY options for extended adv slave primary and secondary channel. +#### Parameters (Generate ISO Packets) -#### Parameters +- _Handle (2 Byte):_ -_PHY Opt. (1 Byte):_ + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| **Description** | **Value** | -| --------------- | ----------- | -| PHY Options | 0x00 – 0xFF | -| | +- _Packet Length (2 Byte):_ -#### Return + | **Description** | **Value** | + | --------------- | ----------- | + | Packet Length | 0x00-0xFFFF | -Status +- _Num Packets (1 Byte):_ -### Generate ISO Packets + | **Description** | **Value** | + | ----------------- | --------- | + | Number of packets | 0x00-0xFF | -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ---------------------------------- | -| 0x3D5 | 5 | Handle, Packet Length, Num Packets | -| | +#### Return (Generate ISO Packets) -#### Description +- _Status (1 Byte)_ : Status of the Generate ISO Packets command execution. -Generate ISO packets. + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -#### Parameters +--- -_Handle (2 Byte):_ +### Get ISO Test Report -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -| | +Get statistics captured during ISO test. -_Packet Length (2 Byte):_ +- Packet type: [Command Packet](#command-packet) -| **Description** | **Value** | -| --------------- | ----------- | -| Packet Length | 0x00-0xFFFF | -| | +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------------------------------------------------------------- | ----------- | +| 0x3D | 0x3D6 | 16 | {RX ISO Packet Count, RX ISO Octet Count, Generate Packet Count, Generate Octet Count} | Status Code | -_Num Packets (1 Byte):_ +#### Return (Get ISO Test Report) -| **Description** | **Value** | -| ----------------- | --------- | -| Number of packets | 0x00-0xFF | -| | -#### Return +- _RX ISO Packet Count (4 Byte):_ -Status + | **Description** | **Value** | + | ------------------------ | ----------------- | + | Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | -### Get ISO Test Report +- _RX ISO Octet Count (4 Byte):_ -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------------------------------------------------------------------------- | -| 0x3D6 | 16 | RX ISO Packet Count,RX ISO Octet CountGenerate Packet Count,Generate Octet Count | -| | + | **Description** | **Value** | + | ----------------------- | ----------------- | + | Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | -#### Description +- _Generate Packet Count (4 Byte):_ -Get statistics captured during ISO test. + | **Description** | **Value** | + | ------------------------- | ----------------- | + | Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | -#### Return +- _Generate Octet Count (4 Byte):_ -_RX ISO Packet Count (4 Byte):_ + | **Description** | **Value** | + | ------------------------ | ----------------- | + | Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------ | ----------------- | -| Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | -| | +--- -_RX ISO Octet Count (4 Byte):_ +### Enable ISO Packet Sink -| **Description** | **Value** | -| ----------------------- | ----------------- | -| Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | -| | +Enable or Disable ISO packet sink. -_Generate Packet Count (4 Byte):_ +- Packet type: [Command Packet](#command-packet) -| **Description** | **Value** | -| ------------------------- | ----------------- | -| Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | -| | +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3D | 0x3D7 | 1 | {Enable} | Status | -_Generate Octet Count (4 Byte):_ +#### Parameters (Enable ISO Packet Sink) -| **Description** | **Value** | -| ------------------------ | ----------------- | -| Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | -| | +- _Enable (1 Byte):_ -### Enable ISO Packet Sink + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D7 | 1 | Enable | -| | +#### Return (Enable ISO Packet Sink) -#### Description +- _Status (1 Byte)_ : Status of the Enable ISO Packet Sink command execution. -Enable/Disable ISO packet sink. + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -#### Parameters +--- -_Enable (1 Byte):_ +### Enable Autogenerate ISO Packets -| **Description** | **Value** | -| --------------- | --------- | -| Disable | 0x00 | -| Enable | 0x01 | -| | +Enable autogenerate ISO packets. -#### Return +- Packet type: [Command Packet](#command-packet) -Status +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------- | ---------- | +| 0x3D | 0x3D8 | 2 | {Packet Length} | Status | -### Enable Autogenerate ISO Packets +#### Parameters (Enable Autogenerate ISO Packets) -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D8 | 2 | Packet Length | -| | +- _Packet Length (2 Bytes):_ -#### Description + | **Description** | **Value** | + | --------------- | ------------- | + | Disable | 0x00 | + | Length | 0x01 – 0xFFFF | -Enable autogenerate ISO packets. +#### Return (Enable Autogenerate ISO Packets) -#### Parameters +- _Status (1 Byte)_ : Status of the Enable Autogenerate ISO Packets command execution. -_Packet Length (2 Bytes):_ + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | -| **Description** | **Value** | -| --------------- | ------------- | -| Disable | 0x00 | -| Length | 0x01 – 0xFFFF | -| | +--- -#### Return +### Get ISO Connection Statistics -Status +Get statistics captured during ISO connection. -### Get ISO Connection Statistics +- Packet type: [Command Packet](#command-packet) -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3D9 | 0 | N/A | -| | -#### Description +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | -------------- | +| 0x3E | 0x3D9 | 0 | N/A | RX, TX, Err... | -Get statistics captured during ISO connection. +#### Return (Get ISO Connection Statistics) -#### Return +- _RX Data (4 Bytes):_ -_RX Data (4 Bytes)_ + | **Description** | **Value** | + | -------------------------------------------- | ----------------- | + | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| -------------------------------------------- | ----------------- | -| Number of successfully received data packets | 0x00 - 0xFFFFFFFF | -| | +- _RX Data CRC (4 Bytes):_ -_RX Data CRC (4 Bytes)_ + | **Description** | **Value** | + | ----------------------------------------------- | ----------------- | + | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| ----------------------------------------------- | ----------------- | -| Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | -| | +- _RX Data Timeout (4 Bytes):_ -_RX Data Timeout (4 Bytes)_ + | **Description** | **Value** | + | -------------------------------------------------- | ----------------- | + | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| -------------------------------------------------- | ----------------- | -| Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | -| | +- _TX Data (4 Bytes):_ -_TX Data (4 Bytes)_ + | **Description** | **Value** | + | --------------------------- | ----------------- | + | Number of sent data packets | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------- | ----------------- | -| Number of sent data packets | 0x00 - 0xFFFFFFFF | -| | +- _Err Data (4 Bytes):_ -_Err Data (4 Bytes)_ + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of data transaction errors | 0x00 - 0xFFFFFFFF | -| | +- _RX Setup (2 Bytes):_ -_RX Setup (2 Bytes)_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | +- _TX Setup (2 Bytes):_ -_TX Setup (2 Bytes)_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 - 0xFFFF | -| | +- _RX ISR (2 Bytes):_ -_RX ISR (2 Bytes)_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | +- _TX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -_TX ISR (2 Bytes)_ +--- -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | -| | ### Get Auxiliary Advertising Statistics -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DA | 0 | N/A | -| | -#### Description - Get accumulated auxiliary advertising stats. +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ----------- | +| 0x3F | 0x3DA | 0 | N/A | {TX ADV, RX Req, RX Req CRC, RX Req Timeout, TX RSP, TX Chain, Err ADV, RX Setup, TX Setup, RX ISR, TX ISR} | + #### Return -_TX ADV (4 Bytes):_ +- _TX ADV (4 Bytes):_ -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ---------------------------------- | ----------------- | + | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -_RX Req (4 Bytes):_ +- _RX Req (4 Bytes):_ -| **Description** | **Value** | -| ---------------------------------------------------- | ----------------- | -| Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ---------------------------------------------------- | ----------------- | + | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | -_RX Req CRC (4 Bytes):_ +- _RX Req CRC (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------- | ----------------- | + | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -_RX Req Timeout (4 Bytes):_ +- _RX Req Timeout (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------------------- | ----------------- | + | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | +- _TX RSP (4 Bytes):_ -_TX RSP (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------- | ----------------- | + | Number of sent response packets | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------- | ----------------- | -| Number of sent response packets | 0x00 – 0xFFFFFFFF | -| | +- _TX Chain (4 Bytes):_ -_TX Chain (4 Bytes):_ + | **Description** | **Value** | + | ---------------------------- | ----------------- | + | Number of sent chain packets | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ---------------------------- | ----------------- | -| Number of sent chain packets | 0x00 – 0xFFFFFFFF | -| | +- _Err ADV (4 Bytes):_ -_Err ADV (4 Bytes):_ + | **Description** | **Value** | + | ---------------------------------------- | ----------------- | + | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ---------------------------------------- | ----------------- | -| Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | -| | +- _RX Setup (2 Bytes):_ -_RX Setup (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | +- _TX Setup (2 Bytes):_ -_TX Setup (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | +- _RX ISR (2 Bytes):_ -_RX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | +- _TX ISR (2 Bytes):_ -_TX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | - +--- ### Get Auxiliary Scanning Statistics -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DB | 0 | N/A | -| | -#### Description - Get accumulated auxiliary scanning statistics. -#### Return +- Packet type: [Command Packet](#command-packet) -_RX ADV (4 Bytes):_ +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | -------------------------- | -------------- | ----------- | +| 0x3F | 0x3DB | 0 | N/A | Statistics | -| **Description** | **Value** | -| ---------------------------------- | ----------------- | -| Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -| | +#### Return (Auxiliary Scanning Statistics) -_RX ADV CRC (4 Bytes):_ +- _RX ADV (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------------- | ----------------- | -| Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ---------------------------------- | ----------------- | + | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | -_RX ADV Timeout (4 Bytes):_ +- _RX ADV CRC (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------------------------- | ----------------- | -| Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------- | ----------------- | + | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | -_TX REQ (4 Bytes):_ +- _RX ADV Timeout (4 Bytes):_ -| **Description** | **Value** | -| ----------------------------------- | ----------------- | -| Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------------------- | ----------------- | + | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | -_RX RSP (4 Bytes):_ +- _TX REQ (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------------------ | ----------------- | -| Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ----------------------------------- | ----------------- | + | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | -_RX RSP CRC (4 Bytes):_ +- _RX RSP (4 Bytes):_ -| **Description** | **Value** | -| --------------------------------------------------------------- | ----------------- | -| Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | ------------------------------------------------------------ | ----------------- | + | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | -_RX RSP Timeout (4 Bytes):_ +- _RX RSP CRC (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------------------------ | ----------------- | -| Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------------------------------------------- | ----------------- | + | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | +- _RX RSP Timeout (4 Bytes):_ -_RX Chain (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------------------------ | ----------------- | + | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------------------- | ----------------- | -| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | -| | +- _RX Chain (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------------------- | ----------------- | + | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | -_RX Chain CRC (4 Bytes):_ +- _RX Chain CRC (4 Bytes):_ -| **Description** | **Value** | -| ------------------------------------------------ | ----------------- | -| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + | **Description** | **Value** | + | ------------------------------------------------ | ----------------- | + | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | -_RX Chain Timeout (4 Bytes):_ +- _RX Chain Timeout (4 Bytes):_ -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | -_Err Scan (4 Bytes):_ +- _Err Scan (4 Bytes):_ -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| | + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -_RX Setup (2 Bytes):_ +- _RX Setup (2 Bytes):_ -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +- _TX Setup (2 Bytes):_ -_TX Setup (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| | +- _RX ISR (2 Bytes):_ -_RX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | +- _TX ISR (2 Bytes):_ -_TX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| | +--- ### Get Periodic Scanning Statistics -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3DC | 0 | N/A | +Get accumulated periodic scanning statistics. -#### Description +- Packet type: [Command Packet](#command-packet) -Get accumulated periodic scanning statistics. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | -------------------------- | -------------- | ---------- | +| 0x3D | 0x3DC | 0 | N/A | Statistics | -#### Return +#### Return (Get Periodic Scanning Statistics) + +- _RX ADV (4 Bytes):_ -_RX ADV (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | -| | +- _RX ADV CRC (4 Bytes):_ -_RX ADV CRC (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------------ | ----------------- | + | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------------------------------ | ----------------- | -| Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | +- _RX ADV Timeout (4 Bytes):_ -_RX ADV Timeout (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------------------------------- | ----------------- | + | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------------------------------- | ----------------- | -| Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | +- _RX Chain (4 Bytes):_ -_RX Chain (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------------------- | ----------------- | + | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------------------- | ----------------- | -| Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | +- _RX Chain CRC (4 Bytes):_ -_RX Chain CRC (4 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------------ | ----------------- | + | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| ------------------------------------------------ | ----------------- | -| Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | +- _RX Chain Timeout (4 Bytes):_ -_RX Chain Timeout (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------------------------- | ----------------- | -| Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | +- _Err Scan (4 Bytes):_ -_Err Scan (4 Bytes):_ + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | -| **Description** | **Value** | -| --------------------------------- | ----------------- | -| Number of scan transaction errors | 0x00 – 0xFFFFFFFF | +- _RX Setup (2 Bytes):_ -_RX Setup (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| RX packet setup watermark in microseconds | 0x00 – 0xFFFF | +- _TX Setup (2 Bytes):_ -_TX Setup (2 Bytes):_ + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ----------------------------------------- | ------------- | -| TX packet setup watermark in microseconds | 0x00 – 0xFFFF | +- _RX ISR (2 Bytes):_ -_RX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +- _TX ISR (2 Bytes):_ -_TX ISR (2 Bytes):_ + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | -| **Description** | **Value** | -| ------------------------------------------- | ------------- | -| TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | +--- ### Set Connection PHY TX Power -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | ------------------ | -| 0x3DD | 4 | Handle, Level, PHY | +Set power level during a connection for a given PHY. -#### Description +- Packet type: [Command Packet](#command-packet) -Set power level during a connection for a given PHY. +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------------- | ---------- | +| 0x3F | 0x3DD | 4 | {Handle, Level, PHY} | Status | -#### Parameters +#### Parameters (Set Connection PHY TX Power) -_Handle (2 Bytes):_ +- _Handle (2 Bytes):_ -| **Description** | **Value** | -| ----------------- | ----------------------------- | -| Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | -_Level (1 Byte, Signed 8-Bit):_ +- _Level (1 Byte, Signed 8-Bit):_ -| **Description** | **Value** | -| --------------- | --------- | -| Power Level | -15 - 6 | -| | + | **Description** | **Value** | + | --------------- | --------- | + | Power Level | -15 - 6 | -_PHY (1 Byte, Signed 8-Bit):_ +- _PHY (1 Byte, Signed 8-Bit):_ -| **Description** | **Value** | -| --------------- | --------- | -| 1M | 0x00 | -| 2M | 0x01 | -| Coded | 0x02 | -| | + | **Description** | **Value** | + | --------------- | --------- | + | 1M | 0x00 | + | 2M | 0x01 | + | Coded | 0x02 | +#### Return (Set Connection PHY TX Power) -#### Return +Returns a status byte -Status \ No newline at end of file +--- From 31c19a5319a8fc198dcab7951a9211fe2bf3a613 Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Thu, 7 Dec 2023 20:13:02 -0600 Subject: [PATCH 13/18] Update CSS to add line separators on headers --- Documentation/css/extra.css | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/Documentation/css/extra.css b/Documentation/css/extra.css index 0b2a9f33f80..51fc454e7cd 100644 --- a/Documentation/css/extra.css +++ b/Documentation/css/extra.css @@ -20,4 +20,50 @@ img { .rst-content pre code { border-color: black; border-radius: 8px; +} + +.rst-content h1, .rst-content h2, .rst-content h3, .rst-content h4 { + margin-bottom:0px; + margin-top:0px; +} + +h1::after { + display: inline-block; + content: ""; + border-top: .3rem solid; + border-radius: 1rem; + flex-grow: 1; /* This property makes the pseudo-element take up the remaining space */ + width: 100%; /* Set the width to 100% */ + transform: translateY(-0.5rem); +} + +h2::after { + display: inline-block; + content: ""; + border-top: .2rem solid; + border-radius: 1rem; + flex-grow: 1; /* This property makes the pseudo-element take up the remaining space */ + width: 100%; /* Set the width to 100% */ + transform: translateY(-0.5rem); +} + +h3::after +{ + display: inline-block; + content: ""; + border-top: .15rem solid lightgray; /* Change this line to adjust the style */ + flex-grow: 1; + width: 100%; + transform: translateY(-0.5rem); +} + +h4::after +{ + font-style: italic; + display: inline-block; + content: ""; + border-top: .1rem solid lightgray; /* Change this line to adjust the style */ + flex-grow: 1; + width: 100%; + transform: translateY(-0.5rem); } \ No newline at end of file From c91c116b7e19014eca618fb5ba627be96bd31884 Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Thu, 7 Dec 2023 20:13:28 -0600 Subject: [PATCH 14/18] Remove manual line separators --- .../docs/Tooling/HOST_CONTROLLER_INTERFACE.md | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md index ff8a28645bf..a2afde06352 100644 --- a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md +++ b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md @@ -107,7 +107,7 @@ _where N is the number of bytes to write_ Returns a status byte. ---- + ### Read Memory @@ -141,7 +141,7 @@ Read memory from a specified 32-bit address. | ----------------------------------------- | ---------------- | | _N_ bytes read from the specified address | {`0 - 0xFF`,...} | ---- + ### Reset Connection Stats @@ -157,7 +157,7 @@ Clear all connection statistics. Returns a status byte. ---- + ### VS TX Test @@ -216,7 +216,7 @@ Start a TX test using a specific number of packets. Returns a status byte. ---- + ### VS End Test @@ -254,7 +254,7 @@ End the current DTM test and return all test stats. | ---------------------------------------------- | ---------- | | Number of timeouts waiting to receive a packet | 0 - 0xFFFF | ---- + ### Set Scan Channel Map @@ -278,7 +278,7 @@ Set the channel map to scan on. Returns a status byte. ---- + ### Set Event Mask @@ -309,7 +309,7 @@ Enables or disables events the controller will flag. Returns a status byte. ---- + ### Enable ACL Sink @@ -335,7 +335,7 @@ Enables or disables asynchronous connection-oriented logical transport. Returns a status byte. ---- + ### Generate ACL @@ -375,7 +375,7 @@ Generate ACL for a specified connection. Returns a status byte. ---- + ### Enable Autogenerate ACL @@ -405,7 +405,7 @@ Enable or disable Autogenerate ACL. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Set TX Test Error Pattern @@ -429,7 +429,7 @@ Set the pattern of errors for the TX test mode. Returns a status byte. ---- + ### Set Connection Operational Flags @@ -468,7 +468,7 @@ Enable or disable connection operational flags for a given connection. Returns a status byte. ---- + ### Set P-256 Private Key @@ -493,7 +493,7 @@ Set P-256 private key or clear set private key. The private key will be used for Returns a status byte. ---- + ### Get channel map of periodic scan/adv @@ -530,7 +530,7 @@ Get the channel map used for periodic scanning or advertising. | ------------------------- | -------------- | | 5 | {0x00-0xFF, …} | ---- + ### Get ACL Test Report @@ -568,7 +568,7 @@ Get ACL Test Report. | ------------------------------ | ---------------- | | Number of generated ACL octets | 0x0 – 0xFFFFFFFF | ---- + ### Set Local Minimum Number of Used Channels @@ -606,7 +606,7 @@ Set local minimum number of used channels. Returns a status byte. ---- + ### Get Peer Minimum Number of Used Channels @@ -646,7 +646,7 @@ Get peer minimum number of used channels. | ----------------------- | --------- | | Coded min used channels | 1 – 37 | ---- + ### Set validate public key mode between ALT1 and ALT2 @@ -671,7 +671,7 @@ Set mode used to validate public key. Returns a status byte. ---- + ### Set BD Address @@ -695,7 +695,7 @@ Set the device address. Returns a status byte. ---- + ### Get Random Address @@ -715,7 +715,7 @@ Get random device address. | --------------- | -------------- | | Device Address | {0x00-0xFF, …} | ---- + ### Set Local Feature @@ -743,7 +743,7 @@ Set local supported features. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Set Operational Flags @@ -774,7 +774,7 @@ Enable or Disable Operational Flags. Returns a status byte. ---- + ### Get PDU Filter Statistics @@ -902,7 +902,7 @@ Get the accumulated PDU filter statistics. | ------------------------------------------ | ------------ | | Number of local address resolutions pended | 0x0 – 0xFFFF | ---- + ### Set Advertising TX Power @@ -926,7 +926,7 @@ Set the TX power used for advertising. Returns a status byte. ---- + ### Set Connection TX Power @@ -950,7 +950,7 @@ Set the TX power used for connections. Returns a status byte. ---- + ### Set Encryption Mode @@ -981,7 +981,7 @@ Set encryption mode for a given connection. Returns a status byte. ---- + ### Set Channel Map @@ -1011,7 +1011,7 @@ Set the channel map. Returns a status byte. ---- + ### Set Diagnostic Mode @@ -1036,7 +1036,7 @@ Enable/Disable PAL System Assert Trap. Returns a status byte. ---- + ### Enable Sniffer Packet Forwarding @@ -1061,7 +1061,7 @@ Enable/Disable sniffer packet forwarding. Returns a status byte. ---- + ### Get Memory Stats @@ -1208,7 +1208,7 @@ Read memory and system statistics. | ---------------------------- | ----------- | | Context size of CIS in bytes | 0x00-0xFFFF | ---- + ### Get Advertising Stats @@ -1282,7 +1282,7 @@ Get the accumulated advertising statistics. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | ---- + ### Get Scan Stats @@ -1368,7 +1368,7 @@ Get the statistics captured during scanning. | ------------------------------------------- | ----------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | ---- + ### Get Connection Stats @@ -1436,7 +1436,7 @@ Get the statistics captured during a connection. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | ---- + ### Get Test Stats @@ -1504,7 +1504,7 @@ Get the statistics captured during test mode. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | ---- + ### Get Pool Stats @@ -1563,7 +1563,7 @@ Set auxiliary packet offset delay. Returns a status byte ---- + ### Set Extended Advertising Data Fragmentation @@ -1597,7 +1597,7 @@ Set the extended advertising fragmentation length. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Set Extended Advertising PHY Options @@ -1637,7 +1637,7 @@ Set extended advertising PHY options. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Set Extended Advertising Default PHY Options @@ -1665,7 +1665,7 @@ Set the default TX PHY options for extended advertising slave primary and second | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Generate ISO Packets @@ -1705,7 +1705,7 @@ Generate ISO packets. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Get ISO Test Report @@ -1743,7 +1743,7 @@ Get statistics captured during ISO test. | ------------------------ | ----------------- | | Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | ---- + ### Enable ISO Packet Sink @@ -1772,7 +1772,7 @@ Enable or Disable ISO packet sink. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Enable Autogenerate ISO Packets @@ -1801,7 +1801,7 @@ Enable autogenerate ISO packets. | ------------------------- | ---------- | | 1 | Status Code | ---- + ### Get ISO Connection Statistics @@ -1869,7 +1869,7 @@ Get statistics captured during ISO connection. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | ---- + ### Get Auxiliary Advertising Statistics @@ -1949,7 +1949,7 @@ Get accumulated auxiliary advertising stats. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | ---- + ### Get Auxiliary Scanning Statistics @@ -2053,7 +2053,7 @@ Get accumulated auxiliary scanning statistics. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | ---- + ### Get Periodic Scanning Statistics @@ -2134,7 +2134,7 @@ Get accumulated periodic scanning statistics. | ------------------------------------------- | ------------- | | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | ---- + ### Set Connection PHY TX Power @@ -2172,4 +2172,4 @@ Set power level during a connection for a given PHY. Returns a status byte ---- + From 60b8a388872eaf2da42937dec978feff41921fee Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Thu, 7 Dec 2023 20:38:35 -0600 Subject: [PATCH 15/18] Consolidate HCI docs to Cordio UG, update header CSS --- Documentation/css/extra.css | 6 +- Libraries/Cordio/docs/CORDIO_USERGUIDE.md | 2176 ++++++++++++++++- .../docs/Tooling/HOST_CONTROLLER_INTERFACE.md | 2175 ---------------- 3 files changed, 2177 insertions(+), 2180 deletions(-) delete mode 100644 Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md diff --git a/Documentation/css/extra.css b/Documentation/css/extra.css index 51fc454e7cd..9ea4defda55 100644 --- a/Documentation/css/extra.css +++ b/Documentation/css/extra.css @@ -30,7 +30,7 @@ img { h1::after { display: inline-block; content: ""; - border-top: .3rem solid; + border-top: .2rem solid; border-radius: 1rem; flex-grow: 1; /* This property makes the pseudo-element take up the remaining space */ width: 100%; /* Set the width to 100% */ @@ -40,7 +40,7 @@ h1::after { h2::after { display: inline-block; content: ""; - border-top: .2rem solid; + border-top: .1rem solid lightgray; border-radius: 1rem; flex-grow: 1; /* This property makes the pseudo-element take up the remaining space */ width: 100%; /* Set the width to 100% */ @@ -51,7 +51,7 @@ h3::after { display: inline-block; content: ""; - border-top: .15rem solid lightgray; /* Change this line to adjust the style */ + border-top: .1rem solid lightgray; /* Change this line to adjust the style */ flex-grow: 1; width: 100%; transform: translateY(-0.5rem); diff --git a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md index 129967d6f6d..49fa110524c 100644 --- a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md +++ b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md @@ -305,8 +305,2180 @@ Documentation for each of the supporting applications can be found below: - [BLE Periph](Applications/BLE_periph.md) - [RF Test](Applications/RF_Test.md) -### Test and Toolkits -- [HCI](Tooling/HOST_CONTROLLER_INTERFACE.md) +## HCI Documentation + +The Host Controller Interface (HCI) is the common point where devices are split. Typically this interface is over an asynchronous protocol such as UART. Some devices will define proprietary interfaces between the application and host layers. Multi-core SOCs can also use the HCI or proprietary interfaces to split the stack between multiple CPUs. + +### Packets +All contents in the packets are formatted little endian unless stated otherwise + +#### Packet Types + +| Packet | Packet Type | +| ---------- | ----------- | +| Command | 0x01 | +| Async Data | 0x02 | +| Sync Data | 0x03 | +| Event | 0x04 | + +##### Command Packet + +The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. + +Here is a general overview of the HCI command packet structure: + +| Type (1 Byte) | OpCode (2 Bytes) | Parameters (N Bytes) | +| ------------- | ---------------- | -------------------- | +| 0x01 | 0xXXXX | ... | + +Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) + +``` +Opcode = (OGF << 10) | OCF +``` + +Below is an example of the BLE standard command for reset + +RESET + +| OGF | OCF | Paramters | +| --- | --- | ---------- | +| 0x3 | 0x3 | Length = 0 | + +``` +Type = 0x1 +Opcode = (0x3 << 10) | 0x3 = 0x0C03 +Parmeters = 0 + +Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} +``` + +**Note the little endian format of the opcode** + +##### Async Data Packet + +The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. + +| Handle (12 Bits) | PB Flag (2 Bits) | BC Flag (2 Bits) | Total Length (2 Bytes) | Data (Total Length) | +| ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | +| 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | + +##### Sync Data Packet + +This synchronous data packet is not used in BLE. + +##### Event Data Packet + +The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: + +| Type (1 Byte) | Event Code (2 Bytes) | Event Params (N Bytes) | +| ------------- | -------------------- | ---------------------- | +| 0x04 | 0xXX | ... | + + + +### Vendor Specific Commands + +**OGF** : 0x3F + +**MAX\_NUMBER\_CONNECTIONS**: set at application layer by user. + +NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. + +#### Write Memory + +Write N bytes to a specified 32-bit address. + +Packet type: Command Packet + +| **OGF** | **OCF** | ** Length (bytes) ** | * *Parameters** | **Return** | +| ------- | ------- | ------------------- | ----------------- | ---------- | +| 0x3F | 0x300 | 5 + N | {Length, Address} | Status | + +_where N is the number of bytes to write_ + +##### Parameters (Write Memory) + +- _Length_ : + + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Number of bytes to write to address | `0 – 0xFF` | + +- _Address_ : Address to read data from + + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Address to write data to | `0 - 0xFFFFFFFF` | + +##### Return (Write Memory) + +Returns a status byte. + + + +#### Read Memory + +Read memory from a specified 32-bit address. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | --------------------------- | ----------------- | ---------- | +| 0x3F | 0x301 | 5 | {Length, Address} | Data (N) | + +##### Parameters (Read Memory) + +- _Length_ : + + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Number of bytes to read from address | `0 – 0xFF` | + +- _Address_ : Address to read data from + + | **Description** | **Value** | + | ------------------------------------ | ----------------- | + | Address to read data from | `0 - 0xFFFFFFFF` | + +##### Return (Read Memory) + +- _Data_ (N) : + + | **Description** | **Value** | + | ----------------------------------------- | ---------------- | + | _N_ bytes read from the specified address | {`0 - 0xFF`,...} | + + + +#### Reset Connection Stats + +Clear all connection statistics. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | ** Param. Length (bytes) ** | **Parameters** | +| ------- | ------- | ------------------------- | --------------- | +| 0x3F | 0x302 | 0 | N/A | + +##### Return (Reset Connection Stats) + +Returns a status byte. + + + +#### VS TX Test + +Start a TX test using a specific number of packets. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------------------------------------------- | ---------- | +| 0x3F | 0x303 | 6 | {RF Channel, Packet Length, Packet Type, PHY, Num Packets} | Status | + +##### Parameters (VS TX Test) + +- _RF Channel (1 Byte):_ + + | **Description** | **Value** | + | ------------------------- | --------- | + | RF channel to transmit on | 0 – 39 | + +- _Packet Length (1 Byte):_ + + | **Description** | **Value** | + | -------------------------------- | --------- | + | Number of bytes in a single packet | 0 - 255 | + +- _Packet Type (1 Byte):_ + + | **Description** | **Value** | + | ------------------------- | --------- | + | PRBS9 | 0x00 | + | 00001111'b packet payload | 0x01 | + | 01010101'b packet payload | 0x02 | + | PRBS15 | 0x03 | + | 11111111'b packet payload | 0x04 | + | 00000000'b packet payload | 0x05 | + | 11110000'b packet payload | 0x06 | + | 10101010'b packet payload | 0x07 | + +- _PHY (1 Byte):_ + + | **Description** | **Value** | + | ----------------- | --------- | + | 1M | 0x01 | + | 2M | 0x02 | + | Coded Unspecified | 0x03 | + | Coded S8 | 0x04 | + | Coded S2 | 0x05 | + +- _Num Packets (2 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------------------- | ---------- | + | Number of packets to send over the course of the test | 0 - 0xFFFF | + +##### Return (VS TX Test) + +Returns a status byte. + + + +#### VS End Test + +End the current DTM test and return all test stats. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | -------------- | +| 0x3F | 0x304 | 0 | N/A | {TX Data, RX Data Ok, RX Data CRC, RX Data Timeout} | + +##### Return (VS End Test) + +- _TX Data (2 Bytes)_ : Number of packets transmitted + + | **Description** | **Value** | + | ----------------------------- | ---------- | + | Number of packets transmitted | 0 - 0xFFFF | + +- _RX Data Ok (2 Bytes)_ : Number of packets received ok + + | **Description** | **Value** | + | ----------------------------- | ---------- | + | Number of packets received ok | 0 – 0xFFFF | + +- _RX Data CRC (2 Bytes)_ : Number of packets received with a CRC error + + | **Description** | **Value** | + | ------------------------------------------- | ---------- | + | Number of packets received with a CRC error | 0 - 0xFFFF | + +- _RX Data Timeout (2 Bytes)_ : Number of timeouts waiting to receive a packet + + | **Description** | **Value** | + | ---------------------------------------------- | ---------- | + | Number of timeouts waiting to receive a packet | 0 - 0xFFFF | + + + +#### Set Scan Channel Map + +Set the channel map to scan on. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x301 | 1 | Channel Map | Status | + +##### Parameters (Set Scan Channel Map) + +- _Channel Map (1 Byte):_ + + | **Description** | **Value** | + | ------------------------ | --------- | + | Channel map used to scan | 0 – 0xFF | + +##### Return (Set Scan Channel Map) + +Returns a status byte. + + + +#### Set Event Mask + +Enables or disables events the controller will flag. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E1 | 5 | {Mask, Enable} | Status | + +##### Parameters (Set Event Mask) + +- _Mask (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------------- | ------------------------ | + | Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | + +##### Return (Set Event Mask) + +Returns a status byte. + + + + +#### Enable ACL Sink + +Enables or disables asynchronous connection-oriented logical transport. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E3 | 1 | {Enable} | Status | + +##### Parameters (Enable ACL Sink) + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | + +##### Return (Enable ACL Sink) + +Returns a status byte. + + + +#### Generate ACL + +Generate ACL for a specified connection. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ----------------------------------- | ---------- | +| 0x3F | 0x3E4 | 5 | {Handle, Packet Length, Num Packets} | Status | + +##### Parameters (Generate ACL) + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + + MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. + +- _Packet Length (2 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | -------------------- | + | Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | + + MAX\_ACL\_LEN set at the application layer by the user. + +- _Num Packets (1 Byte):_ + + | **Description** | **Value** | + | ------------------------------------------ | ----------- | + | Number of packets to send in generated ACL | 0x00 – 0xFF | + +##### Return (Generate ACL) + +Returns a status byte. + + + + +#### Enable Autogenerate ACL + +Enable or disable Autogenerate ACL. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E3 | 1 | {Enable} | Status | + +##### Parameters (Enable Autogenerate ACL) + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | + +##### Return (Enable Autogenerate ACL) + +- _Status (1 Byte)_ : Status of the Enable Autogenerate ACL command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Set TX Test Error Pattern + +Set the pattern of errors for the TX test mode. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3E6 | 4 | {Error Pattern} | Status | + +##### Parameters (Set TX Test Error Pattern) + +- _Error Pattern (1 Byte):_ + + | **Description** | **Value** | + | ------------------------------- | ---------------- | + | 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | + +##### Return (Set TX Test Error Pattern) + +Returns a status byte. + + + +#### Set Connection Operational Flags + +Enable or disable connection operational flags for a given connection. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------- | ---------- | +| 0x3F | 0x3E7 | 7 | {Handle, Flags, Enable} | Status | + +##### Parameters (Set Connection Operational Flags) + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + + MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. + +- _Flags (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------- | ---------------- | + | Flags to enable or disable | 0x0 – 0xFFFFFFFF | + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | + +##### Return (Set Connection Operational Flags) + +Returns a status byte. + + + +#### Set P-256 Private Key + +Set P-256 private key or clear set private key. The private key will be used for generating key pairs and Diffie-Hellman keys until cleared. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ----------------- | ---------- | +| 0x3F | 0x3E8 | 32 | {Private Key} | Status | + +##### Parameters (Set P-256 Private Key) + +- _Private Key (32 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------- | + | Clear Private Key | 0x00… | + | Private Key | 0x1 – 0xFF… | + +##### Return (Set P-256 Private Key) + +Returns a status byte. + + + +#### Get channel map of periodic scan/adv + +Get the channel map used for periodic scanning or advertising. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ----------------------------- | ----------- | +| 0x3F | 0x3DE | 3 | {Advertising Handle, Advertising} | Channel Map | + +##### Parameters (Get channel map of periodic scan/adv) + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------- | ----------------------------- | + | Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + + MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. + +- _Advertising (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Scanner | 0x00 | + | Advertiser | 0x01 | + +##### Return (Get channel map of periodic scan/adv) + +- _Channel Map (5 Bytes)_ : Channel map used for periodic scanning or advertising. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | -------------- | + | 5 | {0x00-0xFF, …} | + + + +#### Get ACL Test Report + +Get ACL Test Report. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3E9 | 0 | N/A | {Report Data} | + +##### Return (Get ACL Test Report) + +- _RX ACL Packet Count (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------ | ---------------- | + | Number of ACL packets received | 0x0 – 0xFFFFFFFF | + +- _RX ACL Octet Count (4 Bytes):_ + + | **Description** | **Value** | + | ----------------------------- | ---------------- | + | Number of ACL octets received | 0x0 – 0xFFFFFFFF | + +- _Generated ACL Packet Count (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------- | ---------------- | + | Number of generated ACL packets | 0x0 – 0xFFFFFFFF | + +- _Generated ACL Octet Count (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------ | ---------------- | + | Number of generated ACL octets | 0x0 – 0xFFFFFFFF | + + + +#### Set Local Minimum Number of Used Channels + +Set local minimum number of used channels. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------------------------- | ---------- | +| 0x3F | 0x3EA | 3 | {PHYs, Power Threshold, Min Used Channels} | Status | + +##### Parameters (Set Local Minimum Number of Used Channels) + +- _PHYs (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | 1M | 0x1 | + | 2M | 0x2 | + | Coded | 0x3 | + +- _Power Threshold (1 Byte, signed 8-Bit):_ + + | **Description** | **Value** | + | ----------------------- | --------- | + | Power Threshold for PHY | +/-127 | + +- _Min Used Channels (1 Byte):_ + + | **Description** | **Value** | + | ------------------------------- | --------- | + | Minimum number of used channels | 1 - 37 | + +##### Return (Set Local Minimum Number of Used Channels) + +Returns a status byte. + + + +#### Get Peer Minimum Number of Used Channels + +Get peer minimum number of used channels. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3EB | 2 | {Handle} | {1M PHY, 2M PHY, Coded PHY} | + +##### Parameters (Get Peer Minimum Number of Used Channels) + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +##### Return (Get Peer Minimum Number of Used Channels) + +- _1M PHY (1 Byte):_ + + | **Description** | **Value** | + | -------------------- | --------- | + | 1M min used channels | 1 - 37 | + +- _2M PHY (1 Byte):_ + + | **Description** | **Value** | + | -------------------- | --------- | + | 2M min used channels | 1 - 37 | + +- _Coded PHY (1 Byte):_ + + | **Description** | **Value** | + | ----------------------- | --------- | + | Coded min used channels | 1 – 37 | + + + +#### Set validate public key mode between ALT1 and ALT2 + +Set mode used to validate public key. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------------- | ---------- | +| 0x3F | 0x3EC | 1 | {Validate Mode} | Status | + +##### Parameters (Set validate public key mode between ALT1 and ALT2) + +- _Validate Mode (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | ALT2 | 0x0 | + | ALT1 | 0x1 | + +##### Return (Set validate public key mode between ALT1 and ALT2) + +Returns a status byte. + + + +#### Set BD Address + +Set the device address. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------------- | ---------- | +| 0x3F | 0x3F0 | 6 | {BD Address} | Status | + +##### Parameters (Set BD Address) + +- _BD Address (6 Bytes):_ + + | **Description** | **Value** | + | --------------- | -------------- | + | Device Address | {0x00-0xFF, …} | + +##### Return (Set BD Address) + +Returns a status byte. + + + +#### Get Random Address + +Get random device address. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3F1 | 0 | N/A | {BD Address} | + +##### Return (Get Random Address) + +- _BD Address (6 Bytes):_ + + | **Description** | **Value** | + | --------------- | -------------- | + | Device Address | {0x00-0xFF, …} | + + + +#### Set Local Feature + +Set local supported features. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ------------------ | ---------- | +| 0x3F | 0x3F2 | 8 | {Local Features} | Status | + +##### Parameters (Set Local Feature) + +- _Local Features (8 Bytes):_ + + | **Description** | **Value** | + | ---------------------- | ------------------------- | + | Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | + +##### Return (Set Local Feature) + +- _Status (1 Byte)_ : Status of the Set Local Feature command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Set Operational Flags + +Enable or Disable Operational Flags. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ------------------ | ---------- | +| 0x3F | 0x3F3 | 5 | {Flags, Enable} | Status | + +##### Parameters (Set Operational Flags) + +- _Flags (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------- | ---------------- | + | Flags to enable or disable | 0x0 – 0xFFFFFFFF | + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | + +##### Return (Set Operational Flags) + +Returns a status byte. + + + +#### Get PDU Filter Statistics + +Get the accumulated PDU filter statistics. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F4 | 0 | N/A | Statistics | + +##### Return (PDU Filter Statistics) + +- _Fail PDU Type Filter_ (2 Bytes) : + + | **Description** | **Value** | + | -------------------------------------- | ------------ | + | Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | + +- _Pass PDU Type Filter_ (2 Bytes) : + + | **Description** | **Value** | + | -------------------------------------- | ------------ | + | Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | + +- _Fail Whitelist Filter_ (2 Bytes) : + + | **Description** | **Value** | + | --------------------------------------- | ------------ | + | Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | + +- _Pass Whitelist Filter_ (2 Bytes) : + + | **Description** | **Value** | + | ---------------------------------------- | ------------ | + | Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | + +- _Fail Peer Address Match_ (2 Bytes) : + + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of PDUs failing peer address match | 0x0 – 0xFFFF | + +- _Pass Peer Address Match_ (2 Bytes) : + + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of PDUs passing peer address match | 0x0 – 0xFFFF | + +- _Fail Local Address Match_ (2 Bytes) : + + | **Description** | **Value** | + | ------------------------------------------ | ------------ | + | Number of PDUs failing local address match | 0x0 – 0xFFFF | + +- _Pass Local Address Match_ (2 Bytes) : + + | **Description** | **Value** | + | ------------------------------------------ | ------------ | + | Number of PDUs passing local address match | 0x0 – 0xFFFF | + +- _Fail Peer RPA Verify_ (2 Bytes) : + + | **Description** | **Value** | + | ---------------------------------------- | ------------ | + | Number of peer RPAs failing verification | 0x0 – 0xFFFF | + +- _Pass Peer RPA Verify_ (2 Bytes) : + + | **Description** | **Value** | + | ---------------------------------------- | ------------ | + | Number of peer RPAs passing verification | 0x0 – 0xFFFF | + +- _Fail Local RPA Verify_ (2 Bytes) : + + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of local RPAs failing verification | 0x0 – 0xFFFF | + +- _Pass Local RPA Verify_ (2 Bytes) : + + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of local RPAs passing verification | 0x0 – 0xFFFF | + +- _Fail Peer Private Address_ (2 Bytes) : + + | **Description** | **Value** | + | ------------------------------------------------------- | ------------ | + | Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | + +- _Fail Local Private Address_ (2 Bytes) : + + | **Description** | **Value** | + | -------------------------------------------------------- | ------------ | + | Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | + +- _Fail Peer Address Res Req_ (2 Bytes) : + + | **Description** | **Value** | + | ------------------------------------------------------- | ------------ | + | Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | + +- _Pass Peer Address Res Req_ (2 Bytes) : + + | **Description** | **Value** | + | ------------------------------------------------------- | ------------ | + | Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | + +- _Pass Local Address Res Opt._ (2 Bytes) : + + | **Description** | **Value** | + | -------------------------------------------------------- | ------------ | + | Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | + +- _Peer Res Address Pend_ (2 Bytes) : + + | **Description** | **Value** | + | ----------------------------------------- | ------------ | + | Number of peer address resolutions pended | 0x0 – 0xFFFF | + +- _Local Res Address Pend_ (2 Bytes) : + + | **Description** | **Value** | + | ------------------------------------------ | ------------ | + | Number of local address resolutions pended | 0x0 – 0xFFFF | + + + +#### Set Advertising TX Power + +Set the TX power used for advertising. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F5 | 1 | {Power} | Status | + +##### Parameters (Set Advertising TX Power) + +- _Power (1 Byte, Signed 8-Bit):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Power | -15 - 6 | + +##### Return (Set Advertising TX Power) + +Returns a status byte. + + + +#### Set Connection TX Power + +Set the TX power used for connections. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F6 | 1 | {Power} | Status | + +##### Parameters (Set Connection TX Power) + +- _Power (1 Byte, Signed 8-Bit):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Power | -15 - 6 | + +##### Return (Set Connection TX Power) + +Returns a status byte. + + + +#### Set Encryption Mode + +Set encryption mode for a given connection. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ------------------------ | ---------- | +| 0x3F | 0x3F7 | 4 | {Enable Auth, Nonce Mode, Handle} | Status | + +##### Parameters (Set Encryption Mode) + +- _Enable Auth (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x0 | + | Enable | 0x1 | + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +##### Return (Set Encryption Mode) + +Returns a status byte. + + + +#### Set Channel Map + +Set the channel map. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------- | ---------- | +| 0x3F | 0x3F8 | 6 | {Handle, Channel Map} | Status | + +##### Parameters (Set Channel Map) + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +- _Channel Map (4 Bytes):_ + + | **Description** | **Value** | + | --------------- | ----------------- | + | Channel Map | 0x00 – 0xFFFFFFFF | + +##### Return (Set Channel Map) + +Returns a status byte. + + + +#### Set Diagnostic Mode + +Enable/Disable PAL System Assert Trap. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3F9 | 1 | {Enable} | Status | + +##### Parameters (Set Diagnostic Mode) + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x0 | + | Enable | 0x1 | + +##### Return (Set Diagnostic Mode) + +Returns a status byte. + + + +#### Enable Sniffer Packet Forwarding + +Enable/Disable sniffer packet forwarding. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3CD | 1 | {Enable} | Status | + +##### Parameters (Enable Sniffer Packet Forwarding) + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x0 | + | Enable | 0x1 | + +##### Return (Enable Sniffer Packet Forwarding) + +Returns a status byte. + + + + +#### Get Memory Stats + +Read memory and system statistics. + +- Packet type: [Command Packet](#command-packet) + +| **OCF** | **Length** | **Parameters** | +| ------- | ---------- | -------------- | +| 0x3FA | 0 | N/A | + +##### Return (Get Memory Stats) + +- _Stack Usage (2 Byte):_ + + | **Description** | **Value** | + | ----------------------------- | ------------ | + | Number of bytes used by stack | 0x0 – 0xFFFF | + + +- _Sys Assert Count (2 Byte):_ + + | **Description** | **Value** | + | ------------------------------ | ------------ | + | Number of times assertions hit | 0x0 – 0xFFFF | + +- _Free Memory (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------- | ---------------- | + | Memory free for stack usage | 0x0 – 0xFFFFFFFF | + +- _Used Memory (4 Bytes):_ + + | **Description** | **Value** | + | -------------------- | ----------------- | + | Memory used by stack | 0x00 – 0xFFFFFFFF | + +- _Max Connections (2 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | ------------------------------- | + | Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | + +- _Connection Context Size (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | Number of bytes used for connection context | 0x00 – 0xFFFF | + +- _CS Watermark Level (2 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------- | ------------- | + | Critical section watermark duration in microseconds | 0x00 – 0xFFFF | + +- _LL Handler Watermark Level (2 Byte):_ + + | **Description** | **Value** | + | ------------------------------------------ | ------------- | + | LL handler watermark level in microseconds | 0x00 – 0xFFFF | + +- _Sch Handler Watermark Level (2 Byte):_ + + | **Description** | **Value** | + | ------------------------------------------------- | ------------- | + | Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | + +- _LHCI Handler Watermark Level (2 Byte):_ + + | **Description** | **Value** | + | -------------------------------------------- | ------------- | + | LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | + +- _Max Adv Sets (2 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------- | ------------- | + | Maximum number of advertising sets | 0x00 – 0xFFFF | + +- _Adv Set Context Size (2 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------------- | ------------- | + | Size of advertising set context in bytes | 0x00 – 0xFFFF | + +- _Ext Scan Max (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------- | ------------ | + | Maximum number of extended scanners | 0x0 – 0xFFFF | + +- _Ext Scan Context Size (2 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------- | ------------- | + | Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | + +- _Max Num Extended Init (2 Bytes):_ + + | **Description** | **Value** | + | -------------------------------------- | ------------- | + | maximum number of extended initiators. | 0x00 – 0xFFFF | + +- _Ext Init Context Size (2 Byte):_ + + | **Description** | **Value** | + | ----------------------------------------------------- | ------------- | + | Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | + +- _Max Periodic Scanners (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------- | ----------- | + | Maximum number of periodic scanners | 0x00-0xFFFF | + +- _Periodic Scanners Context Size(2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------ | ----------- | + | Context size of periodic scanners in bytes | 0x00-0xFFFF | + +- _Max CIG (2 Bytes):_ + + | **Description** | **Value** | + | --------------------- | ----------- | + | Maximum number of CIG | 0x00-0xFFFF | + +- _CIG Context Size (2 Bytes):_ + + | **Description** | **Value** | + | ---------------------------- | ----------- | + | Context size of CIG in bytes | 0x00-0xFFFF | +- _Max CIS (2 Bytes):_ + + | **Description** | **Value** | + | --------------------- | ----------- | + | Maximum number of CIS | 0x00-0xFFFF | + +- _CIS Context Size (2 Bytes):_ + + | **Description** | **Value** | + | ---------------------------- | ----------- | + | Context size of CIS in bytes | 0x00-0xFFFF | + + + +#### Get Advertising Stats + +Get the accumulated advertising statistics. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3FB | 0 | N/A | Advertising Stats | + +##### Return (Advertising Stats) + +- _TX ADV (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------- | ----------------- | + | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | + +- _RX Req (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------------------------- | ----------------- | + | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | + +- _RX Req CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------- | ----------------- | + | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX Req Timeout (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------------- | ----------------- | + | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _TX RSP (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------- | ----------------- | + | Number of sent response packets | 0x00 – 0xFFFFFFFF | + +- _Err ADV (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------------- | ----------------- | + | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + + + +#### Get Scan Stats + +Get the statistics captured during scanning. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3F | 0x3FC | 0 | N/A | Scan Stats | + +##### Return (Scan Stats) + +- _RX ADV (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | + +- _RX ADV CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------ | ----------------- | + | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX ADV Timeout (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------------- | ----------------- | + | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _TX Req (4 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------- | ----------------- | + | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | + +- _RX RSP (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------ | ----------------- | + | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | + +- _RX RSP CRC (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------------------- | ----------------- | + | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX RSP Timeout (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------------ | ----------------- | + | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _Err Scan (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ----------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ----------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ----------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ----------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | + + + +#### Get Connection Stats + +Get the statistics captured during a connection. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | -------------- | +| 0x3F | 0x3FD | 0 | N/A | Connection Stats | + +##### Return (Connection Stats) + +- _RX Data (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------------------------- | ----------------- | + | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | + +- _RX Data CRC (4 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------------- | ----------------- | + | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | + +- _RX Data Timeout (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------------------------------- | ----------------- | + | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | + +- _TX Data (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------- | ----------------- | + | Number of sent data packets | 0x00 - 0xFFFFFFFF | + +- _Err Data (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of data transaction errors | 0x00 - 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + + + +#### Get Test Stats + +Get the statistics captured during test mode. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | --------------------------------- | +| 0x3F | 0x3FE | 0 | N/A | Test stats in order as documented | + +##### Return (Get Test Stats) + +- _RX Data (4 Bytes)_ + + | **Description** | **Value** | + | -------------------------------------------- | ----------------- | + | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | + +- _RX Data CRC (4 Bytes)_ + + | **Description** | **Value** | + | ----------------------------------------------- | ----------------- | + | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | + +- _RX Data Timeout (4 Bytes)_ + + | **Description** | **Value** | + | -------------------------------------------------- | ----------------- | + | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | + +- _TX Data (4 Bytes)_ + + | **Description** | **Value** | + | --------------------------- | ----------------- | + | Number of sent data packets | 0x00 - 0xFFFFFFFF | + +- _Err Data (4 Bytes)_ + + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of data transaction errors | 0x00 - 0xFFFFFFFF | + +- _RX Setup (2 Bytes)_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | + +- _TX Setup (2 Bytes)_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | + +- _RX ISR (2 Bytes)_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + +- _TX ISR (2 Bytes)_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + + + +#### Get Pool Stats + +Get the memory pool statistics captured during runtime. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | ---------------------------------- | +| 0x3F | 0x3FF | 0 | N/A | {Num Pool, {Buf Size, Num Buf, Num Alloc, Max Alloc, Max Req Len} * Num Pool} | + +##### Return (Get Pool Stats) + +- _Num Pool (1 Byte):_ + + | **Description** | **Value** | + | ----------------------- | ----------- | + | Number of pools defined | 0x00 – 0xFF | + +- _Pool Stats (variable):_ + + | **Description** | **Value** | + | --------------------------------- | ------------- | + | _Buf Size (2 Bytes):_ | 0x00 – 0xFFFF | + | _Num Buf (1 Byte):_ | 0x00 – 0xFF | + | _Num Alloc (1 Byte):_ | 0x00 – 0xFF | + | _Max Alloc (1 Byte):_ | 0x00 – 0xFF | + | _Max Req Len (2 Bytes):_ | 0x00 – 0xFFFF | + +#### Set Additional AuxPtr Offset + +Set auxiliary packet offset delay. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | ---------- | +| 0x3F | 0x3D0 | 5 | {Delay, Handle} | Status | + +##### Parameters (Set Additional AuxPtr Offset) + +- _Delay (4 Bytes):_ + + | **Description** | **Value** | + | --------------------- | ---------------- | + | Disable | 0x00 | + | Delay in microseconds | 0x1 – 0xFFFFFFFF | + +- _Handle (1 Byte):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +##### Return (Set Additional AuxPtr Offset) + +Returns a status byte + + + +#### Set Extended Advertising Data Fragmentation + +Set the extended advertising fragmentation length. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------------- | ---------- | +| 0x3D | 0x3D1 | 2 | {Handle, Frag Length} | Status | + +##### Parameters (Set Extended Advertising Data Fragmentation) + +- _Handle (1 Byte):_ + + | **Description** | **Value** | + | ------------------ | ----------------------------- | + | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +- _Frag Length (1 Byte):_ + + | **Description** | **Value** | + | -------------------- | --------- | + | Fragmentation Length | 0x00-0xFF | + +##### Return (Set Extended Advertising Data Fragmentation) + +- _Status (1 Byte)_ : Status of the Set Extended Advertising Data Fragmentation command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Set Extended Advertising PHY Options + +Set extended advertising PHY options. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------------- | ---------- | +| 0x3D | 0x3D2 | 3 | {Handle, Primary Opt., Secondary Opt.} | Status | + +##### Parameters (Set Extended Advertising PHY Options) + +- _Handle (1 Byte):_ + + | **Description** | **Value** | + | ----------------------- | ----------------------------- | + | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +- _Primary Opt. (1 Byte):_ + + | **Description** | **Value** | + | ---------------------------------------- | --------- | + | Primary advertising channel PHY options. | 0x00-0xFF | + +- _Secondary Opt. (1 Byte):_ + + | **Description** | **Value** | + | ------------------------------------------ | --------- | + | Secondary advertising channel PHY options. | 0x00-0xFF | + +##### Return (Set Extended Advertising PHY Options) + +- _Status (1 Byte)_ : Status of the Set Extended Advertising PHY Options command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Set Extended Advertising Default PHY Options + +Set the default TX PHY options for extended advertising slave primary and secondary channel. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | --------------- | ---------- | +| 0x3D | 0x3D3 | 1 | {PHY Opt.} | Status | + +##### Parameters (Set Extended Advertising Default PHY Options) + +- _PHY Opt. (1 Byte):_ + + | **Description** | **Value** | + | --------------- | ----------- | + | PHY Options | 0x00 – 0xFF | + +##### Return (Set Extended Advertising Default PHY Options) + +- _Status (1 Byte)_ : Status of the Set Extended Advertising Default PHY Options command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Generate ISO Packets + +Generate ISO packets. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------------------------- | ---------- | +| 0x3D | 0x3D5 | 5 | {Handle, Packet Length, Num Packets} | Status | + +##### Parameters (Generate ISO Packets) + +- _Handle (2 Byte):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +- _Packet Length (2 Byte):_ + + | **Description** | **Value** | + | --------------- | ----------- | + | Packet Length | 0x00-0xFFFF | + +- _Num Packets (1 Byte):_ + + | **Description** | **Value** | + | ----------------- | --------- | + | Number of packets | 0x00-0xFF | + +##### Return (Generate ISO Packets) + +- _Status (1 Byte)_ : Status of the Generate ISO Packets command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Get ISO Test Report + +Get statistics captured during ISO test. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------------------------------------------------------------- | ----------- | +| 0x3D | 0x3D6 | 16 | {RX ISO Packet Count, RX ISO Octet Count, Generate Packet Count, Generate Octet Count} | Status Code | + +##### Return (Get ISO Test Report) + +- _RX ISO Packet Count (4 Byte):_ + + | **Description** | **Value** | + | ------------------------ | ----------------- | + | Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | + +- _RX ISO Octet Count (4 Byte):_ + + | **Description** | **Value** | + | ----------------------- | ----------------- | + | Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | + +- _Generate Packet Count (4 Byte):_ + + | **Description** | **Value** | + | ------------------------- | ----------------- | + | Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | + +- _Generate Octet Count (4 Byte):_ + + | **Description** | **Value** | + | ------------------------ | ----------------- | + | Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | + + + +#### Enable ISO Packet Sink + +Enable or Disable ISO packet sink. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ---------- | +| 0x3D | 0x3D7 | 1 | {Enable} | Status | + +##### Parameters (Enable ISO Packet Sink) + +- _Enable (1 Byte):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Disable | 0x00 | + | Enable | 0x01 | + +##### Return (Enable ISO Packet Sink) + +- _Status (1 Byte)_ : Status of the Enable ISO Packet Sink command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Enable Autogenerate ISO Packets + +Enable autogenerate ISO packets. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | ---------------- | ---------- | +| 0x3D | 0x3D8 | 2 | {Packet Length} | Status | + +##### Parameters (Enable Autogenerate ISO Packets) + +- _Packet Length (2 Bytes):_ + + | **Description** | **Value** | + | --------------- | ------------- | + | Disable | 0x00 | + | Length | 0x01 – 0xFFFF | + +##### Return (Enable Autogenerate ISO Packets) + +- _Status (1 Byte)_ : Status of the Enable Autogenerate ISO Packets command execution. + + | **Return Length (bytes)** | **Value** | + | ------------------------- | ---------- | + | 1 | Status Code | + + + +#### Get ISO Connection Statistics + +Get statistics captured during ISO connection. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | -------------- | +| 0x3E | 0x3D9 | 0 | N/A | RX, TX, Err... | + +##### Return (Get ISO Connection Statistics) + +- _RX Data (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------------------------- | ----------------- | + | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | + +- _RX Data CRC (4 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------------- | ----------------- | + | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | + +- _RX Data Timeout (4 Bytes):_ + + | **Description** | **Value** | + | -------------------------------------------------- | ----------------- | + | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | + +- _TX Data (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------- | ----------------- | + | Number of sent data packets | 0x00 - 0xFFFFFFFF | + +- _Err Data (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of data transaction errors | 0x00 - 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | + + + +#### Get Auxiliary Advertising Statistics + +Get accumulated auxiliary advertising stats. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------- | ----------- | +| 0x3F | 0x3DA | 0 | N/A | {TX ADV, RX Req, RX Req CRC, RX Req Timeout, TX RSP, TX Chain, Err ADV, RX Setup, TX Setup, RX ISR, TX ISR} | + +##### Return + +- _TX ADV (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------- | ----------------- | + | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | + +- _RX Req (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------------------------- | ----------------- | + | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | + +- _RX Req CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------- | ----------------- | + | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX Req Timeout (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------------- | ----------------- | + | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _TX RSP (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------- | ----------------- | + | Number of sent response packets | 0x00 – 0xFFFFFFFF | + +- _TX Chain (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------- | ----------------- | + | Number of sent chain packets | 0x00 – 0xFFFFFFFF | + +- _Err ADV (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------------- | ----------------- | + | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + + + +#### Get Auxiliary Scanning Statistics + +Get accumulated auxiliary scanning statistics. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | -------------------------- | -------------- | ----------- | +| 0x3F | 0x3DB | 0 | N/A | Statistics | + +##### Return (Auxiliary Scanning Statistics) + +- _RX ADV (4 Bytes):_ + + | **Description** | **Value** | + | ---------------------------------- | ----------------- | + | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | + +- _RX ADV CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------- | ----------------- | + | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX ADV Timeout (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------------- | ----------------- | + | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _TX REQ (4 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------- | ----------------- | + | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | + +- _RX RSP (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------ | ----------------- | + | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | + +- _RX RSP CRC (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------------------- | ----------------- | + | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX RSP Timeout (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------------------ | ----------------- | + | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _RX Chain (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------- | ----------------- | + | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | + +- _RX Chain CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------ | ----------------- | + | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX Chain Timeout (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _Err Scan (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + + + + +#### Get Periodic Scanning Statistics + +Get accumulated periodic scanning statistics. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | -------------------------- | -------------- | ---------- | +| 0x3D | 0x3DC | 0 | N/A | Statistics | + +##### Return (Get Periodic Scanning Statistics) + +- _RX ADV (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | + +- _RX ADV CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------------ | ----------------- | + | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX ADV Timeout (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------------- | ----------------- | + | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _RX Chain (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------- | ----------------- | + | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | + +- _RX Chain CRC (4 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------------ | ----------------- | + | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | + +- _RX Chain Timeout (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------------------------- | ----------------- | + | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | + +- _Err Scan (4 Bytes):_ + + | **Description** | **Value** | + | --------------------------------- | ----------------- | + | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | + +- _RX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _TX Setup (2 Bytes):_ + + | **Description** | **Value** | + | ----------------------------------------- | ------------- | + | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | + +- _RX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + +- _TX ISR (2 Bytes):_ + + | **Description** | **Value** | + | ------------------------------------------- | ------------- | + | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | + + + +#### Set Connection PHY TX Power + +Set power level during a connection for a given PHY. + +- Packet type: [Command Packet](#command-packet) + +| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | +| ------- | ------- | ------------------------ | -------------------------------- | ---------- | +| 0x3F | 0x3DD | 4 | {Handle, Level, PHY} | Status | + +##### Parameters (Set Connection PHY TX Power) + +- _Handle (2 Bytes):_ + + | **Description** | **Value** | + | ----------------- | ----------------------------- | + | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | + +- _Level (1 Byte, Signed 8-Bit):_ + + | **Description** | **Value** | + | --------------- | --------- | + | Power Level | -15 - 6 | + +- _PHY (1 Byte, Signed 8-Bit):_ + + | **Description** | **Value** | + | --------------- | --------- | + | 1M | 0x00 | + | 2M | 0x01 | + | Coded | 0x02 | + +##### Return (Set Connection PHY TX Power) + +Returns a status byte ## Certification diff --git a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md b/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md deleted file mode 100644 index a2afde06352..00000000000 --- a/Libraries/Cordio/docs/Tooling/HOST_CONTROLLER_INTERFACE.md +++ /dev/null @@ -1,2175 +0,0 @@ -# Intro -The Host Controller Interface (HCI) is the common point where devices are split. Typically this interface is over an asynchronous protocol such as UART. Some devices will define proprietary interfaces between the application and host layers. Multi-core SOCs can also use the HCI or proprietary interfaces to split the stack between multiple CPUs. - -# Packets -All contents in the packets are formatted little endian unless stated otherwise - -## Packet Types - -| Packet | Packet Type | -| ---------- | ----------- | -| Command | 0x01 | -| Async Data | 0x02 | -| Sync Data | 0x03 | -| Event | 0x04 | - -### Command Packet - -The HCI command packet typically consists of an HCI command header followed by command parameters. The structure of the HCI command packet is defined in the Bluetooth specification. - -Here is a general overview of the HCI command packet structure: - -| Type (1 Byte) | OpCode (2 Bytes) | Parameters (N Bytes) | -| ------------- | ---------------- | -------------------- | -| 0x01 | 0xXXXX | ... | - -Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) - -``` -Opcode = (OGF << 10) | OCF -``` - -Below is an example of the BLE standard command for reset - -RESET - -| OGF | OCF | Paramters | -| --- | --- | ---------- | -| 0x3 | 0x3 | Length = 0 | - -``` -Type = 0x1 -Opcode = (0x3 << 10) | 0x3 = 0x0C03 -Parmeters = 0 - -Command = Type | Opcode | Parameters = {0x1, 0x03, 0x0C, 0x00} -``` - -**Note the little endian format of the opcode** - -### Async Data Packet - -The asynchronous data packet is comprised of the connection handle, fragmentation bits, the number of data bytes, and the data bytes themselves. - -| Handle (12 Bits) | PB Flag (2 Bits) | BC Flag (2 Bits) | Total Length (2 Bytes) | Data (Total Length) | -| ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | -| 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | - -### Sync Data Packet - -This synchronous data packet is not used in BLE. - -### Event Data Packet - -The structure of an HCI asynchronous event packet typically consists of an HCI event header followed by event parameters. Here's a general overview: - -| Type (1 Byte) | Event Code (2 Bytes) | Event Params (N Bytes) | -| ------------- | -------------------- | ---------------------- | -| 0x04 | 0xXX | ... | - - - -## Vendor Specific Commands - -**OGF** : 0x3F - -**MAX\_NUMBER\_CONNECTIONS**: set at application layer by user. - -NOTE: All data parameters and return values are returned little endian formatted unless stated otherwise. - -### Write Memory - -Write N bytes to a specified 32-bit address. - -Packet type: Command Packet - -| **OGF** | **OCF** | ** Length (bytes) ** | * *Parameters** | **Return** | -| ------- | ------- | ------------------- | ----------------- | ---------- | -| 0x3F | 0x300 | 5 + N | {Length, Address} | Status | - -_where N is the number of bytes to write_ - -#### Parameters (Write Memory) - -- _Length_ : - - | **Description** | **Value** | - | ------------------------------------ | ----------------- | - | Number of bytes to write to address | `0 – 0xFF` | - -- _Address_ : Address to read data from - - | **Description** | **Value** | - | ------------------------------------ | ----------------- | - | Address to write data to | `0 - 0xFFFFFFFF` | - -#### Return (Write Memory) - -Returns a status byte. - - - -### Read Memory - -Read memory from a specified 32-bit address. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | --------------------------- | ----------------- | ---------- | -| 0x3F | 0x301 | 5 | {Length, Address} | Data (N) | - -#### Parameters (Read Memory) - -- _Length_ : - - | **Description** | **Value** | - | ------------------------------------ | ----------------- | - | Number of bytes to read from address | `0 – 0xFF` | - -- _Address_ : Address to read data from - - | **Description** | **Value** | - | ------------------------------------ | ----------------- | - | Address to read data from | `0 - 0xFFFFFFFF` | - -#### Return (Read Memory) - -- _Data_ (N) : - - | **Description** | **Value** | - | ----------------------------------------- | ---------------- | - | _N_ bytes read from the specified address | {`0 - 0xFF`,...} | - - - -### Reset Connection Stats - -Clear all connection statistics. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | ** Param. Length (bytes) ** | **Parameters** | -| ------- | ------- | ------------------------- | --------------- | -| 0x3F | 0x302 | 0 | N/A | - -#### Return (Reset Connection Stats) - -Returns a status byte. - - - -### VS TX Test - -Start a TX test using a specific number of packets. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------------------------------------------- | ---------- | -| 0x3F | 0x303 | 6 | {RF Channel, Packet Length, Packet Type, PHY, Num Packets} | Status | - -#### Parameters (VS TX Test) - -- _RF Channel (1 Byte):_ - - | **Description** | **Value** | - | ------------------------- | --------- | - | RF channel to transmit on | 0 – 39 | - -- _Packet Length (1 Byte):_ - - | **Description** | **Value** | - | -------------------------------- | --------- | - | Number of bytes in a single packet | 0 - 255 | - -- _Packet Type (1 Byte):_ - - | **Description** | **Value** | - | ------------------------- | --------- | - | PRBS9 | 0x00 | - | 00001111'b packet payload | 0x01 | - | 01010101'b packet payload | 0x02 | - | PRBS15 | 0x03 | - | 11111111'b packet payload | 0x04 | - | 00000000'b packet payload | 0x05 | - | 11110000'b packet payload | 0x06 | - | 10101010'b packet payload | 0x07 | - -- _PHY (1 Byte):_ - - | **Description** | **Value** | - | ----------------- | --------- | - | 1M | 0x01 | - | 2M | 0x02 | - | Coded Unspecified | 0x03 | - | Coded S8 | 0x04 | - | Coded S2 | 0x05 | - -- _Num Packets (2 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------------------- | ---------- | - | Number of packets to send over the course of the test | 0 - 0xFFFF | - -#### Return (VS TX Test) - -Returns a status byte. - - - -### VS End Test - -End the current DTM test and return all test stats. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | -------------- | -| 0x3F | 0x304 | 0 | N/A | {TX Data, RX Data Ok, RX Data CRC, RX Data Timeout} | - -#### Return (VS End Test) - -- _TX Data (2 Bytes)_ : Number of packets transmitted - - | **Description** | **Value** | - | ----------------------------- | ---------- | - | Number of packets transmitted | 0 - 0xFFFF | - -- _RX Data Ok (2 Bytes)_ : Number of packets received ok - - | **Description** | **Value** | - | ----------------------------- | ---------- | - | Number of packets received ok | 0 – 0xFFFF | - -- _RX Data CRC (2 Bytes)_ : Number of packets received with a CRC error - - | **Description** | **Value** | - | ------------------------------------------- | ---------- | - | Number of packets received with a CRC error | 0 - 0xFFFF | - -- _RX Data Timeout (2 Bytes)_ : Number of timeouts waiting to receive a packet - - | **Description** | **Value** | - | ---------------------------------------------- | ---------- | - | Number of timeouts waiting to receive a packet | 0 - 0xFFFF | - - - -### Set Scan Channel Map - -Set the channel map to scan on. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x301 | 1 | Channel Map | Status | - -#### Parameters (Set Scan Channel Map) - -- _Channel Map (1 Byte):_ - - | **Description** | **Value** | - | ------------------------ | --------- | - | Channel map used to scan | 0 – 0xFF | - -#### Return (Set Scan Channel Map) - -Returns a status byte. - - - -### Set Event Mask - -Enables or disables events the controller will flag. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3E1 | 5 | {Mask, Enable} | Status | - -#### Parameters (Set Event Mask) - -- _Mask (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------------- | ------------------------ | - | Mask of events to enable/disable | 0x0 – 0xFFFFFFFFFFFFFFFF | - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x00 | - | Enable | 0x01 | - -#### Return (Set Event Mask) - -Returns a status byte. - - - - -### Enable ACL Sink - -Enables or disables asynchronous connection-oriented logical transport. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3E3 | 1 | {Enable} | Status | - -#### Parameters (Enable ACL Sink) - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x00 | - | Enable | 0x01 | - -#### Return (Enable ACL Sink) - -Returns a status byte. - - - -### Generate ACL - -Generate ACL for a specified connection. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ----------------------------------- | ---------- | -| 0x3F | 0x3E4 | 5 | {Handle, Packet Length, Num Packets} | Status | - -#### Parameters (Generate ACL) - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - - MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. - -- _Packet Length (2 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | -------------------- | - | Length of packet of generated ACL | 0x00 – MAX\_ACL\_LEN | - - MAX\_ACL\_LEN set at the application layer by the user. - -- _Num Packets (1 Byte):_ - - | **Description** | **Value** | - | ------------------------------------------ | ----------- | - | Number of packets to send in generated ACL | 0x00 – 0xFF | - -#### Return (Generate ACL) - -Returns a status byte. - - - - -### Enable Autogenerate ACL - -Enable or disable Autogenerate ACL. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3E3 | 1 | {Enable} | Status | - -#### Parameters (Enable Autogenerate ACL) - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x00 | - | Enable | 0x01 | - -#### Return (Enable Autogenerate ACL) - -- _Status (1 Byte)_ : Status of the Enable Autogenerate ACL command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Set TX Test Error Pattern - -Set the pattern of errors for the TX test mode. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3E6 | 4 | {Error Pattern} | Status | - -#### Parameters (Set TX Test Error Pattern) - -- _Error Pattern (1 Byte):_ - - | **Description** | **Value** | - | ------------------------------- | ---------------- | - | 1s = no error, 0s = CRC Failure | 0x0 - 0xFFFFFFFF | - -#### Return (Set TX Test Error Pattern) - -Returns a status byte. - - - -### Set Connection Operational Flags - -Enable or disable connection operational flags for a given connection. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------------------- | ---------- | -| 0x3F | 0x3E7 | 7 | {Handle, Flags, Enable} | Status | - -#### Parameters (Set Connection Operational Flags) - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - - MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. - -- _Flags (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------- | ---------------- | - | Flags to enable or disable | 0x0 – 0xFFFFFFFF | - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x00 | - | Enable | 0x01 | - -#### Return (Set Connection Operational Flags) - -Returns a status byte. - - - -### Set P-256 Private Key - -Set P-256 private key or clear set private key. The private key will be used for generating key pairs and Diffie-Hellman keys until cleared. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ----------------- | ---------- | -| 0x3F | 0x3E8 | 32 | {Private Key} | Status | - -#### Parameters (Set P-256 Private Key) - -- _Private Key (32 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------- | - | Clear Private Key | 0x00… | - | Private Key | 0x1 – 0xFF… | - -#### Return (Set P-256 Private Key) - -Returns a status byte. - - - -### Get channel map of periodic scan/adv - -Get the channel map used for periodic scanning or advertising. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ----------------------------- | ----------- | -| 0x3F | 0x3DE | 3 | {Advertising Handle, Advertising} | Channel Map | - -#### Parameters (Get channel map of periodic scan/adv) - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------- | ----------------------------- | - | Periodic Scanner/Advertiser Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - - MAX\_NUMBER\_CONNECTIONS set at the application layer by the user. - -- _Advertising (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Scanner | 0x00 | - | Advertiser | 0x01 | - -#### Return (Get channel map of periodic scan/adv) - -- _Channel Map (5 Bytes)_ : Channel map used for periodic scanning or advertising. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | -------------- | - | 5 | {0x00-0xFF, …} | - - - -### Get ACL Test Report - -Get ACL Test Report. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | -------------- | -| 0x3F | 0x3E9 | 0 | N/A | {Report Data} | - -#### Return (Get ACL Test Report) - -- _RX ACL Packet Count (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------ | ---------------- | - | Number of ACL packets received | 0x0 – 0xFFFFFFFF | - -- _RX ACL Octet Count (4 Bytes):_ - - | **Description** | **Value** | - | ----------------------------- | ---------------- | - | Number of ACL octets received | 0x0 – 0xFFFFFFFF | - -- _Generated ACL Packet Count (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------- | ---------------- | - | Number of generated ACL packets | 0x0 – 0xFFFFFFFF | - -- _Generated ACL Octet Count (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------ | ---------------- | - | Number of generated ACL octets | 0x0 – 0xFFFFFFFF | - - - -### Set Local Minimum Number of Used Channels - -Set local minimum number of used channels. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------------------------- | ---------- | -| 0x3F | 0x3EA | 3 | {PHYs, Power Threshold, Min Used Channels} | Status | - -#### Parameters (Set Local Minimum Number of Used Channels) - -- _PHYs (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | 1M | 0x1 | - | 2M | 0x2 | - | Coded | 0x3 | - -- _Power Threshold (1 Byte, signed 8-Bit):_ - - | **Description** | **Value** | - | ----------------------- | --------- | - | Power Threshold for PHY | +/-127 | - -- _Min Used Channels (1 Byte):_ - - | **Description** | **Value** | - | ------------------------------- | --------- | - | Minimum number of used channels | 1 - 37 | - -#### Return (Set Local Minimum Number of Used Channels) - -Returns a status byte. - - - -### Get Peer Minimum Number of Used Channels - -Get peer minimum number of used channels. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | -------------- | -| 0x3F | 0x3EB | 2 | {Handle} | {1M PHY, 2M PHY, Coded PHY} | - -#### Parameters (Get Peer Minimum Number of Used Channels) - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -#### Return (Get Peer Minimum Number of Used Channels) - -- _1M PHY (1 Byte):_ - - | **Description** | **Value** | - | -------------------- | --------- | - | 1M min used channels | 1 - 37 | - -- _2M PHY (1 Byte):_ - - | **Description** | **Value** | - | -------------------- | --------- | - | 2M min used channels | 1 - 37 | - -- _Coded PHY (1 Byte):_ - - | **Description** | **Value** | - | ----------------------- | --------- | - | Coded min used channels | 1 – 37 | - - - -### Set validate public key mode between ALT1 and ALT2 - -Set mode used to validate public key. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ---------------------- | ---------- | -| 0x3F | 0x3EC | 1 | {Validate Mode} | Status | - -#### Parameters (Set validate public key mode between ALT1 and ALT2) - -- _Validate Mode (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | ALT2 | 0x0 | - | ALT1 | 0x1 | - -#### Return (Set validate public key mode between ALT1 and ALT2) - -Returns a status byte. - - - -### Set BD Address - -Set the device address. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ---------------------- | ---------- | -| 0x3F | 0x3F0 | 6 | {BD Address} | Status | - -#### Parameters (Set BD Address) - -- _BD Address (6 Bytes):_ - - | **Description** | **Value** | - | --------------- | -------------- | - | Device Address | {0x00-0xFF, …} | - -#### Return (Set BD Address) - -Returns a status byte. - - - -### Get Random Address - -Get random device address. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | -------------- | -| 0x3F | 0x3F1 | 0 | N/A | {BD Address} | - -#### Return (Get Random Address) - -- _BD Address (6 Bytes):_ - - | **Description** | **Value** | - | --------------- | -------------- | - | Device Address | {0x00-0xFF, …} | - - - -### Set Local Feature - -Set local supported features. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ------------------ | ---------- | -| 0x3F | 0x3F2 | 8 | {Local Features} | Status | - -#### Parameters (Set Local Feature) - -- _Local Features (8 Bytes):_ - - | **Description** | **Value** | - | ---------------------- | ------------------------- | - | Mask of Local Features | 0x00 – 0xFFFFFFFFFFFFFFFF | - -#### Return (Set Local Feature) - -- _Status (1 Byte)_ : Status of the Set Local Feature command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Set Operational Flags - -Enable or Disable Operational Flags. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ------------------ | ---------- | -| 0x3F | 0x3F3 | 5 | {Flags, Enable} | Status | - -#### Parameters (Set Operational Flags) - -- _Flags (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------- | ---------------- | - | Flags to enable or disable | 0x0 – 0xFFFFFFFF | - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x00 | - | Enable | 0x01 | - -#### Return (Set Operational Flags) - -Returns a status byte. - - - -### Get PDU Filter Statistics - -Get the accumulated PDU filter statistics. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3F4 | 0 | N/A | Statistics | - -#### Return (PDU Filter Statistics) - -- _Fail PDU Type Filter_ (2 Bytes) : - - | **Description** | **Value** | - | -------------------------------------- | ------------ | - | Number of PDUs failing PDU type filter | 0x0 – 0xFFFF | - -- _Pass PDU Type Filter_ (2 Bytes) : - - | **Description** | **Value** | - | -------------------------------------- | ------------ | - | Number of PDUs passing PDU type filter | 0x0 – 0xFFFF | - -- _Fail Whitelist Filter_ (2 Bytes) : - - | **Description** | **Value** | - | --------------------------------------- | ------------ | - | Number of PDUs failing whitelist filter | 0x0 – 0xFFFF | - -- _Pass Whitelist Filter_ (2 Bytes) : - - | **Description** | **Value** | - | ---------------------------------------- | ------------ | - | Number of PDUs passing whitelist filter | 0x0 – 0xFFFF | - -- _Fail Peer Address Match_ (2 Bytes) : - - | **Description** | **Value** | - | ----------------------------------------- | ------------ | - | Number of PDUs failing peer address match | 0x0 – 0xFFFF | - -- _Pass Peer Address Match_ (2 Bytes) : - - | **Description** | **Value** | - | ----------------------------------------- | ------------ | - | Number of PDUs passing peer address match | 0x0 – 0xFFFF | - -- _Fail Local Address Match_ (2 Bytes) : - - | **Description** | **Value** | - | ------------------------------------------ | ------------ | - | Number of PDUs failing local address match | 0x0 – 0xFFFF | - -- _Pass Local Address Match_ (2 Bytes) : - - | **Description** | **Value** | - | ------------------------------------------ | ------------ | - | Number of PDUs passing local address match | 0x0 – 0xFFFF | - -- _Fail Peer RPA Verify_ (2 Bytes) : - - | **Description** | **Value** | - | ---------------------------------------- | ------------ | - | Number of peer RPAs failing verification | 0x0 – 0xFFFF | - -- _Pass Peer RPA Verify_ (2 Bytes) : - - | **Description** | **Value** | - | ---------------------------------------- | ------------ | - | Number of peer RPAs passing verification | 0x0 – 0xFFFF | - -- _Fail Local RPA Verify_ (2 Bytes) : - - | **Description** | **Value** | - | ----------------------------------------- | ------------ | - | Number of local RPAs failing verification | 0x0 – 0xFFFF | - -- _Pass Local RPA Verify_ (2 Bytes) : - - | **Description** | **Value** | - | ----------------------------------------- | ------------ | - | Number of local RPAs passing verification | 0x0 – 0xFFFF | - -- _Fail Peer Private Address_ (2 Bytes) : - - | **Description** | **Value** | - | ------------------------------------------------------- | ------------ | - | Number of peer addresses failing requirement to be RPAs | 0x0 – 0xFFFF | - -- _Fail Local Private Address_ (2 Bytes) : - - | **Description** | **Value** | - | -------------------------------------------------------- | ------------ | - | Number of local addresses failing requirement to be RPAs | 0x0 – 0xFFFF | - -- _Fail Peer Address Res Req_ (2 Bytes) : - - | **Description** | **Value** | - | ------------------------------------------------------- | ------------ | - | Number of PDUs failing required peer address resolution | 0x0 – 0xFFFF | - -- _Pass Peer Address Res Req_ (2 Bytes) : - - | **Description** | **Value** | - | ------------------------------------------------------- | ------------ | - | Number of PDUs passing optional peer address resolution | 0x0 – 0xFFFF | - -- _Pass Local Address Res Opt._ (2 Bytes) : - - | **Description** | **Value** | - | -------------------------------------------------------- | ------------ | - | Number of PDUs passing optional local address resolution | 0x0 – 0xFFFF | - -- _Peer Res Address Pend_ (2 Bytes) : - - | **Description** | **Value** | - | ----------------------------------------- | ------------ | - | Number of peer address resolutions pended | 0x0 – 0xFFFF | - -- _Local Res Address Pend_ (2 Bytes) : - - | **Description** | **Value** | - | ------------------------------------------ | ------------ | - | Number of local address resolutions pended | 0x0 – 0xFFFF | - - - -### Set Advertising TX Power - -Set the TX power used for advertising. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3F5 | 1 | {Power} | Status | - -#### Parameters (Set Advertising TX Power) - -- _Power (1 Byte, Signed 8-Bit):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Power | -15 - 6 | - -#### Return (Set Advertising TX Power) - -Returns a status byte. - - - -### Set Connection TX Power - -Set the TX power used for connections. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3F6 | 1 | {Power} | Status | - -#### Parameters (Set Connection TX Power) - -- _Power (1 Byte, Signed 8-Bit):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Power | -15 - 6 | - -#### Return (Set Connection TX Power) - -Returns a status byte. - - - -### Set Encryption Mode - -Set encryption mode for a given connection. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ------------------------ | ---------- | -| 0x3F | 0x3F7 | 4 | {Enable Auth, Nonce Mode, Handle} | Status | - -#### Parameters (Set Encryption Mode) - -- _Enable Auth (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x0 | - | Enable | 0x1 | - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -#### Return (Set Encryption Mode) - -Returns a status byte. - - - -### Set Channel Map - -Set the channel map. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------------------- | ---------- | -| 0x3F | 0x3F8 | 6 | {Handle, Channel Map} | Status | - -#### Parameters (Set Channel Map) - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -- _Channel Map (4 Bytes):_ - - | **Description** | **Value** | - | --------------- | ----------------- | - | Channel Map | 0x00 – 0xFFFFFFFF | - -#### Return (Set Channel Map) - -Returns a status byte. - - - -### Set Diagnostic Mode - -Enable/Disable PAL System Assert Trap. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3F9 | 1 | {Enable} | Status | - -#### Parameters (Set Diagnostic Mode) - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x0 | - | Enable | 0x1 | - -#### Return (Set Diagnostic Mode) - -Returns a status byte. - - - -### Enable Sniffer Packet Forwarding - -Enable/Disable sniffer packet forwarding. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3CD | 1 | {Enable} | Status | - -#### Parameters (Enable Sniffer Packet Forwarding) - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x0 | - | Enable | 0x1 | - -#### Return (Enable Sniffer Packet Forwarding) - -Returns a status byte. - - - - -### Get Memory Stats - -Read memory and system statistics. - -- Packet type: [Command Packet](#command-packet) - -| **OCF** | **Length** | **Parameters** | -| ------- | ---------- | -------------- | -| 0x3FA | 0 | N/A | - -#### Return - -- _Stack Usage (2 Byte):_ - - | **Description** | **Value** | - | ----------------------------- | ------------ | - | Number of bytes used by stack | 0x0 – 0xFFFF | - - -- _Sys Assert Count (2 Byte):_ - - | **Description** | **Value** | - | ------------------------------ | ------------ | - | Number of times assertions hit | 0x0 – 0xFFFF | - -- _Free Memory (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------- | ---------------- | - | Memory free for stack usage | 0x0 – 0xFFFFFFFF | - -- _Used Memory (4 Bytes):_ - - | **Description** | **Value** | - | -------------------- | ----------------- | - | Memory used by stack | 0x00 – 0xFFFFFFFF | - -- _Max Connections (2 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | ------------------------------- | - | Number of max connections allowed | 0x00 – MAX\_NUMBER\_CONNECTIONS | - -- _Connection Context Size (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | Number of bytes used for connection context | 0x00 – 0xFFFF | - -- _CS Watermark Level (2 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------- | ------------- | - | Critical section watermark duration in microseconds | 0x00 – 0xFFFF | - -- _LL Handler Watermark Level (2 Byte):_ - - | **Description** | **Value** | - | ------------------------------------------ | ------------- | - | LL handler watermark level in microseconds | 0x00 – 0xFFFF | - -- _Sch Handler Watermark Level (2 Byte):_ - - | **Description** | **Value** | - | ------------------------------------------------- | ------------- | - | Scheduler handler watermark level in microseconds | 0x00 – 0xFFFF | - -- _LHCI Handler Watermark Level (2 Byte):_ - - | **Description** | **Value** | - | -------------------------------------------- | ------------- | - | LHCI handler watermark level in microseconds | 0x00 – 0xFFFF | - -- _Max Adv Sets (2 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------- | ------------- | - | Maximum number of advertising sets | 0x00 – 0xFFFF | - -- _Adv Set Context Size (2 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------------- | ------------- | - | Size of advertising set context in bytes | 0x00 – 0xFFFF | - -- _Ext Scan Max (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------- | ------------ | - | Maximum number of extended scanners | 0x0 – 0xFFFF | - -- _Ext Scan Context Size (2 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------- | ------------- | - | Size of context size for extended scanners in bytes | 0x00 – 0xFFFF | - -- _Max Num Extended Init (2 Bytes):_ - - | **Description** | **Value** | - | -------------------------------------- | ------------- | - | maximum number of extended initiators. | 0x00 – 0xFFFF | - -- _Ext Init Context Size (2 Byte):_ - - | **Description** | **Value** | - | ----------------------------------------------------- | ------------- | - | Size of context size for extended initiators in bytes | 0x00 – 0xFFFF | - -- _Max Periodic Scanners (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------- | ----------- | - | Maximum number of periodic scanners | 0x00-0xFFFF | - -- _Periodic Scanners Context Size(2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------ | ----------- | - | Context size of periodic scanners in bytes | 0x00-0xFFFF | - -- _Max CIG (2 Bytes):_ - - | **Description** | **Value** | - | --------------------- | ----------- | - | Maximum number of CIG | 0x00-0xFFFF | - -- _CIG Context Size (2 Bytes):_ - - | **Description** | **Value** | - | ---------------------------- | ----------- | - | Context size of CIG in bytes | 0x00-0xFFFF | -- _Max CIS (2 Bytes):_ - - | **Description** | **Value** | - | --------------------- | ----------- | - | Maximum number of CIS | 0x00-0xFFFF | - -- _CIS Context Size (2 Bytes):_ - - | **Description** | **Value** | - | ---------------------------- | ----------- | - | Context size of CIS in bytes | 0x00-0xFFFF | - - - -### Get Advertising Stats - -Get the accumulated advertising statistics. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3FB | 0 | N/A | Advertising Stats | - -#### Return (Advertising Stats) - -- _TX ADV (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------- | ----------------- | - | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | - -- _RX Req (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------------------------- | ----------------- | - | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | - -- _RX Req CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------- | ----------------- | - | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX Req Timeout (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------------- | ----------------- | - | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _TX RSP (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------- | ----------------- | - | Number of sent response packets | 0x00 – 0xFFFFFFFF | - -- _Err ADV (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------------- | ----------------- | - | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - - - -### Get Scan Stats - -Get the statistics captured during scanning. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3F | 0x3FC | 0 | N/A | Scan Stats | - -#### Return (Scan Stats) - -- _RX ADV (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------- | ----------------- | - | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | - -- _RX ADV CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------ | ----------------- | - | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX ADV Timeout (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------------- | ----------------- | - | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _TX Req (4 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------- | ----------------- | - | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | - -- _RX RSP (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------ | ----------------- | - | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | - -- _RX RSP CRC (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------------------- | ----------------- | - | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX RSP Timeout (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------------ | ----------------- | - | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _Err Scan (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | ----------------- | - | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ----------------- | - | RX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ----------------- | - | TX packet setup watermark in microseconds | 0x00 – 0xFFFFFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ----------------- | - | RX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ----------------- | - | TX ISR processing watermark in microseconds | 0x00 – 0xFFFFFFFF | - - - -### Get Connection Stats - -Get the statistics captured during a connection. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | -------------- | -| 0x3F | 0x3FD | 0 | N/A | Connection Stats | - -#### Return (Connection Stats) - -- _RX Data (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------------------------- | ----------------- | - | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | - -- _RX Data CRC (4 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------------- | ----------------- | - | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | - -- _RX Data Timeout (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------------------------------- | ----------------- | - | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | - -- _TX Data (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------- | ----------------- | - | Number of sent data packets | 0x00 - 0xFFFFFFFF | - -- _Err Data (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | ----------------- | - | Number of data transaction errors | 0x00 - 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - - - -### Get Test Stats - -Get the statistics captured during test mode. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | --------------------------------- | -| 0x3F | 0x3FE | 0 | N/A | Test stats in order as documented | - -#### Return (Get Test Stats) - -- _RX Data (4 Bytes)_ - - | **Description** | **Value** | - | -------------------------------------------- | ----------------- | - | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | - -- _RX Data CRC (4 Bytes)_ - - | **Description** | **Value** | - | ----------------------------------------------- | ----------------- | - | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | - -- _RX Data Timeout (4 Bytes)_ - - | **Description** | **Value** | - | -------------------------------------------------- | ----------------- | - | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | - -- _TX Data (4 Bytes)_ - - | **Description** | **Value** | - | --------------------------- | ----------------- | - | Number of sent data packets | 0x00 - 0xFFFFFFFF | - -- _Err Data (4 Bytes)_ - - | **Description** | **Value** | - | --------------------------------- | ----------------- | - | Number of data transaction errors | 0x00 - 0xFFFFFFFF | - -- _RX Setup (2 Bytes)_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | - -- _TX Setup (2 Bytes)_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | - -- _RX ISR (2 Bytes)_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - -- _TX ISR (2 Bytes)_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - - - -### Get Pool Stats - -Get the memory pool statistics captured during runtime. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | ---------------------------------- | -| 0x3F | 0x3FF | 0 | N/A | {Num Pool, {Buf Size, Num Buf, Num Alloc, Max Alloc, Max Req Len} * Num Pool} | - -#### Return (Get Pool Stats) - -- _Num Pool (1 Byte):_ - - | **Description** | **Value** | - | ----------------------- | ----------- | - | Number of pools defined | 0x00 – 0xFF | - -- _Pool Stats (variable):_ - - | **Description** | **Value** | - | --------------------------------- | ------------- | - | _Buf Size (2 Bytes):_ | 0x00 – 0xFFFF | - | _Num Buf (1 Byte):_ | 0x00 – 0xFF | - | _Num Alloc (1 Byte):_ | 0x00 – 0xFF | - | _Max Alloc (1 Byte):_ | 0x00 – 0xFF | - | _Max Req Len (2 Bytes):_ | 0x00 – 0xFFFF | - -### Set Additional AuxPtr Offset - -Set auxiliary packet offset delay. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | ---------- | -| 0x3F | 0x3D0 | 5 | {Delay, Handle} | Status | - -#### Parameters (Set Additional AuxPtr Offset) - -- _Delay (4 Bytes):_ - - | **Description** | **Value** | - | --------------------- | ---------------- | - | Disable | 0x00 | - | Delay in microseconds | 0x1 – 0xFFFFFFFF | - -- _Handle (1 Byte):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -#### Return (Set Additional AuxPtr Offset) - -Returns a status byte - - - -### Set Extended Advertising Data Fragmentation - -Set the extended advertising fragmentation length. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------------- | ---------- | -| 0x3D | 0x3D1 | 2 | {Handle, Frag Length} | Status | - -#### Parameters (Set Extended Advertising Data Fragmentation) - -- _Handle (1 Byte):_ - - | **Description** | **Value** | - | ------------------ | ----------------------------- | - | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -- _Frag Length (1 Byte):_ - - | **Description** | **Value** | - | -------------------- | --------- | - | Fragmentation Length | 0x00-0xFF | - -#### Return (Set Extended Advertising Data Fragmentation) - -- _Status (1 Byte)_ : Status of the Set Extended Advertising Data Fragmentation command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Set Extended Advertising PHY Options - -Set extended advertising PHY options. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------------------------- | ---------- | -| 0x3D | 0x3D2 | 3 | {Handle, Primary Opt., Secondary Opt.} | Status | - -#### Parameters (Set Extended Advertising PHY Options) - -- _Handle (1 Byte):_ - - | **Description** | **Value** | - | ----------------------- | ----------------------------- | - | Advertising Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -- _Primary Opt. (1 Byte):_ - - | **Description** | **Value** | - | ---------------------------------------- | --------- | - | Primary advertising channel PHY options. | 0x00-0xFF | - -- _Secondary Opt. (1 Byte):_ - - | **Description** | **Value** | - | ------------------------------------------ | --------- | - | Secondary advertising channel PHY options. | 0x00-0xFF | - -#### Return (Set Extended Advertising PHY Options) - -- _Status (1 Byte)_ : Status of the Set Extended Advertising PHY Options command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Set Extended Advertising Default PHY Options - -Set the default TX PHY options for extended advertising slave primary and secondary channel. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | --------------- | ---------- | -| 0x3D | 0x3D3 | 1 | {PHY Opt.} | Status | - -#### Parameters (Set Extended Advertising Default PHY Options) - -- _PHY Opt. (1 Byte):_ - - | **Description** | **Value** | - | --------------- | ----------- | - | PHY Options | 0x00 – 0xFF | - -#### Return (Set Extended Advertising Default PHY Options) - -- _Status (1 Byte)_ : Status of the Set Extended Advertising Default PHY Options command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Generate ISO Packets - -Generate ISO packets. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ---------------------------------- | ---------- | -| 0x3D | 0x3D5 | 5 | {Handle, Packet Length, Num Packets} | Status | - -#### Parameters (Generate ISO Packets) - -- _Handle (2 Byte):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection Handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -- _Packet Length (2 Byte):_ - - | **Description** | **Value** | - | --------------- | ----------- | - | Packet Length | 0x00-0xFFFF | - -- _Num Packets (1 Byte):_ - - | **Description** | **Value** | - | ----------------- | --------- | - | Number of packets | 0x00-0xFF | - -#### Return (Generate ISO Packets) - -- _Status (1 Byte)_ : Status of the Generate ISO Packets command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Get ISO Test Report - -Get statistics captured during ISO test. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------------------------------------------------------------------------- | ----------- | -| 0x3D | 0x3D6 | 16 | {RX ISO Packet Count, RX ISO Octet Count, Generate Packet Count, Generate Octet Count} | Status Code | - -#### Return (Get ISO Test Report) - -- _RX ISO Packet Count (4 Byte):_ - - | **Description** | **Value** | - | ------------------------ | ----------------- | - | Receive ISO Packet Count | 0x00 – 0xFFFFFFFF | - -- _RX ISO Octet Count (4 Byte):_ - - | **Description** | **Value** | - | ----------------------- | ----------------- | - | Receive ISO Octet Count | 0x00 – 0xFFFFFFFF | - -- _Generate Packet Count (4 Byte):_ - - | **Description** | **Value** | - | ------------------------- | ----------------- | - | Generate ISO Packet Count | 0x00 – 0xFFFFFFFF | - -- _Generate Octet Count (4 Byte):_ - - | **Description** | **Value** | - | ------------------------ | ----------------- | - | Generate ISO Octet Count | 0x00 – 0xFFFFFFFF | - - - -### Enable ISO Packet Sink - -Enable or Disable ISO packet sink. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ---------- | -| 0x3D | 0x3D7 | 1 | {Enable} | Status | - -#### Parameters (Enable ISO Packet Sink) - -- _Enable (1 Byte):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Disable | 0x00 | - | Enable | 0x01 | - -#### Return (Enable ISO Packet Sink) - -- _Status (1 Byte)_ : Status of the Enable ISO Packet Sink command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Enable Autogenerate ISO Packets - -Enable autogenerate ISO packets. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | ---------------- | ---------- | -| 0x3D | 0x3D8 | 2 | {Packet Length} | Status | - -#### Parameters (Enable Autogenerate ISO Packets) - -- _Packet Length (2 Bytes):_ - - | **Description** | **Value** | - | --------------- | ------------- | - | Disable | 0x00 | - | Length | 0x01 – 0xFFFF | - -#### Return (Enable Autogenerate ISO Packets) - -- _Status (1 Byte)_ : Status of the Enable Autogenerate ISO Packets command execution. - - | **Return Length (bytes)** | **Value** | - | ------------------------- | ---------- | - | 1 | Status Code | - - - -### Get ISO Connection Statistics - -Get statistics captured during ISO connection. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | -------------- | -| 0x3E | 0x3D9 | 0 | N/A | RX, TX, Err... | - -#### Return (Get ISO Connection Statistics) - -- _RX Data (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------------------------- | ----------------- | - | Number of successfully received data packets | 0x00 - 0xFFFFFFFF | - -- _RX Data CRC (4 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------------- | ----------------- | - | Number of received data packets with CRC errors | 0x00 - 0xFFFFFFFF | - -- _RX Data Timeout (4 Bytes):_ - - | **Description** | **Value** | - | -------------------------------------------------- | ----------------- | - | Number of timed out data packets (receive timeout) | 0x00 - 0xFFFFFFFF | - -- _TX Data (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------- | ----------------- | - | Number of sent data packets | 0x00 - 0xFFFFFFFF | - -- _Err Data (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | ----------------- | - | Number of data transaction errors | 0x00 - 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 - 0xFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 - 0xFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 - 0xFFFF | - - - -### Get Auxiliary Advertising Statistics - -Get accumulated auxiliary advertising stats. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------- | ----------- | -| 0x3F | 0x3DA | 0 | N/A | {TX ADV, RX Req, RX Req CRC, RX Req Timeout, TX RSP, TX Chain, Err ADV, RX Setup, TX Setup, RX ISR, TX ISR} | - -#### Return - -- _TX ADV (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------- | ----------------- | - | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | - -- _RX Req (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------------------------- | ----------------- | - | Number of successfully received advertising requests | 0x00 – 0xFFFFFFFF | - -- _RX Req CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------- | ----------------- | - | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX Req Timeout (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------------- | ----------------- | - | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _TX RSP (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------- | ----------------- | - | Number of sent response packets | 0x00 – 0xFFFFFFFF | - -- _TX Chain (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------- | ----------------- | - | Number of sent chain packets | 0x00 – 0xFFFFFFFF | - -- _Err ADV (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------------- | ----------------- | - | Number of advertising transaction errors | 0x00 – 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - - - -### Get Auxiliary Scanning Statistics - -Get accumulated auxiliary scanning statistics. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | -------------------------- | -------------- | ----------- | -| 0x3F | 0x3DB | 0 | N/A | Statistics | - -#### Return (Auxiliary Scanning Statistics) - -- _RX ADV (4 Bytes):_ - - | **Description** | **Value** | - | ---------------------------------- | ----------------- | - | Number of sent advertising packets | 0x00 – 0xFFFFFFFF | - -- _RX ADV CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------- | ----------------- | - | Number of received advertising requests with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX ADV Timeout (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------------- | ----------------- | - | Number of timed out received advertising requests (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _TX REQ (4 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------- | ----------------- | - | Number of sent advertising requests | 0x00 – 0xFFFFFFFF | - -- _RX RSP (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------ | ----------------- | - | Number of successfully received advertising response packets | 0x00 – 0xFFFFFFFF | - -- _RX RSP CRC (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------------------- | ----------------- | - | Number of received advertising response packets with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX RSP Timeout (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------------------ | ----------------- | - | Number of timed out advertising response packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _RX Chain (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------- | ----------------- | - | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | - -- _RX Chain CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------ | ----------------- | - | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX Chain Timeout (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------- | ----------------- | - | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _Err Scan (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | ----------------- | - | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - - - - -### Get Periodic Scanning Statistics - -Get accumulated periodic scanning statistics. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | -------------------------- | -------------- | ---------- | -| 0x3D | 0x3DC | 0 | N/A | Statistics | - -#### Return (Get Periodic Scanning Statistics) - -- _RX ADV (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------- | ----------------- | - | Number of successfully received advertising packets | 0x00 – 0xFFFFFFFF | - -- _RX ADV CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------------ | ----------------- | - | Number of received advertising packets with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX ADV Timeout (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------------- | ----------------- | - | Number of timed out advertising packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _RX Chain (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------- | ----------------- | - | Number of successfully received chain packets | 0x00 – 0xFFFFFFFF | - -- _RX Chain CRC (4 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------------ | ----------------- | - | Number of received chain packets with CRC errors | 0x00 – 0xFFFFFFFF | - -- _RX Chain Timeout (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------------------------- | ----------------- | - | Number of timed out chain packets (receive timeout) | 0x00 – 0xFFFFFFFF | - -- _Err Scan (4 Bytes):_ - - | **Description** | **Value** | - | --------------------------------- | ----------------- | - | Number of scan transaction errors | 0x00 – 0xFFFFFFFF | - -- _RX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | RX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _TX Setup (2 Bytes):_ - - | **Description** | **Value** | - | ----------------------------------------- | ------------- | - | TX packet setup watermark in microseconds | 0x00 – 0xFFFF | - -- _RX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | RX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - -- _TX ISR (2 Bytes):_ - - | **Description** | **Value** | - | ------------------------------------------- | ------------- | - | TX ISR processing watermark in microseconds | 0x00 – 0xFFFF | - - - -### Set Connection PHY TX Power - -Set power level during a connection for a given PHY. - -- Packet type: [Command Packet](#command-packet) - -| **OGF** | **OCF** | **Param. Length (bytes)** | **Parameters** | **Return** | -| ------- | ------- | ------------------------ | -------------------------------- | ---------- | -| 0x3F | 0x3DD | 4 | {Handle, Level, PHY} | Status | - -#### Parameters (Set Connection PHY TX Power) - -- _Handle (2 Bytes):_ - - | **Description** | **Value** | - | ----------------- | ----------------------------- | - | Connection handle | 0x01-MAX\_NUMBER\_CONNECTIONS | - -- _Level (1 Byte, Signed 8-Bit):_ - - | **Description** | **Value** | - | --------------- | --------- | - | Power Level | -15 - 6 | - -- _PHY (1 Byte, Signed 8-Bit):_ - - | **Description** | **Value** | - | --------------- | --------- | - | 1M | 0x00 | - | 2M | 0x01 | - | Coded | 0x02 | - -#### Return (Set Connection PHY TX Power) - -Returns a status byte - - From 3b02f5b4acd62f865afb6046a7e26a6cc348f0d0 Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Thu, 7 Dec 2023 20:43:31 -0600 Subject: [PATCH 16/18] Update BLE tools link --- Libraries/Cordio/docs/CORDIO_USERGUIDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md index 49fa110524c..4bb599b1df8 100644 --- a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md +++ b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md @@ -290,7 +290,7 @@ Unfortunately, there is no Bluetooth SIG-defined standard for this protocol. Thi ## Additional Documentation -Documentation for Python tools used for Bluetooth development and debugging can be found [here](../../../Tools/Bluetooth/README.md). +Documentation for Python tools used for Bluetooth development and debugging can be found [here](https://github.com/Analog-Devices-MSDK/msdk/tree/main/Tools/Bluetooth). Documentation for each of the supporting applications can be found below: From 049d121614e845db4d04ed5d93b6f876c355523e Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Thu, 7 Dec 2023 20:50:05 -0600 Subject: [PATCH 17/18] Add image links --- Libraries/Cordio/docs/CORDIO_USERGUIDE.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md index 4bb599b1df8..4a901a7199d 100644 --- a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md +++ b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md @@ -331,6 +331,8 @@ Here is a general overview of the HCI command packet structure: | ------------- | ---------------- | -------------------- | | 0x01 | 0xXXXX | ... | +![Command Packet Format](res/command-packet.png) + Opcodes are mix of Opcode Group Field (OGF, 6 Bits) and the Opcode Command Field (OCF, 10 Bits) ``` @@ -363,6 +365,8 @@ The asynchronous data packet is comprised of the connection handle, fragmentatio | ---------------- | ---------------- | ---------------- | ---------------------- | ------------------- | | 0xXXX | 0bXX | 0bXX | 0xXXXX | ... | +![Async Data Packet Format](res/async-data-packet.png) + ##### Sync Data Packet This synchronous data packet is not used in BLE. @@ -375,6 +379,8 @@ The structure of an HCI asynchronous event packet typically consists of an HCI e | ------------- | -------------------- | ---------------------- | | 0x04 | 0xXX | ... | +![Event Data Packet Format](res/event-packet.png) + ### Vendor Specific Commands From 09c62b27b092493b902d0c5aa5672916d8338cee Mon Sep 17 00:00:00 2001 From: Jake Carter Date: Thu, 7 Dec 2023 20:52:15 -0600 Subject: [PATCH 18/18] Add missing command type link --- Libraries/Cordio/docs/CORDIO_USERGUIDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md index 4a901a7199d..e49ca91c666 100644 --- a/Libraries/Cordio/docs/CORDIO_USERGUIDE.md +++ b/Libraries/Cordio/docs/CORDIO_USERGUIDE.md @@ -395,7 +395,7 @@ NOTE: All data parameters and return values are returned little endian formatted Write N bytes to a specified 32-bit address. -Packet type: Command Packet +- Packet type: [Command Packet](#command-packet) | **OGF** | **OCF** | ** Length (bytes) ** | * *Parameters** | **Return** | | ------- | ------- | ------------------- | ----------------- | ---------- |