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 |