Component/bt: add update duplicate scan exceptional list APIs
This commit is contained in:
@@ -1695,6 +1695,52 @@ tBTM_STATUS BTM_BleWriteScanRspRaw(UINT8 *p_raw_scan_rsp, UINT32 raw_scan_rsp_le
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_UpdateBleDuplicateExceptionalList
|
||||
**
|
||||
** Description This function is called to update duplicate scan exceptional list.
|
||||
**
|
||||
** Parameters: subcode: add, remove or clean duplicate scan exceptional list.
|
||||
** type: device info type
|
||||
** device_info: device information
|
||||
** update_exceptional_list_cmp_cb: complete callback
|
||||
**
|
||||
** Returns status
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_UpdateBleDuplicateExceptionalList(uint8_t subcode, uint32_t type, BD_ADDR device_info,
|
||||
tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK update_exceptional_list_cmp_cb)
|
||||
{
|
||||
tBTM_BLE_CB *ble_cb = &btm_cb.ble_ctr_cb;
|
||||
ble_cb->update_exceptional_list_cmp_cb = update_exceptional_list_cmp_cb;
|
||||
tBTM_STATUS status = BTM_NO_RESOURCES;
|
||||
if (!controller_get_interface()->supports_ble()) {
|
||||
return BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
if(!device_info) {
|
||||
return BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
// subcoe + type + device info
|
||||
uint8_t device_info_array[1 + 4 + BD_ADDR_LEN] = {0};
|
||||
device_info_array[0] = subcode;
|
||||
device_info_array[1] = type & 0xff;
|
||||
device_info_array[2] = (type >> 8) & 0xff;
|
||||
device_info_array[3] = (type >> 16) & 0xff;
|
||||
device_info_array[4] = (type >> 24) & 0xff;
|
||||
if(type == BTM_DUPLICATE_SCAN_EXCEPTIONAL_INFO_ADV_ADDR) {
|
||||
bt_rcopy(&device_info_array[5], device_info, BD_ADDR_LEN);
|
||||
} else {
|
||||
memcpy(&device_info_array[5], device_info, 4);
|
||||
}
|
||||
status = BTM_VendorSpecificCommand(HCI_VENDOR_BLE_UPDATE_DUPLICATE_EXCEPTIONAL_LIST, 1 + 4 + BD_ADDR_LEN, device_info_array, NULL);
|
||||
if(status == BTM_CMD_STARTED) {
|
||||
status = BTM_SUCCESS;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_BleWriteAdvData
|
||||
|
||||
@@ -689,10 +689,21 @@ tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode, UINT8 param_len,
|
||||
void btm_vsc_complete (UINT8 *p, UINT16 opcode, UINT16 evt_len,
|
||||
tBTM_CMPL_CB *p_vsc_cplt_cback)
|
||||
{
|
||||
tBTM_BLE_CB *ble_cb = &btm_cb.ble_ctr_cb;
|
||||
switch(opcode) {
|
||||
case HCI_VENDOR_BLE_LONG_ADV_DATA:
|
||||
BTM_TRACE_EVENT("Set long adv data complete\n");
|
||||
break;
|
||||
case HCI_VENDOR_BLE_UPDATE_DUPLICATE_EXCEPTIONAL_LIST: {
|
||||
uint8_t subcode, status; uint32_t length;
|
||||
STREAM_TO_UINT8(status, p);
|
||||
STREAM_TO_UINT8(subcode, p);
|
||||
STREAM_TO_UINT32(length, p);
|
||||
if(ble_cb && ble_cb->update_exceptional_list_cmp_cb) {
|
||||
(*ble_cb->update_exceptional_list_cmp_cb)(status, subcode, length, p);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -279,6 +279,9 @@ typedef UINT16 tBTM_BLE_STATE_MASK;
|
||||
#define BTM_LE_RESOLVING_LIST_MAX 0x20
|
||||
#endif
|
||||
|
||||
#define BTM_DUPLICATE_SCAN_EXCEPTIONAL_INFO_ADV_ADDR 0
|
||||
#define BTM_DUPLICATE_SCAN_EXCEPTIONAL_INFO_MESH_LINK_ID 1
|
||||
|
||||
typedef struct {
|
||||
BD_ADDR *resolve_q_random_pseudo;
|
||||
UINT8 *resolve_q_action;
|
||||
@@ -356,6 +359,7 @@ typedef struct {
|
||||
/* current BLE link state */
|
||||
tBTM_BLE_STATE_MASK cur_states; /* bit mask of tBTM_BLE_STATE */
|
||||
UINT8 link_count[2]; /* total link count master and slave*/
|
||||
tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK *update_exceptional_list_cmp_cb;
|
||||
} tBTM_BLE_CB;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -790,4 +790,22 @@ static inline void bdsetany(BD_ADDR a)
|
||||
{
|
||||
bdcpy(a, bd_addr_any);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bt_rcopy
|
||||
**
|
||||
** Description memory reverse and copy.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
static inline void bt_rcopy(UINT8 *dst, UINT8 const *src, UINT16 len)
|
||||
{
|
||||
src += len;
|
||||
while (len --) {
|
||||
*dst++ = *--src;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -869,6 +869,7 @@ tBTM_BLE_SCAN_SETUP_CBACK bta_ble_scan_setup_cb;
|
||||
typedef void (tBTM_START_ADV_CMPL_CBACK) (UINT8 status);
|
||||
typedef void (tBTM_START_STOP_ADV_CMPL_CBACK) (UINT8 status);
|
||||
|
||||
typedef void (tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK) (tBTM_STATUS status, uint8_t subcode, uint32_t length, uint8_t *device_info);
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -2081,6 +2082,22 @@ tBTM_STATUS BTM_BleGetEnergyInfo(tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback);
|
||||
//extern
|
||||
tBTM_STATUS BTM_SetBleDataLength(BD_ADDR bd_addr, UINT16 tx_pdu_length);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_UpdateBleDuplicateExceptionalList
|
||||
**
|
||||
** Description This function is called to update duplicate scan exceptional list.
|
||||
**
|
||||
** Parameters: subcode: add, remove or clean duplicate scan exceptional list.
|
||||
** type: device info type
|
||||
** device_info: device information
|
||||
** update_exceptional_list_cmp_cb: complete callback
|
||||
**
|
||||
** Returns status
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
tBTM_STATUS BTM_UpdateBleDuplicateExceptionalList(uint8_t subcode, uint32_t type, BD_ADDR device_info, tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK update_exceptional_list_cmp_cb);
|
||||
/*
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -367,15 +367,16 @@
|
||||
#define HCI_SUBCODE_COMMON_MAX 0x7F
|
||||
|
||||
//ESP BLE subcode define
|
||||
#define HCI_SUBCODE_BLE_INIT 0x00
|
||||
#define HCI_SUBCODE_BLE_MULTI_ADV 0x01
|
||||
#define HCI_SUBCODE_BLE_BATCH_SCAN 0x02
|
||||
#define HCI_SUBCODE_BLE_ADV_FILTER 0x03
|
||||
#define HCI_SUBCODE_BLE_TRACK_ADV 0x04
|
||||
#define HCI_SUBCODE_BLE_ENERGY_INFO 0x05
|
||||
#define HCI_SUBCODE_BLE_EXTENDED_SCAN_PARAMS 0x06
|
||||
#define HCI_SUBCODE_BLE_LONG_ADV 0x07
|
||||
#define HCI_SUBCODE_BLE_MAX 0x7F
|
||||
#define HCI_SUBCODE_BLE_INIT 0x00
|
||||
#define HCI_SUBCODE_BLE_MULTI_ADV 0x01
|
||||
#define HCI_SUBCODE_BLE_BATCH_SCAN 0x02
|
||||
#define HCI_SUBCODE_BLE_ADV_FILTER 0x03
|
||||
#define HCI_SUBCODE_BLE_TRACK_ADV 0x04
|
||||
#define HCI_SUBCODE_BLE_ENERGY_INFO 0x05
|
||||
#define HCI_SUBCODE_BLE_EXTENDED_SCAN_PARAMS 0x06
|
||||
#define HCI_SUBCODE_BLE_LONG_ADV 0x07
|
||||
#define HCI_SUBCODE_BLE_DUPLICATE_EXCEPTIONAL_LIST 0x08
|
||||
#define HCI_SUBCODE_BLE_MAX 0x7F
|
||||
|
||||
//ESP BT subcode define
|
||||
#define HCI_SUBCODE_BT_INIT 0x00
|
||||
@@ -412,7 +413,8 @@
|
||||
#define HCI_BLE_EXTENDED_SCAN_PARAMS_OCF HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_EXTENDED_SCAN_PARAMS)
|
||||
/* Long BLE Adv data OCF */
|
||||
#define HCI_VENDOR_BLE_LONG_ADV_DATA HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_LONG_ADV)
|
||||
|
||||
/* BLE update duplicate scan exceptional list */
|
||||
#define HCI_VENDOR_BLE_UPDATE_DUPLICATE_EXCEPTIONAL_LIST HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_DUPLICATE_EXCEPTIONAL_LIST)
|
||||
//ESP BT HCI CMD
|
||||
|
||||
/* subcode for multi adv feature */
|
||||
|
||||
Reference in New Issue
Block a user