你好,
连接到我们绑定的设备时,设备的实际地址会自动解决(使用LTK)。
目前,当我连接到具有特定地址的设备(分辨率之前的地址)时,我得到了一个连接的事件,该事件包含另一个地址(解析后的地址)。这意味着我无法将事件的地址与我尝试连接的地址进行比较。
连接的事件是否有可能在解决之前持有已解析的地址和地址?这样我们就可以使用连接的事件识别设备,并且仍然知道设备的实际解析地址是什么。
此致,安迪
嗨apoudred,
让我检查连接的事件是否有可能在解决之前持有已解析的地址和地址,我会尽快通知您。只需澄清,DA14680就作为外围设备或作为中央设备?
谢谢,PM_DIALOG.
谢谢您的回答。
在我的情况下,DA14681充当中央设备:1)我扫描附近的设备2)我连接到特定设备(我已经与之粘合)3)我得到了连接的活动
谢谢你提供的详情。我们正在研究您的问题,我们会尽快回复您。
当一个随机地址被解析时,您将在BLE_EVT_GAP_ADDRESS_RESOLVED_T上保留分辨率之前和之后的BL_EVT_GAP_ADDRESS_RESOLVED和ALLA THA可用信息。请查看ble_gap.h头文件。因此,您必须做的是在应用程序级别处理BLE_EVT_GAP_ADDRESS_RESOLVED。例如,在SDK的PXP_Reporter示例中,我建议检查PXP_Reporter_Task()函数以及应用程序如何尝试使用BLE服务框架处理每个事件。所以,在您的情况下,您应该添加以下代码片段:
案例ble_evt_gap_address_resolved:
handle_evt_gap_address_resolution((ble_evt_gap_address_resolved_t *)hdr);
休息;
所以,通过这种方式,您将拥有您自己的函数,它将被称为Wheb您获得BLE_EVT_GAP_ADDRESS_RESOLVED事件。每次触发handle_evt_gap_address_resolution()时,您应该读取BLE_EVT_GAP_ADDRESS_RESOLVED_T结构的RegetVed_adress和地址项。
你好pm_dialog,谢谢你回答。
我已经使用了你的例子,但是在我的经验中,调用ble_gap_connect()不生成ble_evt_gap_address_resolved事件。我得到ble_evt_gap_connected事件,但不是ble_evt_gap_address_resolved一个。在我看来,这个事件只在调用ble_gap_address_resolve()后生成。
我错了吗?安迪
你是对的。当BLE_GAP_CONNECT()触发时,您将获得BLE_EVT_GAP_CONCONTEC,当BLE_GAP_ADDRESS_RESOLVE()调用您获取BLE_EVT_GAP_ADDRESS_RESOLVED时。
你好pm_dialog,
我想要的是在我连接到设备时解决分辨率之前解决的地址和地址。
由于我连接到设备,因此我没有得到BLE_EVT_GAP_ADDRESS_RESOLVED事件,即使在连接时会发生地址。
安迪
为延迟道歉。你的意思是,当BD地址得到解决时,您无法获得BLE_EVT_GAP_ADDRESS_RESOLVED?您能否请确保在连接之前触发handle_evt_gap_address_resolution?
嗨apoudred,
让我检查连接的事件是否有可能在解决之前持有已解析的地址和地址,我会尽快通知您。只需澄清,DA14680就作为外围设备或作为中央设备?
谢谢,PM_DIALOG.
谢谢您的回答。
在我的情况下,DA14681充当中央设备:
1)我扫描附近的设备
2)我连接到特定设备(我已经与之粘合)
3)我得到了连接的活动
此致,
安迪
嗨apoudred,
谢谢你提供的详情。我们正在研究您的问题,我们会尽快回复您。
谢谢,PM_DIALOG.
嗨apoudred,
当一个随机地址被解析时,您将在BLE_EVT_GAP_ADDRESS_RESOLVED_T上保留分辨率之前和之后的BL_EVT_GAP_ADDRESS_RESOLVED和ALLA THA可用信息。请查看ble_gap.h头文件。因此,您必须做的是在应用程序级别处理BLE_EVT_GAP_ADDRESS_RESOLVED。例如,在SDK的PXP_Reporter示例中,我建议检查PXP_Reporter_Task()函数以及应用程序如何尝试使用BLE服务框架处理每个事件。所以,在您的情况下,您应该添加以下代码片段:
案例ble_evt_gap_address_resolved:
handle_evt_gap_address_resolution((ble_evt_gap_address_resolved_t *)hdr);
休息;
所以,通过这种方式,您将拥有您自己的函数,它将被称为Wheb您获得BLE_EVT_GAP_ADDRESS_RESOLVED事件。每次触发handle_evt_gap_address_resolution()时,您应该读取BLE_EVT_GAP_ADDRESS_RESOLVED_T结构的RegetVed_adress和地址项。
谢谢,PM_DIALOG.
你好pm_dialog,
谢谢你回答。
我已经使用了你的例子,但是在我的经验中,调用ble_gap_connect()不生成ble_evt_gap_address_resolved事件。
我得到ble_evt_gap_connected事件,但不是ble_evt_gap_address_resolved一个。
在我看来,这个事件只在调用ble_gap_address_resolve()后生成。
我错了吗?
安迪
嗨apoudred,
你是对的。当BLE_GAP_CONNECT()触发时,您将获得BLE_EVT_GAP_CONCONTEC,当BLE_GAP_ADDRESS_RESOLVE()调用您获取BLE_EVT_GAP_ADDRESS_RESOLVED时。
谢谢,PM_DIALOG.
你好pm_dialog,
我想要的是在我连接到设备时解决分辨率之前解决的地址和地址。
由于我连接到设备,因此我没有得到BLE_EVT_GAP_ADDRESS_RESOLVED事件,即使在连接时会发生地址。
安迪
嗨apoudred,
为延迟道歉。你的意思是,当BD地址得到解决时,您无法获得BLE_EVT_GAP_ADDRESS_RESOLVED?您能否请确保在连接之前触发handle_evt_gap_address_resolution?
谢谢,PM_DIALOG.