BLE HCI 组件
BLE HCI 组件用于通过 VHCI 接口直接操作 BLE Controller 实现广播,扫描等功能。 相比于通过 Nimble 或 Bluedroid 协议栈发起广播和扫描,使用该组件有如下优点: - 更少的内存占用 - 更小的固件尺寸 - 更快的初始化流程
BLE HCI 使用方法
对于广播应用:
1.初始化 BLE HCI: 使用 ble_hci_init()
函数进行初始化。
2.设定本机随机地址(可选): 如果需要使用随机地址作为广播地址,使用:cpp:func:ble_hci_set_random_address`函数进行设定。
3.配置广播参数:使用 :cpp:func:`ble_hci_set_adv_param 配置广播参数。
4.配置广播数据:使用 ble_hci_set_adv_data()
设定需要广播的数据内容。
5.开始广播: 使用 ble_hci_set_adv_enable()
。
对于扫描应用:
1.初始化 BLE HCI: 使用 ble_hci_init()
函数进行初始化。
2.配置扫描参数:使用 ble_hci_set_scan_param()
配置扫描参数。
3.使能meta事件: 使用 ble_hci_enable_meta_event()
使能中断事件。
4.注册扫描事件函数: 使用 ble_hci_set_register_scan_callback()
注册中断事件。
5.开始扫描: 使用 ble_hci_set_scan_enable()
。
API 参考
Header File
Functions
-
esp_err_t ble_hci_init(void)
BLE HCI initialization.
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_deinit(void)
BLE HCI de-initialization.
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_reset(void)
BLE HCI reset controller.
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_enable_meta_event(void)
Enable BLE HCI meta event.
- 返回
esp_err_t
-
esp_err_t ble_hci_set_adv_param(ble_hci_adv_param_t *param)
Set BLE HCI advertising parameters.
- 参数
param – : advertising parameters
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_set_adv_data(uint8_t len, uint8_t *data)
Set BLE HCI advertising data.
- 参数
len – : advertising data length
data – : advertising data
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_set_adv_enable(bool enable)
Set BLE HCI advertising enable.
- 参数
enable – : true for enable advertising
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_set_scan_param(ble_hci_scan_param_t *param)
Set BLE HCI scan parameters.
- 参数
param – : scan parameters
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_set_scan_enable(bool enable, bool filter_duplicates)
Set BLE HCI scan enable.
- 参数
enable – : enable or disable scan
filter_duplicates – : filter duplicates or not
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_set_register_scan_callback(ble_hci_scan_cb_t cb)
Set BLE HCI scan callback.
- 参数
cb – : scan callback function pointer
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_add_to_accept_list(ble_hci_addr_t addr, ble_hci_addr_type_t addr_type)
Add BLE white list.
- 参数
addr – : address to be added to white list
addr_type – : address type to be added to white list
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_clear_accept_list(void)
Clear BLE white list.
- 返回
esp_err_t
ESP_OK: succeed
others: fail
-
esp_err_t ble_hci_set_random_address(ble_hci_addr_t addr)
Set BLE owner address.
- 参数
addr – : owner address
- 返回
ESP_OK: succeed
others: fail
Structures
-
struct ble_hci_scan_result_t
BLE scan result struct.
Public Members
-
ble_hci_search_evt_t search_evt
Search event type
-
ble_hci_dev_type_t dev_type
Device type
-
ble_hci_addr_t bda
Bluetooth device address which has been searched
-
ble_hci_addr_type_t ble_addr_type
Ble device address type
-
uint8_t ble_adv[ESP_BLE_ADV_DATA_LEN_MAX + ESP_BLE_SCAN_RSP_DATA_LEN_MAX]
Received EIR
-
uint8_t adv_data_len
Adv data length
-
uint8_t scan_rsp_len
Scan response length
-
int rssi
Searched device’s RSSI
-
ble_hci_search_evt_t search_evt
-
struct ble_hci_adv_param_t
Ble adv parameters.
Public Members
-
uint16_t adv_int_min
Time = N × 0.625 ms Range: 0x0020 to 0x4000
-
uint16_t adv_int_max
Time = N × 0.625 ms Range: 0x0020 to 0x4000
-
ble_hci_adv_type_t adv_type
Advertising Type
-
ble_hci_addr_type_t own_addr_type
Own Address Type
-
ble_hci_addr_t peer_addr
Peer device bluetooth device address
-
ble_hci_addr_type_t peer_addr_type
Peer device bluetooth device address type, only support public address type and random address type
-
ble_hci_adv_channel_t channel_map
Advertising channel map
-
ble_hci_adv_filter_t adv_filter_policy
Advertising Filter Policy:
-
uint16_t adv_int_min
-
struct ble_hci_scan_param_t
Ble sccan parameters.
Public Members
-
ble_hci_scan_type_t scan_type
Scan Type
-
uint16_t scan_interval
Time = N × 0.625 ms Range: 0x0004 to 0x4000
-
uint16_t scan_window
Time = N × 0.625 ms Range: 0x0004 to 0x4000
-
ble_hci_addr_type_t own_addr_type
Own Address Type
-
ble_hci_adv_filter_t filter_policy
Scanning Filter Policy
-
ble_hci_scan_type_t scan_type
Macros
-
ESP_BLE_ADV_DATA_LEN_MAX
Advertising data maximum length.
-
ESP_BLE_SCAN_RSP_DATA_LEN_MAX
Scan response data maximum length.
-
BLE_HCI_ADDR_LEN
BLE Address Length.
Type Definitions
-
typedef uint8_t ble_hci_addr_t[BLE_HCI_ADDR_LEN]
Bluetooth device address.
-
typedef void (*ble_hci_scan_cb_t)(ble_hci_scan_result_t *scan_result, uint16_t result_len)
BLE HCI scan callback function type.
- Param scan_result
: ble advertisement scan result
- Param result_len
: length of scan result
Enumerations
-
enum ble_hci_search_evt_t
Sub Event of BLE_HCI_BLE_SCAN_RESULT_EVT.
Values:
-
enumerator BLE_HCI_SEARCH_INQ_RES_EVT
Inquiry result for a peer device.
-
enumerator BLE_HCI_SEARCH_INQ_CMPL_EVT
Inquiry complete.
-
enumerator BLE_HCI_SEARCH_DISC_RES_EVT
Discovery result for a peer device.
-
enumerator BLE_HCI_SEARCH_DISC_BLE_RES_EVT
Discovery result for BLE GATT based service on a peer device.
-
enumerator BLE_HCI_SEARCH_DISC_CMPL_EVT
Discovery complete.
-
enumerator BLE_HCI_SEARCH_DI_DISC_CMPL_EVT
Discovery complete.
-
enumerator BLE_HCI_SEARCH_SEARCH_CANCEL_CMPL_EVT
Search cancelled
-
enumerator BLE_HCI_SEARCH_INQ_DISCARD_NUM_EVT
The number of pkt discarded by flow control
-
enumerator BLE_HCI_SEARCH_INQ_RES_EVT
-
enum ble_hci_addr_type_t
BLE address type.
Values:
-
enumerator BLE_ADDR_TYPE_PUBLIC
Public Device Address
-
enumerator BLE_ADDR_TYPE_RANDOM
Random Device Address.
-
enumerator BLE_ADDR_TYPE_RPA_PUBLIC
Resolvable Private Address (RPA) with public identity address
-
enumerator BLE_ADDR_TYPE_RPA_RANDOM
Resolvable Private Address (RPA) with random identity address.
-
enumerator BLE_ADDR_TYPE_PUBLIC
-
enum ble_hci_dev_type_t
Bluetooth device type.
Values:
-
enumerator BLE_HCI_DEVICE_TYPE_BREDR
-
enumerator BLE_HCI_DEVICE_TYPE_BLE
-
enumerator BLE_HCI_DEVICE_TYPE_DUMO
-
enumerator BLE_HCI_DEVICE_TYPE_BREDR
-
enum ble_hci_adv_type_t
BLE advertising type.
Values:
-
enumerator ADV_TYPE_IND
-
enumerator ADV_TYPE_DIRECT_IND_HIGH
-
enumerator ADV_TYPE_SCAN_IND
-
enumerator ADV_TYPE_NONCONN_IND
-
enumerator ADV_TYPE_DIRECT_IND_LOW
-
enumerator ADV_TYPE_IND
-
enum ble_hci_adv_channel_t
Advertising channel mask.
Values:
-
enumerator ADV_CHNL_37
-
enumerator ADV_CHNL_38
-
enumerator ADV_CHNL_39
-
enumerator ADV_CHNL_ALL
-
enumerator ADV_CHNL_37
-
enum ble_hci_scan_type_t
Ble scan type.
Values:
-
enumerator BLE_SCAN_TYPE_PASSIVE
Passive scan
-
enumerator BLE_SCAN_TYPE_ACTIVE
Active scan
-
enumerator BLE_SCAN_TYPE_PASSIVE
-
enum ble_hci_adv_filter_t
Ble adv filteer type.
Values:
-
enumerator ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY
Allow both scan and connection requests from anyone.
-
enumerator ADV_FILTER_ALLOW_SCAN_WLST_CON_ANY
Allow both scan req from White List devices only and connection req from anyone.
-
enumerator ADV_FILTER_ALLOW_SCAN_ANY_CON_WLST
Allow both scan req from anyone and connection req from White List devices only.
-
enumerator ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST
Allow scan and connection requests from White List devices only.
-
enumerator ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY