summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/raspberrypi')
-rw-r--r--src/ipa/raspberrypi/controller/rpi/awb.cpp20
-rw-r--r--src/ipa/raspberrypi/controller/rpi/awb.hpp4
2 files changed, 24 insertions, 0 deletions
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/raspberrypi/controller/rpi/awb.cpp
index 5cfd33a3..d4c93447 100644
--- a/src/ipa/raspberrypi/controller/rpi/awb.cpp
+++ b/src/ipa/raspberrypi/controller/rpi/awb.cpp
@@ -172,6 +172,26 @@ void Awb::Initialise()
async_results_ = sync_results_;
}
+bool Awb::IsPaused() const
+{
+ return false;
+}
+
+void Awb::Pause()
+{
+ // "Pause" by fixing everything to the most recent values.
+ manual_r_ = sync_results_.gain_r = prev_sync_results_.gain_r;
+ manual_b_ = sync_results_.gain_b = prev_sync_results_.gain_b;
+ sync_results_.gain_g = prev_sync_results_.gain_g;
+ sync_results_.temperature_K = prev_sync_results_.temperature_K;
+}
+
+void Awb::Resume()
+{
+ manual_r_ = 0.0;
+ manual_b_ = 0.0;
+}
+
unsigned int Awb::GetConvergenceFrames() const
{
// If not in auto mode, there is no convergence
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.hpp b/src/ipa/raspberrypi/controller/rpi/awb.hpp
index 8af1f27c..ac3dca6f 100644
--- a/src/ipa/raspberrypi/controller/rpi/awb.hpp
+++ b/src/ipa/raspberrypi/controller/rpi/awb.hpp
@@ -83,6 +83,10 @@ public:
char const *Name() const override;
void Initialise() override;
void Read(boost::property_tree::ptree const &params) override;
+ // AWB handles "pausing" for itself.
+ bool IsPaused() const override;
+ void Pause() override;
+ void Resume() override;
unsigned int GetConvergenceFrames() const override;
void SetMode(std::string const &name) override;
void SetManualGains(double manual_r, double manual_b) override;