#pragma once #include "Definitions.h" #include "CcosFileHandle.h" #include "CcosLock.h" #include "ResDataObject.h" #include "CDInterface.h" #include "LinuxEvent.h" #include "LocalConfig.h" #define CDI_API #define CDI_C_API extern "C" class CDI_API CDI :public CcosLock, public CDInterface { //HANDLE m_Mutex; UINT64 m_MasterProcId; std::shared_ptr m_ExitHandle; void *m_prootClient; //PVOID m_DCSMap; //INT LoadAllDCS();//used by system //INT UnLoadAllDCS();//used by system bool InitBusUnit(); void Ex_ResponseClientReq(ResDataObject &Req, RET_STATUS status, const char *pInfo = NULL); void Ex_ResponseRemoteClientReq(ResDataObject &Req, RET_STATUS status, const char *pInfo = NULL); void Ex_ResponseDeviceRes(ResDataObject &Res); void Ex_ResponseEbus(ResDataObject &packet); void Ex_RequestRemoteClientClose(ResDataObject &Res); //CMD_ECHO DispatchToLocal(ResDataObject &packet); void StartMqttServer(); public: CDI(void); virtual ~CDI(void); bool WaitExit(DWORD timeout = 0, bool Exit = false); bool InitAs(CCOS_PROC_TYPE Master, UINT64 MasterProcId);//3 = CcosClient,2 = Channel,1 = Master,0 = Slave static void* InitShareMemory(void* pPara); int CommandInput(const char *pszCmd); //simple command //bool ReceivedFromLocalBus(ResDataObject &packet); //bool ReceivedFromEthBus(ResDataObject &packet); bool ReceivedFromBus(ResDataObject &packet); bool ReceivedFromDevice(ResDataObject &packet); //bool ReceivedDeviceNotify(ResDataObject &packet); //bool ReceivedFromClient(ResDataObject &packet); //bool HandleOpenClose(ResDataObject& packet, PACKET_CMD cmd); //bool HandleOthers(ResDataObject& packet, PACKET_CMD cmd); bool SendCcosPacket(ResDataObject& packet); //Client Stuff //bool RegistClient(UINT64 Address); //bool UnRegistClient(UINT64 Address); //Handle Stuff bool Registhandle(HANDLE Handle); bool UnRegistHandle(UINT64 CrcCode); //bool RegistThread(PVOID pCcosThread); //void UnRegistThread(DWORD Tid); //bool GetThreadsLogger(DWORD Tid, PVOID &pLogger); const char* GetAllDevice(void** pDevices, int &nDevNums); void UnLoadAll(); //bool AddDPC(PVOID pMDPC, PVOID pDPC, ResDataObject &DrvConfig); //bool DelDPC(PVOID pMDPC, PVOID pDPC); }; CDI_C_API CDI *GetCommandDispathIF(); CDI_C_API CDInterface* GetCDI(); //CDI_C_API bool InitClientEnv(); //CDI_C_API bool DestroyClientEnv();