Add bool return value

This commit is contained in:
fvanroie 2021-04-27 02:53:57 +02:00
parent 669a173cf4
commit cb51dd96d0
2 changed files with 18 additions and 8 deletions

View File

@ -248,6 +248,11 @@ void gpioSetup()
input_mode = INPUT_PULLUP; input_mode = INPUT_PULLUP;
} }
if(gpioIsSystemPin(gpioConfig[i].pin)) {
LOG_WARNING(TAG_GPIO, F("Invalid pin %d"), gpioConfig[i].pin);
// continue;
}
switch(gpioConfig[i].type) { switch(gpioConfig[i].type) {
case HASP_GPIO_SWITCH: case HASP_GPIO_SWITCH:
gpioAddSwitch(gpioConfig[i].pin, input_mode, HIGH, i); gpioAddSwitch(gpioConfig[i].pin, input_mode, HIGH, i);
@ -320,7 +325,7 @@ void gpioLoop(void)
/* ********************************* State Setters *************************************** */ /* ********************************* State Setters *************************************** */
void gpio_get_value(hasp_gpio_config_t gpio) bool gpio_get_value(hasp_gpio_config_t gpio)
{ {
char payload[32]; char payload[32];
char topic[12]; char topic[12];
@ -328,17 +333,19 @@ void gpio_get_value(hasp_gpio_config_t gpio)
snprintf_P(payload, sizeof(payload), PSTR("%d"), gpio.val); snprintf_P(payload, sizeof(payload), PSTR("%d"), gpio.val);
dispatch_state_subtopic(topic, payload); dispatch_state_subtopic(topic, payload);
return true;
} }
void gpio_get_value(uint8_t pin) bool gpio_get_value(uint8_t pin)
{ {
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].pin == pin && gpioConfigInUse(i)) return gpio_get_value(gpioConfig[i]); if(gpioConfig[i].pin == pin && gpioConfigInUse(i)) return gpio_get_value(gpioConfig[i]);
} }
LOG_WARNING(TAG_GPIO, F(D_BULLET "Pin %d is not configured"), pin); LOG_WARNING(TAG_GPIO, F(D_BULLET "Pin %d is not configured"), pin);
return false;
} }
void gpio_set_value(hasp_gpio_config_t& gpio, int16_t val) bool gpio_set_value(hasp_gpio_config_t& gpio, int16_t val)
{ {
bool inverted = false; bool inverted = false;
@ -347,7 +354,7 @@ void gpio_set_value(hasp_gpio_config_t& gpio, int16_t val)
inverted = true; inverted = true;
case HASP_GPIO_RELAY: case HASP_GPIO_RELAY:
gpio.val = val > 0 ? HIGH : LOW; gpio.val = val > 0 ? HIGH : LOW;
digitalWrite(gpio.pin, inverted ? gpio.val : !gpio.val); digitalWrite(gpio.pin, inverted ? !gpio.val : gpio.val);
break; break;
case HASP_GPIO_LED_INVERTED: case HASP_GPIO_LED_INVERTED:
@ -396,18 +403,20 @@ void gpio_set_value(hasp_gpio_config_t& gpio, int16_t val)
} }
default: default:
return; return false;
} }
gpio_get_value(gpio); gpio_get_value(gpio);
LOG_VERBOSE(TAG_GPIO, F("Group %d - Pin %d = %d"), gpio.group, gpio.pin, gpio.val); LOG_VERBOSE(TAG_GPIO, F("Group %d - Pin %d = %d"), gpio.group, gpio.pin, gpio.val);
return true;
} }
void gpio_set_value(uint8_t pin, int16_t val) bool gpio_set_value(uint8_t pin, int16_t val)
{ {
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].pin == pin && gpioConfigInUse(i)) return gpio_set_value(gpioConfig[i], val); if(gpioConfig[i].pin == pin && gpioConfigInUse(i)) return gpio_set_value(gpioConfig[i], val);
} }
LOG_WARNING(TAG_GPIO, F(D_BULLET "Pin %d is not configured"), pin); LOG_WARNING(TAG_GPIO, F(D_BULLET "Pin %d is not configured"), pin);
return false;
} }
void gpio_set_normalized_value(hasp_gpio_config_t gpio, int16_t val, int16_t min, int16_t max) void gpio_set_normalized_value(hasp_gpio_config_t gpio, int16_t val, int16_t min, int16_t max)

View File

@ -17,6 +17,7 @@ struct hasp_gpio_config_t
uint8_t type; // switch, button, ... uint8_t type; // switch, button, ...
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;
}; };
void gpioSetup(void); void gpioSetup(void);
@ -26,8 +27,8 @@ 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_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_get_value(uint8_t pin); bool gpio_get_value(uint8_t pin);
void gpio_set_value(uint8_t pin, int16_t val); bool gpio_set_value(uint8_t pin, int16_t val);
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);
void gpio_discovery(JsonArray& relay, JsonArray& led); void gpio_discovery(JsonArray& relay, JsonArray& led);