eGrabber Reference  24.04.0.8
EGrabberTypes.h
Go to the documentation of this file.
1 /* Copyright Euresys 2015 */
2 
3 #ifndef EGRABBER_TYPES_HEADER_FILE
4 #define EGRABBER_TYPES_HEADER_FILE
5 
10 namespace EURESYS_NAMESPACE {
11 
12 // --------------------------------------------------------------------------
13 // EGrabberDiscovery structures
14 // --------------------------------------------------------------------------
15 
17 {
21 
22  std::string interfaceID;
23  std::string deviceID;
24  std::string streamID;
25 
26  std::string deviceVendorName;
27  std::string deviceModelName;
28  std::string deviceDescription;
29  std::string streamDescription;
30  std::string deviceUserID;
31  std::string deviceSerialNumber;
32  std::string tlType;
33  std::string firmwareStatus;
34  std::string fanStatus;
35  std::string licenseStatus;
36 
39 
41 };
42 
44 {
45  std::vector<EGrabberInfo> grabbers;
46 };
47 
48 // --------------------------------------------------------------------------
49 // Available Memory types to announce GenTL buffers
50 // --------------------------------------------------------------------------
51 
52 struct GenTLMemory;
53 struct UserMemory;
54 struct BusMemory;
55 struct NvidiaRdmaMemory;
56 struct UserMemoryArray;
57 
59 struct GenTLMemory {
62  GenTLMemory(size_t bufferSize = 0, void *userPointer = 0)
63  : bufferSize(bufferSize)
64  , userPointer(userPointer)
65  {}
67  size_t bufferSize;
69  void *userPointer;
70 };
71 
73 struct UserMemory {
77  UserMemory(void *base, size_t size, void *userPointer = 0)
78  : base(base)
79  , size(size)
80  , userPointer(userPointer)
81  {}
83  void *base;
85  size_t size;
87  void *userPointer;
88 };
89 
91 struct BusMemory {
95  BusMemory(uint64_t busAddress, size_t size, void *userPointer = 0)
96  : busAddress(busAddress)
97  , size(size)
98  , userPointer(userPointer)
99  {}
101  uint64_t busAddress;
103  size_t size;
105  void *userPointer;
106 };
107 
113  NvidiaRdmaMemory(void *deviceAddress, size_t size, void *userPointer = 0)
114  : deviceAddress(deviceAddress)
115  , size(size)
116  , userPointer(userPointer)
117  {}
121  size_t size;
123  void *userPointer;
124 };
125 
133  UserMemoryArray(const UserMemory &memory, size_t bufferSize)
134  : memory(memory)
135  , bufferSize(bufferSize)
136  {}
140  size_t bufferSize;
141 };
142 
143 // --------------------------------------------------------------------------
144 // Buffer Index Range returned by announce
145 // --------------------------------------------------------------------------
146 
161  BufferIndexRange(size_t begin = 0, size_t end = 0, bool reverse = false)
162  : begin(begin)
163  , end(end)
164  , reverse(reverse)
165  {}
167  : begin(range.begin)
168  , end(range.end)
169  , reverse(range.reverse)
170  {}
172  begin = range.begin;
173  end = range.end;
174  reverse = range.reverse;
175  return *this;
176  }
180  size_t indexAt(size_t offset) const {
181  size_t ix = begin;
182  ix += (reverse) ? size() - 1 - offset : offset;
183  if (begin <= ix && ix < end) { return ix; }
184  throw client_error("out of range");
185  }
187  size_t size() const {
188  return (begin < end) ? end - begin : 0;
189  }
191  size_t begin;
193  size_t end;
195  bool reverse;
196 };
197 
203 // --------------------------------------------------------------------------
204 // Available (Port) Modules (see getInfo<M, T>, GenApi methods <P>)
205 // --------------------------------------------------------------------------
206 
210 struct SystemModule {
211 };
212 
217 };
218 
222 struct DeviceModule {
223 };
224 
228 struct StreamModule {
229 };
230 
234 struct RemoteModule {
235 };
236 
263 // --------------------------------------------------------------------------
264 // Available Event DATA types (see enableEvent<DATA>)
265 // --------------------------------------------------------------------------
266 
274  void *userPointer;
275  uint64_t timestamp;
276  void *owner;
277  size_t ownerType;
278  size_t bufferId;
279 };
280 
286  uint64_t timestamp;
287  uint32_t numid;
288  uint32_t context1;
289  uint32_t context2;
290  uint32_t context3;
291 };
292 
297 struct CicData {
298  uint64_t timestamp;
299  uint32_t numid;
300  uint32_t context1;
301  uint32_t context2;
302  uint32_t context3;
303 };
304 
310  uint64_t timestamp;
311  uint32_t numid;
312  uint32_t context1;
313  uint32_t context2;
314  uint32_t context3;
315 };
316 
322  uint64_t timestamp;
323  uint32_t numid;
324  uint32_t context1;
325  uint32_t context2;
326  uint32_t context3;
327 };
328 
334  uint64_t timestamp;
335  uint32_t numid;
336  uint32_t context1;
337  uint32_t context2;
338  uint32_t context3;
339 };
340 
346  uint64_t timestamp;
347  uint32_t numid;
348  uint32_t context1;
349  uint32_t context2;
350  uint32_t context3;
351 };
352 
358  uint64_t timestamp;
359  uint32_t eventNs;
360  uint32_t eventId;
361  uint32_t size;
362  unsigned char data[1012];
363 };
364 
371 struct All {
372 };
373 
375 struct Undefined {
376  // An undefined event DATA type
377  // For implementation purpose only, see OneOf
378 };
380 
391 template < typename D1
392  , typename D2 = Undefined
393  , typename D3 = Undefined
394  , typename D4 = Undefined
395  , typename D5 = Undefined
396  , typename D6 = Undefined
397  , typename D7 = Undefined
398  , typename D8 = Undefined >
399 union OneOf {
400  D1 data1;
401  D2 data2;
402  D3 data3;
403  D4 data4;
404  D5 data5;
405  D6 data6;
406  D7 data7;
407  D8 data8;
408 };
409 
410 typedef OneOf<NewBufferData,
412  CicData,
419 
426 typedef OneOfAll Any;
427 
432 enum EventType {
433  AnyType = -1,
434  NewBufferType = (1 << 0),
435  IoToolboxType = (1 << 1),
436  CicType = (1 << 2),
437  DataStreamType = (1 << 3),
438  CxpInterfaceType = (1 << 4),
439  DeviceErrorType = (1 << 5),
440  CxpDeviceType = (1 << 6),
441  RemoteDeviceType = (1 << 7),
442 };
443 
450 // --------------------------------------------------------------------------
451 // Available Callback threading models
452 // --------------------------------------------------------------------------
453 
485 };
486 
503 };
504 
525 };
526 
529 } // EURESYS_NAMESPACE
530 
531 #include "internal/common/EGrabberTypes.h"
532 
533 #endif
Euresys::NvidiaRdmaMemory::NvidiaRdmaMemory
NvidiaRdmaMemory(void *deviceAddress, size_t size, void *userPointer=0)
Definition: EGrabberTypes.h:113
Euresys::IoToolboxData::context2
uint32_t context2
Value of EventNotificationContext2 for this event (latched at the time the event occurred)
Definition: EGrabberTypes.h:289
Euresys::EGrabberInfo::licenseStatus
std::string licenseStatus
Definition: EGrabberTypes.h:35
Euresys::EGrabberInfo::gentl
EGenTL * gentl
Definition: EGrabberTypes.h:40
Euresys::NvidiaRdmaMemory::size
size_t size
size of the buffer allocated by the user on the device
Definition: EGrabberTypes.h:121
Euresys::AnyType
@ AnyType
Definition: EGrabberTypes.h:433
Euresys::UserMemory::UserMemory
UserMemory(void *base, size_t size, void *userPointer=0)
Definition: EGrabberTypes.h:77
Euresys::BusMemory::size
size_t size
size of the buffer allocated by the user
Definition: EGrabberTypes.h:103
Euresys::IoToolboxType
@ IoToolboxType
Definition: EGrabberTypes.h:435
Euresys::EGrabberInfo::firmwareStatus
std::string firmwareStatus
Definition: EGrabberTypes.h:33
Euresys::Any
OneOfAll Any
Special data type to process or cancel any enabled events.
Definition: EGrabberTypes.h:426
Euresys::CicData
Event DATA type corresponding to GenTL::EuresysCustomGenTL::EVENT_CUSTOM_CIC.
Definition: EGrabberTypes.h:297
Euresys::OneOfAll
OneOf< NewBufferData, IoToolboxData, CicData, DataStreamData, CxpInterfaceData, DeviceErrorData, CxpDeviceData, RemoteDeviceData > OneOfAll
Definition: EGrabberTypes.h:418
Euresys::CxpDeviceType
@ CxpDeviceType
Definition: EGrabberTypes.h:440
Euresys::DataStreamData
Event DATA type corresponding to GenTL::EuresysCustomGenTL::EVENT_CUSTOM_DATASTREAM.
Definition: EGrabberTypes.h:309
Euresys::OneOf::data6
D6 data6
Definition: EGrabberTypes.h:405
Euresys::EGrabberInfo::streamID
std::string streamID
Definition: EGrabberTypes.h:24
Euresys::StreamModule
Identifies the EGrabber data stream module.
Definition: EGrabberTypes.h:228
Euresys::InterfaceModule
Identifies the EGrabber interface module.
Definition: EGrabberTypes.h:216
Euresys::DeviceErrorType
@ DeviceErrorType
Definition: EGrabberTypes.h:439
Euresys::BusMemory::busAddress
uint64_t busAddress
bus buffer address on the PCIe bus
Definition: EGrabberTypes.h:101
Euresys::EGrabberInfo::deviceDescription
std::string deviceDescription
Definition: EGrabberTypes.h:28
Euresys::EGrabberInfo::deviceIndex
int deviceIndex
Definition: EGrabberTypes.h:19
Euresys::EGrabberInfo::interfaceIndex
int interfaceIndex
Definition: EGrabberTypes.h:18
Euresys::GenTLMemory::bufferSize
size_t bufferSize
bufferSize when bufferSize = 0, EGrabber evaluates a suitable bufferSize
Definition: EGrabberTypes.h:67
Euresys::NewBufferData::ownerType
size_t ownerType
Internal use only.
Definition: EGrabberTypes.h:277
Euresys::NvidiaRdmaMemory::userPointer
void * userPointer
optional pointer to private data (available in NewBufferData)
Definition: EGrabberTypes.h:123
Euresys::BufferIndexRange
Range of buffer indexes returned by the EGrabber methods announcing buffers.
Definition: EGrabberTypes.h:155
Euresys::EGrabberInfo::deviceSerialNumber
std::string deviceSerialNumber
Definition: EGrabberTypes.h:31
Euresys::BufferIndexRange::operator=
BufferIndexRange & operator=(BufferIndexRange range)
Definition: EGrabberTypes.h:171
Euresys::CallbackSingleThread
This model delivers events to callbacks in their chronological order, sequentially,...
Definition: EGrabberTypes.h:502
Euresys::EGrabberInfo::isDeviceReadOnly
bool isDeviceReadOnly
Definition: EGrabberTypes.h:38
Euresys::OneOf::data7
D7 data7
Definition: EGrabberTypes.h:406
Euresys::NvidiaRdmaMemory::deviceAddress
void * deviceAddress
device buffer address
Definition: EGrabberTypes.h:119
Euresys::OneOf::data5
D5 data5
Definition: EGrabberTypes.h:404
Euresys::NvidiaRdmaMemory
NVIDIA Device memory to be translated to bus addressable memory.
Definition: EGrabberTypes.h:109
Euresys::NewBufferData::bufferId
size_t bufferId
Internal use only.
Definition: EGrabberTypes.h:278
Euresys::UserMemoryArray::UserMemoryArray
UserMemoryArray(const UserMemory &memory, size_t bufferSize)
Definition: EGrabberTypes.h:133
Euresys::RemoteDeviceData::eventId
uint32_t eventId
Unique identifier of the event (EventID for GenICam events)
Definition: EGrabberTypes.h:360
Euresys::BufferIndexRange::indexAt
size_t indexAt(size_t offset) const
Convert a 0-based index in the range to an absolute buffer index.
Definition: EGrabberTypes.h:180
Euresys::OneOf
Special data type that groups a set of events, this is useful to process one event from a list of ena...
Definition: EGrabberTypes.h:399
Euresys::SystemModule
Identifies the EGrabber system module.
Definition: EGrabberTypes.h:210
Euresys::UserMemory::userPointer
void * userPointer
optional pointer to private data (available in NewBufferData)
Definition: EGrabberTypes.h:87
Euresys::UserMemory::size
size_t size
size of the buffer allocated by the user
Definition: EGrabberTypes.h:85
GenTL::BUFFER_HANDLE
void * BUFFER_HANDLE
BufferHandle, obtained through the DSAnnounceBuffer function.
Definition: GenTL_v1_5.h:225
Euresys::BufferIndexRange::reverse
bool reverse
the buffers have been queued in the reverse order
Definition: EGrabberTypes.h:195
Euresys::NewBufferData::dsh
gc::DS_HANDLE dsh
GenTL::DS_HANDLE handle associated to buffer.
Definition: EGrabberTypes.h:272
Euresys::IoToolboxData::context1
uint32_t context1
Value of EventNotificationContext1 for this event (latched at the time the event occurred)
Definition: EGrabberTypes.h:288
Euresys::OneOf::data2
D2 data2
Definition: EGrabberTypes.h:401
Euresys::CallbackOnDemand
This is the simplest model which gives complete control over when and how callbacks are invoked.
Definition: EGrabberTypes.h:484
Euresys::CxpInterfaceType
@ CxpInterfaceType
Definition: EGrabberTypes.h:438
Euresys::RemoteDeviceType
@ RemoteDeviceType
Definition: EGrabberTypes.h:441
Euresys::EGrabberInfo::deviceID
std::string deviceID
Definition: EGrabberTypes.h:23
Euresys::EventType
EventType
Special data type to identify the event(s) a thread is processing, this is useful when using thread c...
Definition: EGrabberTypes.h:432
Euresys::DataStreamType
@ DataStreamType
Definition: EGrabberTypes.h:437
Euresys::UserMemoryArray::bufferSize
size_t bufferSize
size of buffers
Definition: EGrabberTypes.h:140
Euresys::BufferIndexRange::BufferIndexRange
BufferIndexRange(size_t begin=0, size_t end=0, bool reverse=false)
Create a range of buffer indexes.
Definition: EGrabberTypes.h:161
Euresys::EGrabberInfo::interfaceID
std::string interfaceID
Definition: EGrabberTypes.h:22
Euresys::UserMemory::base
void * base
address of buffer allocated by the user
Definition: EGrabberTypes.h:83
Euresys::UserMemory
Memory allocated by the user.
Definition: EGrabberTypes.h:73
Euresys::BufferIndexRange::size
size_t size() const
Return the size of the range.
Definition: EGrabberTypes.h:187
Euresys::client_error
something wrong with the parameters provided by the caller
Definition: EGenTLErrors.h:75
Euresys::EGrabberInfo::streamIndex
int streamIndex
Definition: EGrabberTypes.h:20
Euresys::EGrabberInfo::tlType
std::string tlType
Definition: EGrabberTypes.h:32
Euresys::BusMemory::BusMemory
BusMemory(uint64_t busAddress, size_t size, void *userPointer=0)
Definition: EGrabberTypes.h:95
Euresys::CicType
@ CicType
Definition: EGrabberTypes.h:436
Euresys::UserMemoryArray
UserMemory split into an array of contiguous buffers.
Definition: EGrabberTypes.h:127
Euresys::GenTLMemory::GenTLMemory
GenTLMemory(size_t bufferSize=0, void *userPointer=0)
Definition: EGrabberTypes.h:62
Euresys::RemoteDeviceData
Event DATA type corresponding to GenTL::EVENT_REMOTE_DEVICE.
Definition: EGrabberTypes.h:357
GenTL::DS_HANDLE
void * DS_HANDLE
Handle to an image stream object, obtained through DevOpenDataStream.
Definition: GenTL_v1_5.h:219
Euresys::EGrabberInfo::streamDescription
std::string streamDescription
Definition: EGrabberTypes.h:29
Euresys::NewBufferType
@ NewBufferType
Definition: EGrabberTypes.h:434
Euresys::GenTLMemory
Memory allocated by the GenTL producer.
Definition: EGrabberTypes.h:59
Euresys::GenTLMemory::userPointer
void * userPointer
optional pointer to private data (available in NewBufferData)
Definition: EGrabberTypes.h:69
Euresys::OneOf::data1
D1 data1
Definition: EGrabberTypes.h:400
Euresys::RemoteModule
Identifies the EGrabber remote device port.
Definition: EGrabberTypes.h:234
Euresys::DeviceModule
Identifies the EGrabber device module.
Definition: EGrabberTypes.h:222
Euresys::OneOf::data4
D4 data4
Definition: EGrabberTypes.h:403
Euresys::NewBufferData::owner
void * owner
Internal use only.
Definition: EGrabberTypes.h:276
Euresys::EGenTL
GenTL library functions
Definition: EGenTL.h:47
Euresys::NewBufferData::timestamp
uint64_t timestamp
Timestamp associated to new buffer event.
Definition: EGrabberTypes.h:275
Euresys::DeviceErrorData
Event DATA type corresponding to GenTL::EuresysCustomGenTL::EVENT_CUSTOM_DEVICE_ERROR.
Definition: EGrabberTypes.h:333
Euresys::BufferIndexRange::end
size_t end
index of the end of the range, the end is not included in the range
Definition: EGrabberTypes.h:193
Euresys::CxpInterfaceData
Event DATA type corresponding to GenTL::EuresysCustomGenTL::EVENT_CUSTOM_CXP_INTERFACE.
Definition: EGrabberTypes.h:321
Euresys::OneOf::data3
D3 data3
Definition: EGrabberTypes.h:402
Euresys::IoToolboxData::numid
uint32_t numid
GenTL::EuresysCustomGenTL::EVENT_DATA_NUMID_CUSTOM custom Event data identifier.
Definition: EGrabberTypes.h:287
Euresys::CxpDeviceData
Event DATA type corresponding to GenTL::EuresysCustomGenTL::EVENT_CUSTOM_CXP_DEVICE.
Definition: EGrabberTypes.h:345
Euresys::EGrabberInfo::deviceUserID
std::string deviceUserID
Definition: EGrabberTypes.h:30
Euresys::All
Special data type to enable, disable or flush all available Event DATA types.
Definition: EGrabberTypes.h:371
Euresys::NewBufferData::bh
gc::BUFFER_HANDLE bh
GenTL::BUFFER_HANDLE handle.
Definition: EGrabberTypes.h:273
Euresys::RemoteDeviceData::size
uint32_t size
Size of addressable data.
Definition: EGrabberTypes.h:361
Euresys::EGrabberInfo::deviceModelName
std::string deviceModelName
Definition: EGrabberTypes.h:27
Euresys::EGrabberInfo::deviceVendorName
std::string deviceVendorName
Definition: EGrabberTypes.h:26
Euresys::EGrabberInfo::fanStatus
std::string fanStatus
Definition: EGrabberTypes.h:34
Euresys::CallbackMultiThread
This model delivers events to callbacks in separate threads (one thread per event DATA type).
Definition: EGrabberTypes.h:524
Euresys::BusMemory::userPointer
void * userPointer
optional pointer to private data (available in NewBufferData)
Definition: EGrabberTypes.h:105
Euresys::IoToolboxData
Event DATA type corresponding to GenTL::EuresysCustomGenTL::EVENT_CUSTOM_IO_TOOLBOX.
Definition: EGrabberTypes.h:285
Euresys::BusMemory
Bus addressable memory.
Definition: EGrabberTypes.h:91
Euresys::EGrabberInfo
Definition: EGrabberTypes.h:17
Euresys::BufferIndexRange::BufferIndexRange
BufferIndexRange(const BufferIndexRange &range)
Definition: EGrabberTypes.h:166
Euresys::NewBufferData::userPointer
void * userPointer
Optional user pointer (if provided when announced)
Definition: EGrabberTypes.h:274
Euresys::EGrabberCameraInfo
Definition: EGrabberTypes.h:44
Euresys::UserMemoryArray::memory
UserMemory memory
memory allocated by the user to split into an array of contiguous buffers
Definition: EGrabberTypes.h:138
Euresys::IoToolboxData::context3
uint32_t context3
Value of EventNotificationContext3 for this event (latched at the time the event occurred)
Definition: EGrabberTypes.h:290
Euresys::BufferIndexRange::begin
size_t begin
index of the first buffer of the range
Definition: EGrabberTypes.h:191
Euresys::NewBufferData
Event DATA type corresponding to GenTL::EVENT_NEW_BUFFER.
Definition: EGrabberTypes.h:271
Euresys::EGrabberInfo::isRemoteAvailable
bool isRemoteAvailable
Definition: EGrabberTypes.h:37
Euresys::OneOf::data8
D8 data8
Definition: EGrabberTypes.h:407
Euresys::EGrabberCameraInfo::grabbers
std::vector< EGrabberInfo > grabbers
Definition: EGrabberTypes.h:45
Euresys::RemoteDeviceData::eventNs
uint32_t eventNs
Event namespace (cf.
Definition: EGrabberTypes.h:359