了解iBeacon数据:电源字段和其他字节

我是蓝牙系统的新手,我正试图理解用于苹果新技术的数据:iBeacon。

已经有一些很好的答案解释了它是如何工作的,我一直在阅读我能find的所有东西(尤其是蓝牙规范)。 不过,我错过了一些观点,我将首先举个例子:(我正在使用设置广告数据命令 ,这里忽略了OGF之前的hcitool cmd

 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C5 00 

我将在这里列出我不了解或find的信息。

  1. 有没有关于OGF的任何信息(这里是0x08 )? 我知道它代表的是OpCode Group Field,但是跟OGF一样,OCF没有find任何东西。
  2. 02 01 1A 1A字节代表什么? 我知道第一个字节1E告诉了其余数据的长度,在那行之后,从FF开始,你得到了制造商的特定数据。 但是我找不到这4个字节的内容。
  3. 功率字节是如何工作的? 这是C5 。 我知道我得到的是测量我的iBeacon时的dBm值(例如在我的iPhone上)。 而且我知道( 功率字节上的 )值越高, 功率就越高,这意味着更高的精确度,而且更耗能。 但是,你如何使用该字节? 什么是最小值和最大值可以设置? 或者那里有什么样的公式? 你会得到一个设定的dBm值(距离你的iBeacon一米)的字节设定值吗?

谢谢。

前两个问题的答案可以在巨大的蓝牙4.0核心规格中find 。

  1. 0x08的OGF为LE控制器分组OCF命令:

    对于LE控制器命令,OGF代码定义为0x08。 (蓝牙规范版本4.0 [第2卷],第1114页)

    由于0x0008 OCF命令是一个控制器命令,因此必须使用0x08 OGF代码。 困惑? 算了吧。 只要知道你使用0x08 0x0008来设置使用hcitool的广告数据。

  2. 开始广告的字节序列如下:

     1E Number of bytes that follow in the advertisement 02 Number of bytes that follow in first AD structure 01 Flags AD type 1A Flags value 0x1A = 000011010 bit 0 (OFF) LE Limited Discoverable Mode bit 1 (ON) LE General Discoverable Mode bit 2 (OFF) BR/EDR Not Supported bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller) bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host) 1A Number of bytes that follow in second (and last) AD structure FF Manufacturer specific data AD type 4C Company identifier code LSB 00 Company identifier code MSB (0x004C == Apple) 02 Byte 0 of iBeacon advertisement indicator 15 Byte 1 of iBeacon advertisement indicator 

    – 蓝牙规范版本4.0 [第3卷],“广告和扫描响应数据格式” 375

    – 蓝牙规范版本4.0 [第3卷],附录C(规范):EIR和AD格式“,第401页

  3. 功率场只是一个字节的二进制补码,代表RSSI的“测量功率”。 简单来说,

    这是如何工作的:

    1. 拿一台iBeacon发射机的iBeacon扫描仪(比如定位iBeacon for iOS)一米远。
    2. 在RSSI中读取其信号强度。 这将是一个介于-1和-127之间的数字。 (-1非常强,-127非常弱)
    3. 使用二进制补码将此数字转换为hex。 (添加256,然后转换为hex)

注意:功率场可以是80-FF。 如果是00,则iOS根本不会进行距离计算。 你可以阅读更多关于如何使用这里 。