pub status: ElementStatus,
/// Drive Identifier (Serial number)
pub drive_serial_number: Option<String>,
+ /// Drive Vendor
+ pub vendor: Option<String>,
+ /// Drive Model
+ pub model: Option<String>,
/// Element Address
pub element_address: u16,
}
loaded_slot,
status: ElementStatus::Empty,
drive_serial_number: None,
+ vendor: None,
+ model: None,
element_address: id as u16,
};
return Ok((empty, status));
loaded_slot,
status: ElementStatus::VolumeTag(tag.to_string()),
drive_serial_number: None,
+ vendor: None,
+ model: None,
element_address: id as u16,
};
return Ok((i, status));
loaded_slot,
status: ElementStatus::Full,
drive_serial_number: None,
+ vendor: None,
+ model: None,
element_address: id as u16,
};
Ok((i, status))
let dvcid: DvcidHead = unsafe { reader.read_be_value()? };
- let drive_serial_number = match (dvcid.code_set, dvcid.identifier_type) {
+ let (drive_serial_number, vendor, model) = match (dvcid.code_set, dvcid.identifier_type) {
(2, 0) => { // Serial number only (Quantum Superloader3 uses this)
let serial = reader.read_exact_allocated(dvcid.identifier_len as usize)?;
let serial = scsi_ascii_to_string(&serial);
- Some(serial)
+ (Some(serial), None, None)
}
(2, 1) => {
if dvcid.identifier_len != 34 {
bail!("got wrong DVCID length");
}
- let _vendor = reader.read_exact_allocated(8)?;
- let _product = reader.read_exact_allocated(16)?;
+ let vendor = reader.read_exact_allocated(8)?;
+ let vendor = scsi_ascii_to_string(&vendor);
+ let model = reader.read_exact_allocated(16)?;
+ let model = scsi_ascii_to_string(&model);
let serial = reader.read_exact_allocated(10)?;
let serial = scsi_ascii_to_string(&serial);
- Some(serial)
+ (Some(serial), Some(vendor), Some(model))
}
- _ => None,
+ _ => (None, None, None),
};
result.last_element_address = Some(desc.element_address);
loaded_slot,
status: create_element_status(full, volume_tag),
drive_serial_number,
+ vendor,
+ model,
element_address: desc.element_address,
};
result.drives.push(drive);