#pragma once #include #include #include 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 &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 & vecOffsetInfo); CCOS_DRIVER_C_API int DEVPath_Get_LogicModeList_(std::string& Out); //(vector & 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); //