#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MULTIDPC_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // MULTIDPC_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef MULTIDPC_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "MultiDPCX64D.lib") #else #pragma comment(lib, "MultiDPCX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "MultiDPCD.lib") #else #pragma comment(lib, "MultiDPC.lib") #endif #endif #endif #include "LogicDriver.h" #ifdef MULTIDPC_EXPORTS #define MULTIDPC_API __declspec(dllexport) #define MULTIDPC_C_API extern "C" __declspec(dllexport) #else #define MULTIDPC_API __declspec(dllimport) #define MULTIDPC_C_API extern "C" __declspec(dllexport) #endif class MULTIDPC_API MultiDPC :public LogicDriver { protected: ResDataObject m_DPCTypes; //pDPC要做好初始化,最起码Identifierkey预先要配置好 //DrvConfig为整块Config内容 bool AddDPC_Platform(LogicDriver *pDPC, ResDataObject &DrvConfig, const char *pszIdentifystr); bool DelDPC_Platform(LogicDriver *pDPC); public: MultiDPC(void); virtual ~MultiDPC(void); // //virtual bool DATA_ACTION Connect(); //virtual void DATA_ACTION DisConnect(); virtual DPCDRIVERTYPE SYSTEM_CALL GetDPCType(); //基本接口 //不能调用LogicDriver的Disconnect,会删除掉子DPC. virtual void DATA_ACTION DisConnect(); virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType); //get device resource virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource); virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceResource); //ResourceCommand Request In and Response Out virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest, ResDataObject PARAM_OUT *pResponse); //notify to lower layer virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd); //对象接口 virtual bool SYSTEM_CALL DriverEntry(ResDataObject& PARAM_IN Configuration); //Actions virtual RET_STATUS DATA_ACTION AddDPC(const char *pGUID, const char *pszIdentifystr); virtual RET_STATUS DATA_ACTION DelDPC(const char *pGUID, const char *pszIdentifystr); void OEM_IF AddDPCGUID(const char *pGUID);//静态调用 void OEM_IF GetDPCGUIDs(ResDataObject &GUIDList); //状态机相关 virtual RET_STATUS DATA_ACTION FramePrep(); virtual RET_STATUS DATA_ACTION FrameReady(); virtual RET_STATUS DATA_ACTION FrameStart(); virtual RET_STATUS DATA_ACTION FrameIn(); virtual RET_STATUS DATA_ACTION FrameOut(); virtual RET_STATUS DATA_ACTION FrameEnd(); //3个全局退出&错误Action virtual RET_STATUS DATA_ACTION SeqError(); virtual RET_STATUS DATA_ACTION SeqEnd(); virtual RET_STATUS DATA_ACTION FrameError(); //1个Recover virtual RET_STATUS DATA_ACTION FrameRecover(); virtual RET_STATUS DATA_ACTION SeqRecover(); //状态机相关 virtual bool DATA_ACTION Support_FramePrep(); virtual bool DATA_ACTION Support_FrameReady(); virtual bool DATA_ACTION Support_FrameStart(); virtual bool DATA_ACTION Support_FrameIn(); virtual bool DATA_ACTION Support_FrameOut(); virtual bool DATA_ACTION Support_FrameEnd(); //3个全局退出&错误Action virtual bool DATA_ACTION Support_SeqError(); virtual bool DATA_ACTION Support_SeqEnd(); virtual bool DATA_ACTION Support_FrameError(); //1个Recover virtual bool DATA_ACTION Support_FrameRecover(); virtual bool DATA_ACTION Support_SeqRecover(); };