-1

即使是开发一个简单的应用程序,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);

有人可以告诉我,我到底错过了什么?

4

1 回答 1

0

虽然我无法在没有更高知名度的情况下谈论您的具体问题,但这里有一些资源可能会对您有所帮助:

于 2019-12-03T21:19:19.587 回答