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.

[参考译文] CC3100:在 AP 中断期间命令 sl_Extrem1 Lib_Mqtt txDelete 对于 QoS 消息失败

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1330734/cc3100-during-ap-disconection-command-sl_extlib_mqttclientctxdelete-failed-for-qos-1-messages

器件型号:CC3100

您好!

我使用的 是 SDK 1.3.0,我的问题是为什么  sl_Extt Lib_Mqtt txDelete()在 WiFi 连接被 AP 断开时失败,并且有一条没有干净会话的错误 qos1消息。

流程是:

  • 器件连接到某个 MQTT 代理并通过 qos1将数据发送到主题。
  • AP 突然断开特定器件的连接几分钟。
  • sl_Extt Lib_Mqtt conn 回调接收  
  • 代码调用 sl_Extt Lib_Mqtt txDelete 返回-1
    • mqtt_client_ctx_delete ->  waited_pkts -> client->QoS_ACK1_WL.head   <--为真
  1.  如何在 AP 可用时释放互斥体或重新启动连接
  2. 可能在 clean = false 期间、我不应该删除上下文?

谢谢  

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

    您好!

    可能是 AP 已断开连接、但应用上层仍有数据。

    这就是代码正在等待再次连接到代理的原因,一旦完成,也会建立代理连接。

    sl_Extt Lib_Mqtt CtxDelete (((connect_config*)(RecvQue.hndl)->CLT_ctx);

    if (! IS_CONNECTED (g_ulStatus)
    {
    uart_print ("设备已从 AP \n\r\n 断开连接);

    uart_print ("重试连接到 AP\n\r\n ");

    while (! (is_connected (g_ulStatus))||! (IS_IP_ACQUIRED (g_ulStatus))
    {
    OSI_SLEEP (10);

    转到 connect_to_Broker

    什洛米

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

    但在调用  Lib_Mqtt 后、删除返回-1

    当器件重新检测到 AP 并在 调用时获取 IP 时  

    sl_Extt Lib_Mqtt CtxCreate ->  get_available_clictx_mem IT 返回空值。

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

    我明白了、让我来研究一下、如果我有权变措施、会告诉您。

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

    您好!
    有什么新想法吗?
    谢谢

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

    抱歉、尚未更新。

x 出现错误。请重试或与管理员联系。