Commit Graph

28 Commits

Author SHA1 Message Date
Mark Liversedge
0f62d66faf Add rrData signal in ANT and Robot
.. to help development of an experimental HRV tool.
2014-01-29 10:30:22 +00:00
Jon Escombe
6c21c87a42 Don't reset ANT channel settings on search timeout
Wiping out these settings prevents a successful reconnection
of the device if it comes back into range

Fixes #514
2013-12-02 23:27:01 +00:00
Mark Liversedge
2023547bf7 Documentation: Makeinfo compatibility
.. only use the @input macro if we're not running info -- we only do that
   to get nice fonts in printed output anyway.
2013-05-14 10:00:00 +01:00
Mark Liversedge
caec4ee0fe Code Cleanup: Remove #if 0 code
As a personal habit I tend to use the C pre-processor to
comment out code blocks I don't want to remove. This is in
case the code will be required in the future.

I think it is now safe to say the code commented out is not
required -- most of it is legacy and marks the transition from
earlier designs or legacy code.

I've done this in one big commit since in theory it has no
functional change, and in future can look in this commit for any
code we may want to reinstate.
2013-02-11 15:00:00 +00:00
Mark Liversedge
e9cabc116f Code Cleaning: ANT+ sources
Removing and fixing 'XXX' code markers across the ANT+
code. Largely this was to confirm against specs and mark
for future support (e.g. burst data, further refactoring
of the quarqd sources).
2013-02-07 12:20:40 +00:00
Mark Liversedge
f527d8e5c2 Fix compiler warnings
All are harmless but for the sake of clarity have
fixed them all bar a couple;

- Lucene grumbles about signed/unsigned conversion which
  is/isn't valid depending upon the version of CLucene you
  compile with. Either way it is harmless.

- QxtScheduleView has a bunch of issues, but since it is a
  third party widget its better to leave it unchanged.
2013-02-06 15:54:32 +00:00
Damien
fca4c27d2c Remove some warnings 2012-12-15 17:18:44 +01:00
Andrew Bryson
b746f86ee0 Allow more duplicate messgaes in standard mode
This should fix the current issue with Power2Max.
2012-02-12 17:41:24 +00:00
Andrew Bryson
cb497c7dbc Initialise stdNullCount 2012-02-05 19:36:19 +00:00
Andrew Bryson
04d718a76d Fix power blips from Standard Power with Quarq
Added a check to insure that we don't display the same power event more
than once.

Fixes Bug #635
2012-02-05 13:05:41 +00:00
Mark Liversedge
e9c75443d2 ANTChannel Standard Power bug
Andy Bryson's fixes for quarq power spikes removed
processing of standard power messages (see commit
cc0bd29).

This was because a check was performed on ANTMessage::period
which is not set for Standard power messages and will always
be zero.

This may fix processing of power2max power telemetry.
2012-02-02 07:11:45 +00:00
Andrew Bryson
51a6b3ffd2 Fix quarq power and cadence glitches when coasting
ANT+ telemetry data processing in ANTChannel now
checks for previous message period values.

Fixes #607.

[Tested by author on Quarq cranks, error not recreated
 on SRM or Powertap devices, but may be Quarq specific]
2012-01-21 20:54:19 +00:00
Mark Liversedge
3ca7f1a5d2 Add Device Wizard
Introduce a wizard for adding realtime devices since it
is prone to user error, is relatively complicated and is
something most users will only ever do once or twice.

There are several logical updates within this patch:

First; Fix intermittent ANT+ not working
* LibUsb     - check bufRemaining is > 0 not non-zero
* LibUsb     - Always reset the USB stick on open
* ANT.cpp    - Support > 4 channels on USB2
* ANTChannel -  Do not use pairing, but always
*               unassign, assign and set channel id.

Second; Fix device discovery
* Find and discover support in realtime controllers
* Extend Serial.cpp to cover more Serial devices
* Support for 4 or 8 ANT channels for USB1/USB2

Third; Introduce Add Device Wizard with
* General and Specific wizard pages for each device type
* Device pairing with telemetry display
* fixed compile time warnings

Fourth; Update Device Config Page
* use wizard to add new device
* remove edit fields, replaced by wizard
* remove pair, firmware buttons replaced by wizard

Fifth; Deprecate/Remove Device Types
* Null Device - used by developers only
* Quarqd client - replaced by Native ANT+
* GC Server - not implemented yet

I have also introduced a device specific wheel size
and flags for controlling the default selection and
sources for sensor data when in multi-device mode. These
are not yet supported in the code.

Fixes #611.
Fixes #497.
2012-01-21 20:28:33 +00:00
Mark Liversedge
01a6e85363 ANT+ Use Cadence from Standard Power Messages
Standard power messages include an instant cadence
value which we ignored. We should use this if it is
available.

Fixes previous attempt by setting Cadence rather than
wheelRPM with the instant cadence value (!)

Fixes #556.
2012-01-14 15:48:41 +00:00
Mark Liversedge
16ca7e4667 Further fixup for USB2 sticks
Added a usb_init() call prior to starting a workout, this
appears to clear state inside libusb.

Also added some commented code for displaying diagnostics
when sending/receiving ANT messages.

This should make the ANT+ connection more robust on first
use, since subsequent uses are now fine.

This may be related to the state the USB host controller (stick)
is left in after we first connect, more investigation is required.
2012-01-06 16:57:39 +00:00
Mark Liversedge
7f91cfe25b Fix need to 'reset' USB2 stick between sessions
It was neccessary to reset the USB2 stick between
sessions. This was due to incorrect state data
being maintained within the ANT code.

New sessions should start without requiring a USB
device reset or running ANT agent etc.

Fixes #558.
2012-01-06 11:38:20 +00:00
Mark Liversedge
3af0939476 BioBike Support
Add support for dual ANT+ power devices (in this case using
dual track SRM cranks). The two power devices are assumed to
represent power and alternative power.

The following changes have been made for this support:
* ANT+ device profile support multiple power devices
* Allow editing ANT+ device profile on Mac/Linux (it
  is already available on Windows)
* When a second ANT Channel is assigned to power it is
  set as alternative, and updates alternative watts
* RealtimeData now supports Watts and AltWatts
* AltWatts dial and associated color settings
* LRBalance dial to show difference between Watts and AltWatts
* Realtime plot plots watts and altWatts

Fixes #572.
2011-12-30 18:06:31 +00:00
Mark Liversedge
9c303dacb2 ANT+ Use Cadence from Standard Power Messages
Standard power messages include an instant cadence
value which we ignored. We should use this if it is
available.

Fixes #556.
2011-12-21 12:06:24 +00:00
Mark Liversedge
3f4d7b2741 Remove executable bit on source files
ANTMessage and ANTChannel source files are created with
the executable bit set. This patch removes that.
2011-11-13 11:16:26 +00:00
Mark Liversedge
2d0d779026 Support Garmin USB2 sticks on Linux
Fixup support for USB2 on Linux via libusb. The code
is pretty ghetto with a maze of pre-processor conditionals.
But it works.

Of special note:
* You MUST build with a very specific version of libusb, the
  stock libs in Ubuntu do not work. Might pull the code into
  the main repo, since its pretty darned tiny.

* On Linux access controls for the USB devices is controlled
  by udev, and requires a rule adding to ensure the devie can
  be read/written by users other than root. A udev rule file
  has been added to a 'linux' subdirectory in src.

Some of the timeouts and usb setup/reset code has been adjusted
to ensure the device is always in a consistent state. This appears
to be more important on Linux than Windows for some reason.
2011-10-26 02:29:10 +01:00
Mark Liversedge
6c787e6e60 Training Mode Improvements - Part 1 of 3
Update to training mode to improve the UI and overall
user experience. This initial patch introduces:

* Video Window - but ghetto and not fully functional
* Congigurable - drag and drop 'dials' onto homewindow

In future updates we need to:
* Support Video fully - Only Linux in this patch
* HomeWindow - Make Training mode the same as HomeWindow
* More Dials - Support metrics (e.g. BikeScore)
* RT Charts - Make RT plot drag/drop and support other
              types of charts (e.g. Time In Zone)
* Controls - Add more controls for FFWD/REW, Skip etc

This patch has been tested on Linux ONLY. It is being committed
to support further build/deployment work for Win32 and Mac OSX.
2011-04-03 18:30:35 +01:00
Darren Hague
0c70c98cb5 Native ANT+ part 2 - USB2 Support and minor improvements
This patch adds support for the Garmin USB2 stick using
libusb-win library. Instructions are included in gcconfig.pri.in
for configuring and installing the neccessary libs.

To enable support for USB1 and USB2 support in the same binary
stubs are created when UsbXpress/Libusb are not available and the
device i/o attempts to use USB2 before falling back to USB1.

Since I was also in the middle of some coding changes I merged
my developments (Mark) with Darren's patch whilst fixing it up
for commit, namely:

1. the configuration screen no longer demands a COMx port
   when using Native ANT+ on Windows.
2.  new signals in ANTChannel notify the ANT class when info is
   stale or lost (but they are not used at present).
3. The previous debug messages have been removed, although new
   debug messages are added for stale/drop/timeout signals.
2011-03-19 21:03:43 +00:00
Mark Liversedge
0634e3c232 Native ANT+ Part 2 - antlog.bin dignostics
A patch to create an 'antlog.bin' in the current working
directory when working with ANT+ devices. This is to enable
users to test the ANT+ support and share the received messages
to diagnose issues related to parsing messages and displaying
telemetry.

This 'antlog.bin' will ultimately become a native ant file format
and have an associated extension (.ant) and a ridefile reader.
For now it just writes a stream of fixed length messages (12 bytes)
of all received messages.
2011-03-14 21:57:35 +00:00
Mark Liversedge
5af527d7ff Native ANT+ Part 2 - Improved Power Support
Fix SRM power decoding to stop requiring a new message
pair whenever a zero change occurs - this was erroneous
and severely limited the update rate. Power and Cadence
updates for SRM are now immediate.

Desk check of support for Standard Power messages showed
that the code was interfering with normal cranktorque or
wheeltorque power calculations. This did not show up with
SRM cranks since they do not send standard power messages.

This should help to resolve issues with erratic/incorrect
power readings from Powertaps. I am not sure if Quarq cranks
send standard power messages, but if they do then this should
improve power readings for those too.
2011-03-10 14:26:12 +00:00
Mark Liversedge
bac3959fcc Native ANT+ Part 2 - Garmin USB1 Stick on Windows
This patch provides support for Garmin USB1 sticks under
Windows. Since the device does not present a serial port
this code uses the USBXpress API from SiLabs that the
Garmin device uses.

Support for USB2 sticks is pending.

To build you will need to download and install the SiLabs
development kit from http://www.silabs.com/products/mcu/Pages/USBXpress.aspx
and set USBXPRESS_INSTALL appropriately in gcconfig.pri. I
have provided instructions in gcconfig.pri.in.

At runtime the SiUSBXp.dll will need to be in the path, I will
assume that Gareth will fix up the windows installer for this, but
for now just copy the file manually.

Tested with a GARMIN USB1 stick on Windows 7 with SRM, Garmin HR and
a GSC-10 dual speed/cadence device.

There are other minor fixes to the ANTMessage code in this patch
related to decoding of calibration messages.
2011-03-07 13:39:17 +00:00
Mark Liversedge
926cf0263d Native ANT+ Part 2 - tweaks
Couple of little tweaks to the Native ANT support. Firstly,
data channels such as watts, hr and cadence are now rounded
to an integer (lots of grid lines in ride plot looked nasty).

Secondly, basic support for calibration messages; this has been
limited to SRM messages, but will add support for other devices
as we start to debug them.

Part 3 of this work is still pending, this patch only contains
adjustments to part 2. I suspect there will be further adjustments
as we squash bugs for Quarq and PT users.
2011-03-06 21:16:04 +00:00
Mark Liversedge
1725ca0520 Native ANT+ debug, temporary for testing. 2011-03-06 13:41:16 +00:00
Mark Liversedge
9658378c71 Native ANT+ Support (2 of 3)
Second stage of development, refactored the quarqd sources and introduced
an ANTChannel and ANTMessage class.

This is a functional patch and should work with known ANT+ devices, but
has only been tested with a Garmin HR strap, GSC-10 dual speed/cadence
and SRM wireless cranks. It has only been tested with a first generation
Garmin ANT+ USB stick.

It *should* work with other devices (e.g. Powertap, Quarq) but this has
not been tested.

The configuration pane has not been fixed yet, so you can either add a
Native ANT+ device and leave the profile blank (it will autodiscover
whatever it can when you run) or you can copy the profile from a Quarqd
device and use that.

There are lots of bugs;
* Calibration is not supported, uses a static srm_offset
* Wheel circumference is fixed at 2100mm for speed calculations
* Timeouts are hit and miss and need to be completed
* Sensor loss / timeouts are not managed yet
* Burst data and Acks are not handled
* Device descriptions, versions and battery messages are not handled

Aside from the bugs above part 3 wil also need to include;
* Configuration screen fixups and device pairing
* Add a calibration button to the realtime window

Lastly, the refactoring of the quarqd code is incomplete, there is still
a need to use ANTMessage across the code, especially within the ANTChannel
code which still does a bit of decoding locally.
2011-03-05 15:08:41 +00:00