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 <dc1394/dc1394.h>
28 #include <fvcams/camera.h>
29 #include <fvcams/control/focus.h>
30 
31 #ifndef __STDC_LIMIT_MACROS
32 # define __STDC_LIMIT_MACROS
33 #endif
34 #include <stdint.h>
35 
36 namespace firevision {
37 
38 class CameraArgumentParser;
39 
40 class FirewireCamera : public Camera, public CameraControlFocus
41 {
42 public:
43  FirewireCamera(dc1394framerate_t framerate = DC1394_FRAMERATE_30,
44  dc1394video_mode_t mode = DC1394_VIDEO_MODE_640x480_YUV422,
45  dc1394speed_t speed = DC1394_ISO_SPEED_400,
46  int num_buffers = 8);
48 
49  virtual ~FirewireCamera();
50 
51  virtual void open_device();
52  virtual void open();
53  virtual void start();
54  virtual void stop();
55  virtual void close();
56  virtual void flush();
57  virtual void capture();
58 
59  virtual void print_info();
60  virtual bool ready();
61 
62  virtual unsigned char *buffer();
63  virtual unsigned int buffer_size();
64  virtual void dispose_buffer();
65 
66  virtual unsigned int pixel_width();
67  virtual unsigned int pixel_height();
68  virtual colorspace_t colorspace();
69 
70  virtual void set_image_number(unsigned int n);
71 
72  bool iso_mode_enabled();
73 
74  virtual bool auto_focus();
75  virtual void set_auto_focus(bool enabled);
76 
77  virtual unsigned int focus();
78  virtual void set_focus(unsigned int focus);
79  virtual unsigned int focus_min();
80  virtual unsigned int focus_max();
81 
82  virtual bool auto_shutter();
83  virtual void set_auto_shutter(bool enabled);
84 
85  virtual unsigned int shutter();
86  virtual void set_shutter(unsigned int shutter);
87 
88  virtual bool auto_white_balance();
89  virtual void set_auto_white_balance(bool enabled);
90 
91  virtual void white_balance(unsigned int *ub, unsigned int *vr);
92  virtual void set_white_balance(unsigned int ub, unsigned int vr);
93 
94  virtual void set_gain(unsigned int gain);
95 
96  virtual void parse_set_focus(const char *focus);
97  virtual void parse_set_white_balance(const char *white_balance);
98  virtual void parse_set_shutter(const char *shutter);
99 
100  virtual uint64_t guid() const;
101  virtual const char *model() const;
102 
103  static void print_available_fwcams();
104 
105  /** Get underlying libdc1394 C handle.
106  * @return libdc1394 handle */
107  dc1394_t *
108  cobj() const
109  {
110  return _dc1394;
111  }
112 
113  /** Get underlying libdc1394 camera C handle.
114  * @return libdc1394 camera handle */
115  dc1394camera_t *
116  camera_cobj() const
117  {
118  return _camera;
119  }
120 
121 protected:
122  /** Number of DMA buffers. */
123  int _num_buffers;
124  /** true if device has been opened, false otherwise */
125  bool _device_opened;
126  /** true if camera has been opened, false otherwise */
127  bool _opened;
128  /** true if camera has been started, false otherwise */
129  bool _started;
130  /** true if auto focus is enabled, false if disabled */
131  bool _auto_focus;
132  /** true if auto shutter is enabled, false if disabled */
133  bool _auto_shutter;
134  /** true if auto white balance is enabled, false if disabled */
135  bool _auto_white_balance;
136  /** true, if a valid frame has been received, false otherwise */
138  /** true if the shutter should actually be set, false otherwise */
139  bool _do_set_shutter;
140  /** true if the white balance should actually be set, false otherwise */
142  /** true if the focus should actually be set, false otherwise */
143  bool _do_set_focus;
144 
145  /** DC1394 main context */
146  dc1394_t *_dc1394;
147  /** DC1394 video mode */
148  dc1394video_mode_t _mode;
149  /** Indicator of Format7 status. */
151  /** DC1394 speed */
152  dc1394speed_t _speed;
153  /** DC1394 framerate */
154  dc1394framerate_t _framerate;
155  /** DC1394 camera handle */
156  dc1394camera_t *_camera;
157  /** Last captured DC1394 video frame */
158  dc1394video_frame_t *_frame;
159  /** Format7 color coding */
160  dc1394color_coding_t _format7_coding;
161  /** Format7 bytes per packet */
162  int _format7_bpp;
163  /** Format7 width */
164  int _format7_width;
165  /** Format7 height */
166  int _format7_height;
167  /** Format7 ROI Start X coordinate */
168  int _format7_startx;
169  /** Format7 ROI Start Y coordinate */
170  int _format7_starty;
171 
172  /** White balance U/B value */
173  unsigned int _white_balance_ub;
174  /** White balance V/R value */
175  unsigned int _white_balance_vr;
176 
177  /** Shutter value */
178  unsigned int _shutter;
179 
180  /** Focus value */
181  unsigned int _focus;
182 
183  /** Gain value */
184  unsigned int _gain;
185  /** True, if gain is set automatically */
186  bool _auto_gain;
187 
188  /** Camera model, used in open to identify the camera, if empty first found camera is used */
189  char *_model;
190 };
191 
192 } // end namespace firevision
193 
194 #endif
firevision::FirewireCamera::pixel_width
virtual unsigned int pixel_width()
Definition: firewire.cpp:408
firevision::FirewireCamera::_camera
dc1394camera_t * _camera
DC1394 camera handle.
Definition: firewire.h:155
firevision::FirewireCamera::set_shutter
virtual void set_shutter(unsigned int shutter)
Set shutter value.
Definition: firewire.cpp:611
firevision::FirewireCamera::camera_cobj
dc1394camera_t * camera_cobj() const
Get underlying libdc1394 camera C handle.
Definition: firewire.h:115
firevision::FirewireCamera::model
virtual const char * model() const
Get camera model.
Definition: firewire.cpp:319
firevision::FirewireCamera::iso_mode_enabled
bool iso_mode_enabled()
Check if ISO mode is enabled.
Definition: firewire.cpp:268
firevision::FirewireCamera::flush
virtual void flush()
Definition: firewire.cpp:355
firevision::FirewireCamera::_num_buffers
int _num_buffers
Number of DMA buffers.
Definition: firewire.h:122
firevision::FirewireCamera::set_focus
virtual void set_focus(unsigned int focus)
Definition: firewire.cpp:555
firevision::CameraControlFocus
Definition: focus.h:37
firevision::FirewireCamera::set_auto_white_balance
virtual void set_auto_white_balance(bool enabled)
Set status of auto white balance.
Definition: firewire.cpp:635
firevision::FirewireCamera::ready
virtual bool ready()
Definition: firewire.cpp:508
firevision::FirewireCamera::parse_set_focus
virtual void parse_set_focus(const char *focus)
Parse focus and set value.
Definition: firewire.cpp:713
firevision::FirewireCamera::white_balance
virtual void white_balance(unsigned int *ub, unsigned int *vr)
Get white balance values.
Definition: firewire.cpp:659
firevision::FirewireCamera::_format7_starty
int _format7_starty
Format7 ROI Start Y coordinate.
Definition: firewire.h:169
firevision::FirewireCamera::_white_balance_ub
unsigned int _white_balance_ub
White balance U/B value.
Definition: firewire.h:172
firevision::FirewireCamera::_device_opened
bool _device_opened
true if device has been opened, false otherwise
Definition: firewire.h:124
firevision::FirewireCamera::_opened
bool _opened
true if camera has been opened, false otherwise
Definition: firewire.h:126
firevision::FirewireCamera::_valid_frame_received
bool _valid_frame_received
true, if a valid frame has been received, false otherwise
Definition: firewire.h:136
firevision::FirewireCamera::_frame
dc1394video_frame_t * _frame
Last captured DC1394 video frame.
Definition: firewire.h:157
firevision::FirewireCamera::guid
virtual uint64_t guid() const
Get Firewire GUID of camera.
Definition: firewire.cpp:306
firevision::FirewireCamera::_mode
dc1394video_mode_t _mode
DC1394 video mode.
Definition: firewire.h:147
firevision::FirewireCamera::_do_set_shutter
bool _do_set_shutter
true if the shutter should actually be set, false otherwise
Definition: firewire.h:138
firevision::FirewireCamera::_speed
dc1394speed_t _speed
DC1394 speed.
Definition: firewire.h:151
firevision::FirewireCamera::auto_white_balance
virtual bool auto_white_balance()
Get status of auto white balance.
Definition: firewire.cpp:649
firevision::FirewireCamera::dispose_buffer
virtual void dispose_buffer()
Definition: firewire.cpp:400
firevision::FirewireCamera
Definition: firewire.h:39
firevision::FirewireCamera::pixel_height
virtual unsigned int pixel_height()
Definition: firewire.cpp:430
firevision::FirewireCamera::_focus
unsigned int _focus
Focus value.
Definition: firewire.h:180
firevision::FirewireCamera::close
virtual void close()
Definition: firewire.cpp:384
firevision::FirewireCamera::colorspace
virtual colorspace_t colorspace()
Definition: firewire.cpp:452
firevision::FirewireCamera::print_available_fwcams
static void print_available_fwcams()
Print list of cameras.
Definition: firewire.cpp:984
firevision::FirewireCamera::_format7_height
int _format7_height
Format7 height.
Definition: firewire.h:165
firevision::FirewireCamera::print_info
virtual void print_info()
Definition: firewire.cpp:279
firevision::FirewireCamera::parse_set_shutter
virtual void parse_set_shutter(const char *shutter)
Parse shutter and set value.
Definition: firewire.cpp:780
firevision::FirewireCamera::_shutter
unsigned int _shutter
Shutter value.
Definition: firewire.h:177
firevision::FirewireCamera::set_white_balance
virtual void set_white_balance(unsigned int ub, unsigned int vr)
Set white balance values.
Definition: firewire.cpp:675
firevision::FirewireCamera::open
virtual void open()
Definition: firewire.cpp:147
firevision::FirewireCamera::stop
virtual void stop()
Definition: firewire.cpp:254
firevision::FirewireCamera::focus
virtual unsigned int focus()
Definition: firewire.cpp:544
firevision::FirewireCamera::_format7_bpp
int _format7_bpp
Format7 bytes per packet.
Definition: firewire.h:161
firevision::FirewireCamera::buffer
virtual unsigned char * buffer()
Definition: firewire.cpp:364
firevision::FirewireCamera::buffer_size
virtual unsigned int buffer_size()
Definition: firewire.cpp:374
firevision::FirewireCamera::cobj
dc1394_t * cobj() const
Get underlying libdc1394 C handle.
Definition: firewire.h:107
firevision::FirewireCamera::_auto_white_balance
bool _auto_white_balance
true if auto white balance is enabled, false if disabled
Definition: firewire.h:134
firevision::FirewireCamera::focus_max
virtual unsigned int focus_max()
Definition: firewire.cpp:573
firevision::FirewireCamera::_auto_focus
bool _auto_focus
true if auto focus is enabled, false if disabled
Definition: firewire.h:130
firevision::FirewireCamera::_white_balance_vr
unsigned int _white_balance_vr
White balance V/R value.
Definition: firewire.h:174
firevision::FirewireCamera::open_device
virtual void open_device()
Open the desired device.
Definition: firewire.cpp:105
firevision::FirewireCamera::parse_set_white_balance
virtual void parse_set_white_balance(const char *white_balance)
Parse white balance and set value.
Definition: firewire.cpp:739
firevision::FirewireCamera::set_gain
virtual void set_gain(unsigned int gain)
Set the gain.
Definition: firewire.cpp:686
firevision::FirewireCamera::_started
bool _started
true if camera has been started, false otherwise
Definition: firewire.h:128
firevision::FirewireCamera::_gain
unsigned int _gain
Gain value.
Definition: firewire.h:183
firevision::FirewireCamera::focus_min
virtual unsigned int focus_min()
Definition: firewire.cpp:561
firevision::FirewireCamera::~FirewireCamera
virtual ~FirewireCamera()
Empty destructor.
Definition: firewire.cpp:92
firevision::FirewireCamera::_model
char * _model
Camera model, used in open to identify the camera, if empty first found camera is used.
Definition: firewire.h:188
firevision::CameraArgumentParser
Definition: camargp.h:39
firevision::FirewireCamera::_format7_mode_enabled
bool _format7_mode_enabled
Indicator of Format7 status.
Definition: firewire.h:149
firevision::FirewireCamera::FirewireCamera
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:56
firevision::FirewireCamera::_format7_coding
dc1394color_coding_t _format7_coding
Format7 color coding.
Definition: firewire.h:159
firevision::FirewireCamera::shutter
virtual unsigned int shutter()
Get shutter value.
Definition: firewire.cpp:622
firevision::FirewireCamera::capture
virtual void capture()
Definition: firewire.cpp:329
firevision::FirewireCamera::set_auto_focus
virtual void set_auto_focus(bool enabled)
Definition: firewire.cpp:521
firevision::FirewireCamera::auto_shutter
virtual bool auto_shutter()
Get status of auto shutter.
Definition: firewire.cpp:602
firevision::FirewireCamera::_do_set_white_balance
bool _do_set_white_balance
true if the white balance should actually be set, false otherwise
Definition: firewire.h:140
firevision::Camera
Definition: camera.h:36
firevision::FirewireCamera::set_image_number
virtual void set_image_number(unsigned int n)
Definition: firewire.cpp:514
firevision::FirewireCamera::_format7_startx
int _format7_startx
Format7 ROI Start X coordinate.
Definition: firewire.h:167
firevision::FirewireCamera::set_auto_shutter
virtual void set_auto_shutter(bool enabled)
Set status of auto shutter.
Definition: firewire.cpp:588
firevision::FirewireCamera::_do_set_focus
bool _do_set_focus
true if the focus should actually be set, false otherwise
Definition: firewire.h:142
firevision::FirewireCamera::_dc1394
dc1394_t * _dc1394
DC1394 main context.
Definition: firewire.h:145
firevision::FirewireCamera::auto_focus
virtual bool auto_focus()
Definition: firewire.cpp:538
firevision::FirewireCamera::_auto_gain
bool _auto_gain
True, if gain is set automatically.
Definition: firewire.h:185
firevision::FirewireCamera::start
virtual void start()
Definition: firewire.cpp:224
firevision::FirewireCamera::_auto_shutter
bool _auto_shutter
true if auto shutter is enabled, false if disabled
Definition: firewire.h:132
firevision::FirewireCamera::_format7_width
int _format7_width
Format7 width.
Definition: firewire.h:163
firevision::FirewireCamera::_framerate
dc1394framerate_t _framerate
DC1394 framerate.
Definition: firewire.h:153