This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2340R5:处理配对失败事件

Guru**** 2326480 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1498519/cc2340r5-handling-pairing-failed-events

器件型号:CC2340R5

工具/软件:

您好、

我是 BLE 外围设备、正在与中央设备(手机)进行配对和绑定。 在查看您的文档后、只有很少的事件掩码可用于处理配对状态。

BLEAPPUTIL_PAIRING_STATE_STARTED =(uint32_t) BV (0)、//!<@ref GAPBOND_PAIRING_STATE_STARTED
BLEAPPUTIL_PAIRING_STATE_COMPLETE =(uint32_t) BV (1)、//!<@ref GAPBOND_PAIRING_STATE_COMPLETE
BLEAPPUTIL_PAIRING_STATE_COPLIRED =(uint32_t) BV (2)、//!<@ref GAPBOND_PAIRING_STATE_COPLIRED
BLEAPPUTIL_PAIRING_STATE_BIND_SAVED =(uint32_t) BV (3)、//!<@ref GAPBOND_PAIRING_STATE_BIND_SAVED
BLEAPPUTIL_PAIRING_STATE_CARY_READ =(uint32_t) BV (4)、//!<@ref GAPBOND_PAIRING_STATE_CARY_READ
BLEAPPUTIL_PAIRING_STATE_RPAO_READ =(uint32_t) BV (5)、//!<@ref GAPBOND_PAIRING_STATE_RPAO_READ
BLEAPPUTIL_GENERATE_ECC_DONE =(uint32_t) BV (6)//!<@ref GAPBOND_GENERATE_ECC_DONE

我确实 测试了外围设备发起配对请求的位置、并且在中央设备(手机)上取消了配对。  但是、在我的应用中会触发 BLEAPPUTIL_PAIRING_STATE_COMPLETE。 键不会保存、之后会发生断开连接。  即使我取消配对、为什么也会触发 BLEAPPUTIL_PAIRING_STATE_COMPLETE? 如果配对由于某种原因而失败、如何在应用中获得错误状态、因为我看不到任何事件?

请提供帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    BLEAPPUTIL_PAIRING_STATE_COMPLETE 是配对事件屏蔽标志。 这意味着它实际上是一个事件类别、可能具有不同的状态。 配对状态可在pMsgData的变量内读取Pairing_pairStateHandler(假设您使用的是 basic_ble 示例)。 要读取此变量、首先需要将其转换为BLEAppUtil_PairStateData_t、然后读取状态字段。

    要查看这方面的示例、basic_ble 示例在 UART 中显示app_pairing.c文件中的配对连接状态:

    void Pairing_pairStateHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
    {
        switch (event)
        {
            case BLEAPPUTIL_PAIRING_STATE_STARTED:
            {
                MenuModule_printf(APP_MENU_PAIRING_EVENT, 0, "Pairing Status: Started - "
                                  "connectionHandle = "MENU_MODULE_COLOR_YELLOW "%d " MENU_MODULE_COLOR_RESET
                                  "status = "MENU_MODULE_COLOR_YELLOW "%d " MENU_MODULE_COLOR_RESET,
                                  ((BLEAppUtil_PairStateData_t *)pMsgData)->connHandle,
                                  ((BLEAppUtil_PairStateData_t *)pMsgData)->status);
    
                break;
            }
            
            // Code for other event masks ...
        }
    }

    如果您在中央设备上取消配对、BLE 堆栈可能会调用 Pairing_pairStateHandler带有GAPBOND_PAIRING_STATE_COMPLETE事件和参数 SMP_PAIRING_FAILED_PASSKEY_ENTRY_FAILED的函数pMsgData->status

    您可以在 BLE5 Stack API 参考中详细了解每个事件的可能状态

    此致、
    Maxence

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mathieu:

    感谢您的澄清。 它工作正常。 可以读取故障事件。