From 5a6ab9faf253d3a25c559ec13db081d956fe706e Mon Sep 17 00:00:00 2001 From: Clay Smith Date: Tue, 7 Feb 2023 01:13:52 -0600 Subject: Done except fix scanf issue and add more controllers. --- handle_devices.c | 73 ++++++++++++++++++++------------------------------------ 1 file changed, 26 insertions(+), 47 deletions(-) (limited to 'handle_devices.c') diff --git a/handle_devices.c b/handle_devices.c index f32b85e..f7ae0c9 100644 --- a/handle_devices.c +++ b/handle_devices.c @@ -4,6 +4,8 @@ #include "global_defs.h" #include + + void open_wii(int* controller_event_fptrs, uint64_t* connected_controllers, int choice) { //Determine if WII REMOTE is connected via bluetooth int wii[4] = { 0 }; @@ -143,24 +145,27 @@ SKIP_CLOSE: void print_one_event(int controller_event_fptrs[], int index, int event_number) { struct input_event event1; int event_size = sizeof(struct input_event); - size_t start_sec; - int initial_read = read(controller_event_fptrs[index], &event1, event_size); - if (initial_read == -1) { + time_t start_sec; + char buffer[BUFSIZE]; + int string_length; + if (-1 == read(controller_event_fptrs[index], &event1, event_size)) { fprintf(stderr, "PROBLEM READING FILE!\n"); exit(-1); } start_sec = event1.time.tv_sec; while (read(controller_event_fptrs[index], &event1, event_size) != -1) { if (event1.type == 0) continue; - printf("%d %zu.%-6zu %d %3d %9d\n", + string_length = snprintf(buffer, BUFSIZE - 1, "%d %5lu.%06lu %d %3d %11d\n", event_number, - event1.time.tv_sec - start_sec, - event1.time.tv_usec, + (unsigned long) event1.time.tv_sec - start_sec, + (unsigned long) event1.time.tv_usec, event1.type, event1.code, event1.value); + write(STDOUT_FILENO, buffer, string_length); } fprintf(stderr, "DISCONNECTED\n"); + exit(-1); } void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ...) { @@ -189,73 +194,47 @@ void print_multiple_events(int num_exceptions, int controller_event_fptrs[], ... } //find and run code just for the parent process (first event (a.k.a. index 0)) if (isParent) { - //printf("\nIm the parent, pid: %d\n", getpid()); - //put the code you want the parent to run here? - char buffer[BUFSIZE+1]; - int initial_read = read(controller_event_fptrs[pairs[0].event_fptr_index], &event[0], event_size); - if (initial_read == -1) { + char buffer[BUFSIZE]; + int string_length; + if ( -1 == read(controller_event_fptrs[pairs[0].event_fptr_index], &event[0], event_size)) { fprintf(stderr, "PROBLEM READING FILE!\n"); exit(-1); } size_t start_sec = event[0].time.tv_sec; while (read(controller_event_fptrs[pairs[0].event_fptr_index], &event[0], event_size) != -1) { if (event[0].type == 0) continue; -/* - printf("%d %zu.%-6zu %d %3d %11d\n", - pairs[0].event_user_num, - event[0].time.tv_sec - start_sec, - event[0].time.tv_usec, - event[0].type, - event[0].code, - event[0].value); -*/ - - snprintf(buffer, BUFSIZE, "%d %zu.%-6zu %d %3d %11d\n", + string_length = snprintf(buffer, BUFSIZE, "%d %lu.%06lu %d %3d %11d\n", pairs[0].event_user_num, - event[0].time.tv_sec - start_sec, - event[0].time.tv_usec, + (unsigned long) event[0].time.tv_sec - start_sec, + (unsigned long) event[0].time.tv_usec, event[0].type, event[0].code, event[0].value); - write(STDOUT_FILENO, buffer, sizeof(buffer)); - + write(STDOUT_FILENO, buffer, string_length); } fprintf(stderr, "DISCONNECTED\n"); - } + } //find the child process(es) and run the correct code for each (event #2 onwards) (a.k.a. index 1+)) sleep(1); for (int i = 0; i < num_exceptions; ++i) { if (pids[i] == 0) { - //printf("Im child #%d.\n", i + 1); - //put the rest of the code in here? - char buffer[BUFSIZE+1]; - int initial_read = read(controller_event_fptrs[pairs[i+1].event_fptr_index], &event[i+1], event_size); - if (initial_read == -1) { + char buffer[BUFSIZE]; + int string_length; + if (-1 == read(controller_event_fptrs[pairs[i+1].event_fptr_index], &event[i+1], event_size)) { fprintf(stderr, "PROBLEM READING FILE!\n"); exit(-1); } size_t start_sec = event[i+1].time.tv_sec; while (read(controller_event_fptrs[pairs[i+1].event_fptr_index], &event[i+1], event_size) != -1) { if (event[i+1].type == 0) continue; - - printf("%d %zu.%-6zu %d %3d %11d\n", - pairs[i+1].event_user_num, - event[i+1].time.tv_sec - start_sec, - event[i+1].time.tv_usec, - event[i+1].type, - event[i+1].code, - event[i+1].value); - -/* - snprintf(buffer, BUFSIZE, "%d %zu.%-6zu %d %3d %11d\n", + string_length = snprintf(buffer, BUFSIZE, "%d %lu.%06lu %d %3d %11d\n", pairs[i+1].event_user_num, - event[i+1].time.tv_sec - start_sec, - event[i+1].time.tv_usec, + (unsigned long) event[i+1].time.tv_sec - start_sec, + (unsigned long) event[i+1].time.tv_usec, event[i+1].type, event[i+1].code, event[i+1].value); - write(STDOUT_FILENO, buffer, sizeof(buffer)); -*/ + write(STDOUT_FILENO, buffer, string_length); } fprintf(stderr, "DISCONNECTED\n"); } -- cgit v1.2.1