altos: Add ao_gpio_get and ao_exti_set_mode
[fw/altos] / src / stm / ao_exti_stm.c
index d54e6ee637d8a797665392a13e2edb171c5d47f6..11099b02112994d023df580d5cbb01e2748af91b 100644 (file)
@@ -115,6 +115,20 @@ ao_exti_setup (struct stm_gpio *gpio, uint8_t pin, uint8_t mode, void (*callback
        stm_nvic_set_enable(irq);
 }
 
+void
+ao_exti_set_mode(struct stm_gpio *gpio, uint8_t pin, uint8_t mode) {
+       uint32_t        mask = 1 << pin;
+       
+       if (mode & AO_EXTI_MODE_RISING)
+               stm_exti.rtsr |= mask;
+       else
+               stm_exti.rtsr &= ~mask;
+       if (mode & AO_EXTI_MODE_FALLING)
+               stm_exti.ftsr |= mask;
+       else
+               stm_exti.ftsr &= ~mask;
+}
+
 void
 ao_exti_set_callback(struct stm_gpio *gpio, uint8_t pin, void (*callback)()) {
        ao_exti_callback[pin] = callback;