mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Allow temporary change of DisplayDimmer (#23406)
This commit is contained in:
parent
b29ef3dfbc
commit
56ce7b3f93
@ -2006,12 +2006,12 @@ void CmndDisplayMode(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Apply the current display dimmer
|
// Apply the current display dimmer
|
||||||
void ApplyDisplayDimmer(void) {
|
void ApplyDisplayDimmer(uint8_t dimmer) {
|
||||||
disp_apply_display_dimmer_request = true;
|
disp_apply_display_dimmer_request = true;
|
||||||
if ((disp_power < 0) || !disp_device) { return; } // Not initialized yet
|
if ((disp_power < 0) || !disp_device) { return; } // Not initialized yet
|
||||||
disp_apply_display_dimmer_request = false;
|
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);
|
uint16_t dimmer10_gamma = ledGamma10(dimmer8);
|
||||||
if (dimmer8 && !(disp_power)) {
|
if (dimmer8 && !(disp_power)) {
|
||||||
ExecuteCommandPower(disp_device, POWER_ON, SRC_DISPLAY);
|
ExecuteCommandPower(disp_device, POWER_ON, SRC_DISPLAY);
|
||||||
@ -2035,7 +2035,7 @@ void CmndDisplayDimmer(void) {
|
|||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
|
||||||
uint8_t dimmer = XdrvMailbox.payload;
|
uint8_t dimmer = XdrvMailbox.payload;
|
||||||
SetDisplayDimmer(dimmer);
|
SetDisplayDimmer(dimmer);
|
||||||
ApplyDisplayDimmer();
|
ApplyDisplayDimmer(dimmer);
|
||||||
}
|
}
|
||||||
ResponseCmndNumber(GetDisplayDimmer());
|
ResponseCmndNumber(GetDisplayDimmer());
|
||||||
}
|
}
|
||||||
@ -2923,7 +2923,7 @@ bool Xdrv13(uint32_t function) {
|
|||||||
break;
|
break;
|
||||||
case FUNC_INIT:
|
case FUNC_INIT:
|
||||||
if (disp_apply_display_dimmer_request) {
|
if (disp_apply_display_dimmer_request) {
|
||||||
ApplyDisplayDimmer(); // Allowed here.
|
ApplyDisplayDimmer(GetDisplayDimmer()); // Allowed here.
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FUNC_EVERY_50_MSECOND:
|
case FUNC_EVERY_50_MSECOND:
|
||||||
|
@ -61,13 +61,20 @@ extern "C" {
|
|||||||
int be_ntv_display_dimmer(struct bvm *vm) {
|
int be_ntv_display_dimmer(struct bvm *vm) {
|
||||||
int32_t argc = be_top(vm); // Get the number of arguments
|
int32_t argc = be_top(vm); // Get the number of arguments
|
||||||
int32_t dimmer;
|
int32_t dimmer;
|
||||||
|
bool no_settings = false; // by default change settings
|
||||||
if (argc >= 1) {
|
if (argc >= 1) {
|
||||||
if (!be_isint(vm, 1)) { be_raise(vm, "type_error", "arg must be int"); }
|
if (!be_isint(vm, 1)) { be_raise(vm, "type_error", "arg must be int"); }
|
||||||
dimmer = be_toint(vm, 1);
|
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"); }
|
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
|
be_pop(vm, argc); // clear stack to avoid ripple errors in code called later
|
||||||
|
if (!no_settings) { // change settings
|
||||||
SetDisplayDimmer(dimmer);
|
SetDisplayDimmer(dimmer);
|
||||||
ApplyDisplayDimmer();
|
}
|
||||||
|
ApplyDisplayDimmer(dimmer);
|
||||||
}
|
}
|
||||||
be_pushint(vm, GetDisplayDimmer());
|
be_pushint(vm, GetDisplayDimmer());
|
||||||
be_return(vm);
|
be_return(vm);
|
||||||
|
@ -492,7 +492,7 @@ Renderer *Init_uDisplay(const char *desc) {
|
|||||||
}*/
|
}*/
|
||||||
renderer->invertDisplay(iniinv);
|
renderer->invertDisplay(iniinv);
|
||||||
|
|
||||||
ApplyDisplayDimmer();
|
ApplyDisplayDimmer(GetDisplayDimmer());
|
||||||
|
|
||||||
#ifdef SHOW_SPLASH
|
#ifdef SHOW_SPLASH
|
||||||
if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default splash screen
|
if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default splash screen
|
||||||
|
Loading…
x
Reference in New Issue
Block a user