diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-07-04 02:15:58 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-07-04 02:15:58 +0000 |
commit | 8543e8ea31c8e894256f88efd42f69f328a51a3b (patch) | |
tree | bafb06f9c5476f2220b337a8dd5cbd0dc8effc07 /downloader | |
parent | improved response handling (diff) |
identify works now
git-svn-id: https://svn.spreadspace.org/pic/trunk@33 a09c6847-51d9-44de-8ef2-e725cf50f3c7
Diffstat (limited to 'downloader')
-rwxr-xr-x | downloader/downloader.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/downloader/downloader.py b/downloader/downloader.py index 8f3fc3b..00b50a4 100755 --- a/downloader/downloader.py +++ b/downloader/downloader.py @@ -116,7 +116,7 @@ def calc_csum(str): cs = 0 for c in str: cs ^= ord(c) - return chr(cs) + return cs def exec_command(dev, cmd, answer): import struct @@ -128,12 +128,12 @@ def exec_command(dev, cmd, answer): answer = '<' + answer + 'B' answer_len = struct.calcsize(answer) + 2 - cstr = cmd + calc_csum(cmd) + cstr = cmd + chr(calc_csum(cmd)) os.write(dev, cstr) astr = b'' while len(astr) < 2: - astr += os.read(dev, answer_len - len(astr)) + astr += os.read(dev, 2 - len(astr)) if astr[0] != cmd[0]: print "ERROR: bootloader returned wrong command code" @@ -152,18 +152,17 @@ def exec_command(dev, cmd, answer): while len(astr) < answer_len: astr += os.read(dev, answer_len - len(astr)) - data = struct.unpack_from(answer, astr, 2) if 0 != calc_csum(astr): print "ERROR: checksum error" sys.exit(4) - return data + return struct.unpack_from(answer, astr, 2) ### Commands def identify(dev): data = exec_command(dev, 'i', 'BB10sHBHH') - id = { 'ver_maj': data[0], 'ver_min': data[1], 'name': data[2], 'devid': data[3], + id = { 'ver_min': data[0], 'ver_maj': data[1], 'name': data[2], 'devid': data[3], 'fss': data[4], 'mess': data[5], 'supported': data[6] } if id['ver_maj'] != VERSION_MAJ: @@ -173,7 +172,7 @@ def identify(dev): print "FSS value is 0 " sys.exit(4) - print "connected with Bootloader '%s', (ID=%04X, FSS=%d)" % (id['name'], id['devid'], id['fss']) + print "connected with Bootloader '%s' Version %d.%d, (ID=%04X, FSS=%d, MESS=%d)" % (id['name'], id['ver_maj'], id['ver_min'], id['devid'], id['fss'], id['mess']) return id def boot(dev): |