From 0e5b2ff280b5e81c1c62d19fa740418566544728 Mon Sep 17 00:00:00 2001 From: LibretroAdmin Date: Tue, 23 Aug 2022 08:11:22 +0200 Subject: [PATCH] (LED drivers) Miscellaneous cleanups --- led/drivers/led_overlay.c | 4 +-- led/drivers/led_rpi.c | 21 +++++++++------ led/drivers/led_win32_keyboard.c | 45 ++++++++++++-------------------- led/drivers/led_x11_keyboard.c | 23 +++++++--------- 4 files changed, 40 insertions(+), 53 deletions(-) diff --git a/led/drivers/led_overlay.c b/led/drivers/led_overlay.c index a8442b788c..c42db71487 100644 --- a/led/drivers/led_overlay.c +++ b/led/drivers/led_overlay.c @@ -43,9 +43,7 @@ static void overlay_set(int led, int state) if ((led < 0) || (led >= MAX_LEDS)) return; - gpio = ledoverlay_cur->map[led]; - - if (gpio < 0) + if ((gpio = ledoverlay_cur->map[led]) < 0) return; input_overlay_set_visibility(gpio, diff --git a/led/drivers/led_rpi.c b/led/drivers/led_rpi.c index b70c6ad4b7..0c296044f5 100644 --- a/led/drivers/led_rpi.c +++ b/led/drivers/led_rpi.c @@ -13,6 +13,7 @@ */ #include +#include #include "../led_driver.h" #include "../led_defines.h" @@ -46,6 +47,13 @@ static void rpi_init(void) static void rpi_free(void) { + int i; + + for (i = 0; i < MAX_LEDS; i++) + { + rpi_cur->setup[i] = 0; + rpi_cur->map[i] = 0; + } } static int set_gpio(int gpio, int value) @@ -53,10 +61,9 @@ static int set_gpio(int gpio, int value) FILE *fp; char buf[256]; snprintf(buf, sizeof(buf), "/sys/class/gpio/gpio%d/value", gpio); - fp = fopen(buf, "w"); /* Failed to set GPIO? */ - if (!fp) + if (!(fp = fopen(buf, "w"))) return -1; fprintf(fp, "%d\n", value ? 1 : 0); @@ -69,15 +76,13 @@ static int setup_gpio(int gpio) FILE *fp; char buf[256]; snprintf(buf, sizeof(buf), "/sys/class/gpio/gpio%d/direction", gpio); - fp = fopen(buf, "w"); - - if(!fp) + + if (!(fp = fopen(buf, "w"))) { - snprintf(buf, sizeof(buf), "/sys/class/gpio/export"); - fp = fopen(buf, "w"); + strlcpy(buf, "/sys/class/gpio/export", sizeof(buf)); /* Failed to export GPIO? */ - if (!fp) + if (!(fp = fopen(buf, "w"))) return -1; fprintf(fp,"%d\n", gpio); diff --git a/led/drivers/led_win32_keyboard.c b/led/drivers/led_win32_keyboard.c index d792c11f52..1c89ddcd7d 100644 --- a/led/drivers/led_win32_keyboard.c +++ b/led/drivers/led_win32_keyboard.c @@ -7,23 +7,21 @@ #include -static void key_translate(int *key) +static int key_translate(int key) { - switch (*key) + switch (key) { case 0: - *key = VK_NUMLOCK; - break; + return VK_NUMLOCK; case 1: - *key = VK_CAPITAL; - break; + return VK_CAPITAL; case 2: - *key = VK_SCROLL; - break; + return VK_SCROLL; default: - *key = 0; break; } + + return 0; } typedef struct @@ -38,17 +36,6 @@ typedef struct static keyboard_led_t win32kb_curins; static keyboard_led_t *win32kb_cur = &win32kb_curins; -static int get_led(int key) -{ - return GetKeyState(key); -} - -static void set_led(int key) -{ - keybd_event(key, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0); - keybd_event(key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); -} - static int keyboard_led(int led, int state) { int status; @@ -57,19 +44,19 @@ static int keyboard_led(int led, int state) if ((led < 0) || (led >= MAX_LEDS)) return -1; - key_translate(&key); - if (!key) + if (!(key = key_translate(key))) return -1; - status = get_led(key); + status = GetKeyState(key); if (state == -1) return status; - if ((state && !status) || - (!state && status)) + if ( ( state && !status) + || (!state && status)) { - set_led(key); + keybd_event(key, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0); + keybd_event(key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); win32kb_cur->state[led] = state; } return -1; @@ -85,9 +72,9 @@ static void keyboard_init(void) for (i = 0; i < MAX_LEDS; i++) { - win32kb_cur->setup[i] = keyboard_led(i, -1); - win32kb_cur->state[i] = -1; - win32kb_cur->map[i] = settings->uints.led_map[i]; + win32kb_cur->setup[i] = keyboard_led(i, -1); + win32kb_cur->state[i] = -1; + win32kb_cur->map[i] = settings->uints.led_map[i]; if (win32kb_cur->map[i] < 0) win32kb_cur->map[i] = i; } diff --git a/led/drivers/led_x11_keyboard.c b/led/drivers/led_x11_keyboard.c index a36bed799d..630da830ef 100644 --- a/led/drivers/led_x11_keyboard.c +++ b/led/drivers/led_x11_keyboard.c @@ -18,23 +18,21 @@ #define XM_CAPSLOCK 1 #define XM_SCROLLLOCK 4 -static void key_translate(int *key) +static int key_translate(int key) { - switch (*key) + switch (key) { case 0: - *key = XK_NUMLOCK; - break; + return XK_NUMLOCK; case 1: - *key = XK_CAPSLOCK; - break; + return XK_CAPSLOCK; case 2: - *key = XK_SCROLLLOCK; - break; + return XK_SCROLLLOCK; default: - *key = 0; break; } + + return 0; } typedef struct @@ -91,8 +89,7 @@ static int keyboard_led(int led, int state) if ((led < 0) || (led >= MAX_LEDS)) return -1; - key_translate(&key); - if (!key) + if (!(key = key_translate(key))) return -1; status = get_led(key); @@ -100,8 +97,8 @@ static int keyboard_led(int led, int state) if (state == -1) return status; - if ((state && !status) || - (!state && status)) + if ( ( state && !status) + || (!state && status)) { set_led(key, state); x11kb_cur->state[led] = state;