From 631da0b1ff2392803d3c47c20fb5da5062803480 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 23 May 2017 19:38:55 +0100 Subject: [PATCH] Added support for extracting SS in Kreon drives. --- DiscImageChef/ChangeLog | 5 +++++ DiscImageChef/Commands/MediaInfo.cs | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/DiscImageChef/ChangeLog b/DiscImageChef/ChangeLog index 6dd8e24c..31aabca1 100644 --- a/DiscImageChef/ChangeLog +++ b/DiscImageChef/ChangeLog @@ -1,3 +1,8 @@ +2017-05-23 Natalia Portillo + + * Commands/MediaInfo.cs: + Added support for extracting SS in Kreon drives. + 2017-05-23 Natalia Portillo * Commands/MediaInfo.cs: diff --git a/DiscImageChef/Commands/MediaInfo.cs b/DiscImageChef/Commands/MediaInfo.cs index a8357d39..4b228277 100644 --- a/DiscImageChef/Commands/MediaInfo.cs +++ b/DiscImageChef/Commands/MediaInfo.cs @@ -1079,6 +1079,27 @@ namespace DiscImageChef.Commands #endregion Nintendo } + if((dskType == MediaType.XGD || dskType == MediaType.XGD2 || dskType == MediaType.XGD3)) + { + // We need to get INQUIRY to know if it is a Kreon drive + byte[] inqBuffer; + Decoders.SCSI.Inquiry.SCSIInquiry? inq; + + sense = dev.ScsiInquiry(out inqBuffer, out senseBuf); + if(!sense) + { + inq = Decoders.SCSI.Inquiry.Decode(inqBuffer); + if(inq.HasValue && inq.Value.KreonPresent) + { + sense = dev.KreonExtractSS(out cmdBuf, out senseBuf, dev.Timeout, out duration); + if(sense) + DicConsole.DebugWriteLine("Media-Info command", "KREON EXTRACT SS:\n{0}", Decoders.SCSI.Sense.PrettifySense(senseBuf)); + else + doWriteFile(outputPrefix, "_xbox_ss.bin", "KREON EXTRACT SS", cmdBuf); + } + } + } + if(dskType == MediaType.Unknown) dskType = MediaTypeFromSCSI.Get((byte)dev.SCSIType, dev.Manufacturer, dev.Model, scsiMediumType, scsiDensityCode, blocks, blockSize);