diff options
author | jaseg <jaseg@jaseg.net> | 2013-12-18 18:22:00 +0100 |
---|---|---|
committer | jaseg <jaseg@jaseg.net> | 2013-12-18 18:22:00 +0100 |
commit | 93592ee43978005a86e0d83486c7b866e2c1b61f (patch) | |
tree | 90d0e090eb62418635081370eb3b83c132ad56ba /host/matelight/listeners.py | |
parent | 037b3fc1d453e60a3cca0cf0775f6397bd7337cb (diff) | |
download | matelight-93592ee43978005a86e0d83486c7b866e2c1b61f.tar.gz matelight-93592ee43978005a86e0d83486c7b866e2c1b61f.tar.bz2 matelight-93592ee43978005a86e0d83486c7b866e2c1b61f.zip |
Moving on with the host program
Diffstat (limited to 'host/matelight/listeners.py')
-rw-r--r-- | host/matelight/listeners.py | 19 |
1 files changed, 19 insertions, 0 deletions
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) + |