diff -r 0258107a9e72 -r 13502d0dda65 thermferm/slcd.c --- a/thermferm/slcd.c Sat Nov 14 17:00:37 2015 +0100 +++ b/thermferm/slcd.c Sat Nov 14 23:40:51 2015 +0100 @@ -46,12 +46,16 @@ struct sockaddr_in sendaddr; /* Server send socket */ int sock = -1; +uint16_t keys = 0x0000; extern int debug; void putLCDsocket(int fd, uint16_t data) { + socklen_t slen; + uint16_t rdat; + if (sock == -1) return; @@ -61,12 +65,31 @@ syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); } sock = -1; -// } else { + } else { + if (recvfrom(sock, &rdat, sizeof(uint16_t), 0, (struct sockaddr *) &sendaddr, &slen) != sizeof(uint16_t)) { + syslog(LOG_NOTICE, "Socket recvfrom failed, closing socket: %s", strerror(errno)); + } else { + if ((rdat & SLCD_MKEYS) == SLCD_KEYS) { + if (((rdat & 0x00ff) != keys) && debug) + fprintf(stdout, "received keys %04x was %04x\n", rdat & 0x00ff, keys); + keys = rdat & 0x00ff; + } else { + if (debug) + fprintf(stdout, "received %04x\n", rdat); + } + + } } } +void slcdDummy(int fd) +{ + putLCDsocket(fd, SLCD_NULL); +} + + //void slcdHome(int fd) //{ //}