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.

[参考译文] LP-EM-CC2340R5:重新启动外设后无法建立 L2CAP

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1432799/lp-em-cc2340r5-l2cap-cannot-be-established-after-the-peripheral-is-restarted

器件型号:LP-EM-CC2340R5

工具与软件:

您好、TI

建立 BLE 连接后、我重新启动外设、在再次建立 BLE 连接时未能建立 L2CAP。

调试后、我发现重新引导外设后、中央器件无法执行 L2CAP_DisconnectReq ()、返回 INVALIDPARAMETER:通道 ID 无效。

这是什么原因呢? 我可以通过重新启动中央设备来重新建立 L2CAP。

static bStatus_t L2CAPCOC_closeCoc(uint16_t connHandle)
{
  bStatus_t ret = SUCCESS;

  ret = L2CAP_DisconnectReq(gL2CAPCOC_AppData.CID);

//  MenuModule_printf(APP_MENU_PROFILE_STATUS_LINE1, 0,
//                    "L2CAP: COC disconnected "
//                    "PSM "               MENU_MODULE_COLOR_YELLOW "%d " MENU_MODULE_COLOR_RESET
//                    "Peer PSM "          MENU_MODULE_COLOR_YELLOW "%d " MENU_MODULE_COLOR_RESET
//                    "CID "               MENU_MODULE_COLOR_YELLOW "0x%x " MENU_MODULE_COLOR_RESET
//                    "Peer CID "          MENU_MODULE_COLOR_YELLOW "0x%x " MENU_MODULE_COLOR_RESET,
//                    gL2CAPCOC_AppData.PSM,
//                    gL2CAPCOC_AppData.peerPSM,
//                    gL2CAPCOC_AppData.CID,
//                    gL2CAPCOC_AppData.peerCID);
  PHSCA_ESELOG_PRINTF("L2CAP: COC disconnected!!!PSM:%d PeerPSM:%d CID:0x%x PeerCID:0x%x ret=0x%2x\r\n",
                      gL2CAPCOC_AppData.PSM, gL2CAPCOC_AppData.peerPSM, gL2CAPCOC_AppData.CID,
                      gL2CAPCOC_AppData.peerCID, ret);

  ret |=  L2CAP_DeregisterPsm( gL2CAPCOC_AppData.taskId, gL2CAPCOC_AppData.PSM);

//  MenuModule_printf(APP_MENU_PROFILE_STATUS_LINE, 0,
//                    "De-Register PSM " MENU_MODULE_COLOR_YELLOW "%d " MENU_MODULE_COLOR_RESET,
//                    gL2CAPCOC_AppData.PSM);
  PHSCA_ESELOG_PRINTF("De-Register PSM [%d] taskid[0x%2x] ret=0x%2x\r\n", gL2CAPCOC_AppData.PSM, gL2CAPCOC_AppData.taskId, ret);

  memset(&gL2CAPCOC_AppData, 0, sizeof(gL2CAPCOC_AppData));

  return ret;
}

日志:

[17:18:05.831] Conn status: Established
[17:18:05.833] L2CAPCOC_openCoc
[17:18:05.833] Register PSM 1 SUCCEDED
[17:18:05.836] Connection request sent to PSM ID 1 taskid[0x80]
[17:18:06.617] Pairing status: Encrypted
[17:18:06.720] L2CAP: COC established!!!PSM:1 PeerPSM:1 CID:0x40 PeerCID:0x40 mtu:0x1400 mps:0x1024
[17:18:07.822] Conn status: Terminated
[17:18:31.331] L2CAP: COC disconnected!!!PSM:1 PeerPSM:1 CID:0x40 PeerCID:0x40 ret=0x 2
[17:18:31.332] De-Register PSM [1] taskid[0x80] ret=0x 2

此致

普雷斯顿

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

    您好、Preston、

    感谢您联系我们。 您能否指定此行为出现在哪个 SDK 版本中? 我们刚刚发布了8.20 SDK、其中包含一些其他功能和修复措施。 您能看一下最新的 SDK 中是否也存在该行为吗? 如果是、您还可以分享有关如何重新启动器件的详细信息吗?

    此致、

    1月

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

    您好、Jan

    我在之前的测试中使用了 simplelink_lowpower_f3_sdk_8_10_01_02、我刚刚更新到 simplelink_lowpower_f3_sdk_8_20_00_119、但仍然存在该问题。

    我首先使用两个 CC2340板建立 BLE 连接、然后建立 L2CAP。  建立 L2CAP 后、中央设备将通过蓝牙发送测试命令、并通过外围设备上的串行端口输出。 然后我按下复位按钮重置外围设备并等待蓝牙自动断开连接、我将看到当中央设备断开 L2CAP (L2CAP_DisconnectREQ ()返回0x02)、并且重新连接后未建立 L2CAP (我想 PSM 未清除)时、ID 无效。

    我发现重新启动中心设备时、外围设备断开蓝牙连接、返回无效 ID、但可以重新建立 L2CAP。 我认为这是因为中央器件作为发起方在复位后清除了 PSM 信息。

    此致

    普雷斯顿

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

    您好、Preston、

    我想尝试在我这边重现这一点。 您能否分享在 basic_ble 上重现此行为所需的最少更改量?

    此致、

    1月

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

    您好、Jan

    这是我的代码、同时包含中央和外设。

    e2e.ti.com/.../CC2340_5F00_L2CAP_5F00_test.zip

    我启用了面向 L2CAP 连接的通道、然后添加了自动扫描和连接的功能。

    请使用我的示例进行测试、如果出现意外情况、请予以回复。

    此致

    普雷斯顿

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

    您好、Preston、

    我使用提供的映像刷写了两个器件、并执行以下步骤:

    1.重置两个设备

    2.等待连接生成并测试消息发送"AAAA..."

    3.收到测试消息后、重置外设

    4.等待中心设备检测到断开连接

    完成这些步骤后、再次建立连接、但日志如下所示:

    根据日志、我将此解释为连接形成、但没有随后开始 L2CAP 流程。 是这样吗? 我只是想确保我完全按照你的看法复制了这个问题。

    此致、

    1月

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

    您好、Jan

    是的、您正在重现我看到的匹配项的问题。

    此致

    普雷斯顿

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

    您好、Preston、

    感谢您的确认。 我收集了一些嗅探器日志、并尽快提交了研发请求单来解决此问题。 如果您想跟踪此 TT、则 TT ID 为 BLE_Loki-2549。

    此致、

    1月

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

    您好、Jan

    抱歉、我试图单击"回复"按钮、但错误地单击了"解决问题"按钮。 然后、我想问我如何跟踪该机票? 我曾尝试在 E2E 中搜索此 ID、但未找到任何内容

    此致

    普雷斯顿

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

    您好、Preston、

    不用担心! 您可以联系您的 TI 现场代表获取有关这方面的最新消息。 一旦研发团队能够对其进行调查、他们就会将票证添加到 SDK 发行说明中包含的已知或已修复问题的列表中。

    此致、

    1月