hunting/application/MissionManager/src/StorageHandleState.cpp
2024-06-15 08:35:07 +08:00

59 lines
2.2 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 "StorageHandleState.h"
#include "ILog.h"
#include "IMediaManager.h"
#include "MissionStateMachine.h"
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<VStorageMoniter> 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<VMissionData> message = std::make_shared<VMissionDataV2<StorageEvent>>(
static_cast<MissionEvent>(InternalStateEvent::SD_CARD_HANDLE_STATE_SD_STATUS_REPORTED), event);
MissionStateMachine::GetInstance()->SendStateMessage(message);
std::shared_ptr<VMissionData> message2 = std::make_shared<VMissionDataV2<StorageEvent>>(
static_cast<MissionEvent>(InternalStateEvent::ANY_STATE_SD_STATUS_PERORIED), event);
MissionStateMachine::GetInstance()->SendStateMessage(message2);
}
bool StorageHandleState::StorageStartInitHandle(VStateMachineData *msg)
{
Init();
return EXECUTED;
}