diff --git a/src/scsi/mod.rs b/src/scsi/mod.rs index 56c8c1a..6bcf5ab 100644 --- a/src/scsi/mod.rs +++ b/src/scsi/mod.rs @@ -268,8 +268,8 @@ impl<'d, D: Driver<'d>> MassStorageClass<'d, D> { .map_err(|_| ()) } ScsiCommand::PreventAllowMediumRemoval { prevent: _prevent } => Ok(()), - ScsiCommand::StartStopUnit { stop, load_eject } => { - if stop && load_eject { + ScsiCommand::StartStopUnit { start, load_eject } => { + if !start && load_eject { self.state = State::Ejected; self.last_sense = Some(ScsiError::NotReady); } diff --git a/src/scsi/scsi_types.rs b/src/scsi/scsi_types.rs index a9fcfc3..dbd27dd 100644 --- a/src/scsi/scsi_types.rs +++ b/src/scsi/scsi_types.rs @@ -91,7 +91,7 @@ pub enum ScsiCommand { }, StartStopUnit { - stop: bool, + start: bool, load_eject: bool, }, } @@ -156,8 +156,8 @@ pub fn parse_cb(cb: &[u8]) -> ScsiCommand { prevent: (cb[1] & 0b00000001) != 0, }, START_STOP_UNIT => ScsiCommand::StartStopUnit { - stop: (cb[1] & 0b00000001) != 0, - load_eject: (cb[1] & 0b00000010) == 0, + start: (cb[4] & 0b00000001) != 0, + load_eject: (cb[4] & 0b00000010) != 0, }, _ => ScsiCommand::Unknown, }