cortexelf-v1: Hook up hex keypad using matrix input driver
authorKeith Packard <keithp@keithp.com>
Mon, 3 Apr 2017 02:32:17 +0000 (19:32 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 3 Apr 2017 02:32:17 +0000 (19:32 -0700)
Signed-off-by: Keith Packard <keithp@keithp.com>
src/cortexelf-v1/Makefile
src/cortexelf-v1/ao_pins.h

index 65f16c2cdc620de84828fb6f961a60e137071125..b491c2e420b30953482a741560833597eb45366d 100644 (file)
@@ -57,6 +57,7 @@ ALTOS_SRC = \
        ao_exti_stm.c \
        ao_i2c_stm.c \
        ao_as1107.c \
+       ao_matrix.c \
        ao_vga.c \
        ao_blt.c \
        ao_copy.c \
index 9721c56de6648aebf02fea22133846b951e0b60d..034c2d5afaf277fd8c9729a4359a1560e5912fff 100644 (file)
 
 /* Buttons */
 
-#define AO_EVENT       1
+#define AO_EVENT               1
 
 #define AO_BUTTON_COUNT                4
 #define AO_BUTTON_MODE         AO_EXTI_MODE_PULL_DOWN
+#define AO_BUTTON_INVERTED     0
 
 /* INPUT */
 #define AO_BUTTON_0_PORT       (&stm_gpioc)
 
 /* Set the hex digits up for decode, leave the extra leds alone */
 
-#define AO_AS1107_DECODE       ((1 << 7) | \
-                                (1 << 6) | \
-                                (1 << 4) | \
-                                (1 << 3) | \
-                                (1 << 1) | \
+#define AO_AS1107_DECODE       ((1 << 7) |     \
+                                (1 << 6) |     \
+                                (1 << 4) |     \
+                                (1 << 3) |     \
+                                (1 << 1) |     \
                                 (1 << 0))
 
 #define AO_AS1107_SPI_INDEX    AO_SPI_2_PD1_PD3_PD4
 #define AO_AS1107_CS_PORT      (&stm_gpiod)
 #define AO_AS1107_CS_PIN       0
 
+/* Hex keypad */
+
+#define AO_MATRIX_ROWS 4
+#define AO_MATRIX_COLS 4
+
+#define AO_MATRIX_KEYCODES {                   \
+               { 0x0, 0x1, 0x2, 0x3 },         \
+               { 0x4, 0x5, 0x6, 0x7 },         \
+               { 0x8, 0x9, 0xa, 0xb },         \
+               { 0xc, 0xd, 0xe, 0xf }          \
+       }
+
+#include <ao_matrix.h>
+
+#define AO_TIMER_HOOK  ao_matrix_poll()
+
+#define AO_MATRIX_ROW_0_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_0_PIN    4
+
+#define AO_MATRIX_ROW_1_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_1_PIN    1
+
+#define AO_MATRIX_ROW_2_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_2_PIN    7
+
+#define AO_MATRIX_ROW_3_PORT   (&stm_gpioc)
+#define AO_MATRIX_ROW_3_PIN    0
+
+#define AO_MATRIX_COL_0_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_0_PIN    2
+
+#define AO_MATRIX_COL_1_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_1_PIN    3
+
+#define AO_MATRIX_COL_2_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_2_PIN    5
+
+#define AO_MATRIX_COL_3_PORT   (&stm_gpioc)
+#define AO_MATRIX_COL_3_PIN    6
+
 #endif /* _AO_PINS_H_ */