fix: Audit-Findings behoben (Perf, Security, Quality)

- 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)
This commit is contained in:
2026-03-27 23:11:50 +01:00
parent 488c4c2631
commit a9d526023d
8 changed files with 185 additions and 19 deletions
+3 -3
View File
@@ -21,7 +21,7 @@ fn find_card() -> Result<String> {
}
}
}
Err(crate::error::CorsairError::DeviceNotFound)
Err(crate::error::CorsairError::SidetoneNotFound)
}
/// Liest den aktuellen Sidetone-Level (0-23).
@@ -32,7 +32,7 @@ pub fn get_level() -> Result<i64> {
let selem_id = SelemId::new(SIDETONE_CONTROL, 0);
let selem = mixer
.find_selem(&selem_id)
.ok_or(crate::error::CorsairError::DeviceNotFound)?;
.ok_or(crate::error::CorsairError::SidetoneNotFound)?;
let value = selem.get_playback_volume(SelemChannelId::FrontLeft)?;
Ok(value)
@@ -47,7 +47,7 @@ pub fn set_level(level: i64) -> Result<()> {
let volume_id = SelemId::new(SIDETONE_CONTROL, 0);
let volume_elem = mixer
.find_selem(&volume_id)
.ok_or(crate::error::CorsairError::DeviceNotFound)?;
.ok_or(crate::error::CorsairError::SidetoneNotFound)?;
volume_elem.set_playback_volume_all(level)?;