123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #pragma once
- #include <string>
- #include <map>
- #include <vector>
- using namespace std;
- #ifdef CCOS_DRIVER_EXPORTS
- #define CCOS_DRIVER_API __declspec(dllexport)
- #define CCOS_DRIVER_C_API extern "C" __declspec(dllexport)
- #else
- #define CCOS_DRIVER_API __declspec(dllimport)
- #define CCOS_DRIVER_C_API extern "C" __declspec(dllimport)
- #endif
- //////////////////////////////////////////////////////////////////
- /// C版本驱动框架接口
- /// 分为驱动接口篇、设备接口篇
- /// 驱动接口为标准驱动接口,所有驱动均有相同接口,各自实现
- /// 设备接口分为若干章节
- /// 包括基本篇,所有设备均有的接口
- /// 设备模型篇,不同的设备类型,有不同的接口
- ///
- //////////////////////////////////////////////////////////////////
- //#define SYSTEM_CALL __stdcall
- #define SYSTEM_CALL
- #define DEVICE_HANDLE void*
- #pragma warning(disable : 4190) //C接口形式导出的函数使用了C++的string
- //////////////////////////////////////////////////////////////////
- ///
- /// 驱动接口,必须实现
- ///
- //////////////////////////////////////////////////////////////////
- CCOS_DRIVER_C_API void DRV_Prepare();
- CCOS_DRIVER_C_API bool DRV_DriverEntry(std::string CfgFileName);
- CCOS_DRIVER_C_API std::string DRV_DriverProbe(); //返回驱动静态资源,如厂商/序列号/等不会变化的常量信息,包括不限于字典等
- CCOS_DRIVER_C_API std::string DRV_GetGUID(); //为了保持的一定的兼容性,GUID保留,每个公开的值 参考相关文档
- CCOS_DRIVER_C_API std::string DRV_GetResource(); //返回驱动资源,包括各种可能变更的属性、方法等等
- CCOS_DRIVER_C_API std::string DRV_DeviceProbe(); //返回该驱动下所有设备的静态资源,如序列号、字典等信息
- CCOS_DRIVER_C_API bool DRV_OnHeartBeat();
- CCOS_DRIVER_C_API bool DRV_ReLoadConfig();
- CCOS_DRIVER_C_API DEVICE_HANDLE DRV_CreateDevice(int index);
- CCOS_DRIVER_C_API void DRV_FreeDevice(DEVICE_HANDLE);
- CCOS_DRIVER_C_API bool DRV_GetDeviceConfig(std::string& Cfg);
- CCOS_DRIVER_C_API bool DRV_SetDeviceConfig(std::string Cfg);
- CCOS_DRIVER_C_API int DRV_Get(const std::string attrName, std::string& Out);
- CCOS_DRIVER_C_API int DRV_Set(const std::string attrName, std::string& Out);
- /// XXX 为属性名,可以定义任意多个,每次取一个属性值,等同 DRV_GET(XXX,Out)
- CCOS_DRIVER_C_API int DRV_Get_XXX(std::string& Out);
- /// XXX 为属性名,可以定义任意多个,每次取一个属性值,等同 DRV_GET(XXX,Out)
- CCOS_DRIVER_C_API int DRV_Set_XXX(std::string& InOut);
- //////////////////////////////////////////////////////////////////
- ///
- /// 通用设备接口 Part1,必须实现
- ///
- //////////////////////////////////////////////////////////////////
- CCOS_DRIVER_C_API std::string DEV_GetGUID(DEVICE_HANDLE hDev) ;
- CCOS_DRIVER_C_API std::string DEV_GetPath(DEVICE_HANDLE hDev);
- CCOS_DRIVER_C_API std::string DEV_GetResource(DEVICE_HANDLE hDev) ; //这里定义了该设备的模型资源,含属性、方法
- CCOS_DRIVER_C_API void DEV_CompleteInit(DEVICE_HANDLE hDev) ;
- CCOS_DRIVER_C_API bool DEV_Prepare(DEVICE_HANDLE hDev);
- CCOS_DRIVER_C_API void DEV_CompleteUnInit(DEVICE_HANDLE hDev) ;
- CCOS_DRIVER_C_API void DEV_GetSubscribeTopicList(DEVICE_HANDLE hDev, std::vector<string> &TopicList) ;
- //////////////////////////////////////////////////////////////////
- ///
- /// 通用设备接口 Part2,通用模型化原始接口实现,ADD/DELETE/UPDATE/ACTION/GET/SET
- /// 参考 HTTP RESTFULL,
- /// 驱动可以直接实现此接口,无需额外创建接口,适用任意设备
- /// DEVPath 为设备路径访问接口,直接访问对应设备路径的方法
- /// 各驱动可以根据自己特点,实现一套或者2套,不实现的方法需要返回-2
- //////////////////////////////////////////////////////////////////
- //CCOS_DRIVER_C_API int DEV_Add(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Delete(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Update(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Action(DEVICE_HANDLE hDev, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Get(DEVICE_HANDLE hDev, const std::string funcName, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Set(DEVICE_HANDLE hDev, const std::string funcName, std::string In);
- //
- //CCOS_DRIVER_C_API int DEVPath_Add(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Delete(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Update(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Action(const std::string devPath, const std::string funcName, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Get(const std::string devPath, const std::string funcName, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Set(const std::string devPath, const std::string funcName, std::string In);
- //////////////////////////////////////////////////////////////////
- ///
- /// 设备模型接口 Part3,各中设备的标准方法
- /// XXX为属性名或者方法名,用于区分行为的Key
- /// 各驱动可以根据自己特点,定义标准方法集合
- //////////////////////////////////////////////////////////////////
- //实现者需要为每一个创建的设备对象定义模型实现,入口参数为设备时创建的对象句柄,需要自行区分对象与方法的对应
- //CCOS_DRIVER_C_API int DEV_Add_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Delete_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Update_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Action_XXX(DEVICE_HANDLE hDev, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Get_XXX(DEVICE_HANDLE hDev, std::string& Out);
- //CCOS_DRIVER_C_API int DEV_Set_XXX(DEVICE_HANDLE hDev, std::string In);
- //实现者需要为每一个逻辑对象的设备路径 定义模型实现,需要自行根据设备路径和 方法进行区分
- //CCOS_DRIVER_C_API int DEVPath_Add_XXX(const std::string devPath, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Delete_XXX(const std::string devPath, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Update_XXX(const std::string devPath, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Action_XXX(const std::string devPath, std::string In, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Get_XXX(const std::string devPath, std::string& Out);
- //CCOS_DRIVER_C_API int DEVPath_Set_XXX(const std::string devPath, std::string In);
- //设备树的模型实现
- //根设备的模型方法一套
- //只有一套接口,就是根设备路径的方法
- CCOS_DRIVER_C_API int DEVPath_Add_XXX_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Delete_XXX_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Update_XXX_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_XXX_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Get_XXX_(std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Set_XXX_(std::string& InOut);
- CCOS_DRIVER_C_API int DEVPath_Get_CalibrateAllModes_(std::string& Out); //
- CCOS_DRIVER_C_API int DEVPath_Get_CalibrationStatus_(std::string& Out); //(int nLogicMode, int nOffsetIndex, ZSKK_CAL_STATUS& modeStatus);
- CCOS_DRIVER_C_API int DEVPath_Get_ActiveMode_(std::string& Out); //(int& nLogicMode, int& nOffsetIndex);
- CCOS_DRIVER_C_API int DEVPath_Get_OffsetInfo_(std::string& Out); //(int nLogicMode, vector <ZSKK_PROTOCOL_OFFSET_INFO>& vecOffsetInfo);
- CCOS_DRIVER_C_API int DEVPath_Get_LogicModeList_(std::string& Out); //(vector <ZSKK_DETECTOR_MODE_INFO>& vecDetectorMode);
- CCOS_DRIVER_C_API int DEVPath_Set_SpotFrameRate_(std::string& InOut);//Set sequence shot fps
- CCOS_DRIVER_C_API int DEVPath_Set_FLUFrameRate_(std::string& InOut);//Set FLU fps (float fps);
- CCOS_DRIVER_C_API int DEVPath_Set_CINEFrameRate_(std::string& InOut);//Set CINE fps (float fps);
- CCOS_DRIVER_C_API int DEVPath_Set_SetGrabMode_(std::string& InOut); //(int nmode); (float fps);
- CCOS_DRIVER_C_API int DEVPath_Action_SetRadOffsetMode_(std::string In, std::string& InOut); //(int nLogicMode, int nOffsetIndex, int nSpeed);
- CCOS_DRIVER_C_API int DEVPath_Action_SetFluOffsetMode_(std::string In, std::string& InOut); //(int nLogicMode, int nOffsetIndex, float fSpeed);
- CCOS_DRIVER_C_API int DEVPath_Action_SetCinOffsetMode_(std::string In, std::string& InOut); //(int nLogicMode, int nOffsetIndex, float fSpeed);
- CCOS_DRIVER_C_API int DEVPath_Action_BeginWorkMode_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_EndWorkMode_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_StartGrab_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_StopGrab_(std::string In, std::string& Out); //(int nXRayOnNum = 0);
- CCOS_DRIVER_C_API int DEVPath_Action_ExpEnable_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_ExpDisable_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_FluEnable_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_FluDisable_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_BeginCalibration_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex, int nCalMode);
- CCOS_DRIVER_C_API int DEVPath_Action_EnterCalibration_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_ExitCalibration_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_AbortCalibration_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_EnableAutoOffset_(std::string In, std::string& Out); //(bool bEn);
- CCOS_DRIVER_C_API int DEVPath_Action_StartOffsetRefresh_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_StartOffsetCalibration_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_OffsetByUser_(std::string In, std::string& Out);
- CCOS_DRIVER_C_API int DEVPath_Action_SelectRADMode_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex);
- CCOS_DRIVER_C_API int DEVPath_Action_SelectFLUMode_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex);
- CCOS_DRIVER_C_API int DEVPath_Action_SelectCINEMode_(std::string In, std::string& Out); //(int nLogicMode, int nOffsetIndex);
- CCOS_DRIVER_C_API int DEVPath_Action_DownloadCorrectionFile2Device_(std::string In, std::string& Out); //
- CCOS_DRIVER_C_API int DEVPath_Action_ActiveRADMode_(std::string In, std::string& Out); //
- CCOS_DRIVER_C_API int DEVPath_Action_ActiveFLUMode_(std::string In, std::string& Out); //
- CCOS_DRIVER_C_API int DEVPath_Action_ActiveCINEMode_(std::string In, std::string& Out); //
- CCOS_DRIVER_C_API int DEVPath_Action_SetNextStepEvent_(std::string In, std::string& Out); //
|