diff --git a/src/cmnds/cmd_newLEDDriver.c b/src/cmnds/cmd_newLEDDriver.c index 5a7e099bd..074207f37 100644 --- a/src/cmnds/cmd_newLEDDriver.c +++ b/src/cmnds/cmd_newLEDDriver.c @@ -578,6 +578,28 @@ int LED_IsRunningDriver() { float LED_GetDimmer() { return g_brightness / g_cfg_brightnessMult; } +void LED_AddTemperature(int iVal, bool wrapAroundInsteadOfClamp) { + float cur; + + cur = led_temperature_current; + + cur += iVal; + + if (wrapAroundInsteadOfClamp == 0) { + if (cur < led_temperature_min) + cur = led_temperature_min; + if (cur > led_temperature_max) + cur = led_temperature_max; + } + else { + if (cur < led_temperature_min) + cur = led_temperature_max; + if (cur > led_temperature_max) + cur = led_temperature_min; + } + + LED_SetTemperature(cur, true); +} void LED_AddDimmer(int iVal, bool wrapAroundInsteadOfClamp, int minValue) { float cur; @@ -599,6 +621,9 @@ void LED_AddDimmer(int iVal, bool wrapAroundInsteadOfClamp, int minValue) { LED_SetDimmer(cur); } +void LED_NextTemperatureHold() { + LED_AddTemperature(25, true); +} void LED_NextDimmerHold() { // dimmer hold will use some kind of min value, // because it's easy to get confused if we set accidentally dimmer to 0 diff --git a/src/cmnds/cmd_public.h b/src/cmnds/cmd_public.h index 8a29e7e4d..e0d97d8d7 100644 --- a/src/cmnds/cmd_public.h +++ b/src/cmnds/cmd_public.h @@ -155,7 +155,9 @@ void NewLED_InitCommands(); void NewLED_RestoreSavedStateIfNeeded(); float LED_GetDimmer(); void LED_AddDimmer(int iVal, bool wrapAroundInsteadOfClamp, int minValue); +void LED_AddTemperature(int iVal, bool wrapAroundInsteadOfClamp); void LED_NextDimmerHold(); +void LED_NextTemperatureHold(); int LED_IsRunningDriver(); float LED_GetTemperature(); void LED_SetTemperature(int tmpInteger, bool bApply); diff --git a/src/httpserver/new_http.c b/src/httpserver/new_http.c index bb8b866b6..c2caae1f0 100644 --- a/src/httpserver/new_http.c +++ b/src/httpserver/new_http.c @@ -390,8 +390,8 @@ const char* htmlPinRoleNames[] = { "AlwaysLow", "UCS1912_DIN", "SM16703P_DIN", - "error", - "error", + "Btn_NextTemperature", + "Btn_NextTemperature_n", "error", "error", "error", diff --git a/src/new_pins.c b/src/new_pins.c index cba9fc269..0cf8b2af9 100644 --- a/src/new_pins.c +++ b/src/new_pins.c @@ -179,6 +179,11 @@ void Button_OnInitialPressDown(int index) return; } + if (g_cfg.pins.roles[index] == IOR_Button_NextTemperature || g_cfg.pins.roles[index] == IOR_Button_NextTemperature_n) + { + + return; + } // is it a device with RGB/CW/single color/etc LED driver? if(LED_IsRunningDriver()) { LED_ToggleEnabled(); @@ -210,6 +215,10 @@ void Button_OnShortClick(int index) { return; } + if (g_cfg.pins.roles[index] == IOR_Button_NextTemperature || g_cfg.pins.roles[index] == IOR_Button_NextTemperature_n) + { + return; + } // is it a device with RGB/CW/single color/etc LED driver? if(LED_IsRunningDriver()) { LED_ToggleEnabled(); @@ -244,6 +253,9 @@ void Button_OnLongPressHold(int index) { if(g_cfg.pins.roles[index] == IOR_Button_NextDimmer || g_cfg.pins.roles[index] == IOR_Button_NextDimmer_n){ LED_NextDimmerHold(); } + if (g_cfg.pins.roles[index] == IOR_Button_NextTemperature || g_cfg.pins.roles[index] == IOR_Button_NextTemperature_n) { + LED_NextTemperatureHold(); + } } void Button_OnLongPressHoldStart(int index) { addLogAdv(LOG_INFO, LOG_FEATURE_GENERAL,"%i Button_OnLongPressHoldStart\r\n", index); @@ -258,7 +270,8 @@ bool BTN_ShouldInvert(int index) { } if(g_cfg.pins.roles[index] == IOR_Button_n || g_cfg.pins.roles[index] == IOR_Button_ToggleAll_n|| g_cfg.pins.roles[index] == IOR_DigitalInput_n || g_cfg.pins.roles[index] == IOR_DigitalInput_NoPup_n - || g_cfg.pins.roles[index] == IOR_Button_NextColor_n || g_cfg.pins.roles[index] == IOR_Button_NextDimmer_n) { + || g_cfg.pins.roles[index] == IOR_Button_NextColor_n || g_cfg.pins.roles[index] == IOR_Button_NextDimmer_n + || g_cfg.pins.roles[index] == IOR_Button_NextTemperature_n ) { return true; } return false; @@ -324,6 +337,8 @@ void CHANNEL_SetAll(int iVal, int iFlags) { case IOR_Button_NextColor_n: case IOR_Button_NextDimmer: case IOR_Button_NextDimmer_n: + case IOR_Button_NextTemperature: + case IOR_Button_NextTemperature_n: { } @@ -425,6 +440,8 @@ void PIN_SetPinRoleForPinIndex(int index, int role) { case IOR_Button_NextColor_n: case IOR_Button_NextDimmer: case IOR_Button_NextDimmer_n: + case IOR_Button_NextTemperature: + case IOR_Button_NextTemperature_n: { //pinButton_s *bt = &g_buttons[index]; // TODO: disable button @@ -471,6 +488,8 @@ void PIN_SetPinRoleForPinIndex(int index, int role) { case IOR_Button_NextColor_n: case IOR_Button_NextDimmer: case IOR_Button_NextDimmer_n: + case IOR_Button_NextTemperature: + case IOR_Button_NextTemperature_n: { pinButton_s *bt = &g_buttons[index]; @@ -1125,7 +1144,8 @@ void PIN_ticks(void *param) if(g_cfg.pins.roles[i] == IOR_Button || g_cfg.pins.roles[i] == IOR_Button_n || g_cfg.pins.roles[i] == IOR_Button_ToggleAll || g_cfg.pins.roles[i] == IOR_Button_ToggleAll_n || g_cfg.pins.roles[i] == IOR_Button_NextColor || g_cfg.pins.roles[i] == IOR_Button_NextColor_n - || g_cfg.pins.roles[i] == IOR_Button_NextDimmer || g_cfg.pins.roles[i] == IOR_Button_NextDimmer_n) { + || g_cfg.pins.roles[i] == IOR_Button_NextDimmer || g_cfg.pins.roles[i] == IOR_Button_NextDimmer_n + || g_cfg.pins.roles[i] == IOR_Button_NextTemperature || g_cfg.pins.roles[i] == IOR_Button_NextTemperature_n) { //addLogAdv(LOG_INFO, LOG_FEATURE_GENERAL,"Test hold %i\r\n",i); PIN_Input_Handler(i, t_diff); } diff --git a/src/new_pins.h b/src/new_pins.h index 4290a4892..26ac994a5 100644 --- a/src/new_pins.h +++ b/src/new_pins.h @@ -58,6 +58,9 @@ enum IORole { IOR_UCS1912_DIN, IOR_SM16703P_DIN, + IOR_Button_NextTemperature, + IOR_Button_NextTemperature_n, + IOR_Total_Options, };