X-Git-Url: https://git.ucc.asn.au/?p=zanchey%2Fdispense2.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FVendingMachine.py;h=25d375b0d1855bb5cb0ff2c726b2fecdd654ff02;hp=26dc0f2f2ba65e1422d57111dd66a861538b3309;hb=7bf28edbb2fd11a4e3c52cf3fd4eb51db56eb274;hpb=beacd9493094d9768ba403fb960671107db2ac9c diff --git a/sql-edition/servers/VendingMachine.py b/sql-edition/servers/VendingMachine.py index 26dc0f2..25d375b 100644 --- a/sql-edition/servers/VendingMachine.py +++ b/sql-edition/servers/VendingMachine.py @@ -3,6 +3,7 @@ import re from CRC import do_crc from select import select import socket, logging +from time import time, sleep asynchronous_responses = [ '400', '401', # door open/closed '610', # switches changed @@ -12,13 +13,15 @@ asynchronous_responses = [ '400', '401', # door open/closed DOOR = 1 SWITCH = 2 KEY = 3 +TICK = 4 class VendingException(Exception): pass class VendingMachine: def __init__(self, rfh, wfh): self.events = [] - self.secret = 'AAAAAAAAAAAAAAAA' + # Secret + self.secret = 'SN4CKZ0RZZZZZZZZ' self.rfh = rfh self.wfh = wfh self.challenge = None @@ -92,7 +95,8 @@ class VendingMachine: elif code == '401': self.events.append((DOOR, 0)) elif code == '610': - self.events.append((SWITCH, None)) + # NOP this. Nothing handles this yet. + #self.events.append((SWITCH, None)) self.interpret_switches(text) elif code[0] == '2': self.events.append((KEY, int(code[1:3]))) @@ -152,6 +156,7 @@ class VendingMachine: def next_event(self, timeout = None): # we don't want to buffer in the serial port, so we get all the events # we can ASAP. + if timeout < 0: timeout = 0 if len(self.events) > 0: timeout = 0 while True: (r, _, _) = select([self.rfh], [], [], timeout) @@ -160,7 +165,7 @@ class VendingMachine: timeout = 0 else: break - if len(self.events) == 0: return None + if len(self.events) == 0: return (TICK, time()) ret = self.events[0] del self.events[0] return ret