Train - Improve L/R Balance Dial display

Includes proper treatement for NA, switched L/R and
enables averaging.
Fixes #4298
This commit is contained in:
Alejandro Martinez
2022-12-16 15:49:22 -03:00
parent 8e0b0a67a6
commit 1c5bbecf1c
3 changed files with 13 additions and 6 deletions

View File

@@ -20,6 +20,7 @@
#include "DialWindow.h"
#include "Athlete.h"
#include "Context.h"
#include "RideFile.h"
#include "HelpWhatsThis.h"
DialWindow::DialWindow(Context *context) :
@@ -144,6 +145,7 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
if (series == RealtimeData::HeartRate ||
series == RealtimeData::Watts ||
series == RealtimeData::AltWatts ||
(series == RealtimeData::LRBalance && value != RideFile::NA) ||
series == RealtimeData::Cadence) {
sum += value;
@@ -229,14 +231,14 @@ DialWindow::telemetryUpdate(const RealtimeData &rtData)
case RealtimeData::LRBalance:
{
double left = 0; double right = 0;
if (value == 0) { // no LR Balance provided - so use previous logic
if (value == RideFile::NA) { // no LR Balance provided - so use previous logic
double tot = rtData.getWatts() + rtData.getAltWatts();
left = rtData.getWatts() / tot * 100.00f;
right = 100.00 - left;
if (tot < 0.1) left = right = 0;
if (tot < 0.1 || left >= 100) left = right = 0; // No power or no AltWatts
} else {
left = 100.00 - value; // value in ANT message is the "right" pedal portion
right = value;
right = 100.00 - displayValue; // value in GC is the "left" pedal portion
left = displayValue;
}
valueLabel->setText(QString("%1 / %2").arg(left, 0, 'f', 0).arg(right, 0, 'f', 0));
}
@@ -566,6 +568,7 @@ void DialWindow::seriesChanged()
if (series == RealtimeData::HeartRate ||
series == RealtimeData::Watts ||
series == RealtimeData::AltWatts ||
series == RealtimeData::LRBalance ||
series == RealtimeData::Cadence) {
averageLabel->show();
averageEdit->show();

View File

@@ -18,6 +18,7 @@
*/
#include "RealtimeData.h"
#include "RideFile.h"
#include <QtDebug>
@@ -28,7 +29,8 @@ RealtimeData::RealtimeData()
cadence = distance = altDistance = virtualSpeed = wbal = 0.0;
lap = msecs = lapMsecs = lapMsecsRemaining = ergMsecsRemaining = 0;
thb = smo2 = o2hb = hhb = 0.0;
lrbalance = rte = lte = lps = rps = 0.0;
lrbalance = RideFile::NA;
rte = lte = lps = rps = 0.0;
latitude = longitude = altitude = 0.0;
rf = rmv = vo2 = vco2 = tv = feo2 = 0.0;
routeDistance = distanceRemaining = 0.0;

View File

@@ -27,6 +27,7 @@
#include "DeviceConfiguration.h"
#include "RideImportWizard.h"
#include "HelpWhatsThis.h"
#include "RideFile.h"
#include <QApplication>
#include <QtGui>
#include <QRegExp>
@@ -365,7 +366,8 @@ TrainSidebar::TrainSidebar(Context *context) : GcWindow(context), context(contex
displayWorkoutDistance = displayDistance = displayPower = displayHeartRate =
displaySpeed = displayCadence = slope = load = 0;
displaySMO2 = displayTHB = displayO2HB = displayHHB = 0;
displayLRBalance = displayLTE = displayRTE = displayLPS = displayRPS = 0;
displayLRBalance = RideFile::NA;
displayLTE = displayRTE = displayLPS = displayRPS = 0;
displayLatitude = displayLongitude = displayAltitude = 0.0;
connect(gui_timer, SIGNAL(timeout()), this, SLOT(guiUpdate()));