Project

General

Profile

Revision 159

got state transitions working with toolbox board!

View differences:

trunk/programmer/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