问题描述:
用esp32 做扫描应用时发现一个bug
本来想用esp32做ble扫描我的小米手环3广播信号,,实际操作时发现一个bug
在回调函数中的扫描总是扫描不到设备名????
翻阅源码后发现
具体在下面这个ble库里
#include
在如图所示位置加入代码即可解决问题。。。
/*
* BLEScan.cpp
*
* Created on: Jul 1, 2017
* Author: kolban
*/
#include "sdkconfig.h"
#if defined(CONFIG_BT_ENABLED)
#include
#include
更改的代码如下::
问题的原因是因为接收到的小米手环广播被拆分成两的字段
前面的信息段和后面的数据段
5701009941c3cdde08ecaa1fbb56f9ebb119cf02c5e53967bab2(数据段)
用map里的数据把应该有的数据添加到设备对象里就可以了!!!!!
/home/zhou/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLEScan.cpp
//在这个文件里
auto advertisedDevicemap = m_scanResults.m_vectorAdvertisedDevices.find(advertisedAddress.toString());
BLEAdvertisedDevice* advertisedDevice=advertisedDevicemap->second;
advertisedDevice->setAddress(advertisedAddress);
advertisedDevice->setRSSI(param->scan_rst.rssi);
advertisedDevice->setAdFlag(param->scan_rst.flag);
advertisedDevice->parseAdvertisement((uint8_t*)param->scan_rst.ble_adv, param->scan_rst.adv_data_len + param->scan_rst.scan_rsp_len);
advertisedDevice->setScan(this);
advertisedDevice->setAddressType(param->scan_rst.ble_addr_type);
printf("found = true;\r\n");