Fawkes API  Fawkes Development Version
firewire.h
1 
2 /***************************************************************************
3  * firewire.h - This header defines a Firewire 1394 cam
4  *
5  * Generated: Tue Feb 22 10:36:39 2005
6  * Copyright 2005 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef __FIREVISION_CAMS_FIREWIRE_H_
25 #define __FIREVISION_CAMS_FIREWIRE_H_
26 
27 #include <fvcams/camera.h>
28 #include <fvcams/control/focus.h>
29 
30 #include <dc1394/dc1394.h>
31 
32 #ifndef __STDC_LIMIT_MACROS
33 #define __STDC_LIMIT_MACROS
34 #endif
35 #include <stdint.h>
36 
37 namespace firevision {
38 #if 0 /* just to make Emacs auto-indent happy */
39 }
40 #endif
41 
42 class CameraArgumentParser;
43 
45 : public Camera,
46  public CameraControlFocus
47 {
48 
49  public:
50 
51  FirewireCamera(dc1394framerate_t framerate = DC1394_FRAMERATE_30,
52  dc1394video_mode_t mode = DC1394_VIDEO_MODE_640x480_YUV422,
53  dc1394speed_t speed = DC1394_ISO_SPEED_400,
54  int num_buffers=8);
56 
57  virtual ~FirewireCamera();
58 
59  virtual void open_device();
60  virtual void open();
61  virtual void start();
62  virtual void stop();
63  virtual void close();
64  virtual void flush();
65  virtual void capture();
66 
67  virtual void print_info();
68  virtual bool ready();
69 
70  virtual unsigned char* buffer();
71  virtual unsigned int buffer_size();
72  virtual void dispose_buffer();
73 
74  virtual unsigned int pixel_width();
75  virtual unsigned int pixel_height();
76  virtual colorspace_t colorspace();
77 
78  virtual void set_image_number(unsigned int n);
79 
80  bool iso_mode_enabled();
81 
82  virtual bool auto_focus();
83  virtual void set_auto_focus(bool enabled);
84 
85  virtual unsigned int focus();
86  virtual void set_focus(unsigned int focus);
87  virtual unsigned int focus_min();
88  virtual unsigned int focus_max();
89 
90  virtual bool auto_shutter();
91  virtual void set_auto_shutter(bool enabled);
92 
93  virtual unsigned int shutter();
94  virtual void set_shutter(unsigned int shutter);
95 
96  virtual bool auto_white_balance();
97  virtual void set_auto_white_balance(bool enabled);
98 
99  virtual void white_balance(unsigned int *ub, unsigned int *vr);
100  virtual void set_white_balance(unsigned int ub, unsigned int vr);
101 
102  virtual void set_gain(unsigned int gain);
103 
104  virtual void parse_set_focus(const char *focus);
105  virtual void parse_set_white_balance(const char *white_balance);
106  virtual void parse_set_shutter(const char *shutter);
107 
108  virtual uint64_t guid() const;
109  virtual const char * model() const;
110 
111  static void print_available_fwcams();
112 
113  /** Get underlying libdc1394 C handle.
114  * @return libdc1394 handle */
115  dc1394_t * cobj() const
116  { return _dc1394; }
117 
118  /** Get underlying libdc1394 camera C handle.
119  * @return libdc1394 camera handle */
120  dc1394camera_t * camera_cobj() const
121  { return _camera; }
122 
123  protected:
124  /** Number of DMA buffers. */
126  /** true if device has been opened, false otherwise */
128  /** true if camera has been opened, false otherwise */
129  bool _opened;
130  /** true if camera has been started, false otherwise */
131  bool _started;
132  /** true if auto focus is enabled, false if disabled */
134  /** true if auto shutter is enabled, false if disabled */
136  /** true if auto white balance is enabled, false if disabled */
138  /** true, if a valid frame has been received, false otherwise */
140  /** true if the shutter should actually be set, false otherwise */
142  /** true if the white balance should actually be set, false otherwise */
144  /** true if the focus should actually be set, false otherwise */
146 
147  /** DC1394 main context */
148  dc1394_t *_dc1394;
149  /** DC1394 video mode */
150  dc1394video_mode_t _mode;
151  /** Indicator of Format7 status. */
153  /** DC1394 speed */
154  dc1394speed_t _speed;
155  /** DC1394 framerate */
156  dc1394framerate_t _framerate;
157  /** DC1394 camera handle */
158  dc1394camera_t *_camera;
159  /** Last captured DC1394 video frame */
160  dc1394video_frame_t *_frame;
161  /** Format7 color coding */
162  dc1394color_coding_t _format7_coding;
163  /** Format7 bytes per packet */
165  /** Format7 width */
167  /** Format7 height */
169  /** Format7 ROI Start X coordinate */
171  /** Format7 ROI Start Y coordinate */
173 
174  /** White balance U/B value */
175  unsigned int _white_balance_ub;
176  /** White balance V/R value */
177  unsigned int _white_balance_vr;
178 
179  /** Shutter value */
180  unsigned int _shutter;
181 
182  /** Focus value */
183  unsigned int _focus;
184 
185  /** Gain value */
186  unsigned int _gain;
187  /** True, if gain is set automatically */
189 
190  /** Camera model, used in open to identify the camera, if empty first found camera is used */
191  char *_model;
192 
193 };
194 
195 } // end namespace firevision
196 
197 #endif
bool _opened
true if camera has been opened, false otherwise
Definition: firewire.h:129
virtual bool ready()
Camera is ready for taking pictures.
Definition: firewire.cpp:525
bool _do_set_white_balance
true if the white balance should actually be set, false otherwise
Definition: firewire.h:143
dc1394speed_t _speed
DC1394 speed.
Definition: firewire.h:154
int _format7_width
Format7 width.
Definition: firewire.h:166
virtual void set_auto_shutter(bool enabled)
Set status of auto shutter.
Definition: firewire.cpp:611
virtual const char * model() const
Get camera model.
Definition: firewire.cpp:320
bool iso_mode_enabled()
Check if ISO mode is enabled.
Definition: firewire.cpp:270
virtual unsigned int pixel_width()
Width of image in pixels.
Definition: firewire.cpp:411
virtual colorspace_t colorspace()
Colorspace of returned image.
Definition: firewire.cpp:453
virtual void parse_set_focus(const char *focus)
Parse focus and set value.
Definition: firewire.cpp:739
virtual bool auto_white_balance()
Get status of auto white balance.
Definition: firewire.cpp:675
Camera interface for image aquiring devices in FireVision.
Definition: camera.h:35
dc1394video_mode_t _mode
DC1394 video mode.
Definition: firewire.h:150
Camera focus control interface.
Definition: focus.h:35
virtual void print_info()
Print out camera information.
Definition: firewire.cpp:282
virtual unsigned int pixel_height()
Height of image in pixels.
Definition: firewire.cpp:432
virtual void close()
Close camera.
Definition: firewire.cpp:388
virtual void set_auto_white_balance(bool enabled)
Set status of auto white balance.
Definition: firewire.cpp:661
bool _started
true if camera has been started, false otherwise
Definition: firewire.h:131
unsigned int _focus
Focus value.
Definition: firewire.h:183
virtual unsigned int buffer_size()
Size of buffer.
Definition: firewire.cpp:378
virtual void white_balance(unsigned int *ub, unsigned int *vr)
Get white balance values.
Definition: firewire.cpp:686
bool _auto_shutter
true if auto shutter is enabled, false if disabled
Definition: firewire.h:135
static void print_available_fwcams()
Print list of cameras.
Definition: firewire.cpp:1013
Camera argument parser.
Definition: camargp.h:38
virtual void dispose_buffer()
Dispose current buffer.
Definition: firewire.cpp:402
unsigned int _white_balance_ub
White balance U/B value.
Definition: firewire.h:175
dc1394video_frame_t * _frame
Last captured DC1394 video frame.
Definition: firewire.h:160
int _format7_bpp
Format7 bytes per packet.
Definition: firewire.h:164
virtual uint64_t guid() const
Get Firewire GUID of camera.
Definition: firewire.cpp:306
virtual void open_device()
Open the desired device.
Definition: firewire.cpp:111
unsigned int _shutter
Shutter value.
Definition: firewire.h:180
virtual unsigned char * buffer()
Get access to current image buffer.
Definition: firewire.cpp:367
virtual void parse_set_white_balance(const char *white_balance)
Parse white balance and set value.
Definition: firewire.cpp:766
virtual unsigned int focus_min()
Get minimum focus value.
Definition: firewire.cpp:582
bool _device_opened
true if device has been opened, false otherwise
Definition: firewire.h:127
virtual void flush()
Flush image queue.
Definition: firewire.cpp:357
unsigned int _white_balance_vr
White balance V/R value.
Definition: firewire.h:177
virtual void stop()
Stop image transfer from the camera.
Definition: firewire.cpp:255
bool _valid_frame_received
true, if a valid frame has been received, false otherwise
Definition: firewire.h:139
virtual void parse_set_shutter(const char *shutter)
Parse shutter and set value.
Definition: firewire.cpp:808
unsigned int _gain
Gain value.
Definition: firewire.h:186
virtual unsigned int focus_max()
Get maximum focus value.
Definition: firewire.cpp:595
FirewireCamera(dc1394framerate_t framerate=DC1394_FRAMERATE_30, dc1394video_mode_t mode=DC1394_VIDEO_MODE_640x480_YUV422, dc1394speed_t speed=DC1394_ISO_SPEED_400, int num_buffers=8)
Constructor.
Definition: firewire.cpp:60
char * _model
Camera model, used in open to identify the camera, if empty first found camera is used...
Definition: firewire.h:191
virtual void set_white_balance(unsigned int ub, unsigned int vr)
Set white balance values.
Definition: firewire.cpp:702
bool _do_set_shutter
true if the shutter should actually be set, false otherwise
Definition: firewire.h:141
bool _auto_white_balance
true if auto white balance is enabled, false if disabled
Definition: firewire.h:137
virtual void set_gain(unsigned int gain)
Set the gain.
Definition: firewire.cpp:713
virtual void set_image_number(unsigned int n)
Set image number to retrieve.
Definition: firewire.cpp:532
bool _auto_focus
true if auto focus is enabled, false if disabled
Definition: firewire.h:133
virtual unsigned int focus()
Get current focus value.
Definition: firewire.cpp:562
virtual bool auto_focus()
Check if auto focus is enabled.
Definition: firewire.cpp:555
virtual bool auto_shutter()
Get status of auto shutter.
Definition: firewire.cpp:625
int _format7_height
Format7 height.
Definition: firewire.h:168
dc1394framerate_t _framerate
DC1394 framerate.
Definition: firewire.h:156
virtual void set_auto_focus(bool enabled)
Enable or disable auto focus.
Definition: firewire.cpp:540
dc1394_t * cobj() const
Get underlying libdc1394 C handle.
Definition: firewire.h:115
bool _auto_gain
True, if gain is set automatically.
Definition: firewire.h:188
dc1394color_coding_t _format7_coding
Format7 color coding.
Definition: firewire.h:162
virtual void open()
Open the camera.
Definition: firewire.cpp:153
bool _do_set_focus
true if the focus should actually be set, false otherwise
Definition: firewire.h:145
dc1394camera_t * _camera
DC1394 camera handle.
Definition: firewire.h:158
dc1394camera_t * camera_cobj() const
Get underlying libdc1394 camera C handle.
Definition: firewire.h:120
virtual void capture()
Capture an image.
Definition: firewire.cpp:331
virtual ~FirewireCamera()
Empty destructor.
Definition: firewire.cpp:97
int _format7_startx
Format7 ROI Start X coordinate.
Definition: firewire.h:170
int _num_buffers
Number of DMA buffers.
Definition: firewire.h:125
virtual void set_focus(unsigned int focus)
Set new focus value.
Definition: firewire.cpp:575
virtual unsigned int shutter()
Get shutter value.
Definition: firewire.cpp:647
Firewire camera.
Definition: firewire.h:44
dc1394_t * _dc1394
DC1394 main context.
Definition: firewire.h:148
bool _format7_mode_enabled
Indicator of Format7 status.
Definition: firewire.h:152
virtual void start()
Start image transfer from the camera.
Definition: firewire.cpp:227
virtual void set_shutter(unsigned int shutter)
Set shutter value.
Definition: firewire.cpp:635
int _format7_starty
Format7 ROI Start Y coordinate.
Definition: firewire.h:172