brewpanel/sockio.c

changeset 431
b3895cd6edd3
parent 428
d64c4c1edd78
child 443
6b80a37fdf8d
equal deleted inserted replaced
430:36ecc8bbb75d 431:b3895cd6edd3
30 30
31 31
32 int sock = -1; /* Unix datagram socket */ 32 int sock = -1; /* Unix datagram socket */
33 struct sockaddr_in servaddr; /* Server socket address */ 33 struct sockaddr_in servaddr; /* Server socket address */
34 uint16_t keys = SLCD_KEYS; /* Pressed keys bits */ 34 uint16_t keys = SLCD_KEYS; /* Pressed keys bits */
35 extern int debug;
35 36
36 37
37 void socket_recv(SGOBJ *dlg) 38 void socket_recv(SGOBJ *dlg)
38 { 39 {
39 uint16_t data; 40 uint16_t data;
46 if (recv_len == sizeof(uint16_t)) { 47 if (recv_len == sizeof(uint16_t)) {
47 /* 48 /*
48 * Get device from data 49 * Get device from data
49 */ 50 */
50 fd = (data & SLCD_MDEV) >> 13; 51 fd = (data & SLCD_MDEV) >> 13;
51 if (fd) 52 if (fd && debug)
52 fprintf(stdout, "Device %d ", fd); 53 fprintf(stdout, "Device %d ", fd);
53 if ((data & SLCD_MCLEAR) == SLCD_CLEAR) { 54 if ((data & SLCD_MCLEAR) == SLCD_CLEAR) {
54 slcdClear(dlg, fd); 55 slcdClear(dlg, fd);
55 } else if ((data & SLCD_MHOME) == SLCD_HOME) { 56 } else if ((data & SLCD_MHOME) == SLCD_HOME) {
56 slcdHome(dlg, fd); 57 slcdHome(dlg, fd);
57 } else if ((data & SLCD_MDGRAM) == SLCD_DGRAM) { 58 } else if ((data & SLCD_MDGRAM) == SLCD_DGRAM) {
58 slcdPosition(dlg, fd, data & 0x001f, (data & 0x0060) >> 5); 59 slcdPosition(dlg, fd, data & 0x001f, (data & 0x0060) >> 5);
59 } else if ((data & 0xfe00) == SLCD_DATA) { 60 } else if ((data & 0xfe00) == SLCD_DATA) {
60 slcdPutchar(dlg, fd, data & 0x00ff); 61 slcdPutchar(dlg, fd, data & 0x00ff);
61 } else if ((data & SLCD_MLEDS) == SLCD_LEDS) { 62 } else if ((data & SLCD_MLEDS) == SLCD_LEDS) {
62 fprintf(stdout, "socket_recv leds fd=%d bits=%02x\n", fd, (data & 0x00ff)); 63 if (debug)
64 fprintf(stdout, "socket_recv leds fd=%d bits=%02x\n", fd, (data & 0x00ff));
63 slcdBacklight(dlg, fd, data & SLED_LCD); 65 slcdBacklight(dlg, fd, data & SLED_LCD);
64 slcdLED(dlg, fd, SGLEDGREEN, data & SLED_TFLED); 66 slcdLED(dlg, fd, SGLEDGREEN, data & SLED_TFLED);
65 slcdLED(dlg, fd, SGLEDRED, data & SLED_HLTH); 67 slcdLED(dlg, fd, SGLEDRED, data & SLED_HLTH);
66 slcdLED(dlg, fd, SGLEDBLUE, data & SLED_MLTH); 68 slcdLED(dlg, fd, SGLEDBLUE, data & SLED_MLTH);
67 slcdLED(dlg, fd, SGLEDYELLOW, data & SLED_MLTP); 69 slcdLED(dlg, fd, SGLEDYELLOW, data & SLED_MLTP);
68 70
69 } else if (data != 0x0000) { 71 } else if (data != 0x0000) {
70 fprintf(stdout, "socket_recv got %04x\n", data); 72 if (debug)
73 fprintf(stdout, "socket_recv got %04x\n", data);
71 } 74 }
72 75
73 /* 76 /*
74 * Reply with the current keys state 77 * Reply with the current keys state
75 */ 78 */
76 if (sendto(sock, &keys, sizeof(uint16_t), MSG_DONTWAIT, (struct sockaddr *) &clntaddr, clntlen) == -1) { 79 if (sendto(sock, &keys, sizeof(uint16_t), MSG_DONTWAIT, (struct sockaddr *) &clntaddr, clntlen) == -1) {
77 fprintf(stdout, "sendto error: %s\n", strerror(errno)); 80 syslog(LOG_NOTICE, "socket_recv() sendto error: %s", strerror(errno));
78 } 81 }
79 } else if (recv_len < 0) { 82 } else if (recv_len < 0) {
80 my_error = errno; 83 my_error = errno;
81 if (my_error != EAGAIN) { 84 if (my_error != EAGAIN) {
82 fprintf(stdout, "socket_recv error: %s", strerror(my_error)); 85 syslog(LOG_NOTICE, "socket_recv() error: %s", strerror(my_error));
83 } 86 }
84 } else { 87 } else {
85 fprintf(stdout, "socket_recv unknown len=%d\n", (int)recv_len); 88 syslog(LOG_NOTICE, "socket_recv() unknown len=%d", (int)recv_len);
86 } 89 }
87 } 90 }
88 91
89 92
90 93

mercurial