From d2252fed66a259c0b9b4bb939a7a489494fe3f33 Mon Sep 17 00:00:00 2001 From: LucasDLTG Date: Sun, 4 Oct 2026 21:01:44 +0200 Subject: [PATCH] fix: unlock payload --- src/dsp408/mapper/response.rs | 2 +- src/dsp408/protocol/commands.rs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dsp408/mapper/response.rs b/src/dsp408/mapper/response.rs index 39836f7..afc3aaf 100644 --- a/src/dsp408/mapper/response.rs +++ b/src/dsp408/mapper/response.rs @@ -148,7 +148,7 @@ pub fn map_response(frame: &Frame) -> Result return Err(ProtocolError::new("Missing authentication result")); } - if payload[1] != 0x00 && payload[1] != 0x01 { + if payload[0] != 0x00 && payload[1] != 0x01 { return Err(ProtocolError::new(format!( "Invalid authentication flag: {:#04x}", payload[1] diff --git a/src/dsp408/protocol/commands.rs b/src/dsp408/protocol/commands.rs index 4eaa02f..8c71878 100644 --- a/src/dsp408/protocol/commands.rs +++ b/src/dsp408/protocol/commands.rs @@ -99,7 +99,11 @@ pub fn build_get_device_flags() -> Vec { pub fn build_unlock_device(password: &[u8]) -> Result, ValidationError> { validate_raw_password(password)?; - Ok(build_frame(0x2d, password)) + let mut payload = Vec::with_capacity(1 + password.len()); + payload.push(0x00); + payload.extend_from_slice(password); + + Ok(build_frame(0x2d, &payload)) } // Command 0x2F