hunting/middleware/AppManager/include/IAppManager.h
2024-03-26 11:22:28 +08:00

357 lines
8.3 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
};
enum class ChargeStatus
{
UNCHARGED = 0,
CHARGING,
END
};
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
};
enum class LockVideoStatus
{
UNLOCK = 0,
LOCK,
END
};
enum class StorageType
{
EMMC = 0,
SD_CARD_1,
SD_CARD_2,
END
};
enum class PlayBackEvent
{
START = 0,
STOP,
END
};
enum class StorageFileType
{
PICTURE = 1,
VIDEO,
END
};
enum class StorageFileEvent
{
LOOP = 0,
PIR,
CRASH,
EMR,
EVENT,
PARK,
END
};
enum class SwitchStatus
{
OFF = 0,
ON,
END
};
enum class GpsCapability
{
NOT_SUPPORT = 0,
END
};
enum class DeviceType
{
DASH_CAMERA = 0,
END
};
enum class DashAlbum
{
SUPPORT_PARKING_MONITOR_ALBUM = 0,
NOT_SUPPORT_PARKING_MONITOR_ALBUM,
END
};
enum class AppLock
{
NOT_SUPPORT_APP_LOCK = 0,
SUPPORT_APP_LOCK,
END
};
enum class DeleteLock
{
SUPPORT_DELETE_LOCK = 0,
NOT_SUPPORT_DELETE_LOCK,
END
};
enum class DeviceMode
{
NEED_TO_SWITCH = 0,
NOT_NEED_TO_SWITCH,
END
};
enum class PlaybackType
{
DOWNLOAD_PLAYBACK = 0,
RTSP_TCP,
RTSP_UDP,
END
};
enum class PhotographCapability
{
SUPPORT_TAKE_PICTURE = 0,
NOT_SUPPORT_TAKE_PICTURE,
END
};
enum class WifiCapability
{
SUPPORT_MODIFY_SSID_AND_PASSWORD = 0,
ONLY_SUPPORT_MODIFY_PASSWORD,
NOLY_SUPPORT_MODIFY_SSID,
NOT_SUPPORT_MODIFY_ANYTHING,
END
};
enum class FileCopy
{
NOT_SUPPORT_COPY = 0,
SUPPORT_COPY,
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;
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;
typedef struct app_get_battery_info
{
app_get_battery_info()
{
mCapacity = 0;
mChargeStatus = ChargeStatus::END;
}
int mCapacity;
ChargeStatus mChargeStatus;
} AppGetBatteryInfo;
typedef struct app_get_param_value
{
app_get_param_value()
{
mRec = SwitchStatus::END;
mMicStatus = SwitchStatus::END;
}
SwitchStatus mMicStatus;
SwitchStatus mRec;
} AppParamValue;
typedef struct app_get_capability
{
app_get_capability()
{
mGpsCapability = GpsCapability::END;
mDeviceType = DeviceType::END;
mAlbum = DashAlbum::END;
mAppLock = AppLock::END;
mDeleteLock = DeleteLock::END;
mDeviceMode = DeviceMode::END;
mPlaybackType = PlaybackType::END;
mPhotographCapability = PhotographCapability::END;
mWifiCapability = WifiCapability::END;
mFileCopy = FileCopy::END;
}
GpsCapability mGpsCapability;
DeviceType mDeviceType;
DashAlbum mAlbum;
AppLock mAppLock;
DeleteLock mDeleteLock;
DeviceMode mDeviceMode;
PlaybackType mPlaybackType;
PhotographCapability mPhotographCapability;
WifiCapability mWifiCapability;
FileCopy mFileCopy;
} AppGetCapability;
typedef struct app_get_storage_info
{
app_get_storage_info()
{
mIndex = -1;
mType = StorageType::END;
mFree = 0;
mTotal = 0;
}
int mIndex;
StorageType mType;
std::string mName;
int mFree;
int mTotal;
} AppGetStorageInfo;
typedef struct app_get_file_info
{
app_get_file_info()
{
mStartIndex = 0;
mStopIndex = 0;
mEvent = StorageFileEvent::END;
}
int mStartIndex;
int mStopIndex;
StorageFileEvent mEvent;
} AppGetFileInfo;
typedef struct app_get_file_list
{
app_get_file_list()
{
mDuration = 0;
mSize = 0;
mCreateTime_s = 0;
mType = StorageFileType::END;
}
std::string mName;
int mDuration;
int mSize;
time_t mCreateTime_s;
StorageFileType mType;
} AppGetFileList;
typedef struct app_set_param_value
{
app_set_param_value() { mValue = -1; }
std::string mName;
int mValue;
} AppSetParamValue;
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;
typedef struct app_get_thumbnail
{
app_get_thumbnail(const std::string file) : mFile(file) {}
const std::string mFile;
std::string mThumbnail;
} AppGetThumbnail;
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 GetParamValue(AppParamValue &param);
virtual StatusCode GetCapability(AppGetCapability &param);
virtual StatusCode GetLockVideoStatus(LockVideoStatus &param);
virtual StatusCode GetStorageInfo(std::vector<AppGetStorageInfo> &param);
virtual StatusCode GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector<AppGetFileList> &param);
virtual StatusCode SetDateTime(const AppSetDateTime &param);
virtual StatusCode SetTimeZone(const unsigned int &zone);
virtual StatusCode SetParamValue(const AppSetParamValue &param);
virtual StatusCode EnterRecorder(void);
virtual StatusCode AppPlayback(const PlayBackEvent &event);
virtual StatusCode UploadFile(AppUploadFile &param);
virtual StatusCode GetThumbnail(AppGetThumbnail &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