thermferm/server.c

changeset 66
805f1d285acd
parent 62
dc22cb54babd
child 68
6dba71439cd8
equal deleted inserted replaced
65:a08a1fce439e 66:805f1d285acd
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21 *****************************************************************************/ 21 *****************************************************************************/
22 22
23 #include "thermferm.h" 23 #include "thermferm.h"
24 24
25 #ifdef HAVE_WIRINGPI_H
26 25
27 extern bool my_shutdown; 26 extern bool my_shutdown;
28 extern bool debug; 27 extern bool debug;
28 #ifdef HAVE_WIRINGPI_H
29 extern int lcdHandle; 29 extern int lcdHandle;
30 extern unsigned char lcdbuf[MAX_LCDS][20][4]; 30 extern unsigned char lcdbuf[MAX_LCDS][20][4];
31 #endif
31 extern sys_config Config; 32 extern sys_config Config;
32 33
33 int s; /* connected socket */ 34 int s; /* connected socket */
34 int ls; /* listen socket */ 35 int ls; /* listen socket */
35 36
148 */ 149 */
149 if (strncmp(buf, "ack", 3) == 0) { 150 if (strncmp(buf, "ack", 3) == 0) {
150 srv_send((char *)"ack"); 151 srv_send((char *)"ack");
151 } else if (strncmp(buf, "lcd", 3) == 0) { 152 } else if (strncmp(buf, "lcd", 3) == 0) {
152 sprintf(obuf, "[\" \", \" \", \" \", \" \"]"); 153 sprintf(obuf, "[\" \", \" \", \" \", \" \"]");
154 #ifdef HAVE_WIRINGPI_H
153 for (i = 0; i < 20; i++) { 155 for (i = 0; i < 20; i++) {
154 obuf[i+2] = lcdbuf[lcdHandle][i][0]; 156 obuf[i+2] = lcdbuf[lcdHandle][i][0];
155 obuf[i+26] = lcdbuf[lcdHandle][i][1]; 157 obuf[i+26] = lcdbuf[lcdHandle][i][1];
156 obuf[i+50] = lcdbuf[lcdHandle][i][2]; 158 obuf[i+50] = lcdbuf[lcdHandle][i][2];
157 obuf[i+74] = lcdbuf[lcdHandle][i][3]; 159 obuf[i+74] = lcdbuf[lcdHandle][i][3];
158 } 160 }
161 #endif
159 srv_send(obuf); 162 srv_send(obuf);
160 } else if (strncmp(buf, "getMode", 7) == 0) { 163 } else if (strncmp(buf, "getMode", 7) == 0) {
161 srv_send("%c", Config.cs_mode); 164 srv_send("%c", Config.cs_mode);
162 } else if (strncmp(buf, "getFridge", 9) == 0) { 165 } else if (strncmp(buf, "getFridge", 9) == 0) {
163 srv_send("%.1f", Config.cs_fridgeSet); 166 srv_send("%.1f", Config.cs_fridgeSet);
283 286
284 close(s); 287 close(s);
285 } 288 }
286 289
287 290
288 291 #ifdef HAVE_WIRINGPI_H
289 PI_THREAD (my_server_loop) 292 PI_THREAD (my_server_loop)
293 #else
294 int my_server_loop(void)
295 #endif
290 { 296 {
291 socklen_t addrlen; 297 socklen_t addrlen;
292 int optval = 1; 298 int optval = 1;
293 299
294 syslog(LOG_NOTICE, "Thread my_server_loop started"); 300 syslog(LOG_NOTICE, "Thread my_server_loop started");
315 } 321 }
316 322
317 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) { 323 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) {
318 syslog(LOG_NOTICE, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno)); 324 syslog(LOG_NOTICE, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno));
319 close(ls); 325 close(ls);
320 return NULL; 326 return 0;
321 } 327 }
322 328
323 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) { 329 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) {
324 syslog(LOG_NOTICE, "Can't bind to listen socket: %s", strerror(errno)); 330 syslog(LOG_NOTICE, "Can't bind to listen socket: %s", strerror(errno));
325 close(ls); 331 close(ls);
326 return NULL; 332 return 0;
327 } 333 }
328 334
329 if (listen(ls, 5) == -1) { 335 if (listen(ls, 5) == -1) {
330 syslog(LOG_NOTICE, "Can't listen on listen socket: %s", strerror(errno)); 336 syslog(LOG_NOTICE, "Can't listen on listen socket: %s", strerror(errno));
331 close(ls); 337 close(ls);
332 return NULL; 338 return 0;
333 } 339 }
334 340
335 syslog(LOG_NOTICE, "listen socket created %d", ls); 341 syslog(LOG_NOTICE, "listen socket created %d", ls);
336 if (debug) 342 if (debug)
337 fprintf(stdout, "listen socket created %d\n", ls); 343 fprintf(stdout, "listen socket created %d\n", ls);
368 374
369 } 375 }
370 } 376 }
371 377
372 378
373 #endif
374

mercurial