如何识别信标和其他BLE设备?

时间:2015-11-10 09:47:03

标签: bluetooth-lowenergy ibeacon altbeacon eddystone beacon

现在我从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设备(不是信标)。

没关系?

0 个答案:

没有答案