diff --git a/DiscImageChef.Decoders/ChangeLog b/DiscImageChef.Decoders/ChangeLog index 0f04dbde5..4bd0a88b5 100644 --- a/DiscImageChef.Decoders/ChangeLog +++ b/DiscImageChef.Decoders/ChangeLog @@ -1,3 +1,7 @@ +2016-10-13 Natalia Portillo + + * EVPD.cs: Implemented SCSI EVPD 82h + 2016-10-13 Natalia Portillo * Modes.cs: Added support for SCSI MODE PAGEs 11h, 12h, 13h diff --git a/DiscImageChef.Decoders/SCSI/EVPD.cs b/DiscImageChef.Decoders/SCSI/EVPD.cs index dab8f65eb..b0a9618fe 100644 --- a/DiscImageChef.Decoders/SCSI/EVPD.cs +++ b/DiscImageChef.Decoders/SCSI/EVPD.cs @@ -104,6 +104,29 @@ namespace DiscImageChef.Decoders.SCSI return StringHandlers.CToString(ascii); } + + /// + /// Decodes VPD page 0x82: ASCII implemented operating definition + /// + /// ASCII implemented operating definition. + /// Page 0x82. + public static string DecodePage82(byte[] page) + { + if(page == null) + return null; + + if(page[1] != 0x82) + return null; + + if(page.Length != page[3] + 4) + return null; + + byte[] ascii = new byte[page.Length - 4]; + + Array.Copy(page, 4, ascii, 0, page.Length - 4); + + return StringHandlers.CToString(ascii); + } } } diff --git a/DiscImageChef/ChangeLog b/DiscImageChef/ChangeLog index 9361cc096..87c6b52b7 100644 --- a/DiscImageChef/ChangeLog +++ b/DiscImageChef/ChangeLog @@ -1,3 +1,8 @@ +2016-10-13 Natalia Portillo + + * Commands/DeviceInfo.cs: + Implemented SCSI EVPD 82h + 2016-10-13 Natalia Portillo * Commands/DeviceInfo.cs: diff --git a/DiscImageChef/Commands/DeviceInfo.cs b/DiscImageChef/Commands/DeviceInfo.cs index 731a29116..dd276463d 100644 --- a/DiscImageChef/Commands/DeviceInfo.cs +++ b/DiscImageChef/Commands/DeviceInfo.cs @@ -210,7 +210,9 @@ namespace DiscImageChef.Commands DicConsole.WriteLine(Decoders.SCSI.Inquiry.Prettify(inq)); bool scsi80 = false; + bool scsi82 = false; string scsiSerial = null; + string scsiAsciiOperatingDefs = null; StringBuilder sb = null; sense = dev.ScsiInquiry(out inqBuf, out senseBuf, 0x00); @@ -246,6 +248,17 @@ namespace DiscImageChef.Commands doWriteFile(options.OutputPrefix, string.Format("_scsi_evpd_{0:X2}h.bin", page), string.Format("SCSI INQUIRY EVPD {0:X2}h", page), inqBuf); } } + else if(page == 0x82) + { + sense = dev.ScsiInquiry(out inqBuf, out senseBuf, page); + if(!sense) + { + scsi82 = true; + scsiAsciiOperatingDefs = Decoders.SCSI.EVPD.DecodePage82(inqBuf); + + doWriteFile(options.OutputPrefix, string.Format("_scsi_evpd_{0:X2}h.bin", page), string.Format("SCSI INQUIRY EVPD {0:X2}h", page), inqBuf); + } + } else { if(page != 0x00) @@ -265,6 +278,8 @@ namespace DiscImageChef.Commands if(scsi80) DicConsole.WriteLine("Unit Serial Number: {0}", scsiSerial); + if(scsi82) + DicConsole.WriteLine("ASCII implemented operating definitions: {0}", scsiAsciiOperatingDefs); if(sb != null) {