/* * 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 #include 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 monitor = std::dynamic_pointer_cast(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 message = std::dynamic_pointer_cast(msg->GetMessageObj()); std::shared_ptr> data = std::dynamic_pointer_cast>(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 message = std::make_shared>( // static_cast(InternalStateEvent::MEDIA_REPORT_EVENT), event); // MissionStateMachine::GetInstance()->SendStateMessage(message); std::shared_ptr message = std::make_shared(static_cast(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; } }