From e3c07411cbcd7d2dd1dca9ef06b17b785e3ad070 Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Sat, 2 Dec 2023 21:06:46 +0700 Subject: [PATCH] allow preloading virtual interrupt buffer --- src/espmega_iot_core.cpp | 9 +++++++++ src/espmega_iot_core.hpp | 1 + src/user_code.hpp | 3 +++ 3 files changed, 13 insertions(+) diff --git a/src/espmega_iot_core.cpp b/src/espmega_iot_core.cpp index e895f15..c2267d1 100644 --- a/src/espmega_iot_core.cpp +++ b/src/espmega_iot_core.cpp @@ -171,6 +171,9 @@ void setup() Wire.setClock(400000); #endif io_begin(); +#ifdef VIRTUAL_INTERRUPT_PRELOAD + virtual_interrupt_preload(); +#endif eeprom_retrieve_init(); user_pre_init(); #ifdef ENABLE_INTERNAL_LCD @@ -2186,3 +2189,9 @@ bool dac_get_state(int id) } #endif + +void virtual_interrupt_preload() { + for (int i = 0; i < 16; i++) { + virtual_interupt_state[i] = ESPMega_digitalRead(virtual_interrupt_pins[i]); + } +} \ No newline at end of file diff --git a/src/espmega_iot_core.hpp b/src/espmega_iot_core.hpp index f0b63af..bf277ec 100644 --- a/src/espmega_iot_core.hpp +++ b/src/espmega_iot_core.hpp @@ -46,6 +46,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length); void virtual_interrupt_loop(); void virtual_interrupt_callback(int pin, int state); +void virtual_interrupt_preload(); void network_begin(); void mqtt_connect(); void mqtt_subscribe(); diff --git a/src/user_code.hpp b/src/user_code.hpp index 9de5311..94f92b5 100644 --- a/src/user_code.hpp +++ b/src/user_code.hpp @@ -12,6 +12,9 @@ //#define OVERCLOCK_FM //#define OVERCLOCK_FM2 +// I/O Configuration +#define VIRTUAL_INTERRUPT_PRELOAD // Preload Virtual Interrupts buffer + // Enable Software Module(s) #define ENABLE_INTERNAL_LCD #define ENABLE_IR_MODULE