summaryrefslogtreecommitdiff
path: root/src/stm/ao_exti_stm.c
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2012-08-28 23:39:53 -0600
committerBdale Garbee <bdale@gag.com>2012-08-28 23:39:53 -0600
commit5ed88fb72c3e3ecf3333c700d838667db71cfbdc (patch)
tree3b371f563c0f7607f2fe53242673adb352b48514 /src/stm/ao_exti_stm.c
parentadbe64c5a9402b7c5075a444a12629131b663877 (diff)
parent621d0930244f25165d2ac5da596dcc87e253b965 (diff)
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Conflicts: debian/control
Diffstat (limited to 'src/stm/ao_exti_stm.c')
-rw-r--r--src/stm/ao_exti_stm.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/stm/ao_exti_stm.c b/src/stm/ao_exti_stm.c
index d54e6ee6..11099b02 100644
--- a/src/stm/ao_exti_stm.c
+++ b/src/stm/ao_exti_stm.c
@@ -116,6 +116,20 @@ ao_exti_setup (struct stm_gpio *gpio, uint8_t pin, uint8_t mode, void (*callback
}
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;
}