Add gpio_set_digital_value #464

This commit is contained in:
fvanroie 2023-05-17 17:40:33 +02:00
parent c47a1b9b5d
commit dd0c862aad

View File

@ -521,6 +521,21 @@ static inline bool gpio_set_analog_value(hasp_gpio_config_t* gpio)
#endif #endif
} }
// val is assumed to be 12 bits
static inline bool gpio_set_digital_value(hasp_gpio_config_t* gpio)
{
bool state = gpio->power != 0;
if(gpio->inverted) state = !state;
#if defined(ARDUINO_ARCH_ESP32)
digitalWrite(gpio->pin, state);
return true; // sent
#else
return false; // not implemented
#endif
}
static inline bool gpio_set_serial_dimmer(hasp_gpio_config_t* gpio) static inline bool gpio_set_serial_dimmer(hasp_gpio_config_t* gpio)
{ {
uint16_t val = gpio_limit(gpio->val, 0, 255); uint16_t val = gpio_limit(gpio->val, 0, 255);
@ -588,8 +603,7 @@ static bool gpio_set_output_value(hasp_gpio_config_t* gpio, bool power, uint16_t
switch(gpio->type) { switch(gpio->type) {
case hasp_gpio_type_t::POWER_RELAY: case hasp_gpio_type_t::POWER_RELAY:
case hasp_gpio_type_t::LIGHT_RELAY: case hasp_gpio_type_t::LIGHT_RELAY:
digitalWrite(gpio->pin, power ? (gpio->inverted ? !gpio->val : gpio->val) : 0); return gpio_set_digital_value(gpio);
return true;
case hasp_gpio_type_t::LED... hasp_gpio_type_t::LED_W: case hasp_gpio_type_t::LED... hasp_gpio_type_t::LED_W:
case hasp_gpio_type_t::PWM: case hasp_gpio_type_t::PWM: