Backup:MissionManager module.

This commit is contained in:
Fancy code 2024-03-05 06:02:19 -08:00
parent 1b22cd3f63
commit d42b38c5dc
22 changed files with 178 additions and 52 deletions

View File

@ -9,7 +9,7 @@ include_directories(
link_directories(
${LIBS_OUTPUT_PATH}
${HAL_SOURCE_PATH}/include
${EXTERNAL_LIBS_OUTPUT_PATH}
)
aux_source_directory(. SRC_FILES)

View File

@ -3,8 +3,9 @@ set(HUNTTING_MAIN_INCLUDE_PATH "${APPLICATION_SOURCE_PATH}/HunttingCamera/sr
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${APPLICATION_SOURCE_PATH}/MissionManager/include")
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${MIDDLEWARE_SOURCE_PATH}/StateMachine/include")
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${MIDDLEWARE_SOURCE_PATH}/McuManager/include")
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${MIDDLEWARE_SOURCE_PATH}/AppManager/include")
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${UTILS_SOURCE_PATH}/StatusCode/include")
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${UTILS_SOURCE_PATH}/Log/include")
set(HUNTTING_MAIN_INCLUDE_PATH "${HUNTTING_MAIN_INCLUDE_PATH};${HAL_SOURCE_PATH}/include")
set(HUNTTING_LINK_LIB McuManager MissionManager StateMachine StatusCode Log Hal pthread dl)
set(HUNTTING_LINK_LIB McuManager MissionManager StateMachine AppManager StatusCode Log Hal pthread dl)

View File

@ -13,6 +13,7 @@
* limitations under the License.
*/
#include "MainThread.h"
#include "IAppManager.h"
#include "IHalCpp.h"
#include "ILog.h"
#include "IMcuManager.h"
@ -61,10 +62,12 @@ StatusCode MainThread::CreateAllModules(void)
CreateMcuManager();
CreateMissionManagerModule();
CreateStateMachine();
CreateAppManagerModule();
return CreateStatusCode(STATUS_CODE_OK);
}
void MainThread::DestoryAllModules(void)
{
DestroyAppManagerModule();
DestroyStateMachine();
DestroyMissionManagerModule();
DestroyMcuManager();

View File

@ -1,5 +1,6 @@
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
# include(${UTILS_SOURCE_PATH}/WebServer/build/webserver.cmake)
include(${MIDDLEWARE_SOURCE_PATH}/AppManager/build/app_manager.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
@ -9,6 +10,7 @@ include_directories(
${UTILS_SOURCE_PATH}/StatusCode/include
${UTILS_SOURCE_PATH}/Log/include
${MIDDLEWARE_SOURCE_PATH}/StateMachine/include
${MIDDLEWARE_SOURCE_PATH}/AppManager/include
# ${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include
${MIDDLEWARE_SOURCE_PATH}/McuManager/include
${MIDDLEWARE_SOURCE_PATH}/McuAskBase/include

View File

@ -0,0 +1,57 @@
#include "AppMonitor.h"
StatusCode AppMonitor::GetProductInfo(AppGetProductInfo &param)
{
param.mModel = "test";
param.mCompany = "test";
param.mSoc = "test";
param.mSp = "test";
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::GetDeviceAttr(AppGetDeviceAttr &param)
{
param.mUUID = "test";
param.mSoftVersion = "test";
param.mOtaVersion = "test";
param.mHardwareVersion = "test";
param.mSSID = "test";
param.mBSSID = "test";
param.mCameraNumber = "test";
param.mCurrentCameraID = "test";
param.mWifiReboot = "test";
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::GetMediaInfo(AppGetMeidaInfo &param)
{
param.mRtspUrl = "test";
param.mTransport = "test";
param.mPort = 123;
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::GetSdCardInfo(AppGetSdCardInfo &param)
{
param.mStatus = SdCardStatus::CARD_DAMAGED;
param.mFree = 0;
param.mTotal = 0;
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::GetBatteryInfo(AppGetBatteryInfo &param)
{
param.mCapacity = 0;
param.mChargeStatus = ChargeStatus::CHARGING;
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::SetDateTime(AppSetDateTime &param)
{
//
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::SetTimeZone(const unsigned int &zone)
{
//
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode AppMonitor::UploadFile(AppUploadFile &param)
{
//
return CreateStatusCode(STATUS_CODE_OK);
}

View File

@ -0,0 +1,32 @@
/*
* Copyright (c) 2023 Fancy Code.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef APP_MONITOR_H
#define APP_MONITOR_H
#include "IAppManager.h"
class AppMonitor : public VAppMonitor
{
public:
AppMonitor() = default;
virtual ~AppMonitor() = default;
StatusCode GetProductInfo(AppGetProductInfo &param) override;
StatusCode GetDeviceAttr(AppGetDeviceAttr &param) override;
StatusCode GetMediaInfo(AppGetMeidaInfo &param) override;
StatusCode GetSdCardInfo(AppGetSdCardInfo &param) override;
StatusCode GetBatteryInfo(AppGetBatteryInfo &param) override;
StatusCode SetDateTime(AppSetDateTime &param) override;
StatusCode SetTimeZone(const unsigned int &zone) override;
StatusCode UploadFile(AppUploadFile &param) override;
};
#endif

View File

@ -13,6 +13,7 @@
* limitations under the License.
*/
#include "MissionManager.h"
#include "IAppManager.h"
#include "MissionStateMachine.h"
const StatusCode MissionManager::Init(void)
{
@ -22,5 +23,6 @@ const StatusCode MissionManager::Init(void)
const StatusCode MissionManager::UnInit(void)
{
MissionStateMachine::GetInstance()->UnInit();
IAppManager::GetInstance()->UnInit();
return CreateStatusCode(STATUS_CODE_OK);
}

View File

@ -15,6 +15,7 @@
#include "MissionManagerMakePtr.h"
#include "ILog.h"
#include "MissionManager.h"
#include "TestMissionState.h"
#include "TopState.h"
bool CreateMissionManagerModule(void)
{
@ -56,4 +57,9 @@ std::shared_ptr<State> MissionManagerMakePtr::CreateTopState(void)
{
std::shared_ptr<State> state = std::make_shared<TopState>();
return state;
}
std::shared_ptr<State> MissionManagerMakePtr::CreateMissionState(const IpcMission &mission)
{
std::shared_ptr<State> state = std::make_shared<TestMissionState>();
return state;
}

View File

@ -14,6 +14,7 @@
*/
#ifndef MISSIONMANAGERMAKEIMPL_H
#define MISSIONMANAGERMAKEIMPL_H
#include "IMcuManager.h"
#include "IMissionManager.h"
#include "IStateMachine.h"
#include "StatusCode.h"
@ -26,5 +27,6 @@ public:
static std::shared_ptr<MissionManagerMakePtr> &GetInstance(std::shared_ptr<MissionManagerMakePtr> *impl = nullptr);
virtual const StatusCode CreateMissionManagerInstance(std::shared_ptr<IMissionManager> &instance);
virtual std::shared_ptr<State> CreateTopState(void);
virtual std::shared_ptr<State> CreateMissionState(const IpcMission &mission);
};
#endif

View File

@ -54,6 +54,10 @@ void MissionStateMachine::UnInit(void)
{
//
}
void MissionStateMachine::SwitchState(const MissionState &state)
{
mStateMachine->SwitchState(mStateTree[state].get());
}
IpcMission MissionStateMachine::GetStartMission(void)
{
class McuAskIpcMission : public McuAsk<IpcMission>, public McuAskBase
@ -70,7 +74,9 @@ void MissionStateMachine::RunStateMachine(const IpcMission &mission)
{
LogInfo("Make all states and start the state machine.\n");
mStateTree[MissionState::TOP_STATE] = MissionManagerMakePtr::GetInstance()->CreateTopState();
mStateTree[MissionState::MISSION_STATE] = MissionManagerMakePtr::GetInstance()->CreateMissionState(mission);
mStateMachine->StatePlus(mStateTree[MissionState::TOP_STATE].get(), nullptr);
mStateMachine->StatePlus(mStateTree[MissionState::MISSION_STATE].get(), mStateTree[MissionState::TOP_STATE].get());
mStateMachine->SetCurrentState(mStateTree[MissionState::TOP_STATE].get());
mStateMachine->StartStateMachine();
}

View File

@ -22,6 +22,7 @@
enum class MissionState
{
TOP_STATE = 0,
MISSION_STATE,
END
};
class MissionStateMachine
@ -32,6 +33,7 @@ public:
static std::shared_ptr<MissionStateMachine> &GetInstance(std::shared_ptr<MissionStateMachine> *impl = nullptr);
void Init(void);
void UnInit(void);
void SwitchState(const MissionState &state);
private:
IpcMission GetStartMission(void);

View File

@ -13,12 +13,15 @@
* limitations under the License.
*/
#include "TestMissionState.h"
#include "IAppManager.h"
#include "ILog.h"
TestMissionState::TestMissionState() : State("TestMissionState") {}
void TestMissionState::GoInState()
{
//
LogInfo(" ========== TestMissionState::GoInState.\n");
AppParam mAppParam("192.168.1.29", APP_MANAGER_HTTP_SERVER_PORT); // TODO:
IAppManager::GetInstance()->Init(mAppParam);
}
void TestMissionState::GoOutState()
{

View File

@ -14,9 +14,10 @@
*/
#ifndef TEST_MISSION_STATE_H
#define TEST_MISSION_STATE_H
#include "AppMonitor.h"
#include "DataProcessing.h"
#include "IStateMachine.h"
class TestMissionState : public State, public DataProcessing
class TestMissionState : public State, public DataProcessing, public AppMonitor
{
public:
TestMissionState();

View File

@ -14,11 +14,13 @@
*/
#include "TopState.h"
#include "ILog.h"
#include "MissionStateMachine.h"
TopState::TopState() : State("TopState") {}
void TopState::GoInState()
{
//
LogInfo(" ========== opState::GoInState.\n");
MissionStateMachine::GetInstance()->SwitchState(MissionState::MISSION_STATE);
}
void TopState::GoOutState()
{

View File

@ -1,5 +1,6 @@
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${MIDDLEWARE_SOURCE_PATH}/AppManager/build/app_manager.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
@ -17,18 +18,6 @@ include_directories(
#link_directories(
#)
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_IP)
set(APP_MANAGER_HTTP_SERVER_IP "localhost")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_IP=\"${APP_MANAGER_HTTP_SERVER_IP}\")
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_PORT)
message(FATAL_ERROR "You should set http listen port.
Example: set(APP_MANAGER_HTTP_SERVER_PORT \"8888\")
Refer to:${CMAKE_SOURCE_DIR_IPCSDK}/builde/cmake/toolchain/linux.toolchain.cmake")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_PORT=${APP_MANAGER_HTTP_SERVER_PORT})
aux_source_directory(./src SRC_FILES)
aux_source_directory(./src/Protocol/SixFrame SRC_FILES)

View File

@ -0,0 +1,12 @@
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_IP)
set(APP_MANAGER_HTTP_SERVER_IP "localhost")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_IP=\"${APP_MANAGER_HTTP_SERVER_IP}\")
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_PORT)
message(FATAL_ERROR "You should set http listen port.
Example: set(APP_MANAGER_HTTP_SERVER_PORT \"8888\")
Refer to:${CMAKE_SOURCE_DIR_IPCSDK}/builde/cmake/toolchain/linux.toolchain.cmake")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_PORT=${APP_MANAGER_HTTP_SERVER_PORT})

View File

@ -47,7 +47,7 @@ void AppManager::AppRequestHandle(const char *url, const unsigned int urlLength,
}
void AppManager::HttpServerStart(const AppParam &param)
{
auto httpServerThread = [&param](std::shared_ptr<AppManager> app) {
auto httpServerThread = [=](std::shared_ptr<AppManager> app) {
LogInfo("AppManager httpServer started.\n");
app->HttpServerThread(param);
};

View File

@ -1,5 +1,6 @@
# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${MIDDLEWARE_SOURCE_PATH}/AppManager/build/app_manager.cmake)
set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin)
include_directories(
@ -25,18 +26,6 @@ link_directories(
${EXTERNAL_LIBS_OUTPUT_PATH}
)
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_IP)
set(APP_MANAGER_HTTP_SERVER_IP "localhost")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_IP=\"${APP_MANAGER_HTTP_SERVER_IP}\")
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_PORT)
message(FATAL_ERROR "You should set http listen port.
Example: set(APP_MANAGER_HTTP_SERVER_PORT \"8888\")
Refer to:${CMAKE_SOURCE_DIR_IPCSDK}/builde/cmake/toolchain/linux.toolchain.cmake")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_PORT=${APP_MANAGER_HTTP_SERVER_PORT})
aux_source_directory(. SRC_FILES_MAIN)
aux_source_directory(./src SRC_FILES)
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})

View File

@ -1,4 +1,5 @@
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${MIDDLEWARE_SOURCE_PATH}/AppManager/build/app_manager.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
@ -18,18 +19,6 @@ include_directories(
# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs
# )
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_IP)
set(APP_MANAGER_HTTP_SERVER_IP "localhost")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_IP=\"${APP_MANAGER_HTTP_SERVER_IP}\")
if (NOT DEFINED APP_MANAGER_HTTP_SERVER_PORT)
message(FATAL_ERROR "You should set http listen port.
Example: set(APP_MANAGER_HTTP_SERVER_PORT \"8888\")
Refer to:${CMAKE_SOURCE_DIR_IPCSDK}/builde/cmake/toolchain/linux.toolchain.cmake")
endif()
add_definitions(-DAPP_MANAGER_HTTP_SERVER_PORT=${APP_MANAGER_HTTP_SERVER_PORT})
aux_source_directory(./src TEST_TOOL_SRC_FILES)
set(TEST_TOOL_TARGET AppManagerTestTool)
add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})

View File

@ -1,5 +1,6 @@
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/goahead.cmake)
include(${UTILS_SOURCE_PATH}/WebServer/build/webserver.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
@ -15,17 +16,6 @@ include_directories(
# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs
# )
if (NOT DEFINED GOAHEAD_DOCUMENTS_PATH)
set(GOAHEAD_DOCUMENTS_PATH "web")
endif()
if (NOT DEFINED GOAHEAD_CONFIG_FILE_PATH)
set(GOAHEAD_CONFIG_FILE_PATH "${PLATFORM_PATH}/cmake-shell/")
add_definitions(-DGOAHEAD_CONFIG_FILE_PATH=\"./\")
else()
add_definitions(-DGOAHEAD_CONFIG_FILE_PATH=\"${GOAHEAD_CONFIG_FILE_PATH}\")
endif()
add_definitions(-DGOAHEAD_DOCUMENTS_PATH=\"${GOAHEAD_DOCUMENTS_PATH}\")
if (NOT DEFINED GOAHEAD_UPLOAD_TMP_PATH)
message(FATAL_ERROR "YYou should set the GOAHEAD_UPLOAD_TMP_PATH variable so that the GOAHEAD module can temporarily save uploaded files.
For example: set(GOAHEAD_UPLOAD_TMP_PATH \"./goahead\")

View File

@ -79,4 +79,31 @@ PUBLIC void websServiceEvents(int *finished)
&emsp;&emsp; 源码限制POST文件大小太小这里修改为32M。
```
```
## 1.5. goahead的bug
&emsp;&emsp; 当goahead使用无效的ip进行listen时asan工具会报内存泄漏问题目前暂时忽略该bug
```
=================================================================
==1420508==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 17 byte(s) in 1 object(s) allocated from:
#0 0x7f3f4325d808 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:144
#1 0x55bc16b87490 in walloc src/alloc.c:280
#2 0x55bc16b991ae in sclone src/runtime.c:2430
#3 0x55bc16b9be26 in socketParseAddress src/socket.c:1334
#4 0x55bc16b891bf in websListen src/http.c:646
#5 0x55bc16b86f59 in WebServerInit /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/WebServer/src/WebServer.cpp:152
#6 0x55bc16b81f4a in AppManager::HttpServerThread(app_param const&) /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/middleware/AppManager/src/AppManager.cpp:79
#7 0x55bc16b829f0 in operator() /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/middleware/AppManager/src/AppManager.cpp:52
#8 0x55bc16b829f0 in __invoke_impl<void, AppManager::HttpServerStart(const AppParam&)::<lambda(std::shared_ptr<AppManager>)>, std::shared_ptr<AppManager> > /usr/include/c++/9/bits/invoke.h:60
#9 0x55bc16b829f0 in __invoke<AppManager::HttpServerStart(const AppParam&)::<lambda(std::shared_ptr<AppManager>)>, std::shared_ptr<AppManager> > /usr/include/c++/9/bits/invoke.h:95
#10 0x55bc16b829f0 in _M_invoke<0, 1> /usr/include/c++/9/thread:244
#11 0x55bc16b829f0 in operator() /usr/include/c++/9/thread:251
#12 0x55bc16b829f0 in _M_run /usr/include/c++/9/thread:195
#13 0x7f3f4301bdf3 (/lib/x86_64-linux-gnu/libstdc++.so.6+0xd6df3)
SUMMARY: AddressSanitizer: 17 byte(s) leaked in 1 allocation(s).
```

View File

@ -0,0 +1,11 @@
if (NOT DEFINED GOAHEAD_DOCUMENTS_PATH)
set(GOAHEAD_DOCUMENTS_PATH "web")
endif()
if (NOT DEFINED GOAHEAD_CONFIG_FILE_PATH)
set(GOAHEAD_CONFIG_FILE_PATH "${PLATFORM_PATH}/cmake-shell/")
add_definitions(-DGOAHEAD_CONFIG_FILE_PATH=\"./\")
else()
add_definitions(-DGOAHEAD_CONFIG_FILE_PATH=\"${GOAHEAD_CONFIG_FILE_PATH}\")
endif()
add_definitions(-DGOAHEAD_DOCUMENTS_PATH=\"${GOAHEAD_DOCUMENTS_PATH}\")