fix: Flush vor jeder Property-Query gegen Response-Mixups
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.
This commit is contained in:
parent
f3a4bf82a8
commit
dd410de49d
@ -117,22 +117,25 @@ impl BragiDevice {
|
||||
}
|
||||
|
||||
/// Liest eine Property vom Headset und parst die Antwort.
|
||||
///
|
||||
/// Flusht den HID-Puffer vor dem Senden, um veraltete Responses
|
||||
/// aus vorherigen Queries zu verwerfen.
|
||||
fn get_headset_property(&self, property: Property) -> Result<BragiResponse> {
|
||||
hid::flush(&self.device)?;
|
||||
let packet = protocol::build_get_packet(ENDPOINT_HEADSET, property.id());
|
||||
let raw = hid::send_recv(&self.device, &packet)?;
|
||||
if self.verbose {
|
||||
let hex: Vec<String> = raw.iter().take(10).map(|b| format!("{b:02X}")).collect();
|
||||
eprintln!("[query] GET 0x{:02X} → {}", property.id(), hex.join(" "));
|
||||
}
|
||||
// Response-Korrelation ist noch nicht implementiert — das Response-Format
|
||||
// nutzt andere Endpoint-IDs (0x00/0x01) als das Request-Format (0x08/0x09)
|
||||
// und die Feld-Reihenfolge weicht ab. Error-Detection via 0xF0/0xF1
|
||||
// auf raw[1] funktioniert aber korrekt.
|
||||
protocol::parse_response(&raw)
|
||||
}
|
||||
|
||||
/// Setzt eine Property auf dem Headset.
|
||||
///
|
||||
/// Flusht den HID-Puffer vor dem Senden.
|
||||
fn set_headset_property(&self, property: Property, data: &[u8]) -> Result<BragiResponse> {
|
||||
hid::flush(&self.device)?;
|
||||
let packet = protocol::build_set_packet(ENDPOINT_HEADSET, property.id(), data);
|
||||
let raw = hid::send_recv(&self.device, &packet)?;
|
||||
protocol::parse_response(&raw)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user