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;
}
if(gpioIsSystemPin(gpioConfig[i].pin)) {
LOG_WARNING(TAG_GPIO, F("Invalid pin %d"), gpioConfig[i].pin);
// continue;
}
switch(gpioConfig[i].type) {
case HASP_GPIO_SWITCH:
gpioAddSwitch(gpioConfig[i].pin, input_mode, HIGH, i);
@ -320,7 +325,7 @@ void gpioLoop(void)
/* ********************************* State Setters *************************************** */
void gpio_get_value(hasp_gpio_config_t gpio)
bool gpio_get_value(hasp_gpio_config_t gpio)
{
char payload[32];
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);
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++) {
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);
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;
@ -347,7 +354,7 @@ void gpio_set_value(hasp_gpio_config_t& gpio, int16_t val)
inverted = true;
case HASP_GPIO_RELAY:
gpio.val = val > 0 ? HIGH : LOW;
digitalWrite(gpio.pin, inverted ? gpio.val : !gpio.val);
digitalWrite(gpio.pin, inverted ? !gpio.val : gpio.val);
break;
case HASP_GPIO_LED_INVERTED:
@ -396,18 +403,20 @@ void gpio_set_value(hasp_gpio_config_t& gpio, int16_t val)
}
default:
return;
return false;
}
gpio_get_value(gpio);
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++) {
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);
return false;
}
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 gpio_function; // INPUT, OUTPUT, PULLUP, etc
uint16_t val;
uint16_t max;
};
void gpioSetup(void);
@ -26,8 +27,8 @@ 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_gpio_state(uint8_t pin, uint16_t state);
void gpio_get_value(uint8_t pin);
void gpio_set_value(uint8_t pin, int16_t val);
bool gpio_get_value(uint8_t pin);
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_discovery(JsonArray& relay, JsonArray& led);