/[anoncvs]/projects/dispense2/sql-edition/servers/VendingMachine.py


UCC Code Repository

Diff of /projects/dispense2/sql-edition/servers/VendingMachine.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21 by dagobah, Fri Feb 29 13:25:50 2008 UTC revision 1.22 by dagobah, Fri Feb 29 14:17:58 2008 UTC
# Line 20  MIFARE = 5 Line 20  MIFARE = 5
20  class VendingException(Exception): pass  class VendingException(Exception): pass
21    
22  class VendingMachine:  class VendingMachine:
23          def __init__(self, rfh, wfh):          def __init__(self, rfh, wfh, use_mifare):
24                  self.events = []                  self.events = []
25                  # Secret                  # Secret
26                  self.secret = 'SN4CKZ0RZZZZZZZZ'                  self.secret = 'SN4CKZ0RZZZZZZZZ'
# Line 37  class VendingMachine: Line 37  class VendingMachine:
37                  while code != '000':                  while code != '000':
38                          code = self.get_response()[0]                          code = self.get_response()[0]
39                  self.get_switches()                  self.get_switches()
40                  self.mifare = MIFAREClient()                  if use_mifare:
41                            self.mifare = MIFAREClient()
42                            self.mifare_timeout = 0
43                    else:
44                            self.mifare = None
45    
46          def await_prompt(self):          def await_prompt(self):
47                  self.wfh.flush()                  self.wfh.flush()
# Line 169  class VendingMachine: Line 173  class VendingMachine:
173                  if timeout == None: timeout = 60*60*24*365                  if timeout == None: timeout = 60*60*24*365
174    
175                  # Make sure we go through the loop at least once.                  # Make sure we go through the loop at least once.
176                  if timeout <= 0: timeout = 0.01                  if timeout < 0: timeout = 0
177    
178                  while timeout > 0:                  while timeout >= 0:
179                          this_timeout = min(timeout, 0.2)                          this_timeout = min(timeout, 0.2)
180                          timeout -= this_timeout                          timeout -= this_timeout
181    
# Line 180  class VendingMachine: Line 184  class VendingMachine:
184                                  self.get_response(async = True)                                  self.get_response(async = True)
185                                  timeout = 0                                  timeout = 0
186    
187                          try:                          if self.mifare:
188                                  mifare_uid = self.mifare.get_card_uid()                                  now = time()
189                          except ValueError:                                  if now > self.mifare_timeout:
190                                  mifare_uid = None                                          self.mifare_timeout = now + 0.5
191                          if mifare_uid != None:                                          mifare_uid = self.mifare.get_card_id()
192                                  logging.info('Got MIFARE uid %s'%(str(mifare_uid)))                                          if mifare_uid != None:
193                                  self.events.append((MIFARE, mifare_uid))                                                  logging.info('Got MIFARE card id %s'%(str(mifare_uid)))
194                                  timeout = 0                                                  self.events.append((MIFARE, mifare_uid))
195                                                    timeout = 0
196                            if timeout == 0:
197                                    break
198    
199                  if len(self.events) == 0: return (TICK, time())                  if len(self.events) == 0: return (TICK, time())
200                  ret = self.events[0]                  ret = self.events[0]

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

Managed by UCC Webmasters ViewVC Help
Powered by ViewVC 1.1.26