nao.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
00025 #ifndef __FIREVISION_CAMS_NAO_H_
00026 #define __FIREVISION_CAMS_NAO_H_
00027
00028 #include <cams/v4l2.h>
00029
00030 #include <cams/control/source.h>
00031
00032 #include <core/exceptions/software.h>
00033 #include <unistd.h>
00034
00035 #define DSPIC_I2C_ADDR 0x8
00036 #define DSPIC_SWITCH_REG 220
00037 #define I2C_SLAVE 0x0703
00038
00039 namespace firevision {
00040 #if 0
00041 }
00042 #endif
00043
00044 class CameraArgumentParser;
00045
00046 class NaoCamera :
00047 public V4L2Camera,
00048 public CameraControlSource
00049 {
00050 public:
00051 NaoCamera(const CameraArgumentParser *cap);
00052 virtual ~NaoCamera();
00053
00054 virtual unsigned char source();
00055 virtual void set_source(unsigned char source);
00056 virtual bool auto_exposure();
00057 virtual void set_auto_exposure(bool enabled);
00058
00059 private:
00060 static int open_dev(const char *i2c);
00061 static void close_dev(int dev, const char *error = 0);
00062 static int get_open_cam_id(int dev);
00063 static void switch_to_cam_id(int dev, int cam_id);
00064 static void init_cam(const char *cam);
00065
00066 private:
00067 char *__i2c_device_name;
00068 int __cam_id;
00069 bool __can_switch_cam;
00070 };
00071
00072 }
00073
00074 #endif //__FIREVISION_CAMS_V4L2_H_
00075