SapAcquisition.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. #ifndef _SAPACQUISITION_H_
  2. #define _SAPACQUISITION_H_
  3. // SapAcquisition.h : header file
  4. //
  5. #include "SapClassBasicDef.h"
  6. #include "SapBuffer.h"
  7. #define ACQCFG_DEFAULT_EXTENSION "ccf"
  8. #define ACQCFG_DEFAULT_FOLDER "\\CamFiles\\User"
  9. #define ACQCFG_SECTION_BOARD "Board"
  10. #define ACQCFG_KEY_SERVER_NAME "Server Name"
  11. #define ACQCFG_KEY_DEVICE_NAME "Device Name"
  12. #define ACQCFG_KEY_DEVICE_INDEX "Device Index"
  13. #define ACQCFG_SECTION_CUSTOM_PARAM "Custom Parameters"
  14. #define ACQCFG_CUSTOM_PARAM_ENTRY "Parameter_%d"
  15. #define ACQCFG_CUSTOM_PARAM_DEFAULT "0,0,0,No Parameter"
  16. #define ACQCFG_CUSTOM_PARAM_FORMAT "%i,%i,%i"
  17. //
  18. // SapAcquisition class declaration
  19. //
  20. // Forward declarations
  21. class SAPCLASSBASIC_CLASS SapAcqCallbackInfo;
  22. typedef void (*SapAcqCallback)(SapAcqCallbackInfo *);
  23. class SAPCLASSBASIC_CLASS SapAcquisition : public SapXferNode
  24. {
  25. public:
  26. // Acquisition event types
  27. typedef UINT64 EventType; // For compatibility with old Sapera++ application code
  28. static const EventType EventNone = 0;
  29. static const EventType EventShaftEncoderReverseCountOverflow = CORACQ_VAL_EVENT_TYPE_SHAFT_ENCODER_REVERSE_COUNT_OVERFLOW;
  30. static const EventType EventLineTriggerTooFast = CORACQ_VAL_EVENT_TYPE_LINE_TRIGGER_TOO_FAST;
  31. static const EventType EventLinkError = CORACQ_VAL_EVENT_TYPE_LINK_ERROR;
  32. static const EventType EventVerticalTimeout = CORACQ_VAL_EVENT_TYPE_VERTICAL_TIMEOUT;
  33. static const EventType EventExternalTrigger2 = CORACQ_VAL_EVENT_TYPE_EXTERNAL_TRIGGER2;
  34. static const EventType EventVirtualFrame = CORACQ_VAL_EVENT_TYPE_VIRTUAL_FRAME;
  35. static const EventType EventUserDefine = CORACQ_VAL_EVENT_TYPE_USER_DEFINE;
  36. static const EventType EventExternalTriggerTooSlow = CORACQ_VAL_EVENT_TYPE_EXT_LINE_TRIGGER_TOO_SLOW;
  37. static const EventType EventExtLineTriggerTooSlow = CORACQ_VAL_EVENT_TYPE_EXT_LINE_TRIGGER_TOO_SLOW;
  38. static const EventType EventHsyncLock = CORACQ_VAL_EVENT_TYPE_HSYNC_LOCK;
  39. static const EventType EventHsyncUnlock = CORACQ_VAL_EVENT_TYPE_HSYNC_UNLOCK;
  40. static const EventType EventExternalTriggerIgnored = CORACQ_VAL_EVENT_TYPE_EXTERNAL_TRIGGER_IGNORED;
  41. static const EventType EventDataOverflow = CORACQ_VAL_EVENT_TYPE_DATA_OVERFLOW;
  42. static const EventType EventFrameLost = CORACQ_VAL_EVENT_TYPE_FRAME_LOST;
  43. static const EventType EventStartOfField = CORACQ_VAL_EVENT_TYPE_START_OF_FIELD;
  44. static const EventType EventStartOfOdd = CORACQ_VAL_EVENT_TYPE_START_OF_ODD;
  45. static const EventType EventStartOfEven = CORACQ_VAL_EVENT_TYPE_START_OF_EVEN;
  46. static const EventType EventStartOfFrame = CORACQ_VAL_EVENT_TYPE_START_OF_FRAME;
  47. static const EventType EventEndOfField = CORACQ_VAL_EVENT_TYPE_END_OF_FIELD;
  48. static const EventType EventEndOfOdd = CORACQ_VAL_EVENT_TYPE_END_OF_ODD;
  49. static const EventType EventEndOfEven = CORACQ_VAL_EVENT_TYPE_END_OF_EVEN;
  50. static const EventType EventEndOfFrame = CORACQ_VAL_EVENT_TYPE_END_OF_FRAME;
  51. static const EventType EventExternalTrigger = CORACQ_VAL_EVENT_TYPE_EXTERNAL_TRIGGER;
  52. static const EventType EventVerticalSync = CORACQ_VAL_EVENT_TYPE_VERTICAL_SYNC;
  53. static const EventType EventEndOfLine = CORACQ_VAL_EVENT_TYPE_END_OF_LINE;
  54. static const EventType EventEndOfNLines = CORACQ_VAL_EVENT_TYPE_END_OF_NLINES;
  55. static const EventType EventNoHSync = CORACQ_VAL_EVENT_TYPE_NO_HSYNC;
  56. static const EventType EventNoVSync = CORACQ_VAL_EVENT_TYPE_NO_VSYNC;
  57. static const EventType EventNoPixelClk = CORACQ_VAL_EVENT_TYPE_NO_PIXEL_CLK;
  58. static const EventType EventPixelClk = CORACQ_VAL_EVENT_TYPE_PIXEL_CLK;
  59. static const EventType EventMask = CORACQ_VAL_EVENT_TYPE_MASK;
  60. static const EventType EventLinkLock = CORACQ_VAL_EVENT_TYPE_LINK_LOCK;
  61. static const EventType EventLinkUnlock = CORACQ_VAL_EVENT_TYPE_LINK_UNLOCK;
  62. static const EventType EventCameraMissedTrigger = CORACQ_VAL_EVENT_TYPE_CAMERA_MISSED_TRIGGER;
  63. static const EventType EventCameraBufferOverrun = CORACQ_VAL_EVENT_TYPE_CAMERA_BUFFER_OVERRUN;
  64. // Software trigger types
  65. typedef int SoftwareTriggerType;
  66. enum _SoftwareTriggerType
  67. {
  68. SoftwareTriggerExt = CORACQ_VAL_SOFTWARE_TRIGGER_EXT,
  69. SoftwareTriggerExtFrame = CORACQ_VAL_SOFTWARE_TRIGGER_EXT_FRAME,
  70. SoftwareTriggerExtLine = CORACQ_VAL_SOFTWARE_TRIGGER_EXT_LINE
  71. };
  72. // Flipping modes
  73. typedef int FlipMode;
  74. enum _FlipMode
  75. {
  76. FlipNone = CORACQ_VAL_FLIP_OFF,
  77. FlipHorizontal = CORACQ_VAL_FLIP_HORZ,
  78. FlipVertical = CORACQ_VAL_FLIP_VERT
  79. };
  80. // Time stamp base
  81. typedef int TimeStampBase;
  82. enum _TimeStampBase
  83. {
  84. TimeStampNone = 0,
  85. TimeStampMicroSec = CORACQ_VAL_TIME_BASE_US,
  86. TimeStampMilliSec = CORACQ_VAL_TIME_BASE_MS,
  87. TimeStampLineValid = CORACQ_VAL_TIME_BASE_LINE_VALID,
  88. TimeStampLineTrigger = CORACQ_VAL_TIME_BASE_LINE_TRIGGER,
  89. TimeStampFrameValid = CORACQ_VAL_TIME_BASE_FRAME_VALID,
  90. TimeStampFrameTrigger = CORACQ_VAL_TIME_BASE_FRAME_TRIGGER,
  91. TimeStampShaftEncoder = CORACQ_VAL_TIME_BASE_SHAFT_ENCODER,
  92. TimeStampNanoSec = CORACQ_VAL_TIME_BASE_NS,
  93. TimeStampPixelClock = CORACQ_VAL_TIME_BASE_PIXEL_CLK,
  94. TimeStamp100NanoSec = CORACQ_VAL_TIME_BASE_100NS
  95. };
  96. // Signal status
  97. typedef int SignalStatus;
  98. enum _SignalStatus
  99. {
  100. SignalNone = 0,
  101. SignalHSyncPresent = CORACQ_VAL_SIGNAL_HSYNC_PRESENT,
  102. SignalVSyncPresent = CORACQ_VAL_SIGNAL_VSYNC_PRESENT,
  103. SignalPixelClkPresent = CORACQ_VAL_SIGNAL_PIXEL_CLK_PRESENT,
  104. SignalChromaPresent = CORACQ_VAL_SIGNAL_CHROMA_PRESENT,
  105. SignalHSyncLock = CORACQ_VAL_SIGNAL_HSYNC_LOCK,
  106. SignalVSyncLock = CORACQ_VAL_SIGNAL_VSYNC_LOCK,
  107. SignalPowerPresent = CORACQ_VAL_SIGNAL_POWER_PRESENT,
  108. SignalPoCLActive = CORACQ_VAL_SIGNAL_POCL_ACTIVE,
  109. SignalPoCLActive2 = CORACQ_VAL_SIGNAL_POCL_ACTIVE_2,
  110. SignalPixelClk1Present = CORACQ_VAL_SIGNAL_PIXEL_CLK_1_PRESENT,
  111. SignalPixelClk2Present = CORACQ_VAL_SIGNAL_PIXEL_CLK_2_PRESENT,
  112. SignalPixelClk3Present = CORACQ_VAL_SIGNAL_PIXEL_CLK_3_PRESENT,
  113. SignalPixelClkAllPresent = CORACQ_VAL_SIGNAL_PIXEL_CLK_ALL_PRESENT,
  114. SignalPixelLinkLock = CORACQ_VAL_SIGNAL_LINK_LOCK,
  115. SignalPixelLane1Lock = CORACQ_VAL_SIGNAL_LANE1_LOCK,
  116. SignalPixelLane2Lock = CORACQ_VAL_SIGNAL_LANE2_LOCK,
  117. SignalPixelLane3Lock = CORACQ_VAL_SIGNAL_LANE3_LOCK,
  118. SignalPixelLane4Lock = CORACQ_VAL_SIGNAL_LANE4_LOCK,
  119. SignalPixelLane5Lock = CORACQ_VAL_SIGNAL_LANE5_LOCK,
  120. SignalPixelLane6Lock = CORACQ_VAL_SIGNAL_LANE6_LOCK,
  121. SignalPixelLane7Lock = CORACQ_VAL_SIGNAL_LANE7_LOCK,
  122. SignalPoCLActive3 = CORACQ_VAL_SIGNAL_POCL_ACTIVE_3,
  123. SignalPoCLActive4 = CORACQ_VAL_SIGNAL_POCL_ACTIVE_4,
  124. };
  125. // Video source scan types
  126. typedef int ScanType;
  127. enum _ScanType
  128. {
  129. ScanArea = CORACQ_VAL_SCAN_AREA,
  130. ScanLine = CORACQ_VAL_SCAN_LINE
  131. };
  132. // Video types
  133. enum VideoType
  134. {
  135. VideoMono = CORACQ_VAL_VIDEO_MONO,
  136. VideoColor = CORACQ_VAL_VIDEO_COLOR,
  137. VideoYC = CORACQ_VAL_VIDEO_YC,
  138. VideoRGB = CORACQ_VAL_VIDEO_RGB,
  139. VideoBayer = CORACQ_VAL_VIDEO_BAYER,
  140. VideoBiColor = CORACQ_VAL_VIDEO_BICOLOR,
  141. VideoRGBY = CORACQ_VAL_VIDEO_RGBY
  142. };
  143. // Image filter kernel sizes
  144. enum ImageFilterKernelSize
  145. {
  146. ImageFilterSize1x1 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_1x1,
  147. ImageFilterSize2x2 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_2x2,
  148. ImageFilterSize3x3 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_3x3,
  149. ImageFilterSize4x4 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_4x4,
  150. ImageFilterSize5x5 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_5x5,
  151. ImageFilterSize6x6 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_6x6,
  152. ImageFilterSize7x7 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_7x7,
  153. ImageFilterSize8x8 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_8x8,
  154. ImageFilterSize4x3 = CORACQ_VAL_IMAGE_FILTER_KERNEL_SIZE_4x3
  155. };
  156. // Various constants
  157. enum MiscValues
  158. {
  159. MaxCameras = 32,
  160. MaxSerialPortNameSize = 64,
  161. MaxCustomParamSize = 4096
  162. };
  163. public:
  164. // Constructor/Destructor
  165. SapAcquisition(SapLocation location = SapLocation::ServerSystem);
  166. SapAcquisition(SapLocation location, const char *configFile, EventType eventType = EventNone, SapAcqCallback pCallback = NULL, void *pContext = NULL);
  167. SapAcquisition(SapLocation location, const char *camfile, const char *vicfile, EventType eventType = EventNone, SapAcqCallback pCallback = NULL, void *pContext = NULL);
  168. SapAcquisition(const SapAcquisition &acq);
  169. SapAcquisition(const SapAcquisition &acq, EventType eventType, SapAcqCallback pCallback, void* pContext= NULL);
  170. virtual ~SapAcquisition();
  171. SapAcquisition &operator= (const SapAcquisition &acq);
  172. // Creation/destruction
  173. virtual BOOL Create();
  174. virtual BOOL Destroy();
  175. public:
  176. // SapXferNode type information
  177. XferNodeType GetXferNodeType() { return NodeTypeAcquisition; }
  178. // Access to implementation
  179. const char *GetConfigFile() const { return m_CamFile;}
  180. const char *GetCamFile() const { return m_CamFile; }
  181. const char *GetVicFile() const { return m_VicFile; }
  182. const char *GetLabel() const { return m_Label;}
  183. EventType GetEventType() const { return m_EventType; }
  184. SapAcqCallback GetCallback() const { return m_pCallback; }
  185. void *GetContext() const { return m_pContext; }
  186. FlipMode GetFlipMode() const { return m_FlipMode; }
  187. int GetCamSel() const { return m_CamSel; }
  188. virtual BOOL SetConfigFile( const char *configFile);
  189. virtual BOOL SetCamFile(const char *camfile);
  190. virtual BOOL SetVicFile(const char *vicfile);
  191. virtual BOOL SetCallbackInfo( SapAcqCallback pCallback, void *pContext= NULL);
  192. virtual BOOL SetEventType(EventType eventType);
  193. #if COR_LINUX
  194. CORCAM GetCam();
  195. CORVIC GetVic();
  196. #else
  197. CORCAM GetCam() const { return m_hCam; }
  198. CORVIC GetVic() const { return m_hVic; }
  199. #endif
  200. virtual BOOL IsCapabilityValid(int cap);
  201. virtual BOOL IsParameterValid(int param);
  202. virtual BOOL GetCapability(int cap, void *pValue);
  203. virtual BOOL GetParameter(int param, void *pValue);
  204. virtual BOOL SetParameter(int param, int value, BOOL updateNow = TRUE);
  205. virtual BOOL SetParameter(int param, void *pValue, BOOL updateNow = TRUE);
  206. static UINT32 GetParameterSize(int param);
  207. virtual BOOL SetFlipMode(FlipMode flipMode);
  208. virtual BOOL SetCamSel(int camSel);
  209. virtual BOOL SoftwareTrigger(SoftwareTriggerType triggerType);
  210. virtual BOOL SaveParameters(const char *camfile, const char *vicfile);
  211. virtual BOOL SaveParameters(const char *configFile);
  212. // Signal status management
  213. BOOL IsSignalStatusAvailable();
  214. BOOL IsSignalStatusAvailable(SignalStatus signalStatus);
  215. virtual BOOL GetSignalStatus(SignalStatus *pSignalStatus, SapAcqCallback pCallback = NULL, void *pContext = NULL);
  216. virtual BOOL GetSignalStatus(SignalStatus signalStatus, BOOL *pIsActive);
  217. // Callback functionality
  218. BOOL RegisterCallback(EventType eventType, SapAcqCallback callback, void *context = NULL);
  219. BOOL UnregisterCallback();
  220. // Look-up table management
  221. SapLut *GetLut(int lutIndex = 0);
  222. virtual BOOL ApplyLut(BOOL enable = TRUE);
  223. virtual BOOL ApplyLut(BOOL enable, int lutIndex);
  224. virtual BOOL EnableLut(BOOL enable = TRUE);
  225. BOOL CanEnableLut() { return m_LutEnableCap; }
  226. BOOL IsLutEnabled() { return m_LutEnable; }
  227. int GetNumLut() { return m_LutMax; }
  228. // Time stamp management
  229. BOOL IsTimeStampAvailable();
  230. TimeStampBase GetTimeStampBase() const { return m_TimeStampBase; }
  231. virtual BOOL SetTimeStampBase(TimeStampBase timeStampBase);
  232. virtual BOOL ResetTimeStamp();
  233. // Planar input sources management
  234. int GetNumPlanarInputs() const { return m_NumPlanarInputs; }
  235. virtual BOOL GetPlanarInputs(BOOL *pCamEnable);
  236. virtual BOOL SetPlanarInputs(BOOL *pCamEnable, int numCameras);
  237. // Flat field correction management
  238. BOOL IsFlatFieldAvailable() const;
  239. // Bayer conversion management (obsolete)
  240. BOOL IsBayerAvailable() const;
  241. // Color conversion management
  242. BOOL IsColorConversionAvailable() const;
  243. BOOL IsWhiteBalanceAvailable() const;
  244. // Image Filter management
  245. BOOL IsImageFilterAvailable() const { return m_ImageFilterCap; }
  246. BOOL IsImageFilterEnabled();
  247. BOOL EnableImageFilter(BOOL enable = TRUE);
  248. BOOL SetImageFilter(UINT32 filterIndex, SapBuffer *pKernel);
  249. BOOL GetImageFilterKernelSize(UINT32 filterIndex, ImageFilterKernelSize *pKernelSize);
  250. BOOL GetImageFilter(UINT32 filterIndex, SapBuffer *pKernel);
  251. BOOL LoadImageFilter(UINT32 filterIndex, const char *file);
  252. BOOL SaveImageFilter(UINT32 filterIndex, const char *file);
  253. // Dynamic LUT management
  254. BOOL IsDynamicLutAvailable() const;
  255. // Serial port management
  256. BOOL GetSerialPortName(char *serialPortName);
  257. // Commands specific to each acquisition device
  258. BOOL CustomCommand(int command, void *inData, int inDataSize, void *outData, int outDataSize);
  259. protected:
  260. // Utility methods
  261. virtual BOOL CreateRemaining();
  262. virtual BOOL DestroyLut();
  263. virtual void Construct(const char *camfile, const char *vicfile, EventType eventType, SapAcqCallback pCallback, void *pContext);
  264. virtual BOOL LoadConfig();
  265. virtual BOOL LoadCamVic();
  266. virtual BOOL SetCustomParams();
  267. virtual BOOL SetXferParams();
  268. virtual BOOL UpdateLutParams();
  269. virtual BOOL IsLutUpdateNeeded(int param);
  270. virtual BOOL GetParameter(int param, void *pValue, BOOL updateCamVic);
  271. virtual BOOL FixFilePath(const char *originalFilename, char *fullFilePath);
  272. virtual BOOL LoadLut(int lutIndex);
  273. virtual BOOL SetColorCorrectionImageFilter(UINT32 filterIndex, SapBuffer *pKernel);
  274. virtual BOOL LoadColorCorrectionImageFilter(UINT32 filterIndex, const char *file);
  275. virtual BOOL SaveColorCorrectionImageFilter(UINT32 filterIndex, const char *file);
  276. static SAPSTATUS CCONV OnCallback(void *context, UINT32 eventType, UINT32 eventCount);
  277. static SAPSTATUS CCONV OnCallbackEx(void *context, COREVENTINFO eventInfo);
  278. virtual BOOL IsNewCallbackSupported();
  279. static void CALLBACK TimerProc(UINT timerId, UINT reserved1, DWORD_PTR userData, DWORD_PTR reserved2, DWORD_PTR reserved3);
  280. static BOOL IsCameraSignalLost(int initialCameraSignal, int currentCameraSignal);
  281. protected:
  282. // Parameters
  283. char m_CamFile[MAX_PATH]; // CAM file name
  284. char m_VicFile[MAX_PATH]; // VIC file name
  285. char m_Label[MaxLabelSize]; // Name of the acquisition resource
  286. EventType m_EventType; // Type of event for callback
  287. SapAcqCallback m_pCallback; // Application callback function
  288. void *m_pContext; // Application context
  289. // Look-up table management
  290. BOOL m_LutEnableCap;
  291. BOOL m_LutEnable;
  292. int m_LutEntries;
  293. SapFormat m_LutFormat;
  294. int m_LutMax;
  295. SapLut** m_AcqLut;
  296. // Pixel depth and shift for transfer parameters
  297. int m_PixelDepthWithLut;
  298. int m_PixelDepthNoLut;
  299. int m_PixelShiftWithLut;
  300. int m_PixelShiftNoLut;
  301. // Flipping mode management
  302. FlipMode m_FlipModeCap;
  303. FlipMode m_FlipMode;
  304. // Signal status management
  305. SignalStatus m_SignalStatusCap; // Hardware capability
  306. SignalStatus m_SignalStatus; // Current parameter value
  307. SapAcqCallback m_pSignalCallback; // Callback function for parameter value changes
  308. void *m_pSignalContext; // Context information for signal status callback
  309. UINT m_SignalTimerId; // Timer ID for periodic value change checking
  310. // Time stamp management
  311. TimeStampBase m_TimeStampBaseCap;
  312. TimeStampBase m_TimeStampBase;
  313. // Planar input sources management
  314. BOOL m_PlanarInputsCap; // Hardware capability
  315. int m_PlanarInputsMask; // Current parameter value
  316. int m_NumPlanarInputs; // Number of cameras used simultaneously
  317. // Flat field correction management
  318. BOOL m_FlatFieldCap; // Hardware capability
  319. // Color conversion management
  320. BOOL m_ColorConvCap; // Hardware capability
  321. BOOL m_ColorDecoderEnable; // Hardware parameter
  322. BOOL m_WhiteBalanceCap; // Hardware capability
  323. // Image Filter management
  324. BOOL m_ImageFilterCap;
  325. UINT32 m_ImageFilterCount;
  326. // Dynamic LUT management
  327. BOOL m_DynamicLutCap; // Hardware capability
  328. // Management of custom parameters in configuration file
  329. char *m_CustomParamsBuf;
  330. int m_CustomParamsSize;
  331. // Others
  332. CORCAM m_hCam; // Handle to CAM module
  333. CORVIC m_hVic; // Handle to VIC module
  334. BOOL m_bIsCamVicLoaded; // TRUE if CAM/VIC files are loaded
  335. BOOL m_bCallbackRegistered; // TRUE if callback successfully registered
  336. int m_NumPendingParams; // Number of changed parameters no yet written to the acquisition hardware
  337. int m_CamSel; // Camera selector input
  338. BOOL m_NewCallbackSupported; // TRUE if the new callback method is supported
  339. BOOL m_NewCallbackCheckdone; // TRUE if the new callback method check ha sbeen performed
  340. };
  341. //
  342. // SapAcqCallbackInfo class declaration
  343. //
  344. class SAPCLASSBASIC_CLASS SapAcqCallbackInfo
  345. {
  346. public:
  347. SapAcqCallbackInfo(SapAcquisition *pAcq, void *context, SapAcquisition::EventType eventType, int eventCount)
  348. { m_pAcq = pAcq; m_Context = context; m_EventType = eventType; m_EventCount = eventCount; m_SignalStatus = SapAcquisition::SignalNone; m_NewCallback = FALSE;}
  349. SapAcqCallbackInfo(SapAcquisition *pAcq, void *context, SapAcquisition::SignalStatus signalStatus)
  350. { m_pAcq = pAcq; m_Context = context; m_EventType = SapAcquisition::EventNone; m_EventCount = 0; m_SignalStatus = signalStatus; m_NewCallback = FALSE;}
  351. SapAcqCallbackInfo(SapAcquisition *pAcq, void *context, COREVENTINFO eventInfo);
  352. ~SapAcqCallbackInfo() {}
  353. // Obsolete constructor
  354. SapAcqCallbackInfo(void *context, SapAcquisition::EventType eventType, int eventCount)
  355. { m_pAcq = NULL; m_Context = context; m_EventType = eventType; m_EventCount = eventCount; m_SignalStatus = SapAcquisition::SignalNone; }
  356. SapAcquisition *GetAcquisition() const { return m_pAcq; }
  357. void *GetContext() const { return m_Context; }
  358. SapAcquisition::SignalStatus GetSignalStatus() const { return m_SignalStatus; }
  359. COREVENTINFO GetEventInfo() const { return m_EventInfo; }
  360. //Event Count
  361. int GetEventCount() const { return m_EventCount; }
  362. BOOL GetEventCount(int *eventCount);
  363. //Event Type
  364. SapAcquisition::EventType GetEventType() const { return m_EventType; }
  365. BOOL GetEventType(SapAcquisition::EventType *eventType);
  366. //Timestamp
  367. BOOL GetHostTimeStamp(UINT64 *hostTimeStamp);
  368. BOOL GetAuxiliaryTimeStamp(UINT64 *auxTimeStamp);
  369. // Custom Parameters
  370. BOOL GetCustomData(void **customData);
  371. BOOL GetCustomSize(int *customSize);
  372. // Unnamed Parameters
  373. BOOL GetGenericParam0(int *paramValue);
  374. BOOL GetGenericParam1(int *paramValue);
  375. BOOL GetGenericParam2(int *paramValue);
  376. BOOL GetGenericParam3(int *paramValue);
  377. protected:
  378. SapAcquisition *m_pAcq;
  379. void *m_Context;
  380. SapAcquisition::EventType m_EventType;
  381. int m_EventCount;
  382. SapAcquisition::SignalStatus m_SignalStatus;
  383. COREVENTINFO m_EventInfo;
  384. BOOL m_NewCallback;
  385. };
  386. #endif // _SAPACQUISITION_H_