Revision 282 trunk/common/common.py
| common.py (revision 282) | ||
|---|---|---|
| 26 | 26 |
|
| 27 | 27 |
keypadTimeout = 31 #in seconds |
| 28 | 28 |
|
| 29 |
TT_GET_KEY = 'k' |
|
| 30 |
TT_SEND_KEY = 's' ############ put this in tooltron.py |
|
| 31 | 29 |
TT_ACK = 'a' |
| 32 | 30 |
TT_NACK = 'n' |
| 33 |
TT_TO = 'f' |
|
| 34 | 31 |
TT_TIMEOUT = 't' |
| 35 |
TT_ON = 'o' |
|
| 32 |
TT_KC = 'x' # A transaction containing a key and a card number |
|
| 33 |
TT_GRANT = 'q' # Tool access granted |
|
| 34 |
TT_DENY = 'f' # Tool access denied |
|
| 36 | 35 |
TT_PING = 'g' |
| 37 | 36 |
TT_BOOT = 'b' |
| 38 | 37 |
TT_PROGRAM_MODE = 'p' |
| ... | ... | |
| 48 | 47 |
|
| 49 | 48 |
BAUD_RATE = 9600 |
| 50 | 49 |
|
| 50 |
# cardbox id |
|
| 51 |
CARDBOX_ID = 2 |
|
| 52 |
|
|
| 51 | 53 |
#fails until a warning is sent |
| 52 | 54 |
MAX_TOOL_FAILS = 5 |
| 53 | 55 |
|
| ... | ... | |
| 101 | 103 |
def sendTool(t): |
| 102 | 104 |
tn = t |
| 103 | 105 |
print "sending power to tool ID",tn |
| 104 |
sendMessage(tn, TT_ON, "") |
|
| 106 |
sendMessage(tn, TT_GRANT, "") |
|
| 105 | 107 |
|
| 106 |
def sendKeyRequest(): |
|
| 107 |
print "sending key request" |
|
| 108 |
retries = 0 |
|
| 109 |
while retries < TT_MAX_RETRY: |
|
| 110 |
sendMessage(2, TT_GET_KEY, "") |
|
| 111 |
if checkAck(2): |
|
| 112 |
print "got ack for key request" |
|
| 113 |
return True |
|
| 114 |
else: |
|
| 115 |
print "ERROR: failed to get ack from GET_KEY, retrying..." |
|
| 116 |
retries += 1 |
|
| 108 |
def sendGrant(): |
|
| 109 |
print "seding grant to cardbox (",CARDBOX_ID," )"
|
|
| 110 |
sendMessage(CARDBOX_ID, TT_GRANT, "") |
|
| 117 | 111 |
|
| 118 |
return False |
|
| 112 |
def sendDeny(): |
|
| 113 |
print "seding deny to cardbox (",CARDBOX_ID," )"
|
|
| 114 |
sendMessage(CARDBOX_ID, TT_DENY, "") |
|
| 119 | 115 |
|
| 120 | 116 |
def sendAck(toolNum): |
| 121 | 117 |
print "seding ACK to",toolNum |
| ... | ... | |
| 188 | 184 |
print "ERROR: did not get start delimiter: "+str(ord(start)) |
| 189 | 185 |
return None |
| 190 | 186 |
|
| 191 |
def readKey(): |
|
| 192 |
startTime = time.time() |
|
| 193 |
while time.time() - startTime < keypadTimeout: |
|
| 194 |
m = readMessage() |
|
| 195 |
if m != None: |
|
| 196 |
[src, dest, cmd, data] = m |
|
| 197 |
if cmd == TT_SEND_KEY: |
|
| 198 |
return data[0] |
|
| 199 |
elif cmd == TT_TIMEOUT: |
|
| 200 |
raise TimeoutException("cardbox sent timeout packet")
|
|
| 201 |
else: |
|
| 202 |
return None |
|
| 187 |
#returns [key, carnum] pair |
|
| 188 |
def readTransaction(): |
|
| 189 |
m = readMessage() |
|
| 190 |
if m != None: |
|
| 191 |
[src, dest, cmd, data] = m |
|
| 192 |
if src == CARDBOX_ID and cmd == TT_KC and len(data) >= 2: |
|
| 193 |
return data[0], data[1:end] |
|
| 194 |
else: |
|
| 195 |
print "ERROR: wrong size data from transaction" |
|
| 196 |
logMessage("ERROR: got bad packet from cardbox")
|
|
| 197 |
sendNack(CARDBOX_IDX) |
|
| 198 |
return None |
|
| 203 | 199 |
|
| 204 |
raise TimeoutException("we timed out waiting for cardbox key")
|
|
| 205 | 200 |
|
| 206 | 201 |
#returns [src, dest, command] or [] on error |
| 207 | 202 |
# because of reflection, this will quietly ignore packets send by the server |
Also available in: Unified diff