蓝牙标准V4.0 [vol。 2,7.7.65.2]允许控制器“在一个LE广告报告事件中对广告报告进行排队并从多个设备发送信息”。
为了管理此功能,HCI协议在事件参数中包括字段 Num_Reports (值介于1和25之间)。
如果Num_reports是> 1,如何在通过HCI接收的事件包中组织事件参数?
注1:蓝牙标准似乎指定了数据的异常排序,而不是将每个广告报告打包在另一个之后(如事件描述所示),而是将每种类型的信息包装在另一个之后(即所有Event_types)对于每个广告客户,然后是所有地址类型,然后是所有地址,依此类推,直到最后一个字段,所有rssi值)。我理解得好吗?
注2:我没有找到任何软件示例在一个单一事件中管理超过1个广告报告。这是否意味着标准的这一功能未被现实世界的设备使用?
答案 0 :(得分:2)
你理解正确。
当有多个(Num_Reports> 1)广告报告打包到一个事件中时,这些参数包含在事件中:
Subevent_Code,
Num_Reports,
Event_Type[i],
Address_Type[i],
Address[i],
Length[i],
Data[i],
RSSI[i]
因此,例如,如果Num_Reports = 3,则按照收到的顺序,按照3个报告的3个Event_Type(每个是ADV_IND,ADV_DIRECT_IND等)之一。
为标有[i]
的所有其他参数保留相同的顺序。
回答第二个问题:标准说控制器可能将更多报告排入一个事件。也许你所研究的实现不会这样做。