From 93592ee43978005a86e0d83486c7b866e2c1b61f Mon Sep 17 00:00:00 2001 From: jaseg Date: Wed, 18 Dec 2013 18:22:00 +0100 Subject: Moving on with the host program --- host/matelight/listeners.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 host/matelight/listeners.py (limited to 'host/matelight/listeners.py') diff --git a/host/matelight/listeners.py b/host/matelight/listeners.py new file mode 100644 index 0000000..bb0ce72 --- /dev/null +++ b/host/matelight/listeners.py @@ -0,0 +1,19 @@ +from socketserver import * +import zlib +import struct + +class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass +class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass + +class MateLightUDPHandler(BaseRequestHandler): + def handle(self): + data = self.request[0].strip() + if len(data) != FRAME_SIZE+4: + raise ValueError('Invalid frame size: Expected {}, got {}'.format(FRAME_SIZE+4, len(frame))) + frame = data[:-4] + crc1, = struct.unpack('!I', data[-4:]) + crc2 = zlib.crc32(frame), + if crc1 != crc2: + raise ValueError('Invalid frame CRC checksum: Expected {}, got {}'.format(crc2, crc1)) + socket.sendto(b'ACK', self.client_address) + -- cgit