sysclk: refinements to pwm dimming
This commit is contained in:
@@ -595,28 +595,6 @@ void ClockManager::HandleSafetyFeatures() {
|
||||
}
|
||||
|
||||
void ClockManager::HandleMiscFeatures() {
|
||||
static u32 prevBrightness = 100;
|
||||
static bool wasPWMDimEnabled = false;
|
||||
if(Board::GetConsoleType() == HorizonOCConsoleType_Aula && this->config->GetConfigValue(HorizonOCConfigValue_PWMDimming)) {
|
||||
float out = 1.0;
|
||||
Result rc = lblGetCurrentBrightnessSetting(&out);
|
||||
ASSERT_RESULT_OK(rc, "lblGetCurrentBrightnessSetting");
|
||||
u32 brightness = (u32)(out * 100);
|
||||
Board::SetPWMDimEnabled(true);
|
||||
Board::SetPWMDimBrightness(prevBrightness, brightness, true);
|
||||
prevBrightness = brightness;
|
||||
wasPWMDimEnabled = true;
|
||||
} else if (Board::GetConsoleType() == HorizonOCConsoleType_Aula && wasPWMDimEnabled) {
|
||||
Board::SetPWMDimEnabled(false);
|
||||
Board::SetPWMDimBrightness(0, 0, false);
|
||||
float out = 1.0;
|
||||
Result rc = lblGetCurrentBrightnessSetting(&out);
|
||||
ASSERT_RESULT_OK(rc, "lblGetCurrentBrightnessSetting");
|
||||
rc = lblSetCurrentBrightnessSetting(out);
|
||||
ASSERT_RESULT_OK(rc, "lblSetCurrentBrightnessSetting");
|
||||
wasPWMDimEnabled = false;
|
||||
}
|
||||
|
||||
if(this->config->GetConfigValue(HorizonOCConfigValue_BatteryChargeCurrent)) {
|
||||
I2c_Bq24193_SetFastChargeCurrentLimit(this->config->GetConfigValue(HorizonOCConfigValue_BatteryChargeCurrent));
|
||||
}
|
||||
@@ -767,6 +745,32 @@ void ClockManager::HandleFreqReset(SysClkModule module, bool isBoost) {
|
||||
|
||||
}
|
||||
|
||||
void ClockManager::HandlePWMDimming() {
|
||||
static u32 prevBrightness = 100;
|
||||
static bool wasPWMDimEnabled = false;
|
||||
static u32 tick = 0;
|
||||
tick++;
|
||||
if(tick > 50) {
|
||||
if(this->config->GetConfigValue(HorizonOCConfigValue_PWMDimming)) {
|
||||
float out = 1.0;
|
||||
Result rc = lblGetCurrentBrightnessSetting(&out);
|
||||
ASSERT_RESULT_OK(rc, "lblGetCurrentBrightnessSetting");
|
||||
u32 brightness = (u32)(out * 100);
|
||||
Board::SetPWMDimEnabled(true);
|
||||
Board::SetPWMDimBrightness(prevBrightness, brightness, false);
|
||||
prevBrightness = brightness;
|
||||
wasPWMDimEnabled = true;
|
||||
|
||||
} else if (wasPWMDimEnabled) {
|
||||
Board::SetPWMDimEnabled(false);
|
||||
Board::SetPWMDimBrightness(0, 0, false);
|
||||
|
||||
wasPWMDimEnabled = false;
|
||||
}
|
||||
tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void ClockManager::SetClocks(bool isBoost) {
|
||||
std::uint32_t targetHz = 0;
|
||||
std::uint32_t maxHz = 0;
|
||||
@@ -875,6 +879,9 @@ void ClockManager::Tick()
|
||||
|
||||
HandleSafetyFeatures();
|
||||
|
||||
if(Board::GetConsoleType() == HorizonOCConsoleType_Aula)
|
||||
HandlePWMDimming();
|
||||
|
||||
if (this->RefreshContext() || this->config->Refresh())
|
||||
{
|
||||
HandleMiscFeatures();
|
||||
|
||||
@@ -140,7 +140,11 @@ class ClockManager
|
||||
* @param isBoost Is in boost mode
|
||||
*/
|
||||
void SetClocks(bool isBoost);
|
||||
|
||||
/**
|
||||
* Handle PWM dimming
|
||||
*
|
||||
*/
|
||||
void HandlePWMDimming();
|
||||
/**
|
||||
* Main function, runs every 5s in sleep mode, and a user specified amount when awake
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user