mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-14 08:38:45 +00:00
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.
75 lines
2.8 KiB
C++
75 lines
2.8 KiB
C++
/*
|
|
* Copyright (c) 2009 Mark Liversedge (liversedge@gmail.com)
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the Free
|
|
* Software Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc., 51
|
|
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
|
|
// Abstract base class for Realtime device controllers
|
|
#include "RealtimeData.h"
|
|
#include "TrainTool.h"
|
|
|
|
#ifndef _GC_RealtimeController_h
|
|
#define _GC_RealtimeController_h 1
|
|
#include "GoldenCheetah.h"
|
|
|
|
#define DEVICE_ERROR 1
|
|
#define DEVICE_OK 0
|
|
|
|
class RealtimeController : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
TrainTool *parent; // for push devices
|
|
|
|
RealtimeController (TrainTool *parent, DeviceConfiguration *dc = 0);
|
|
virtual ~RealtimeController() {}
|
|
|
|
virtual int start();
|
|
virtual int restart(); // restart after paused
|
|
virtual int pause(); // pauses data collection, inbound telemetry is discarded
|
|
virtual int stop(); // stops data collection thread
|
|
|
|
// for auto-configuration
|
|
virtual bool find(); // tell if the device is present (usb typically)
|
|
virtual bool discover(QString); // tell if a device is present at serial port passed
|
|
|
|
// push or pull telemetry
|
|
virtual bool doesPush(); // this device is a push device (e.g. Quarq)
|
|
virtual bool doesPull(); // this device is a pull device (e.g. CT)
|
|
virtual bool doesLoad(); // this device can generate Load
|
|
|
|
// will update the realtime data with current data (only called for doesPull devices)
|
|
virtual void getRealtimeData(RealtimeData &rtData); // update realtime data with current values
|
|
virtual void pushRealtimeData(RealtimeData &rtData); // update realtime data with current values
|
|
|
|
// only relevant for Computrainer like devices
|
|
virtual void setLoad(double) { return; }
|
|
virtual void setGradient(double) { return; }
|
|
virtual void setMode(int) { return; }
|
|
|
|
// post process, based upon device configuration
|
|
void processRealtimeData(RealtimeData &rtData);
|
|
void processSetup();
|
|
|
|
private:
|
|
DeviceConfiguration *dc;
|
|
DeviceConfiguration devConf;
|
|
};
|
|
|
|
#endif // _GC_RealtimeController_h
|
|
|