Anstiege: Höhenprofil und Kletter-Anzeige¶
TrailBridge schickt beim Abfahren einer GPX-Route immer das Höhenprofil der Strecke voraus und sagt
die Anstiege darin an (Protokoll, „Höhenprofil-Service").
Der BikeComputer bewertet den Anstieg und zeigt ihn auf dem Screen
RimRidgeClimb (Design, §6).

| Teil | Datei |
|---|---|
| Wire-Format | src/BikeProfileProtocol.h |
| Algorithmus (rein, Host-Test) | src/ClimbProfile.*, test/native_climb/climb_test.cpp |
| Anbindung: BLE, Position, Einstellungen, CLI, Web, Demo | src/ClimbMonitor.*, BLEDevices::subscribeProfile() |
| Screen | src/ui/RimRidgeClimbCustFunc.*, UIFacade::updateClimb() |
Was vom Handy kommt, und was die Firmware daraus macht¶
Rollendes Handy (TrailBridge seit 2026-10-04, Frame-Flag ROLLING). Das Profil kommt immer –
auch auf flacher Strecke und bergab – als Fenster der Strecke voraus (5 km im 25-m-Raster; ein
weiter entfernter Anstieg wird bis zu seinem Fuß abgeschnitten). Ein Anstieg darin wird vom Handy
mit seiner ganzen Ausdehnung angesagt (Fuß und Gipfel, Restdistanz und Höhe, auch wo sie
hinter oder jenseits des Frames liegen): Sobald der Fuß höchstens 500 m voraus liegt, reicht das
Fenster bis zum Gipfel, bis 5 km im 25-m-Raster, für längere Anstiege gröber (bis 250 m; der 36 km
lange Galibier von Süden kommt mit 200 m). Damit
- endet der Anstieg nicht vor dem Gipfel, und Kategorie und Länge sind bis ganz oben die des ganzen Anstiegs (Testfahrt 2026-10-04: die Kategorie sank unterwegs, weil die Firmware nur noch den Rest des Anstiegs im Frame sah),
- öffnet sich der Anstiegs-Screen nur bei Anstiegen von selbst (Rang mindestens
autorank, Fuß näher alsshowahead) und geht erst nach dem Gipfel zurück (summitpassdahinter, dannhidedelay) – nicht, wenn die Daten einen Moment ausbleiben (abseits der Route, Frame unterwegs); erst nach 2 Minuten ohne jeden Anstieg (Route zu Ende, Handy weg) geht er auch, - heißt
PROFILE_NONEnur noch „Route zu Ende / abseits der Route"; der Anstieg, auf dem der Fahrer ist, überlebt es.
Älteres Handy (ohne Flag): TrailBridge schickt nur den Anstieg voraus, von der aktuellen
Position bis zum Gipfel in einem Frame, und PROFILE_NONE am Gipfel. Die Firmware
- findet den Anstieg: Fuß = erster Punkt, ab dem die nächsten 100 m im
Mittel 3 % steigen. Gipfel = der letzte Punkt vor einem Gefälle von mehr als
30 m oder vor 2 km ohne mittlere Steigung von 0,5 % – oder das Profilende.
Ein kürzeres Flachstück oder eine Senke beendet den Anstieg also nicht; der
Galibier von Norden sind zwei Anstiege (Abfahrt vom Télégraphe nach Valloire).
TrailBridge sucht mit denselben Kriterien (
ElevationProfile.javadort) – die Standardwerte beider Seiten gehören zusammen. - fügt Frames zusammen (gleiches Raster, überlappend) und behält den schon gefahrenen Teil, bis zu 320 Schritte. Das braucht es nur, wenn ein Anstieg selbst im 250-m-Raster nicht in einen Frame passt.
- führt einen Anstieg fort, wenn das Handy
PROFILE_NONEund kurz danach ein neues Profil schickt.
Beide: Die Firmware
- kennt die Position aus der Restdistanz der Nav-Frames, zwischen zwei Frames fortgeschrieben mit der Strecke des Speed-Sensors.
Lesbarkeit: Die erwartete Steigung („NÄCHSTE 25 m") und die gemessene stehen in der großen
48-px-Schrift; das steilste Band ist ein sattes Rot (0xE8392A) im Profil und im Wert.
Höhenangaben sind netto: Gipfel minus Fuß, Gipfel minus Fahrer.
Kategorien¶
Punktzahl = Länge [m] × mittlere Steigung [%] = 100 × Höhenunterschied. Das ist die Skala von Strava und Garmin (ClimbPro) für 4 bis HC; 5 und 6 setzen sie nach unten durch Halbieren fort.
| Kategorie | Punkte ab | Höhenunterschied ab | Beispiel |
|---|---|---|---|
| 6 | 2 000 | 20 m | 400 m mit 5 % |
| 5 | 4 000 | 40 m | 800 m mit 5 % |
| 4 | 8 000 | 80 m | 1,6 km mit 5 % |
| 3 | 16 000 | 160 m | 3 km mit 5,5 % |
| 2 | 32 000 | 320 m | 5 km mit 6,5 % |
| 1 | 64 000 | 640 m | 9 km mit 7,5 % |
| HC | 80 000 | 800 m | 10 km mit 8 % |
Nicht bewertet (kurzer Hügel, keine automatische Anzeige): kürzer als 300 m, im Mittel flacher als 3 %, oder unter 20 m Höhenunterschied.
Anzeige¶
- Der Screen erscheint von selbst, sobald ein bewerteter Anstieg höchstens 300 m voraus liegt, und geht 5 s nach seinem Ende zurück zum Hauptscreen. Er löst nur den Hauptscreen ab; steht gerade Navigation, RQ oder Einstellungen da, ist er danach das Ziel von „zurück".
- Von Hand: Tipp auf Höhe oder Steigung des Hauptscreens öffnet ihn, Wischen schließt ihn. Ein weggewischter Anstieg kommt nicht von selbst wieder.
- Profilfarbe nach Steigung des Raster-Abschnitts (25 m, bei langen Anstiegen bis 250 m): unter 1 % blau, bis 4 % grün, bis 7 % gelb, bis 10 % orange, darüber rot. Der gefahrene Teil ist abgedunkelt.
Einstellungen¶
Alle Werte sind einzeln einstellbar und werden im NVS (Climb) gespeichert:
climb Zustand und alle Einstellungen
climb cat4 9000 setzen
climb cat4 anzeigen (mit Bereich und Bedeutung)
climb defaults Standardwerte
Ohne USB: /debug/climb (Tabelle mit Eingabefeldern), /debug/climb.json,
/debug/climb/set?<name>=<wert>.
| Name | Standard | Bedeutung |
|---|---|---|
startgrade / startwindow |
3 % / 100 m | Fuß: mittlere Steigung über diese Strecke |
contgrade |
0,5 % | mittlere Steigung ab dem bisherigen Gipfel, mit der der Anstieg weitergeht |
summitflat |
2000 m | Flachstück, das den Anstieg beendet; auch der Abstand, in dem ein neuer Anstieg den alten fortsetzt |
summitdip |
30 m | Gefälle, das den Anstieg beendet |
summitpass |
50 m | so weit hinter dem Gipfel ist der Anstieg vorbei |
minlength / mingrade |
300 m / 3 % | darunter nicht bewertet |
cat6 … cat1, cathc |
siehe oben | Punktzahl je Kategorie |
autoshow |
1 | automatisch zum Kletter-Screen wechseln |
autorank |
1 | ab welchem Rang: 1 = Kategorie 6 … 6 = Kategorie 1, 7 = HC |
showahead |
300 m | Abstand zum Fuß, ab dem der Screen erscheint |
hidedelay |
5 s | Wartezeit vor dem Zurückwechseln |
lookahead |
25 m | Strecke für die „Steigung voraus" |
band1 … band4 |
1 / 4 / 7 / 10 % | Grenzen der Profilfarben |
infocycle |
4 s | Wechsel des Info-Felds (Uhrzeit, Distanz, Temperatur, Trittfrequenz, Höhe) |
Ohne Handy ausprobieren¶
climb demo 2 km mit 6 % (Standard)
climb demo 4000 9 Länge in m, mittlere Steigung in %
climb pos 800 Fahrer 800 m hinter den Profilanfang setzen
climb show / climb hide Screen öffnen / schließen
climb demo off
Das Demo-Profil läuft als normaler Frame durch den Parser. Der Fahrer bewegt
sich mit dem Speed-Sensor (im Simulator-Build mit sim <km/h>) oder per
climb pos. Frames vom Handy werden währenddessen ignoriert.
Grenzen¶
- Nur mit einer in TrailBridge abgespielten GPX-Route mit Höhendaten. Bei OsmAnd-Navigation gibt es kein Profil.
- Anstiege über 5 km kommen in gröberem Raster (bis 250 m); „Steigung voraus" und Profilfarben mitteln dann über einen solchen Abschnitt.
- Über 50 km (oder bei kleiner MTU) passt der Anstieg nicht in einen Frame. Das Profilende gilt dann vorläufig als Gipfel, bis das nächste Stück kommt.
- Im NVS gespeicherte Werte für
contgrade,summitflatundsummitdipgehen den neuen Standardwerten vor (climb defaultssetzt sie zurück). - Verbindet sich der BikeComputer erst im Anstieg, zählt der Anstieg ab dort.