From 601da83a9381ac69de700dd6d746bd860eb80f36 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 25 Nov 2018 18:10:32 +0000 Subject: [PATCH] Separate SCSI READ(6) from ATA READ SECTORS in device report. --- DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs | 3 ++- DiscImageChef.Core/Devices/Report/ATA.cs | 7 ++++--- DiscImageChef.Core/Devices/Report/SCSI/General.cs | 10 +++++----- DiscImageChef.Core/Devices/Report/SCSI/MMC.cs | 4 ++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs b/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs index 4e3e1a797..993615c60 100644 --- a/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs +++ b/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs @@ -326,7 +326,7 @@ namespace DiscImageChef.CommonTypes.Metadata public bool? SupportsRead10 { get; set; } public bool? SupportsRead12 { get; set; } public bool? SupportsRead16 { get; set; } - public bool? SupportsRead { get; set; } + public bool? SupportsRead6 { get; set; } public bool? SupportsReadCapacity16 { get; set; } public bool? SupportsReadCapacity { get; set; } public bool? SupportsReadCd { get; set; } @@ -364,6 +364,7 @@ namespace DiscImageChef.CommonTypes.Metadata public bool? SupportsReadDma { get; set; } public bool? SupportsReadDmaRetry { get; set; } public bool? SupportsReadRetry { get; set; } + public bool? SupportsReadSectors { get; set; } public bool? SupportsReadLongRetry { get; set; } public bool? SupportsSeek { get; set; } } diff --git a/DiscImageChef.Core/Devices/Report/ATA.cs b/DiscImageChef.Core/Devices/Report/ATA.cs index 06efb4ed7..435baba91 100644 --- a/DiscImageChef.Core/Devices/Report/ATA.cs +++ b/DiscImageChef.Core/Devices/Report/ATA.cs @@ -247,8 +247,9 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ SECTOR(S) in CHS mode..."); sense = dev.Read(out byte[] readBuf, out AtaErrorRegistersChs errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); - mediaTest.SupportsRead = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && - readBuf.Length > 0; + mediaTest.SupportsReadSectors = !sense && (errorChs.Status & 0x01) != 0x01 && + errorChs.Error == 0 && + readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, errorChs.Status, errorChs.Error, readBuf.Length); @@ -553,7 +554,7 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ SECTOR(S) in CHS mode..."); sense = dev.Read(out byte[] readBuf, out AtaErrorRegistersChs errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); - report.ATA.ReadCapabilities.SupportsRead = + report.ATA.ReadCapabilities.SupportsReadSectors = !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, diff --git a/DiscImageChef.Core/Devices/Report/SCSI/General.cs b/DiscImageChef.Core/Devices/Report/SCSI/General.cs index 273df108d..f412355b1 100644 --- a/DiscImageChef.Core/Devices/Report/SCSI/General.cs +++ b/DiscImageChef.Core/Devices/Report/SCSI/General.cs @@ -360,9 +360,9 @@ namespace DiscImageChef.Core.Devices.Report.SCSI } DicConsole.WriteLine("Trying SCSI READ (6)..."); - mediaTest.SupportsRead = !dev.Read6(out buffer, out senseBuffer, 0, - mediaTest.BlockSize ?? 512, TIMEOUT, out _); - DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead); + mediaTest.SupportsRead6 = !dev.Read6(out buffer, out senseBuffer, 0, + mediaTest.BlockSize ?? 512, TIMEOUT, out _); + DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6); if(debug) DataFile.WriteTo("SCSI Report", "read6", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -600,11 +600,11 @@ namespace DiscImageChef.Core.Devices.Report.SCSI } DicConsole.WriteLine("Trying SCSI READ (6)..."); - report.SCSI.ReadCapabilities.SupportsRead = + report.SCSI.ReadCapabilities.SupportsRead6 = !dev.Read6(out buffer, out senseBuffer, 0, report.SCSI.ReadCapabilities.BlockSize ?? 512, TIMEOUT, out _); DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", - !report.SCSI.ReadCapabilities.SupportsRead); + !report.SCSI.ReadCapabilities.SupportsRead6); if(debug) DataFile.WriteTo("SCSI Report", "read6", "_debug_" + productIdentification + ".bin", "read results", buffer); diff --git a/DiscImageChef.Core/Devices/Report/SCSI/MMC.cs b/DiscImageChef.Core/Devices/Report/SCSI/MMC.cs index 1b365d5d9..c94a6e30e 100644 --- a/DiscImageChef.Core/Devices/Report/SCSI/MMC.cs +++ b/DiscImageChef.Core/Devices/Report/SCSI/MMC.cs @@ -1008,8 +1008,8 @@ namespace DiscImageChef.Core.Devices.Report.SCSI } DicConsole.WriteLine("Trying SCSI READ (6)..."); - mediaTest.SupportsRead = !dev.Read6(out buffer, out senseBuffer, 0, 2048, TIMEOUT, out _); - DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead); + mediaTest.SupportsRead6 = !dev.Read6(out buffer, out senseBuffer, 0, 2048, TIMEOUT, out _); + DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6); if(debug) DataFile.WriteTo("SCSI Report", "read6", "_debug_" + productIdentification + "_" + mediaType + ".bin",