Lap Averages in Real Time mode

Add lap average for hr watts cadence speed.
This commit is contained in:
Andrew Bryson
2012-01-05 19:08:19 +00:00
committed by Mark Liversedge
parent 1b1fe43238
commit 0ba75f3f19
4 changed files with 46 additions and 1 deletions

View File

@@ -20,7 +20,7 @@
#include "DialWindow.h"
DialWindow::DialWindow(MainWindow *mainWindow) :
GcWindow(mainWindow), mainWindow(mainWindow), average(1)
GcWindow(mainWindow), mainWindow(mainWindow), average(1), isNewLap(false)
{
rolling.resize(150); // enough for 30 seconds at 5hz
@@ -85,6 +85,7 @@ DialWindow::DialWindow(MainWindow *mainWindow) :
connect(mainWindow, SIGNAL(configChanged()), this, SLOT(seriesChanged()));
connect(mainWindow, SIGNAL(stop()), this, SLOT(stop()));
connect(mainWindow, SIGNAL(start()), this, SLOT(start()));
connect(mainWindow, SIGNAL(newLap()), this, SLOT(onNewLap()));
// setup colors
seriesChanged();
@@ -158,6 +159,17 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
}
if( isNewLap &&
( series == RealtimeData::AvgCadenceLap ||
series == RealtimeData::AvgHeartRateLap ||
series == RealtimeData::AvgSpeedLap ||
series == RealtimeData::AvgWattsLap ) )
{
count = 0;
sum = 0.0;
isNewLap = false;
}
switch (series) {
case RealtimeData::Time:
@@ -193,6 +205,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
break;
case RealtimeData::AvgWatts:
case RealtimeData::AvgWattsLap:
sum += rtData.value(RealtimeData::Watts);
count++;
value = sum / count;
@@ -200,6 +213,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
break;
case RealtimeData::AvgSpeed:
case RealtimeData::AvgSpeedLap:
sum += rtData.value(RealtimeData::Speed);
count++;
value = sum / count;
@@ -208,6 +222,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
break;
case RealtimeData::AvgCadence:
case RealtimeData::AvgCadenceLap:
sum += rtData.value(RealtimeData::Cadence);
count++;
value = sum / count;
@@ -215,6 +230,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
break;
case RealtimeData::AvgHeartRate:
case RealtimeData::AvgHeartRateLap:
sum += rtData.value(RealtimeData::HeartRate);
count++;
value = sum / count;
@@ -469,22 +485,26 @@ void DialWindow::seriesChanged()
case RealtimeData::Joules:
case RealtimeData::Watts:
case RealtimeData::AvgWatts:
case RealtimeData::AvgWattsLap:
foreground = GColor(CPOWER);
break;
case RealtimeData::Speed:
case RealtimeData::VirtualSpeed:
case RealtimeData::AvgSpeed:
case RealtimeData::AvgSpeedLap:
foreground = GColor(CSPEED);
break;
case RealtimeData::Cadence:
case RealtimeData::AvgCadence:
case RealtimeData::AvgCadenceLap:
foreground = GColor(CCADENCE);
break;
case RealtimeData::HeartRate:
case RealtimeData::AvgHeartRate:
case RealtimeData::AvgHeartRateLap:
foreground = GColor(CHEARTRATE);
break;
@@ -526,3 +546,9 @@ DialWindow::setAverageFromSlider() {
setAverageFromText(QString("%1").arg(averageSlider->value()));
}
}
void
DialWindow::onNewLap()
{
isNewLap = true;
}

View File

@@ -80,6 +80,7 @@ class DialWindow : public GcWindow
void start();
void stop();
void pause();
void onNewLap();
protected:
@@ -106,6 +107,7 @@ class DialWindow : public GcWindow
int average;
int count;
double sum;
bool isNewLap;
// for keeping track of rolling averages (max 30s at 5hz)
// used by NP and XPower

View File

@@ -211,6 +211,10 @@ const QList<RealtimeData::DataSeries> &RealtimeData::listDataSeries()
seriesList << AvgSpeed;
seriesList << AvgCadence;
seriesList << AvgHeartRate;
seriesList << AvgWattsLap;
seriesList << AvgSpeedLap;
seriesList << AvgCadenceLap;
seriesList << AvgHeartRateLap;
seriesList << VirtualSpeed;
seriesList << AltWatts;
seriesList << LRBalance;
@@ -298,6 +302,18 @@ QString RealtimeData::seriesName(DataSeries series)
case AvgCadence: return tr("Average Cadence");
break;
case AvgWattsLap: return tr("Lap Power");
break;
case AvgSpeedLap: return tr("Lap Speed");
break;
case AvgHeartRateLap: return tr("Lap Heartrate");
break;
case AvgCadenceLap: return tr("Lap Cadence");
break;
case LRBalance: return tr("Left/Right Balance");
break;
}

View File

@@ -38,6 +38,7 @@ public:
XPower, BikeScore, RI, Joules, SkibaVI,
NP, TSS, IF, VI,
AvgWatts, AvgSpeed, AvgCadence, AvgHeartRate,
AvgWattsLap, AvgSpeedLap, AvgCadenceLap, AvgHeartRateLap,
VirtualSpeed, AltWatts, LRBalance };
typedef enum dataseries DataSeries;