| Author |
Message |
Huidae Cho
Admin
|
# Posted: 15 Apr 2009 00:25 - Edited by: Huidae Cho
Reply
Quoting: Michael Huidae, print_chrono seems to have a bug. I had two workouts stored on my watch, then ran "print_chrono -u 179", and now my watch only shows the first workout. But when I again run print_chrono, both workouts are in the output file. Yet still the watch only shows the first workout. I suspect it's a simple error in the code that updates the chrono database header. Will you please take a look at this? I have to admit that I didn't expect a print_chrono function to modify the watch's memory. I would expect a print_chrono function to only read the watch's memory. Is this a bug as well?
|
Huidae Cho
Admin
|
# Posted: 9 May 2009 11:32 - Edited by: Huidae Cho
Reply
Michael, did you figure it out? 179+2 is obviously not greater than the maximum records allowed (250). How many used and unused workouts do you have in your watch when this happens?
This issue stops me from releasing 0.0.10. You can find a 0.0.10rc 5/9/09 build from the libdlusb page.
|
mstone
Member
|
# Posted: 9 May 2009 22:04
Reply
Sorry, it's been too long since I reported this error. Those workouts are long gone.
Anyway, the number refers to available laps, not workouts.
I suspect that because the Timex Windows software only allows 200 available laps, I had 2 workouts with a total of 19 laps between them. (The watch seems to use 1 additional lap per workout.) That's probably why I specified 179 when I ran print_chrono.
Hope this helps.
And thank you for 0.0.10rc. I'll check it out as soon as I get a chance.
|
mstone
Member
|
# Posted: 11 May 2009 22:14
Reply
This happened again today while testing 0.0.10rc. I had two workouts stored - the first with 38 laps and the second with 10 laps. Since the watch seems to use 1 additional lap per workout, I had 150 unused laps out of 200 total (since the Windows software limits it to 200).
After I executed "print_chrono -u 250", the watch correctly had 200 laps remaining (250 total, minus 38 minus 1 for the first workout, minus 10 minus 1 for the second workout). But the watch then only gave me access to the first workout. When I used print_chrono again, both workouts were output, so I know they are both there.
I also cleared the chrono memory and used add_print with the attached print_chrono file to load the two workouts again, and it returned the watch to the same erroneous state. The watch showed 200 laps free, with access to the first workout but not the second workout.
I've attached a chrono dump file, a print_chrono file, and a sysinfo file of the chrono application in this state in case they are of help debugging this issue. It seems likely to be a simple error with one of the chrono database header values, so hopefully a review of the attached chrono dump file will help.
|
Huidae Cho
Admin
|
# Posted: 12 May 2009 04:10
Reply
Michael,
I've uploaded 0.0.10rc2. Please test this version. Note that chrono.c is still in alpha since I didn't have enough time to play with Chrono to figure out what each header item means. Some of them are only vaguely (at least to me) documented in the dlusb protocol document.
|
mstone
Member
|
# Posted: 13 May 2009 19:29
Reply
0.0.10rc is broken. print_chrono now outputs totally bogus data. I have 3 workouts on my watch - one from yesterday with 22 laps, one from today with 42 laps, and another from today with 5 laps. But here's what I get from print_chrono:
lap_split 1 0 2005-02-00 monday 02:55:78.16 1 0 2005-02-00 monday 05:13:03.01 22 0 2005-03-16 monday 00:56:14.30 64 0 2005-03-30 monday 06:40:99.05 64 0 2005-03-30 monday 13:26:38.01 64 0 2005-03-30 monday 19:51:56.02
I noticed that you've removed the -u parameter altogether. I see unused_chrono.c, but it's not in Makefile.in.
I had the same problem completely understanding the chrono developer documentation, which is why I was glad that you had implemented libdlusb. :)
|
Huidae Cho
Admin
|
# Posted: 14 May 2009 00:59
Reply
Michael,
You need to initialize your watch. I think previous versions created invalid Chrono databases. In this new test, never use libdlusb to create lap records. Use libdlusb only to dump the Chrono db.
1. Initialize the watch without restoring Chrono records. 2. Add some workouts and laps directly on the watch. 3. Dump the Chrono database using dump_dlusb (both 0.0.9c and 0.0.10rc2). Please attach these binary dump files. 4. Print the database using print_chrono (both 0.0.9c and 0.0.10rc2). Please attach these two text files too.
Thank you.
|
mstone
Member
|
# Posted: 14 May 2009 11:47 - Edited by: mstone
Reply
After my previous testing, I synchronized with the Windows application (Timex Data Link USB) and cleared my chrono workouts. I haven't used libdlusb to create lap records since then. So the chrono database should be fine. I verified that the chrono database is valid today by running the Windows application. It displays my workouts perfectly, as does the watch itself.
libdlusb 0.0.9c also displays my workouts perfectly. It is only 0.0.10rc2 that displays bogus data.
So I'm nervous using libdlusb 0.0.10rc2 to initialize my watch. Have you done this with your watch?
I already attached the dump file using 0.0.10rc. I've attached another from 0.0.10rc2 in case it helps.
Please let me know how you'd like to proceed. Thank you.
|
Huidae Cho
Admin
|
# Posted: 14 May 2009 19:05
Reply
Michael, I didn't test recent versions because I couldn't find the timex cable.
Apparently, older versions' header structure seems correct, so I reverted those changes.
But, now I understand better how the number of unused records works, and it's reflected in 0.0.10rc3. The problem was that the number of unused records was always 1 more than what it should be.
Please use this version's unused_chrono to update the watch memory, and check if the watch can see all the records in the memory.
Thank you for testing!
|
mstone
Member
|
# Posted: 18 May 2009 18:41
Reply
Today I tested beginning with the following on my watch:
- Total laps: 200 - Available/unused laps: 140 - 3 workouts: 4 laps, 46 laps, 7 laps (4+1+46+1+7+1=60 total used laps)
I ran print_chrono from rc3 and got correct results. Then I ran unused_chrono -u 300 (to test overflow as well as this issue).
It incorrectly reported that I had 189 available/unused laps. It should have reported 190 (250-4-1-46-1-7-1).
The watch no longer gave me access to workouts #2 and #3. I could only access workout #1. It still showed the 189 available/unused laps. When I later ran print_chrono, it reported all 3 workouts correctly. But the watch itself still only showed the first workout. So unused_chrono appears to have the same problem that I originally reported.
I've attached a chrono dump file, a print_chrono file, and a sysinfo file of the chrono application in this state in case they are of help debugging this issue. It would be better if you could find your cable so that you could test yourself before posting another build. Then you could also get memory dumps to show you what's happening.
|
mstone
Member
|
# Posted: 15 Jul 2009 00:55 - Edited by: mstone
Reply
Huidae, I noticed in 0.0.10rc4 that you changed lines 198 and 262 of chrono.c from:
to:
Should these two lines instead be:
|
Huidae Cho
Admin
|
# Posted: 17 Jul 2009 04:34
Reply
I changed prev_lap to prev_split (accumulated laps) to make more sense...
|