radb 0.1.8

A Rust Implement Python AdbUtils
Documentation
use crate::errors::{AdbError, AdbResult};

pub fn build_command_packet(command: &str) -> Vec<u8> {
    let cmd_bytes = command.as_bytes();
    let length = format!("{:04x}", cmd_bytes.len());
    let mut packet = Vec::with_capacity(4 + cmd_bytes.len());
    packet.extend_from_slice(length.as_bytes());
    packet.extend_from_slice(cmd_bytes);
    packet
}

pub fn parse_length_prefix(data: &[u8]) -> AdbResult<usize> {
    if data.len() != 4 {
        return Err(AdbError::protocol_error("Invalid length prefix"));
    }

    let length_str = std::str::from_utf8(data)?;
    usize::from_str_radix(length_str, 16)
        .map_err(|_| AdbError::protocol_error("Invalid length prefix"))
}

pub fn is_okay_response(data: &[u8]) -> bool {
    data == b"OKAY"
}

pub fn is_fail_response(data: &[u8]) -> bool {
    data == b"FAIL"
}