camera_prosilica_gige
CamGigEProsilicaLookUp.h
Go to the documentation of this file.
1 /*
2  * File: CamGigEProsilicaLookUp.h
3  * Author: aduda
4  *
5  * Created on February 24, 2010, 11:32 AM
6  */
7 
8 #ifndef _CAMGIGEPROSILICALOOKUP_H
9 #define _CAMGIGEPROSILICALOOKUP_H
10 
11 #include "camera_interface/CamTypes.h"
12 #include <map>
13 #include "PvApi.h"
14 
15 namespace camera
16 {
17  inline std::string tPvErrToString(tPvErr err)
18  {
19  switch (err)
20  {
21  case ePvErrSuccess:
22  return "No error";
23  case ePvErrCameraFault:
24  return "Unexpected camera fault";
25  case ePvErrInternalFault:
26  return "Unexpected fault in PvApi or driver";
27  case ePvErrBadHandle:
28  return "Camera handle is invalid";
29  case ePvErrBadParameter:
30  return "Bad parameter to API call";
31  case ePvErrBadSequence:
32  return "Sequence of API calls is incorrect";
33  case ePvErrNotFound:
34  return "Camera or attribute not found";
35  case ePvErrAccessDenied:
36  return "Camera cannot be opened in the specified mode";
37  case ePvErrUnplugged:
38  return "Camera was unplugged";
39  case ePvErrInvalidSetup:
40  return "Setup is invalid (an attribute is invalid)";
41  case ePvErrResources:
42  return "System/network resources or memory not available";
43  case ePvErrBandwidth:
44  return "1394 bandwidth not available";
45  case ePvErrQueueFull:
46  return "Too many frames on queue";
47  case ePvErrBufferTooSmall:
48  return "Frame buffer is too small";
49  case ePvErrCancelled:
50  return "Frame cancelled by user";
51  case ePvErrDataLost:
52  return "The data for the frame was lost";
53  case ePvErrDataMissing:
54  return "Some data in the frame is missing";
55  case ePvErrTimeout:
56  return "Timeout during wait";
57  case ePvErrOutOfRange:
58  return "Attribute value is out of the expected range";
59  case ePvErrWrongType:
60  return "Attribute is not this type (wrong access function) ";
61  case ePvErrForbidden:
62  return "Attribute write forbidden at this time";
63  case ePvErrUnavailable:
64  return "Attribute is not available at this time";
65  case ePvErrFirewall:
66  return "A firewall is blocking the traffic (Windows only)";
67  default:
68  return "unkown camera error";
69  }
70  return "unkown camera error";
71  }
72 
73  inline static void attribToStr(enum_attrib::CamAttrib attrib,
74  std::string &string1,
75  std::string &string2)
76  {
77  switch(attrib)
78  {
79  case enum_attrib::FrameStartTriggerModeToFreerun:
80  string1 = "FrameStartTriggerMode";
81  string2 = "Freerun";
82  break;
83  case enum_attrib::FrameStartTriggerModeToSyncIn1:
84  string1 = "FrameStartTriggerMode";
85  string2 = "SyncIn1";
86  break;
87  case enum_attrib::FrameStartTriggerModeToSyncIn2:
88  string1 = "FrameStartTriggerMode";
89  string2 = "SyncIn2";
90  break;
91  case enum_attrib::FrameStartTriggerModeToSyncIn3:
92  string1 = "FrameStartTriggerMode";
93  string2 = "SyncIn3";
94  break;
95  case enum_attrib::FrameStartTriggerModeToSyncIn4:
96  string1 = "FrameStartTriggerMode";
97  string2 = "SyncIn4";
98  break;
99  case enum_attrib::FrameStartTriggerModeToFixedRate:
100  string1 = "FrameStartTriggerMode";
101  string2 = "FixedRate";
102  break;
103  case enum_attrib::FrameStartTriggerModeToSoftware:
104  string1 = "FrameStartTriggerMode";
105  string2 = "Software";
106  break;
107  case enum_attrib::ExposureModeToManual:
108  string1 = "ExposureMode";
109  string2 = "Manual";
110  break;
111  case enum_attrib::ExposureModeToAuto:
112  string1 = "ExposureMode";
113  string2 = "Auto";
114  break;
115  case enum_attrib::ExposureModeToAutoOnce:
116  string1 = "ExposureMode";
117  string2 = "AutoOnce";
118  break;
119  case enum_attrib::ExposureModeToExternal:
120  string1 = "ExposureMode";
121  string2 = "External";
122  break;
123  case enum_attrib::GainModeToManual:
124  string1 = "GainMode";
125  string2 = "Manual";
126  break;
127  case enum_attrib::GainModeToAuto:
128  string1 = "GainMode";
129  string2 = "Auto";
130  break;
131  case enum_attrib::WhitebalModeToAuto:
132  string1 = "WhitebalMode";
133  string2 = "Auto";
134  break;
135  case enum_attrib::WhitebalModeToManual:
136  string1 = "WhitebalMode";
137  string2 = "Manual";
138  break;
139  case enum_attrib::WhitebalModeToAutoOnce:
140  string1 = "WhitebalMode";
141  string2 = "AutoOnce";
142  break;
143  case enum_attrib::ConfigFileIndexTo1:
144  string1 = "ConfigFileIndex";
145  string2 = "1";
146  break;
147  case enum_attrib::ConfigFileIndexTo2:
148  string1 = "ConfigFileIndex";
149  string2 = "2";
150  break;
151  case enum_attrib::ConfigFileIndexTo3:
152  string1 = "ConfigFileIndex";
153  string2 = "3";
154  break;
155  case enum_attrib::ConfigFileIndexTo4:
156  string1 = "ConfigFileIndex";
157  string2 = "4";
158  break;
159  case enum_attrib::ConfigFileIndexToFactory:
160  string1 = "ConfigFileIndex";
161  string2 = "Factory";
162  break;
163  case enum_attrib::FrameStartTriggerEventToEdgeFalling:
164  string1 = "FrameStartTriggerEvent";
165  string2 = "EdgeFalling";
166  break;
167  case enum_attrib::FrameStartTriggerEventToEdgeAny:
168  string1 = "FrameStartTriggerEvent";
169  string2 = "EdgeAny";
170  break;
171  case enum_attrib::FrameStartTriggerEventToEdgeRising:
172  string1 = "FrameStartTriggerEvent";
173  string2 = "EdgeRising";
174  break;
175  case enum_attrib::FrameStartTriggerEventToLevelHigh:
176  string1 = "FrameStartTriggerEvent";
177  string2 = "LevelHigh";
178  break;
179  case enum_attrib::FrameStartTriggerEventToLevelLow:
180  string1 = "FrameStartTriggerEvent";
181  string2 = "LevelLow";
182  break;
183  case enum_attrib::SyncOut1ModeToGPO:
184  string1 = "SyncOut1Mode";
185  string2 = "GPO";
186  break;
187  case enum_attrib::SyncOut1ModeToAcquisitionTriggerReady:
188  string1 = "SyncOut1Mode";
189  string2 = "AcquisitionTriggerReady";
190  break;
191  case enum_attrib::SyncOut1ModeToFrameTriggerReady:
192  string1 = "SyncOut1Mode";
193  string2 = "FrameTriggerReady";
194  break;
195  case enum_attrib::SyncOut1ModeToFrameTrigger:
196  string1 = "SyncOut1Mode";
197  string2 = "FrameTrigger";
198  break;
199  case enum_attrib::SyncOut1ModeToExposing:
200  string1 = "SyncOut1Mode";
201  string2 = "Exposing";
202  break;
203  case enum_attrib::SyncOut1ModeToFrameReadout:
204  string1 = "SyncOut1Mode";
205  string2 = "FrameReadout";
206  break;
207  case enum_attrib::SyncOut1ModeToImaging:
208  string1 = "SyncOut1Mode";
209  string2 = "Imaging";
210  break;
211  case enum_attrib::SyncOut1ModeToAcquiring:
212  string1 = "SyncOut1Mode";
213  string2 = "Acquiring";
214  break;
215  case enum_attrib::SyncOut1ModeToSyncIn1:
216  string1 = "SyncOut1Mode";
217  string2 = "SyncIn1";
218  break;
219  case enum_attrib::SyncOut1ModeToSyncIn2:
220  string1 = "SyncOut1Mode";
221  string2 = "SyncIn2";
222  break;
223  case enum_attrib::SyncOut1ModeToStrobe1:
224  string1 = "SyncOut1Mode";
225  string2 = "Strobe1";
226  break;
227  case enum_attrib::SyncOut1ModeToStrobe2:
228  string1 = "SyncOut1Mode";
229  string2 = "Strobe2";
230  break;
231  case enum_attrib::SyncOut2ModeToGPO:
232  string1 = "SyncOut2Mode";
233  string2 = "GPO";
234  break;
235  case enum_attrib::SyncOut2ModeToAcquisitionTriggerReady:
236  string1 = "SyncOut2Mode";
237  string2 = "AcquisitionTriggerReady";
238  break;
239  case enum_attrib::SyncOut2ModeToFrameTriggerReady:
240  string1 = "SyncOut2Mode";
241  string2 = "FrameTriggerReady";
242  break;
243  case enum_attrib::SyncOut2ModeToFrameTrigger:
244  string1 = "SyncOut2Mode";
245  string2 = "FrameTrigger";
246  break;
247  case enum_attrib::SyncOut2ModeToExposing:
248  string1 = "SyncOut2Mode";
249  string2 = "Exposing";
250  break;
251  case enum_attrib::SyncOut2ModeToFrameReadout:
252  string1 = "SyncOut2Mode";
253  string2 = "FrameReadout";
254  break;
255  case enum_attrib::SyncOut2ModeToImaging:
256  string1 = "SyncOut2Mode";
257  string2 = "Imaging";
258  break;
259  case enum_attrib::SyncOut2ModeToAcquiring:
260  string1 = "SyncOut2Mode";
261  string2 = "Acquiring";
262  break;
263  case enum_attrib::SyncOut2ModeToSyncIn1:
264  string1 = "SyncOut2Mode";
265  string2 = "SyncIn1";
266  break;
267  case enum_attrib::SyncOut2ModeToSyncIn2:
268  string1 = "SyncOut2Mode";
269  string2 = "SyncIn2";
270  break;
271  case enum_attrib::SyncOut2ModeToStrobe1:
272  string1 = "SyncOut2Mode";
273  string2 = "Strobe1";
274  break;
275  case enum_attrib::SyncOut2ModeToStrobe2:
276  string1 = "SyncOut2Mode";
277  string2 = "Strobe2";
278  break;
279  case enum_attrib::SyncOut1InvertToOn:
280  string1 = "SyncOut1Invert";
281  string2 = "On";
282  break;
283  case enum_attrib::SyncOut1InvertToOff:
284  string1 = "SyncOut1Invert";
285  string2 = "Off";
286  break;
287  case enum_attrib::SyncOut2InvertToOn:
288  string1 = "SyncOut2Invert";
289  string2 = "On";
290  break;
291  case enum_attrib::SyncOut2InvertToOff:
292  string1 = "SyncOut2Invert";
293  string2 = "Off";
294  break;
295  case enum_attrib::ExposureAutoAlgToMean:
296  string1 = "ExposureAutoAlg";
297  string2 = "Mean";
298  break;
299  case enum_attrib::ExposureAutoAlgToFitRange:
300  string1 = "ExposureAutoAlg";
301  string2 = "FitRange";
302  break;
303  default:
304  {
305  std::stringstream strstr;
306  strstr << "Enum Attribute "<< attrib << " is not find in CamGigEProsilicaLookUp.h";
307  throw std::runtime_error(strstr.str());
308  }
309  }
310  }
311 
312  inline static void attribToStr(str_attrib::CamAttrib attrib,std::string &string)
313  {
314  switch(attrib)
315  {
316  case str_attrib::DeviceEthAddress:
317  string = "DeviceEthAddress";
318  break;
319  case str_attrib::DeviceIPAddress:
320  string = "DeviceIPAddress";
321  break;
322  case str_attrib::HostIPAddress:
323  string = "HostIPAddress";
324  break;
325  case str_attrib::MulticastIPAddress:
326  string = "MulticastIPAddress";
327  break;
328  case str_attrib::CameraName:
329  string = "CameraName";
330  break;
331  case str_attrib::ModelName:
332  string = "ModelName";
333  break;
334  case str_attrib::SerialNumber:
335  string = "SerialNumber";
336  break;
337  case str_attrib::PartRevision:
338  string = "PartRevision";
339  break;
340  case str_attrib::StatFilterVersion:
341  string = "StatFilterVersion";
342  break;
343  default:
344  {
345  std::stringstream strstr;
346  strstr << "String Attribute "<< attrib << " is not supported by the "
347  << "camera. Call isAttribAvail first!";
348  throw std::runtime_error(strstr.str());
349  }
350  }
351  }
352 
353  inline static void attribToStr(double_attrib::CamAttrib attrib,std::string &string)
354  {
355  switch(attrib)
356  {
357  case double_attrib::FrameRate:
358  string = "FrameRate";
359  break;
360  case double_attrib::StatFrameRate:
361  string = "StatFrameRate";
362  break;
363  default:
364  {
365  std::stringstream strstr;
366  strstr << "Double Attribute "<< attrib << " is not supported by the "
367  << "camera. Call isAttribAvail first!";
368  throw std::runtime_error(strstr.str());
369  }
370  }
371  }
372 
373  inline static void attribToStr(int_attrib::CamAttrib attrib,std::string &string)
374  {
375  switch(attrib)
376  {
377  case int_attrib::BinningX:
378  string = "BinningX";
379  break;
380  case int_attrib::BinningY:
381  string = "BinningY";
382  break;
383  case int_attrib::RegionX:
384  string = "RegionX";
385  break;
386  case int_attrib::RegionY:
387  string = "RegionY";
388  break;
389  case int_attrib::TotalBytesPerFrame:
390  string = "TotalBytesPerFrame";
391  break;
392  case int_attrib::AcquisitionFrameCount:
393  string = "AcquisitionFrameCount";
394  break;
395  case int_attrib::RecorderPreEventCount:
396  string = "RecorderPreEventCount";
397  break;
398  case int_attrib::FrameStartTriggerDelay:
399  string = "FrameStartTriggerDelay";
400  break;
401  case int_attrib::ExposureValue:
402  string = "ExposureValue";
403  break;
404  case int_attrib::ExposureAutoMax:
405  string = "ExposureAutoMax";
406  break;
407  case int_attrib::ExposureAutoMin:
408  string = "ExposureAutoMin";
409  break;
410  case int_attrib::ExposureAutoOutliers:
411  string = "ExposureAutoOutliers";
412  break;
413  case int_attrib::ExposureAutoRate:
414  string = "ExposureAutoRate";
415  break;
416  case int_attrib::ExposureAutoTarget:
417  string = "ExposureAutoTarget";
418  break;
419  case int_attrib::ExposureAutoAdjustTol:
420  string = "ExposureAutoAdjustTol";
421  break;
422  case int_attrib::GainValue:
423  string = "GainValue";
424  break;
425  case int_attrib::GainAutoAdjustDelay:
426  string = "GainAutoAdjustDelay";
427  break;
428  case int_attrib::GainAutoAdjustTol:
429  string = "GainAutoAdjustTol";
430  break;
431  case int_attrib::GainAutoMax:
432  string = "GainAutoMax";
433  break;
434  case int_attrib::GainAutoMin:
435  string = "GainAutoMin";
436  break;
437  case int_attrib::GainAutoOutliers:
438  string = "GainAutoOutliers";
439  break;
440  case int_attrib::GainAutoRate:
441  string = "GainAutoRate";
442  break;
443  case int_attrib::GainAutoTarget:
444  string = "ExposureAutoAdjustTol";
445  break;
446  case int_attrib::WhitebalValueRed:
447  string = "WhitebalValueRed";
448  break;
449  case int_attrib::WhitebalValueBlue:
450  string = "WhitebalValueBlue";
451  break;
452  case int_attrib::WhitebalAutoAdjustDelay:
453  string = "WhitebalAutoAdjustDelay";
454  break;
455  case int_attrib::WhitebalAutoAdjustTol:
456  string = "WhitebalAutoAdjustTol";
457  break;
458  case int_attrib::WhitebalAutoAlg:
459  string = "WhitebalAutoAlg";
460  break;
461  case int_attrib::WhitebalAutoRate:
462  string = "WhitebalAutoRate";
463  break;
464  case int_attrib::OffsetValue:
465  string = "OffsetValue";
466  break;
467  case int_attrib::DSPSubregionLeft:
468  string = "DSPSubregionLeft";
469  break;
470  case int_attrib::DSPSubregionTop:
471  string = "DSPSubregionTop";
472  break;
473  case int_attrib::DSPSubregionRight:
474  string = "DSPSubregionRight";
475  break;
476  case int_attrib::DSPSubregionBottom:
477  string = "DSPSubregionBottom";
478  break;
479  case int_attrib::IrisAutoTarget:
480  string = "IrisAutoTarget";
481  break;
482  case int_attrib::IrisVideoLevelMin:
483  string = "IrisVideoLevelMin";
484  break;
485  case int_attrib::IrisVideoLevelMax:
486  string = "IrisVideoLevelMax";
487  break;
488  case int_attrib::IrisVideoLevel:
489  string = "IrisVideoLevel";
490  break;
491  case int_attrib::SyncInLevels:
492  string = "SyncInLevels";
493  break;
494  case int_attrib::SyncOutGpoLevels:
495  string = "SyncOutGpoLevels";
496  break;
497  case int_attrib::Strobe1Delay:
498  string = "Strobe1Delay";
499  break;
500  case int_attrib::Strobe1Duration:
501  string = "Strobe1Duration";
502  break;
503  case int_attrib::StreamBytesPerSecond:
504  string = "StreamBytesPerSecond";
505  break;
506  case int_attrib::GvcpRetries:
507  string = "GvcpRetries";
508  break;
509  case int_attrib::HeartbeatTimeout:
510  string = "HeartbeatTimeout";
511  break;
512  case int_attrib::HeartbeatInterval:
513  string = "HeartbeatInterval";
514  break;
515  case int_attrib::StreamHoldCapacity:
516  string = "StreamHoldCapacity";
517  break;
518  case int_attrib::UniqueId:
519  string = "UniqueId";
520  break;
521  case int_attrib::PartNumber:
522  string = "PartNumber";
523  break;
524  case int_attrib::PartVersion:
525  string = "PartVersion";
526  break;
527  case int_attrib::FirmwareVerMajor:
528  string = "FirmwareVerMajor";
529  break;
530  case int_attrib::FirmwareVerMinor:
531  string = "FirmwareVerMinor";
532  break;
533  case int_attrib::FirmwareVerBuild:
534  string = "FirmwareVerBuild";
535  break;
536  case int_attrib::SensorBits:
537  string = "SensorBits";
538  break;
539  case int_attrib::SensorWidth:
540  string = "SensorWidth";
541  break;
542  case int_attrib::SensorHeight:
543  string = "SensorHeight";
544  break;
545  case int_attrib::TimeStampFrequency:
546  string = "TimeStampFrequency";
547  break;
548  case int_attrib::StatFramesCompleted:
549  string = "StatFramesCompleted";
550  break;
551  case int_attrib::StatFramesDropped:
552  string = "StatFramesDropped";
553  break;
554  case int_attrib::StatPacketsErroneous:
555  string = "StatPacketsErroneous";
556  break;
557  case int_attrib::StatPacketsMissed:
558  string = "StatPacketsMissed";
559  break;
560  case int_attrib::StatPacketsReceived:
561  string = "StatPacketsReceived";
562  break;
563  case int_attrib::StatPacketsRequested:
564  string = "StatPacketsRequested";
565  break;
566  case int_attrib::StatPacketsResent:
567  string = "StatPacketsResent";
568  break;
569  //this is not supported because it can not be set after capturing has started
570  //use the parameter of the camera constructor to set max_package_size
571  // case int_attrib::PacketSize:
572  // string = "PacketSize";
573  // break;
574  default:
575  {
576  std::stringstream strstr;
577  strstr << "Int Attribute "<< attrib << " is not supported by the "
578  << "camera. Call isAttribAvail first!";
579  throw std::runtime_error(strstr.str());
580  }
581  }
582  }
583 
584  inline static void convertStrToPixelFormat(const std::string &str,
585  base::samples::frame::frame_mode_t &mode,
586  uint8_t &depth)
587  {
588  if(str == "Mono8")
589  {
590  mode = base::samples::frame::MODE_GRAYSCALE;
591  depth = 1;
592  }
593  else if(str == "Mono16")
594  {
595  mode = base::samples::frame::MODE_GRAYSCALE;
596  depth = 2;
597  }
598  else if(str == "Rgb24")
599  {
600  mode = base::samples::frame::MODE_RGB;
601  depth = 3;
602  }
603  else if(str == "Rgb48")
604  {
605  mode = base::samples::frame::MODE_RGB;
606  depth = 6;
607  }
608  else if(str == "Bayer8")
609  {
610  mode = base::samples::frame::MODE_BAYER;
611  depth = 1;
612  }
613  else if(str == "Bayer16")
614  {
615  mode = base::samples::frame::MODE_BAYER;
616  depth = 2;
617  }
618  else
619  {
620  throw std::runtime_error("Can not convert string to PixelFormat! "
621  "Add the actual camera frame format to the CamInterface");
622  }
623 
624  }
625 
626  inline static std::string convertPixelFormatToStr(const base::samples::frame::frame_mode_t mode,
627  const uint8_t depth)
628  {
629  switch (mode)
630  {
631  case base::samples::frame::MODE_GRAYSCALE:
632  switch(depth)
633  {
634  case 1:
635  return "Mono8";
636  break;
637  case 2:
638  return "Mono16";
639  break;
640  default:
641  throw std::runtime_error("Choosen color depth value is "
642  "not supported by the camera!");
643  }
644  break;
645  case base::samples::frame::MODE_RGB:
646  switch(depth)
647  {
648  case 3:
649  return "Rgb24";
650  break;
651  case 6:
652  return "Rgb48";
653  break;
654  default:
655  throw std::runtime_error("Choosen color depth value is "
656  "not supported by the camera!");
657  }
658  break;
659  case base::samples::frame::MODE_BAYER:
660  case base::samples::frame::MODE_BAYER_GRBG:
661  case base::samples::frame::MODE_BAYER_GBRG:
662  case base::samples::frame::MODE_BAYER_RGGB:
663  case base::samples::frame::MODE_BAYER_BGGR:
664  switch(depth)
665  {
666  case 1:
667  return "Bayer8";
668  break;
669  case 2:
670  return "Bayer16";
671  break;
672  default:
673  {
674  std::stringstream strstr;
675  strstr << "Choosen color depth "<< depth << " is not supported by the camera!";
676  throw std::runtime_error(strstr.str());
677  }
678  }
679  break;
680  default:
681  throw std::runtime_error("Frame mode is not supported by"
682  " the camera!");
683  }
684  return "";
685  }
686 }
687 
688 #endif /* _CAMGIGEPROSILICALOOKUP_H */
689 
Definition: CamGigEProsilica.cpp:31
std::string tPvErrToString(tPvErr err)
Definition: CamGigEProsilicaLookUp.h:17