0

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

没关系?

4

0 回答 0