Add natural dimer (#106)

This commit is contained in:
Yaya-Cout
2021-12-18 14:34:35 +01:00
committed by GitHub
parent 87a5dc354d
commit d57e19ae70
3 changed files with 40 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
#include "backlight_dimming_timer.h"
#include "global_preferences.h"
BacklightDimmingTimer::BacklightDimmingTimer() :
Timer(k_idleBeforeDimmingDuration/Timer::TickDuration)
@@ -6,6 +7,33 @@ BacklightDimmingTimer::BacklightDimmingTimer() :
}
bool BacklightDimmingTimer::fire() {
Ion::Backlight::setBrightness(k_dimBacklightBrightness);
if (m_dimerExecutions == 0) {
m_brightnessLevel = GlobalPreferences::sharedGlobalPreferences()->brightnessLevel();
m_dimerSteps = m_brightnessLevel / decreaseby;
m_timeToSleep = decreasetime / m_dimerSteps;
m_period = m_timeToSleep / Timer::TickDuration;
if (m_period == 0) {
m_period = 1;
}
resetTimer();
}
if (m_dimerExecutions < m_dimerSteps) {
m_nextbrightness = (m_brightnessLevel-k_dimBacklightBrightness)/m_dimerSteps * (m_dimerSteps-m_dimerExecutions);
Ion::Backlight::setBrightness(m_nextbrightness);
resetTimer();
} else if (m_dimerExecutions == m_dimerSteps) {
Ion::Backlight::setBrightness(k_dimBacklightBrightness);
}
m_dimerExecutions++;
return false;
}
void BacklightDimmingTimer::reset() {
m_dimerExecutions = 0;
m_period = k_idleBeforeDimmingDuration / Timer::TickDuration;
resetTimer();
}
void BacklightDimmingTimer::resetTimer() {
BacklightDimmingTimer::m_numberOfTicksBeforeFire = BacklightDimmingTimer::m_period;
}

View File

@@ -6,10 +6,19 @@
class BacklightDimmingTimer : public Timer {
public:
BacklightDimmingTimer();
void reset();
private:
constexpr static int k_idleBeforeDimmingDuration = 30*1000; // In miliseconds
constexpr static int k_dimBacklightBrightness = 0;
constexpr static int decreaseby = 15;
constexpr static int decreasetime = 1*1000; // In miliseconds
int m_dimerExecutions = 0;
int m_brightnessLevel;
int m_dimerSteps;
int m_nextbrightness;
float m_timeToSleep; // In miliseconds
bool fire() override;
void resetTimer();
};
#endif