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.

[参考译文] CC2651R3:为什么需要 GAPBonds Mgr_Pair () 在板对板设置中触发配对(多角色示例,sdk 7.10.02.23)?

Guru**** 2529560 points
Other Parts Discussed in Thread: CC2651R3SIPA

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1559370/cc2651r3-why-is-gapbondmgr_pair-needed-to-trigger-pairing-in-board-to-board-setup-multirole-example-sdk-7-10-02-23

器件型号:CC2651R3


工具/软件:

您好:

我使用以下 SDK 和平台的多角色示例:

SDK:c:\ti\simplelink_cc13xx_cc26xx_sdk_7_10_02_23
板:LP_CC2651R3SIPA
示例:ble5stack\multi_role

我的用例:

我有一个使用 GATT_BORY_encrypt_read 的自定义特性。

在智能手机 Left right arrow 电路板连接中、当手机尝试读取此特性时、配对序列会自动开始(配对弹出窗口,使用 Just Works)。

在板 Left right arrow 板连接(多角色Left right arrow多角色)中  ,当我调用 GATT_ReadCharValue() 时,调用成功,但返回 bleInundistentEncrypt (0x42 )。 配对不会自动开始。

为了解决这一问题、我明确调用了:GAPBond(pMsg->connHandle); Mgr_Pair
在 ATT 错误响应处理中、这将触发 MULTI_ROLE_PROCESSORPairState () 流、配对和绑定成功完成。

我的问题:
Point right 为什么需要 Mgr_Pair 在板对板场景中手动调用 GAPBond() 以触发配对,而在智能手机场景中,堆栈在访问加密特性时会自动启动配对?

这是多角色示例的预期行为、还是 Bond Manager/GAP 角色中存在我可能错过的一些配置?

syscfg 中的绑定管理器设置

uint8_t pairMode               =   GAPBOND_PAIRING_MODE_WAIT_FOR_REQ;
uint8_t MITM                   =   false;
uint8_t ioCap                  =   GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT;
uint8_t 绑定                =   true;
uint8_t secureConnection       = GAPBOND_SECURE_CONNECTION_ONLY   ;
uint8_t rectalPairingOnly      =   false;
uint8_t autoSyncWL             =   true;
Uint8_t eccReGenPolicy         =   0;
uint8_t KeySize                =   16;
uint8_t removeLRUBond          =   true;
Uint8_t bondFailAction         =   GAPBOND_FAIL_TERMINATE_ERASE_SINGLE_BOND;
UINT8_t KeyDistList            =   GAPBOND_KEYDIST_MENCKEY | GAPBOND_KEYIST_MIDKEY | GAPBOND_KEYDIST_MSIGN | GAPBOND_KEYDIST_SENCKEY | GAPBOND_KEYDIST_SIDKEY | GAPBOND_KEYDIST;
Uint8_t allowDebugKeys         =   false;
Uint8_t eraseBondWhileInConn   =   false;
Uint8_t sameIrkAction          =   GAPBOND_SAMPLE_irk_update_bond_REC;

谢谢、
Vikas

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

    您好、Vikas、

    感谢您联系我们! 使用正常的 GATT_EXPERIENT_READ 而不是 GATT_EXPERILE_encrypt_read 时 、是否也会出现这种行为? 我怀疑问题在于读取、而不是实际的配对过程。

    此致、

    Tarek D

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

    您好 Tarek、

    感谢您的答复!

    我尝试GATT_PERMIT_ENCRYPT_READ用替换GATT_PERMIT_READ。 在这种情况下、当中央器件发出读取命令时、中的流程multi_role_processGATTMsg()会进入 ELSE 情况(不是预期的读取/错误响应路径)。 我向添加了一个呼叫GAPBondMgr_Pair(pMsg->connHandle)、我能够成功配对和绑定。

    因此、我看到的行为是、除非我明确调用、否则堆栈在访问特性时不会自动启动配对GAPBondMgr_Pair()

    这是否意味着在板对板设置(多角色示例 SDK 7.10.02.23)中、我们预计使用手动触发配对、GAPBondMgr_Pair()以响应 ATT_ERROR_RSP、而不是依赖自动配对?

    此致、
    Vikas

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

    您好、Vikas、

    如果您想在另一台设备与特定特性交互时启动配对请求,而不是在建立连接时自动启动,那么是的,您需要在代码中调用 Mgr_Pair ()。 如果您希望自动配对、则需要将 syscfg 配对模式从“Wait for a pairing request“更改为“Initiate a pairing request“。

    我希望这对您有所帮助!

    此致、

    Tarek D