Projekt

Allgemein

Profil

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). 

Zurück