X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.c;h=c39e0ffea30cfd4b92b90f19a9ac3328746aa91d;hb=d9869dd84b82cbf6cd786d857145b62e2bcf50de;hp=7fe32c5884700ca5c8dc601e17e391f6e2aba6e7;hpb=aeeaea66849f23d8dec42bb64c9a739846a835d9;p=sball diff --git a/src/main.c b/src/main.c index 7fe32c5..c39e0ff 100644 --- a/src/main.c +++ b/src/main.c @@ -1,16 +1,45 @@ #include #include +#include +#include +#include +#include #include "sball.h" -static int fd; +static void sighandler(int s); + +static struct sball *sb; +static int quit; int main(int argc, char **argv) { - if(!(fd = sball_open(argv[1] ? argv[1] : "/dev/ttyS0"))) { + 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); - sball_close(fd); + 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); + } + } + } + + sball_close(sb); return 0; } + +static void sighandler(int s) +{ + quit = 1; +}