From 43558756924eb3bf76e8fb6c489423396d5440cd Mon Sep 17 00:00:00 2001 From: cgmckeever Date: Tue, 31 Dec 2019 21:45:09 -0600 Subject: [PATCH] fixing the device flag fixing the device flag fixing the device flag fixing the device flag fixing the device flag fixing the device flag fix listening fix listening fix listening fix listening fix listening fix listening fix listening x x git commit -q -m x --- Makefile | 2 +- README.md | 6 ++++-- src/jslisten.c | 16 ++++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 0654937..26b61a2 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -CFLAGS ?= -g -O2 -Wall +CFLAGS ?= -g -O2 -Wall -std=c99 PROGRAMS = jslisten diff --git a/README.md b/README.md index 26495a1..a6b1426 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,9 @@ After searching the internet, I found nothing really interesting. Kodi addon wil Update 12/22/2018: If you have many different /dev/inputs, you can pass it as an arguement at the startup: -```jslisten --device /dev/input/myinput/js0``` +```jslisten --device /dev/input/js0``` + +** jslisten will also default to listen to the first device found if the defined device is not found. Update 02/12/2019: Changed the default service user to "pi" in jslisten.service @@ -57,7 +59,7 @@ Also added `--help` for the command line for a brief summary of options. ## Installation Following example for Raspbian. Should work for many other distributions almost the same way. - * Use the precompiled binary in bin/ or run "# make" to create the binary + * run "# make" to create the binary * Place the binary to "/opt/bin" (if you change the folder, please update your init script) * Copy the configuration script to /etc/jslisten.cfg * Modify the configuration script to your needs diff --git a/src/jslisten.c b/src/jslisten.c index 41a65ee..49917df 100644 --- a/src/jslisten.c +++ b/src/jslisten.c @@ -307,7 +307,8 @@ void listenJoy (void) { struct udev_enumerate *enumerate; struct udev_list_entry *devices, *dev_list_entry; - joyFD = -1; // Clear previous joystick + // Clear previous joystick + joyFD = -1; /* Create the udev object */ udev = udev_new(); @@ -336,8 +337,13 @@ void listenJoy (void) { if (sysPath != NULL && devPath != NULL && strstr(sysPath, "/js") != 0) { syslog (LOG_NOTICE, "Found Device: %s\n", devPath); - if ((joyFD = open(devPath, O_RDONLY)) < 0) { // Open the file descriptor - syslog (LOG_INFO, "error: failed to open fd\n"); + if (joyFD < 0 || strcmp(devPath, myDevPath) == 0) { + // Open the file descriptor + if ((joyFD = open(devPath, O_RDONLY)) < 0) { + syslog (LOG_INFO, "error: failed to open fd\n"); + } else { + syslog (LOG_NOTICE, "Watching: %s\n", devPath); + } } } @@ -346,7 +352,9 @@ void listenJoy (void) { /* cleanup */ udev_enumerate_unref(enumerate); - if ( joyFD < 0 ) { // Still no joystick found + // Still no joystick found + if ( joyFD < 0 ) { + syslog (LOG_NOTICE, "No devices found\n"); /* Set up a monitor to monitor input devices */ mon = udev_monitor_new_from_netlink(udev, "udev");