swissranger.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __FIREVISION_CAMS_SWISSRANGER_H_
00025 #define __FIREVISION_CAMS_SWISSRANGER_H_
00026
00027 #include <cams/camera.h>
00028 #include <cams/control/focus.h>
00029
00030
00031 #include <definesSR.h>
00032
00033 namespace firevision {
00034 #if 0
00035 }
00036 #endif
00037
00038 class CameraArgumentParser;
00039
00040 class SwissRangerCamera
00041 : public Camera
00042 {
00043 public:
00044
00045 typedef enum {
00046 DISTANCE,
00047 DISTANCE_GRAY_8,
00048 AMPLITUDE,
00049 AMPLITUDE_GRAY,
00050 AMPLITUDE_GRAY_8,
00051 CONF_MAP,
00052 CARTESIAN_UINT16,
00053
00054 CARTESIAN_FLOAT,
00055
00056 CARTESIAN_DOUBLE
00057
00058 } mode_t;
00059
00060 SwissRangerCamera(const CameraArgumentParser *cap);
00061 virtual ~SwissRangerCamera();
00062
00063 virtual void open();
00064 virtual void start();
00065 virtual void stop();
00066 virtual void close();
00067 virtual void flush();
00068 virtual void capture();
00069
00070 virtual void print_info();
00071 virtual bool ready();
00072
00073 virtual unsigned char* buffer();
00074 virtual unsigned int buffer_size();
00075 virtual void dispose_buffer();
00076
00077 virtual unsigned int pixel_width();
00078 virtual unsigned int pixel_height();
00079 virtual colorspace_t colorspace();
00080
00081 virtual void set_image_number(unsigned int n);
00082
00083 virtual const char * model() const;
00084
00085 static void print_available_cams();
00086
00087 protected:
00088
00089 bool _opened;
00090
00091 bool _started;
00092
00093 bool _valid_frame_received;
00094
00095 private:
00096 SRCAM __cam;
00097
00098
00099
00100 char *__model;
00101 char *__vendor;
00102 unsigned int __vendor_id;
00103 unsigned int __product_id;
00104 unsigned int __serial;
00105
00106 mode_t __mode;
00107 bool __set_modfreq;
00108 bool __use_median;
00109 bool __use_denoise;
00110 unsigned int __integration_time;
00111 unsigned int __amplitude_threshold;
00112
00113 ModulationFrq __modulation_freq;
00114
00115 unsigned int __width;
00116 unsigned int __height;
00117
00118 size_t __buffer_size;
00119 unsigned char *__buffer;
00120 unsigned char *__gray_buffer;
00121 void *__coord_uint16_buf;
00122 float *__coord_float_buf;
00123 double *__coord_double_buf;
00124
00125 short *__xu;
00126 short *__yu;
00127 unsigned short *__zu;
00128
00129 float *__xf;
00130 float *__yf;
00131 float *__zf;
00132
00133 double *__xd;
00134 double *__yd;
00135 double *__zd;
00136
00137 };
00138
00139 }
00140
00141 #endif