nRF52832主机扫描筛选自定义扫描恢复数据
参考https://blog.csdn.net/gbygq/article/details/109330816文章,在从机中增加自定义数据
添加提取“扫描回应数据”函数
uint32_t GetSrtypeData(uint8_t srType, ble_data_t *pAdvData, ble_data_t *pTypeData)
{
uint32_t index = 0;
uint8_t *pData;
pData = pAdvData->p_data;
while(index < pAdvData->len) // 判断当前指针是否还未到包尾
{
uint8_t fieldLength = pData[index];
uint8_t fieldType = pData[index + 1];
if(fieldType == srType) // 如果找到了srType
{
pTypeData->p_data = &pData[index + 2]; // 数据段内容
pTypeData->len = fieldLength - 1; // 数据段长度
return NRF_SUCCESS; // 找到了srType
}
index += fieldLength + 1; // 没找到srType则指向下一个数据段
}
return NRF_ERROR_NOT_FOUND; // 本数据串中没有找到对应srType
}
###使用例程
在nrf_ble_scan_on_adv_report函数中添加
ble_data_t pTypeData = {0};
uint32_t return_vlaue = GetSrtypeData(BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA, (ble_data_t *)&p_scan_ctx->scan_buffer, &pTypeData);
从而获取自定义数据,经判断是否符合后,从而调用nrf_ble_scan_connect_with_target连接对应从机