mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-02-16 10:30:47 +00:00
Provide more debugging information for controllers
This commit is contained in:
@@ -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++;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -47,4 +47,4 @@ struct mapping {
|
||||
struct mapping* next;
|
||||
};
|
||||
|
||||
struct mapping* mapping_load(char* fileName);
|
||||
struct mapping* mapping_load(char* fileName, bool verbose);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user