Fehler #138
geschlossenANT+-Trainer (FE-C): Zeit, Strecke, Geschwindigkeit und Puls wurden falsch gelesen; Suche gibt nicht mehr auf
0%
Beschreibung
Bei ANT+-Trainern (FE-C) wurden Zeit, Strecke, Geschwindigkeit und Puls aus dem falschen Datenfeld gelesen und waren dadurch falsch. Leistung und Trittfrequenz waren nicht betroffen. Das ist korrigiert. Außerdem gibt die Trainer-Suche im Training nicht mehr nach etwa 25 Sekunden auf, und im Log stehen Verbindungsverlust und Kanal-Ereignisse.
Hinweis zum Test¶
Nicht an echter Hardware geprüft: Es steht kein ANT+-Trainer (FE-C) zur Verfügung. Die Byte-Zuordnung wurde gegen eine produktiv genutzte Referenz-Implementierung (incyclist/ant-plus, Datei src/sensors/fitness-equipment-sensors.ts; laut Repo-Beschreibung die ANT+-Bibliothek der Incyclist-App) abgeglichen, nicht gegen die offizielle Spec D000001231 (kein Zugriff). Test mit einem Trainer steht aus.
Hintergrund¶
Folgeticket zu #137 (Pulsgurt). Beim Pulsgurt war der Decoder ebenfalls falsch belegt.
Technische Details¶
Seite 0x10 (General FE Data), FecControlRole.HandleGeneralFeData und AntFecTester: Die Zuordnung war um ein Byte verschoben, weil der Equipment Type in Byte 1 nicht berücksichtigt war. Korrekt:
| Byte | Inhalt |
|---|---|
| 1 | Equipment Type |
| 2 | Elapsed Time (0,25 s) |
| 3 | Distance (m) |
| 4/5 | Speed (0,001 m/s, 0xFFFF = ungültig) |
| 6 | Puls (0xFF = ungültig) |
| 7 | Capabilities (Bits 0-3), FE State (Bits 4-6), Lap Toggle (Bit 7) |
Vorher wurde Elapsed Time aus Byte 1, Distance aus Byte 2, Speed aus Byte 3/4 und Puls aus Byte 5 gelesen. FE State enthält jetzt nur noch Bits 4-6 (vorher Bits 4-7 inklusive Lap Toggle).
Seite 0x19 (Specific Trainer Data: Kadenz Byte 2, Leistung Byte 5/6 mit 12 Bit) und die Zielleistung 0x31 (Byte 6/7, 0,25 W) stimmen mit der Referenz überein.
FecControlRole, Kanal 1:
- Search-Timeout und Low-Priority-Search-Timeout auf 255 (unbegrenzt). Ohne diese Einstellung gilt der Standard von 10 (25 Sekunden), danach beendet ANT die Suche und schließt den Kanal (ANT Message Protocol and Usage Rev 5.1, 9.5.2.5). Die Referenz-Implementierung setzt ebenfalls
TIMEOUT_NEVER. - Kanal-Events werden geloggt (außer RX_FAIL).
- Die Startzeile zeigt die Rückgabewerte von Search-Timeout, LP-Timeout und
openChannel.
Nicht Teil dieses Tickets bzw. unverändert:
- Die Trainer-Suche (
--fec-scan,FecScanRole) wurde in #137 korrigiert (Timeout-Event, Exclude-Liste). - Kanalperiode 8192 und Frequenz 57 entsprechen dem Standard bzw. der Referenz-Implementierung.
AntFecTesterwertet Broadcasts weiterhin übergetMessageID()aus (wirft bei erweiterten Nachrichten). Dort wurde nur die Byte-Zuordnung von Seite 0x10 korrigiert. Das Testprogramm schaltet keine erweiterten Nachrichten ein.
Offen: Test mit einem ANT+-Trainer (Suche mit --fec-scan, Betrieb, Werte-Vergleich mit der Trainer-Anzeige, Zielleistung).