Provide more debugging information for controllers

This commit is contained in:
Iwan Timmer
2017-06-19 22:13:35 +02:00
parent 0e4820e3a8
commit c23d95f83c
7 changed files with 25 additions and 15 deletions

View File

@@ -397,7 +397,7 @@ static int evdev_handle(int fd) {
return LOOP_OK;
}
void evdev_create(const char* device, struct mapping* mappings) {
void evdev_create(const char* device, struct mapping* mappings, bool verbose) {
int fd = open(device, O_RDONLY|O_NONBLOCK);
if (fd <= 0) {
fprintf(stderr, "Failed to open device %s\n", device);
@@ -419,14 +419,21 @@ void evdev_create(const char* device, struct mapping* mappings) {
for (int i = 0; i < 16; i++)
buf += sprintf(buf, "%02x", ((unsigned char*) guid)[i]);
while (mappings != NULL && strncmp(str_guid, mappings->guid, 32) != 0)
while (mappings != NULL) {
if (strncmp(str_guid, mappings->guid, 32) == 0) {
if (verbose)
printf("Detected %s (%s) on %s\n", mappings->name, str_guid, device);
break;
}
mappings = mappings->next;
}
bool is_keyboard = libevdev_has_event_code(evdev, EV_KEY, KEY_Q);
bool is_mouse = libevdev_has_event_type(evdev, EV_REL) || libevdev_has_event_code(evdev, EV_KEY, BTN_LEFT);
if (mappings == NULL && !(is_keyboard || is_mouse))
fprintf(stderr, "No mapping available for %s\n", device);
fprintf(stderr, "No mapping available for %s (%s)\n", device, str_guid);
int dev = numDevices;
numDevices++;

View File

@@ -19,7 +19,7 @@
#include "mapping.h"
void evdev_create(const char* device, struct mapping* mappings);
void evdev_create(const char* device, struct mapping* mappings, bool verbose);
void evdev_loop();
void evdev_init();

View File

@@ -21,16 +21,18 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
struct mapping* mapping_load(char* fileName) {
struct mapping* mapping_load(char* fileName, bool verbose) {
struct mapping* mappings = NULL;
struct mapping* map = NULL;
FILE* fd = fopen(fileName, "r");
if (fd == NULL) {
fprintf(stderr, "Can't open mapping file: %s\n", fileName);
exit(EXIT_FAILURE);
}
} else if (verbose)
printf("Loading mappingfile %s\n", fileName);
char *line = NULL;
size_t len = 0;

View File

@@ -47,4 +47,4 @@ struct mapping {
struct mapping* next;
};
struct mapping* mapping_load(char* fileName);
struct mapping* mapping_load(char* fileName, bool verbose);

View File

@@ -31,7 +31,7 @@
#include <stdlib.h>
#include <poll.h>
static bool autoadd;
static bool autoadd, debug;
static struct mapping* defaultMappings;
static struct udev *udev;
@@ -46,7 +46,7 @@ static int udev_handle(int fd) {
const char *devnode = udev_device_get_devnode(dev);
int id;
if (devnode != NULL && sscanf(devnode, "/dev/input/event%d", &id) == 1) {
evdev_create(devnode, defaultMappings);
evdev_create(devnode, defaultMappings, debug);
}
}
udev_device_unref(dev);
@@ -54,8 +54,9 @@ static int udev_handle(int fd) {
return LOOP_OK;
}
void udev_init(bool autoload, struct mapping* mappings) {
void udev_init(bool autoload, struct mapping* mappings, bool verbose) {
udev = udev_new();
debug = verbose;
if (!udev) {
fprintf(stderr, "Can't create udev\n");
exit(1);
@@ -75,7 +76,7 @@ void udev_init(bool autoload, struct mapping* mappings) {
const char *devnode = udev_device_get_devnode(dev);
int id;
if (devnode != NULL && sscanf(devnode, "/dev/input/event%d", &id) == 1) {
evdev_create(devnode, mappings);
evdev_create(devnode, mappings, verbose);
}
udev_device_unref(dev);
}

View File

@@ -19,5 +19,5 @@
#include "mapping.h"
void udev_init(bool autoload, struct mapping* mappings);
void udev_init(bool autoload, struct mapping* mappings, bool verbose);
void evdev_destroy();

View File

@@ -256,16 +256,16 @@ int main(int argc, char* argv[]) {
fprintf(stderr, "Please specify mapping file as default mapping could not be found.\n");
exit(-1);
}
struct mapping* mappings = mapping_load(config.mapping);
struct mapping* mappings = mapping_load(config.mapping, config.debug_level > 0);
for (int i=0;i<config.inputsCount;i++) {
if (config.debug_level > 0)
printf("Add input %s...\n", config.inputs[i]);
evdev_create(config.inputs[i], mappings);
evdev_create(config.inputs[i], mappings, config.debug_level > 0);
}
udev_init(!inputAdded, mappings);
udev_init(!inputAdded, mappings, config.debug_level > 0);
evdev_init();
#ifdef HAVE_LIBCEC
cec_init();