git.ucc.asn.au
/
zanchey
/
dispense2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
allow dispensing of actual snacks.
[zanchey/dispense2.git]
/
sql-edition
/
servers
/
VendServer.py
diff --git
a/sql-edition/servers/VendServer.py
b/sql-edition/servers/VendServer.py
index
3f2c72f
..
03a7bf5
100755
(executable)
--- 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
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 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
import socket
from posix import geteuid
@@
-189,27
+190,43
@@
idler = None
def setup_idlers(v):
global idlers, idler
idlers = [
def setup_idlers(v):
global idlers, idler
idlers = [
+ GrayIdler(v),
StringIdler(v, text="Kill 'em all", repeat=False),
StringIdler(v, text="Kill 'em all", repeat=False),
+ GrayIdler(v,one="*",zero="-"),
StringIdler(v, text=CREDITS),
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) + " "),
StringIdler(v, text=str(math.pi) + " "),
+ GrayIdler(v,one="/",zero="\\",reorder=1),
StringIdler(v, text=str(math.e) + " "),
StringIdler(v, text=str(math.e) + " "),
-
StringIdler(v
),
+
GrayIdler(v,one="X",zero="O",reorder=1
),
FortuneIdler(v),
ClockIdler(v),
FortuneIdler(v),
ClockIdler(v),
-
Gray
Idler(v),
+
String
Idler(v),
TrainIdler(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 = 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():
idler.reset()
def idle_step():
@@
-260,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
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
if time_to_idle == None and cur_user == '':
time_to_idle = time() + 5
@@
-389,18
+407,28
@@
def run_forever(rfh, wfh, options, cf):
continue
elif cur_selection[1] == '8':
v.display('GOT COKE?')
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:
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
cur_selection = ''
time_to_autologout = time() + 8
+ last_timeout_refresh = None
def connect_to_vend(options, cf):
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)
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)
@@
-541,7
+569,7
@@
def do_vend_server(options, config_opts):
while True:
try:
rfh, wfh = connect_to_vend(options, config_opts)
while True:
try:
rfh, wfh = connect_to_vend(options, config_opts)
- except (
LAT
ClientException, socket.error), e:
+ except (
Serial
ClientException, socket.error), e:
(exc_type, exc_value, exc_traceback) = sys.exc_info()
del exc_traceback
logging.error("Connection error: "+str(exc_type)+" "+str(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