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
uint16_t val;
uint16_t max;
bool inverted;
};
void gpioSetup(void);
@ -25,7 +26,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, 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);
bool gpio_get_value(uint8_t pin, uint16_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_USED 0x01
#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_INVERTED 0x05
// #define HASP_GPIO_BUTTON_INVERTED 0x05
#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_INVERTED 0x11
// #define HASP_GPIO_COUNTER_RISE_INVERTED 0x11
#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_INVERTED 0x15
// #define HASP_GPIO_COUNTER_BOTH_INVERTED 0x15
#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_INVERTED 0x23
// #define HASP_GPIO_LED_INVERTED 0x23
#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_INVERTED 0x27
// #define HASP_GPIO_LED_G_INVERTED 0x27
#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_INVERTED 0x2B
// #define HASP_GPIO_LED_W_INVERTED 0x2B
#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_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_LED_CW_INVERTED 0x2F
#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_INVERTED 0x51
// #define HASP_GPIO_DAC_INVERTED 0x51
#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_BUZZER 0x70
// #define HASP_GPIO_BUZZER_INVERTED 0x71
#define HASP_GPIO_HAPTIC 0x72
// #define HASP_GPIO_HAPTIC_INVERTED 0x73
#define HASP_GPIO_USER 0xFF
#ifdef __cplusplus

View File

@ -1547,31 +1547,25 @@ void webHandleGpioConfig()
httpMessage += haspDevice.gpio_name(gpio).c_str();
httpMessage += F("</td><td>");
switch(conf.type & 0xfe) {
switch(conf.type) {
case HASP_GPIO_SWITCH:
// case HASP_GPIO_SWITCH_INVERTED:
httpMessage += F("Switch");
break;
case HASP_GPIO_BUTTON:
// case HASP_GPIO_BUTTON_INVERTED:
httpMessage += F("Button");
break;
case HASP_GPIO_LED:
// case HASP_GPIO_LED_INVERTED:
httpMessage += F("Led");
break;
case HASP_GPIO_LED_R:
case HASP_GPIO_LED_G:
case HASP_GPIO_LED_B:
// case HASP_GPIO_LED_INVERTED:
httpMessage += F("Mood ");
break;
case HASP_GPIO_RELAY:
// case HASP_GPIO_RELAY_INVERTED:
httpMessage += F("Relay");
break;
case HASP_GPIO_PWM:
// case HASP_GPIO_PWM_INVERTED:
httpMessage += F("PWM");
break;
case HASP_GPIO_SERIAL_DIMMER:
@ -1581,7 +1575,7 @@ void webHandleGpioConfig()
httpMessage += F("Unknown");
}
switch(conf.type & 0xfe) {
switch(conf.type) {
case HASP_GPIO_LED_R:
httpMessage += F("Red");
break;
@ -1596,7 +1590,7 @@ void webHandleGpioConfig()
httpMessage += F("</td><td>");
httpMessage += conf.group;
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 += id;
@ -1669,34 +1663,36 @@ void webHandleGpioOptions()
bool selected;
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);
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);
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);
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);
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);
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);
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);
selected = (conf.type == HASP_GPIO_RELAY);
httpMessage += getOption(HASP_GPIO_RELAY, F("DAC"), selected);
selected = (conf.type == HASP_GPIO_SERIAL_DIMMER);
httpMessage += getOption(HASP_GPIO_SERIAL_DIMMER, F("Serial Dimmer"), selected);
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 += F("</select></p>");
@ -1713,11 +1709,8 @@ void webHandleGpioOptions()
httpMessage += F("</select></p>");
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) ||
(conf.type == HASP_GPIO_LED_INVERTED) || (conf.type == HASP_GPIO_RELAY_INVERTED) ||
(conf.type == HASP_GPIO_PWM_INVERTED);
httpMessage += getOption(1, F("High"), inverted);
httpMessage += getOption(0, F("Low"), !inverted);
httpMessage += getOption(0, F("Normal"), !conf.inverted);
httpMessage += getOption(1, F("Inverted"), conf.inverted);
httpMessage += F("</select></p>");
httpMessage +=