X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.c;h=ec3bcf8bb093c04ebab69f0657792701657e58ca;hb=b749ae14b503c3a01d8fcefc22daf561454a3de0;hp=04b0acea31b4d22bc7e1e70fa9f234a8cc168d5d;hpb=aae3666f514af7606db0fe34c601bfdafa4cb7dc;p=sball diff --git a/src/main.c b/src/main.c index 04b0ace..ec3bcf8 100644 --- a/src/main.c +++ b/src/main.c @@ -1,16 +1,55 @@ #include #include +#include +#include +#include +#include #include "sball.h" +#ifdef __FreeBSD__ +#define DEFDEV "/dev/ttyu0" +#else +#define DEFDEV "/dev/ttyS0" +#endif + +static void sighandler(int s); + static struct sball *sb; +static int quit; int main(int argc, char **argv) { - 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"); + int fd; + fd_set rdset; + + signal(SIGINT, sighandler); + + if(!(sb = sball_open(argv[1] ? argv[1] : DEFDEV))) { + fprintf(stderr, "Failed to open spaceball at %s\n", argv[1] ? argv[1] : DEFDEV); 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; +}