首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenThread otJoinerStart永不超时

OpenThread otJoinerStart永不超时
EN

Stack Overflow用户
提问于 2020-04-28 03:40:33
回答 1查看 151关注 0票数 0

我正在尝试将线程子代与TI CC2652R1上的现有应用程序集成,但在尝试加入/创建OpenThread网络时遇到问题。目前,我有一个外部事件,它调用一个函数来加入并启动OpenThread。下面是此函数与连接相关的代码片段:

代码语言:javascript
复制
    bool is_commissioned = otDatasetIsCommissioned(OtStack_instance);
    otJoinerState joiner_state = otJoinerGetState(OtStack_instance);
    if(!is_commissioned && (OT_JOINER_STATE_IDLE == joiner_state)){
        otError error = otIp6SetEnabled(OtStack_instance, true);
        error = otThreadSetEnabled(OtStack_instance, true);
        error = otJoinerStart(OtStack_instance, "PSK", NULL, "Company", "Device", "0.0.0", NULL, joiner_callback, NULL);
    }

otJoinerStart似乎从未解析过,因为从未调用过joiner回调,并且对joiner函数的其他调用显示joiner状态为OT_JOINER_STATE_DISCOVER,并且OpenThread实例表明它已初始化。有没有办法设置joiner回调超时?我浏览了文档,但找不到加入超时是如何设置的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 09:37:30

将线程设备加入线程网络的前提是,您有一个正在运行的线程网络,并且有一个活动的专员使用了加入者的EUI64和PSK。在尝试调用此函数进行加入之前,请确保已设置这些参数。在线程网络的通道上运行嗅探器也很有帮助,以确保专员或联合路由器正确响应。

加入线程是通过对IEEE 802.15.4页0中所有可用通道进行主动扫描来完成的。发送加入者请求的时间和加入者在每个通道上等待的时间不能立即配置。但是,这些活动扫描通常在几秒钟内完成。如果在大约5秒内没有可用的joiner路由器,您的joiner回调应该会被调用,并出现加入失败的情况。

OpenThread github存储库中的示例是以nortos方式编写的。任何应用程序代码都在微线程中运行,并且主循环只调用两个函数:进程微线程和进程驱动程序。在TI SDK中,我们使用TI-RTOS,您的代码似乎基于这些示例。通常,OtStack_Task将处理OpenThread和平台驱动程序接口;但在多线程系统中可能会发生死锁。

您可以在容器服务或IAR中使用ROV来检查内核和RTOS对象的状态。在具有活动调试会话的CCS中,选择;Tools >> Runtime Object View。然后检查堆栈任务是否在API信号量上阻塞。或者如果应用程序任务正在占用处理器。这可能是由于API信号量上的未配对的锁定/解锁,或者应用程序任务可能处于忙碌等待中。

立即我没有看到任何错误的代码片段张贴。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61467106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档