8 #include <netinet/in.h>
10 #include <sys/socket.h>
12 #include <sys/types.h>
15 #include "interface.h"
26 void killHandler(int i
)
28 printf("%i caught, Bye...\n", i
);
32 void usage(FILE *o
, char *arg0
){
33 fprintf(o
, "Usage: %s [opts]\n\nOptions\n"
34 "-p PORT Custom port number, default: 8123\n" , arg0
);
37 unsigned long getmillis(void) {
38 if (gettimeofday(&tv1
, NULL
) == -1)
40 return tv1
.tv_sec
*1000 + tv1
.tv_usec
/1000;
43 bool input_available(void){
50 if (select(fd
+1, &fds
, NULL
, NULL
, &tv
) == -1)
52 if(!FD_ISSET(fd
, &fds
))
57 uint8_t read_byte(void)
63 void write_byte(uint8_t b
)
68 void write_dpin(uint8_t i
, bool b
)
70 debug("dwrite %d: %d", i
, b
);
75 bool read_dpin(uint8_t i
)
82 void write_apin(uint8_t i
, uint8_t a
)
84 debug("awrite %d: %d", i
, a
);
89 uint8_t read_apin(uint8_t i
)
96 void msdelay(unsigned long ms
)
101 void led_on(uint8_t i
)
103 debug("led %d on\n", i
);
107 void led_off(uint8_t i
)
109 debug("led %d off\n", i
);
113 void real_setup(void)
115 int port
= 8123, opti
= 1;
116 //Register signal handler
117 if(signal(SIGINT
, killHandler
) == SIG_ERR
){
118 die("Couldn't register signal handler...");
120 if(signal(SIGTERM
, killHandler
) == SIG_ERR
){
121 die("Couldn't register signal handler...");
123 //Command line arguments
125 if(strcmp((*gargv
)+opti
, "-h") == 0){
126 usage(stdout
, gargv
[0]);
128 } else if(strcmp(gargv
[opti
], "-p") == 0 && opti
+1<gargc
){
129 port
= atoi(gargv
[++opti
]);
131 die("Port numbers are > 1");
133 usage(stderr
, gargv
[0]);
139 //Open file descriptors
140 struct sockaddr_in sa
;
142 memset(&sa
, 0, sizeof(sa
));
143 sa
.sin_family
= AF_INET
;
144 sa
.sin_addr
.s_addr
= INADDR_ANY
;
145 sa
.sin_port
= htons(port
);
148 if((sock_fd
= socket(AF_INET
, SOCK_STREAM
, 0)) == -1)
150 if(bind(sock_fd
, (struct sockaddr
*)&sa
, sizeof(sa
)) == -1)
153 if(listen(sock_fd
, 10) == -1)
156 printf("Listening on %d\n", port
);
158 if((fd
= accept(sock_fd
, (struct sockaddr
*)NULL
, NULL
)) == -1)
160 printf("Accepted incoming connection\n");
163 void debug(char *fmt
, ...)
167 vfprintf(stderr
, fmt
, ap
);
168 fprintf(stderr
, "\n");
178 void die(char *fmt
, ...)
182 vfprintf(stderr
, fmt
, ap
);