【问题标题】:Understanding iBeacon data : the power field and other bytes了解 iBeacon 数据:功率场和其他字节
【发布时间】:2014-04-04 08:15:08
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: ios bluetooth bluetooth-lowenergy ibeacon hci


    【解决方案1】:

    前两个问题的答案可以在巨大的Bluetooth 4.0 Core spec中找到。

    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 的 Locate for iBeacon)放在距离 iBeacon 发射器一米远的地方。
      2. 在 RSSI 中读取其信号强度。它将是一个介于 -1 和 -127 之间的数字。 (-1 非常强,-127 非常弱)
      3. 使用二进制补码将此数字转换为十六进制。 (添加 256 然后转换为十六进制)

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

    【讨论】:

    • 感谢您的回答,电源字段的解释为我提供了我在该字节和测量的 RSSI 之间缺少的链接。我希望能尽快找到关于我的其他审讯的更多信息。
    • 我从您那里找到了一个很好的答案,可以帮助我了解距离测量的工作原理:stackoverflow.com/questions/19719659/… 尽管如此,仍在寻找有关那些可怜的未知字节的一些信息。
    • 好吧,显然你激发了我的好奇心,因为我查了剩下的东西。哇。阅读蓝牙规范真的很无聊。
    • 总的来说,我已经在其中“迷失”了很多。这就是为什么我希望其他人也这样做,但他们会有更多的知识。非常感谢您的回答。
    • 请注意:如果您查看 pdf,页码会有所不同,您将在 (pdf-)page 1735 & 1761 找到更多信息。
    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2012-02-11
    • 2014-03-22
    • 2014-01-16
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多