了解iBeacon数据:功率字段和其他字节

ySi*_*gen 5 bluetooth hci ios bluetooth-lowenergy ibeacon

我是蓝牙系统的新手,我正在尝试了解用于新Apple技术的数据:iBeacon.

已经有一些很好的答案可以解释它是如何工作的,而且我一直在阅读我能找到的所有内容(特别是蓝牙规范).尽管如此,我仍然缺少一些观点,我将首先举一个例子:(我正在使用Set广告数据命令,它hcitool cmd在OGF之前错过了这里)

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
Run Code Online (Sandbox Code Playgroud)

我将在此列出我不理解的内容或查找有关的信息.

  1. 有没有关于OGF的任何信息(这里是0x08)?我知道它代表OpCode Group Field,但与OGF之后的OCF相反,我没有找到任何东西.
  2. 什么是02 01 1A 1A字节线代表什么意思?我知道第一个字节,1E告诉其余数据的长度,然后在该行之后FF,您将获得制造商特定的数据.但我找不到关于这4个字节的任何内容.
  3. 电源字节如何工作?在这里C5.我知道我得到的是我的iBeacon(例如我的iPhone)上的dBm值.而且我知道值越高(在该功率字节上),功率越高意味着更高的精度,但也会消耗更多的能量.但是你如何使用那个字节呢?您可以设置的最小值和最大值是多少?或者那里有什么样的配方?你得到一个设定的dBm值(距你的iBeacon一米)对于字节的设定值吗?

谢谢.

dav*_*ung 6

前两个问题的答案可以在巨大的蓝牙4.0核心规范中找到.

  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
    
    Run Code Online (Sandbox Code Playgroud)

    - 蓝牙规范版本4.0 [第3卷],"广告和扫描响应数据格式"p.375

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

  3. 功率场只是一个字节的二进制补码数,表示在一个距离的RSSI中的"测量功率".简单来说

    这是如何工作的:

    1. 将iBeacon扫描仪(如Locate for iBeacon for iOS)放在离iBeacon发射器一米远的位置.
    2. 读取RSSI中的信号强度.它将是介于-1和-127之间的数字.(-1很强,-127非常弱)
    3. 使用二进制补码将此数字转换为十六进制.(添加256然后转换为十六进制)

注意:功率字段可以是80-FF.如果是00,iOS根本不会进行距离计算.您可以在此处详细了解如何使用它.