pub struct DriveId {
pub vendor_id: String,
pub product_id: String,
pub product_revision: String,
pub vendor_specific: String,
pub firmware_date: String,
pub serial_number: String,
pub raw_inquiry: Vec<u8>,
pub raw_gc_010c: Vec<u8>,
}Expand description
Drive identity from standard SCSI commands.
All field names follow the SCSI standards:
- SPC-4 §6.4.2 for INQUIRY fields
- MMC-6 §5.3.10 for Firmware Information
Fields§
§vendor_id: StringT10 VENDOR IDENTIFICATION — INQUIRY bytes [8:16] SPC-4 §6.4.2
product_id: StringPRODUCT IDENTIFICATION — INQUIRY bytes [16:32] SPC-4 §6.4.2
product_revision: StringPRODUCT REVISION LEVEL — INQUIRY bytes [32:36] SPC-4 §6.4.2
vendor_specific: StringVENDOR SPECIFIC — INQUIRY bytes [36:43] SPC-4 §6.4.2 Content varies by vendor: firmware type code (MTK), date (Pioneer), etc.
firmware_date: StringFirmware Creation Date — GET CONFIGURATION Feature 010Ch MMC-6 §5.3.10 Format: CCYYMMDDHHMI (12 ASCII characters)
serial_number: StringDrive serial number — GET CONFIGURATION Feature 0108h
raw_inquiry: Vec<u8>Raw 96-byte INQUIRY response for additional parsing if needed.
raw_gc_010c: Vec<u8>Raw GET CONFIGURATION Feature 010Ch response bytes.
Implementations§
Source§impl DriveId
impl DriveId
Sourcepub fn from_drive(transport: &mut dyn ScsiTransport) -> Result<Self>
pub fn from_drive(transport: &mut dyn ScsiTransport) -> Result<Self>
Probe a real drive via SCSI and build its identity.
Sourcepub fn from_inquiry(inquiry: &[u8], firmware_date: &str) -> Self
pub fn from_inquiry(inquiry: &[u8], firmware_date: &str) -> Self
Build identity from raw INQUIRY bytes and firmware date string. Used by tests and when serial isn’t available.