在BLE4.2项目调试中,因需要识别临近设备的距离和服务,需要获取附近设备的服务名称和RSSI值:
在此案例中发现,set scan enable后,返回事件advertising_report_event的数据包data里面的数据是Advertising Data,而不是Scan Response Data,这就导致我无法获取附近设备的设备名称。
根据core_4.2里面的描述,将scan_type设置为1:active scanning时,应该能够获取到Scan Response Data的,但我实测没有成功。
各个参数和设置如下:
define ADV_DATA_NUM (31UL)
define SCN_DATA_NUM (31UL)
static const uint8_t AdvDataDefault[ADV_DATA_NUM] = {
0x02, 0x01, 0x06, 0x11, 0x06, 0x01, 0x00, 0x00,
0x00, 0x41, 0x20, 0x65, 0x70, 0x79, 0x74, 0x20,
0x42, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
static const uint8_t ScanRespDataDefault[SCN_DATA_NUM] = {
0x0f, 0x09, ‘T’, ‘S’, ‘B’, ‘-‘, ‘V’, ‘o’,
‘i’, ‘c’, ‘e’, ‘-‘, ‘D’, ‘e’, ‘m’, ‘o’,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00