hunting/middleware/AppManager/include/IAppManager.h
2024-03-04 01:00:04 -08:00

155 lines
4.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.
*/
#ifndef I_APP_EMANAGER_H
#define I_APP_EMANAGER_H
#include "StatusCode.h"
#include <iostream>
#include <memory>
#include <vector>
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_get_device_attr
{
app_get_device_attr() {}
std::string mUUID;
std::string mSoftVersion;
std::string mOtaVersion;
std::string mHardwareVersion;
std::string mSSID;
std::string mBSSID;
std::string mCameraNumber;
std::string mCurrentCameraID;
std::string mWifiReboot;
} AppGetDeviceAttr;
typedef struct app_get_media_info
{
app_get_media_info() { mPort = -1; }
std::string mRtspUrl;
std::string mTransport;
int mPort;
} AppGetMeidaInfo;
enum class SdCardStatus
{
NORMAL = 0,
UNFORMATTED = 1,
NOT_INSERTED = 2,
CARD_DAMAGED = 3,
CARD_LOCKED = 10,
SLOW_CARD = 11,
FORMAT_REQUIRED = 12,
FORMATTING = 13,
END = 99
};
typedef struct app_get_sd_card_info
{
app_get_sd_card_info()
{
mStatus = SdCardStatus::END;
mFree = 0;
mTotal = 0;
}
SdCardStatus mStatus;
int mFree;
int mTotal;
} AppGetSdCardInfo;
enum class ChargeStatus
{
UNCHARGED = 0,
CHARGING,
END
};
typedef struct app_get_battery_info
{
app_get_battery_info()
{
mCapacity = 0;
mChargeStatus = ChargeStatus::END;
}
int mCapacity;
ChargeStatus mChargeStatus;
} AppGetBatteryInfo;
typedef struct app_set_date_time
{
app_set_date_time(const unsigned int year, const unsigned int month, const unsigned int day,
const unsigned int hour, const unsigned int minute, const unsigned int second)
: mYear(year), mMonth(month), mDay(day), mHour(hour), mMinute(minute), mSecond(second)
{
}
const unsigned int mYear;
const unsigned int mMonth;
const unsigned int mDay;
const unsigned int mHour;
const unsigned int mMinute;
const unsigned int mSecond;
} AppSetDateTime;
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 &param);
virtual StatusCode GetDeviceAttr(AppGetDeviceAttr &param);
virtual StatusCode GetMediaInfo(AppGetMeidaInfo &param);
virtual StatusCode GetSdCardInfo(AppGetSdCardInfo &param);
virtual StatusCode GetBatteryInfo(AppGetBatteryInfo &param);
virtual StatusCode SetDateTime(AppSetDateTime &param);
virtual StatusCode UploadFile(AppUploadFile &param);
};
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<IAppManager> &GetInstance(std::shared_ptr<IAppManager> *impl = nullptr);
virtual const StatusCode Init(const AppParam &param);
virtual const StatusCode UnInit(void);
virtual const StatusCode SetAppMonitor(std::shared_ptr<VAppMonitor> &monitor);
};
#endif