CVB++ 15.0
Loading...
Searching...
No Matches
c_driver.h
1#pragma once
2
3#if defined __GNUC__ && !defined CVB_SHOW_WARNINGS
4# pragma GCC system_header
5#endif // __GNUC__
6
7#include "../namespace.hpp"
8
9#include "c_core.h"
10#include "c_img.h"
11
12
13
14namespace Cvb
15{
16
17CVB_BEGIN_INLINE_NS
18
19namespace CExports
20{
21
22CVB_DEF_CAPI_X(cvbbool_t, CanGrabber, (IMG Image))
23CVB_DEF_CAPI_X(cvbbool_t, CanBoardSelect, (IMG Image))
24CVB_DEF_CAPI_X(cvbbool_t, CanBoardSelect2, (IMG Image))
25CVB_DEF_CAPI_X(cvbbool_t, CanCameraSelect, (IMG Image))
26CVB_DEF_CAPI_X(cvbbool_t, CanCameraSelect2, (IMG Image))
27CVB_DEF_CAPI_X(cvbbool_t, CanDeviceControl, (IMG Image))
28CVB_DEF_CAPI_X(cvbbool_t, CanImageRect, (IMG Image))
29CVB_DEF_CAPI_X(cvbbool_t, CanBasicDIO, (IMG Image))
30CVB_DEF_CAPI_X(cvbbool_t, CanRingBuffer, (IMG Image))
31CVB_DEF_CAPI_X(cvbbool_t, CanNodeMapHandle, (IMG Image))
32CVB_DEF_CAPI_X(cvbbool_t, CanNodeMapHandle2, (IMG Image))
33CVB_DEF_CAPI_X(cvbbool_t, CanNotify, (IMG Image))
34CVB_DEF_CAPI_X(cvbbool_t, CanSoftwareTrigger, (IMG Image))
35CVB_DEF_CAPI_X(cvbbool_t, CanGrab2, (IMG Image))
36
37
38CVB_DEF_CAPI_X(cvbres_t, GetDriverID, (IMG Image, cvbguid_t & guid))
39
40
41
42
43
44CVB_DEF_CAPI_X(cvbres_t, SetBoard, (IMG Image, cvbval_t nBoard))
45CVB_DEF_CAPI_X(cvbres_t, GetBoard, (IMG Image, cvbval_t * nBoard))
46
47
48CVB_DEF_CAPI_X(cvbres_t, BS2GetNumBoards, (IMG Image, cvbval_t & NumBoards))
49CVB_DEF_CAPI_X(cvbres_t, BS2GetBoard, (IMG Image, cvbval_t & ActBoard))
50CVB_DEF_CAPI_X(cvbres_t, BS2SetBoard, (IMG Image, cvbval_t NewBoard, IMG & imgNew))
51
52
53
54CVB_DEF_CAPI_X(cvbres_t, SetCamPort, (IMG Image, cvbval_t Port, cvbval_t ImagesToWait))
55CVB_DEF_CAPI_X(cvbres_t, GetNumPorts, (IMG Image, cvbval_t & NumPorts))
56CVB_DEF_CAPI_X(cvbres_t, GetCamPort, (IMG Image, cvbval_t & Port))
57
58
59CVB_DEF_CAPI_X(cvbres_t, CS2GetNumPorts, (IMG Image, cvbval_t & NumPorts))
60CVB_DEF_CAPI_X(cvbres_t, CS2GetCamPort, (IMG Image, cvbval_t & Port))
61CVB_DEF_CAPI_X(cvbres_t, CS2SetCamPort, (IMG Image, cvbval_t Port, cvbval_t ImgToWait, IMG & imgNew))
62
63
64#ifdef _WIN32
65typedef long DEVICECTRL_CMD;
66#elif defined __linux__
67typedef uint32_t DEVICECTRL_CMD;
68#else
69#error CVB: Unsupported platform and/or compiler!
70#endif
71
72enum DC_OPERATION
73{
74 DC_GET = 0x00000000,
75 // gets the current setting of the parameter
76 DC_SET = 0x10000000,
77 // sets the given parameter
78 DC_GETMIN = 0x20000000,
79 // gets the min valid value for a parameter (if possible)
80 DC_GETMAX = 0x30000000,
81 // gets the max valid value for a parameter (if possible)
82 DC_VERIFY = 0x40000000,
83 // verifies the validity of a parameter settings without actually setting it (if possible)
84 DC_OPERATION_MASK = 0xF0000000,
85 DC_PARAM_MASK = 0x0FFFFFFF
86};
87
88
89
90
91
92CVB_DEF_CAPI_X(cvbres_t, DCBinaryCommand , (IMG Image, DEVICECTRL_CMD iCmd, const void * pInBuf, size_t iInBufSize, void * pOutBuf, size_t & iOutBufSize))
93CVB_DEF_CAPI_X(cvbres_t, DCStrCommand, (IMG Image, DEVICECTRL_CMD iCmd, const char * pInStr, size_t iInStrSize, char * pOutStr, size_t & iOutStrSize))
94
95
96
97CVB_DEF_CAPI_X(cvbres_t, STTrigger, (IMG Image, cvbval_t iSWTrgID))
98
99
100
101enum IMAGERECT_CMD
102{
103
104 IMAGERECT_CMD_GET = 0,
105 IMAGERECT_CMD_SET_AUTODELETE = 1,
106 IMAGERECT_CMD_VALIDATE = 2,
107 IMAGERECT_CMD_SET = 3,
108 IMAGERECT_CMD_RESET = 4,
109 IMAGERECT_CMD_CHECK = 5
110};
111
112
113CVB_DEF_CAPI_X(cvbres_t, IRImageSize, (IMG Image, IMAGERECT_CMD lAction, cvbdim_t & Dx, cvbdim_t & Dy, IMG & imgNew))
114CVB_DEF_CAPI_X(cvbres_t, IRImageOffset, (IMG Image, IMAGERECT_CMD lAction, cvbdim_t & XOffset, cvbdim_t & YOffset))
115
116
117
118CVB_DEF_CAPI_X(cvbres_t, BDIOGetNumInputs, (IMG Image, cvbval_t & Num))
119CVB_DEF_CAPI_X(cvbres_t, BDIOGetNumOutputs, (IMG Image, cvbval_t & Num))
120CVB_DEF_CAPI_X(cvbres_t, BDIOGetInBit, (IMG Image, cvbval_t Num, cvbval_t & Bit))
121CVB_DEF_CAPI_X(cvbres_t, BDIOGetInDword, (IMG Image, cvbval_t Num, cvbuint32_t & Value))
122CVB_DEF_CAPI_X(cvbres_t, BDIOGetOutBit, (IMG Image, cvbval_t Num, cvbval_t & Bit))
123CVB_DEF_CAPI_X(cvbres_t, BDIOGetOutDword, (IMG Image, cvbval_t Num, cvbuint32_t & Value))
124CVB_DEF_CAPI_X(cvbres_t, BDIOSetOutBit, (IMG Image, cvbval_t Num, cvbval_t Value))
125CVB_DEF_CAPI_X(cvbres_t, BDIOSetOutDword, (IMG Image, cvbval_t Num, cvbuint32_t Value, cvbuint32_t Mask))
126
127
128
129enum GRAB_INFO_CMD
130{
131
132 GRAB_INFO_NUMBER_IMAGES_AQCUIRED = 0,
133 GRAB_INFO_NUMBER_IMAGES_LOST = 1,
134 GRAB_INFO_NUMBER_IMAGES_LOST_LOCKED = 2,
135 GRAB_INFO_NUMBER_IMAGES_LOCKED = 3,
136 GRAB_INFO_NUMBER_IMAGES_PENDIG = 4,
137 GRAB_INFO_GRAB_ACTIVE = 5,
138 GRAB_INFO_TIMESTAMP = 6,
139 GRAB_INFO_NUMBER_TRIGGERS_LOST = 7,
140 GRAB_INFO_CAMERA_DETECTED = 8,
141 G2INFO_NumBuffersPending = 10,
142 G2INFO_NumBuffersDelivered = 11,
143 G2INFO_NumBuffersCorrupt = 12,
144 G2INFO_NumBuffersCorruptOnDelivery = 13,
145 G2INFO_NumBuffersLost = 14,
146 G2INFO_NumBuffersLostLocked = 15,
147 G2INFO_NumBuffersAcquired = 16,
148 G2INFO_NumBuffersQueued = 17,
149 G2INFO_NumBuffersAnnounced = 18,
150 G2INFO_NumBuffersInIncompleteList = 19,
151 G2INFO_NumPacketsReceived = 20,
152 G2INFO_NumResends = 21,
153 G2INFO_NumBuffersLocked = 22
154
155};
156
157
158CVB_DEF_CAPI_X(cvbres_t, G2Grab, (IMG Image))
159CVB_DEF_CAPI_X(cvbres_t, G2Wait, (IMG Image))
160CVB_DEF_CAPI_X(cvbres_t, G2Freeze, (IMG Image, cvbbool_t bKill))
161CVB_DEF_CAPI_X(cvbres_t, G2GetGrabStatus, (IMG Image, GRAB_INFO_CMD RequestType, double & RequestAnswer))
162
163
164enum RINGBUFFER_INFO_CMD
165{
166 RINGBUFFER_INFO_TIMESTAMP = 0,
167 RINGBUFFER_INFO_TAG = 1,
168 RINGBUFFER_INFO_LOCKED = 2
169};
170
171enum RINGBUFFER_NUMBUFFER_CMD
172{
173 RINGBUFFER_NUMBUFFER_CMD_GET = 0,
174 RINGBUFFER_NUMBUFFER_CMD_SET = 1,
175 RINGBUFFER_NUMBUFFER_CMD_VALIDATE = 2
176};
177
178enum RINGBUFFER_LOCKMODE_CMD
179{
180 RINGBUFFER_LOCKMODE_CMD_GET = 0,
181 RINGBUFFER_LOCKMODE_CMD_SET = 1,
182 RINGBUFFER_LOCKMODE_CMD_VALIDATE = 2
183};
184
185enum RINGBUFFER_LOCKMODE
186{
187 RINGBUFFER_LOCKMODE_AUTO = 0,
188 // lockmode off was 1 (removed)
189 RINGBUFFER_LOCKMODE_ON = 2,
190 RINGBUFFER_LOCKMODE_INVALID = 3
191};
192
193CVB_DEF_CAPI_X(cvbres_t, Snap, (IMG Image))
194CVB_DEF_CAPI_X(cvbres_t, SetTimeout, (IMG Image, cvbuint32_t dwTimeout))
195
196
197CVB_DEF_CAPI_X(cvbres_t, RBNumBuffer, (IMG Image, RINGBUFFER_NUMBUFFER_CMD Action, cvbval_t & Num, IMG & imgNew))
198CVB_DEF_CAPI_X(cvbres_t, RBUnlock, (IMG Image, cvbval_t BufferIndex))
199CVB_DEF_CAPI_X(cvbres_t, RBLockMode, (IMG Image, RINGBUFFER_LOCKMODE_CMD LockModeCmd, RINGBUFFER_LOCKMODE & Mode))
200CVB_DEF_CAPI_X(cvbres_t, RBIsLocked, (IMG Image, cvbval_t lBufferIndex, cvbbool_t & bIsLocked))
201CVB_DEF_CAPI_X(cvbres_t, RBGetBufferImage, (IMG Image, cvbval_t lBufferIndex, IMG & I))
202CVB_DEF_CAPI_X(cvbres_t, RBBufferSeq, (IMG Image, cvbval_t lSequenceIndex, cvbval_t & lBufferIndex))
203CVB_DEF_CAPI_X(cvbres_t, RBGetRingBufferInfo, (IMG Image, cvbval_t lBufferIndex, RINGBUFFER_INFO_CMD lRequestedInformation, double & dInfo))
204
205
206typedef void * NODEMAP;
207
208CVB_DEF_CAPI_X(cvbres_t, NMHGetNodeMap, (IMG Image, NODEMAP & NodeMap))
209
210static const char NMH2_ID_DEVICE[] = "Device"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
211static const char NMH2_ID_FACTORY[] = "TLFactory"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
212static const char NMH2_ID_SYSTEM[] = "TLSystem"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
213static const char NMH2_ID_INTERFACE[] = "TLInterface"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
214static const char NMH2_ID_TLDEVICE[] = "TLDevice"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
215static const char NMH2_ID_DATASTREAM[] = "TLDatastream"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
216
217
218CVB_DEF_CAPI_X(cvbres_t, NMH2GetNum, (IMG Image, size_t & NumNodeMaps))
219CVB_DEF_CAPI_X(cvbres_t, NMH2GetID, (IMG Image, size_t IDIndex, char * IDBuffer, size_t & IDBufferSize))
220CVB_DEF_CAPI_X(cvbres_t, NMH2GetNodeMap, (IMG Image, const char * ID, NODEMAP & NodeMap))
221CVB_DEF_CAPI_X(cvbres_t, NMH2GetDescription, (IMG Image, const char * ID, char * DescBuffer, size_t & DescBufferSize))
222
223
224enum DODiscoverLevel
225{
226 DO_AT_LEVEL_UNKNOWN = 0,
227 DO_AT_LEVEL_SYSTEM = 1,
228 DO_AT_LEVEL_VIN = 2,
229 DO_AT_LEVEL_TLSYSTEM = 3,
230 DO_AT_LEVEL_TLIFACE = 4,
231 DO_AT_LEVEL_TLDEVICE = 5,
232 DO_AT_LEVEL_TLSTREAM = 6
233};
234
235
236enum DODiscoverInfoCommands
237{
238 DO_DISCOVER_INFO_ACCESS_TOKEN = 1000,
239 DO_DISCOVER_INFO_LEVEL,
240 DO_DISCOVER_INFO_INTERFACE_NET_LIST = 2000,
241 DO_DISCOVER_INFO_INTERFACE_NET_MAC,
242 DO_DISCOVER_INFO_INTERFACE_TLTYPE,
243 DO_DISCOVER_INFO_INTERFACE_DISPLAYNAME,
244 DO_DISCOVER_INFO_INTERFACE_DRIVERTYPE,
245 DO_DISCOVER_INFO_INTERFACE_ID,
246 DO_DISCOVER_INFO_DEVICE_TLTYPE = 3000,
247 DO_DISCOVER_INFO_DEVICE_USERNAME,
248 DO_DISCOVER_INFO_DEVICE_SERIALNUMBER,
249 DO_DISCOVER_INFO_DEVICE_NET_MAC,
250 DO_DISCOVER_INFO_DEVICE_NET_IP,
251 DO_DISCOVER_INFO_DEVICE_NET_SUBNETMASK,
252 DO_DISCOVER_INFO_DEVICE_USB_VID,
253 DO_DISCOVER_INFO_DEVICE_USB_PID,
254 DO_DISCOVER_INFO_DEVICE_VENDOR,
255 DO_DISCOVER_INFO_DEVICE_MODEL,
256 DO_DISCOVER_INFO_DEVICE_ID,
257 DO_DISCOVER_INFO_DEVICE_ACCESS_STATUS,
258 DO_DISCOVER_INFO_TRANSPORTLAYER_ID = 4000,
259 DO_DISCOVER_INFO_TRANSPORTLAYER_PATH,
260 DO_DISCOVER_INFO_TRANSPORTLAYER_VENDOR,
261 DO_DISCOVER_INFO_DEVICE_USB_PORT_PATH,
262 DO_DISCOVER_INFO_CUSTOM
263};
264
265
266union DODiscoverFlags
267{
268
269 cvbuint64_t AsUINT;
270 struct Flags
271 {
272
273 cvbuint64_t Partial : 1;
274 cvbuint64_t Depth : 4;
275 cvbuint64_t Reserved : 3;
276 cvbuint64_t IgnoreVINs : 1;
277 cvbuint64_t IgnoreTLs : 1;
278 cvbuint64_t IgnoreSD : 1;
279 cvbuint64_t IgnoreFD : 1;
280 cvbuint64_t IgnoreAccessStatus : 1;
281 cvbuint64_t IncludeMockTL : 1;
282 }
283 AsFlags;
284};
285
286
287enum
288{
289 DO_DISCOVER_FLAG_PARTIAL = 0x1,
290
291 DO_DISCOVER_FLAG_LEVEL_SYSTEM = DO_AT_LEVEL_SYSTEM << 1,
292 DO_DISCOVER_FLAG_LEVEL_VIN = DO_AT_LEVEL_VIN << 1,
293 DO_DISCOVER_FLAG_LEVEL_TL = DO_AT_LEVEL_TLSYSTEM << 1,
294 DO_DISCOVER_FLAG_LEVEL_INTERFACE = DO_AT_LEVEL_TLIFACE << 1,
295 DO_DISCOVER_FLAG_LEVEL_DEVICE = DO_AT_LEVEL_TLDEVICE << 1,
296 DO_DISCOVER_FLAG_LEVEL_STREAM = DO_AT_LEVEL_TLSTREAM << 1,
297
298 DO_DISCOVER_FLAG_IGNORE_VINS = 0x1 << 8,
299 DO_DISCOVER_FLAG_IGNORE_TLS = 0x1 << 9,
300 DO_DISCOVER_FLAG_IGNORE_SD = 0x1 << 10,
301 DO_DISCOVER_FLAG_IGNORE_FD = 0x1 << 11,
302 DO_DISCOVER_FLAG_IGNORE_ACCESS_STATUS = 0x1 << 12,
303 DO_DISCOVER_FLAG_INCLUDE_MOCKTL = 0x1 << 13
304};
305
306typedef void * ATLIST;
307typedef void * DEVOBJ;
308
309CVB_DEF_CAPI_X(cvbres_t, DODiscover, (const char * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout))
310CVB_DEF_CAPI_X(cvbres_t, DODiscoverW, (const wchar_t * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout))
311CVB_DEF_CAPI_X(cvbres_t, DOEntryGetInfo, (ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, char * InfoUtf8, size_t & InfoSize))
312CVB_DEF_CAPI_X(cvbres_t, DOEntryGetInfoW, (ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, wchar_t * Info, size_t & InfoSize))
313CVB_DEF_CAPI_X(cvbres_t, DOGetNumEntries, (ATLIST List, size_t & NumEntries))
314CVB_DEF_CAPI_X(cvbres_t, DOSetParameter, (ATLIST List, size_t Index, const char * Name, const char * Value))
315CVB_DEF_CAPI_X(cvbres_t, DOSetParameterW, (ATLIST List, size_t Index, const wchar_t * Name, const wchar_t * Value))
316CVB_DEF_CAPI_X(cvbres_t, DOSetFeature, (ATLIST List, size_t Index, const char * NodeMapID, const char * Name, const char * Value))
317CVB_DEF_CAPI_X(cvbres_t, DOSetFeatureW, (ATLIST List, size_t Index, const wchar_t * NodeMapID, const wchar_t * Name, const wchar_t * Value))
318
319CVB_DEF_CAPI_X(cvbres_t, LoadDeviceObject, (const char * AccessToken, DEVOBJ & DeviceObject))
320CVB_DEF_CAPI_X(cvbres_t, LoadDeviceObjectW, (const wchar_t * AccessToken, DEVOBJ & DeviceObject))
321
322
323inline cvbres_t DODiscoverTyped(const char * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout)
324{
325 return DODiscover(Seed, Flags, Reserved, List, DiscoverTimeout);
326}
327
328inline cvbres_t DODiscoverTyped(const wchar_t * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout)
329{
330 return DODiscoverW(Seed, Flags, Reserved, List, DiscoverTimeout);
331}
332
333inline cvbres_t DOEntryGetInfoTyped(ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, wchar_t * InfoUtf8, size_t & InfoSize)
334{
335 return DOEntryGetInfoW(List, Index, InfoCommand, InfoUtf8, InfoSize);
336}
337
338
339inline cvbres_t DOEntryGetInfoTyped(ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, char * InfoUtf8, size_t & InfoSize)
340{
341 return DOEntryGetInfo(List, Index, InfoCommand, InfoUtf8, InfoSize);
342}
343
344
345
346inline cvbres_t DOSetParameterTyped(ATLIST List, size_t Index, const char * Name, const char * Value)
347{
348 return DOSetParameter(List, Index, Name, Value);
349}
350
351inline cvbres_t DOSetParameterTyped(ATLIST List, size_t Index, const wchar_t * Name, const wchar_t * Value)
352{
353 return DOSetParameterW(List, Index, Name, Value);
354}
355
356inline cvbres_t DOSetFeatureTyped(ATLIST List, size_t Index, const char * NodeMapID, const char * Name, const char * Value)
357{
358 return DOSetFeature(List, Index, NodeMapID, Name, Value);
359}
360
361inline cvbres_t DOSetFeatureTyped(ATLIST List, size_t Index, const wchar_t * NodeMapID, const wchar_t * Name, const wchar_t * Value)
362{
363 return DOSetFeatureW(List, Index, NodeMapID, Name, Value);
364}
365
366inline cvbres_t _ppLoadDeviceObjectTyped(const char * AccessToken, DEVOBJ & DeviceObject)
367{
368 return LoadDeviceObject(AccessToken, DeviceObject);
369}
370
371inline cvbres_t _ppLoadDeviceObjectTyped(const wchar_t * AccessToken, DEVOBJ & DeviceObject)
372{
373 return LoadDeviceObjectW(AccessToken, DeviceObject);
374}
375
376
377
378enum CVNotifyInfoCmd
379{
380 CVNO_INFO_COUNT_REGISTERED,
381 CVNO_INFO_COUNT_FIRED,
382 CVNO_INFO_IS_AVAILABLE,
383 NO_INFO_CUSTOM_CMD = 0x10000
384};
385
386typedef cvbval_t CVNotifyInfo_t;
387
388
389enum CVNotifyDatatypes
390{
391 CVNO_DATA_VOID = -1,
392 CVNO_DATA_INTEGER64 = 0,
393 CVNO_DATA_FLOAT64,
394 CVNO_DATA_STRING,
395 CVNO_DATA_BINARY,
396 CVNO_DATA_BOOL8,
397 CVNO_DATA_CUSTOM = 0x10000
398};
399
400
401typedef cvbval_t CVNotifyDatatype_t;
402
403
404enum CVNotifyEventIDs
405{
406 CVNO_REGISTRATION_INVALID = 0,
407 CVNO_EID_ERROR = 1,
408 CVNO_EID_DEVICE_DISCONNECTED = 2,
409 CVNO_EID_DEVICE_RECONNECT = 3,
410 CVNO_EID_GEOMETRY_CHANGE = 4,
411 CVNO_EID_METADATA_CHANGE = 5,
412 CVNO_EID_CUSTOM = 0x10000
413};
414
415typedef cvbval_t CVNotifyEvent_t;
416typedef void(__stdcall *CVBDRIVER_NOTIFY_CB) (CVNotifyEvent_t EventID, void *Buf, size_t Size, CVNotifyDatatype_t DataType, void *UserData);
417
418
419CVB_DEF_CAPI_X(cvbres_t, NORegister, (IMG Image, CVNotifyEvent_t EventID, CVBDRIVER_NOTIFY_CB pCB, void *UserData, intptr_t &Cookie))
420CVB_DEF_CAPI_X(cvbres_t, NOUnregister, (IMG Image, intptr_t Cookie))
421CVB_DEF_CAPI_X(cvbres_t, NOGetNumSupported, (IMG Image, size_t &NumEvents))
422CVB_DEF_CAPI_X(cvbres_t, NOGetDescription, (IMG Image, size_t Index, char *DescriptiveName, size_t &Size, CVNotifyEvent_t &EventID))
423CVB_DEF_CAPI_X(cvbres_t, NOGetStatus, (IMG Image, CVNotifyEvent_t eventID, CVNotifyInfo_t StatusCmd, cvbint64_t &Info))
424CVB_DEF_CAPI_X(cvbres_t, NOIsCookieValid, (IMG Image, intptr_t Cookie, cvbbool_t &IsValid))
425
426
427CVB_DEF_CAPI(cvbres_t, CVDCreateOrGetDeviceObject, (const char* AccessToken, DEVOBJ& DeviceObject))
428CVB_DEF_CAPI(cvbres_t, CVDCreateOrGetDeviceObjectW, (const wchar_t* AccessToken, DEVOBJ& DeviceObject))
429
430inline cvbres_t _ppCVDCreateOrGetDeviceObjectTyped(const char* AccessToken, DEVOBJ& DeviceObject)
431{
432 return _ppCVDCreateOrGetDeviceObject(AccessToken, DeviceObject);
433}
434
435inline cvbres_t _ppCVDCreateOrGetDeviceObjectTyped(const wchar_t* AccessToken, DEVOBJ& DeviceObject)
436{
437 return _ppCVDCreateOrGetDeviceObjectW(AccessToken, DeviceObject);
438}
439
440
441typedef void* CVDSTREAM;
442
443
444CVB_DEF_CAPI(cvbres_t, CVDDeviceGetStreamCount, (DEVOBJ DeviceObject, size_t& Count))
445CVB_DEF_CAPI(cvbres_t, CVDDeviceGetStreamAt, (DEVOBJ DeviceObject, size_t Index, CVDSTREAM& Stream))
446
447
448typedef cvbres_t(__stdcall* CVDReleaseFlowSetPool) (void* Context);
449
450
451struct CVDFlow
452{
453 size_t Size;
454 void* Buffer;
455};
456
457
458struct CVDFlowSet
459{
460 cvbuint32_t Version;
461 size_t NumEntries;
462 CVDFlow* Flows;
463};
464
465
466CVB_DEF_CAPI(cvbres_t, CVDStreamRegisterManagedFlowSetPool, (CVDSTREAM Stream, size_t Count))
467CVB_DEF_CAPI(cvbres_t, CVDStreamRegisterExternalFlowSetPool, (CVDSTREAM Stream, const CVDFlowSet Pool[], size_t PoolSize, CVDReleaseFlowSetPool OnRelease, void* pPrivate))
468CVB_DEF_CAPI(cvbres_t, CVDStreamUnregisterFlowSetPool, (CVDSTREAM Stream))
469CVB_DEF_CAPI(cvbres_t, CVDStreamGetFlowSetCount, (CVDSTREAM Stream, size_t& Count))
470
471
472CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowSetMinCount, (CVDSTREAM Stream, size_t& Count))
473CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowCount, (CVDSTREAM Stream, size_t& Count))
474CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowSize, (CVDSTREAM Stream, size_t FlowIndex, size_t& SizeInBytes))
475CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowAlignment, (CVDSTREAM Stream, size_t FlowIndex, size_t& AlignmentInBytes))
476CVB_DEF_CAPI(cvbbool_t, CVDCanFlowSetInfo, (CVDSTREAM Stream))
477
478
479enum CVDWaitStatus
480{
481 CVDWS_Ok,
482 CVDWS_Canceled,
483 CVDWS_Timeout
484};
485
486
487typedef void* CVCANCELLATIONTOKEN;
488
489
490CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineStart, (CVDSTREAM Stream, cvbint64_t BufferCountToAcquire))
491CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineStop, (CVDSTREAM Stream, cvbint64_t Timeout))
492CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineAbort, (CVDSTREAM Stream))
493CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineWaitForNextComposite, (CVDSTREAM Stream, cvbint64_t Timeout, CVCANCELLATIONTOKEN Token, CVDWaitStatus& WaitStatus, CVCOMPOSITE& Composite))
494
495
496CVB_DEF_CAPI(cvbres_t, CVDStreamControlStart, (CVDSTREAM Stream, cvbint64_t FrameCountToAcquire))
497CVB_DEF_CAPI(cvbres_t, CVDStreamControlStop, (CVDSTREAM Stream))
498CVB_DEF_CAPI(cvbres_t, CVDStreamControlAbort, (CVDSTREAM Stream))
499
500
501}
502
503
504CVB_END_INLINE_NS
505
506
507}
508
@ DataType
Definition spectral.hpp:145
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
WaitStatus
Status after waiting for an image to be returned.
Definition global.hpp:396
@ Timeout
A timeout occurred, no image buffer has been returned.
Definition global.hpp:400