#ifndef I_PERIPHERAL_MANAGER_H #define I_PERIPHERAL_MANAGER_H #include "VReturnCode.h" #include "IHalCommon.h" #include #include #include enum class NetGeneration { NET_2G = 0, NET_3G, NET_4G, END }; enum class SimInitResult { SIM_INIT_OK = 0, SIM_INIT_INSERTED, SIM_INIT_NOT_INSERTED, SIM_INIT_NOT_SUPPORT_MOBILE_NETWORK, SIM_INIT_END }; enum class RegisterNetworkResult { SUCCEED = 0, FAILED, ERROR_REG_NET, FAILED_NOT_SUPPORT, FAILED_NO_SIGNAL, END }; enum class NetApnConfigResult { SUCCEED = 0, FAILED, END }; typedef enum sf_SIM_TYPE_E { SF_SIM_MEGA = 0, // normal mega sim, use in abroad SF_SIM_MEGA_IOT, // special mega sim, only use in T110 SF_SIM_OTHER, // other sim SF_SIM_BUTT } SF_SIM_TYPE_E; class SimInitDataOut { public: SimInitDataOut() { mResult = SimInitResult::SIM_INIT_END; mType = SF_SIM_BUTT; } ~SimInitDataOut() { } SimInitResult mResult; std::string mIMEI; std::string mModuleSubVersion; std::string mIccid; SF_SIM_TYPE_E mType; }; enum class SignalLevel { LEVEL_0 = 0, LEVEL_1 = 2, LEVEL_2 = 3, LEVEL_3 = 4, END }; class RegisterNetworkDataOut { public: RegisterNetworkDataOut() { result = RegisterNetworkResult::END; mGeneration = NetGeneration::END; mSimSignal = 0; mSignalLevel = SignalLevel::END; } ~RegisterNetworkDataOut() { } RegisterNetworkResult result; NetGeneration mGeneration; std::string mServiceProvider; unsigned char mSimSignal; SignalLevel mSignalLevel; }; class NetApnConfigDataOut { public: NetApnConfigDataOut() { result = NetApnConfigResult::END; } ~NetApnConfigDataOut() { } NetApnConfigResult result; }; enum class SfKeyAction { SF_KEY_ACTION_SHORT_CLICK = 0, SF_KEY_ACTION_LONG_CLICK, SF_KEY_ACTION_HOLD_DOWN, SF_KEY_ACTION_HOLD_UP, SF_KEY_ACTION_GROUP, SF_KEY_ACTION_BUTT, SF_KEY_ACTION_END }; // class KeysState // { // public: // KeysState() // { // mAction = SfKeyAction::SF_KEY_ACTION_END; // mHoldTimeMs = 0; // } // ~KeysState() // { // } // SfKeyAction mAction; // long int mHoldTimeMs; // }; constexpr int TIME_MEANS_KEY_NOT_HOLD = 0; class KeysState { public: KeysState(const SfKeyAction &action, const long int &holdTimeMs) : mAction(action), mHoldTimeMs(holdTimeMs) { } ~KeysState() { } const SfKeyAction mAction; const long int mHoldTimeMs; }; class VKeyMonitor { public: VKeyMonitor() = default; virtual ~VKeyMonitor() = default; virtual RETURN_CODE KeyActionHappened(const SfKeyDefine &key, const SfKeyAction &event, const unsigned int holdTimeMs = 0) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } }; enum class GpioDevice { PIR = 0, USB, END }; enum class DeviceInput { VALID = 0, INVALID, END }; class VGpioMonitor { public: VGpioMonitor() = default; virtual ~VGpioMonitor() = default; virtual RETURN_CODE InputTransform(const GpioDevice &gpio, const DeviceInput &input) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } }; constexpr unsigned int LED_NOT_BLINK = 0; constexpr unsigned int BLINKING_FAST_MS = 500; constexpr unsigned int BLINKING_SLOW_MS = 1000; constexpr long int KEEP_ALIVE_FOREVER = 0; constexpr unsigned int DELETED_LED_STATE = -1; constexpr unsigned int DO_NOT_KEEP_ALIVE = -2; class VLedState { public: VLedState() = default; virtual ~VLedState() = default; virtual RETURN_CODE GetLedState(SfLedState &state) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual unsigned int GetKeepAliveTimeMs(void) { return KEEP_ALIVE_FOREVER; } virtual unsigned int GetBlinkTimeMs(void) { return LED_NOT_BLINK; } }; using SimInitCallback = void (*)(const SimInitDataOut &); using RegisterNetworkCallback = void (*)(const RegisterNetworkDataOut &); using NetApnConfigCallback = void (*)(const NetApnConfigDataOut &); class VNetworkHardwareHandle { public: VNetworkHardwareHandle() = default; virtual ~VNetworkHardwareHandle() = default; virtual RETURN_CODE Init(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE UnInit(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual bool IsModuleWorking(void) { return false; } virtual RETURN_CODE SimInit(SimInitCallback func) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE RegisterNetworkManual(RegisterNetworkCallback func) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE RegisterNetworkAuto(RegisterNetworkCallback func) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE NetApnConfig(NetApnConfigCallback func) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE KeepAliveForLive(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } }; class VRtcTime { public: VRtcTime() = default; virtual ~VRtcTime() = default; virtual int Set(const struct rtc_time &rtctm) { return -1; } virtual int Get(struct rtc_time &rtctm) { return -1; } virtual bool Check(const struct rtc_time &rtctm) { return false; } virtual int Reset(void) { return -1; } }; typedef enum { SF_SD_FORMAT_SUCUSS = 0, SF_SD_FORMAT_NO_CARD = 1, SF_SD_FORMAT_NOT_SUPPORT_FAT = 2, SF_SD_FORMAT_MAX = 3, } SF_SD_FORMAT_RESULT_e; typedef enum sfSD_STATUS_E { SF_SD_UNPLUGED = 0x00, SD_MOUNT_FAILURE, SD_MOUNT_SUCCESS, SF_SD_FULL, SF_SD_ERROR, SF_SD_PLUGED, SF_SD_BUTT, } SF_SD_STATUS_E; typedef struct sf_STORE_ATTR_S { unsigned int SDStatus; unsigned int SDFree; unsigned int SDTotalSize; } SF_STORE_ATTR_S; constexpr int SDLOOP_REMAIN_SPACE = 300; /*300MB*/ class VSDCardMonitor { public: VSDCardMonitor() = default; virtual ~VSDCardMonitor() = default; virtual void ReportSDCardStatus(const SF_SD_STATUS_E &status) {} }; class VSDCardHandle { public: VSDCardHandle() = default; virtual ~VSDCardHandle() = default; virtual void GetInfo(SF_STORE_ATTR_S &pstoreattrs) {} virtual void RemoveFile(const char *path, const signed int &threshold) {} virtual void LoopRemove(const char *path) {} virtual void IsFull(signed int &Isfull) {} virtual SF_SD_STATUS_E GetStatus(void) { return SF_SD_BUTT; } virtual void SetStatus(SF_SD_STATUS_E enStatus) {} virtual void SetMonitor(const std::shared_ptr &monitor) {} virtual RETURN_CODE Format(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE USBInsert(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } }; class IPeripheralManager { public: IPeripheralManager() = default; virtual ~IPeripheralManager() = default; static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); virtual RETURN_CODE Init(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE UnInit(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE SetKeyMonitor(std::shared_ptr monitor) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE GetAllKeysState(std::map &state) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE SetGpioMonitor(std::shared_ptr monitor) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE SetLedState(const SfLedIndex &led, std::shared_ptr &state) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } // virtual RETURN_CODE LuckLed(const SfLedIndex &led, std::shared_ptr monitor) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } // virtual RETURN_CODE UnLuckLed(const SfLedIndex &led, std::shared_ptr monitor) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE SetLongClickPeriod(unsigned int period) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE GetNetworkModuleHandle(std::shared_ptr &module) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE GetRtcTimeHandle(std::shared_ptr &rtc) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } virtual RETURN_CODE GetSDCardHandle(std::shared_ptr &sdCard) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); } }; bool CreatePeripheralManager(void); #endif // !I_PERIPHERAL_MANAGER_H