diff --git a/src/cameras.cpp b/src/cameras.cpp index 647685b..2f002f3 100644 --- a/src/cameras.cpp +++ b/src/cameras.cpp @@ -8,7 +8,13 @@ Cameras::Cameras(uvosled* led): led_(led) { + ledTimer.setSingleShot(true); + connect(&ledTimer, &QTimer::timeout, this, &Cameras::lightOff); +} +Cameras::~Cameras() +{ + lightOff(); } bool Cameras::setCameras(const std::vector& descriptions) @@ -109,13 +115,30 @@ void Cameras::finishAddCamera(std::shared_ptr camera) qDebug()<<"Using camera"<id(); } +bool Cameras::lightFor(const LightingSetup& lighting, double time) +{ + int ret = 0; + if(led_) + { + ret = uvosled_set_current(led_, lighting.mask, lighting.brightness); + ledTimer.start(time*1000); + } + return ret == 0; +} + +void Cameras::lightOff() +{ + if(led_) + uvosled_set_current(led_, 0xff, 0); + ledTimer.stop(); +} + void Cameras::trigger() { + lightFor(lighting_, exposrueTime_*1.5); + for(auto& camera : cameras_) camera->cam()->trigger(); - - /*if(led_ && !free_) - uvosled_capture(led_, lighting_.mask, lighting_.brightness, exposrueTime_*1.5, exposrueTime_*0.25);*/ } bool Cameras::start() @@ -127,8 +150,8 @@ bool Cameras::start() ret = false; } - /*if(free_ && led_) - uvosled_set_current(led_, lighting_.mask, lighting_.brightness);*/ + if(free_) + uvosled_set_current(led_, lighting_.mask, lighting_.brightness); return ret; } @@ -142,8 +165,7 @@ bool Cameras::stop() ret = false; } - if(led_) - uvosled_set_current(led_, 0xFF, 0); + lightOff(); return ret; } diff --git a/src/cameras.h b/src/cameras.h index 25cd88c..b26258a 100644 --- a/src/cameras.h +++ b/src/cameras.h @@ -9,6 +9,7 @@ #include #include #include +#include #include "profile.h" #include "camera.h" @@ -28,10 +29,14 @@ private: LightingSetup lighting_; std::vector> cameras_; std::vector images_; + QTimer ledTimer; + + bool lightFor(const LightingSetup& lighting, double time); private slots: void imageRecived(Camera::Image img); void finishAddCamera(std::shared_ptr camera); + void lightOff(); signals: void cameraRemoved(std::shared_ptr camera); @@ -48,13 +53,14 @@ public slots: void setLighting(const LightingSetup& lighting) {lighting_ = lighting;} public: + Cameras(uvosled* led = nullptr); + ~Cameras(); bool setCameras(const std::vector& descriptions); bool addCamera(const cam::Camera::Description& desc); std::vector getCameras(); std::shared_ptr getCamera(size_t id); size_t numCameras(){return cameras_.size();} void clear(); - Cameras(uvosled* led = nullptr); void load(QSettings& settings); void store(QSettings& settings); void disable(bool disable);