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,ClockIdler,FortuneIdler
+from Idler import TrainIdler,GrayIdler,StringIdler,ClockIdler,FortuneIdler,FileIdler
import socket
from posix import geteuid
def setup_idlers(v):
global idlers, idler
idlers = [
+ 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) + " "),
- StringIdler(v),
+ GrayIdler(v,one="X",zero="O",reorder=1),
FortuneIdler(v),
ClockIdler(v),
- GrayIdler(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():
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
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)
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))