From 56ce7b3f9325f7f2148e88a446fb510a324e35a0 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 11 May 2025 10:43:11 +0200 Subject: [PATCH] Allow temporary change of DisplayDimmer (#23406) --- tasmota/tasmota_xdrv_driver/xdrv_13_display.ino | 8 ++++---- .../tasmota_xdrv_driver/xdrv_52_3_berry_display.ino | 11 +++++++++-- tasmota/tasmota_xdsp_display/xdsp_17_universal.ino | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino index 5ba88cefa..59f6482a8 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino @@ -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: diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_display.ino index 07554d9d3..5ee67401b 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_display.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_display.ino @@ -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); diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino index ed4fbf30f..a39f720e3 100644 --- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino +++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino @@ -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