X-Git-Url: https://git.ucc.asn.au/?p=uccvend-vendserver.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FVendServer.py;h=8c5ab7323fca2abab4688a8c66294f1881d8173c;hp=c82dda8bc48798baf8a0f9923e7ceacf6f6dcf84;hb=7c3379cae4ca6e0fbe09db062aaa31511ab6efe7;hpb=ce75000d4e6f38c8143c1eb0cafe2756d903c6ed diff --git a/sql-edition/servers/VendServer.py b/sql-edition/servers/VendServer.py index c82dda8..8c5ab73 100755 --- a/sql-edition/servers/VendServer.py +++ b/sql-edition/servers/VendServer.py @@ -10,12 +10,13 @@ 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 from random import random, seed -from Idler import TrainIdler,GrayIdler,StringIdler +from Idler import TrainIdler,GrayIdler,StringIdler,ClockIdler,FortuneIdler,FileIdler import socket from posix import geteuid @@ -189,28 +190,49 @@ idler = None def setup_idlers(v): global idlers, idler idlers = [ - StringIdler(v), + GrayIdler(v), + StringIdler(v, text="Kill 'em all", repeat=False), + GrayIdler(v,one="*",zero="-"), StringIdler(v, text=CREDITS), + GrayIdler(v,one="/",zero="\\"), + FileIdler(v, '/etc/passwd'), + GrayIdler(v,one="X",zero="O"), + FileIdler(v, '/usr/share/common-licenses/GPL-2'), + GrayIdler(v,one="*",zero="-",reorder=1), StringIdler(v, text=str(math.pi) + " "), + GrayIdler(v,one="/",zero="\\",reorder=1), StringIdler(v, text=str(math.e) + " "), - GrayIdler(v), + GrayIdler(v,one="X",zero="O",reorder=1), + FortuneIdler(v), + ClockIdler(v), + StringIdler(v), TrainIdler(v), - GrayIdler(v,one="*",zero="-"), - GrayIdler(v,one="/",zero="\\"), - GrayIdler(v,one="X",zero="O"), - GrayIdler(v,one="*",zero="-",reorder=1), - GrayIdler(v,one="/",zero="\\",reorder=1), - GrayIdler(v,one="X",zero="O",reorder=1), + ] + disabled = [ ] idler = choose_idler() def choose_idler(): global idler - idler = idlers[int(random()*len(idlers))] + iiindex = 0 + + if idler: + iiindex = idlers.index(idler) + + iilen = len(idlers) + + move = int(random()*len(idlers)) + 1 + + while move >= 0: + idler = idlers[( (iiindex + 1) % iilen)] + move = move - idler.affinity() + idler.reset() def idle_step(): global idler + if idler.finished(): + choose_idler() idler.next() def run_forever(rfh, wfh, options, cf): @@ -395,7 +417,11 @@ def run_forever(rfh, wfh, options, cf): time_to_autologout = time() + 8 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) @@ -536,7 +562,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))