低功耗蓝牙:扫描广告时,如何识别扫描响应?
Bluetooth Low Energy: when scanning for advertisements, how are scan responses identified?
On Android:我想通过蓝牙 LE 做广告并获得可用的扫描响应。据我了解,扫描响应的格式与广告相同。
那么扫描器是如何识别我的扫描响应的呢?它如何区分我的扫描响应和其他设备的广告?实际上:我的扫描响应是否需要一些识别信息将其与原始广告联系起来?我没有在任何说明这一点的文档中看到任何提及。
我看过一些图表,我唯一的猜测是扫描响应总是在请求扫描响应后恰好 X 毫秒出现。这样,就不需要任何信息将响应与原始广告联系起来。虽然看起来很粗略。
我假设你问的是关于非扩展广告的问题。
参见 Spec,在第 6.B.2.3 章中。那么:
- 广告数据包 (ADV_IND) 包含广告商 48 位蓝牙地址 (AdvA) 和广告数据 (AdvData)。
- 扫描请求包(SCAN_REQ)包含扫描器48位蓝牙地址(ScanA)和目标广告商48位蓝牙地址(AdvA)。
- 扫描响应数据包 (SCAN_RSP) 包含广告商 48 位蓝牙地址 (AdvA) 和扫描响应数据 (ScanRspData)。
AdvData 和ScanRspData 格式相同,但内容不应重复。他们应该加起来。是否将给定的广告数据 (AD) 放入广告或扫描响应中是广告数据包最大长度和扫描延迟之间的优化权衡问题。
某些 AD 类型对其出现位置有限制,请参阅 Core Specification Supplement 了解更多信息。
On Android:我想通过蓝牙 LE 做广告并获得可用的扫描响应。据我了解,扫描响应的格式与广告相同。
那么扫描器是如何识别我的扫描响应的呢?它如何区分我的扫描响应和其他设备的广告?实际上:我的扫描响应是否需要一些识别信息将其与原始广告联系起来?我没有在任何说明这一点的文档中看到任何提及。
我看过一些图表,我唯一的猜测是扫描响应总是在请求扫描响应后恰好 X 毫秒出现。这样,就不需要任何信息将响应与原始广告联系起来。虽然看起来很粗略。
我假设你问的是关于非扩展广告的问题。
参见 Spec,在第 6.B.2.3 章中。那么:
- 广告数据包 (ADV_IND) 包含广告商 48 位蓝牙地址 (AdvA) 和广告数据 (AdvData)。
- 扫描请求包(SCAN_REQ)包含扫描器48位蓝牙地址(ScanA)和目标广告商48位蓝牙地址(AdvA)。
- 扫描响应数据包 (SCAN_RSP) 包含广告商 48 位蓝牙地址 (AdvA) 和扫描响应数据 (ScanRspData)。
AdvData 和ScanRspData 格式相同,但内容不应重复。他们应该加起来。是否将给定的广告数据 (AD) 放入广告或扫描响应中是广告数据包最大长度和扫描延迟之间的优化权衡问题。
某些 AD 类型对其出现位置有限制,请参阅 Core Specification Supplement 了解更多信息。