Project

General

Profile

Revision 208

fixed some netprog bugs and added a reset packet send

View differences:

trunk/programmer/netprog.py
4 4

  
5 5
TT_BOOT = 'b'
6 6
TT_PROGRAM_MODE = 'p'
7
TT_ACK     = 'a'
8
TT_NACK    = 'n'
7
TT_ACK = 'a'
8
TT_NACK = 'n'
9 9
TT_BAD = 0
10 10
TT_PROGD = 'd'
11
TT_RESET = 'r'
11 12

  
13
MAX_PROG_SIZE = 1024-32
14

  
12 15
DUMB_SERIAL = 0
13 16

  
14 17
BAUD_RATE = 9600
......
19 22
    print "usage: netprog.py /path/to/bus/device toolnum binaryfile"
20 23
    exit(1)
21 24

  
22
#for testing, tool number 3
25
#for testing, tool number 3 hardcoded
23 26
class dumbBus (serial.Serial):
24 27
    def __init__(self):
25 28
        self.step = 0
......
47 50
    bus = dumbBus() 
48 51

  
49 52
bus.flushInput()
50
print bus
51 53

  
52 54
def printMsg(msg):
53 55
    if len(msg) < 5:
......
142 144
flen = fin.tell()
143 145
fin.seek(0,0)
144 146

  
147
if flen > MAX_PROG_SIZE:
148
    print "Program too Large!"
149
    print "prog size:",flen
150
    print "max size:",MAX_PROG_SIZE
151
    exit(-1)
152

  
153
print "prog size:",flen
154

  
155
print "sending RESET"
156
sendCommand(toolID, TT_RESET)
157

  
145 158
print "waiting for boot packet..."
146 159
while readPacket() != TT_BOOT:
147 160
    print "Didn't get a boot packet, bailing out"
148 161
    exit(-4)
149 162

  
150
sendProgram(toolID, flen)
151
r = readPacket() 
152
if r != TT_ACK:
153
    print "ERROR: tool did not ACK!!! got", r
154
    exit(-1)
163
r = 0
164
while r != TT_ACK:
165
    sendProgram(toolID, flen)
166
    r = readPacket()
167
    if r == TT_NACK:
168
        print "WARNING: got NACK, trying again"
169
    if r == TT_BOOT:
170
        print "ERROR: got stray boot packet"
171
        #TODO: restart the whole state machine after the boot packet
172
        exit(-2)
173
    if r != TT_ACK:
174
        print "ERROR: got another packet:",r
175
        exit(-1)
155 176

  
156 177
print 'sending data',
157 178
sys.stdout.flush()
......
159 180
    data = fin.read(MAX_DATA_LEN)
160 181
    #print data
161 182
    #print '-------------------'
162

  
163
    sendData(toolID, data)
164
    if readPacket() != TT_ACK:
165
        print "last data packet not ACK'd!!"
183
    if len(data) == 0:
166 184
        break
167 185

  
186
    r = 0
187
    while r != TT_ACK:
188
        sendData(toolID, data)
189
        r = readPacket()
190
        if r == TT_NACK:
191
            print "WARNING: got NACK, trying again"
192
        if r == TT_BOOT:
193
            print "ERROR: got stray boot packet"
194
            #TODO: restart the whole state machine after the boot packet
195
            exit(-2)
196
        if r != TT_ACK:
197
            print "ERROR: got another packet:",r
198
            exit(-1)
199

  
168 200
    if len(data) < MAX_DATA_LEN:
169 201
        break

Also available in: Unified diff