File syn_ble_hci.h¶
FileList > ble > syn_ble_hci.h
Go to the source code of this file
Zero-Heap Host Controller Interface (HCI) Driver (H:4 UART Framing). More...
#include "../common/syn_defs.h"#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_BLE_HCI_Config |
| struct | SYN_BLE_HCI_s |
Public Types¶
| Type | Name |
|---|---|
| typedef void(* | SYN_BLE_HCI_AclCb |
| typedef void(* | SYN_BLE_HCI_EventCb |
Public Functions¶
| Type | Name |
|---|---|
| SYN_Status | syn_ble_hci_encode_acl (uint16_t conn_handle, uint8_t pb_flags, uint8_t bc_flags, const uint8_t * data, uint16_t len, uint8_t * tx_buf, uint16_t * tx_len) Encode HCI ACL Data Packet. |
| SYN_Status | syn_ble_hci_encode_command (uint16_t opcode, const uint8_t * params, uint8_t param_len, uint8_t * tx_buf, uint16_t * tx_len) Send HCI Command Packet. |
| SYN_Status | syn_ble_hci_init (SYN_BLE_HCI * hci, const SYN_BLE_HCI_Config * cfg) Initialize HCI Driver Context. |
| SYN_Status | syn_ble_hci_rx_buf (SYN_BLE_HCI * hci, const uint8_t * buf, uint16_t len) Feed raw buffer into HCI receiver state machine. |
| SYN_Status | syn_ble_hci_rx_byte (SYN_BLE_HCI * hci, uint8_t byte) Feed raw bytes from UART/SPI into HCI receiver state machine. |
Macros¶
| Type | Name |
|---|---|
| define | SYN_BLE_HCI_EVT_CMD_COMPLETE 0x0EU |
| define | SYN_BLE_HCI_EVT_CMD_STATUS 0x0FU |
| define | SYN_BLE_HCI_EVT_DISCONN_COMPLETE 0x05U |
| define | SYN_BLE_HCI_EVT_LE_META 0x3EU |
| define | SYN_BLE_HCI_LE_SUBEVT_ADV_REPORT 0x02U |
| define | SYN_BLE_HCI_LE_SUBEVT_CONN_COMPLETE 0x01U |
| define | SYN_BLE_HCI_LE_SUBEVT_CONN_UPDATE_COMPLETE 0x03U |
| define | SYN_BLE_HCI_OGF_INFO_PARAM 0x04U |
| define | SYN_BLE_HCI_OGF_LE_CONTROLLER 0x08U |
| define | SYN_BLE_HCI_OGF_LINK_CONTROL 0x01U |
| define | SYN_BLE_HCI_OGF_STATUS_PARAM 0x05U |
| define | SYN_BLE_HCI_OPCODE (ogf, ocf) ((uint16\_t)(((ogf) << 10) \| ((ocf) & 0x03FFU))) |
| define | SYN_BLE_HCI_OP_DISCONNECT [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x01U, 0x0006U) |
| define | SYN_BLE_HCI_OP_LE_CREATE_CONN [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x000DU) |
| define | SYN_BLE_HCI_OP_LE_CREATE_CONN_CANCEL [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x000EU) |
| define | SYN_BLE_HCI_OP_LE_READ_BUFFER_SIZE [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x0002U) |
| define | SYN_BLE_HCI_OP_LE_SET_ADV_DATA [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x0008U) |
| define | SYN_BLE_HCI_OP_LE_SET_ADV_ENABLE [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x000AU) |
| define | SYN_BLE_HCI_OP_LE_SET_ADV_PARAM [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x0006U) |
| define | SYN_BLE_HCI_OP_LE_SET_EVENT_MASK [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x0001U) |
| define | SYN_BLE_HCI_OP_LE_SET_RANDOM_ADDR [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x0005U) |
| define | SYN_BLE_HCI_OP_LE_SET_SCAN_ENABLE [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x000CU) |
| define | SYN_BLE_HCI_OP_LE_SET_SCAN_PARAM [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x000BU) |
| define | SYN_BLE_HCI_OP_LE_SET_SCAN_RESP_DATA [**SYN\_BLE\_HCI\_OPCODE**](syn__ble__hci_8h.md#define-syn_ble_hci_opcode)(0x08U, 0x0009U) |
| define | SYN_BLE_HCI_PKT_ACL 0x02U |
| define | SYN_BLE_HCI_PKT_CMD 0x01U |
| define | SYN_BLE_HCI_PKT_EVT 0x04U |
| define | SYN_BLE_HCI_PKT_ISO 0x05U |
| define | SYN_BLE_HCI_PKT_SCO 0x03U |
| define | SYN_BLE_HCI_RX_BUF_SIZE 256U |
| define | SYN_BLE_HCI_TX_BUF_SIZE 256U |
Detailed Description¶
Implements Bluetooth Core Specification Vol 4, Part A (H:4 Transport Layer). Encapsulates HCI Commands, HCI Events, and ACL Data packets over UART/SPI.
Public Types Documentation¶
typedef SYN_BLE_HCI_AclCb¶
typedef void(* SYN_BLE_HCI_AclCb) (SYN_BLE_HCI *hci, uint16_t conn_handle, uint8_t pb_bc_flags, const uint8_t *data, uint16_t len, void *user_data);
Callback function pointer for received ACL Data
typedef SYN_BLE_HCI_EventCb¶
typedef void(* SYN_BLE_HCI_EventCb) (SYN_BLE_HCI *hci, uint8_t evt_code, const uint8_t *payload, uint8_t len, void *user_data);
Callback function pointer for received HCI Events
Public Functions Documentation¶
function syn_ble_hci_encode_acl¶
Encode HCI ACL Data Packet.
SYN_Status syn_ble_hci_encode_acl (
uint16_t conn_handle,
uint8_t pb_flags,
uint8_t bc_flags,
const uint8_t * data,
uint16_t len,
uint8_t * tx_buf,
uint16_t * tx_len
)
Parameters:
conn_handle12-bit Connection Handle.pb_flagsPacket Boundary flags (2 bits).bc_flagsBroadcast flags (2 bits).dataData payload bytes.lenData payload length in bytes.tx_bufBuffer to store framed ACL packet (minimum 5 + len bytes).tx_lenPointer to store resulting framed size.
Returns:
SYN_OK on success.
function syn_ble_hci_encode_command¶
Send HCI Command Packet.
SYN_Status syn_ble_hci_encode_command (
uint16_t opcode,
const uint8_t * params,
uint8_t param_len,
uint8_t * tx_buf,
uint16_t * tx_len
)
Parameters:
opcode16-bit HCI Command Opcode.paramsPointer to parameter payload (or NULL if len is 0).param_lenParameter payload length in bytes.tx_bufBuffer to store framed HCI packet (minimum 4 + param_len bytes).tx_lenPointer to store resulting framed size.
Returns:
SYN_OK on success.
function syn_ble_hci_init¶
Initialize HCI Driver Context.
Parameters:
hciDriver handle pointer.cfgDriver configuration struct.
Returns:
SYN_OK on success, SYN_INVALID_PARAM if null.
function syn_ble_hci_rx_buf¶
Feed raw buffer into HCI receiver state machine.
Parameters:
hciDriver handle pointer.bufData buffer pointer.lenData buffer length.
Returns:
SYN_OK on success.
function syn_ble_hci_rx_byte¶
Feed raw bytes from UART/SPI into HCI receiver state machine.
Parameters:
hciDriver handle pointer.byteSingle received byte from H:4 transport.
Returns:
SYN_OK on success.
Macro Definition Documentation¶
define SYN_BLE_HCI_EVT_CMD_COMPLETE¶
Command Complete Event
define SYN_BLE_HCI_EVT_CMD_STATUS¶
Command Status Event
define SYN_BLE_HCI_EVT_DISCONN_COMPLETE¶
Disconnection Complete Event
define SYN_BLE_HCI_EVT_LE_META¶
LE Meta Event
define SYN_BLE_HCI_LE_SUBEVT_ADV_REPORT¶
LE Advertising Report Subevent
define SYN_BLE_HCI_LE_SUBEVT_CONN_COMPLETE¶
LE Connection Complete Subevent
define SYN_BLE_HCI_LE_SUBEVT_CONN_UPDATE_COMPLETE¶
LE Connection Update Complete Subevent
define SYN_BLE_HCI_OGF_INFO_PARAM¶
Informational Parameters OGF
define SYN_BLE_HCI_OGF_LE_CONTROLLER¶
LE Controller Commands OGF
define SYN_BLE_HCI_OGF_LINK_CONTROL¶
Link Control OGF
define SYN_BLE_HCI_OGF_STATUS_PARAM¶
Status Parameters OGF
define SYN_BLE_HCI_OPCODE¶
Construct 16-bit HCI Opcode from OGF and OCF
define SYN_BLE_HCI_OP_DISCONNECT¶
Disconnect Opcode
define SYN_BLE_HCI_OP_LE_CREATE_CONN¶
LE Create Connection Opcode
define SYN_BLE_HCI_OP_LE_CREATE_CONN_CANCEL¶
LE Create Connection Cancel Opcode
define SYN_BLE_HCI_OP_LE_READ_BUFFER_SIZE¶
LE Read Buffer Size Opcode
define SYN_BLE_HCI_OP_LE_SET_ADV_DATA¶
LE Set Advertising Data Opcode
define SYN_BLE_HCI_OP_LE_SET_ADV_ENABLE¶
LE Set Advertising Enable Opcode
define SYN_BLE_HCI_OP_LE_SET_ADV_PARAM¶
LE Set Advertising Parameters Opcode
define SYN_BLE_HCI_OP_LE_SET_EVENT_MASK¶
LE Set Event Mask Opcode
define SYN_BLE_HCI_OP_LE_SET_RANDOM_ADDR¶
LE Set Random Address Opcode
define SYN_BLE_HCI_OP_LE_SET_SCAN_ENABLE¶
LE Set Scan Enable Opcode
define SYN_BLE_HCI_OP_LE_SET_SCAN_PARAM¶
LE Set Scan Parameters Opcode
define SYN_BLE_HCI_OP_LE_SET_SCAN_RESP_DATA¶
LE Set Scan Response Data Opcode
define SYN_BLE_HCI_PKT_ACL¶
HCI ACL Data Packet
define SYN_BLE_HCI_PKT_CMD¶
HCI Command Packet
define SYN_BLE_HCI_PKT_EVT¶
HCI Event Packet
define SYN_BLE_HCI_PKT_ISO¶
HCI ISO Data Packet
define SYN_BLE_HCI_PKT_SCO¶
HCI Synchronous Data Packet
define SYN_BLE_HCI_RX_BUF_SIZE¶
HCI RX packet reassembly capacity
define SYN_BLE_HCI_TX_BUF_SIZE¶
HCI TX packet capacity
The documentation for this class was generated from the following file src/syntropic/ble/syn_ble_hci.h