Fehler #138
Von Julius Haman vor 5 Tagen aktualisiert
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 30 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) `src/sensors/fitness-equipment-sensors.ts`, für den ANT+ Bluetooth-Trainer-Betrieb mit echten Trainern) 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 schließt ANT den Kanal nach etwa 30 Sekunden Suche selbst. 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`. Offen: Test mit einem ANT+-Trainer (Suche mit `--fec-scan`, Betrieb, Werte-Vergleich mit der Trainer-Anzeige, Zielleistung).