From ecafca502ea28141244f0ea851a1638da14bd1e2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20Mat=C4=9Bj=C3=A1k?= Date: Fri, 4 May 2018 12:16:45 +0200 Subject: [PATCH] mt_gpio.h, trigger happy keys, mt_gpio in Makefile --- Makefile | 5 ++++- mt_gpio.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ mt_keys.c | 40 ++++++++++++++++++------------------- 3 files changed, 84 insertions(+), 21 deletions(-) create mode 100644 mt_gpio.h diff --git a/Makefile b/Makefile index 470e9a1..c753225 100644 --- a/Makefile +++ b/Makefile @@ -9,11 +9,14 @@ mtserver_LIBS = -lev -lwebsockets mtkeys_SRCS = signal_exit.c mt_keys.c mtkeys_LIBS = -lev +mtgpio_SRCS = signal_exit.c mt_gpio.c +mtgpio_LIBS = -lev -lgpiod + mtaio_SRCS = signal_exit.c mt_rfid.c mt_keys.c mt_server.c mt_aio.c mtaio_LIBS = -lev -luFCoder-armhf -lwebsockets mtaio_DEFS = -DNO_MAIN -all: mtrfid mtserver mtkeys mtaio +all: mtrfid mtserver mtkeys mtgpio mtaio .PHONY: clean diff --git a/mt_gpio.h b/mt_gpio.h new file mode 100644 index 0000000..628ac8a --- /dev/null +++ b/mt_gpio.h @@ -0,0 +1,60 @@ +#ifndef MT_GPIO_H +#define MT_GPIO_H + +#include +#include + +typedef struct mt_gpio_dev_t { + unsigned int chip; + unsigned int offset; + char key; +} mt_gpio_dev_t; + +#define GPIO_COUNT 20 +#ifndef GPIO_CONSUMER +#define GPIO_CONSUMER "mtgpio" +#endif +#define GPIO_ACTIVE_LOW 1 + +#define ADV_GPIO_PINS \ +{ \ + {0, 27, 'A'}, \ + {0, 29, 'B'}, \ + {0, 25, 'C'}, \ + {0, 30, 'D'}, \ + {5, 31, 'E'}, \ + {2, 30, 'F'}, \ + {2, 31, 'G'}, \ + {2, 21, 'H'}, \ + {4, 2, 'I'}, \ + {2, 20, 'J'}, \ + {2, 23, 'K'}, \ + {5, 11, 'L'}, \ + {1, 2, 'M'}, \ + {5, 9, 'N'}, \ + {1, 3, 'O'}, \ + {5, 16, 'P'}, \ + {5, 7, 'Q'}, \ + {1, 4, 'R'}, \ + {1, 0, 'S'}, \ + {5, 8, 'T'} \ +} + +const mt_gpio_dev_t pins[GPIO_COUNT] = ADV_GPIO_PINS; + +typedef struct ev_io_gpio { + ev_io w; + int fd; + char key; +} ev_io_gpio; + +typedef struct mt_gpio_t { + ev_io_gpio w[GPIO_COUNT]; + struct gpiod_chip *chip[GPIO_COUNT]; +} mt_gpio_t; + +int mt_gpio_init(mt_gpio_t *self, struct ev_loop *loop, int fd); + +void mt_gpio_deinit(mt_gpio_t *self); + +#endif diff --git a/mt_keys.c b/mt_keys.c index 59436f4..d33635a 100644 --- a/mt_keys.c +++ b/mt_keys.c @@ -25,64 +25,64 @@ static void keys_cb(EV_P_ ev_io *w_, int revents) } if (ev.type == 1 && ev.value == 1) { switch (ev.code) { - case KEY_A: + case BTN_TRIGGER_HAPPY1: key = 'A'; break; - case KEY_B: + case BTN_TRIGGER_HAPPY2: key = 'B'; break; - case KEY_C: + case BTN_TRIGGER_HAPPY3: key = 'C'; break; - case KEY_D: + case BTN_TRIGGER_HAPPY4: key = 'D'; break; - case KEY_E: + case BTN_TRIGGER_HAPPY5: key = 'E'; break; - case KEY_F: + case BTN_TRIGGER_HAPPY6: key = 'F'; break; - case KEY_G: + case BTN_TRIGGER_HAPPY7: key = 'G'; break; - case KEY_H: + case BTN_TRIGGER_HAPPY8: key = 'H'; break; - case KEY_I: + case BTN_TRIGGER_HAPPY9: key = 'I'; break; - case KEY_J: + case BTN_TRIGGER_HAPPY10: key = 'J'; break; - case KEY_K: + case BTN_TRIGGER_HAPPY11: key = 'K'; break; - case KEY_L: + case BTN_TRIGGER_HAPPY12: key = 'L'; break; - case KEY_M: + case BTN_TRIGGER_HAPPY13: key = 'M'; break; - case KEY_N: + case BTN_TRIGGER_HAPPY14: key = 'N'; break; - case KEY_O: + case BTN_TRIGGER_HAPPY15: key = 'O'; break; - case KEY_P: + case BTN_TRIGGER_HAPPY16: key = 'P'; break; - case KEY_Q: + case BTN_TRIGGER_HAPPY17: key = 'Q'; break; - case KEY_R: + case BTN_TRIGGER_HAPPY18: key = 'R'; break; - case KEY_S: + case BTN_TRIGGER_HAPPY19: key = 'S'; break; - case KEY_T: + case BTN_TRIGGER_HAPPY20: key = 'T'; break; default: -- 2.39.2