5

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

已经有一些很好的答案可以解释它是如何工作的,我一直在阅读我能找到的所有内容(尤其是蓝牙规范)。尽管如此,我还是遗漏了一些要点,我先举个例子:(我使用的是设置广告数据命令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

我将在这里列出我不了解或找不到相关信息的内容。

  1. 是否有任何关于 OGF 的信息(这里是0x08)?我知道它代表 OpCode Group Field,但与 OGF 之后的 OCF 相反,我什么也没找到。
  2. 02 01 1A 1A字节行代表什么?我知道第一个字节 ,1E表示其余数据的长度,在该行之后,从 开始FF,您将获得制造商特定的数据。但我找不到关于这 4 个字节的任何信息。
  3. 功率字节如何工作?在这里C5。我知道我得到的是对 iBeacon 进行测距(例如在我的 iPhone 上)时的 dBm 值。而且我知道值越高(在那个功率字节上),功率就越高,这意味着更高的准确性,但也意味着更多的能源消耗。但是你如何使用那个字节呢?您可以设置的最小值和最大值是多少?或者那里有什么公式?对于字节上的设定值,您是否获得了设定的 dBm 值(距离 iBeacon 一米处)?

谢谢你。

4

1 回答 1

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
    

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

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

  3. 功率字段只是一个一字节的二进制补码数字,表示在一米外的 RSSI 中的“测量功率”。简单来说

    以下是它的工作原理:

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

注意:功率场可以是 80-FF。如果为 00,iOS 根本不会进行距离计算。您可以在此处阅读有关如何使用它的更多信息。

于 2014-03-03T13:40:31.963 回答