Remove inverted types, add inverted parameter and add DAC

This commit is contained in:
fvanroie 2021-05-04 02:19:03 +02:00
parent a9a0492372
commit a8a34a1528
2 changed files with 40 additions and 45 deletions

View File

@ -18,6 +18,7 @@ struct hasp_gpio_config_t
uint8_t gpio_function; // INPUT, OUTPUT, PULLUP, etc uint8_t gpio_function; // INPUT, OUTPUT, PULLUP, etc
uint16_t val; uint16_t val;
uint16_t max; uint16_t max;
bool inverted;
}; };
void gpioSetup(void); void gpioSetup(void);
@ -25,7 +26,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, int16_t val, int16_t min, int16_t max); void gpio_set_normalized_group_values(uint8_t group, int32_t val, int32_t min, int32_t max);
// void gpio_set_gpio_state(uint8_t pin, uint16_t state); // void gpio_set_gpio_state(uint8_t pin, uint16_t state);
bool gpio_get_value(uint8_t pin, uint16_t& val); bool gpio_get_value(uint8_t pin, uint16_t& val);
bool gpio_set_pin_value(uint8_t pin, int32_t val); bool gpio_set_pin_value(uint8_t pin, int32_t val);
@ -48,44 +49,45 @@ bool gpioSetConfig(const JsonObject& settings);
#define HASP_GPIO_FREE 0x00 #define HASP_GPIO_FREE 0x00
#define HASP_GPIO_USED 0x01 #define HASP_GPIO_USED 0x01
#define HASP_GPIO_SWITCH 0x02 // User Inputs #define HASP_GPIO_SWITCH 0x02 // User Inputs
#define HASP_GPIO_SWITCH_INVERTED 0x03 // #define HASP_GPIO_SWITCH_INVERTED 0x03
#define HASP_GPIO_BUTTON 0x04 #define HASP_GPIO_BUTTON 0x04
#define HASP_GPIO_BUTTON_INVERTED 0x05 // #define HASP_GPIO_BUTTON_INVERTED 0x05
#define HASP_GPIO_TOUCH 0x06 #define HASP_GPIO_TOUCH 0x06
#define HASP_GPIO_TOUCH_INVERTED 0x07 // #define HASP_GPIO_TOUCH_INVERTED 0x07
#define HASP_GPIO_COUNTER_RISE 0x10 // User Counters #define HASP_GPIO_COUNTER_RISE 0x10 // User Counters
#define HASP_GPIO_COUNTER_RISE_INVERTED 0x11 // #define HASP_GPIO_COUNTER_RISE_INVERTED 0x11
#define HASP_GPIO_COUNTER_FALL 0x12 #define HASP_GPIO_COUNTER_FALL 0x12
#define HASP_GPIO_COUNTER_FALL_INVERTED 0x13 // #define HASP_GPIO_COUNTER_FALL_INVERTED 0x13
#define HASP_GPIO_COUNTER_BOTH 0x14 #define HASP_GPIO_COUNTER_BOTH 0x14
#define HASP_GPIO_COUNTER_BOTH_INVERTED 0x15 // #define HASP_GPIO_COUNTER_BOTH_INVERTED 0x15
#define HASP_GPIO_RELAY 0x20 // User Outputs #define HASP_GPIO_RELAY 0x20 // User Outputs
#define HASP_GPIO_RELAY_INVERTED 0x21 // #define HASP_GPIO_RELAY_INVERTED 0x21
#define HASP_GPIO_ALL_LEDS 0x22 ... 0x2F
#define HASP_GPIO_LED 0x22 #define HASP_GPIO_LED 0x22
#define HASP_GPIO_LED_INVERTED 0x23 // #define HASP_GPIO_LED_INVERTED 0x23
#define HASP_GPIO_LED_R 0x24 #define HASP_GPIO_LED_R 0x24
#define HASP_GPIO_LED_R_INVERTED 0x25 // #define HASP_GPIO_LED_R_INVERTED 0x25
#define HASP_GPIO_LED_G 0x26 #define HASP_GPIO_LED_G 0x26
#define HASP_GPIO_LED_G_INVERTED 0x27 // #define HASP_GPIO_LED_G_INVERTED 0x27
#define HASP_GPIO_LED_B 0x28 #define HASP_GPIO_LED_B 0x28
#define HASP_GPIO_LED_B_INVERTED 0x29 // #define HASP_GPIO_LED_B_INVERTED 0x29
#define HASP_GPIO_LED_W 0x2A #define HASP_GPIO_LED_W 0x2A
#define HASP_GPIO_LED_W_INVERTED 0x2B // #define HASP_GPIO_LED_W_INVERTED 0x2B
#define HASP_GPIO_LED_WW 0x2C #define HASP_GPIO_LED_WW 0x2C
#define HASP_GPIO_LED_WW_INVERTED 0x2D // #define HASP_GPIO_LED_WW_INVERTED 0x2D
#define HASP_GPIO_LED_CW 0x2E #define HASP_GPIO_LED_CW 0x2E
#define HASP_GPIO_LED_CW_INVERTED 0x2F // #define HASP_GPIO_LED_CW_INVERTED 0x2F
#define HASP_GPIO_BUZZER 0x30
#define HASP_GPIO_BUZZER_INVERTED 0x31
#define HASP_GPIO_HAPTIC 0x32
#define HASP_GPIO_HAPTIC_INVERTED 0x33
#define HASP_GPIO_PWM 0x40 #define HASP_GPIO_PWM 0x40
#define HASP_GPIO_PWM_INVERTED 0x41 // #define HASP_GPIO_PWM_INVERTED 0x41
#define HASP_GPIO_DAC 0x50 #define HASP_GPIO_DAC 0x50
#define HASP_GPIO_DAC_INVERTED 0x51 // #define HASP_GPIO_DAC_INVERTED 0x51
#define HASP_GPIO_ADC 0x52 #define HASP_GPIO_ADC 0x52
#define HASP_GPIO_ADC_INVERTED 0x53 // #define HASP_GPIO_ADC_INVERTED 0x53
#define HASP_GPIO_SERIAL_DIMMER 0x60 #define HASP_GPIO_SERIAL_DIMMER 0x60
#define HASP_GPIO_BUZZER 0x70
// #define HASP_GPIO_BUZZER_INVERTED 0x71
#define HASP_GPIO_HAPTIC 0x72
// #define HASP_GPIO_HAPTIC_INVERTED 0x73
#define HASP_GPIO_USER 0xFF #define HASP_GPIO_USER 0xFF
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1547,31 +1547,25 @@ void webHandleGpioConfig()
httpMessage += haspDevice.gpio_name(gpio).c_str(); httpMessage += haspDevice.gpio_name(gpio).c_str();
httpMessage += F("</td><td>"); httpMessage += F("</td><td>");
switch(conf.type & 0xfe) { switch(conf.type) {
case HASP_GPIO_SWITCH: case HASP_GPIO_SWITCH:
// case HASP_GPIO_SWITCH_INVERTED:
httpMessage += F("Switch"); httpMessage += F("Switch");
break; break;
case HASP_GPIO_BUTTON: case HASP_GPIO_BUTTON:
// case HASP_GPIO_BUTTON_INVERTED:
httpMessage += F("Button"); httpMessage += F("Button");
break; break;
case HASP_GPIO_LED: case HASP_GPIO_LED:
// case HASP_GPIO_LED_INVERTED:
httpMessage += F("Led"); httpMessage += F("Led");
break; break;
case HASP_GPIO_LED_R: case HASP_GPIO_LED_R:
case HASP_GPIO_LED_G: case HASP_GPIO_LED_G:
case HASP_GPIO_LED_B: case HASP_GPIO_LED_B:
// case HASP_GPIO_LED_INVERTED:
httpMessage += F("Mood "); httpMessage += F("Mood ");
break; break;
case HASP_GPIO_RELAY: case HASP_GPIO_RELAY:
// case HASP_GPIO_RELAY_INVERTED:
httpMessage += F("Relay"); httpMessage += F("Relay");
break; break;
case HASP_GPIO_PWM: case HASP_GPIO_PWM:
// case HASP_GPIO_PWM_INVERTED:
httpMessage += F("PWM"); httpMessage += F("PWM");
break; break;
case HASP_GPIO_SERIAL_DIMMER: case HASP_GPIO_SERIAL_DIMMER:
@ -1581,7 +1575,7 @@ void webHandleGpioConfig()
httpMessage += F("Unknown"); httpMessage += F("Unknown");
} }
switch(conf.type & 0xfe) { switch(conf.type) {
case HASP_GPIO_LED_R: case HASP_GPIO_LED_R:
httpMessage += F("Red"); httpMessage += F("Red");
break; break;
@ -1596,7 +1590,7 @@ void webHandleGpioConfig()
httpMessage += F("</td><td>"); httpMessage += F("</td><td>");
httpMessage += conf.group; httpMessage += conf.group;
httpMessage += F("</td><td>"); httpMessage += F("</td><td>");
httpMessage += (conf.type & 0x1) ? F("High") : F("Low"); httpMessage += (conf.inverted) ? F("Inverted") : F("Normal");
httpMessage += F("</td><td><a href='/config/gpio/options?id="); httpMessage += F("</td><td><a href='/config/gpio/options?id=");
httpMessage += id; httpMessage += id;
@ -1669,34 +1663,36 @@ void webHandleGpioOptions()
bool selected; bool selected;
httpMessage += F("<p><b>Type</b> <select id='type' name='type'>"); httpMessage += F("<p><b>Type</b> <select id='type' name='type'>");
// httpMessage += getOption(HASP_GPIO_FREE, F("Unused"), false);
selected = (conf.type == HASP_GPIO_SWITCH) || (conf.type == HASP_GPIO_SWITCH_INVERTED); selected = (conf.type == HASP_GPIO_SWITCH);
httpMessage += getOption(HASP_GPIO_SWITCH, F("Switch"), selected); httpMessage += getOption(HASP_GPIO_SWITCH, F("Switch"), selected);
selected = (conf.type == HASP_GPIO_BUTTON) || (conf.type == HASP_GPIO_BUTTON_INVERTED); selected = (conf.type == HASP_GPIO_BUTTON);
httpMessage += getOption(HASP_GPIO_BUTTON, F("Button"), selected); httpMessage += getOption(HASP_GPIO_BUTTON, F("Button"), selected);
selected = (conf.type == HASP_GPIO_LED) || (conf.type == HASP_GPIO_LED_INVERTED); selected = (conf.type == HASP_GPIO_LED);
httpMessage += getOption(HASP_GPIO_LED, F("Led"), selected); httpMessage += getOption(HASP_GPIO_LED, F("Led"), selected);
selected = (conf.type == HASP_GPIO_LED_R) || (conf.type == HASP_GPIO_LED_R_INVERTED); selected = (conf.type == HASP_GPIO_LED_R);
httpMessage += getOption(HASP_GPIO_LED_R, F("Mood Red"), selected); httpMessage += getOption(HASP_GPIO_LED_R, F("Mood Red"), selected);
selected = (conf.type == HASP_GPIO_LED_G) || (conf.type == HASP_GPIO_LED_G_INVERTED); selected = (conf.type == HASP_GPIO_LED_G);
httpMessage += getOption(HASP_GPIO_LED_G, F("Mood Green"), selected); httpMessage += getOption(HASP_GPIO_LED_G, F("Mood Green"), selected);
selected = (conf.type == HASP_GPIO_LED_B) || (conf.type == HASP_GPIO_LED_B_INVERTED); selected = (conf.type == HASP_GPIO_LED_B);
httpMessage += getOption(HASP_GPIO_LED_B, F("Mood Blue"), selected); httpMessage += getOption(HASP_GPIO_LED_B, F("Mood Blue"), selected);
selected = (conf.type == HASP_GPIO_RELAY) || (conf.type == HASP_GPIO_RELAY_INVERTED); selected = (conf.type == HASP_GPIO_RELAY);
httpMessage += getOption(HASP_GPIO_RELAY, F("Relay"), selected); httpMessage += getOption(HASP_GPIO_RELAY, F("Relay"), selected);
selected = (conf.type == HASP_GPIO_RELAY);
httpMessage += getOption(HASP_GPIO_RELAY, F("DAC"), selected);
selected = (conf.type == HASP_GPIO_SERIAL_DIMMER); selected = (conf.type == HASP_GPIO_SERIAL_DIMMER);
httpMessage += getOption(HASP_GPIO_SERIAL_DIMMER, F("Serial Dimmer"), selected); httpMessage += getOption(HASP_GPIO_SERIAL_DIMMER, F("Serial Dimmer"), selected);
if(digitalPinHasPWM(webServer.arg(0).toInt())) { if(digitalPinHasPWM(webServer.arg(0).toInt())) {
selected = (conf.type == HASP_GPIO_PWM) || (conf.type == HASP_GPIO_PWM_INVERTED); selected = (conf.type == HASP_GPIO_PWM);
httpMessage += getOption(HASP_GPIO_PWM, F("PWM"), selected); httpMessage += getOption(HASP_GPIO_PWM, F("PWM"), selected);
} }
httpMessage += F("</select></p>"); httpMessage += F("</select></p>");
@ -1713,11 +1709,8 @@ void webHandleGpioOptions()
httpMessage += F("</select></p>"); httpMessage += F("</select></p>");
httpMessage += F("<p><b>Default State</b> <select id='state' name='state'>"); httpMessage += F("<p><b>Default State</b> <select id='state' name='state'>");
bool inverted = (conf.type == HASP_GPIO_BUTTON_INVERTED) || (conf.type == HASP_GPIO_SWITCH_INVERTED) || httpMessage += getOption(0, F("Normal"), !conf.inverted);
(conf.type == HASP_GPIO_LED_INVERTED) || (conf.type == HASP_GPIO_RELAY_INVERTED) || httpMessage += getOption(1, F("Inverted"), conf.inverted);
(conf.type == HASP_GPIO_PWM_INVERTED);
httpMessage += getOption(1, F("High"), inverted);
httpMessage += getOption(0, F("Low"), !inverted);
httpMessage += F("</select></p>"); httpMessage += F("</select></p>");
httpMessage += httpMessage +=