feat(train): a ride's distance from the wheel where GPS falls short (ADR 0030, D49)

The speed sensor's wheel gives a ride's distance, splits, progress and live
speed where GPS made less than 90 % of its way (a turbo trainer, a tunnel);
its circumference starts at 2105 mm, is learnt from rides with 2 km of GPS
or typed on the Record sheet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-29 15:22:48 +01:00
commit a848b71bd4
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 527 additions and 27 deletions

View file

@ -540,5 +540,11 @@
"workoutPedalling": "Trittfrequenz",
"workoutAverageCadence": "durchschnittliche Trittfrequenz",
"workoutNormalisedPower": "normalisierte Leistung",
"workoutRpmValue": "{rpm} U/min"
"workoutRpmValue": "{rpm} U/min",
"recordWheel": "Radumfang",
"recordWheelMeasured": "{mm} mm, per GPS gemessen",
"recordWheelTyped": "{mm} mm, wie du ihn eingegeben hast",
"recordWheelDefault": "{mm} mm, bis GPS ihn auf 2 km Fahrt gemessen hat",
"recordWheelHint": "In Millimetern, wie auf dem Reifen (700×25C: 2105); leer, damit GPS ihn misst",
"recordWheelSave": "Speichern"
}

View file

@ -680,5 +680,14 @@
"workoutAverageCadence": "average cadence",
"workoutNormalisedPower": "normalised power",
"workoutRpmValue": "{rpm} rpm",
"@workoutRpmValue": {"placeholders": {"rpm": {"type": "int"}}}
"@workoutRpmValue": {"placeholders": {"rpm": {"type": "int"}}},
"recordWheel": "Wheel circumference",
"recordWheelMeasured": "{mm} mm, measured by GPS",
"@recordWheelMeasured": {"placeholders": {"mm": {"type": "int"}}},
"recordWheelTyped": "{mm} mm, as you typed it",
"@recordWheelTyped": {"placeholders": {"mm": {"type": "int"}}},
"recordWheelDefault": "{mm} mm until GPS has measured it on a ride of 2 km",
"@recordWheelDefault": {"placeholders": {"mm": {"type": "int"}}},
"recordWheelHint": "In millimetres, as the tyre says (700×25C: 2105); empty to have GPS measure it",
"recordWheelSave": "Save"
}

View file

@ -3267,6 +3267,42 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'{rpm} rpm'**
String workoutRpmValue(int rpm);
/// No description provided for @recordWheel.
///
/// In en, this message translates to:
/// **'Wheel circumference'**
String get recordWheel;
/// No description provided for @recordWheelMeasured.
///
/// In en, this message translates to:
/// **'{mm} mm, measured by GPS'**
String recordWheelMeasured(int mm);
/// No description provided for @recordWheelTyped.
///
/// In en, this message translates to:
/// **'{mm} mm, as you typed it'**
String recordWheelTyped(int mm);
/// No description provided for @recordWheelDefault.
///
/// In en, this message translates to:
/// **'{mm} mm until GPS has measured it on a ride of 2 km'**
String recordWheelDefault(int mm);
/// No description provided for @recordWheelHint.
///
/// In en, this message translates to:
/// **'In millimetres, as the tyre says (700×25C: 2105); empty to have GPS measure it'**
String get recordWheelHint;
/// No description provided for @recordWheelSave.
///
/// In en, this message translates to:
/// **'Save'**
String get recordWheelSave;
}
class _AppLocalizationsDelegate

View file

@ -1959,4 +1959,29 @@ class AppLocalizationsDe extends AppLocalizations {
String workoutRpmValue(int rpm) {
return '$rpm U/min';
}
@override
String get recordWheel => 'Radumfang';
@override
String recordWheelMeasured(int mm) {
return '$mm mm, per GPS gemessen';
}
@override
String recordWheelTyped(int mm) {
return '$mm mm, wie du ihn eingegeben hast';
}
@override
String recordWheelDefault(int mm) {
return '$mm mm, bis GPS ihn auf 2 km Fahrt gemessen hat';
}
@override
String get recordWheelHint =>
'In Millimetern, wie auf dem Reifen (700×25C: 2105); leer, damit GPS ihn misst';
@override
String get recordWheelSave => 'Speichern';
}

View file

@ -1947,6 +1947,31 @@ class AppLocalizationsEn extends AppLocalizations {
String workoutRpmValue(int rpm) {
return '$rpm rpm';
}
@override
String get recordWheel => 'Wheel circumference';
@override
String recordWheelMeasured(int mm) {
return '$mm mm, measured by GPS';
}
@override
String recordWheelTyped(int mm) {
return '$mm mm, as you typed it';
}
@override
String recordWheelDefault(int mm) {
return '$mm mm until GPS has measured it on a ride of 2 km';
}
@override
String get recordWheelHint =>
'In millimetres, as the tyre says (700×25C: 2105); empty to have GPS measure it';
@override
String get recordWheelSave => 'Save';
}
/// The translations for English, as used in the United Kingdom (`en_GB`).