/* * 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. */ #ifndef I_MISSION_MANAGER #define I_MISSION_MANAGER #include "StatusCode.h" #include #include bool CreateMissionManagerModule(void); bool DestroyMissionManagerModule(void); enum class MissionEvent { TEST = 0, END }; class VMissionData { public: VMissionData(const MissionEvent &event) : mEvent(event) { mRetryTimes = 0; mDelayTimeMs = 0; } virtual ~VMissionData() = default; const MissionEvent mEvent; int mRetryTimes; unsigned int mDelayTimeMs; std::function)> mMissionFinshed; }; template class VMissionDataV2 : public VMissionData { public: VMissionDataV2(const MissionEvent &event, T value) : VMissionData(event), mData(value) { } virtual ~VMissionDataV2() = default; public: T mData; }; class IMissionManager { public: IMissionManager() = default; virtual ~IMissionManager() = default; static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); virtual const StatusCode Init(void); virtual const StatusCode UnInit(void); }; #endif