InfiniTime/src/components/brightness/BrightnessController.cpp
Joaquim 1d3742e14f Big UI and navigation Rewrite
new navigation
add some color to the apps
redesign menus
new settings menu
new quick settings
code clean up
size reduction by converting navigation images to font
and more...
2021-04-04 03:08:51 +01:00

98 lines
2.5 KiB
C++

#include "BrightnessController.h"
#include <hal/nrf_gpio.h>
#include "displayapp/screens/Symbols.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);
}
void BrightnessController::Step() {
switch(level) {
case Levels::Low: Set(Levels::Medium); break;
case Levels::Medium: Set(Levels::High); break;
case Levels::High: Set(Levels::Low); break;
default: break;
}
}
const char* BrightnessController::GetIcon() {
switch(level) {
case Levels::Medium: return Applications::Screens::Symbols::brightnessMedium;
case Levels::High: return Applications::Screens::Symbols::brightnessHigh;
default: break;
}
return Applications::Screens::Symbols::brightnessLow;
}
const char* BrightnessController::ToString() {
switch(level) {
case Levels::Off: return "Off";
case Levels::Low: return "Low";
case Levels::Medium: return "Medium";
case Levels::High: return "High";
default : return "???";
}
}