From a98e5d802b071a240ba38dfa9b039fd3f7d47ffd Mon Sep 17 00:00:00 2001 From: root Date: Tue, 21 Jul 2015 10:12:26 +0100 Subject: fish --- polycom_xmit/gpio.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'polycom_xmit/gpio.c') diff --git a/polycom_xmit/gpio.c b/polycom_xmit/gpio.c index 8a595ac..04dad5d 100644 --- a/polycom_xmit/gpio.c +++ b/polycom_xmit/gpio.c @@ -26,14 +26,22 @@ static struct gpio #define N_GPIOS (sizeof(gpios)/sizeof(gpios[0])) +static uint32_t mask; + static os_timer_t gpio_timer; static os_timer_t gpio_intr_timer; +uint32_t ICACHE_FLASH_ATTR +gpio_read (void) +{ + return gpio_input_get () & mask; +} + void ICACHE_FLASH_ATTR gpio_dispatch (void) { - uint32_t v = gpio_input_get (); + uint32_t v = gpio_read (); msg_send (v); } @@ -97,19 +105,19 @@ gpio_page (struct espconn *conn) "}\n" "table, th, td {\n" "border: 1px solid black;\n" "}\n" ""); - + ptr += os_sprintf (ptr, ""); ptr += os_sprintf (ptr, ""); - v = gpio_input_get (); + v = gpio_read (); ptr += os_sprintf (ptr, "

GPIO: 0x%04x


", v); ptr += os_sprintf (ptr, ""); - for (i = 0; i < 16; ++i) + for (i = 0; i < N_GPIOS; ++i) { - j = 1 << i; ptr += os_sprintf (ptr, "", - i, j, (j & v) ? "High" : "Low"); + gpios[i].id, gpios[i].bit, + (gpios[i].bit & v) ? "High" : "Low"); } @@ -149,6 +157,7 @@ gpio_init (void) gpio_pin_intr_state_set (GPIO_ID_PIN (gpios[i].id), GPIO_PIN_INTR_ANYEDGE); + mask |= gpios[i].bit; } ETS_GPIO_INTR_ENABLE (); -- cgit v1.2.3
%d0x%04x%s