DFDetectorDriverDefine.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #pragma once
  2. #include <string>
  3. #include <map>
  4. #include <vector>
  5. using namespace std;
  6. #ifdef CCOS_DRIVER_EXPORTS
  7. #define CCOS_DRIVER_API __declspec(dllexport)
  8. #define CCOS_DRIVER_C_API extern "C" __declspec(dllexport)
  9. #else
  10. #define CCOS_DRIVER_API __declspec(dllimport)
  11. #define CCOS_DRIVER_C_API extern "C" __declspec(dllimport)
  12. #endif
  13. //////////////////////////////////////////////////////////////////
  14. /// C版本驱动框架接口
  15. /// 分为驱动接口篇、设备接口篇
  16. /// 驱动接口为标准驱动接口,所有驱动均有相同接口,各自实现
  17. /// 设备接口分为若干章节
  18. /// 包括基本篇,所有设备均有的接口
  19. /// 设备模型篇,不同的设备类型,有不同的接口
  20. ///
  21. //////////////////////////////////////////////////////////////////
  22. //#define SYSTEM_CALL __stdcall
  23. #define SYSTEM_CALL
  24. #define DEVICE_HANDLE void*
  25. #pragma warning(disable : 4190) //C接口形式导出的函数使用了C++的string
  26. //////////////////////////////////////////////////////////////////
  27. ///
  28. /// 驱动接口,必须实现
  29. ///
  30. //////////////////////////////////////////////////////////////////
  31. CCOS_DRIVER_C_API void DRV_Prepare();
  32. CCOS_DRIVER_C_API bool DRV_DriverEntry(std::string CfgFileName);
  33. CCOS_DRIVER_C_API std::string DRV_DriverProbe(); //返回驱动静态资源,如厂商/序列号/等不会变化的常量信息,包括不限于字典等
  34. CCOS_DRIVER_C_API std::string DRV_GetGUID(); //为了保持的一定的兼容性,GUID保留,每个公开的值 参考相关文档
  35. CCOS_DRIVER_C_API std::string DRV_GetResource(); //返回驱动资源,包括各种可能变更的属性、方法等等
  36. CCOS_DRIVER_C_API std::string DRV_DeviceProbe(); //返回该驱动下所有设备的静态资源,如序列号、字典等信息
  37. CCOS_DRIVER_C_API bool DRV_OnHeartBeat();
  38. CCOS_DRIVER_C_API bool DRV_ReLoadConfig();
  39. CCOS_DRIVER_C_API DEVICE_HANDLE DRV_CreateDevice(int index);
  40. CCOS_DRIVER_C_API void DRV_FreeDevice(DEVICE_HANDLE);
  41. CCOS_DRIVER_C_API bool DRV_GetDeviceConfig(std::string& Cfg);
  42. CCOS_DRIVER_C_API bool DRV_SetDeviceConfig(std::string Cfg);
  43. CCOS_DRIVER_C_API int DRV_Get(const std::string attrName, std::string& Out);
  44. CCOS_DRIVER_C_API int DRV_Set(const std::string attrName, std::string& Out);
  45. /// XXX 为属性名,可以定义任意多个,每次取一个属性值,等同 DRV_GET(XXX,Out)
  46. CCOS_DRIVER_C_API int DRV_Get_XXX(std::string& Out);
  47. /// XXX 为属性名,可以定义任意多个,每次取一个属性值,等同 DRV_GET(XXX,Out)
  48. CCOS_DRIVER_C_API int DRV_Set_XXX(std::string& InOut);
  49. //////////////////////////////////////////////////////////////////
  50. ///
  51. /// 通用设备接口 Part1,必须实现
  52. ///
  53. //////////////////////////////////////////////////////////////////
  54. CCOS_DRIVER_C_API std::string DEV_GetGUID(DEVICE_HANDLE hDev) ;
  55. CCOS_DRIVER_C_API std::string DEV_GetPath(DEVICE_HANDLE hDev);
  56. CCOS_DRIVER_C_API std::string DEV_GetResource(DEVICE_HANDLE hDev) ; //这里定义了该设备的模型资源,含属性、方法
  57. CCOS_DRIVER_C_API void DEV_CompleteInit(DEVICE_HANDLE hDev) ;
  58. CCOS_DRIVER_C_API bool DEV_Prepare(DEVICE_HANDLE hDev);
  59. CCOS_DRIVER_C_API void DEV_CompleteUnInit(DEVICE_HANDLE hDev) ;
  60. CCOS_DRIVER_C_API void DEV_GetSubscribeTopicList(DEVICE_HANDLE hDev, std::vector<string> &TopicList) ;
  61. //////////////////////////////////////////////////////////////////
  62. ///
  63. /// 通用设备接口 Part2,通用模型化原始接口实现,ADD/DELETE/UPDATE/ACTION/GET/SET
  64. /// 参考 HTTP RESTFULL,
  65. /// 驱动可以直接实现此接口,无需额外创建接口,适用任意设备
  66. /// DEVPath 为设备路径访问接口,直接访问对应设备路径的方法
  67. /// 各驱动可以根据自己特点,实现一套或者2套,不实现的方法需要返回-2
  68. //////////////////////////////////////////////////////////////////
  69. //CCOS_DRIVER_C_API int DEV_Add(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
  70. //CCOS_DRIVER_C_API int DEV_Delete(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
  71. //CCOS_DRIVER_C_API int DEV_Update(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
  72. //CCOS_DRIVER_C_API int DEV_Action(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
  73. //CCOS_DRIVER_C_API int DEV_Get(DEVICE_HANDLE hDev, const std::string funcName, std::string& Out);
  74. //CCOS_DRIVER_C_API int DEV_Set(DEVICE_HANDLE hDev, const std::string funcName, std::string In);
  75. //
  76. //CCOS_DRIVER_C_API int DEVPath_Add(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
  77. //CCOS_DRIVER_C_API int DEVPath_Delete(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
  78. //CCOS_DRIVER_C_API int DEVPath_Update(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
  79. //CCOS_DRIVER_C_API int DEVPath_Action(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
  80. //CCOS_DRIVER_C_API int DEVPath_Get(const std::string devPath, const std::string funcName, std::string& Out);
  81. //CCOS_DRIVER_C_API int DEVPath_Set(const std::string devPath, const std::string funcName, std::string In);
  82. //////////////////////////////////////////////////////////////////
  83. ///
  84. /// 设备模型接口 Part3,各中设备的标准方法
  85. /// XXX为属性名或者方法名,用于区分行为的Key
  86. /// 各驱动可以根据自己特点,定义标准方法集合
  87. //////////////////////////////////////////////////////////////////
  88. //实现者需要为每一个创建的设备对象定义模型实现,入口参数为设备时创建的对象句柄,需要自行区分对象与方法的对应
  89. //CCOS_DRIVER_C_API int DEV_Add_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
  90. //CCOS_DRIVER_C_API int DEV_Delete_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
  91. //CCOS_DRIVER_C_API int DEV_Update_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
  92. //CCOS_DRIVER_C_API int DEV_Action_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
  93. //CCOS_DRIVER_C_API int DEV_Get_XXX(DEVICE_HANDLE hDev, std::string& Out);
  94. //CCOS_DRIVER_C_API int DEV_Set_XXX(DEVICE_HANDLE hDev, std::string In);
  95. //实现者需要为每一个逻辑对象的设备路径 定义模型实现,需要自行根据设备路径和 方法进行区分
  96. //CCOS_DRIVER_C_API int DEVPath_Add_XXX(const std::string devPath, std::string In, std::string& Out);
  97. //CCOS_DRIVER_C_API int DEVPath_Delete_XXX(const std::string devPath, std::string In, std::string& Out);
  98. //CCOS_DRIVER_C_API int DEVPath_Update_XXX(const std::string devPath, std::string In, std::string& Out);
  99. //CCOS_DRIVER_C_API int DEVPath_Action_XXX(const std::string devPath, std::string In, std::string& Out);
  100. //CCOS_DRIVER_C_API int DEVPath_Get_XXX(const std::string devPath, std::string& Out);
  101. //CCOS_DRIVER_C_API int DEVPath_Set_XXX(const std::string devPath, std::string In);
  102. //设备树的模型实现
  103. //根设备的模型方法一套
  104. //只有一套接口,就是根设备路径的方法
  105. CCOS_DRIVER_C_API int DEVPath_Add_XXX_(std::string In, std::string& Out);
  106. CCOS_DRIVER_C_API int DEVPath_Delete_XXX_(std::string In, std::string& Out);
  107. CCOS_DRIVER_C_API int DEVPath_Update_XXX_(std::string In, std::string& Out);
  108. CCOS_DRIVER_C_API int DEVPath_Action_XXX_(std::string In, std::string& Out);
  109. CCOS_DRIVER_C_API int DEVPath_Get_XXX_(std::string& Out);
  110. CCOS_DRIVER_C_API int DEVPath_Set_XXX_(std::string& InOut);
  111. CCOS_DRIVER_C_API int DEVPath_Get_CalibrateAllModes_(std::string& Out); //
  112. CCOS_DRIVER_C_API int DEVPath_Get_CalibrationStatus_(std::string& Out); //(int nLogicMode, int nOffsetIndex, ZSKK_CAL_STATUS& modeStatus);
  113. CCOS_DRIVER_C_API int DEVPath_Get_ActiveMode_(std::string& Out); //(int& nLogicMode, int& nOffsetIndex);
  114. CCOS_DRIVER_C_API int DEVPath_Get_OffsetInfo_(std::string& Out); //(int nLogicMode, vector <ZSKK_PROTOCOL_OFFSET_INFO>& vecOffsetInfo);
  115. CCOS_DRIVER_C_API int DEVPath_Get_LogicModeList_(std::string& Out); //(vector <ZSKK_DETECTOR_MODE_INFO>& vecDetectorMode);
  116. CCOS_DRIVER_C_API int DEVPath_Set_SpotFrameRate_(std::string& InOut);//Set sequence shot fps
  117. CCOS_DRIVER_C_API int DEVPath_Set_FLUFrameRate_(std::string& InOut);//Set FLU fps (float fps);
  118. CCOS_DRIVER_C_API int DEVPath_Set_CINEFrameRate_(std::string& InOut);//Set CINE fps (float fps);
  119. CCOS_DRIVER_C_API int DEVPath_Set_SetGrabMode_(std::string& InOut); //(int nmode); (float fps);
  120. CCOS_DRIVER_C_API int DEVPath_Action_SetRadOffsetMode_(std::string In, std::string& InOut); //(int nLogicMode, int nOffsetIndex, int nSpeed);
  121. CCOS_DRIVER_C_API int DEVPath_Action_SetFluOffsetMode_(std::string In, std::string& InOut); //(int nLogicMode, int nOffsetIndex, float fSpeed);
  122. CCOS_DRIVER_C_API int DEVPath_Action_SetCinOffsetMode_(std::string In, std::string& InOut); //(int nLogicMode, int nOffsetIndex, float fSpeed);
  123. CCOS_DRIVER_C_API int DEVPath_Action_BeginWorkMode_(std::string In, std::string& Out);
  124. CCOS_DRIVER_C_API int DEVPath_Action_EndWorkMode_(std::string In, std::string& Out);
  125. CCOS_DRIVER_C_API int DEVPath_Action_StartGrab_(std::string In, std::string& Out);
  126. CCOS_DRIVER_C_API int DEVPath_Action_StopGrab_(std::string In, std::string& Out); //(int nXRayOnNum = 0);
  127. CCOS_DRIVER_C_API int DEVPath_Action_ExpEnable_(std::string In, std::string& Out);
  128. CCOS_DRIVER_C_API int DEVPath_Action_ExpDisable_(std::string In, std::string& Out);
  129. CCOS_DRIVER_C_API int DEVPath_Action_FluEnable_(std::string In, std::string& Out);
  130. CCOS_DRIVER_C_API int DEVPath_Action_FluDisable_(std::string In, std::string& Out);
  131. CCOS_DRIVER_C_API int DEVPath_Action_BeginCalibration_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex, int nCalMode);
  132. CCOS_DRIVER_C_API int DEVPath_Action_EnterCalibration_(std::string In, std::string& Out);
  133. CCOS_DRIVER_C_API int DEVPath_Action_ExitCalibration_(std::string In, std::string& Out);
  134. CCOS_DRIVER_C_API int DEVPath_Action_AbortCalibration_(std::string In, std::string& Out);
  135. CCOS_DRIVER_C_API int DEVPath_Action_EnableAutoOffset_(std::string In, std::string& Out); //(bool bEn);
  136. CCOS_DRIVER_C_API int DEVPath_Action_StartOffsetRefresh_(std::string In, std::string& Out);
  137. CCOS_DRIVER_C_API int DEVPath_Action_StartOffsetCalibration_(std::string In, std::string& Out);
  138. CCOS_DRIVER_C_API int DEVPath_Action_OffsetByUser_(std::string In, std::string& Out);
  139. CCOS_DRIVER_C_API int DEVPath_Action_SelectRADMode_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex);
  140. CCOS_DRIVER_C_API int DEVPath_Action_SelectFLUMode_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex);
  141. CCOS_DRIVER_C_API int DEVPath_Action_SelectCINEMode_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex);
  142. CCOS_DRIVER_C_API int DEVPath_Action_DownloadCorrectionFile2Device_(std::string In, std::string& Out); //
  143. CCOS_DRIVER_C_API int DEVPath_Action_ActiveRADMode_(std::string In, std::string& Out); //
  144. CCOS_DRIVER_C_API int DEVPath_Action_ActiveFLUMode_(std::string In, std::string& Out); //
  145. CCOS_DRIVER_C_API int DEVPath_Action_ActiveCINEMode_(std::string In, std::string& Out); //
  146. CCOS_DRIVER_C_API int DEVPath_Action_SetNextStepEvent_(std::string In, std::string& Out); //