Tooltip now shows "HS80: 42% — Discharging | Sidetone: 10/23" when
the ALSA sidetone control is available. Falls back gracefully to
battery-only tooltip when sidetone cannot be read.
Bump version to 0.1.1.
Fallback-JSON wenn corsairctl fehlschlägt oder Cache leer ist.
flock -w 5 statt -n damit der zweite Prozess wartet statt
sofort aufzugeben. Atomares mv statt direktem Schreiben in Cache.
Waybar startet pro Monitor eine eigene corsairctl-Instanz.
Mehrere Prozesse auf demselben HID-Gerät verursachen Response-Mixups.
Der Wrapper cached den JSON-Output für 10s und nutzt flock
damit nur ein Prozess gleichzeitig das Gerät anspricht.
Der HID-Puffer kann veraltete Antworten von vorherigen Queries
enthalten. Flush vor jedem send_recv stellt sicher, dass wir
die Antwort auf unsere aktuelle Anfrage lesen.
Komplett ohne Sleep kam es sporadisch zu vertauschten Antworten
(267% Batterie = PID-Response statt Battery-Response). 5ms reicht
als Verarbeitungszeit für das Gerät, ist aber 10x schneller als
die ursprünglichen 50ms aus der Python-Referenz.
Das Default-Feature (linux-static-hidraw) linkt statisch gegen
gebundelte hidapi-Quellen. Arch stellt libhidapi-hidraw.so als
Shared Library bereit — linux-shared-hidraw linkt dagegen.
- Sleep vor HID-Reads entfernt — read_timeout reicht als
Synchronisation, spart ~300ms pro Aufruf
- udev-Regel: MODE 0660 + GROUP plugdev statt world-writable 0666
- Eigener CorsairError::SidetoneNotFound für fehlende ALSA-Controls
- Response-Validierung vorbereitet (parse_response_validated),
Korrelation noch deaktiviert da Response-Format andere Endpoint-IDs
nutzt als das Request-Format (0x00/0x01 vs 0x08/0x09)
- Protokoll-Doku zum Response-Format korrigiert
- 18 neue Tests für output.rs (Waybar-JSON Formatierung + Grenzwerte)
Byte-Zuordnung am echten HS80 verifiziert (Kabel ein/aus):
0x01 = Charging, 0x02 = Discharging, 0x03 = Low, 0x04 = Full
Weicht vom ckb-next-Mapping ab. Verbose-Flag zeigt jetzt auch
Property-Queries für weitere Diagnose.
- PID-Filter in find_and_open(), damit nicht die Harpoon-Maus statt
dem HS80 geöffnet wird
- ALSA Sidetone: Card-Suche über Sidetone-Control statt Kartenname
(war abgeschnitten zu "Gamin")
- Verbose-Flag (-v) für Debug-Output der Init-Sequenz