mirror of
https://gitee.com/jiuyilian/embedded-framework.git
synced 2025-01-06 10:16:51 -05:00
Improve:SixFrame tcp protocol.
This commit is contained in:
parent
bb0180882c
commit
3ba9078ef9
|
@ -47,6 +47,22 @@ const char *APP_GET_THUMBNAIL = "/app/getthumbnail";
|
|||
// /app/exitrecorder
|
||||
// clang-format on
|
||||
constexpr bool SET_REQUEST_RESPONSE = true;
|
||||
class CjsonAutoFree
|
||||
{
|
||||
public:
|
||||
CjsonAutoFree(cJSON *json) : mJson(json)
|
||||
{
|
||||
}
|
||||
~CjsonAutoFree()
|
||||
{
|
||||
if (mJson != nullptr) {
|
||||
cJSON_Delete(mJson);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
cJSON *mJson;
|
||||
};
|
||||
SixFrameHandle::SixFrameHandle()
|
||||
{
|
||||
mAppMonitor = std::make_shared<VAppMonitor>();
|
||||
|
@ -689,7 +705,8 @@ void SixFrameHandle::RequestTcpHandle2(const std::string command, const cJSON *c
|
|||
}
|
||||
std::shared_ptr<ProtocolPacket> SixFrameHandle::SetRecordingStatus(const RecordingStatus &status)
|
||||
{
|
||||
cJSON *resultCJSON = cJSON_CreateObject();
|
||||
cJSON *resultCJSON = nullptr;
|
||||
CjsonAutoFree autoJson(resultCJSON = cJSON_CreateObject());
|
||||
if (nullptr == resultCJSON) {
|
||||
LogError("cJSON_CreateObject failed.\n");
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
|
@ -705,24 +722,92 @@ std::shared_ptr<ProtocolPacket> SixFrameHandle::SetRecordingStatus(const Recordi
|
|||
}
|
||||
std::shared_ptr<ProtocolPacket> SixFrameHandle::SetMicrophoneStatus(const MicrophoneStatus &status)
|
||||
{
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
cJSON *resultCJSON = nullptr;
|
||||
CjsonAutoFree autoJson(resultCJSON = cJSON_CreateObject());
|
||||
if (nullptr == resultCJSON) {
|
||||
LogError("cJSON_CreateObject failed.\n");
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
}
|
||||
cJSON_AddStringToObject(resultCJSON, TCP_RESULT_MSGID, "mic");
|
||||
cJSON *info = cJSON_CreateObject();
|
||||
if (nullptr != info) {
|
||||
cJSON_AddNumberToObject(info, "value", static_cast<int>(status));
|
||||
cJSON_AddItemToObject(resultCJSON, CJSON_INFO_STRING, info);
|
||||
}
|
||||
AddTimestamp(resultCJSON);
|
||||
return MakePacket(resultCJSON);
|
||||
}
|
||||
std::shared_ptr<ProtocolPacket> SixFrameHandle::SetBatteryStatus(const BatteryStatus &status,
|
||||
const int &batteryCapacity)
|
||||
{
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
cJSON *resultCJSON = nullptr;
|
||||
CjsonAutoFree autoJson(resultCJSON = cJSON_CreateObject());
|
||||
if (nullptr == resultCJSON) {
|
||||
LogError("cJSON_CreateObject failed.\n");
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
}
|
||||
cJSON_AddStringToObject(resultCJSON, TCP_RESULT_MSGID, "battery");
|
||||
cJSON *info = cJSON_CreateObject();
|
||||
if (nullptr != info) {
|
||||
cJSON_AddNumberToObject(info, "charge", static_cast<int>(status));
|
||||
cJSON_AddNumberToObject(info, "capacity", batteryCapacity);
|
||||
cJSON_AddItemToObject(resultCJSON, CJSON_INFO_STRING, info);
|
||||
}
|
||||
AddTimestamp(resultCJSON);
|
||||
return MakePacket(resultCJSON);
|
||||
}
|
||||
std::shared_ptr<ProtocolPacket> SixFrameHandle::SetSdCardStatus(const SdCardStatus &status)
|
||||
{
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
cJSON *resultCJSON = nullptr;
|
||||
CjsonAutoFree autoJson(resultCJSON = cJSON_CreateObject());
|
||||
if (nullptr == resultCJSON) {
|
||||
LogError("cJSON_CreateObject failed.\n");
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
}
|
||||
cJSON_AddStringToObject(resultCJSON, TCP_RESULT_MSGID, "sd");
|
||||
cJSON *info = cJSON_CreateObject();
|
||||
if (nullptr != info) {
|
||||
cJSON_AddNumberToObject(info, "status", static_cast<int>(status));
|
||||
cJSON_AddItemToObject(resultCJSON, CJSON_INFO_STRING, info);
|
||||
}
|
||||
AddTimestamp(resultCJSON);
|
||||
return MakePacket(resultCJSON);
|
||||
}
|
||||
std::shared_ptr<ProtocolPacket> SixFrameHandle::DeletedFileMessage(const std::string &file, const StorageFileType &type)
|
||||
{
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
cJSON *resultCJSON = nullptr;
|
||||
CjsonAutoFree autoJson(resultCJSON = cJSON_CreateObject());
|
||||
if (nullptr == resultCJSON) {
|
||||
LogError("cJSON_CreateObject failed.\n");
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
}
|
||||
cJSON_AddStringToObject(resultCJSON, TCP_RESULT_MSGID, "file_del");
|
||||
cJSON *info = cJSON_CreateObject();
|
||||
if (nullptr != info) {
|
||||
cJSON_AddStringToObject(info, "name", file.c_str());
|
||||
cJSON_AddNumberToObject(info, "type", static_cast<int>(type));
|
||||
cJSON_AddItemToObject(resultCJSON, CJSON_INFO_STRING, info);
|
||||
}
|
||||
AddTimestamp(resultCJSON);
|
||||
return MakePacket(resultCJSON);
|
||||
}
|
||||
std::shared_ptr<ProtocolPacket> SixFrameHandle::CreatedFileMessage(const std::string &file, const StorageFileType &type)
|
||||
{
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
cJSON *resultCJSON = nullptr;
|
||||
CjsonAutoFree autoJson(resultCJSON = cJSON_CreateObject());
|
||||
if (nullptr == resultCJSON) {
|
||||
LogError("cJSON_CreateObject failed.\n");
|
||||
return std::make_shared<ProtocolPacket>();
|
||||
}
|
||||
cJSON_AddStringToObject(resultCJSON, TCP_RESULT_MSGID, "file_add");
|
||||
cJSON *info = cJSON_CreateObject();
|
||||
if (nullptr != info) {
|
||||
cJSON_AddStringToObject(info, "name", file.c_str());
|
||||
cJSON_AddNumberToObject(info, "type", static_cast<int>(type));
|
||||
cJSON_AddItemToObject(resultCJSON, CJSON_INFO_STRING, info);
|
||||
}
|
||||
AddTimestamp(resultCJSON);
|
||||
return MakePacket(resultCJSON);
|
||||
}
|
||||
cJSON *SixFrameHandle::MakeResponseResult(const ResposeResult result, const bool requestSet)
|
||||
{
|
||||
|
|
|
@ -65,6 +65,8 @@ TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_Demo0)
|
|||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockSetRecordingStatus(RecordingStatus::RECORDING_START);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
|
@ -256,4 +258,88 @@ TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_AppPlayback)
|
|||
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
// ../output_files/test/bin/AppManagerTest
|
||||
// --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_SetRecordingStatus
|
||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_SetRecordingStatus)
|
||||
{
|
||||
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||
IAppManager::GetInstance()->Init(mAppParam);
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockSetRecordingStatus(RecordingStatus::RECORDING_START);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
// ../output_files/test/bin/AppManagerTest
|
||||
// --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_SetMicrophoneStatus
|
||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_SetMicrophoneStatus)
|
||||
{
|
||||
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||
IAppManager::GetInstance()->Init(mAppParam);
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockSetMicrophoneStatus(MicrophoneStatus::ON);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
// ../output_files/test/bin/AppManagerTest
|
||||
// --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_SetBatteryStatus
|
||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_SetBatteryStatus)
|
||||
{
|
||||
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||
IAppManager::GetInstance()->Init(mAppParam);
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockSetBatteryStatus(BatteryStatus::CHARGING, 20);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
// ../output_files/test/bin/AppManagerTest
|
||||
// --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_SetSdCardStatus
|
||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_SetSdCardStatus)
|
||||
{
|
||||
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||
IAppManager::GetInstance()->Init(mAppParam);
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockSetSdCardStatus(SdCardStatus::NOT_INSERTED);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
// ../output_files/test/bin/AppManagerTest
|
||||
// --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_DeletedFileMessage
|
||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_DeletedFileMessage)
|
||||
{
|
||||
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||
IAppManager::GetInstance()->Init(mAppParam);
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockDeletedFileMessage("file_name", StorageFileType::VIDEO);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
// ../output_files/test/bin/AppManagerTest
|
||||
// --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_CreatedFileMessage
|
||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_CreatedFileMessage)
|
||||
{
|
||||
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||
IAppManager::GetInstance()->Init(mAppParam);
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockAppClientConnect();
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
MockCreatedFileMessage("file_name", StorageFileType::VIDEO);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||
IAppManager::GetInstance()->UnInit();
|
||||
}
|
||||
} // namespace AppManagerTest
|
|
@ -46,6 +46,12 @@ protected:
|
|||
|
||||
protected:
|
||||
void MockAppClientConnect(void);
|
||||
void MockSetRecordingStatus(const RecordingStatus &status);
|
||||
void MockSetMicrophoneStatus(const MicrophoneStatus &status);
|
||||
void MockSetBatteryStatus(const BatteryStatus &status, const int &batteryCapacity);
|
||||
void MockSetSdCardStatus(const SdCardStatus &status);
|
||||
void MockDeletedFileMessage(const std::string &file, const StorageFileType &type);
|
||||
void MockCreatedFileMessage(const std::string &file, const StorageFileType &type);
|
||||
|
||||
private:
|
||||
void AppManagerMockInit(std::shared_ptr<IAppManager> &vMock);
|
||||
|
|
|
@ -239,6 +239,54 @@ void AppManagerTestTool::MockAppClientConnect(void)
|
|||
LogError("CreateTcpClient failed.\n");
|
||||
}
|
||||
}
|
||||
void AppManagerTestTool::MockSetRecordingStatus(const RecordingStatus &status)
|
||||
{
|
||||
if (mAppClient) {
|
||||
mAppClient->SetRecordingStatus(status);
|
||||
return;
|
||||
}
|
||||
LogWarning("mAppClient is nullptr.\n");
|
||||
}
|
||||
void AppManagerTestTool::MockSetMicrophoneStatus(const MicrophoneStatus &status)
|
||||
{
|
||||
if (mAppClient) {
|
||||
mAppClient->SetMicrophoneStatus(status);
|
||||
return;
|
||||
}
|
||||
LogWarning("mAppClient is nullptr.\n");
|
||||
}
|
||||
void AppManagerTestTool::MockSetBatteryStatus(const BatteryStatus &status, const int &batteryCapacity)
|
||||
{
|
||||
if (mAppClient) {
|
||||
mAppClient->SetBatteryStatus(status, batteryCapacity);
|
||||
return;
|
||||
}
|
||||
LogWarning("mAppClient is nullptr.\n");
|
||||
}
|
||||
void AppManagerTestTool::MockSetSdCardStatus(const SdCardStatus &status)
|
||||
{
|
||||
if (mAppClient) {
|
||||
mAppClient->SetSdCardStatus(status);
|
||||
return;
|
||||
}
|
||||
LogWarning("mAppClient is nullptr.\n");
|
||||
}
|
||||
void AppManagerTestTool::MockDeletedFileMessage(const std::string &file, const StorageFileType &type)
|
||||
{
|
||||
if (mAppClient) {
|
||||
mAppClient->DeletedFileMessage(file, type);
|
||||
return;
|
||||
}
|
||||
LogWarning("mAppClient is nullptr.\n");
|
||||
}
|
||||
void AppManagerTestTool::MockCreatedFileMessage(const std::string &file, const StorageFileType &type)
|
||||
{
|
||||
if (mAppClient) {
|
||||
mAppClient->CreatedFileMessage(file, type);
|
||||
return;
|
||||
}
|
||||
LogWarning("mAppClient is nullptr.\n");
|
||||
}
|
||||
void AppManagerTestTool::AppManagerMockInit(std::shared_ptr<IAppManager> &vMock)
|
||||
{
|
||||
std::shared_ptr<AppManagerMock> mock = std::dynamic_pointer_cast<AppManagerMock>(vMock);
|
||||
|
|
Loading…
Reference in New Issue
Block a user