为什么是在这个case BLE_GAP_EVT_ADV_REPORT:情况下判断UUID是否相同呢
时间: 2023-11-29 17:06:57 浏览: 287
在Bluetooth Low Energy(BLE)中,设备可以广播包含特定UUID的广播数据。当一个BLE设备处于扫描模式时,它将收到来自其他设备的广播报告,这些广播报告中包含广播设备的UUID。
在BLE_GAP_EVT_ADV_REPORT事件中,应用程序可以获取到接收到的广播报告,并且可以从广播报告中获取广播设备的UUID。因此,在这个事件中判断UUID是否相同,是为了判断接收到的广播报告是否来自目标设备。如果UUID相同,说明接收到的广播报告来自目标设备,可以执行后续操作。如果UUID不同,说明接收到的广播报告不是目标设备的,可以忽略该广播报告。
相关问题
p_adv_report->data.uuid.uuid128这个是主机的UUID吗?为什么只有这一个UUID呢
不是,p_adv_report->data.uuid.uuid128是接收到的广播报告中包含的设备UUID(Universally Unique Identifier,通用唯一识别码),而不是主机的UUID。在BLE中,每个设备都有一个唯一的UUID用于识别该设备,这个UUID通常是由厂商或开发者分配的。因此在一个广播包中,只会包含一个设备的UUID。
在BLE_GAP_EVT_ADV_REPORT事件中,通过获取广播报告中包含的设备UUID,可以判断该广播报告是来自目标设备还是其他设备,从而执行相应的操作。如果要连接多个设备,需要对每个设备的UUID进行记录和管理。
一从机多主机蓝牙连接里面很多UUID,为什么你这里值比较一个UUID呢? if (memcmp(p_adv_report->data.uuid.uuid128, m_uuid, UUID_LENGTH) == 0)
在一个从机可以与多个主机设备建立蓝牙连接的情况下,每个主机设备可以使用不同的UUID来识别自己。但是,在我给出的示例代码中,我们只使用了一个特定的UUID来识别主机设备,因为这是一个简单的示例。
实际上,您可以更改代码,使其能够处理多个不同的UUID。一种方法是使用一个数组来存储多个UUID,并在BLE_GAP_EVT_ADV_REPORT事件处理程序中遍历数组以查找与收到的广播包匹配的UUID。另一种方法是在从机与主机之间的连接建立之前,通过交换数据来协商使用哪个UUID。
如果您需要处理多个UUID,请确保在处理UUID时使用正确的比较函数,例如memcmp()函数。在我的示例代码中,我使用了memcmp()函数来比较收到的广播包UUID和我们指定的UUID是否相同,如果相同,则增加m_device_count变量的值。
阅读全文