scsir 0.3.0

A simple library for issuing SCSI commands
Documentation
#![allow(dead_code)]

use super::{ModePage, PageHeaderStorage};

#[derive(Clone, Debug)]
pub struct GeneralPage {
    header: PageHeaderStorage,
    body: Vec<u8>,
}

impl ModePage for GeneralPage {
    fn new() -> Self {
        Self {
            header: PageHeaderStorage::new(),
            body: vec![],
        }
    }

    fn from_bytes(bytes: &[u8]) -> (Self, &[u8]) {
        let (header, bytes) = PageHeaderStorage::from_bytes(bytes);

        let (body, left) = bytes.split_at(usize::min(bytes.len(), header.page_length() as usize));

        (
            Self {
                header,
                body: body.to_vec(),
            },
            left,
        )
    }

    fn to_bytes(&self) -> Vec<u8> {
        let mut bytes = vec![];
        bytes.extend_from_slice(&self.header.to_bytes());
        bytes.extend_from_slice(&self.body);

        bytes
    }
}