diff --git a/src/BlueSCSI.cpp b/src/BlueSCSI.cpp index dfae9e6..0043182 100644 --- a/src/BlueSCSI.cpp +++ b/src/BlueSCSI.cpp @@ -1487,6 +1487,20 @@ byte onSendDiagnostic(byte flags) } } +/* + * Read Defect Data + */ +byte onReadDefectData(const byte *cdb) +{ + byte response[4] = { + 0x0, // Reserved + cdb[2], // echo back Reserved, Plist, Glist, Defect list format + cdb[7], cdb[8] // echo back defect list length + }; + writeDataPhase(4, response); + return SCSI_STATUS_GOOD; +} + /* * MsgIn2. */ @@ -1732,6 +1746,9 @@ void loop() case SCSI_SEND_DIAG: m_sts |= onSendDiagnostic(cmd[1]); break; + case SCSI_READ_DEFECT_DATA: + m_sts |= onReadDefectData(cmd); + break; case SCSI_LOCK_UNLOCK_CACHE: // Commands we dont have anything to do but can safely respond GOOD. case SCSI_PREFETCH: // In the future we could implement something to mimic these. case SCSI_PREVENT_ALLOW_REMOVAL: