Go to the documentation of this file.00001 #ifndef FCAM_DUMMY_SENSOR_H
00002 #define FCAM_DUMMY_SENSOR_H
00003
00008 #include <pthread.h>
00009
00010 #include "../Sensor.h"
00011 #include "Frame.h"
00012 #include <FCam/Dummy/Platform.h>
00013
00014 namespace FCam {
00015 namespace Dummy {
00016
00017 class Daemon;
00018
00027 class Sensor : public FCam::Sensor {
00028 public:
00029 Sensor(); ~Sensor();
00030
00031 void capture(const FCam::Shot &);
00032 void capture(const Shot &);
00033
00034 void capture(const std::vector<FCam::Shot> &);
00035 void capture(const std::vector<Shot> &);
00036
00037 void stream(const FCam::Shot &);
00038 void stream(const Shot &);
00039
00040 void stream(const std::vector<FCam::Shot> &);
00041 void stream(const std::vector<Shot> &);
00042
00043 bool streaming();
00044 void stopStreaming();
00045 void start();
00046 void stop();
00047
00048 virtual int maxExposure() const {return 10000000;}
00049
00050 virtual int minExposure() const {return 1;}
00051
00052 virtual int maxFrameTime() const {return 10000000;}
00053
00054 virtual int minFrameTime() const {return 1;}
00055
00056 virtual float maxGain() const {return 1000.0f;}
00057
00058 virtual float minGain() const {return 1.0f;}
00059
00060 virtual Size minImageSize() const {return Size(1, 1);}
00061
00062 virtual Size maxImageSize() const {return Size(3000, 2000);}
00063
00064 virtual int maxHistogramRegions() const {return 4;}
00065
00066 int rollingShutterTime(const FCam::Shot &) const;
00067
00068 int framesPending() const;
00069 int shotsPending() const;
00070
00071 const FCam::Platform &platform() {return Platform::instance();}
00072
00073 FCam::Dummy::Frame getFrame();
00074
00075 protected:
00076
00077 FCam::Frame getBaseFrame() {return getFrame();}
00078
00079 private:
00080 friend class Daemon;
00081 Daemon *daemon;
00082
00083 void generateRequest();
00084
00085 pthread_mutex_t requestMutex;
00086
00087
00088 std::vector<Shot> streamingShot;
00089
00090 void enforceDropPolicy();
00091
00092 int shotsPending_;
00093 };
00094 }
00095 }
00096
00097 #endif