#pragma once #include "LogicDevice.h" #include "DriverDefine.h" #include "common_api.h" #include "ImagePool.h" //#include "Ccos.Dev.IODevice.hpp" #ifndef UnvalidSMBid #define UnvalidSMBid 0xffffffff #endif //namespace nsDEV = CCOS::Dev; //属性Action typedef enum _AttrAction{ ATTRACTION_GET, ATTRACTION_SET, ATTRACTION_ADD, ATTRACTION_DEL, ATTRACTION_UPDATE, ATTRACTION_DATA, ATTRACTION_MSG, ATTRACTION_MAX }ATTRACTION; class ContainerDevice : public LogicDevice { //std::unique_ptr m_pMidObject; ImagePoolEx* m_ImagePool; std::shared_ptr m_DisconnectEvt; //std::vector m_strSubTopics; //要订阅的主题列表 public: ContainerDevice(); virtual ~ContainerDevice(); void Init(CCOS_DEVICE_OBJ* ccosDeviceModule, DEVICE_HANDLE hDevice, /*std::unique_ptr &&pMid,*/std::shared_ptr DisconnectEvt); virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType); void DEVICE_ACTION OnPassiveDisconnected(); void DEVICE_ACTION OnLog(int LogLevel, string Context); void DEVICE_ACTION OnSystemLog(int cmd, string Code, string Context, string SenderId = ""); void DEVICE_ACTION NotifyCallBackEntry(int cmdType, string keyType, string Context); void DEVICE_ACTION RawDataNotifyCallBackEntry(int cmdType, string keyType, string Context, string Head, char *pRawData, int DataLength); void DEVICE_ACTION NotifyCallBackSetBlockSize(string QueName, DWORD BlockSize, DWORD FulBlockCount, DWORD PrevBlockSize, DWORD PrevBlockCount); virtual void SubscribeSelf() override; //get device resource virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource); //normal sync routine,Request to device and response from device virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest, ResDataObject PARAM_OUT *pResponse); virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd); void OnSetClientID() override; /* void ConnectMQTTServer(); void NOTIFY(string topic, string context); void DispatchAction(string topic, string context); void ReSubscribe(); void SubscribeOne(string topic, bool unSubscribe=false); void SubscribeAction();*/ };