3c41acf43119b09ee6bc60527e9461c87fe66ec2
[sball] / src / main.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <signal.h>
4 #include <errno.h>
5 #include <unistd.h>
6 #include <sys/select.h>
7 #include "sball.h"
8
9 static void sighandler(int s);
10
11 static struct sball *sb;
12 static int quit;
13
14 int main(int argc, char **argv)
15 {
16         int fd;
17         fd_set rdset;
18
19         signal(SIGINT, sighandler);
20
21         if(!(sb = sball_open(argv[1] ? argv[1] : "/dev/ttyS0"))) {
22                 fprintf(stderr, "Failed to open spaceball at %s\n", argv[1] ? argv[1] : "/dev/ttyS0");
23                 return 1;
24         }
25         fd = sball_fd(sb);
26
27         printf("Monitoring device, ctrl-c to quit\n");
28
29         while(!quit) {
30                 FD_ZERO(&rdset);
31                 FD_SET(fd, &rdset);
32
33                 if(select(fd + 1, &rdset, 0, 0, 0) > 0) {
34                         if(FD_ISSET(fd, &rdset)) {
35                                 sball_read(sb);
36                         }
37                 }
38
39         }
40         putchar('\n');
41
42         sball_close(sb);
43         return 0;
44 }
45
46 static void sighandler(int s)
47 {
48         quit = 1;
49 }