X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flpc%2Fao_exti_lpc.c;h=5722e17d2b887400ae83df7db76de08d9d38d802;hb=e80a45c1565b14479e3a4cfc968d49b13cef4fe0;hp=588cf58c5c7ee81688031002e31717ae5352423d;hpb=35a05041d3ca3e69a146bd3bf8038c0f1cbc1b42;p=fw%2Faltos diff --git a/src/lpc/ao_exti_lpc.c b/src/lpc/ao_exti_lpc.c index 588cf58c..5722e17d 100644 --- a/src/lpc/ao_exti_lpc.c +++ b/src/lpc/ao_exti_lpc.c @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -52,7 +53,7 @@ pin_isr(5) pin_isr(6) pin_isr(7) -#define pin_id(port,pin) ((port) * 24 + (pin)); +#define pin_id(port,pin) ((uint8_t) ((port) * 24 + (pin))) static void _ao_exti_set_enable(uint8_t pint) @@ -69,7 +70,7 @@ _ao_exti_set_enable(uint8_t pint) lpc_gpio_pin.sienr = mask; else lpc_gpio_pin.cienr = mask; - + if (mode & AO_EXTI_MODE_FALLING) lpc_gpio_pin.sienf = mask; else @@ -82,7 +83,7 @@ void ao_exti_setup (uint8_t port, uint8_t pin, uint8_t mode, void (*callback)(void)) { uint8_t id = pin_id(port,pin); uint8_t pint; - uint32_t mask; + uint8_t mask; uint8_t prio; for (pint = 0; pint < LPC_NUM_PINT; pint++) @@ -91,14 +92,14 @@ ao_exti_setup (uint8_t port, uint8_t pin, uint8_t mode, void (*callback)(void)) if (pint == LPC_NUM_PINT) ao_panic(AO_PANIC_EXTI); - if (!mode & AO_EXTI_PIN_NOCONFIGURE) + if (!(mode & AO_EXTI_PIN_NOCONFIGURE)) ao_enable_input(port, pin, mode); ao_arch_block_interrupts(); mask = (1 << pint); ao_pint_inuse |= mask; - ao_pint_enabled &= ~mask; - + ao_pint_enabled &= (uint8_t) ~mask; + ao_pint_map[id] = pint; ao_exti_callback[pint] = callback; @@ -108,7 +109,7 @@ ao_exti_setup (uint8_t port, uint8_t pin, uint8_t mode, void (*callback)(void)) /* Set edge triggered */ lpc_gpio_pin.isel &= ~mask; - ao_pint_enabled &= ~mask; + ao_pint_enabled &= (uint8_t) ~mask; ao_pint_mode[pint] = mode; _ao_exti_set_enable(pint); @@ -139,7 +140,7 @@ ao_exti_set_mode(uint8_t port, uint8_t pin, uint8_t mode) } void -ao_exti_set_callback(uint8_t port, uint8_t pin, void (*callback)()) { +ao_exti_set_callback(uint8_t port, uint8_t pin, void (*callback)(void)) { uint8_t id = pin_id(port,pin); uint8_t pint = ao_pint_map[id]; @@ -166,7 +167,7 @@ ao_exti_disable(uint8_t port, uint8_t pin) { uint8_t mask = 1 << pint; ao_arch_block_interrupts(); - ao_pint_enabled &= ~mask; + ao_pint_enabled &= (uint8_t) ~mask; _ao_exti_set_enable(pint); ao_arch_release_interrupts(); }