Allow temporary change of DisplayDimmer (#23406)

This commit is contained in:
s-hadinger 2025-05-11 10:43:11 +02:00 committed by GitHub
parent b29ef3dfbc
commit 56ce7b3f93
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 7 deletions

View File

@ -2006,12 +2006,12 @@ void CmndDisplayMode(void) {
}
// Apply the current display dimmer
void ApplyDisplayDimmer(void) {
void ApplyDisplayDimmer(uint8_t dimmer) {
disp_apply_display_dimmer_request = true;
if ((disp_power < 0) || !disp_device) { return; } // Not initialized yet
disp_apply_display_dimmer_request = false;
uint8_t dimmer8 = changeUIntScale(GetDisplayDimmer(), 0, 100, 0, 255);
uint8_t dimmer8 = changeUIntScale(dimmer, 0, 100, 0, 255);
uint16_t dimmer10_gamma = ledGamma10(dimmer8);
if (dimmer8 && !(disp_power)) {
ExecuteCommandPower(disp_device, POWER_ON, SRC_DISPLAY);
@ -2035,7 +2035,7 @@ void CmndDisplayDimmer(void) {
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
uint8_t dimmer = XdrvMailbox.payload;
SetDisplayDimmer(dimmer);
ApplyDisplayDimmer();
ApplyDisplayDimmer(dimmer);
}
ResponseCmndNumber(GetDisplayDimmer());
}
@ -2923,7 +2923,7 @@ bool Xdrv13(uint32_t function) {
break;
case FUNC_INIT:
if (disp_apply_display_dimmer_request) {
ApplyDisplayDimmer(); // Allowed here.
ApplyDisplayDimmer(GetDisplayDimmer()); // Allowed here.
}
break;
case FUNC_EVERY_50_MSECOND:

View File

@ -61,13 +61,20 @@ extern "C" {
int be_ntv_display_dimmer(struct bvm *vm) {
int32_t argc = be_top(vm); // Get the number of arguments
int32_t dimmer;
bool no_settings = false; // by default change settings
if (argc >= 1) {
if (!be_isint(vm, 1)) { be_raise(vm, "type_error", "arg must be int"); }
dimmer = be_toint(vm, 1);
if (argc >= 2) {
if (!be_isbool(vm, 2)) { be_raise(vm, "type_error", "arg2 must be bool"); }
no_settings = be_tobool(vm, 2);
}
if ((dimmer < 0) || (dimmer > 100)) { be_raise(vm, "value_error", "value must be in range 0..100"); }
be_pop(vm, argc); // clear stack to avoid ripple errors in code called later
SetDisplayDimmer(dimmer);
ApplyDisplayDimmer();
if (!no_settings) { // change settings
SetDisplayDimmer(dimmer);
}
ApplyDisplayDimmer(dimmer);
}
be_pushint(vm, GetDisplayDimmer());
be_return(vm);

View File

@ -492,7 +492,7 @@ Renderer *Init_uDisplay(const char *desc) {
}*/
renderer->invertDisplay(iniinv);
ApplyDisplayDimmer();
ApplyDisplayDimmer(GetDisplayDimmer());
#ifdef SHOW_SPLASH
if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default splash screen