// -*- mode: outline ; coding: utf-8-unix -*-


** RELEASE CHECKLIST
* make sure all files are listed in scripts/origsrc-file-list
* update version info in src/VERSION
* optional: update version minor in scrips/make-changelog
* run scripts/make-changelog
* run scripts/deb
* commit above changes and tag respective version

** FEATURES
* usbmon => ANT message decoder
* many ANT,ANT-FS messages implemented
* cp201x linux GPLv2 kernel driver partially ported to userspace and windows
* ANTFS linking
* ANTFS S/N retrieval
* ANTFS authentication
* ANTFS download file
* ANTFS erase file
* It generally helps to keep the watch close (20-30 cm) to the USB2ANT dongle while communicating.

** TODO
* when State=Busy broadcast is sent, maybe adjust timeout in waitForBursts??
* run fit2gpx after downloads finish
* capture ant agent log: for downloading all, for erasing, for uploading
* capture ant agent log: for firmware upload
* fix all TODO/FIXME in the code
* resume downloader connections
* split ANT framing / messaging functionality into two separate classes
* send specific messages at the channel period??
* ANTFS erase downloaded files (check ant agent logs for this)
* ANTFS upload more waypoints??
* Ctrl-C doesn't abort file downloads, as those are done in a tight loop inside the state machine...
* download progress indicator, based on file sizes from directory file
* if beacon says Busy, try waiting?

** DONE
* ANTFS pairing
* eliminate delays due to threading
* check CRC during downloading
* fix delays in threading, avoid waiting at exit
* directory parsing
* decoding downloaded FIT workout files
* download a particular file
* write all logs into %DATE% folder
* save .fit files with correct date



** ISSUES
*** usbmon truncates output to 32 bytes http://mrmekon.tumblr.com/post/5146693470/usbmon-truncation
The USB debug driver, usbmon, truncates the ‘u’ format devices to 32 bytes by default!

It turns out this can be set with an ioctl.  Which doesn’t work too well with cat, our information-gatherer of choice.

But there’s a nice guy at Red Hat who makes a proper usbmon command-line utility that supports all of its various ioctl options.  Using his ‘usbmon’ tool, you can get a nice, untruncated output with:

    ./usbmon -i <USB bus> -fu -s 100


** LINKS
http://gitorious.org/~tade
http://www.andreas-diesner.de/garminplugin/doku.php
http://code.google.com/p/linuxgarminimport/
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=124627&whichpage=3
http://dropoff.tumblr.com/post/505336492/garmin-connect-running-on-ubuntu-linux
http://cgit.get-open.com//cgit.cgi/gant/
git://get-open.com/gant
http://www.thefloatingfrog.co.uk/geek-hobbies/garmin-forerunner-305405-musings/#comment-3432
http://code.google.com/p/antwireless/w/list
http://code.google.com/p/garmintools/
http://git.debian.org/?p=pkg-running/garmin-forerunner-tools.git;a=summary
http://www.usblyzer.com/download.htm
http://www.sbrk.co.uk/t6/
http://developer.garmin.com/forum/viewtopic.php?t=354
http://www.garmin.com/support/pdf/IOSDK.zip

http://bryars.eu/projects/garmin-forerunner-decoder/

http://www.waite.net.nz/downloads/
http://www.waite.net.nz/downloads/garmin-upload-tools_1.4.0.tar.gz

https://forums.garmin.com/showthread.php?t=14598 Getting The Garmin Forerunner 410 to work in UBUNTU

http://developer.garmin.com/web/communicator-api/

http://packages.debian.org/source/sid/garmin-ant-downloader


http://vusb-analyzer.sourceforge.net/


http://frant.sf.net

http://braiden.org/?p=293
http://www.youtube.com/playlist?list=PLA4AA10B39DB19291&feature=plcp
https://github.com/braiden/python-ant-downloader
https://github.com/Tigge/Garmin-Forerunner-610-Extractor

http://sportwatcher.googlecode.com/svn/trunk/

http://sourceforge.net/projects/pytrainer/
http://sourceforge.net/projects/turtlesport/?source=recommended
http://sourceforge.net/projects/sportwatcher/?source=recommended
http://sourceforge.net/projects/sportstracker/?source=recommended

http://goldencheetah.org/




** git-pbuilder as root
DIST=unstable ARCH=i386 git-pbuilder create --debootstrapopts --variant=buildd
DIST=unstable ARCH=i386 git-pbuilder update
? # add ... deb-src http://archive.ubuntu.com/ubuntu <ubuntu_version> main restricted universe multiverse
? apt-get update
? apt-get source bc
? pbuilder build *.dsc

** building the actual package
rm -r cmake-build
git reset --hard HEAD
git clean -f -X
git clean -f -d
git-dch -R -N 1.17-1
# review, edit and commit changelog
#pristine-tar checkout ../antpm_1.17.orig.tar.gz
DIST=unstable ARCH=i386 git-buildpackage --update
# --git-ignore-new
DIST=unstable ARCH=i386 git-buildpackage -us -uc --git-tag

** managing patches on top of the package with quilt
* http://pkg-perl.alioth.debian.org/howto/quilt.html
*** Creating a Patch
To create a patch, run quilt new $patch_name. If you want .patch
extension, you need to give it explicitly.
This creates a new patch entry in debian/patches. This patch also
becomes the topmost or current patch. This is the patch that is at the
top of the stack.
Now choose what file you want to change in that patch and run quilt
edit $file. quilt notes the current state of the file and launches
your $EDITOR so you can edit the file.
Repeat the quilt edit command for every file you want to be changed by
that patch.
When you're finished, run quilt refresh. This compares the noted state
of the edited files with their present state, and produces a patch in
debian/patches.
Note that this patch is currently applied. Check it with quilt
applied.
If the package is already being maintained in the pkg-perl Git
repository, it is necessary to tell Git that you have added new
files. You can do this with git add debian/patches ; git commit.

***Applying and Unapplying Patches
Now that we have the patch applied, let's play with it. quilt pop
unapplies the topmost patch. quilt push applies the next patch in the
series. You may see the list of unapplied patches with quilt
unapplied.

***Editing Patches
To edit a patch, you have to first make it current (be on the top of
the stack of applied patches). If the patch is already applied (but
not the top), run quilt pop $patch_name; if it is not, run quilt push
$patch_name. Now that the patch is on the top of the stack, run quilt
edit $file as before. You can edit files that were already in the
patch and you can edit new files. When you're done, remember to tell
this to quilt by running quilt refresh.

***Other Commands
quilt delete deletes, quilt rename renames a patch. There are a lot
more. See the manual page.
