camtypes.h
Go to the documentation of this file.
1 /**************************************************************************
2  *
3  * File: camtypes.h
4  *
5  *
6  * Description: Contains the datatypes, structures and enums that are used the API
7  *
8  * Copyright (C) 2018 CrossControl AB
9  * All rights reserved.
10  * Contact: CrossControl AB (info@crosscontrol.com)
11  *
12 **************************************************************************/
16 #ifndef CAMTYPES_H
17 #define CAMTYPES_H
18 
19 #include <string.h>
20 #include <stdint.h>
21 #include <sstream>
22 #include <vector>
23 #include <string>
24 #include <sstream>
25 
26 namespace CrossControl {
27 
32 enum ServiceID : uint16_t
33 {
34  SOME_IP = 0x433f,
35  SOME_IP_SD = 0xffff
36 };
37 
42 enum MethodID : uint16_t
43 {
44  GET_DATA_SHEET = 0x0001,
45  GET_CAM_STATUS = 0x0002,
46  SET_CAM_EXCLUSIVE = 0x0011,
52  GET_VIDEO_FORMAT = 0x0113,
55  SET_CAM_CONTROL = 0x0201,
56  GET_CAM_CONTROL = 0x0203,
57  SET_CAM_REGISTER = 0x0301,
58  SET_CAM_REGISTERS = 0x0302,
59  GET_CAM_REGISTER = 0x0303,
62 };
63 
68 {
69  E_OK = 0x00,
70  E_NOT_OK = 0x01,
73  E_NOT_READY = 0x04,
74  E_NOT_REACHABLE = 0x05,
75  E_TIMEOUT = 0x06,
80  E_LOCK_EXPIRED = 0x21,
81  E_NOT_LOCKED = 0x22,
85  E_NO_MORE_SPACE = 0x27,
96  E_SOCKET_ERR = 0x40,
98  E_NO_RESPONSE = 0x44
99 };
100 
105 enum MessageType : uint8_t
106 {
107  REQUEST = 0x00,
109  NOTIFICATION = 0x02,
110  REQUEST_ACK = 0x40,
113  RESPONSE = 0x80,
114  ERROR = 0x81,
115  RESPONSE_ACK = 0xc0,
116  ERROR_ACK = 0xc1
117 };
118 
123 enum EntryType : uint8_t
124 {
129  PUBLISH = 5,
132 };
133 
138 enum OptionType : uint8_t
139 {
145 };
146 
151 enum L4Protocol : uint8_t
152 {
153  TCP = 6,
154  UDP = 17
155 };
156 
161 enum ColorSpace : uint8_t
162 {
164  YUV411 = 1,
165  YUV422 = 2,
166  YUV444 = 3,
167  RGB8 = 4,
169  RGB16 = 6,
172  RAW8 = 9,
173  RAW16 = 10,
174  GRAYSCALE12 = 11,
175  RAW12 = 12
176 };
177 
181 enum ControlSupportMode : uint8_t
182 {
190  STAT_RO_A_O = 13,
192 };
193 
197 enum ControlMode : uint8_t
198 {
201  MODE_AUTO = 4,
203 };
204 
208 enum VideoCompression : uint8_t
209 {
211  JPEG = 1,
212  H264 = 2
213 };
214 
218 struct sImagerRegister
219 {
220  uint16_t regAddress;
221  uint16_t regValue;
223 } typedef ImagerRegister;
224 
228 struct sTimeStamp
229 {
230  uint16_t asExtension802;
231  uint32_t seconds;
232  uint32_t nanoSeconds;
234 } typedef TimeStamp;
235 
239 struct sVideoContent
240 {
241  uint8_t roiIndex;
242  uint16_t nBins;
243  uint16_t firstBin;
244  TimeStamp timeStamp;
245  uint32_t numberOfROIValues;
246  uint8_t roiContent[];
248 } typedef VideoContent;
249 
253 struct sCamStatus
254 {
255  uint32_t lockedBy;
256  uint8_t powerStatus;
257  uint16_t temperature;
259 } typedef CamStatus;
260 
264 struct sControlMode
265 {
269 } typedef ControlStatus;
270 
274 struct sSignedCtl
275 {
276  ControlStatus controlStatus;
277  int16_t controlValue;
279 } typedef SignedControl;
280 
284 struct sUnsignedCtl
285 {
286  ControlStatus controlStatus;
287  uint16_t controlValue;
289 } typedef UnsignedControl;
290 
294 struct sCombinedCtl
295 {
296  ControlStatus controlStatus;
297  uint8_t controlValueA;
298  uint8_t controlValueB;
300 } typedef CombinedControl;
301 
305 struct sPixelPosition
306 {
307  uint16_t x;
308  uint16_t y;
310 } typedef PixelPosition;
311 
315 struct sRectangle
316 {
317  PixelPosition p1;
318  PixelPosition p2;
319 } typedef Rectangle;
320 
324 struct sPixelMap
325 {
326  uint32_t numberOfEntries;
327  PixelPosition pixelPositions[];
329 } typedef PixelMap;
330 
334 struct sImageDimension
335 {
336  uint16_t width;
337  uint16_t height;
339 } typedef ImageDimension;
340 
344 struct sImagerCharacteristic
345 {
346  ImageDimension totalSize;
347  ImageDimension usableSize;
349  uint16_t pixelSizeX;
350  uint16_t pixelSizeY;
352  uint8_t shutterType;
353  char sensorIdentifier[32];
355 } typedef ImagerCharacteristic;
356 
361 struct sIntrinsicCamParam
362 {
363  uint8_t distortionModel;
367  double scaleX;
368  double scaleY;
370  double k1;
371  double k2;
372  double k3;
373  double k4;
374  double k5;
375  double k6;
377  double p1;
378  double p2;
380 } typedef IntrinsicCamParam;
381 
388 struct sExtrinsicCamParam
389 {
390  double rotationMat[9];
391  double tVec[3];
393 } typedef ExtrinsicCamParam;
394 
398 struct sDatasheet
399 {
400  char deviceIdenttification[256];
401  uint32_t standardVersion;
402  ImagerCharacteristic imagerCharacteristic;
403  IntrinsicCamParam intrinsicCamParam;
404  ExtrinsicCamParam extrinsicCamParam;
405  PixelMap defectPixelMap;
406  uint32_t numOfTemperatures;
410 } typedef Datasheet;
411 
415 struct sHistogramFormat
416 {
420  uint8_t dataType;
421  uint8_t binSize;
422  uint16_t numberOfBins;
424 } typedef HistogramFormat;
425 
430 struct sVideoFormat
431 {
434  uint16_t transmissionCycle;
436  ImageDimension widthAndHeight;
437  uint32_t frameRate;
438  uint8_t interlaced;
441  uint32_t maxBitrate;
445 } typedef VideoFormat;
446 
452 struct sRegionOfInterest
453 {
454  Rectangle roiSizeAndPosition;
455  VideoFormat videoFormat;
456  HistogramFormat histogramFormat;
458 } typedef RegionOfInterest;
459 
464 struct sSomeIPHeader
465 {
466  uint16_t serviceID;
467  uint16_t methodID;
468  uint32_t messageLength;
469  uint16_t clientID;
470  uint16_t sessionID;
471  uint8_t protocolVersion;
473  uint8_t messageType;
474  uint8_t returnCode;
475 } typedef SomeIPHeader;
476 
481 struct sSDEntryA
482 {
484  uint8_t indexOptions1;
485  uint8_t indexOptions2;
487  uint8_t numOptions1;
488  uint8_t numOptions2;
490  uint16_t serviceID;
491  uint16_t instanceID;
493  uint8_t majorVersion;
494  uint32_t timeToLive;
495  uint32_t minorVersion;
496 } typedef SDEntryA;
497 
502 struct sIPv4Option
503 {
504  std::string ipAddress;
506  uint16_t portNumber;
507 } typedef IPv4Option;
508 
509 
510 } //Namespace CrossControl
511 #endif CAMTYPES_H // CAMTYPES_H
ControlSupportMode supportedModes
Definition: camtypes.h:266
Definition: camtypes.h:111
The sIPv4Option struct Describes the IPv4EndpointOption.
Definition: camtypes.h:502
PixelPosition p2
Definition: camtypes.h:318
uint8_t indexOptions2
Definition: camtypes.h:485
Definition: camtypes.h:61
uint32_t maxBitrate
Definition: camtypes.h:441
uint8_t histogramEnabled
Definition: camtypes.h:417
int16_t controlValue
Definition: camtypes.h:277
uint8_t videoFormatEnabled
Definition: camtypes.h:432
ControlStatus controlStatus
Definition: camtypes.h:276
uint8_t roiIndex
Definition: camtypes.h:241
Definition: camtypes.h:98
uint32_t seconds
Definition: camtypes.h:231
Definition: camtypes.h:171
Definition: camtypes.h:110
uint32_t nanoSeconds
Definition: camtypes.h:232
Definition: camtypes.h:85
Definition: camtypes.h:55
Definition: camtypes.h:73
uint16_t regValue
Definition: camtypes.h:221
uint32_t numberOfROIValues
Definition: camtypes.h:245
Definition: camtypes.h:80
Definition: camtypes.h:54
double p1
Definition: camtypes.h:377
uint8_t interfaceVersion
Definition: camtypes.h:472
Definition: camtypes.h:202
Definition of the image dimension, in pixels.
Definition: camtypes.h:334
double principalPointX
Definition: camtypes.h:365
uint16_t portNumber
Definition: camtypes.h:506
uint8_t powerStatus
Definition: camtypes.h:256
uint32_t lockedBy
Definition: camtypes.h:255
Definition: camtypes.h:44
Definition: camtypes.h:47
std::string ipAddress
Definition: camtypes.h:504
EntryType
The EntryType enum Describes what type of intent the Service Discovery Message has.
Definition: camtypes.h:123
Definition: camtypes.h:130
uint32_t numOfTemperatures
Definition: camtypes.h:406
uint16_t firstBin
Definition: camtypes.h:243
Definition: camtypes.h:70
Definition of a camera control mode register.
Definition: camtypes.h:264
Definition: camtypes.h:86
Defines the histogram format used for a certain region of interest.
Definition: camtypes.h:415
ControlStatus controlStatus
Definition: camtypes.h:296
Defines the region of interest. The ROIs (regions of interest) are used to acquire data from the came...
Definition: camtypes.h:452
uint16_t transmissionCycle
Definition: camtypes.h:434
Definition: camtypes.h:153
uint32_t messageLength
Definition: camtypes.h:468
Defines the parameter of the video format associated to certain region of interest link text ...
Definition: camtypes.h:430
uint16_t instanceID
Definition: camtypes.h:491
uint16_t width
Definition: camtypes.h:336
Definition: camtypes.h:173
MethodID
The MethodID enum Describes the different methods.
Definition: camtypes.h:42
Definition: camtypes.h:165
ControlMode
Is used to set the mode of operation of a certain camera control.
Definition: camtypes.h:197
uint8_t videoCompression
Definition: camtypes.h:442
uint8_t returnCode
Definition: camtypes.h:474
Definition: camtypes.h:88
Definition: camtypes.h:143
Definition: camtypes.h:90
Definition: camtypes.h:186
uint16_t asExtension802
Definition: camtypes.h:230
Rectangle roiSizeAndPosition
Definition: camtypes.h:454
uint8_t messageType
Definition: camtypes.h:473
uint16_t height
Definition: camtypes.h:337
uint16_t temperature
Definition: camtypes.h:257
Definition: camtypes.h:75
Definition: camtypes.h:211
Definition: camtypes.h:26
Definition: camtypes.h:128
Definition: camtypes.h:126
Defines the camera status information.
Definition: camtypes.h:253
double scaleY
Definition: camtypes.h:368
PixelPosition p1
Definition: camtypes.h:317
Definition: camtypes.h:71
The sSDEntryA struct A struct containing the Service Discovery Entry type A.
Definition: camtypes.h:481
Definition: camtypes.h:166
uint32_t numberOfEntries
Definition: camtypes.h:326
Definition: camtypes.h:115
The sSomeIPHeader struct A struct containg the SOME/IP header data.
Definition: camtypes.h:464
Definition: camtypes.h:57
Definition: camtypes.h:59
Definition: camtypes.h:46
Definition: camtypes.h:169
Definition: camtypes.h:131
uint32_t frameRate
Definition: camtypes.h:437
Definition: camtypes.h:109
uint8_t distortionModel
Definition: camtypes.h:363
Definition: camtypes.h:53
Definition: camtypes.h:74
Definition: camtypes.h:78
Definition: camtypes.h:170
EntryType type
Definition: camtypes.h:483
TimeStamp timeStamp
Definition: camtypes.h:244
double k6
Definition: camtypes.h:375
Definition: camtypes.h:114
uint16_t regAddress
Definition: camtypes.h:220
Definition: camtypes.h:35
double k3
Definition: camtypes.h:372
Definition: camtypes.h:168
Definition: camtypes.h:201
Definition: camtypes.h:50
ImagerCharacteristic imagerCharacteristic
Definition: camtypes.h:402
Definition: camtypes.h:125
Definition: camtypes.h:185
Definition: camtypes.h:72
Definition: camtypes.h:56
uint8_t controlValueB
Definition: camtypes.h:298
Definition: camtypes.h:48
Definition: camtypes.h:164
uint32_t standardVersion
Definition: camtypes.h:401
Defines the characteristics of the camera.
Definition: camtypes.h:344
Definition: camtypes.h:45
Definition: camtypes.h:49
Definition: camtypes.h:175
Definition: camtypes.h:200
Definition: camtypes.h:87
MessageType
The MessageType enum Describes what kind of intent a SOME/IP message has.
Definition: camtypes.h:105
Definition: camtypes.h:116
Definition of an address/value pair of imager register.
Definition: camtypes.h:218
Definition: camtypes.h:112
uint8_t usedVideoComponent
Definition: camtypes.h:419
Definition: camtypes.h:199
ColorSpace
The ColorSpace enum. Vendor codes starting at 128 can be used for specific codec profiles.
Definition: camtypes.h:161
Definition: camtypes.h:188
Definition: camtypes.h:172
Definition: camtypes.h:34
uint8_t histogramUpdateCycle
Definition: camtypes.h:418
uint16_t serviceID
Definition: camtypes.h:490
uint16_t methodID
Definition: camtypes.h:467
uint8_t interlaced
Definition: camtypes.h:438
L4Protocol protocol
Definition: camtypes.h:505
IntrinsicCamParam intrinsicCamParam
Definition: camtypes.h:403
Definition: camtypes.h:58
double principalPointY
Definition: camtypes.h:366
Definition: camtypes.h:167
Definition: camtypes.h:189
Definition: camtypes.h:183
Definition: camtypes.h:154
ImageDimension totalSize
Definition: camtypes.h:346
double k2
Definition: camtypes.h:371
uint16_t y
Definition: camtypes.h:308
uint32_t maxLengthOfPersistentEntry
Definition: camtypes.h:408
PixelMap defectPixelMap
Definition: camtypes.h:405
uint8_t numOptions2
Definition: camtypes.h:488
Definition: camtypes.h:84
IPCamStatus
Returncodes and error messages. Can be sent from either the camera or the API.
Definition: camtypes.h:67
Definition: camtypes.h:187
uint16_t clientID
Definition: camtypes.h:469
ColorSpace colorSpace
Definition: camtypes.h:440
uint8_t majorVersion
Definition: camtypes.h:493
uint32_t minorVersion
Definition: camtypes.h:495
uint16_t sessionID
Definition: camtypes.h:470
double scaleX
Definition: camtypes.h:367
The extrinsic camera parameters determine the mapping from 3-D vehicle coordinatesto 3-D camera coord...
Definition: camtypes.h:388
ServiceID
The ServiceID enum Describes wether the message is a SOME/IP or SOME/IP Service Discovery Message...
Definition: camtypes.h:32
uint8_t protocolVersion
Definition: camtypes.h:471
Definition: camtypes.h:91
Definition: camtypes.h:184
uint16_t pixelSizeX
Definition: camtypes.h:349
Definition: camtypes.h:212
uint16_t pixelSizeY
Definition: camtypes.h:350
Definition: camtypes.h:113
VideoFormat videoFormat
Definition: camtypes.h:455
Definition: camtypes.h:174
uint16_t x
Definition: camtypes.h:307
uint8_t controlValueA
Definition: camtypes.h:297
Definition: camtypes.h:82
Definition: camtypes.h:190
ExtrinsicCamParam extrinsicCamParam
Definition: camtypes.h:404
Definition: camtypes.h:97
Definition: camtypes.h:52
uint16_t numberOfBins
Definition: camtypes.h:422
ControlStatus controlStatus
Definition: camtypes.h:286
L4Protocol
The L4Protocol enum Desribes different internet data transmission protocols.
Definition: camtypes.h:151
VideoCompression
Enum that describes the different types of video compressions that can used. Vendor codes starting at...
Definition: camtypes.h:208
uint8_t transmissionMethod
Definition: camtypes.h:433
double k1
Definition: camtypes.h:370
OptionType
The OptionType enum Describes different options sent by Service Discovery messages.
Definition: camtypes.h:138
The intrinsic camera parameters determine the projection from 3-D camera coordinates to 2-D pixel coo...
Definition: camtypes.h:361
Definition: camtypes.h:191
Definition: camtypes.h:210
Definition: camtypes.h:127
ImageDimension widthAndHeight
Definition: camtypes.h:436
uint8_t indexOptions1
Definition: camtypes.h:484
Defines a group of independent pixels. This structure is used, for instance, to report the position o...
Definition: camtypes.h:324
uint8_t dataType
Definition: camtypes.h:420
Definition of a rectangular area using two pixels coordinates.
Definition: camtypes.h:315
Definition of the position of a single pixel relative to a window. (0,0) Is the top left corner...
Definition: camtypes.h:305
uint16_t serviceID
Definition: camtypes.h:466
double p2
Definition: camtypes.h:378
uint32_t timeToLive
Definition: camtypes.h:494
Definition: camtypes.h:83
Definition: camtypes.h:96
Definition of a timestamp.
Definition: camtypes.h:228
uint32_t numRegionsOfInterest
Definition: camtypes.h:407
double k5
Definition: camtypes.h:374
uint8_t binSize
Definition: camtypes.h:421
Definition of a signed camera control.
Definition: camtypes.h:274
Definition of a combined camera control.
Definition: camtypes.h:294
Definition: camtypes.h:92
uint8_t numOptions1
Definition: camtypes.h:487
Definition: camtypes.h:108
HistogramFormat histogramFormat
Definition: camtypes.h:456
Definition: camtypes.h:81
Definition: camtypes.h:129
Definition: camtypes.h:141
uint16_t controlValue
Definition: camtypes.h:287
Definition of a unsigned camera control.
Definition: camtypes.h:284
Definition: camtypes.h:107
uint16_t nBins
Definition: camtypes.h:242
Definition: camtypes.h:144
Definition: camtypes.h:60
Definition: camtypes.h:69
Definition: camtypes.h:163
Definition: camtypes.h:140
ControlSupportMode
Defines the valid values for the supported modes of operation of camera controls. ...
Definition: camtypes.h:181
uint8_t shutterType
Definition: camtypes.h:352
ControlMode controlMode
Definition: camtypes.h:267
Defines the format of a video content notification package.
Definition: camtypes.h:239
ImageDimension usableSize
Definition: camtypes.h:347
Definition: camtypes.h:142
double k4
Definition: camtypes.h:373
Defines the characteristics of the camera.
Definition: camtypes.h:398