feat(nimble): Added API to get resolve ADV data

This commit is contained in:
Abhinav Kudnar
2024-05-27 16:45:51 +05:30
committed by Rahul Tank
parent 040b56ba3b
commit a147a4ec7b
2 changed files with 30 additions and 0 deletions
+13
View File
@@ -121,6 +121,19 @@ int ble_gap_host_check_status(void);
*/
int ble_gap_get_local_used_addr(ble_addr_t *addr);
/**
* This API is called to get ADV data for a specific type.
*
* @param adv_data Pointer of ADV data which to be resolved.
* @param adv_type Finding ADV data type.
* @param adv_data_len Total length of Advertising data.
* @param length Return the length of ADV data not including type.
*
* @return Pointer of type specific ADV data.
*/
uint8_t* ble_resolve_adv_data(const uint8_t *adv_data, uint8_t adv_type, uint8_t adv_data_len , uint8_t * length);
#if MYNEWT_VAL(BLE_HCI_VS)
#if MYNEWT_VAL(BLE_POWER_CONTROL)
+17
View File
@@ -850,6 +850,23 @@ int ble_gap_get_local_used_addr(ble_addr_t *addr)
return rc;
}
uint8_t* ble_resolve_adv_data(const uint8_t *adv_data, uint8_t adv_type, uint8_t adv_data_len , uint8_t * length)
{
int rc = 0;
const struct ble_hs_adv_field *fields;
const uint8_t *data;
rc = ble_hs_adv_find_field(adv_type, adv_data, adv_data_len, &fields); /*Fill adv field*/
if (rc == 0) {
*length = fields->length -1 ; /* minus length of type*/
data = fields->value; /* Type specific adv data*/
return (uint8_t*)data;
}
return NULL;
}
/*****************************************************************************
* $misc *
*****************************************************************************/