107 lines
3.1 KiB
C++
107 lines
3.1 KiB
C++
#include "Message333DE.h"
|
|
#include "SfTypeDefine.h"
|
|
#include "Log.h"
|
|
#include <string.h>
|
|
Message333DE::Message333DE() : MessageQueue("/tmp/sf_message")
|
|
{
|
|
pThumbFileCfg = nullptr;
|
|
mRecvThreadRuning = false;
|
|
mCameraHandle = std::make_shared<VCameraMessageHandle>();
|
|
mSDCardHandle = std::make_shared<VSDCardMessageHandle>();
|
|
}
|
|
std::shared_ptr<Message333DE> &Message333DE::GetInstance(std::shared_ptr<Message333DE> *impl)
|
|
{
|
|
static auto instance = std::make_shared<Message333DE>();
|
|
if (impl)
|
|
{
|
|
instance = *impl;
|
|
}
|
|
return instance;
|
|
}
|
|
void Message333DE::Init(void)
|
|
{
|
|
MessageQueueCreate();
|
|
auto recvThread = [](std::shared_ptr<Message333DE> message)
|
|
{
|
|
message->RecvThread();
|
|
};
|
|
mMessageHandle = std::thread(recvThread, shared_from_this());
|
|
}
|
|
void Message333DE::UnInit(void)
|
|
{
|
|
mRecvThreadRuning = false;
|
|
if (mMessageHandle.joinable())
|
|
{
|
|
mMessageHandle.join();
|
|
}
|
|
mCameraHandle.reset();
|
|
}
|
|
SINT32 Message333DE::sf_cardv_message_send(SINT32 cmdId, SINT8 *param, SINT32 paramLen)
|
|
{
|
|
SF_MESSAGE_BUF_S stMessagebuf = {0};
|
|
memset(&stMessagebuf, 0, sizeof(SF_MESSAGE_BUF_S));
|
|
stMessagebuf.mtype = 1;
|
|
stMessagebuf.cmdId = cmdId;
|
|
stMessagebuf.paramLen = paramLen;
|
|
if (param)
|
|
{
|
|
memcpy(stMessagebuf.paramBuf, param, paramLen);
|
|
}
|
|
MessageQueue::MessageQueueSend(&stMessagebuf);
|
|
return 0;
|
|
}
|
|
void Message333DE::RecvThread(void)
|
|
{
|
|
LogInfo("Camera recv from queue.\n");
|
|
SINT32 ret = 0;
|
|
SF_MESSAGE_BUF_S stMessagebuf = {0};
|
|
mRecvThreadRuning = true;
|
|
while (mRecvThreadRuning)
|
|
{
|
|
memset(&stMessagebuf, 0, sizeof(SF_MESSAGE_BUF_S));
|
|
ret = MessageQueueRecv(&stMessagebuf);
|
|
if (ret != SF_SUCCESS)
|
|
{
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100)); // TODO: Use select to handle??
|
|
mCameraHandle->CheckSpontaneousFilesToUpload();
|
|
continue;
|
|
}
|
|
LogInfo("cmdId:[%#x,%s]\n", stMessagebuf.cmdId, AppProcessMessageGetstatusstring(static_cast<SF_MESSAGE_TYPE_E>(stMessagebuf.cmdId)));
|
|
switch (stMessagebuf.cmdId & CMD_SERIES_FIX)
|
|
{
|
|
case CMD_FILE:
|
|
mCameraHandle->CameraTaskMessageResponse();
|
|
break;
|
|
case CMD_SD:
|
|
app_process_cmd_SD(&stMessagebuf);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
const SF_CHAR *Message333DE::AppProcessMessageGetstatusstring(const SF_MESSAGE_TYPE_E &enType)
|
|
{
|
|
switch (enType)
|
|
{
|
|
case CMD_KEY:
|
|
return "CMD_KEY";
|
|
case CMD_SD:
|
|
return "CMD_SD";
|
|
case CMD_LED:
|
|
return "CMD_LED";
|
|
case CMD_FILE:
|
|
return "CMD_FILE";
|
|
case CMD_POWEROFF:
|
|
return "CMD_POWEROFF";
|
|
case CMD_VENC:
|
|
return "CMD_VENC";
|
|
default:
|
|
return "Unknown";
|
|
}
|
|
}
|
|
SINT32 Message333DE::app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
|
|
{
|
|
mSDCardHandle->SetSDCardMessage(static_cast<SF_MESSAGE_CMD_SD_E>(pMessageBuf->cmdId)); // TODO:
|
|
return SF_SUCCESS;
|
|
} |