summaryrefslogtreecommitdiff
path: root/src/components/brightness
diff options
context:
space:
mode:
authorAvamander <avamander@gmail.com>2020-10-02 19:16:48 (GMT)
committerAvamander <avamander@gmail.com>2020-10-02 19:16:48 (GMT)
commit6c86d1d9d706706fcb6f214aba8259e61ed68755 (patch)
tree2f4137a9916869cee18fd01449aa83ee586b9604 /src/components/brightness
parent4daab2692692d47af24a9384eb0f402821527882 (diff)
Fixed all the includes that were broken due to the renames
Diffstat (limited to 'src/components/brightness')
-rw-r--r--src/components/brightness/BrightnessController.cpp70
-rw-r--r--src/components/brightness/BrightnessController.h28
2 files changed, 98 insertions, 0 deletions
diff --git a/src/components/brightness/BrightnessController.cpp b/src/components/brightness/BrightnessController.cpp
new file mode 100644
index 0000000..c8825d6
--- /dev/null
+++ b/src/components/brightness/BrightnessController.cpp
@@ -0,0 +1,70 @@
+#include <hal/nrf_gpio.h>
+#include "BrightnessController.h"
+
+using namespace Pinetime::Controllers;
+
+
+void BrightnessController::Init() {
+ nrf_gpio_cfg_output(pinLcdBacklight1);
+ nrf_gpio_cfg_output(pinLcdBacklight2);
+ nrf_gpio_cfg_output(pinLcdBacklight3);
+ Set(level);
+}
+
+void BrightnessController::Set(BrightnessController::Levels level) {
+ this->level = level;
+ switch(level) {
+ default:
+ case Levels::High:
+ nrf_gpio_pin_clear(pinLcdBacklight1);
+ nrf_gpio_pin_clear(pinLcdBacklight2);
+ nrf_gpio_pin_clear(pinLcdBacklight3);
+ break;
+ case Levels::Medium:
+ nrf_gpio_pin_clear(pinLcdBacklight1);
+ nrf_gpio_pin_clear(pinLcdBacklight2);
+ nrf_gpio_pin_set(pinLcdBacklight3);
+ break;
+ case Levels::Low:
+ nrf_gpio_pin_clear(pinLcdBacklight1);
+ nrf_gpio_pin_set(pinLcdBacklight2);
+ nrf_gpio_pin_set(pinLcdBacklight3);
+ break;
+ case Levels::Off:
+ nrf_gpio_pin_set(pinLcdBacklight1);
+ nrf_gpio_pin_set(pinLcdBacklight2);
+ nrf_gpio_pin_set(pinLcdBacklight3);
+ break;
+ }
+}
+
+void BrightnessController::Lower() {
+ switch(level) {
+ case Levels::High: Set(Levels::Medium); break;
+ case Levels::Medium: Set(Levels::Low); break;
+ case Levels::Low: Set(Levels::Off); break;
+ default: break;
+ }
+}
+
+void BrightnessController::Higher() {
+ switch(level) {
+ case Levels::Off: Set(Levels::Low); break;
+ case Levels::Low: Set(Levels::Medium); break;
+ case Levels::Medium: Set(Levels::High); break;
+ default: break;
+ }
+}
+
+BrightnessController::Levels BrightnessController::Level() const {
+ return level;
+}
+
+void BrightnessController::Backup() {
+ backupLevel = level;
+}
+
+void BrightnessController::Restore() {
+ Set(backupLevel);
+}
+
diff --git a/src/components/brightness/BrightnessController.h b/src/components/brightness/BrightnessController.h
new file mode 100644
index 0000000..b8354ec
--- /dev/null
+++ b/src/components/brightness/BrightnessController.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include <cstdint>
+
+namespace Pinetime {
+ namespace Controllers {
+ class BrightnessController {
+ public:
+ enum class Levels {Off, Low, Medium, High};
+ void Init();
+
+ void Set(Levels level);
+ Levels Level() const;
+ void Lower();
+ void Higher();
+
+ void Backup();
+ void Restore();
+
+ private:
+ static constexpr uint8_t pinLcdBacklight1 = 14;
+ static constexpr uint8_t pinLcdBacklight2 = 22;
+ static constexpr uint8_t pinLcdBacklight3 = 23;
+ Levels level = Levels::High;
+ Levels backupLevel = Levels::High;
+ };
+ }
+}