00001 // Copyright (C) 2008 University of Louisiana at Lafayette 00002 // Authors: Christoper Mire 00003 00004 #ifndef CAJUN_FW_CAMERA_H 00005 #define CAJUN_FW_CAMERA_H 00006 00007 #include <dc1394/dc1394.h> 00008 #include <dc1394/control.h> 00009 #include <dc1394/camera.h> 00010 #include <dc1394/conversions.h> 00011 00012 #include "data_type.H" 00013 00014 #include "fw_camera_interface.H" 00015 #include "conversions.H" 00016 00017 namespace cajun 00018 { 00019 class fw_camera_t : public fw_camera_interface_t 00020 { 00021 public: 00022 fw_camera_t (uint64_t device_, int camera_num, camera_opts_t camera_opts); 00023 ~fw_camera_t (); 00024 00025 void handle_input (); 00026 void setup (dc1394_t *dc1394); 00027 00028 class observer_t 00029 { 00030 public: 00031 virtual ~observer_t () {} 00032 00033 virtual void image (double tstamp,int, frame_info_t frame_) {} 00034 }; 00035 00036 void register_observer (observer_t *observer) 00037 { 00038 m_observer = observer; 00039 } 00040 protected: 00041 private: 00042 #define BAYER_TILE_MAP_REGISTER 0x1040 00043 void set_params (camera_opts_t camera_opts); 00044 void cleanup (); 00045 void setFormat (camera_opts_t camera_opts,int max_bytes); 00046 bayer_pattern_t get_bayer_pattern (); 00047 00048 // raw1394handle_t m_raw_handle; 00049 // dc1394_cameracapture m_dc_camera; 00050 uint64_t m_device; 00051 //nodeid_t * m_camera_nodes; 00052 int m_card_id; 00053 dc1394camera_t *cam_ptr; 00054 // bool m_raw_handle_created; 00055 bool m_dc_camera_created; 00056 double m_down_time; 00057 bool m_garbage_data; 00058 observer_t *m_observer; 00059 dc1394video_frame_t *frame; 00060 }; 00061 }; 00062 00063 00064 #endif