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-CC2340R53:[BLE 6.0 CS DKC]CC2340R53 关键节点 L2CAP API L2CAP_SendSDU () 返回错误代码 0x16(blePending:waiting?) 问题

Guru**** 2524550 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1564938/lp-em-cc2340r53-ble-6-0-cs-dkc-cc2340r53-key-node-l2cap-api-l2cap_sendsdu-returns-error-code-0x16-blepending-waiting-issue

器件型号:LP-EM-CC2340R53


工具/软件:

您好、TI

*SDK:9.12.0.19

我想问在执行 L2CAP_SendSDU() 时返回错误代码 0x16 的原因是什么? 它是否与 Bug[BLE_Loki-3583]有关?( SDK9_11_01_19 上已修复、CS ~1 小时后、密钥节点已满额度、导致 L2CAP 失败。 汽车节点收发器无法正确处理这种情况)

当我们将按钮事件和电池电压数据从 CC2340R53(关键节点演示代码)传输到 CC2745R10_Q1(汽车节点演示代码)时、就会出现该问题、但不会出现信道探测测距。 允许定时器使用 L2CAPCOC_sendSDU() 来发送按钮事件和电池电压数据。 在 Keynode 发送数据 65,519 次后、汽车节点不再接收数据。 然后、Keynode 在发送 L2CAP 时遇到错误并返回结果错误代码 0x16(blePending:waiting?)。

部分代码如下:

bStatus_t L2CAPCOC_sendSDU(L2capCoc_sendSduCmdParams_t *pParams)
{
  bStatus_t  status = SUCCESS;
  l2capPacket_t packet;

  packet.connHandle = pParams->connHandle;
  packet.CID = pParams->CID;
  packet.len = pParams->len;
  packet.pPayload = L2CAP_bm_alloc( pParams->len );

  memcpy(packet.pPayload, pParams->pPayload, packet.len);
  pthread_mutex_lock(&l2cap_mutex);
  status = L2CAP_SendSDU( &packet );
  pthread_mutex_unlock(&l2cap_mutex);
  if (status != SUCCESS)
  {
    osal_bm_free(packet.pPayload);
    PHSCA_ESELOG_PRINTF("[UID]L2CAP send fail status:[%2x]\r\n", status);
  }


  return status;
}


请帮助我们检查上述问题。

此致、

Burt

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

    您好 Burt、

    感谢您联系我们! 0x16 错误代码对应于 blepending。 我的一个建议是、可能会在调用 L2CAP_SendSDU 并检查这是否解决了问题之前添加延迟或睡眠函数。

    如果这样可以解决问题、或者您还有其他问题、请告诉我。

    此致、

    Tarek D