altos: Add ao_gpio_get and ao_exti_set_mode
[fw/altos] / src / stm / ao_arch_funcs.h
index 7820bf798af2568e6b7ef4dc5bebf0394fda036d..3d8ca1f2a65e1a1e6751948c8e3e45181ac2ed0c 100644 (file)
@@ -76,10 +76,25 @@ ao_spi_init(void);
        } while (0)
 
 
-#define ao_enable_output(port,pin,v) do {                      \
+#define ao_gpio_set(port, bit, pin, v) stm_gpio_set(port, bit, v)
+
+#define ao_gpio_get(port, bit, pin) stm_gpio_get(port, bit)
+
+#define ao_enable_output(port,bit,pin,v) do {                  \
                ao_enable_port(port);                           \
-               stm_gpio_set(port, pin, v);                     \
-               stm_moder_set(port, pin, STM_MODER_OUTPUT);     \
+               ao_gpio_set(port, bit, pin, v);                 \
+               stm_moder_set(port, bit, STM_MODER_OUTPUT);\
+       } while (0)
+
+#define ao_enable_input(port,bit,mode) do {                            \
+               ao_enable_port(port);                                   \
+               stm_moder_set(port, bit, STM_MODER_INPUT);              \
+               if (mode == AO_EXTI_MODE_PULL_UP)                       \
+                       stm_pupdr_set(port, bit, STM_PUPDR_PULL_UP);    \
+               else if (mode == AO_EXTI_MODE_PULL_DOWN)                \
+                       stm_pupdr_set(port, bit, STM_PUPDR_PULL_DOWN);  \
+               else                                                    \
+                       stm_pupdr_set(port, bit, STM_PUPDR_NONE);       \
        } while (0)
 
 #define ao_enable_cs(port,bit) do {                            \