Fixed:mcu thread runing failed.

This commit is contained in:
Fancy code 2024-05-11 11:27:29 +08:00
parent b305614fda
commit 328d81ac3e
3 changed files with 23 additions and 21 deletions

View File

@ -320,24 +320,27 @@ void SixFrameHandle::RequestGetParamValue(const std::string &url, ResponseHandle
} }
void inline SixFrameHandle::ResponseGetParamValue(cJSON *result, const AppParamValue &param) void inline SixFrameHandle::ResponseGetParamValue(cJSON *result, const AppParamValue &param)
{ {
cJSON *info = cJSON_CreateArray(); // cJSON *info = cJSON_CreateArray();
if (nullptr == info) { // if (nullptr == info) {
LogError("cJSON_CreateArray failed.\n"); // LogError("cJSON_CreateArray failed.\n");
return; // return;
} // }
cJSON_AddItemToObject(result, CJSON_INFO_STRING, info); // cJSON_AddItemToObject(result, CJSON_INFO_STRING, info);
cJSON *mic = cJSON_CreateObject(); // cJSON *mic = cJSON_CreateObject();
if (nullptr != mic) { // if (nullptr != mic) {
cJSON_AddItemToArray(info, mic); // cJSON_AddItemToArray(info, mic);
cJSON_AddStringToObject(mic, "name", "mic"); // cJSON_AddStringToObject(mic, "name", "mic");
cJSON_AddNumberToObject(mic, "value", static_cast<int>(param.mMicStatus)); // cJSON_AddNumberToObject(mic, "value", static_cast<int>(param.mMicStatus));
} // }
cJSON *rec = cJSON_CreateObject(); // cJSON *rec = cJSON_CreateObject();
if (nullptr != rec) { // if (nullptr != rec) {
cJSON_AddItemToArray(info, rec); // cJSON_AddItemToArray(info, rec);
cJSON_AddStringToObject(rec, "name", "rec"); // cJSON_AddStringToObject(rec, "name", "rec");
cJSON_AddNumberToObject(rec, "value", static_cast<int>(param.mRec)); // cJSON_AddNumberToObject(rec, "value", static_cast<int>(param.mRec));
} // }
cJSON *info = nullptr;
cJSON_AddItemToObject(result, CJSON_INFO_STRING, info = cJSON_CreateObject());
cJSON_AddNumberToObject(info, "value", static_cast<int>(param.mRec));
} }
void SixFrameHandle::RequestGetCapability(const std::string &url, ResponseHandle responseHandle, void *context) void SixFrameHandle::RequestGetCapability(const std::string &url, ResponseHandle responseHandle, void *context)
{ {

View File

@ -51,6 +51,7 @@ const StatusCode McuDevice::Init(void)
LogError("IUartOpen failed.\n"); LogError("IUartOpen failed.\n");
return code; return code;
} }
mThreadRuning = true;
std::shared_ptr<McuDevice> device = std::dynamic_pointer_cast<McuDevice>(SharedFromThis()); std::shared_ptr<McuDevice> device = std::dynamic_pointer_cast<McuDevice>(SharedFromThis());
auto recvThread = [](std::shared_ptr<McuDevice> device) { auto recvThread = [](std::shared_ptr<McuDevice> device) {
device->DeviceRecvThread(); device->DeviceRecvThread();
@ -160,14 +161,13 @@ void McuDevice::DeviceRecvThread(void)
return; return;
} }
memset(keyHeadBuf, 0, keyHeadLength); memset(keyHeadBuf, 0, keyHeadLength);
mThreadRuning = true;
while (mThreadRuning) { while (mThreadRuning) {
ssize_t recvLength = ssize_t recvLength =
IUartRecv(mUartDevice, keyHeadBuf + recvTotalLength, keyHeadLength - recvTotalLength, RECV_TIMEOUT_MS); IUartRecv(mUartDevice, keyHeadBuf + recvTotalLength, keyHeadLength - recvTotalLength, RECV_TIMEOUT_MS);
LogInfo("mcu recv length = %ld\n", recvLength);
if (recvLength <= 0) { // recv failed or recv nothing if (recvLength <= 0) { // recv failed or recv nothing
continue; continue;
} }
LogInfo("mcu recv length = %ld\n", recvLength);
recvTotalLength += recvLength; recvTotalLength += recvLength;
if (keyHeadLength == recvTotalLength) { if (keyHeadLength == recvTotalLength) {
DeviceRecvData(keyHeadBuf, keyHeadLength); DeviceRecvData(keyHeadBuf, keyHeadLength);

View File

@ -15,5 +15,4 @@
#include "UartRecvAsk.h" #include "UartRecvAsk.h"
UartRecvAsk::UartRecvAsk() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY) UartRecvAsk::UartRecvAsk() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
{ {
//
} }