diff --git a/src/new_pins.c b/src/new_pins.c index 9aee49938..9e78cca41 100644 --- a/src/new_pins.c +++ b/src/new_pins.c @@ -1376,6 +1376,7 @@ void CHANNEL_ClearAllChannels() { void CHANNEL_Set_FloatPWM(int ch, float fVal, int iFlags) { int i; + float prevValue = g_channelValuesFloats[ch]; g_channelValues[ch] = (int)fVal; g_channelValuesFloats[ch] = fVal; @@ -1390,6 +1391,9 @@ void CHANNEL_Set_FloatPWM(int ch, float fVal, int iFlags) { } } } + // TODO: support float + EventHandlers_FireEvent(CMD_EVENT_CHANNEL_ONCHANGE, ch); + EventHandlers_ProcessVariableChange_Integer(CMD_EVENT_CHANGE_CHANNEL0 + ch, prevValue, fVal); } void CHANNEL_SetSmart(int ch, float fVal, int iFlags) { if (ch < 0 || ch >= CHANNEL_MAX) diff --git a/src/selftest/selftest_changeHandlers.c b/src/selftest/selftest_changeHandlers.c index d5fd65636..5fc3af3a6 100644 --- a/src/selftest/selftest_changeHandlers.c +++ b/src/selftest/selftest_changeHandlers.c @@ -106,24 +106,21 @@ void Test_ChangeHandlers2() { SIM_ClearOBK(0); SIM_ClearAndPrepareForMQTTTesting("handlerTester", "bekens"); - CMD_ExecuteCommand("setChannel 20 0", 0); - CMD_ExecuteCommand("setChannel 1 0", 0); + CMD_ExecuteCommand("setChannelFloat 20 0", 0); CMD_ExecuteCommand("setChannel 1 0", 0); CMD_ExecuteCommand("addChangeHandler Channel20 != 0 addChannel 1 1", 0); SELFTEST_ASSERT_CHANNEL(20, 0); SELFTEST_ASSERT_CHANNEL(1, 0); - // change handler will fire - CMD_ExecuteCommand("setChannel 20 3", 0); + // change handler will fire-> added 1 to channel 1, now 1 + CMD_ExecuteCommand("setChannelFloat 20 3", 0); SELFTEST_ASSERT_CHANNEL(20, 3); SELFTEST_ASSERT_CHANNEL(1, 1); // change handler will not fire - CMD_ExecuteCommand("setChannel 20 4", 0); + CMD_ExecuteCommand("setChannelFloat 20 4", 0); SELFTEST_ASSERT_CHANNEL(20, 4); SELFTEST_ASSERT_CHANNEL(1, 1); // change handler will not fire - CMD_ExecuteCommand("setChannel 20 0", 0); + CMD_ExecuteCommand("setChannelFloat 20 0", 0); SELFTEST_ASSERT_CHANNEL(20, 0); SELFTEST_ASSERT_CHANNEL(1, 1); - // change handler will fire - CMD_ExecuteCommand("setChannel 20 5", 0); - SELFTEST_ASSERT_CHANNEL(20, 5); SELFTEST_ASSERT_CHANNEL(1, 2); - - + // change handler will fire -> added 1 to channel 1, now 2 + CMD_ExecuteCommand("setChannelFloat 20 5", 0); + SELFTEST_ASSERT_CHANNEL(20, 5); SELFTEST_ASSERT_CHANNEL(1, 2); } void Test_ChangeHandlers_EnsureThatChannelVariableIsExpandedAtHandlerRunTime() {