275 lines
11 KiB
C++
275 lines
11 KiB
C++
#ifndef IHAL_H
|
|
#define IHAL_H
|
|
#include "VReturnCode.h"
|
|
#include "IHalCommon.h"
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include <functional>
|
|
#include <vector>
|
|
constexpr int INVALID_PERIOD = -1;
|
|
constexpr int PERIPHERAL_CHECK_PERIOD_MS = 100;
|
|
constexpr int IMEI_LEN = 15;
|
|
constexpr long int KEY_DO_NOT_HOLD_PRESSING = -1;
|
|
class VKeyEventMonitor
|
|
{
|
|
public:
|
|
VKeyEventMonitor() = default;
|
|
virtual ~VKeyEventMonitor() = default;
|
|
virtual void HalKeyEventHappened(const SfKeyDefine &key, const SfKeyEvent &event, void *context) {}
|
|
virtual void TimerKeyEventHappened(const SfKeyDefine &key, const SfKeyEvent &event, void *context) {}
|
|
virtual long int GetHoldPressingTimeMs(void) { return KEY_DO_NOT_HOLD_PRESSING; }
|
|
// virtual bool IsKeyPressing(void) { return false; }
|
|
};
|
|
class VKeyContrl
|
|
{
|
|
public:
|
|
VKeyContrl() = default;
|
|
virtual ~VKeyContrl() = default;
|
|
virtual void Init(void) {}
|
|
virtual void UnInit(void) {}
|
|
virtual void SetKeyEventMonitor(std::shared_ptr<VKeyEventMonitor> monitor, void *context) {}
|
|
};
|
|
class VLedContrl
|
|
{
|
|
public:
|
|
VLedContrl() = default;
|
|
virtual ~VLedContrl() = default;
|
|
virtual void Init(void) {}
|
|
virtual void UnInit(void) {}
|
|
virtual bool SetLedState(const SfLedState &state) { return false; }
|
|
};
|
|
enum class GpioPin
|
|
{
|
|
PIR = 0,
|
|
USB,
|
|
END
|
|
};
|
|
enum class GpioInputValue
|
|
{
|
|
VALID = 0,
|
|
INVALID,
|
|
END
|
|
};
|
|
class VGpioInputMonitor
|
|
{
|
|
public:
|
|
VGpioInputMonitor() = default;
|
|
virtual ~VGpioInputMonitor() = default;
|
|
virtual void InputTransform(const GpioPin &device, const GpioInputValue &value, void *context) {}
|
|
};
|
|
class VGpioInputHandle
|
|
{
|
|
public:
|
|
VGpioInputHandle() = default;
|
|
virtual ~VGpioInputHandle() = default;
|
|
virtual void Init(void) {}
|
|
virtual void UnInit(void) {}
|
|
virtual void SetInputMonitor(std::shared_ptr<VGpioInputMonitor> monitor, void *context) {}
|
|
};
|
|
enum class ResponseCode
|
|
{
|
|
RESPONSE_OK = 0,
|
|
RESPONSE_FAILED,
|
|
RESPONSE_FAILED_RETRY,
|
|
RESPONSE_CODE_END
|
|
};
|
|
constexpr char *ONLY_READ_FROM_NETWORK = nullptr;
|
|
class VNetworkTask
|
|
{
|
|
public:
|
|
VNetworkTask() = default;
|
|
virtual ~VNetworkTask() = default;
|
|
virtual const char *GetWriteBuf(void) = 0;
|
|
virtual unsigned int GetWriteBufLength(void) = 0;
|
|
virtual bool IsTaskBlock(void) = 0;
|
|
virtual unsigned int RetryTimes(void) = 0;
|
|
virtual ResponseCode Response(const char *buf, const unsigned int &length) = 0;
|
|
};
|
|
constexpr int INVALID_INDEX = -1;
|
|
class VNetWorkHardware
|
|
{
|
|
public:
|
|
VNetWorkHardware() = default;
|
|
virtual ~VNetWorkHardware() = 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 RETURN_CODE NetworkWrite(std::shared_ptr<VNetworkTask> task) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual bool IsModuleWorking(void) { return false; }
|
|
virtual RETURN_CODE IsHardwareSupport(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE NetDriverLoad(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual unsigned int GetPdpIndex(void) { return INVALID_INDEX; }
|
|
};
|
|
class CameraFileMessage
|
|
{
|
|
public:
|
|
CameraFileMessage() = default;
|
|
virtual ~CameraFileMessage() = default;
|
|
SF_FILE_TYPE_E enFileTye;
|
|
std::string mThumbFileName;
|
|
std::string mThumbFilePath;
|
|
};
|
|
class VCameraHalOwner
|
|
{
|
|
public:
|
|
VCameraHalOwner() = default;
|
|
virtual ~VCameraHalOwner() = default;
|
|
virtual void CameraFinshTask(const std::vector<CameraFileMessage> &files) = 0;
|
|
virtual void SpontaneousTaskFromCamera(const std::vector<CameraFileMessage> &files) = 0;
|
|
virtual int AudioStream_write(const char *pu8Addr, const unsigned int &u32Len, const unsigned int &TimeStamp) = 0;
|
|
virtual int VideoStream_write(char *pu8Addr, const unsigned int &u32Len, const unsigned int &TimeStamp, const unsigned int &key_frame) = 0;
|
|
};
|
|
constexpr int NOT_MULTI_SHOT = false;
|
|
constexpr int MULTI_SHOT = true;
|
|
class CameraTaskData
|
|
{
|
|
public:
|
|
CameraTaskData(const CameraTaskType &type, const signed int &isNight, const unsigned int &multiShot)
|
|
: mType(type), mIsNight(isNight), mMultiShot(multiShot)
|
|
{
|
|
}
|
|
~CameraTaskData()
|
|
{
|
|
}
|
|
const CameraTaskType mType;
|
|
const signed int mIsNight;
|
|
const unsigned int mMultiShot;
|
|
};
|
|
class VCameraHal
|
|
{
|
|
public:
|
|
VCameraHal() = default;
|
|
virtual ~VCameraHal() = default;
|
|
virtual RETURN_CODE SetCameraOwner(std::shared_ptr<VCameraHalOwner> &owner) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE StartSingleTask(const CameraTaskData &data) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE StopTask(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE sf_venc_stream_thread(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE SetNightMode(const bool &isNight) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE HalBeReadyForLive(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual void sf_venc_stream_start(void) {}
|
|
virtual void sf_venc_stream_stop(void) {}
|
|
virtual void sf_audio_stream_start(void) {}
|
|
virtual void sf_audio_stream_stop(void) {}
|
|
};
|
|
enum class RtcDeviceSupport
|
|
{
|
|
SUPPORT = 0,
|
|
NOT_SUPPORT,
|
|
END
|
|
};
|
|
class RtcDevice
|
|
{
|
|
public:
|
|
RtcDevice(const char *rtcDevice, const RtcDeviceSupport &support)
|
|
: mRtcDevice(rtcDevice), mSupport(support)
|
|
{
|
|
}
|
|
~RtcDevice()
|
|
{
|
|
}
|
|
const char *mRtcDevice;
|
|
const RtcDeviceSupport mSupport;
|
|
};
|
|
class VLightWeightCPU
|
|
{
|
|
public:
|
|
VLightWeightCPU() = default;
|
|
virtual ~VLightWeightCPU() = default;
|
|
virtual bool Read(char *readBuf, const unsigned int length) { return 0; }
|
|
virtual bool Write(const char *writeBuf, const unsigned length) { return 0; }
|
|
};
|
|
class McuDeviceInformation
|
|
{
|
|
public:
|
|
McuDeviceInformation(const char *device, const int &speed, const char &flow_ctrl, const int &databits, const int &stopbits, const char &parity)
|
|
: mDevice(device), mSpeed(speed), mFlow_ctrl(flow_ctrl), mDatabits(databits), mStopbits(stopbits), mParity(parity)
|
|
{
|
|
}
|
|
~McuDeviceInformation() = default;
|
|
const char *mDevice;
|
|
const int mSpeed;
|
|
const char mFlow_ctrl;
|
|
const int mDatabits;
|
|
const int mStopbits;
|
|
const char mParity;
|
|
};
|
|
enum class SdCardEvent
|
|
{
|
|
MOUNT_SUCCEED = 0,
|
|
MOUNT_FAILED,
|
|
SD_ERROR,
|
|
SD_OUT,
|
|
SD_FULL,
|
|
END
|
|
};
|
|
class VSDCardOwner
|
|
{
|
|
public:
|
|
VSDCardOwner() = default;
|
|
virtual ~VSDCardOwner() = default;
|
|
virtual void SDCardHalEvent(const SdCardEvent &event) {}
|
|
};
|
|
class VSDCardHal
|
|
{
|
|
public:
|
|
VSDCardHal() = default;
|
|
virtual ~VSDCardHal() = default;
|
|
virtual RETURN_CODE GetSdCardState(SdCardEvent &state) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE SetOwner(const std::shared_ptr<VSDCardOwner> &owner) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE Format(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE MsdcMode(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE UvcMode(void) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
};
|
|
enum class NETWORK_MODULE_UPGRADE_RESULT
|
|
{
|
|
SUCCEED = 0,
|
|
FAILED,
|
|
END
|
|
};
|
|
class NetWorkUpgradeResult
|
|
{
|
|
public:
|
|
NetWorkUpgradeResult(const NETWORK_MODULE_UPGRADE_RESULT &result)
|
|
: mResult(result)
|
|
{
|
|
}
|
|
~NetWorkUpgradeResult() = default;
|
|
const NETWORK_MODULE_UPGRADE_RESULT mResult;
|
|
};
|
|
class IHal
|
|
{
|
|
public:
|
|
IHal() = default;
|
|
virtual ~IHal() = default;
|
|
static std::shared_ptr<IHal> &GetInstance(std::shared_ptr<IHal> *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 GetKeyContrlHandle(const SfKeyDefine &key, std::shared_ptr<VKeyContrl> &keyContrl) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE GetGpioInputHandle(const GpioPin &gpio, std::shared_ptr<VGpioInputHandle> &gpioHandle) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE GetLedContrlHandle(const SfLedIndex &led, std::shared_ptr<VLedContrl> &ledContrl) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE GetNetworkHardware(std::shared_ptr<VNetWorkHardware> &module) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual RETURN_CODE GetCameraHal(const CameraType &type, std::shared_ptr<VCameraHal> &camera) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual const RtcDevice &GetRtcDevice(void)
|
|
{
|
|
static RtcDevice rtc("Not_support", RtcDeviceSupport::NOT_SUPPORT);
|
|
return rtc;
|
|
}
|
|
virtual const char *GetSDCardSystemPath(void) { return "./sdcard/"; }
|
|
virtual const char *GetPictureThumbPath(void) { return "./sdcard/DCIM/THUMB/"; }
|
|
virtual const char *GetVideoStreamPath(void) { return "./sdcard/DCIM/SMALL/"; }
|
|
virtual const char *GetSDCardCheckPath(void) { return "./sdcard/DCIM"; }
|
|
virtual RETURN_CODE GetLightWeightCPU(std::shared_ptr<VLightWeightCPU> &lcpu) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual const McuDeviceInformation GetMcuDeviceInformation(void)
|
|
{
|
|
McuDeviceInformation info("", 0, 0, 0, 0, 0);
|
|
return info;
|
|
}
|
|
virtual void DoSomethingBeforPowerOff(void) {}
|
|
virtual RETURN_CODE GetSDCardHal(std::shared_ptr<VSDCardHal> &sdCardHal) { return VReturnCode::NewCode(VReturnCodeDefine::NOT_OK_VIRTUAL_FUNCTION); }
|
|
virtual const NetWorkUpgradeResult NetworkModuleUpgrade(void)
|
|
{
|
|
NetWorkUpgradeResult result(NETWORK_MODULE_UPGRADE_RESULT::END);
|
|
return result;
|
|
}
|
|
};
|
|
bool CreateHalModuleInstance(void);
|
|
#endif // !IHAL_H
|