On debug add more binary data from the responses to the report.

This commit is contained in:
2017-09-05 15:47:36 +01:00
parent 6d4c3f302d
commit 5e2dff4dee
7 changed files with 53 additions and 12 deletions

View File

@@ -493,7 +493,9 @@ namespace DiscImageChef.Core.Devices.Report
report.ATA.WRVSectorCountMode2 = ataId.WRVSectorCountMode2;
report.ATA.WRVSectorCountMode2Specified = true;
}
if(debug)
report.ATA.Identify = buffer;
if(removable)
{
List<testedMediaType> mediaTests = new List<testedMediaType>();

View File

@@ -458,6 +458,8 @@ namespace DiscImageChef.Core.Devices.Report
report.ATAPI.WRVSectorCountMode2 = atapiId.WRVSectorCountMode2;
report.ATAPI.WRVSectorCountMode2Specified = true;
}
if(debug)
report.ATAPI.Identify = buffer;
}
}
}

View File

@@ -181,6 +181,9 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
report.SCSI.Inquiry.SyncTransfer = inq.Sync;
report.SCSI.Inquiry.WideBus16 = inq.WBus16;
report.SCSI.Inquiry.WideBus32 = inq.WBus32;
if(debug)
report.SCSI.Inquiry.Data = buffer;
}
DicConsole.WriteLine("Querying list of SCSI EVPDs...");
@@ -233,47 +236,52 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
Decoders.SCSI.PeripheralDeviceTypes devType = dev.SCSIType;
DicConsole.WriteLine("Querying all mode pages and subpages using SCSI MODE SENSE (10)...");
sense = dev.ModeSense10(out buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Default, 0x3F, 0xFF, timeout, out duration);
sense = dev.ModeSense10(out byte[] mode10Buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Default, 0x3F, 0xFF, timeout, out duration);
if(sense || dev.Error)
{
DicConsole.WriteLine("Querying all mode pages using SCSI MODE SENSE (10)...");
sense = dev.ModeSense10(out buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Default, 0x3F, 0x00, timeout, out duration);
sense = dev.ModeSense10(out mode10Buffer, out senseBuffer, false, true, ScsiModeSensePageControl.Default, 0x3F, 0x00, timeout, out duration);
if(!sense && dev.Error)
{
report.SCSI.SupportsModeSense10 = true;
report.SCSI.SupportsModeSubpages = false;
decMode = Decoders.SCSI.Modes.DecodeMode10(buffer, devType);
decMode = Decoders.SCSI.Modes.DecodeMode10(mode10Buffer, devType);
}
}
else
{
report.SCSI.SupportsModeSense10 = true;
report.SCSI.SupportsModeSubpages = true;
decMode = Decoders.SCSI.Modes.DecodeMode10(buffer, devType);
decMode = Decoders.SCSI.Modes.DecodeMode10(mode10Buffer, devType);
}
DicConsole.WriteLine("Querying all mode pages and subpages using SCSI MODE SENSE (6)...");
sense = dev.ModeSense6(out buffer, out senseBuffer, false, ScsiModeSensePageControl.Default, 0x3F, 0xFF, timeout, out duration);
sense = dev.ModeSense6(out byte[] mode6Buffer, out senseBuffer, false, ScsiModeSensePageControl.Default, 0x3F, 0xFF, timeout, out duration);
if(sense || dev.Error)
{
DicConsole.WriteLine("Querying all mode pages using SCSI MODE SENSE (6)...");
sense = dev.ModeSense6(out buffer, out senseBuffer, false, ScsiModeSensePageControl.Default, 0x3F, 0x00, timeout, out duration);
sense = dev.ModeSense6(out mode6Buffer, out senseBuffer, false, ScsiModeSensePageControl.Default, 0x3F, 0x00, timeout, out duration);
if(sense || dev.Error)
{
DicConsole.WriteLine("Querying SCSI MODE SENSE (6)...");
sense = dev.ModeSense(out buffer, out senseBuffer, timeout, out duration);
sense = dev.ModeSense(out mode6Buffer, out senseBuffer, timeout, out duration);
}
}
else
report.SCSI.SupportsModeSubpages = true;
if(!sense && !dev.Error && !decMode.HasValue)
decMode = Decoders.SCSI.Modes.DecodeMode6(buffer, devType);
decMode = Decoders.SCSI.Modes.DecodeMode6(mode6Buffer, devType);
report.SCSI.SupportsModeSense6 |= (!sense && !dev.Error);
Decoders.SCSI.Modes.ModePage_2A? cdromMode = null;
if(debug && report.SCSI.SupportsModeSense6)
report.SCSI.ModeSense6Data = mode6Buffer;
if(debug && report.SCSI.SupportsModeSense10)
report.SCSI.ModeSense10Data = mode10Buffer;
if(decMode.HasValue)
{
report.SCSI.ModeSense = new modeType();
@@ -320,7 +328,7 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
if(dev.SCSIType == Decoders.SCSI.PeripheralDeviceTypes.MultiMediaDevice)
MMC.Report(dev, ref report, debug, ref cdromMode, ref mediaTypes);
else if(dev.SCSIType == Decoders.SCSI.PeripheralDeviceTypes.SequentialAccess)
SSC.Report(dev, ref report);
SSC.Report(dev, ref report, debug);
else
{
if(removable)
@@ -438,6 +446,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
{
report.SCSI.SupportsModeSense10 = true;
decMode = Decoders.SCSI.Modes.DecodeMode10(buffer, dev.SCSIType);
if(debug)
mediaTest.ModeSense10Data = buffer;
}
DicConsole.WriteLine("Querying SCSI MODE SENSE...");
@@ -447,6 +457,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
report.SCSI.SupportsModeSense6 = true;
if(!decMode.HasValue)
decMode = Decoders.SCSI.Modes.DecodeMode6(buffer, dev.SCSIType);
if(debug)
mediaTest.ModeSense6Data = buffer;
}
if(decMode.HasValue)
@@ -658,6 +670,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
{
report.SCSI.SupportsModeSense10 = true;
decMode = Decoders.SCSI.Modes.DecodeMode10(buffer, dev.SCSIType);
if(debug)
report.SCSI.ReadCapabilities.ModeSense10Data = buffer;
}
DicConsole.WriteLine("Querying SCSI MODE SENSE...");
@@ -667,6 +681,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
report.SCSI.SupportsModeSense6 = true;
if(!decMode.HasValue)
decMode = Decoders.SCSI.Modes.DecodeMode6(buffer, dev.SCSIType);
if(debug)
report.SCSI.ReadCapabilities.ModeSense10Data = buffer;
}
if(decMode.HasValue)

View File

@@ -844,6 +844,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
{
report.SCSI.SupportsModeSense10 = true;
decMode = Decoders.SCSI.Modes.DecodeMode10(buffer, dev.SCSIType);
if(debug)
mediaTest.ModeSense10Data = buffer;
}
DicConsole.WriteLine("Querying SCSI MODE SENSE...");
sense = dev.ModeSense(out buffer, out senseBuffer, timeout, out duration);
@@ -852,6 +854,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
report.SCSI.SupportsModeSense6 = true;
if(!decMode.HasValue)
decMode = Decoders.SCSI.Modes.DecodeMode6(buffer, dev.SCSIType);
if(debug)
mediaTest.ModeSense6Data = buffer;
}
if(decMode.HasValue)

View File

@@ -45,7 +45,7 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
{
internal static class SSC
{
internal static void Report(Device dev, ref DeviceReport report)
internal static void Report(Device dev, ref DeviceReport report, bool debug)
{
if(report == null)
return;
@@ -220,6 +220,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
{
report.SCSI.SupportsModeSense10 = true;
decMode = Decoders.SCSI.Modes.DecodeMode10(buffer, dev.SCSIType);
if(debug)
seqTest.ModeSense10Data = buffer;
}
DicConsole.WriteLine("Querying SCSI MODE SENSE...");
@@ -229,6 +231,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI
report.SCSI.SupportsModeSense6 = true;
if(!decMode.HasValue)
decMode = Decoders.SCSI.Modes.DecodeMode6(buffer, dev.SCSIType);
if(debug)
seqTest.ModeSense6Data = buffer;
}
if(decMode.HasValue)

View File

@@ -75,6 +75,8 @@ namespace DiscImageChef.Core.Devices.Report
report.USB.RemovableMedia = pressedKey.Key == ConsoleKey.Y;
removable = report.USB.RemovableMedia;
if(debug)
report.USB.Descriptors = dev.USBDescriptors;
}
}
}

View File

@@ -60,6 +60,7 @@ namespace DiscImageChef.Metadata
public string Manufacturer { get; set; }
public string Product { get; set; }
public bool RemovableMedia { get; set; }
public byte[] Descriptors { get; set; }
}
public class firewireType
@@ -154,10 +155,11 @@ namespace DiscImageChef.Metadata
public uint WRVSectorCountMode3 { get; set; }
public uint WRVSectorCountMode2 { get; set; }
public byte[] Identify { get; set; }
public testedMediaType ReadCapabilities { get; set; }
public testedMediaType[] RemovableMedias { get; set; }
[XmlIgnore]
public bool AdditionalPIDSpecified { get; set; }
[XmlIgnore]
@@ -339,6 +341,8 @@ namespace DiscImageChef.Metadata
public testedMediaType ReadCapabilities { get; set; }
public testedMediaType[] RemovableMedias { get; set; }
public sscType SequentialDevice { get; set; }
public byte[] ModeSense6Data { get; set; }
public byte[] ModeSense10Data { get; set; }
[XmlIgnore]
public bool ReadCapabilitiesSpecified { get; set; }
@@ -385,6 +389,7 @@ namespace DiscImageChef.Metadata
public ushort[] VersionDescriptors { get; set; }
public bool WideBus16 { get; set; }
public bool WideBus32 { get; set; }
public byte[] Data { get; set; }
[XmlIgnore]
public bool ANSIVersionSpecified { get; set; }
@@ -750,6 +755,9 @@ namespace DiscImageChef.Metadata
public bool SupportsReadLong16 { get; set; }
public bool SupportsReadLong { get; set; }
public byte[] ModeSense6Data { get; set; }
public byte[] ModeSense10Data { get; set; }
[XmlIgnore]
public bool BlocksSpecified { get; set; }
[XmlIgnore]
@@ -995,6 +1003,9 @@ namespace DiscImageChef.Metadata
public SupportedDensity[] SupportedDensities { get; set; }
public SupportedMedia[] SupportedMediaTypes { get; set; }
public byte[] ModeSense6Data { get; set; }
public byte[] ModeSense10Data { get; set; }
[XmlIgnore]
public bool CanReadMediaSerialSpecified { get; set; }
[XmlIgnore]