allow dispensing of actual snacks.
[zanchey/dispense2.git] / sql-edition / servers / VendServer.py
index e17de1c..03a7bf5 100755 (executable)
@@ -10,7 +10,8 @@ from traceback import format_tb
 if USE_DB: import pg
 from time import time, sleep
 from popen2 import popen2
-from LATClient import LATClient, LATClientException
+#from LATClient import LATClient, LATClientException
+from SerialClient import SerialClient, SerialClientException
 from VendingMachine import VendingMachine, VendingException
 from MessageKeeper import MessageKeeper
 from HorizScroll import HorizScroll
@@ -276,6 +277,7 @@ def run_forever(rfh, wfh, options, cf):
                if len(cur_pin) == PIN_LENGTH and mk.done() and time_to_autologout == None:
                        # start autologout
                        time_to_autologout = time() + 15
+                       last_timeout_refresh = None
 
                if time_to_idle == None and cur_user == '':
                        time_to_idle = time() + 5
@@ -405,18 +407,28 @@ def run_forever(rfh, wfh, options, cf):
                                                continue
                                        elif cur_selection[1] == '8':
                                                v.display('GOT COKE?')
-                                               os.system('su - "%s" -c "dispense %s"'%(username, cur_selection[0]))
+                                               if ((os.system('su - "%s" -c "dispense %s"'%(username, cur_selection[0])) >> 8) != 0):
+                                                       v.display('SEEMS NOT')
+                                               else:
+                                                       v.display('GOT COKE!')
                                        else:
-                                               v.display('HERES A '+cur_selection)
-                                               v.vend(cur_selection)
-                                       sleep(0.5)
-                                       v.display('THANK YOU')
-                                       sleep(0.5)
+                                               v.display(cur_selection+' - $1.00')
+                                               if ((os.system('su - "%s" -c "dispense snack"'%(username)) >> 8) == 0):
+                                                       v.vend(cur_selection)
+                                                       v.display('THANK YOU')
+                                               else:
+                                                       v.display('NO MONEY?')
+                                       sleep(1)
                                        cur_selection = ''
                                        time_to_autologout = time() + 8
+                                       last_timeout_refresh = None
 
 def connect_to_vend(options, cf):
-       # Open vending machine via LAT?
+       # Open vending machine via serial.
+       logging.info('Connecting to vending machine using serial')
+       serialclient = SerialClient(port = '/dev/ttyS1', baud = 9600)
+       return serialclient.get_fh()
+       
        if options.use_lat:
                logging.info('Connecting to vending machine using LAT')
                latclient = LATClient(service = cf.ServiceName, password = cf.ServicePassword, server_name = cf.ServerName, connect_password = cf.ConnectPassword, priv_password = cf.PrivPassword)
@@ -557,7 +569,7 @@ def do_vend_server(options, config_opts):
        while True:
                try:
                        rfh, wfh = connect_to_vend(options, config_opts)
-               except (LATClientException, socket.error), e:
+               except (SerialClientException, socket.error), e:
                        (exc_type, exc_value, exc_traceback) = sys.exc_info()
                        del exc_traceback
                        logging.error("Connection error: "+str(exc_type)+" "+str(e))

UCC git Repository :: git.ucc.asn.au