MultiDPC.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #pragma once
  2. // 下列 ifdef 块是创建使从 DLL 导出更简单的
  3. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MULTIDPC_EXPORTS
  4. // 符号编译的。在使用此 DLL 的
  5. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
  6. // MULTIDPC_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
  7. // 符号视为是被导出的。
  8. #ifndef MULTIDPC_EXPORTS
  9. #ifdef _WIN64
  10. #ifdef _DEBUG
  11. #pragma comment(lib, "MultiDPCX64D.lib")
  12. #else
  13. #pragma comment(lib, "MultiDPCX64.lib")
  14. #endif
  15. #else
  16. #ifdef _DEBUG
  17. #pragma comment(lib, "MultiDPCD.lib")
  18. #else
  19. #pragma comment(lib, "MultiDPC.lib")
  20. #endif
  21. #endif
  22. #endif
  23. #include "LogicDriver.h"
  24. #ifdef MULTIDPC_EXPORTS
  25. #define MULTIDPC_API __declspec(dllexport)
  26. #define MULTIDPC_C_API extern "C" __declspec(dllexport)
  27. #else
  28. #define MULTIDPC_API __declspec(dllimport)
  29. #define MULTIDPC_C_API extern "C" __declspec(dllexport)
  30. #endif
  31. class MULTIDPC_API MultiDPC :public LogicDriver
  32. {
  33. protected:
  34. ResDataObject m_DPCTypes;
  35. //pDPC要做好初始化,最起码Identifierkey预先要配置好
  36. //DrvConfig为整块Config内容
  37. bool AddDPC_Platform(LogicDriver *pDPC, ResDataObject &DrvConfig, const char *pszIdentifystr);
  38. bool DelDPC_Platform(LogicDriver *pDPC);
  39. public:
  40. MultiDPC(void);
  41. virtual ~MultiDPC(void);
  42. //
  43. //virtual bool DATA_ACTION Connect();
  44. //virtual void DATA_ACTION DisConnect();
  45. virtual DPCDRIVERTYPE SYSTEM_CALL GetDPCType();
  46. //基本接口
  47. //不能调用LogicDriver的Disconnect,会删除掉子DPC.
  48. virtual void DATA_ACTION DisConnect();
  49. virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType);
  50. //get device resource
  51. virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource);
  52. virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceResource);
  53. //ResourceCommand Request In and Response Out
  54. virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest, ResDataObject PARAM_OUT *pResponse);
  55. //notify to lower layer
  56. virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd);
  57. //对象接口
  58. virtual bool SYSTEM_CALL DriverEntry(ResDataObject& PARAM_IN Configuration);
  59. //Actions
  60. virtual RET_STATUS DATA_ACTION AddDPC(const char *pGUID, const char *pszIdentifystr);
  61. virtual RET_STATUS DATA_ACTION DelDPC(const char *pGUID, const char *pszIdentifystr);
  62. void OEM_IF AddDPCGUID(const char *pGUID);//静态调用
  63. void OEM_IF GetDPCGUIDs(ResDataObject &GUIDList);
  64. //状态机相关
  65. virtual RET_STATUS DATA_ACTION FramePrep();
  66. virtual RET_STATUS DATA_ACTION FrameReady();
  67. virtual RET_STATUS DATA_ACTION FrameStart();
  68. virtual RET_STATUS DATA_ACTION FrameIn();
  69. virtual RET_STATUS DATA_ACTION FrameOut();
  70. virtual RET_STATUS DATA_ACTION FrameEnd();
  71. //3个全局退出&错误Action
  72. virtual RET_STATUS DATA_ACTION SeqError();
  73. virtual RET_STATUS DATA_ACTION SeqEnd();
  74. virtual RET_STATUS DATA_ACTION FrameError();
  75. //1个Recover
  76. virtual RET_STATUS DATA_ACTION FrameRecover();
  77. virtual RET_STATUS DATA_ACTION SeqRecover();
  78. //状态机相关
  79. virtual bool DATA_ACTION Support_FramePrep();
  80. virtual bool DATA_ACTION Support_FrameReady();
  81. virtual bool DATA_ACTION Support_FrameStart();
  82. virtual bool DATA_ACTION Support_FrameIn();
  83. virtual bool DATA_ACTION Support_FrameOut();
  84. virtual bool DATA_ACTION Support_FrameEnd();
  85. //3个全局退出&错误Action
  86. virtual bool DATA_ACTION Support_SeqError();
  87. virtual bool DATA_ACTION Support_SeqEnd();
  88. virtual bool DATA_ACTION Support_FrameError();
  89. //1个Recover
  90. virtual bool DATA_ACTION Support_FrameRecover();
  91. virtual bool DATA_ACTION Support_SeqRecover();
  92. };