Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resume partially completed transfers #169

Open
patrickremy opened this issue Aug 23, 2017 · 3 comments
Open

Resume partially completed transfers #169

patrickremy opened this issue Aug 23, 2017 · 3 comments

Comments

@patrickremy
Copy link

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

@Tigge
Copy link
Owner

Tigge commented Aug 23, 2017

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.

@patrickremy
Copy link
Author

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)

@Tigge
Copy link
Owner

Tigge commented Aug 24, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants