Resume partially completed transfers
patrickremy opened this issue · 3 comments
Hi,
thanks a lot for this project : it's enabled me to use Windows even less !
I was wondering whether you had looked into adding the ability to resume partially completed transfers. It would be nice to have that to help with the download failures I get on a regular basis. Do you know whether it is supposed to be supported by the Garmin watches ? I'd rather not spend too much time on that if we already know Garmins do not support it.
Thanks
Thank you! It is absolutely possible to have it resume failed downloads.
There are a lot more that could be done with regards to error recovery, right now it just aborts everything and fails with an error, if it fails during a packet transfer it could try to resend it, or if the connection breaks it could reestablish (this would work a bit different depending on the error and where it occurs.
The other thing that could be done is to save whatever has been downloaded already while the transfer is still ongoing (perhaps to a temporary file) and if the program exits for some reason it could resume from that point when we run it again.
Both of these things should probably be (at least mostly) done in the https://github.com/Tigge/openant project.
Have you been able to test whether Garmin's ANT-FS stack supports the download resume feature ?
I've been trying a bit with my 910XT, and I seem to be getting a "CRC incorrect" response whatever "Initial Request/ CRC seed" combination I try in my Download Request command (logs below)
Any idea what I could be doing wrong ?
Patrick
====================
Example:
- the first download stops at offset 7680:
....
MainThread 2017-08-23 20:08:10,571 ant.fs.manager DEBUG Download 26, o7680, c47837 (manager.py:322)
MainThread 2017-08-23 20:08:10,571 ant.fs.command DEBUG packing 'D\t\x1a\x00\x00\x1e\x00\x00\x00\x01\xdd\xba\x00\x00\x00\x00' in array('B', [68, 9, 26, 0, 0, 30, 0, 0, 0, 1, 221, 186, 0, 0, 0, 0]),<type 'array.array'> (command.py:79)
.....
MainThread 2017-08-23 20:08:25,787 ant.fs.manager DEBUG Download 26 timeout (manager.py:345)
MainThread 2017-08-23 20:08:25,798 ant.fs.manager DEBUG Run 5 (manager.py:164)
- I then try to re-initiate a connection and send a DownloadRequest with the same offset, CRC and "Initial Request":
.....
MainThread 2017-08-23 20:10:42,436 ant.fs.manager DEBUG Download 26, o7680, c47837 (manager.py:322)
MainThread 2017-08-23 20:10:42,436 ant.fs.command DEBUG packing 'D\t\x1a\x00\x00\x1e\x00\x00\x00\x01\xdd\xba\x00\x00\x00\x00' in array('B', [68, 9, 26, 0, 0, 30, 0, 0, 0, 1, 221, 186, 0, 0, 0, 0]),<type 'array.array'> (command.py:79)
MainThread 2017-08-23 20:10:42,436 ant.easy.channel DEBUG send burst transfer 0 (channel.py:112)
.....
ant.base 2017-08-23 20:10:45,075 ant.base.ant DEBUG Read data: [a4 09 50 20 44 89 05 00 00 00 00 00 15] (now have [a4 09 50 20 44 89 05 00 00 00 00 00 15] in buffer) (ant.py:230)
ant.base 2017-08-23 20:10:45,075 ant.base.ant DEBUG XXXXGot message, <ant.base.Message 50:[20 44 89 05 00 00 00 00 00] (s:a4, l:9, c:15)> (ant.py:121)
- same with an IR=0
...
MainThread 2017-08-23 20:13:15,432 ant.fs.manager DEBUG Download 26, o7680, c47837 (manager.py:322)
MainThread 2017-08-23 20:13:15,432 ant.fs.command DEBUG packing 'D\t\x1a\x00\x00\x1e\x00\x00\x00\x00\xdd\xba\x00\x00\x00\x00' in array('B', [68, 9, 26, 0, 0, 30, 0, 0, 0, 0, 221, 186, 0, 0, 0, 0]),<type 'array.array'> (command.py:79)
....
ant.base 2017-08-23 20:13:17,955 ant.base.ant DEBUG Read data: [a4 09 50 20 44 89 05 00 00 00 00 00 15] (now have [a4 09 50 20 44 89 05 00 00 00 00 00 15] in buffer) (ant.py:230)
ant.base 2017-08-23 20:13:17,955 ant.base.ant DEBUG XXXXGot message, <ant.base.Message 50:[20 44 89 05 00 00 00 00 00] (s:a4, l:9, c:15)> (ant.py:121)
- same with CRC=0 and IR=1
...
MainThread 2017-08-23 20:16:09,441 ant.fs.manager DEBUG Download 26, o7680, c0 (manager.py:322)
MainThread 2017-08-23 20:16:09,441 ant.fs.command DEBUG packing 'D\t\x1a\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' in array('B', [68, 9, 26, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),<type 'array.array'> (command.py:79)
...
ant.base 2017-08-23 20:16:11,999 ant.base.ant DEBUG Read data: [a4 09 50 20 44 89 05 00 00 00 00 00 15] (now have [a4 09 50 20 44 89 05 00 00 00 00 00 15] in buffer) (ant.py:230)
ant.base 2017-08-23 20:16:11,999 ant.base.ant DEBUG XXXXGot message, <ant.base.Message 50:[20 44 89 05 00 00 00 00 00] (s:a4, l:9, c:15)> (ant.py:121)
- same with CRC=0 and IR=0
....
MainThread 2017-08-23 20:20:17,532 ant.fs.manager DEBUG Download 26, o7680, c0 (manager.py:322)
MainThread 2017-08-23 20:20:17,532 ant.fs.command DEBUG packing 'D\t\x1a\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00' in array('B', [68, 9, 26, 0, 0, 30, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]),<type 'array.array'> (command.py:79)
....
ant.base 2017-08-23 20:20:20,053 ant.base.ant DEBUG Read data: [a4 09 50 20 44 89 05 00 00 00 00 00 15] (now have [a4 09 50 20 44 89 05 00 00 00 00 00 15] in buffer) (ant.py:230)
ant.base 2017-08-23 20:20:20,053 ant.base.ant DEBUG XXXXGot message, <ant.base.Message 50:[20 44 89 05 00 00 00 00 00] (s:a4, l:9, c:15)> (ant.py:121)