summaryrefslogtreecommitdiff
path: root/downloader/downloader.py
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-07-04 02:15:58 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-07-04 02:15:58 +0000
commit8543e8ea31c8e894256f88efd42f69f328a51a3b (patch)
treebafb06f9c5476f2220b337a8dd5cbd0dc8effc07 /downloader/downloader.py
parentimproved 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/downloader.py')
-rwxr-xr-xdownloader/downloader.py13
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):