即使开发简单的应用程序,Openthread中的现有示例也很复杂。谁能提供使用Openthread“ mdt / fdt库”并开发一个简单应用程序的步骤列表,从中可以发送或接收CoAP消息?以下是我写的内容,但运行不正常,有时会崩溃。我已经链接了“ fdt,posix,mbedtls,libcrypto”等库,并且能够成功构建应用程序。

    instance = otInstanceInitSingle();
    otError err = otIp6SetEnabled(instance, true);
    if(err == OT_ERROR_NONE)
    {
        err = otCoapStart(instance, OT_DEFAULT_COAP_PORT);
        pthread_t thread_id;
        pthread_create(&thread_id, NULL, OTProcessThread, NULL); // To call otTaskletsProcess(instance);
        return OK;
    }
    else{
        std::cout << "Init Status: " << err << "\n";
    }


该线程如下所示。我这是一个示例代码,因此我目前在线程中没有提供任何睡眠/信号。

void *OTProcessThread(void *vargp)
{
    printf("\nOTProcessThread started..");
    while (true)
    {
        otTaskletsProcess(instance);
        //otSysProcessDrivers(instance);
    }
}


通过此初始化过程,我尝试按以下方式发送消息。但是之后,该应用程序在Openthread代码内的某个位置崩溃了。

     message = otCoapNewMessage(instance, NULL);
     otCoapMessageInit(message, coapType, coapCode);
     otCoapMessageGenerateToken(message, 8);
     otCoapMessageAppendUriPathOptions(message, uri.c_str());
     //otMessageAppend(message, NULL, 0);

     otError status = otCoapSendRequest(instance, message, &messageInfo, &HandleResponse, this);


有人可以让我知道,我到底想念什么?

最佳答案

尽管没有更好的了解我无法谈及您的特定问题,但是以下一些资源可能会有所帮助:


https://github.com/openthread/ot-rtos
https://codelabs.developers.google.com/codelabs/openthread-apis/
https://www.nordicsemi.com/Software-and-tools/Software/nRF5-SDK-for-Thread-and-Zigbee

10-06 04:58