From 6bc084a4d1e7cc5b77cf9dd5281ba3793b39fb76 Mon Sep 17 00:00:00 2001 From: Vincent-FK Date: Sat, 11 Jan 2020 18:06:49 +0800 Subject: [PATCH] polling AXP209 PEK every 30ms --- .gitignore | 0 driver_axp209.c | 10 +++++----- funkey_gpio_management_BAK | Bin 0 -> 31900 bytes gpio_mapping.c | 14 ++++++++++--- uinput.c | 40 +++++++++++++++++++++++++++---------- 5 files changed, 45 insertions(+), 19 deletions(-) mode change 100644 => 100755 .gitignore create mode 100755 funkey_gpio_management_BAK mode change 100644 => 100755 gpio_mapping.c diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/driver_axp209.c b/driver_axp209.c index 2408172..ef96592 100755 --- a/driver_axp209.c +++ b/driver_axp209.c @@ -58,26 +58,26 @@ bool axp209_init(void) { // Enable only chosen interrupts (PEK short and long presses) int err; - err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_1_ENABLE, 0x00); + /*err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_1_ENABLE, 0x00); if(err < 0){ printf("ERROR initializing interrupts 1 for AXP209\n"); } err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_2_ENABLE, 0x00); if(err < 0){ printf("ERROR initializing interrupts 2 for AXP209\n"); - } + }*/ err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_3_ENABLE, 0x03); if(err < 0){ printf("ERROR initializing interrupts 3 for AXP209\n"); } - err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_4_ENABLE, 0x00); + /*err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_4_ENABLE, 0x00); if(err < 0){ printf("ERROR initializing interrupts 4 for AXP209\n"); } err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_5_ENABLE, 0x00); if(err < 0){ printf("ERROR initializing interrupts 5 for AXP209\n"); - } + }*/ return true; } @@ -95,7 +95,7 @@ int axp209_read_interrupt_bank_3(void){ } // Clear interrupts - int err = i2c_smbus_write_byte_data(fd_axp209 , AXP209_INTERRUPT_BANK_3_STATUS, 0xFF); + int err = i2c_smbus_write_byte_data( fd_axp209 ,AXP209_INTERRUPT_BANK_3_STATUS, 0xFF ); if(err < 0){ return err; } diff --git a/funkey_gpio_management_BAK b/funkey_gpio_management_BAK new file mode 100755 index 0000000000000000000000000000000000000000..f72df64a66f32ef234b48a20c4d27fe909f28520 GIT binary patch literal 31900 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 P`OOWXpVEMqPVxKS1`LU4 literal 0 HcmV?d00001 diff --git a/gpio_mapping.c b/gpio_mapping.c old mode 100644 new mode 100755 index adcb6f3..c654da0 --- a/gpio_mapping.c +++ b/gpio_mapping.c @@ -39,10 +39,10 @@ // This define forces to perform a gpio sanity check after a timeout. // If not declared, there will be no timeout and no periodical sanity check of GPIO expander values -#define TIMEOUT_SEC_SANITY_CHECK_GPIO_EXP 1 -//#define TIMEOUT_MICROSEC_SANITY_CHECK_GPIO_EXP (500*1000) +//#define TIMEOUT_SEC_SANITY_CHECK_GPIO_EXP 1 +#define TIMEOUT_MICROSEC_SANITY_CHECK_GPIO_EXP (30*1000) -// This is for debug purposes on cards or eval boards that do not have the AXP209 +// Comment this for debug purposes on cards or eval boards that do not have the AXP209 #define ENABLE_AXP209_INTERRUPTS #define KEY_IDX_MAPPED_FOR_SHORT_PEK_PRESS 16 //KEY_Q @@ -62,6 +62,8 @@ static fd_set fds; static bool * mask_gpio_value; static bool interrupt_i2c_expander_found = false; static bool interrupt_axp209_found = false; +static bool mapping_PEK_short_press_activated = false; +static bool mapping_PEK_long_press_activated = false; /**************************************************************** @@ -330,8 +332,10 @@ int listen_gpios_interrupts(void) if(!nb_interrupts){ // Timeout case GPIO_PRINTF(" Timeout, forcing sanity check\n"); + // Timeout forcing a "Found interrupt" event for sanity check interrupt_i2c_expander_found = true; + interrupt_axp209_found = true; } else if ( nb_interrupts < 0) { perror("select"); @@ -385,11 +389,15 @@ int listen_gpios_interrupts(void) if(val_int_bank_3 & AXP209_INTERRUPT_PEK_SHORT_PRESS){ GPIO_PRINTF(" AXP209 short PEK key press detected\n"); sendKeyAndStopKey(KEY_IDX_MAPPED_FOR_SHORT_PEK_PRESS); + /*sendKey(KEY_IDX_MAPPED_FOR_SHORT_PEK_PRESS, !mapping_PEK_short_press_activated); + mapping_PEK_short_press_activated = !mapping_PEK_short_press_activated;*/ } if(val_int_bank_3 & AXP209_INTERRUPT_PEK_LONG_PRESS){ GPIO_PRINTF(" AXP209 long PEK key press detected\n"); sendKeyAndStopKey(KEY_IDX_MAPPED_FOR_LONG_PEK_PRESS); + /*sendKey(KEY_IDX_MAPPED_FOR_LONG_PEK_PRESS, !mapping_PEK_long_press_activated); + mapping_PEK_long_press_activated = !mapping_PEK_long_press_activated;*/ } } #endif //ENABLE_AXP209_INTERRUPTS diff --git a/uinput.c b/uinput.c index 962fbd6..6348804 100755 --- a/uinput.c +++ b/uinput.c @@ -35,18 +35,11 @@ //#include "config.h" //include "daemon.h" #include "uinput.h" +#include -static int sendRel(int dx, int dy); -static int sendSync(void); - -static struct input_event uidev_ev; -static int uidev_fd; -/*static keyinfo_s lastkey;*/ - -#define die(str, args...) do { \ - perror(str); \ - return(EXIT_FAILURE); \ - } while(0) +/**************************************************************** + * Defines + ****************************************************************/ #define DEBUG_UINPUT_PRINTF (0) #if DEBUG_UINPUT_PRINTF @@ -54,7 +47,31 @@ static int uidev_fd; #else #define UINPUT_PRINTF(...) #endif + +#define SLEEP_TIME_SEND_STOP_KEY_US 20*1000 +#define die(str, args...) do { \ + perror(str); \ + return(EXIT_FAILURE); \ + } while(0) + + +/**************************************************************** + * Static functions declaration + ****************************************************************/ +static int sendRel(int dx, int dy); +static int sendSync(void); + +/**************************************************************** + * Static variables + ****************************************************************/ +static struct input_event uidev_ev; +static int uidev_fd; +/*static keyinfo_s lastkey;*/ + +/**************************************************************** + * Functions Implementation + ****************************************************************/ int init_uinput(void) { int fd; @@ -187,6 +204,7 @@ int sendKey(int key, int value) int sendKeyAndStopKey(int key) { sendKey(key, 1); + usleep(SLEEP_TIME_SEND_STOP_KEY_US); sendKey(key, 0); return 0;