From 6b613eaf38637bb2d0bc4368cfc2b6476a55173e Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Sun, 23 May 2021 22:57:05 +0200 Subject: [PATCH] Fake gpio inputs for native --- src/main_sdl2.cpp | 1 + src/sys/gpio/hasp_gpio.cpp | 11 +++++++++++ src/sys/gpio/hasp_gpio.h | 10 ++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main_sdl2.cpp b/src/main_sdl2.cpp index cb85b61a..99d6eea5 100644 --- a/src/main_sdl2.cpp +++ b/src/main_sdl2.cpp @@ -170,6 +170,7 @@ void loop() if(mainLoopCounter == 0 || mainLoopCounter == 5) { haspDevice.loop_5s(); + gpioEvery5Seconds(); } /* Reset loop counter every 10 seconds */ diff --git a/src/sys/gpio/hasp_gpio.cpp b/src/sys/gpio/hasp_gpio.cpp index 921a3e60..adf483ae 100644 --- a/src/sys/gpio/hasp_gpio.cpp +++ b/src/sys/gpio/hasp_gpio.cpp @@ -325,6 +325,7 @@ void gpioSetup(void) gpioSavePinConfig(1, 4, hasp_gpio_type_t::LIGHT_RELAY, 0, -1, false); gpioSavePinConfig(2, 13, hasp_gpio_type_t::LED, 0, -1, false); gpioSavePinConfig(3, 14, hasp_gpio_type_t::DAC, 0, -1, false); + gpioSavePinConfig(4, 5, hasp_gpio_type_t::MOTION, 0, -1, false); } IRAM_ATTR void gpioLoop(void) {} @@ -341,6 +342,16 @@ static inline bool gpio_is_output(hasp_gpio_config_t* gpio) return (gpio->type > hasp_gpio_type_t::USED) && (gpio->type < 0x80); } +void gpioEvery5Seconds(void) +{ + for(uint8_t i = 0; i < HASP_NUM_GPIO_CONFIG; i++) { + if(gpio_is_input(&gpioConfig[i])) { + gpioConfig[i].val = !gpioConfig[i].val; + event_gpio_input(gpioConfig[i].pin, gpioConfig[i].val); + } + } +} + /* ********************************* State Setters *************************************** */ bool gpio_get_pin_state(uint8_t pin, bool& power, int32_t& val) diff --git a/src/sys/gpio/hasp_gpio.h b/src/sys/gpio/hasp_gpio.h index 7de0bf98..68bccfe2 100644 --- a/src/sys/gpio/hasp_gpio.h +++ b/src/sys/gpio/hasp_gpio.h @@ -11,10 +11,6 @@ using namespace ace_button; #endif -#ifdef __cplusplus -extern "C" { -#endif - struct hasp_gpio_config_t { uint8_t pin : 8; // pin number @@ -31,6 +27,12 @@ struct hasp_gpio_config_t #endif }; +extern hasp_gpio_config_t gpioConfig[HASP_NUM_GPIO_CONFIG]; + +#ifdef __cplusplus +extern "C" { +#endif + void gpioSetup(void); IRAM_ATTR void gpioLoop(void); void gpioEvery5Seconds(void);