CVB.Net 15.0
Loading...
Searching...
No Matches
CVTypesDriver.h
1// ---------------------------------------------------------------------------
2// Common Vision Blox - (C) STEMMER IMAGING
3// ---------------------------------------------------------------------------
4// This software is supplied under the terms of a license agreement or
5// nondisclosure agreement with STEMMER IMAGING and may not be copied or
6// disclosed except in accordance with the terms of that agreement.
7// ---------------------------------------------------------------------------
8
9#pragma once
10
11#include "CVTypes.h"
12
13// Functions related to the IGrabber interface
14// ---------------------------------------------------------------------------
15// constant definitions
16
17// ---------------------------------------------------------------------------
24// ---------------------------------------------------------------------------
25enum CVC_TIMEOUT_SETTING
26{
28 CVC_TIMEOUT_DEFAULT = 0, // use the default timeout of 10s
30 CVC_TIMEOUT_INFINITE = -1, // wait as long as possible
32 CVC_TIMEOUT_STATUS = -2 // check the status
33};
34
35// Functions related to the ITrigger interface
36// ---------------------------------------------------------------------------
37// constant definitions
38// ---------------------------------------------------------------------------
43// ---------------------------------------------------------------------------
44enum CVC_TRIGGERMODE
45{
47 CVC_C_TRIGGER_DISABLE = 0,
49 CVC_C_TRIGGER_FIELD = 1,
51 CVC_C_TRIGGER_ASYNCRON = 2
52};
53
54// ---------------------------------------------------------------------------
55// constant definitions
56// ---------------------------------------------------------------------------
61// ---------------------------------------------------------------------------
62enum LSErrorCodes
63{
65 CVC_LS_OK = 0,
67 CVC_LS_OVERRUN = 1,
69 // CVC_LS_TIMEOUT Timeout during acquisition
70 CVC_LS_ERRORMAXCODES
71};
72
73// ---------------------------------------------------------------------------
78// ---------------------------------------------------------------------------
79enum LSPolarity
80{
82 CVC_LS_LO = 0,
84 CVC_LS_HI = 1,
86 CVC_LS_POLMAXMODES
87};
88
89// ---------------------------------------------------------------------------
94// ---------------------------------------------------------------------------
95enum LSLineTriggerMode
96{
98 CVC_LS_FREERUN = 0,
100 CVC_LS_EXTTRIGGER = 1,
102 CVC_LS_LINETRIGGERMAXMODES
103};
104
105// Callbacks for Block/image
106typedef cvbbool_t(__stdcall* pLSBLOCKCALLBACK) (cvbval_t NumBlocksPending, cvbdim_t StartLine, cvbdim_t NumLines, cvbbool_t LastBlock, void* pPrivate);
107typedef cvbbool_t(__stdcall* pLSIMAGECALLBACK) (cvbval_t NumImagesPending, cvbdim_t NumLines, void* pPrivate);
108typedef cvbbool_t(__stdcall* pLSERRORCALLBACK) (LSErrorCodes ErrorNumber, cvbval_t Data, void* pPrivate);
109
110#ifdef _WIN32
111 typedef long DEVICECTRL_CMD;
112#elif defined __linux__ || defined __APPLE__
113 typedef uint32_t DEVICECTRL_CMD;
114#else
115#error CVB: Unsupported platform and/or compiler!
116#endif
117enum DC_OPERATION
118{
119 DC_GET = 0x00000000, // gets the current setting of the parameter
120 DC_SET = 0x10000000, // sets the given parameter
121 DC_GETMIN = 0x20000000, // gets the min valid value for a parameter (if possible)
122 DC_GETMAX = 0x30000000, // gets the max valid value for a parameter (if possible)
123 DC_VERIFY = 0x40000000, // verifies the validity of a parameter settings without actually setting it (if possible)
124 DC_OPERATION_MASK = 0xF0000000,
125 DC_PARAM_MASK = 0x0FFFFFFF
126};
127// Helper function to generate a DEVICECTRL_CMD from a given DEVICECTRLPARAM
128template<class T>
129inline DEVICECTRL_CMD DeviceCtrlCmd(T Parameter, DC_OPERATION Op)
130{
131 return (DEVICECTRL_CMD)((cvbval_t)Parameter | (cvbval_t)Op);
132}
133// Helper function to extract a DEVICECTRL_OPERATION from a given DEVICECTRL_CMD
134inline DC_OPERATION DeviceCtrlOperation(DEVICECTRL_CMD Cmd)
135{
136 return (DC_OPERATION)((cvbval_t)Cmd & (cvbval_t)DC_OPERATION_MASK);
137}
138// Helper function to extract a DEVICECTRL_PARAM from a given DEVICECTRL_CMD
139template<class T>
140inline T DeviceCtrlParam(DEVICECTRL_CMD Cmd)
141{
142 return (T)((cvbval_t)Cmd & (cvbval_t)DC_PARAM_MASK);
143}
144
149// ---------------------------------------------------------------------------
150enum CVNotifyInfoCmd
151{
153 CVNO_INFO_COUNT_REGISTERED,
155 CVNO_INFO_COUNT_FIRED,
157 CVNO_INFO_IS_AVAILABLE,
159 NO_INFO_CUSTOM_CMD = 0x10000
160};
161// ---------------------------------------------------------------------------
167// ---------------------------------------------------------------------------
168typedef cvbval_t CVNotifyInfo_t;
169
170// Enums for INotify data types
171// ---------------------------------------------------------------------------
176// ---------------------------------------------------------------------------
177enum CVNotifyDatatypes
178{
180 CVNO_DATA_VOID = -1,
182 CVNO_DATA_INTEGER64 = 0,
184 CVNO_DATA_FLOAT64,
186 CVNO_DATA_STRING,
188 CVNO_DATA_BINARY,
190 CVNO_DATA_BOOL8,
192 CVNO_DATA_CUSTOM = 0x10000
193};
194
195// ---------------------------------------------------------------------------
201// ---------------------------------------------------------------------------
202typedef cvbval_t CVNotifyDatatype_t;
203
204// Standard INotify event ids
205// ---------------------------------------------------------------------------
212// ---------------------------------------------------------------------------
213enum CVNotifyEventIDs
214{
216 CVNO_REGISTRATION_INVALID = 0,
218 CVNO_EID_ERROR = 1,
220 CVNO_EID_DEVICE_DISCONNECTED = 2,
222 CVNO_EID_DEVICE_RECONNECT = 3,
224 CVNO_EID_GEOMETRY_CHANGE = 4,
226 CVNO_EID_METADATA_CHANGE = 5,
228 CVNO_EID_CUSTOM = 0x10000
229};
230// ---------------------------------------------------------------------------
236// ---------------------------------------------------------------------------s
237typedef cvbval_t CVNotifyEvent_t;
238typedef void(__stdcall* CVBDRIVER_NOTIFY_CB) (CVNotifyEvent_t EventID, void* Buf, size_t Size, CVNotifyDatatype_t DataType, void* UserData);
239
240// ---------------------------------------------------------------------------
245// ---------------------------------------------------------------------------
246enum IMAGERECT_CMD
247{
249 IMAGERECT_CMD_GET = 0,
251 IMAGERECT_CMD_SET_AUTODELETE = 1,
253 IMAGERECT_CMD_VALIDATE = 2,
256 IMAGERECT_CMD_SET = 3,
258 IMAGERECT_CMD_RESET = 4,
260 IMAGERECT_CMD_CHECK = 5
261};
262
272// ---------------------------------------------------------------------------
273enum GRAB_INFO_CMD
274{
279 GRAB_INFO_NUMBER_IMAGES_AQCUIRED = 0,
282 GRAB_INFO_NUMBER_IMAGES_LOST = 1,
285 GRAB_INFO_NUMBER_IMAGES_LOST_LOCKED = 2,
287 GRAB_INFO_NUMBER_IMAGES_LOCKED = 3,
291 GRAB_INFO_NUMBER_IMAGES_PENDIG = 4,
294 GRAB_INFO_GRAB_ACTIVE = 5,
297 GRAB_INFO_TIMESTAMP = 6,
300 GRAB_INFO_NUMBER_TRIGGERS_LOST = 7,
304 GRAB_INFO_CAMERA_DETECTED = 8,
314 G2INFO_NumBuffersPending = 10,
317 G2INFO_NumBuffersDelivered = 11,
327 G2INFO_NumBuffersCorrupt = 12,
331 G2INFO_NumBuffersCorruptOnDelivery = 13,
336 G2INFO_NumBuffersLost = 14,
339 G2INFO_NumBuffersLostLocked = 15,
344 G2INFO_NumBuffersAcquired = 16,
355 G2INFO_NumBuffersQueued = 17,
360 G2INFO_NumBuffersAnnounced = 18,
365 G2INFO_NumBuffersInIncompleteList = 19,
368 G2INFO_NumPacketsReceived = 20,
374 G2INFO_NumResends = 21,
376 G2INFO_NumBuffersLocked = 22
377};
378
379// ---------------------------------------------------------------------------
384// ---------------------------------------------------------------------------
385enum RINGBUFFER_INFO_CMD
386{
389 RINGBUFFER_INFO_TIMESTAMP = 0,
392 RINGBUFFER_INFO_TAG = 1,
394 RINGBUFFER_INFO_LOCKED = 2
395};
396
397// ---------------------------------------------------------------------------
406// ---------------------------------------------------------------------------
407enum RINGBUFFER_NUMBUFFER_CMD
408{
410 RINGBUFFER_NUMBUFFER_CMD_GET = 0,
412 RINGBUFFER_NUMBUFFER_CMD_SET = 1,
414 RINGBUFFER_NUMBUFFER_CMD_VALIDATE = 2
415};
416
417// ---------------------------------------------------------------------------
423// ---------------------------------------------------------------------------
424enum RINGBUFFER_LOCKMODE_CMD
425{
427 RINGBUFFER_LOCKMODE_CMD_GET = 0,
429 RINGBUFFER_LOCKMODE_CMD_SET = 1,
431 RINGBUFFER_LOCKMODE_CMD_VALIDATE = 2
432};
433
434// ---------------------------------------------------------------------------
440// ---------------------------------------------------------------------------
441enum RINGBUFFER_LOCKMODE
442{
446 RINGBUFFER_LOCKMODE_AUTO = 0,
447
448 // lockmode off removed
449
455 RINGBUFFER_LOCKMODE_ON = 2,
458 RINGBUFFER_LOCKMODE_INVALID = 3
459};
460
461// ---------------------------------------------------------------------------
469// ---------------------------------------------------------------------------
470enum IMAGEPROPCHANGE_REASON
471{
473 IMAGEPROPCHANGE_REASON_BFORE_IMAGE_CHANGE = 0,
475 IMAGEPROPCHANGE_REASON_AFTER_IMAGE_CHANGE = 1,
477 IMAGEPROPCHANGE_REASON_NEW_IMAGESIZE = 2,
479 IMAGEPROPCHANGE_REASON_TIMEOUT = 3
480};
481
482// ---------------------------------------------------------------------------
491// ---------------------------------------------------------------------------
492enum IMAGEPROPCHANGE_ANSWER
493{
496 IMAGEPROPCHANGE_ANSWER_OK = 0,
500 IMAGEPROPCHANGE_ANSWER_CANCEL = 1
501};
502
503// ---------------------------------------------------------------------------
504// Functions related Device Discovery Interface
505// ---------------------------------------------------------------------------
506
507// ---------------------------------------------------------------------------
512// ---------------------------------------------------------------------------
513enum DODiscoverLevel
514{
516 DO_AT_LEVEL_UNKNOWN = 0,
518 DO_AT_LEVEL_SYSTEM = 1,
520 DO_AT_LEVEL_VIN = 2,
522 DO_AT_LEVEL_TLSYSTEM= 3,
524 DO_AT_LEVEL_TLIFACE = 4,
526 DO_AT_LEVEL_TLDEVICE= 5,
528 DO_AT_LEVEL_TLSTREAM= 6
529};
530
531// ---------------------------------------------------------------------------
535// ---------------------------------------------------------------------------
536enum DODiscoverInfoCommands
537{
540 DO_DISCOVER_INFO_ACCESS_TOKEN = 1000,
543 DO_DISCOVER_INFO_LEVEL,
545 DO_DISCOVER_INFO_INTERFACE_NET_LIST = 2000,
547 DO_DISCOVER_INFO_INTERFACE_NET_MAC,
549 DO_DISCOVER_INFO_INTERFACE_TLTYPE,
551 DO_DISCOVER_INFO_INTERFACE_DISPLAYNAME,
554 DO_DISCOVER_INFO_INTERFACE_DRIVERTYPE,
556 DO_DISCOVER_INFO_INTERFACE_ID,
558 DO_DISCOVER_INFO_DEVICE_TLTYPE = 3000,
560 DO_DISCOVER_INFO_DEVICE_USERNAME,
562 DO_DISCOVER_INFO_DEVICE_SERIALNUMBER,
564 DO_DISCOVER_INFO_DEVICE_NET_MAC,
566 DO_DISCOVER_INFO_DEVICE_NET_IP,
568 DO_DISCOVER_INFO_DEVICE_NET_SUBNETMASK,
570 DO_DISCOVER_INFO_DEVICE_USB_VID,
572 DO_DISCOVER_INFO_DEVICE_USB_PID,
574 DO_DISCOVER_INFO_DEVICE_VENDOR,
576 DO_DISCOVER_INFO_DEVICE_MODEL,
578 DO_DISCOVER_INFO_DEVICE_ID,
581 DO_DISCOVER_INFO_DEVICE_ACCESS_STATUS,
583 DO_DISCOVER_INFO_TRANSPORTLAYER_ID = 4000,
585 DO_DISCOVER_INFO_TRANSPORTLAYER_PATH,
587 DO_DISCOVER_INFO_TRANSPORTLAYER_VENDOR,
589 DO_DISCOVER_INFO_DEVICE_USB_PORT_PATH,
590
591 DO_DISCOVER_INFO_CUSTOM
592};
593
594#ifndef IGNORE_DOXYGEN
595// ---------------------------------------------------------------------------
596// \ingroup DeviceDiscovery
597// \brief Struct used to conveniently set the searchFlags in
598// #DOEntryGetInfo or #DOEntryGetInfoW.
599// ---------------------------------------------------------------------------
600union DODiscoverFlags
601{
603 cvbuint64_t AsUINT;
605 struct Flags
606 {
610 cvbuint64_t Partial : 1;
613 cvbuint64_t Depth : 4;
615 cvbuint64_t Reserved : 3;
618 cvbuint64_t IgnoreVINs : 1;
621 cvbuint64_t IgnoreTLs : 1;
623 cvbuint64_t IgnoreSD : 1;
625 cvbuint64_t IgnoreFD : 1;
627 cvbuint64_t IgnoreAccessStatus : 1;
629 cvbuint64_t IncludeMockTL : 1;
630 }
631
632 AsFlags;
633};
634#endif
635
636enum
637{
638 DO_DISCOVER_FLAG_PARTIAL = 0x1,
642
643 DO_DISCOVER_FLAG_LEVEL_SYSTEM = DO_AT_LEVEL_SYSTEM << 1,
644 DO_DISCOVER_FLAG_LEVEL_VIN = DO_AT_LEVEL_VIN << 1,
645 DO_DISCOVER_FLAG_LEVEL_TL = DO_AT_LEVEL_TLSYSTEM << 1,
646 DO_DISCOVER_FLAG_LEVEL_INTERFACE = DO_AT_LEVEL_TLIFACE << 1,
647 DO_DISCOVER_FLAG_LEVEL_DEVICE = DO_AT_LEVEL_TLDEVICE << 1,
648 DO_DISCOVER_FLAG_LEVEL_STREAM = DO_AT_LEVEL_TLSTREAM << 1,
649
650 DO_DISCOVER_FLAG_IGNORE_VINS = 0x1 << 8,
651 DO_DISCOVER_FLAG_IGNORE_TLS = 0x1 << 9,
652 DO_DISCOVER_FLAG_IGNORE_SD = 0x1 << 10,
653 DO_DISCOVER_FLAG_IGNORE_FD = 0x1 << 11,
654 DO_DISCOVER_FLAG_IGNORE_ACCESS_STATUS = 0x1 << 12,
655 DO_DISCOVER_FLAG_INCLUDE_MOCKTL = 0x1 << 13
656};
657
658typedef void *ATLIST;
659typedef void *DEVOBJ;
660
661typedef cvbbool_t(__stdcall* CVBDRIVER_PROPERTYCHANGE_CB) (IMAGEPROPCHANGE_REASON ReasonForCall, IMAGEPROPCHANGE_ANSWER& Answer, void* pPrivate, cvbval_t Reserved1, cvbval_t Reserved2);
662
663struct CVDFlow
664{
665 size_t Size;
666 void* Buffer;
667};
668
669struct CVDFlowSet
670{
671 cvbuint32_t Version;
672 size_t NumEntries;
673 CVDFlow* Flows;
674};
675
676typedef void* CVDSTREAM;
677
680enum CVDWaitStatus
681{
682 CVDWS_Ok,
683 CVDWS_Canceled,
684 CVDWS_Timeout
685};
686
687typedef cvbres_t(__stdcall* CVDReleaseFlowSetPool)(void* pPrivate);
688
692enum CVDGNDCHeaderInfoCmd
693{
698 CVDGNDCCNTI_VersionMajor = 0,
703 CVDGNDCCNTI_VersionMinor = 1,
707 CVDGNDCCNTI_VersionSubMinor = 2,
708
709 // Reserved field values 3-5 set to zero
710
715 CVDGNDCCNTI_HeaderType = 6,
716
721 CVDGNDCCNTI_FlagsValue = 7,
722
726 CVDGNDCCNTI_HeaderSize = 8,
727
732 CVDGNDCCNTI_ContainerId = 9,
733
750 CVDGNDCCNTI_VariableFields = 10,
751
752 // Reserved values 11-15
753
759 CVDGNDCCNTI_DataSize = 16,
760
765 CVDGNDCCNTI_DataOffset = 17,
766
772 CVDGNDCCNTI_DescriptorSize = 18,
773
777 CVDGNDCCNTI_ComponentCount = 19
778};
779
780enum CVDGNDCComponentInfoCmd
781{
787 CVDGNDCCMPI_ComponentOffset = 0,
788
793 CVDGNDCCMPI_HeaderType = 1,
794
799 CVDGNDCCMPI_FlagsValue = 2,
800
805 CVDGNDCCMPI_HeaderSize = 3,
806
807 // Reserved values 4-9
808
814 CVDGNDCCMPI_GroupId = 10,
815
820 CVDGNDCCMPI_SourceId = 11,
821
826 CVDGNDCCMPI_RegionId = 12,
827
831 CVDGNDCCMPI_RegionOffsetX = 13,
832
836 CVDGNDCCMPI_RegionOffsetY = 14,
837
850 CVDGNDCCMPI_Timestamp = 15,
851
857 CVDGNDCCMPI_TypeId = 16,
858
868 CVDGNDCCMPI_Format = 17,
869
870 // Reserved values 18-20
871
876 CVDGNDCCMPI_PartCount = 21,
877};
878
879enum CVDGNDCPartInfoCmd
880{
885 CVDGNDCPI_PartOffset = 0,
886
892 CVDGNDCPI_HeaderType = 1,
893
897 CVDGNDCPI_FlagsValue = 2,
898
904 CVDGNDCPI_HeaderSize = 3,
905
918 CVDGNDCPI_Format = 4,
919
920 // Reserved values 5-6
921
926 CVDGNDCPI_FlowId = 7,
927
938 CVDGNDCPI_FlowOffset = 8,
939
944 CVDGNDCPI_DataSize = 9,
945
950 CVDGNDCPI_DataOffset = 10,
951
955 CVDGNDC1DPI_Size = 1000,
956
960 CVDGNDC1DPI_Padding = 1001,
961
962 // 1002-1003 reserved
963
968 CVDGNCDC1DPI_InfoTypeSpecific = 1004,
969
973 CVDGNDC2DPI_SizeX = 2000,
974
978 CVDGNDC2DPI_SizeY = 2001,
979
983 CVDGNDC2DPI_PaddingX = 2002,
984
990 CVDGNDC2DPI_PaddingY = 2003,
991
995 CVDGNDCH264PI_SizeX = 3000,
996
1000 CVDGNDCH264PI_SizeY = 3001,
1001
1005 CVDGNDCH264PI_PaddingX = 3002,
1006
1010 CVDGNDCH264PI_PaddingY = 3003,
1011
1012 // 3004-3005 Reserved
1013
1017 CVDGNDCH264PI_ProfileIDC = 3006,
1018
1022 CVDGNDCH264PI_H264Flags = 3007,
1023
1027 CVDGNDCH264PI_LevelIDC = 3008,
1028
1036 CVDGNDCH264PI_SpropInterleavingDepth = 3009,
1037
1044 CVDGNDCH264PI_SpropMaxDonDiff = 3010,
1045
1052 CVDGNDCH264PI_SpropDeintBufReq = 3011,
1053
1061 CVDGNDCH264PI_SpropInitBufTime = 3012
1062};
1063
1067struct CVDGenDCPartConfig
1068{
1069 cvbuint16_t PartType;
1070 cvbuint32_t PfncFormat;
1071 cvbuint16_t FlowId;
1072 cvbuint64_t FlowOffset;
1073 cvbuint64_t DataSize;
1074};
1075
1080{
1081 cvbuint32_t TypeId;
1082 cvbuint32_t PfncFormat;
1083 cvbuint16_t PartCount;
1084 CVDGenDCPartConfig* Parts;
1085};
1086
1092{
1093 cvbuint32_t ComponentCount;
1094 CVDGenDCComponentConfig* Components;
1095};
1096
1100typedef void* CVDGNDCDESCRIPTOR;
1101
1105typedef void* CVDGNDCDESCRIPTORDATA;
1106
1110typedef void* CVDGNDCDESCRIPTORPROVIDER;
@ Size
Area of the blob in pixels.
Definition BlobFilter.cs:54
@ DataType
Datatype as defined in the ENVI-format.
Definition MetaData.cs:37
Bit field view of the available device discovery flags.
Definition CVTypesDriver.h:606
cvbuint64_t Reserved
Currently not in use. Set to zero.
Definition CVTypesDriver.h:615
cvbuint64_t IgnoreSD
If set to true SI socket driver is ignored.
Definition CVTypesDriver.h:623
cvbuint64_t IgnoreFD
If set to true SI filter driver is ignored.
Definition CVTypesDriver.h:625
cvbuint64_t IgnoreTLs
Definition CVTypesDriver.h:621
cvbuint64_t IgnoreAccessStatus
If set to true if also inaccessible devices should be listed.
Definition CVTypesDriver.h:627
cvbuint64_t Partial
Definition CVTypesDriver.h:610
cvbuint64_t Depth
Definition CVTypesDriver.h:613
cvbuint64_t IgnoreVINs
Definition CVTypesDriver.h:618
cvbuint64_t IncludeMockTL
If set to true mockTl is ignored.
Definition CVTypesDriver.h:629