Go to the documentation of this file.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
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef _FEATURES_H_
00039 #define _FEATURES_H_
00040
00041 #include <dc1394/dc1394.h>
00042 #include "trigger.h"
00043 #include "camera1394stereo/Camera1394StereoConfig.h"
00044 typedef camera1394stereo::Camera1394StereoConfig Config;
00045
00060 class Features
00061 {
00062 public:
00063
00064 Features(dc1394camera_t *camera);
00065 ~Features() {};
00066 bool initialize(Config *newconfig);
00067 void reconfigure(Config *newconfig);
00068
00069 inline bool isTriggerPowered()
00070 {
00071 return trigger_->isPowered();
00072 }
00073
00074 private:
00075 typedef int state_t;
00076
00077 void configure(dc1394feature_t feature, int *control,
00078 double *value, double *value2=NULL);
00079 state_t getState(dc1394feature_info_t *finfo);
00080 void getValues(dc1394feature_info_t *finfo,
00081 double *value, double *value2);
00082
00091 inline bool hasMode(dc1394feature_info_t *finfo, dc1394feature_mode_t mode)
00092 {
00093 for (uint32_t i = 0; i < finfo->modes.num; ++i)
00094 {
00095 if (finfo->modes.modes[i] == mode)
00096 return true;
00097 }
00098 return false;
00099 }
00100
00106 inline bool hasTrigger(void)
00107 {
00108 return DC1394_TRUE == feature_set_.feature[DC1394_FEATURE_TRIGGER
00109 - DC1394_FEATURE_MIN].available;
00110 }
00111
00112
00113 boost::shared_ptr<Trigger> trigger_;
00114
00115 bool setMode(dc1394feature_info_t *finfo, dc1394feature_mode_t mode);
00116 void setOff(dc1394feature_info_t *finfo);
00117 void updateIfChanged(dc1394feature_t feature,
00118 int old_control, int *control,
00119 double old_value, double *value);
00120 void updateIfChanged(dc1394feature_t feature,
00121 int old_control, int *control,
00122 double old_value, double *value,
00123 double old_value2, double *value2);
00124
00125 dc1394camera_t *camera_;
00126 dc1394featureset_t feature_set_;
00127 Config oldconfig_;
00128 };
00129
00130 #endif // _FEATURES_H_