现在我从BLE设备收到了很多传输的BLE广告包。
我怎么知道这是灯塔?
我想我可以根据以下信息查看:
这意味着我想我会将BLE广告检查为以下示例代码:
do {
uint8_t entryLen = info->data[n];
uint8_t entryType = info->data[n + 1];
if (entryType == 0xff) {
int m = n + 2;
if (((uint8_t)info->data[m] == 0x4c) && ((uint8_t)info->data[m + 1] == 0x00) &&
((uint8_t)info->data[m + 2] == 0x02) && ((uint8_t)info->data[m + 3] == 0x15)) {
printf("---------------iBeacon-------------------------\n");
} else if (((uint8_t)info->data[m + 2] == 0xbe) && ((uint8_t)info->data[m + 3] == 0xac)) {
printf("---------------AltBeacon-------------------------\n");
}
} else if (entryType == 0x16) {
int m = n + 2;
if (((uint8_t)info->data[m] == 0xaa) && ((uint8_t)info->data[m + 1] == 0xfe)) {
printf("---------------Eddystone-------------------------\n");
m += 2;
switch ((uint8_t)info->data[m]) {
case 0x00:
printf("---------------EddystoneBeaconUIDdata-------------------------\n");
break;
case 0x20:
printf("---------------EddystoneBeaconTLM-------------------------\n");
break;
default:
printf("Eddystone Type %s\n", (uint8_t)info->data[m]);
break;
}
}
} else {
printf("---------------Other BLE Device-------------------------\n");
}
n += (entryLen + 1);
} while (n < info->length);
如果设备不是iBeacon,AltBeacon或Eddystone,则意味着它是其他BLE设备(不是信标)。
没关系?