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"))) {
|
if(strlen(topic) == 7 && topic == strstr_P(topic, PSTR("output"))) {
|
||||||
int16_t state = atoi(payload);
|
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) {
|
// } else if(strcasecmp_P(topic, PSTR("screenshot")) == 0) {
|
||||||
// guiTakeScreenshot("/screenshot.bmp"); // Literal String
|
// 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);
|
// // 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) {
|
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
|
#if HASP_USE_GPIO > 0
|
||||||
gpio_set_normalized_group_value(groupid, value);
|
gpio_set_normalized_group_value(groupid, val, min, max);
|
||||||
#endif
|
#endif
|
||||||
// object_set_group_state(groupid, value, obj);
|
// 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_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_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_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);
|
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);
|
dispatch_gpio_input_event(gpioConfig[btnid].pin, gpioConfig[btnid].group, eventid);
|
||||||
if(eventid != HASP_EVENT_LONG) // do not repeat DOWN + LONG
|
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)
|
void aceButtonSetup(void)
|
||||||
@ -279,15 +279,20 @@ void gpioSetup()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ********************************* State Setters *************************************** */
|
/* ********************************* 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) {
|
switch(gpio.type) {
|
||||||
case HASP_GPIO_RELAY:
|
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);
|
digitalWrite(gpio.pin, gpio.val);
|
||||||
break;
|
break;
|
||||||
case HASP_GPIO_RELAY_INVERTED:
|
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);
|
digitalWrite(gpio.pin, gpio.val);
|
||||||
break;
|
break;
|
||||||
case HASP_GPIO_LED:
|
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_G:
|
||||||
case HASP_GPIO_LED_B:
|
case HASP_GPIO_LED_B:
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#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
|
ledcWrite(gpio.group, gpio.val); // ledChannel and value
|
||||||
#else
|
#else
|
||||||
gpio.val = map(state, 0, 0xFFFFU, 0, 1023);
|
gpio.val = map(val, min, max, 0, 1023);
|
||||||
analogWrite(gpio.pin, gpio.val);
|
analogWrite(gpio.pin, gpio.val);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case HASP_GPIO_PWM:
|
case HASP_GPIO_PWM:
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#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
|
ledcWrite(gpio.group, gpio.val); // ledChannel and value
|
||||||
#else
|
#else
|
||||||
gpio.val = map(state, 0, 0xFFFFU, 0, 1023);
|
gpio.val = map(val, min, max, 0, 1023);
|
||||||
analogWrite(gpio.pin, gpio.val);
|
analogWrite(gpio.pin, gpio.val);
|
||||||
#endif
|
#endif
|
||||||
break;
|
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_LED_B_INVERTED:
|
||||||
case HASP_GPIO_PWM_INVERTED:
|
case HASP_GPIO_PWM_INVERTED:
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#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
|
ledcWrite(gpio.group, gpio.val); // ledChannel and value
|
||||||
#else
|
#else
|
||||||
gpio.val = map(0xFFFFU - state, 0, 0xFFFFU, 0, 1023);
|
gpio.val = map(val, min, max, 0, 1023);
|
||||||
analogWrite(gpio.pin, gpio.val);
|
analogWrite(gpio.pin, gpio.val);
|
||||||
#endif
|
#endif
|
||||||
break;
|
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);
|
// bool state = dispatch_get_event_state(eventid);
|
||||||
for(uint8_t i = 0; i < HASP_NUM_GPIO_CONFIG; i++) {
|
for(uint8_t i = 0; i < HASP_NUM_GPIO_CONFIG; i++) {
|
||||||
if(gpioConfig[i].group == groupid) {
|
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) {
|
switch(gpioConfig[i].type) {
|
||||||
case HASP_GPIO_LED_R:
|
case HASP_GPIO_LED_R:
|
||||||
case HASP_GPIO_LED_R_INVERTED:
|
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;
|
break;
|
||||||
case HASP_GPIO_LED_G:
|
case HASP_GPIO_LED_G:
|
||||||
case HASP_GPIO_LED_G_INVERTED:
|
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;
|
break;
|
||||||
case HASP_GPIO_LED_B:
|
case HASP_GPIO_LED_B:
|
||||||
case HASP_GPIO_LED_B_INVERTED:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ void gpioLoop(void);
|
|||||||
void gpioEvery5Seconds(void);
|
void gpioEvery5Seconds(void);
|
||||||
|
|
||||||
// void gpio_set_group_onoff(uint8_t groupid, bool ison);
|
// 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_gpio_state(uint8_t pin, uint16_t state);
|
||||||
void gpio_set_moodlight(uint8_t r, uint8_t g, uint8_t b);
|
void gpio_set_moodlight(uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user