mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 05:06:44 +00:00
Change normalized functions to use val, min & max
This commit is contained in:
parent
b8bbf0c642
commit
33aaa68f74
@ -251,7 +251,7 @@ void dispatch_command(const char* topic, const char* payload)
|
||||
|
||||
if(strlen(topic) == 7 && topic == strstr_P(topic, PSTR("output"))) {
|
||||
int16_t state = atoi(payload);
|
||||
dispatch_normalized_group_value(atoi(topic + 6), state, NULL); // + 6 => trim 'output' from the topic
|
||||
dispatch_normalized_group_value(atoi(topic + 6), NULL, state, 0, 1); // + 6 => trim 'output' from the topic
|
||||
|
||||
// } else if(strcasecmp_P(topic, PSTR("screenshot")) == 0) {
|
||||
// guiTakeScreenshot("/screenshot.bmp"); // Literal String
|
||||
@ -684,12 +684,12 @@ static inline void dispatch_state_msg(const __FlashStringHelper* subtopic, const
|
||||
// // dispatch_output_group_state(groupid, payload);
|
||||
// }
|
||||
|
||||
void dispatch_normalized_group_value(uint8_t groupid, uint16_t value, lv_obj_t* obj)
|
||||
void dispatch_normalized_group_value(uint8_t groupid, lv_obj_t* obj, int16_t val, int16_t min, int16_t max)
|
||||
{
|
||||
if(groupid > 0) {
|
||||
LOG_VERBOSE(TAG_MSGR, F("GROUP %d value %d"), groupid, value);
|
||||
LOG_VERBOSE(TAG_MSGR, F("GROUP %d value %d (%d-%d)"), groupid, val, min, max);
|
||||
#if HASP_USE_GPIO > 0
|
||||
gpio_set_normalized_group_value(groupid, value);
|
||||
gpio_set_normalized_group_value(groupid, val, min, max);
|
||||
#endif
|
||||
// object_set_group_state(groupid, value, obj);
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ bool dispatch_get_event_state(uint8_t eventid);
|
||||
void dispatch_get_event_name(uint8_t eventid, char* buffer, size_t size);
|
||||
void dispatch_object_value_changed(lv_obj_t* obj, int16_t state);
|
||||
|
||||
void dispatch_normalized_group_value(uint8_t groupid, uint16_t value, lv_obj_t* obj);
|
||||
void dispatch_normalized_group_value(uint8_t groupid, lv_obj_t* obj, int16_t val, int16_t min, int16_t max);
|
||||
|
||||
void dispatch_send_obj_attribute_str(uint8_t pageid, uint8_t btnid, const char* attribute, const char* data);
|
||||
void dispatch_send_obj_attribute_int(uint8_t pageid, uint8_t btnid, const char* attribute, int32_t val);
|
||||
|
@ -90,7 +90,7 @@ static void gpio_event_handler(AceButton* button, uint8_t eventType, uint8_t but
|
||||
|
||||
dispatch_gpio_input_event(gpioConfig[btnid].pin, gpioConfig[btnid].group, eventid);
|
||||
if(eventid != HASP_EVENT_LONG) // do not repeat DOWN + LONG
|
||||
dispatch_normalized_group_value(gpioConfig[btnid].group, NORMALIZE(state, 0, 1), NULL);
|
||||
dispatch_normalized_group_value(gpioConfig[btnid].group, NULL, state, HASP_EVENT_OFF, HASP_EVENT_ON);
|
||||
}
|
||||
|
||||
void aceButtonSetup(void)
|
||||
@ -279,15 +279,20 @@ void gpioSetup()
|
||||
}
|
||||
|
||||
/* ********************************* State Setters *************************************** */
|
||||
void gpio_set_normalized_value(hasp_gpio_config_t gpio, uint16_t state)
|
||||
void gpio_set_normalized_value(hasp_gpio_config_t gpio, int16_t val, int16_t min, int16_t max)
|
||||
{
|
||||
if(min == max) {
|
||||
LOG_ERROR(TAG_GPIO, F("Invalid value range"));
|
||||
return;
|
||||
}
|
||||
|
||||
switch(gpio.type) {
|
||||
case HASP_GPIO_RELAY:
|
||||
gpio.val = state >= 0x8000U ? HIGH : LOW;
|
||||
gpio.val = map(val, min, max, 0, 1) ? HIGH : LOW;
|
||||
digitalWrite(gpio.pin, gpio.val);
|
||||
break;
|
||||
case HASP_GPIO_RELAY_INVERTED:
|
||||
gpio.val = state >= 0x8000U ? LOW : HIGH;
|
||||
gpio.val = map(val, min, max, 0, 1) ? LOW : HIGH;
|
||||
digitalWrite(gpio.pin, gpio.val);
|
||||
break;
|
||||
case HASP_GPIO_LED:
|
||||
@ -295,19 +300,19 @@ void gpio_set_normalized_value(hasp_gpio_config_t gpio, uint16_t state)
|
||||
case HASP_GPIO_LED_G:
|
||||
case HASP_GPIO_LED_B:
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
gpio.val = map(state, 0, 0xFFFFU, 0, 4095);
|
||||
gpio.val = map(val, min, max, 0, 4095);
|
||||
ledcWrite(gpio.group, gpio.val); // ledChannel and value
|
||||
#else
|
||||
gpio.val = map(state, 0, 0xFFFFU, 0, 1023);
|
||||
gpio.val = map(val, min, max, 0, 1023);
|
||||
analogWrite(gpio.pin, gpio.val);
|
||||
#endif
|
||||
break;
|
||||
case HASP_GPIO_PWM:
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
gpio.val = map(state, 0, 0xFFFFU, 0, 4095);
|
||||
gpio.val = map(val, min, max, 0, 4095);
|
||||
ledcWrite(gpio.group, gpio.val); // ledChannel and value
|
||||
#else
|
||||
gpio.val = map(state, 0, 0xFFFFU, 0, 1023);
|
||||
gpio.val = map(val, min, max, 0, 1023);
|
||||
analogWrite(gpio.pin, gpio.val);
|
||||
#endif
|
||||
break;
|
||||
@ -317,10 +322,10 @@ void gpio_set_normalized_value(hasp_gpio_config_t gpio, uint16_t state)
|
||||
case HASP_GPIO_LED_B_INVERTED:
|
||||
case HASP_GPIO_PWM_INVERTED:
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
gpio.val = map(0xFFFFU - state, 0, 0xFFFFU, 0, 4095);
|
||||
gpio.val = map(val, min, max, 0, 4095);
|
||||
ledcWrite(gpio.group, gpio.val); // ledChannel and value
|
||||
#else
|
||||
gpio.val = map(0xFFFFU - state, 0, 0xFFFFU, 0, 1023);
|
||||
gpio.val = map(val, min, max, 0, 1023);
|
||||
analogWrite(gpio.pin, gpio.val);
|
||||
#endif
|
||||
break;
|
||||
@ -340,12 +345,17 @@ void gpio_set_normalized_value(hasp_gpio_config_t gpio, uint16_t state)
|
||||
// }
|
||||
// }
|
||||
|
||||
void gpio_set_normalized_group_value(uint8_t groupid, uint16_t state)
|
||||
void gpio_set_normalized_group_value(uint8_t groupid, int16_t val, int16_t min, int16_t max)
|
||||
{
|
||||
if(min == max) {
|
||||
LOG_ERROR(TAG_GPIO, F("Invalid value range"));
|
||||
return;
|
||||
}
|
||||
|
||||
// bool state = dispatch_get_event_state(eventid);
|
||||
for(uint8_t i = 0; i < HASP_NUM_GPIO_CONFIG; i++) {
|
||||
if(gpioConfig[i].group == groupid) {
|
||||
gpio_set_normalized_value(gpioConfig[i], state);
|
||||
gpio_set_normalized_value(gpioConfig[i], val, min, max);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -359,15 +369,15 @@ void gpio_set_moodlight(uint8_t r, uint8_t g, uint8_t b)
|
||||
switch(gpioConfig[i].type) {
|
||||
case HASP_GPIO_LED_R:
|
||||
case HASP_GPIO_LED_R_INVERTED:
|
||||
gpio_set_normalized_value(gpioConfig[i], map(r, 0, 0xFF, 0, max_level));
|
||||
gpio_set_normalized_value(gpioConfig[i], r, 0, 0xFF);
|
||||
break;
|
||||
case HASP_GPIO_LED_G:
|
||||
case HASP_GPIO_LED_G_INVERTED:
|
||||
gpio_set_normalized_value(gpioConfig[i], map(g, 0, 0xFF, 0, max_level));
|
||||
gpio_set_normalized_value(gpioConfig[i], g, 0, 0xFF);
|
||||
break;
|
||||
case HASP_GPIO_LED_B:
|
||||
case HASP_GPIO_LED_B_INVERTED:
|
||||
gpio_set_normalized_value(gpioConfig[i], map(b, 0, 0xFF, 0, max_level));
|
||||
gpio_set_normalized_value(gpioConfig[i], b, 0, 0xFF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ void gpioLoop(void);
|
||||
void gpioEvery5Seconds(void);
|
||||
|
||||
// void gpio_set_group_onoff(uint8_t groupid, bool ison);
|
||||
void gpio_set_normalized_group_value(uint8_t groupid, uint16_t state);
|
||||
void gpio_set_normalized_group_value(uint8_t groupid, int16_t val, int16_t min, int16_t max);
|
||||
// void gpio_set_gpio_state(uint8_t pin, uint16_t state);
|
||||
void gpio_set_moodlight(uint8_t r, uint8_t g, uint8_t b);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user