Revision 159
got state transitions working with toolbox board!
netprog.py | ||
---|---|---|
7 | 7 |
TT_ACK = 'a' |
8 | 8 |
TT_NACK = 'n' |
9 | 9 |
TT_BAD = 0 |
10 |
TT_PROGD = 'd' |
|
10 | 11 |
|
12 |
DUMB_SERIAL = 0 |
|
13 |
|
|
14 |
BAUD_RATE = 9600 |
|
15 |
|
|
11 | 16 |
MAX_DATA_LEN = 32 |
12 | 17 |
|
13 | 18 |
if len(sys.argv) < 4: |
... | ... | |
31 | 36 |
return '^' + chr(3) + chr(1) + TT_BOOT + chr(3 ^ 1 ^ ord(TT_BOOT)) |
32 | 37 |
else: |
33 | 38 |
#print ord('^'), 3,1,ord(TT_ACK), (3 ^ 1 ^ ord(TT_ACK)) |
34 |
print '<' |
|
39 |
print '<',
|
|
35 | 40 |
return '^' + chr(3) + chr(1) + TT_ACK + chr(3 ^ 1 ^ ord(TT_ACK)) |
36 | 41 |
else: |
37 | 42 |
return 0 |
38 | 43 |
|
39 |
bus = dumbBus() #serial.Serial(sys.argv[1], BAUD_RATE, timeout = 0) |
|
44 |
if DUMB_SERIAL == 0: |
|
45 |
bus = serial.Serial(sys.argv[1], BAUD_RATE, timeout = 10) |
|
46 |
else: |
|
47 |
bus = dumbBus() |
|
48 |
|
|
40 | 49 |
bus.flushInput() |
41 | 50 |
#print bus |
42 | 51 |
|
... | ... | |
53 | 62 |
def msb(s): return (s>>8) & 0xFF |
54 | 63 |
|
55 | 64 |
body = chr(1) + chr(t) + TT_PROGRAM_MODE + chr(lsb(size)) + chr(msb(size)) |
65 |
print 1,t,TT_PROGRAM_MODE,lsb(size),msb(size), |
|
56 | 66 |
xor = 0 |
57 |
for c in body[1:]:
|
|
67 |
for c in body: |
|
58 | 68 |
xor = xor ^ ord(c) |
69 |
print xor |
|
59 | 70 |
|
60 | 71 |
msg = '^' + body + chr(xor) |
61 | 72 |
print "sending P" |
62 | 73 |
bus.write(msg) |
63 | 74 |
|
64 | 75 |
def sendData(t, data): |
65 |
body = chr(1) + chr(t) + data |
|
76 |
body = chr(1) + chr(t) + TT_PROGD + data |
|
77 |
n = len(data) |
|
78 |
while n < MAX_DATA_LEN: |
|
79 |
body = body + chr(0) |
|
80 |
n = n + 1 |
|
66 | 81 |
xor = 0 |
67 |
for c in body[1:]:
|
|
82 |
for c in body: |
|
68 | 83 |
xor = xor ^ ord(c) |
69 | 84 |
|
70 | 85 |
msg = '^' + body + chr(xor) |
71 |
print "sending data" |
|
72 | 86 |
bus.write(msg) |
87 |
print '.', |
|
88 |
sys.stdout.flush() |
|
73 | 89 |
|
74 | 90 |
def readPacket(): |
75 | 91 |
msg = bus.read(5) |
92 |
if len(msg) < 5: |
|
93 |
print "message too short! len =",len(msg) |
|
94 |
return TT_BAD |
|
76 | 95 |
if msg[0] != '^': |
77 | 96 |
print "did not get start delimeter!" |
78 | 97 |
return TT_BAD |
... | ... | |
105 | 124 |
exit(-4) |
106 | 125 |
|
107 | 126 |
sendProgram(toolID, flen) |
108 |
if readPacket() != TT_ACK: |
|
109 |
print "ERROR: tool did not ACK!!!" |
|
127 |
r = readPacket() |
|
128 |
if r != TT_ACK: |
|
129 |
print "ERROR: tool did not ACK!!! got", r |
|
110 | 130 |
exit(-1) |
111 | 131 |
|
132 |
print 'sending data', |
|
133 |
sys.stdout.flush() |
|
112 | 134 |
while True: |
113 | 135 |
data = fin.read(MAX_DATA_LEN) |
114 | 136 |
#print data |
Also available in: Unified diff