我从HCI套接字接收EVT_LE_ADVERTISING_REPORT
。我想区分BLE信标和普通BLE设备(解析设备名称等)。我很困惑所有BLE设备是否发射信标或它们是不同的。如果不同,那么它们的数据包格式如何?
BLE信标帧只是BLE广告帧内的专用有效载荷。寻找BLE信标的设备只需对BLE广告执行扫描,查看每个广告,并查看其中是否有任何包含已知BLE信标格式的字节模式,如iBeacon,AltBeacon或Eddystone。
许多BLE设备类型发出广告,通常用于宣传GATT服务。但除非设备专门设计为BLE信标,否则大多数BLE设备不会发出BLE信标帧。信标是一种特殊类型的BLE设备,虽然非常简单。
常见的BLE信标格式使用BLE服务广告(广告数据类型0x16)或BLE制造商广告(广告数据类型0xff)。然后,它们在这些数据包中包含一个字节序列,向接收器指示它们是特定格式。在该字节模式之后,它们具有专用于唯一标识符以及数据和发射机功率校准字段的若干字节。
使用制造商广告的常见信标格式包括iBeacon和AltBeacon。
Eddystone是一种使用服务广告的常见信标格式。
非信标BLE设备也发出类似于Eddystone格式的GATT服务广告,但具有指示它们提供的特定服务的不同服务UUID。 (例如,心跳监视器或智能手表配置服务。)然而,这些非信标GATT广告通常仅用于宣传其存在,而不是在广告本身内发送数据,因此智能手机和计算机可以连接到它们和使用设备托管的更复杂的GATT服务交换数据。