即使是开发一个简单的应用程序,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);
有人可以告诉我,我到底错过了什么?