mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-14 00:28:42 +00:00
POSITION - FitFile decoder - Add cyclist position
This commit is contained in:
committed by
Alejandro Martinez
parent
ad6a0c30e2
commit
29644fe102
@@ -458,6 +458,7 @@ struct FitFileParser
|
||||
QVariant GarminHWM;
|
||||
XDataSeries *weatherXdata;
|
||||
XDataSeries *gearsXdata;
|
||||
XDataSeries *positionXdata;
|
||||
XDataSeries *swimXdata;
|
||||
XDataSeries *deveXdata;
|
||||
XDataSeries *extraXdata;
|
||||
@@ -1647,6 +1648,11 @@ struct FitFileParser
|
||||
else
|
||||
delete gearsXdata;
|
||||
|
||||
if (!positionXdata->datapoints.empty())
|
||||
rf->addXData("POSITION", positionXdata);
|
||||
else
|
||||
delete positionXdata;
|
||||
|
||||
if (!deveXdata->datapoints.empty())
|
||||
rf->addXData("DEVELOPER", deveXdata);
|
||||
else
|
||||
@@ -2474,6 +2480,26 @@ genericnext:
|
||||
}
|
||||
break;
|
||||
|
||||
case 44: /* rider_position_change */
|
||||
{
|
||||
int secs = (start_time==0?0:time-start_time);
|
||||
XDataPoint *p = new XDataPoint();
|
||||
|
||||
switch (event_type) {
|
||||
case 3:
|
||||
p->secs = secs;
|
||||
p->km = last_distance;
|
||||
p->number[0] = (data32 & 255);
|
||||
positionXdata->datapoints.append(p);
|
||||
// qDebug() << QString("Rider position event received %1 type %2 data %3").arg(event).arg(event_type).arg(data32);
|
||||
break;
|
||||
default:
|
||||
errors << QString("Unknown rider position change event %1 type %2").arg(event).arg(event_type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 3: /* workout */
|
||||
case 4: /* workout_step */
|
||||
case 5: /* power_down */
|
||||
@@ -2502,6 +2528,10 @@ genericnext:
|
||||
case 28: /* length */
|
||||
case 32: /* user_marker */
|
||||
case 33: /* sport_point */
|
||||
case 45: /* elev_high_alert */
|
||||
case 46: /* elev_low_alert */
|
||||
case 47: /* comm_timeout */
|
||||
case 75: /* radar_threat_alert */
|
||||
default: ;
|
||||
}
|
||||
|
||||
@@ -4554,6 +4584,11 @@ genericnext:
|
||||
gearsXdata->valuename << "REAR-NUM";
|
||||
gearsXdata->unitname << "";
|
||||
|
||||
positionXdata = new XDataSeries();
|
||||
positionXdata->name = "POSITION";
|
||||
positionXdata->valuename << "POSITION";
|
||||
positionXdata->unitname << "positiontype";
|
||||
|
||||
deveXdata = new XDataSeries();
|
||||
deveXdata->name = "DEVELOPER";
|
||||
|
||||
|
||||
@@ -56,6 +56,14 @@ public:
|
||||
static QString seriesName(DataSeries);
|
||||
static const QList<DataSeries> &listDataSeries();
|
||||
|
||||
// style is coded to be compatible with FIT files
|
||||
// we use same IDs than ANT power meters messages.
|
||||
// Aero is an additional one for virtual speed estimation
|
||||
// (we can suppose aero position when no power is generated during 10s ?)
|
||||
// and off means not riding (when speed is 0 during 10s ?)
|
||||
enum riderposition { seated = 0, transistionToSeated = 1, standing = 2, transitionToStanding=3, aero = 10, off = 11 };
|
||||
typedef enum riderposition riderPosition;
|
||||
|
||||
RealtimeData();
|
||||
void reset(); // set all values to zero
|
||||
|
||||
|
||||
Reference in New Issue
Block a user