From 8543e8ea31c8e894256f88efd42f69f328a51a3b Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 4 Jul 2013 02:15:58 +0000 Subject: identify works now git-svn-id: https://svn.spreadspace.org/pic/trunk@33 a09c6847-51d9-44de-8ef2-e725cf50f3c7 --- downloader/downloader.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'downloader/downloader.py') 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): -- cgit v1.2.3