/* * 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_APP_EMANAGER_H #define I_APP_EMANAGER_H #include "StatusCode.h" #include #include #include bool CreateAppManagerModule(void); bool DestroyAppManagerModule(void); enum class ResposeResult { SUCCESSFUL = 0, FAILED, END }; enum class UploadCommand { UPGRADE_CPU = 0, END }; typedef struct app_get_product_info { app_get_product_info() {} std::string mModel; std::string mCompany; std::string mSoc; std::string mSp; } AppGetProductInfo; typedef struct app_upload_file { app_upload_file(const std::string filePath, const UploadCommand command) : mFilePath(filePath), mCommand(command) { mResult = ResposeResult::END; } const std::string mFilePath; const UploadCommand mCommand; ResposeResult mResult; } AppUploadFile; class VAppMonitor { public: VAppMonitor() = default; virtual ~VAppMonitor() = default; virtual StatusCode GetProductInfo(AppGetProductInfo ¶m); virtual StatusCode UploadFile(AppUploadFile ¶m); }; typedef struct app_param { app_param(const char *ip, const int port) : mIP(ip), mPort(port) {} const char *mIP; const int mPort; } AppParam; class IAppManager { public: IAppManager() = default; virtual ~IAppManager() = default; static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); virtual const StatusCode Init(const AppParam ¶m); virtual const StatusCode UnInit(void); virtual const StatusCode SetAppMonitor(std::shared_ptr &monitor); }; #endif