/* * 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 "StorageHandleState.h" #include "DataProcessing.h" #include "ILog.h" #include "IMissionManager.h" #include "IStateMachine.h" #include "IStorageManager.h" #include "MissionStateMachine.h" #include #include StorageHandleState::StorageHandleState() : State("StorageHandleState") { mEventHandle[InternalStateEvent::STORAGE_HANDLE_STATE_INIT] = std::bind(&StorageHandleState::StorageStartInitHandle, this, _1); } void StorageHandleState::GoInState() { LogInfo(" ========== StorageHandleState::GoInState.\n"); MissionStateMachine::GetInstance()->SwitchState(SystemState::SD_CARD_HANDLE_STATE); } void StorageHandleState::GoOutState() { LogInfo(" ========== StorageHandleState::GoOutState.\n"); } bool StorageHandleState::ExecuteStateMsg(VStateMachineData *msg) { return DataProcessing::EventHandle(msg); } void StorageHandleState::Init(void) { std::shared_ptr monitor = shared_from_this(); IStorageManager::GetInstance()->SetMonitor(monitor); } void StorageHandleState::UnInit(void) { } void StorageHandleState::ReportEvent(const StorageEvent &event) { LogInfo("StorageHandleState::ReportEvent.\n"); std::shared_ptr message = std::make_shared>( static_cast(InternalStateEvent::SD_CARD_HANDLE_STATE_SD_STATUS_REPORTED), event); MissionStateMachine::GetInstance()->SendStateMessage(message); std::shared_ptr message2 = std::make_shared>( static_cast(InternalStateEvent::ANY_STATE_SD_STATUS_PERORIED), event); MissionStateMachine::GetInstance()->SendStateMessage(message2); } bool StorageHandleState::StorageStartInitHandle(VStateMachineData *msg) { Init(); return EXECUTED; }