From 790e19d708660e21039ad341afbb23a8f76f04c0 Mon Sep 17 00:00:00 2001 From: elral <3263285+elral@users.noreply.github.com> Date: Tue, 12 Aug 2025 16:17:29 +0200 Subject: [PATCH 1/3] fix missing power state disable for incoming commands --- src/CommandMessenger.cpp | 67 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/src/CommandMessenger.cpp b/src/CommandMessenger.cpp index 8ae5f67f..b65f86da 100644 --- a/src/CommandMessenger.cpp +++ b/src/CommandMessenger.cpp @@ -44,6 +44,63 @@ void OnSetPowerSavingMode(); void OnTrigger(); void OnUnknownCommand(); +void trackCommand() +{ + lastCommand = millis(); +} + +void PowerSavingWrapper_Output_OnSet() +{ + trackCommand(); + Output::OnSet(); +} + +#ifdef MF_SEGMENT_SUPPORT +void PowerSavingWrapper_LedSegmentModule_OnSet() +{ + trackCommand(); + LedSegment::OnSetModule(); +} +void PowerSavingWrapper_LedSegmentSingleSegment_OnSet() +{ + trackCommand(); + LedSegment::OnSetModule(); +} +#endif + +#ifdef MF_STEPPER_SUPPORT +void PowerSavingWrapper_Stepper_OnSet() +{ + trackCommand(); + Stepper::OnSet(); +} +#endif + +#ifdef MF_LCD_SUPPORT +void PowerSavingWrapper_LCD_OnSet() +{ + trackCommand(); + LCDDisplay::OnSet(); +} +#endif + +#ifdef MF_OUTPUT_SHIFTER_SUPPORT +void PowerSavingWrapper_OutputShifter_OnSet() +{ + trackCommand(); + OutputShifter::OnSet(); +} +#endif + +#ifdef MF_CUSTOMDEVICE_SUPPORT +void PowerSavingWrapper_CustomDevice_OnSet() +{ + trackCommand(); + CustomDevice::OnSet(); +} +#endif + + // Callbacks define on which received commands we take action void attachCommandCallbacks() { @@ -52,15 +109,15 @@ void attachCommandCallbacks() #ifdef MF_SEGMENT_SUPPORT cmdMessenger.attach(kInitModule, LedSegment::OnInitModule); - cmdMessenger.attach(kSetModule, LedSegment::OnSetModule); + cmdMessenger.attach(kSetModule, PowerSavingWrapper_LedSegmentModule_OnSet); cmdMessenger.attach(kSetModuleBrightness, LedSegment::OnSetModuleBrightness); - cmdMessenger.attach(kSetModuleSingleSegment, LedSegment::OnSetModuleSingleSegment); + cmdMessenger.attach(kSetModuleSingleSegment, PowerSavingWrapper_LedSegmentSingleSegment_OnSet); #endif cmdMessenger.attach(kSetPin, Output::OnSet); #ifdef MF_STEPPER_SUPPORT - cmdMessenger.attach(kSetStepper, Stepper::OnSet); + cmdMessenger.attach(kSetStepper, PowerSavingWrapper_Stepper_OnSet); cmdMessenger.attach(kResetStepper, Stepper::OnReset); cmdMessenger.attach(kSetZeroStepper, Stepper::OnSetZero); cmdMessenger.attach(kSetStepperSpeedAccel, Stepper::OnSetSpeedAccel); @@ -82,11 +139,11 @@ void attachCommandCallbacks() cmdMessenger.attach(kSetPowerSavingMode, OnSetPowerSavingMode); #ifdef MF_LCD_SUPPORT - cmdMessenger.attach(kSetLcdDisplayI2C, LCDDisplay::OnSet); + cmdMessenger.attach(kSetLcdDisplayI2C, PowerSavingWrapper_LCD_OnSet); #endif #ifdef MF_OUTPUT_SHIFTER_SUPPORT - cmdMessenger.attach(kSetShiftRegisterPins, OutputShifter::OnSet); + cmdMessenger.attach(kSetShiftRegisterPins, PowerSavingWrapper_OutputShifter_OnSet); #endif #ifdef MF_CUSTOMDEVICE_SUPPORT From 77901d711a361cc48b822448439af6215f90b507 Mon Sep 17 00:00:00 2001 From: elral <3263285+elral@users.noreply.github.com> Date: Tue, 12 Aug 2025 16:23:59 +0200 Subject: [PATCH 2/3] add missing servo --- src/CommandMessenger.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/CommandMessenger.cpp b/src/CommandMessenger.cpp index b65f86da..1e3bd1ec 100644 --- a/src/CommandMessenger.cpp +++ b/src/CommandMessenger.cpp @@ -92,6 +92,14 @@ void PowerSavingWrapper_OutputShifter_OnSet() } #endif +#ifdef MF_SERVO_SUPPORT +void PowerSavingWrapper_Servo_OnSet() +{ + trackCommand(); + Servos::OnSet(); +} +#endif + #ifdef MF_CUSTOMDEVICE_SUPPORT void PowerSavingWrapper_CustomDevice_OnSet() { @@ -124,7 +132,7 @@ void attachCommandCallbacks() #endif #ifdef MF_SERVO_SUPPORT - cmdMessenger.attach(kSetServo, Servos::OnSet); + cmdMessenger.attach(kSetServo, PowerSavingWrapper_Servo_OnSet); #endif cmdMessenger.attach(kGetInfo, OnGetInfo); From 302bb7668084bf8a1c74c7447cb7f2c3cc7bb4e9 Mon Sep 17 00:00:00 2001 From: elral <3263285+elral@users.noreply.github.com> Date: Tue, 12 Aug 2025 21:06:22 +0200 Subject: [PATCH 3/3] fixed wrong function call for 7 segment single element --- src/CommandMessenger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CommandMessenger.cpp b/src/CommandMessenger.cpp index 1e3bd1ec..edb4f859 100644 --- a/src/CommandMessenger.cpp +++ b/src/CommandMessenger.cpp @@ -64,7 +64,7 @@ void PowerSavingWrapper_LedSegmentModule_OnSet() void PowerSavingWrapper_LedSegmentSingleSegment_OnSet() { trackCommand(); - LedSegment::OnSetModule(); + LedSegment::OnSetModuleSingleSegment(); } #endif