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