X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.c;h=3c41acf43119b09ee6bc60527e9461c87fe66ec2;hb=180c321800719a5240b71ab0ddca862fc5c9562f;hp=04b0acea31b4d22bc7e1e70fa9f234a8cc168d5d;hpb=aae3666f514af7606db0fe34c601bfdafa4cb7dc;p=sball diff --git a/src/main.c b/src/main.c index 04b0ace..3c41acf 100644 --- a/src/main.c +++ b/src/main.c @@ -1,16 +1,49 @@ #include #include +#include +#include +#include +#include #include "sball.h" +static void sighandler(int s); + static struct sball *sb; +static int quit; int main(int argc, char **argv) { + int fd; + fd_set rdset; + + signal(SIGINT, sighandler); + if(!(sb = sball_open(argv[1] ? argv[1] : "/dev/ttyS0"))) { fprintf(stderr, "Failed to open spaceball at %s\n", argv[1] ? argv[1] : "/dev/ttyS0"); return 1; } + fd = sball_fd(sb); + + printf("Monitoring device, ctrl-c to quit\n"); + + while(!quit) { + FD_ZERO(&rdset); + FD_SET(fd, &rdset); + + if(select(fd + 1, &rdset, 0, 0, 0) > 0) { + if(FD_ISSET(fd, &rdset)) { + sball_read(sb); + } + } + + } + putchar('\n'); sball_close(sb); return 0; } + +static void sighandler(int s) +{ + quit = 1; +}