mirror of
https://gitee.com/jiuyilian/embedded-framework.git
synced 2025-01-06 10:16:51 -05:00
91 lines
3.8 KiB
C++
91 lines
3.8 KiB
C++
/*
|
|
* 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.
|
|
*/
|
|
#include "TestMissionState.h"
|
|
#include "DataProcessing.h"
|
|
#include "IAppManager.h"
|
|
#include "ILog.h"
|
|
#include "IMissionManager.h"
|
|
#include "IStateMachine.h"
|
|
#include "IStorageManager.h"
|
|
#include "LedsHandle.h"
|
|
#include "MissionState.h"
|
|
#include "MissionStateMachine.h"
|
|
#include <functional>
|
|
#include <memory>
|
|
TestMissionState::TestMissionState() : MissionState("TestMissionState")
|
|
{
|
|
mEventHandle[InternalStateEvent::ANY_STATE_SD_STATUS_PERORIED] =
|
|
std::bind(&TestMissionState::SdCardEventReportSendToApp, this, _1);
|
|
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] =
|
|
std::bind(&TestMissionState::ResetKeyMediaTaskHandle, this, _1);
|
|
mKeyClickHandle["reset"] = std::bind(&TestMissionState::ClickResetKey, this, _1);
|
|
}
|
|
void TestMissionState::GoInState()
|
|
{
|
|
MissionState::GoInState();
|
|
LogInfo(" ========== TestMissionState::GoInState.\n");
|
|
AppParam mAppParam(APP_MANAGER_DEVICE_IP, APP_MANAGER_HTTP_SERVER_PORT, APP_MANAGER_TCP_SERVER_PORT); // TODO:
|
|
IAppManager::GetInstance()->Init(mAppParam);
|
|
std::shared_ptr<VAppMonitor> monitor =
|
|
std::dynamic_pointer_cast<TestMissionState>(MissionState::shared_from_this());
|
|
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
|
ControlDeviceStatusLed(DeviceStatus::NORMAL);
|
|
}
|
|
void TestMissionState::GoOutState()
|
|
{
|
|
MissionState::GoOutState();
|
|
LogInfo(" ========== TestMissionState::GoOutState.\n");
|
|
}
|
|
bool TestMissionState::SdCardEventReportSendToApp(VStateMachineData *msg)
|
|
{
|
|
std::shared_ptr<MissionMessage> message = std::dynamic_pointer_cast<MissionMessage>(msg->GetMessageObj());
|
|
std::shared_ptr<VMissionDataV2<StorageEvent>> data =
|
|
std::dynamic_pointer_cast<VMissionDataV2<StorageEvent>>(message->mMissionData);
|
|
LogInfo(" SdCardEventHandle event:%s.\n", IStorageManager::GetInstance()->PrintStringStorageEvent(data->mData));
|
|
SdCardStatus status = SdCardStatusConvert(data->mData);
|
|
IAppManager::GetInstance()->SetSdCardStatus(status);
|
|
return EXECUTED;
|
|
}
|
|
bool TestMissionState::ResetKeyMediaTaskHandle(VStateMachineData *msg)
|
|
{
|
|
MissionStateMachine::GetInstance()->DelayMessage(msg);
|
|
MissionStateMachine::GetInstance()->SwitchState(SystemState::MEDIA_HANDLE_STATE);
|
|
return EXECUTED;
|
|
}
|
|
bool TestMissionState::ClickResetKey(const KeyEventData &data)
|
|
{
|
|
LogInfo("reset key click:make a media task.\n");
|
|
// std::shared_ptr<VMissionData> message = std::make_shared<VMissionDataV2<MediaReportEvent>>(
|
|
// static_cast<MissionEvent>(InternalStateEvent::MEDIA_REPORT_EVENT), event);
|
|
// MissionStateMachine::GetInstance()->SendStateMessage(message);
|
|
std::shared_ptr<VMissionData> message =
|
|
std::make_shared<VMissionData>(static_cast<MissionEvent>(InternalStateEvent::RESET_KEY_MEDIA_TASK));
|
|
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
|
return EXECUTED;
|
|
}
|
|
SdCardStatus TestMissionState::SdCardStatusConvert(const StorageEvent &event)
|
|
{
|
|
switch (event) {
|
|
case StorageEvent::SD_CARD_INSERT:
|
|
return SdCardStatus::NORMAL;
|
|
case StorageEvent::SD_CARD_REMOVE:
|
|
return SdCardStatus::NOT_INSERTED;
|
|
case StorageEvent::SD_ABNORMAL:
|
|
return SdCardStatus::NOT_INSERTED;
|
|
default:
|
|
LogError("SdCardStatusConvert failed.\n");
|
|
return SdCardStatus::END;
|
|
}
|
|
} |