/* * 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 "MediaTaskHandle.h" #include "DataProcessing.h" #include "IFilesManager.h" #include "ILog.h" #include "IMediaManager.h" #include "IMissionManager.h" #include "MediaTask.h" #include "MissionStateMachine.h" #include "StatusCode.h" #include MediaTaskHandle::MediaTaskHandle() { mMediaHandle.reset(); // mMediaHandle = std::make_shared(); } void MediaTaskHandle::Init(void) { IMediaManager::GetInstance()->GetMediaChannel(MediaChannel::MEDIA_1, mMediaHandle); } void MediaTaskHandle::UnInit(void) { mMediaHandle->ClearTask(); mMediaHandle.reset(); } void MediaTaskHandle::MakeSingleTask(const InternalStateEvent &bindEvent, const std::shared_ptr &iniator) { InfoToBeSaved info = IFilesManager::GetInstance()->GetInfoForSavingFiles(1); std::shared_ptr task = std::make_shared(MediaTaskType::END, bindEvent, iniator, info.mSerialNumber, info.mSavingPath); if (!mMediaHandle) { LogError("MediaHandle is null"); return; } auto code = mMediaHandle->ExecuteTask(task); if (IsCodeOK(code)) { mRuningTask = task; // task should be saved here. long long timeOut = std::dynamic_pointer_cast(task)->GetTaskTimeOutMs(); std::shared_ptr message = std::make_shared( static_cast(InternalStateEvent::MEDIA_HANDLE_STATE_TASK_TIME_OUT)); MissionStateMachine::GetInstance()->MessageExecutedLater(message, timeOut); } // else if () { // mMediaHandle->StopTask(); // } }