diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
index 870870f23..90dde4a69 100644
--- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml
+++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
@@ -328,6 +328,8 @@
+
+
@@ -1832,6 +1834,9 @@
+
+
+
diff --git a/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs b/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs
index 886b759ff..f5ac4e78e 100644
--- a/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs
+++ b/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs
@@ -1398,6 +1398,86 @@ namespace DiscImageChef.CommonTypes.Metadata
get => (short?)UnformattedBPS;
set => UnformattedBPS = (ushort?)value;
}
+
+ #region SCSI data
+ public byte[] Read6Data { get; set; }
+ public byte[] Read10Data { get; set; }
+ public byte[] Read12Data { get; set; }
+ public byte[] Read16Data { get; set; }
+ public byte[] ReadLong10Data { get; set; }
+ public byte[] ReadLong16Data { get; set; }
+ #endregion
+
+ #region ATA data
+ public byte[] ReadSectorsData { get; set; }
+ public byte[] ReadSectorsRetryData { get; set; }
+ public byte[] ReadDmaData { get; set; }
+ public byte[] ReadDmaRetryData { get; set; }
+ public byte[] ReadLbaData { get; set; }
+ public byte[] ReadRetryLbaData { get; set; }
+ public byte[] ReadDmaLbaData { get; set; }
+ public byte[] ReadDmaRetryLbaData { get; set; }
+ public byte[] ReadLba48Data { get; set; }
+ public byte[] ReadDmaLba48Data { get; set; }
+ public byte[] ReadLongData { get; set; }
+ public byte[] ReadLongRetryData { get; set; }
+ public byte[] ReadLongLbaData { get; set; }
+ public byte[] ReadLongRetryLbaData { get; set; }
+ #endregion
+
+ #region CompactDisc data
+ public byte[] TocData { get; set; }
+ public byte[] FullTocData { get; set; }
+ public byte[] AtipData { get; set; }
+ public byte[] PmaData { get; set; }
+ public byte[] ReadCdData { get; set; }
+ public byte[] ReadCdMsfData { get; set; }
+ public byte[] ReadCdFullData { get; set; }
+ public byte[] ReadCdMsfFullData { get; set; }
+ public byte[] Track1PregapData { get; set; }
+ public byte[] LeadInData { get; set; }
+ public byte[] LeadOutData { get; set; }
+ public byte[] C2PointersData { get; set; }
+ public byte[] PQSubchannelData { get; set; }
+ public byte[] RWSubchannelData { get; set; }
+ public byte[] CorrectedSubchannelData { get; set; }
+ public byte[] PQSubchannelWithC2Data { get; set; }
+ public byte[] RWSubchannelWithC2Data { get; set; }
+ public byte[] CorrectedSubchannelWithC2Data { get; set; }
+ #endregion
+
+ #region DVD data
+ public byte[] PfiData { get; set; }
+ public byte[] DmiData { get; set; }
+ public byte[] CmiData { get; set; }
+ public byte[] DvdBcaData { get; set; }
+ public byte[] DvdAacsData { get; set; }
+ public byte[] DvdDdsData { get; set; }
+ public byte[] DvdSaiData { get; set; }
+ public byte[] PriData { get; set; }
+ public byte[] EmbossedPfiData { get; set; }
+ public byte[] AdipData { get; set; }
+ public byte[] DcbData { get; set; }
+ public byte[] HdCmiData { get; set; }
+ public byte[] DvdLayerData { get; set; }
+ #endregion
+
+ #region Blu-ray data
+ public byte[] BluBcaData { get; set; }
+ public byte[] BluDdsData { get; set; }
+ public byte[] BluSaiData { get; set; }
+ public byte[] BluDiData { get; set; }
+ public byte[] BluPacData { get; set; }
+ #endregion
+
+ #region Vendor data
+ public byte[] PlextorReadCddaData { get; set; }
+ public byte[] PioneerReadCddaData { get; set; }
+ public byte[] PioneerReadCddaMsfData { get; set; }
+ public byte[] NecReadCddaData { get; set; }
+ public byte[] PlextorReadRawDVDData { get; set; }
+ public byte[] HLDTSTReadRawDVDData { get; set; }
+ #endregion
}
public class Ssc
diff --git a/DiscImageChef.Core/Devices/Report/ATA.cs b/DiscImageChef.Core/Devices/Report/ATA.cs
index 7b9b2b672..3d06e9c69 100644
--- a/DiscImageChef.Core/Devices/Report/ATA.cs
+++ b/DiscImageChef.Core/Devices/Report/ATA.cs
@@ -164,9 +164,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectorschs", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadSectorsData = readBuf;
DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in CHS mode...");
sense = dev.Read(out readBuf, out errorChs, true, 0, 0, 1, 1, dev.Timeout, out _);
@@ -175,9 +173,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectorsretrychs", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadSectorsRetryData = readBuf;
DicConsole.WriteLine("Trying READ DMA in CHS mode...");
sense = dev.ReadDma(out readBuf, out errorChs, false, 0, 0, 1, 1, dev.Timeout, out _);
@@ -186,9 +182,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdmachs", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadDmaData = readBuf;
DicConsole.WriteLine("Trying READ DMA RETRY in CHS mode...");
sense = dev.ReadDma(out readBuf, out errorChs, true, 0, 0, 1, 1, dev.Timeout, out _);
@@ -197,9 +191,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdmaretrychs", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadDmaRetryData = readBuf;
DicConsole.WriteLine("Trying SEEK in CHS mode...");
sense = dev.Seek(out errorChs, 0, 0, 1, dev.Timeout, out _);
@@ -214,9 +206,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectors", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadLbaData = readBuf;
DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in LBA mode...");
sense = dev.Read(out readBuf, out errorLba, true, 0, 1, dev.Timeout, out _);
@@ -225,9 +215,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectorsretry", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadRetryLbaData = readBuf;
DicConsole.WriteLine("Trying READ DMA in LBA mode...");
sense = dev.ReadDma(out readBuf, out errorLba, false, 0, 1, dev.Timeout, out _);
@@ -236,9 +224,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdma", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadDmaLbaData = readBuf;
DicConsole.WriteLine("Trying READ DMA RETRY in LBA mode...");
sense = dev.ReadDma(out readBuf, out errorLba, true, 0, 1, dev.Timeout, out _);
@@ -247,9 +233,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdmaretry", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadDmaRetryLbaData = readBuf;
DicConsole.WriteLine("Trying SEEK in LBA mode...");
sense = dev.Seek(out errorLba, 0, dev.Timeout, out _);
@@ -264,9 +248,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectors48", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadLba48Data = readBuf;
DicConsole.WriteLine("Trying READ DMA in LBA48 mode...");
sense = dev.ReadDma(out readBuf, out errorLba48, 0, 1, dev.Timeout, out _);
@@ -275,9 +257,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdma48", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadDmaLba48Data = readBuf;
// Send SET FEATURES before sending READ LONG commands, retrieve IDENTIFY again and
// check if ECC size changed. Sector is set to 1 because without it most drives just return
@@ -305,9 +285,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlongchs", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadLongData = readBuf;
DicConsole.WriteLine("Trying READ LONG RETRY in CHS mode...");
sense = dev.ReadLong(out readBuf, out errorChs, true, 0, 0, 1, mediaTest.LongBlockSize ?? 0,
@@ -319,9 +297,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlongretrychs", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadLongRetryData = readBuf;
DicConsole.WriteLine("Trying READ LONG in LBA mode...");
sense = dev.ReadLong(out readBuf, out errorLba, false, 0, mediaTest.LongBlockSize ?? 0, dev.Timeout,
@@ -332,9 +308,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlong", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadLongLbaData = readBuf;
DicConsole.WriteLine("Trying READ LONG RETRY in LBA mode...");
sense = dev.ReadLong(out readBuf, out errorLba, true, 0, mediaTest.LongBlockSize ?? 0, dev.Timeout,
@@ -345,9 +319,7 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.DebugWriteLine("ATA Report",
"Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense,
errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlongretry", "_debug_" + mediaTest.MediumTypeName + ".bin",
- "read results", readBuf);
+ if(debug) mediaTest.ReadLongRetryLbaData = readBuf;
}
else mediaTest.MediaIsRecognized = false;
@@ -463,9 +435,7 @@ namespace DiscImageChef.Core.Devices.Report
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);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectorschs", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadSectorsData = readBuf;
DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in CHS mode...");
sense = dev.Read(out readBuf, out errorChs, true, 0, 0, 1, 1, dev.Timeout, out _);
@@ -473,9 +443,7 @@ namespace DiscImageChef.Core.Devices.Report
!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);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectorsretrychs", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadSectorsRetryData = readBuf;
DicConsole.WriteLine("Trying READ DMA in CHS mode...");
sense = dev.ReadDma(out readBuf, out errorChs, false, 0, 0, 1, 1, dev.Timeout, out _);
@@ -483,8 +451,7 @@ namespace DiscImageChef.Core.Devices.Report
!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);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdmachs", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadDmaData = readBuf;
DicConsole.WriteLine("Trying READ DMA RETRY in CHS mode...");
sense = dev.ReadDma(out readBuf, out errorChs, true, 0, 0, 1, 1, dev.Timeout, out _);
@@ -492,9 +459,7 @@ namespace DiscImageChef.Core.Devices.Report
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);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdmaretrychs", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadDmaRetryData = readBuf;
DicConsole.WriteLine("Trying SEEK in CHS mode...");
sense = dev.Seek(out errorChs, 0, 0, 1, dev.Timeout, out _);
@@ -508,8 +473,7 @@ namespace DiscImageChef.Core.Devices.Report
!sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba.Status, errorLba.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectors", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadLbaData = readBuf;
DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in LBA mode...");
sense = dev.Read(out readBuf, out errorLba, true, 0, 1, dev.Timeout, out _);
@@ -517,9 +481,7 @@ namespace DiscImageChef.Core.Devices.Report
readBuf.Length > 0;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba.Status, errorLba.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectorsretry", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadRetryLbaData = readBuf;
DicConsole.WriteLine("Trying READ DMA in LBA mode...");
sense = dev.ReadDma(out readBuf, out errorLba, false, 0, 1, dev.Timeout, out _);
@@ -527,8 +489,7 @@ namespace DiscImageChef.Core.Devices.Report
readBuf.Length > 0;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba.Status, errorLba.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdma", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadDmaLbaData = readBuf;
DicConsole.WriteLine("Trying READ DMA RETRY in LBA mode...");
sense = dev.ReadDma(out readBuf, out errorLba, true, 0, 1, dev.Timeout, out _);
@@ -536,8 +497,7 @@ namespace DiscImageChef.Core.Devices.Report
!sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba.Status, errorLba.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdmaretry", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadDmaRetryLbaData = readBuf;
DicConsole.WriteLine("Trying SEEK in LBA mode...");
sense = dev.Seek(out errorLba, 0, dev.Timeout, out _);
@@ -551,9 +511,7 @@ namespace DiscImageChef.Core.Devices.Report
readBuf.Length > 0;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba48.Status, errorLba48.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readsectors48", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadLba48Data = readBuf;
DicConsole.WriteLine("Trying READ DMA in LBA48 mode...");
sense = dev.ReadDma(out readBuf, out errorLba48, 0, 1, dev.Timeout, out _);
@@ -561,8 +519,7 @@ namespace DiscImageChef.Core.Devices.Report
readBuf.Length > 0;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba48.Status, errorLba48.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readdma48", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadDmaLba48Data = readBuf;
// Send SET FEATURES before sending READ LONG commands, retrieve IDENTIFY again and
// check if ECC size changed. Sector is set to 1 because without it most drives just return
@@ -590,8 +547,7 @@ namespace DiscImageChef.Core.Devices.Report
BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlongchs", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadLongData = readBuf;
DicConsole.WriteLine("Trying READ LONG RETRY in CHS mode...");
sense = dev.ReadLong(out readBuf, out errorChs, true, 0, 0, 1, capabilities.LongBlockSize ?? 0, dev.Timeout,
@@ -602,9 +558,7 @@ namespace DiscImageChef.Core.Devices.Report
checkCorrectRead;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorChs.Status, errorChs.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlongretrychs", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadLongRetryData = readBuf;
DicConsole.WriteLine("Trying READ LONG in LBA mode...");
sense = dev.ReadLong(out readBuf, out errorLba, false, 0, capabilities.LongBlockSize ?? 0, dev.Timeout,
@@ -614,8 +568,7 @@ namespace DiscImageChef.Core.Devices.Report
BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba.Status, errorLba.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlong", "_debug_" + dev.Model + ".bin", "read results", readBuf);
+ if(debug) capabilities.ReadLongLbaData = readBuf;
DicConsole.WriteLine("Trying READ LONG RETRY in LBA mode...");
sense = dev.ReadLong(out readBuf, out errorLba, true, 0, capabilities.LongBlockSize ?? 0, dev.Timeout,
@@ -626,9 +579,7 @@ namespace DiscImageChef.Core.Devices.Report
checkCorrectRead;
DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}",
sense, errorLba.Status, errorLba.Error, readBuf.Length);
- if(debug)
- DataFile.WriteTo("ATA Report", "readlongretry", "_debug_" + dev.Model + ".bin", "read results",
- readBuf);
+ if(debug) capabilities.ReadLongRetryLbaData = readBuf;
return capabilities;
}
diff --git a/DiscImageChef.Core/Devices/Report/MMC.cs b/DiscImageChef.Core/Devices/Report/MMC.cs
index 2292d8091..9950e67d6 100644
--- a/DiscImageChef.Core/Devices/Report/MMC.cs
+++ b/DiscImageChef.Core/Devices/Report/MMC.cs
@@ -537,16 +537,12 @@ namespace DiscImageChef.Core.Devices.Report
mediaTest.CanReadTOC =
!dev.ReadTocPmaAtip(out buffer, out senseBuffer, false, 0, 0, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadTOC);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readtoc", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.TocData = buffer;
DicConsole.WriteLine("Querying CD Full TOC...");
mediaTest.CanReadFullTOC = !dev.ReadRawToc(out buffer, out senseBuffer, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadFullTOC);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readfulltoc", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.FullTocData = buffer;
}
if(mediaType.StartsWith("CD-R", StringComparison.Ordinal) ||
@@ -555,15 +551,11 @@ namespace DiscImageChef.Core.Devices.Report
DicConsole.WriteLine("Querying CD ATIP...");
mediaTest.CanReadATIP = !dev.ReadAtip(out buffer, out senseBuffer, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadATIP);
- if(debug)
- DataFile.WriteTo("SCSI Report", "atip", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.AtipData = buffer;
DicConsole.WriteLine("Querying CD PMA...");
mediaTest.CanReadPMA = !dev.ReadPma(out buffer, out senseBuffer, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPMA);
- if(debug)
- DataFile.WriteTo("SCSI Report", "pma", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PmaData = buffer;
}
if(mediaType.StartsWith("DVD-", StringComparison.Ordinal) ||
@@ -575,18 +567,14 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.PhysicalInformation, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPFI);
- if(debug)
- DataFile.WriteTo("SCSI Report", "pfi", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PfiData = buffer;
DicConsole.WriteLine("Querying DVD DMI...");
mediaTest.CanReadDMI = !dev.ReadDiscStructure(out buffer, out senseBuffer,
MmcDiscStructureMediaType.Dvd, 0, 0,
MmcDiscStructureFormat.DiscManufacturingInformation, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDMI);
- if(debug)
- DataFile.WriteTo("SCSI Report", "dmi", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DmiData = buffer;
}
if(mediaType == "DVD-ROM")
@@ -597,9 +585,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.CopyrightInformation, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCMI);
- if(debug)
- DataFile.WriteTo("SCSI Report", "cmi", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.CmiData = buffer;
}
switch(mediaType)
@@ -612,18 +598,14 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.BurstCuttingArea, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadBCA);
- if(debug)
- DataFile.WriteTo("SCSI Report", "bca", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DvdBcaData = buffer;
DicConsole.WriteLine("Querying DVD AACS...");
mediaTest.CanReadAACS = !dev.ReadDiscStructure(out buffer, out senseBuffer,
MmcDiscStructureMediaType.Dvd, 0, 0,
MmcDiscStructureFormat.DvdAacs, 0, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadAACS);
- if(debug)
- DataFile.WriteTo("SCSI Report", "aacs", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DvdAacsData = buffer;
break;
case "BD-ROM":
DicConsole.WriteLine("Querying BD BCA...");
@@ -632,9 +614,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.BdBurstCuttingArea, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadBCA);
- if(debug)
- DataFile.WriteTo("SCSI Report", "bdbca", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.BluBcaData = buffer;
break;
case "DVD-RAM":
case "HD DVD-RAM":
@@ -643,17 +623,13 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.DvdramDds, 0, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDDS);
- if(debug)
- DataFile.WriteTo("SCSI Report", "dds", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DvdDdsData = buffer;
mediaTest.CanReadSpareAreaInformation =
!dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Dvd, 0, 0,
MmcDiscStructureFormat.DvdramSpareAreaInformation, 0, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadSpareAreaInformation);
- if(debug)
- DataFile.WriteTo("SCSI Report", "sai", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DvdSaiData = buffer;
break;
}
@@ -664,17 +640,13 @@ namespace DiscImageChef.Core.Devices.Report
0, 0, MmcDiscStructureFormat.BdDds, 0, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDDS);
- if(debug)
- DataFile.WriteTo("SCSI Report", "bddds", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.BluDdsData = buffer;
DicConsole.WriteLine("Querying BD SAI...");
mediaTest.CanReadSpareAreaInformation =
!dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd, 0, 0,
MmcDiscStructureFormat.BdSpareAreaInformation, 0, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadSpareAreaInformation);
- if(debug)
- DataFile.WriteTo("SCSI Report", "bdsai", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.BluSaiData = buffer;
}
if(mediaType == "DVD-R" || mediaType == "DVD-RW")
@@ -685,9 +657,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.PreRecordedInfo, 0, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPRI);
- if(debug)
- DataFile.WriteTo("SCSI Report", "pri", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PriData = buffer;
}
if(mediaType == "DVD-R" || mediaType == "DVD-RW" || mediaType == "HD DVD-R")
@@ -698,18 +668,13 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.DvdrMediaIdentifier, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadMediaID);
- if(debug)
- DataFile.WriteTo("SCSI Report", "mediaid", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
DicConsole.WriteLine("Querying DVD Embossed PFI...");
mediaTest.CanReadRecordablePFI = !dev.ReadDiscStructure(out buffer, out senseBuffer,
MmcDiscStructureMediaType.Dvd, 0, 0,
MmcDiscStructureFormat.DvdrPhysicalInformation,
0, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRecordablePFI);
- if(debug)
- DataFile.WriteTo("SCSI Report", "epfi", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.EmbossedPfiData = buffer;
}
if(mediaType.StartsWith("DVD+R", StringComparison.Ordinal) || mediaType == "DVD+MRW")
@@ -719,17 +684,13 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureMediaType.Dvd, 0, 0,
MmcDiscStructureFormat.Adip, 0, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadADIP);
- if(debug)
- DataFile.WriteTo("SCSI Report", "adip", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.AdipData = buffer;
DicConsole.WriteLine("Querying DVD DCB...");
mediaTest.CanReadDCB = !dev.ReadDiscStructure(out buffer, out senseBuffer,
MmcDiscStructureMediaType.Dvd, 0, 0,
MmcDiscStructureFormat.Dcb, 0, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDCB);
- if(debug)
- DataFile.WriteTo("SCSI Report", "dcb", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DcbData = buffer;
}
if(mediaType == "HD DVD-ROM")
@@ -740,9 +701,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.HddvdCopyrightInformation, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadHDCMI);
- if(debug)
- DataFile.WriteTo("SCSI Report", "hdcmi", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.HdCmiData = buffer;
}
if(mediaType.EndsWith(" DL", StringComparison.Ordinal))
@@ -753,9 +712,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.DvdrLayerCapacity, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadLayerCapacity);
- if(debug)
- DataFile.WriteTo("SCSI Report", "layer", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.DvdLayerData = buffer;
}
if(mediaType.StartsWith("BD-R", StringComparison.Ordinal))
@@ -766,45 +723,33 @@ namespace DiscImageChef.Core.Devices.Report
MmcDiscStructureFormat.DiscInformation, 0,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadDiscInformation);
- if(debug)
- DataFile.WriteTo("SCSI Report", "di", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.BluDiData = buffer;
DicConsole.WriteLine("Querying BD PAC...");
mediaTest.CanReadPAC = !dev.ReadDiscStructure(out buffer, out senseBuffer, MmcDiscStructureMediaType.Bd,
0, 0, MmcDiscStructureFormat.Pac, 0, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPAC);
- if(debug)
- DataFile.WriteTo("SCSI Report", "pac", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.BluPacData = buffer;
}
DicConsole.WriteLine("Trying SCSI READ (6)...");
mediaTest.SupportsRead6 = !dev.Read6(out buffer, out senseBuffer, 0, 2048, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read6", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.Read6Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (10)...");
mediaTest.SupportsRead10 = !dev.Read10(out buffer, out senseBuffer, 0, false, true, false, false, 0, 2048,
0, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead10);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read10", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.Read10Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (12)...");
mediaTest.SupportsRead12 = !dev.Read12(out buffer, out senseBuffer, 0, false, true, false, false, 0, 2048,
0, 1, false, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead12);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read12", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.Read12Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (16)...");
mediaTest.SupportsRead16 = !dev.Read16(out buffer, out senseBuffer, 0, false, true, false, 0, 2048, 0, 1,
false, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead16);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read16", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.Read16Data = buffer;
if(mediaType.StartsWith("CD-", StringComparison.Ordinal) ||
mediaType.StartsWith("DDCD-", StringComparison.Ordinal) || mediaType == "Audio CD")
@@ -816,18 +761,14 @@ namespace DiscImageChef.Core.Devices.Report
false, false, false, MmcHeaderCodes.None, true, false,
MmcErrorField.None, MmcSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCd);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcd", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.ReadCdFullData = buffer;
DicConsole.WriteLine("Trying SCSI READ CD MSF...");
mediaTest.SupportsReadCdMsf = !dev.ReadCdMsf(out buffer, out senseBuffer, 0x00000200, 0x00000201,
2352, MmcSectorTypes.Cdda, false, false,
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdMsf);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdmsf", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.ReadCdMsfFullData = buffer;
}
else
{
@@ -837,27 +778,21 @@ namespace DiscImageChef.Core.Devices.Report
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCd);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcd", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.ReadCdData = buffer;
DicConsole.WriteLine("Trying SCSI READ CD MSF...");
mediaTest.SupportsReadCdMsf = !dev.ReadCdMsf(out buffer, out senseBuffer, 0x00000200, 0x00000201,
2048, MmcSectorTypes.AllTypes, false, false,
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdMsf);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdmsf", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.ReadCdMsfData = buffer;
DicConsole.WriteLine("Trying SCSI READ CD full sector...");
mediaTest.SupportsReadCdRaw = !dev.ReadCd(out buffer, out senseBuffer, 0, 2352, 1,
MmcSectorTypes.AllTypes, false, false, true,
MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None,
MmcSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdRaw);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdraw", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.ReadCdFullData = buffer;
DicConsole.WriteLine("Trying SCSI READ CD MSF full sector...");
mediaTest.SupportsReadCdMsfRaw = !dev.ReadCdMsf(out buffer, out senseBuffer, 0x00000200, 0x00000201,
2352, MmcSectorTypes.AllTypes, false, false,
@@ -865,14 +800,12 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.None, MmcSubchannel.None, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsReadCdMsfRaw);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdmsfraw",
- "_debug_" + dev.Model + "_" + mediaType + ".bin", "read results", buffer);
+ if(debug) mediaTest.ReadCdMsfFullData = buffer;
}
if(mediaTest.SupportsReadCdRaw == true || mediaType == "Audio CD")
{
- DicConsole.WriteLine("Trying to read CD Lead-In...");
+ DicConsole.WriteLine("Trying to read CD Track 1 pregap...");
for(int i = -150; i < 0; i++)
{
if(mediaType == "Audio CD")
@@ -884,15 +817,32 @@ namespace DiscImageChef.Core.Devices.Report
false, false, true, MmcHeaderCodes.AllHeaders, true, true,
MmcErrorField.None, MmcSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", sense);
- if(debug)
- DataFile.WriteTo("SCSI Report", "leadin", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.Track1PregapData = buffer;
if(sense) continue;
mediaTest.CanReadFirstTrackPreGap = true;
break;
}
+ DicConsole.WriteLine("Trying to read CD Lead-In...");
+ foreach(int i in new[] {-5000, -4000, -3000, -2000, -1000, -500, -250})
+ {
+ if(mediaType == "Audio CD")
+ sense = dev.ReadCd(out buffer, out senseBuffer, (uint)i, 2352, 1, MmcSectorTypes.Cdda,
+ false, false, false, MmcHeaderCodes.None, true, false,
+ MmcErrorField.None, MmcSubchannel.None, dev.Timeout, out _);
+ else
+ sense = dev.ReadCd(out buffer, out senseBuffer, (uint)i, 2352, 1, MmcSectorTypes.AllTypes,
+ false, false, true, MmcHeaderCodes.AllHeaders, true, true,
+ MmcErrorField.None, MmcSubchannel.None, dev.Timeout, out _);
+ DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", sense);
+ if(debug) mediaTest.LeadInData = buffer;
+ if(sense) continue;
+
+ mediaTest.CanReadLeadIn = true;
+ break;
+ }
+
DicConsole.WriteLine("Trying to read CD Lead-Out...");
if(mediaType == "Audio CD")
mediaTest.CanReadLeadOut = !dev.ReadCd(out buffer, out senseBuffer,
@@ -908,9 +858,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.None, MmcSubchannel.None, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadLeadOut);
- if(debug)
- DataFile.WriteTo("SCSI Report", "leadout", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.LeadOutData = buffer;
}
if(mediaType == "Audio CD")
@@ -928,9 +876,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock, MmcSubchannel.None,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadC2Pointers);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.C2PointersData = buffer;
DicConsole.WriteLine("Trying to read subchannels...");
mediaTest.CanReadPQSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2368, 1,
@@ -938,26 +884,20 @@ namespace DiscImageChef.Core.Devices.Report
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.Q16, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdpq", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PQSubchannelData = buffer;
mediaTest.CanReadRWSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2448, 1,
MmcSectorTypes.Cdda, false, false, false,
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.Raw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdrw", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.RWSubchannelData = buffer;
mediaTest.CanReadCorrectedSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2448, 1,
MmcSectorTypes.Cdda, false, false, false,
MmcHeaderCodes.None, true, false,
MmcErrorField.None, MmcSubchannel.Rw,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdsub", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.CorrectedSubchannelData = buffer;
DicConsole.WriteLine("Trying to read subchannels with C2 Pointers...");
mediaTest.CanReadPQSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2662, 1,
@@ -972,9 +912,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock,
MmcSubchannel.Q16, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdpqc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PQSubchannelWithC2Data = buffer;
mediaTest.CanReadRWSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2712, 1,
MmcSectorTypes.Cdda, false, false, false,
@@ -988,9 +926,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock,
MmcSubchannel.Raw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdrwc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.RWSubchannelWithC2Data = buffer;
mediaTest.CanReadCorrectedSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2712, 1,
MmcSectorTypes.Cdda, false, false, false,
@@ -1006,9 +942,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcSubchannel.Rw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
!mediaTest.CanReadCorrectedSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdsubc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.CorrectedSubchannelWithC2Data = buffer;
}
else if(mediaTest.SupportsReadCdRaw == true)
{
@@ -1025,9 +959,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock, MmcSubchannel.None,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadC2Pointers);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.C2PointersData = buffer;
DicConsole.WriteLine("Trying to read subchannels...");
mediaTest.CanReadPQSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2368, 1,
@@ -1036,28 +968,21 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.None, MmcSubchannel.Q16, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdpq", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PQSubchannelData = buffer;
mediaTest.CanReadRWSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2448, 1,
MmcSectorTypes.AllTypes, false, false, true,
MmcHeaderCodes.AllHeaders, true, true,
MmcErrorField.None, MmcSubchannel.Raw, dev.Timeout,
out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdrw", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.RWSubchannelData = buffer;
mediaTest.CanReadCorrectedSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2448, 1,
MmcSectorTypes.AllTypes, false, false, true,
MmcHeaderCodes.AllHeaders, true, true,
MmcErrorField.None, MmcSubchannel.Rw,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdsub", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
-
+ if(debug) mediaTest.CorrectedSubchannelData = buffer;
DicConsole.WriteLine("Trying to read subchannels with C2 Pointers...");
mediaTest.CanReadPQSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2662, 1,
MmcSectorTypes.AllTypes, false, false, true,
@@ -1071,9 +996,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock,
MmcSubchannel.Q16, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdpqc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PQSubchannelWithC2Data = buffer;
mediaTest.CanReadRWSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2712, 1,
MmcSectorTypes.AllTypes, false, false, true,
@@ -1087,9 +1010,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock,
MmcSubchannel.Raw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdrwc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.RWSubchannelWithC2Data = buffer;
mediaTest.CanReadCorrectedSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2712, 1,
MmcSectorTypes.AllTypes, false, false,
@@ -1105,9 +1026,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcSubchannel.Rw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
!mediaTest.CanReadCorrectedSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdsubc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.CorrectedSubchannelWithC2Data = buffer;
}
else
{
@@ -1124,9 +1043,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock, MmcSubchannel.None,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadC2Pointers);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.C2PointersData = buffer;
DicConsole.WriteLine("Trying to read subchannels...");
mediaTest.CanReadPQSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2064, 1,
@@ -1134,26 +1051,20 @@ namespace DiscImageChef.Core.Devices.Report
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.Q16, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdpq", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PQSubchannelData = buffer;
mediaTest.CanReadRWSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2144, 1,
MmcSectorTypes.AllTypes, false, false, false,
MmcHeaderCodes.None, true, false, MmcErrorField.None,
MmcSubchannel.Raw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdrw", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.RWSubchannelData = buffer;
mediaTest.CanReadCorrectedSubchannel = !dev.ReadCd(out buffer, out senseBuffer, 0, 2144, 1,
MmcSectorTypes.AllTypes, false, false, false,
MmcHeaderCodes.None, true, false,
MmcErrorField.None, MmcSubchannel.Rw,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdsub", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.CorrectedSubchannelData = buffer;
DicConsole.WriteLine("Trying to read subchannels with C2 Pointers...");
mediaTest.CanReadPQSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2358, 1,
@@ -1168,9 +1079,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock,
MmcSubchannel.Q16, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadPQSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdpqc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.PQSubchannelWithC2Data = buffer;
mediaTest.CanReadRWSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2438, 1,
MmcSectorTypes.AllTypes, false, false, false,
@@ -1184,9 +1093,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcErrorField.C2PointersAndBlock,
MmcSubchannel.Raw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadRWSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdrwc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.RWSubchannelWithC2Data = buffer;
mediaTest.CanReadCorrectedSubchannelWithC2 = !dev.ReadCd(out buffer, out senseBuffer, 0, 2438, 1,
MmcSectorTypes.AllTypes, false, false,
@@ -1202,9 +1109,7 @@ namespace DiscImageChef.Core.Devices.Report
MmcSubchannel.Rw, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
!mediaTest.CanReadCorrectedSubchannelWithC2);
- if(debug)
- DataFile.WriteTo("SCSI Report", "readcdsubc2", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.CorrectedSubchannelWithC2Data = buffer;
}
if(tryPlextor)
@@ -1214,9 +1119,7 @@ namespace DiscImageChef.Core.Devices.Report
!dev.PlextorReadCdDa(out buffer, out senseBuffer, 0, 2352, 1, PlextorSubchannel.None,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPlextorReadCDDA);
- if(debug)
- DataFile.WriteTo("SCSI Report", "plextorreadcdda",
- "_debug_" + dev.Model + "_" + mediaType + ".bin", "read results", buffer);
+ if(debug) mediaTest.PlextorReadCddaData = buffer;
}
if(tryPioneer)
@@ -1226,17 +1129,13 @@ namespace DiscImageChef.Core.Devices.Report
!dev.PioneerReadCdDa(out buffer, out senseBuffer, 0, 2352, 1, PioneerSubchannel.None,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPioneerReadCDDA);
- if(debug)
- DataFile.WriteTo("SCSI Report", "pioneerreadcdda",
- "_debug_" + dev.Model + "_" + mediaType + ".bin", "read results", buffer);
+ if(debug) mediaTest.PioneerReadCddaData = buffer;
DicConsole.WriteLine("Trying Pioneer READ CD-DA MSF...");
mediaTest.SupportsPioneerReadCDDAMSF =
!dev.PioneerReadCdDaMsf(out buffer, out senseBuffer, 0x00000200, 0x00000201, 2352,
PioneerSubchannel.None, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPioneerReadCDDAMSF);
- if(debug)
- DataFile.WriteTo("SCSI Report", "pioneerreadcddamsf",
- "_debug_" + dev.Model + "_" + mediaType + ".bin", "read results", buffer);
+ if(debug) mediaTest.PioneerReadCddaMsfData = buffer;
}
if(tryNec)
@@ -1245,9 +1144,7 @@ namespace DiscImageChef.Core.Devices.Report
mediaTest.SupportsNECReadCDDA =
!dev.NecReadCdDa(out buffer, out senseBuffer, 0, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsNECReadCDDA);
- if(debug)
- DataFile.WriteTo("SCSI Report", "necreadcdda", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+ if(debug) mediaTest.NecReadCddaData = buffer;
}
}
@@ -1273,6 +1170,7 @@ namespace DiscImageChef.Core.Devices.Report
sense = dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, 37856, dev.Timeout, out _);
if(!sense && !dev.Error)
{
+ mediaTest.ReadLong10Data = buffer;
mediaTest.SupportsReadLong = true;
mediaTest.LongBlockSize = 37856;
}
@@ -1284,11 +1182,10 @@ namespace DiscImageChef.Core.Devices.Report
mediaTest.SupportsPlextorReadRawDVD =
!dev.PlextorReadRawDvd(out buffer, out senseBuffer, 0, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsPlextorReadRawDVD);
- if(debug)
- DataFile.WriteTo("SCSI Report", "plextorrawdvd", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
if(mediaTest.SupportsPlextorReadRawDVD == true)
mediaTest.SupportsPlextorReadRawDVD = !ArrayHelpers.ArrayIsNullOrEmpty(buffer);
+
+ if(mediaTest.SupportsPlextorReadRawDVD == true && debug) mediaTest.PlextorReadRawDVDData = buffer;
}
if(!tryHldtst) return mediaTest;
@@ -1297,9 +1194,11 @@ namespace DiscImageChef.Core.Devices.Report
mediaTest.SupportsHLDTSTReadRawDVD =
!dev.HlDtStReadRawDvd(out buffer, out senseBuffer, 0, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsHLDTSTReadRawDVD);
- if(debug)
- DataFile.WriteTo("SCSI Report", "hldtstrawdvd", "_debug_" + dev.Model + "_" + mediaType + ".bin",
- "read results", buffer);
+
+ if(mediaTest.SupportsHLDTSTReadRawDVD == true)
+ mediaTest.SupportsHLDTSTReadRawDVD = !ArrayHelpers.ArrayIsNullOrEmpty(buffer);
+
+ if(mediaTest.SupportsHLDTSTReadRawDVD == true && debug) mediaTest.HLDTSTReadRawDVDData = buffer;
return mediaTest;
}
diff --git a/DiscImageChef.Core/Devices/Report/Scsi.cs b/DiscImageChef.Core/Devices/Report/Scsi.cs
index 801886133..e1d2c2700 100644
--- a/DiscImageChef.Core/Devices/Report/Scsi.cs
+++ b/DiscImageChef.Core/Devices/Report/Scsi.cs
@@ -282,33 +282,25 @@ namespace DiscImageChef.Core.Devices.Report
mediaTest.SupportsRead6 = !dev.Read6(out buffer, out senseBuffer, 0,
mediaTest.BlockSize ?? 512, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead6);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read6", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results",
- buffer);
+ if(debug) mediaTest.Read6Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (10)...");
mediaTest.SupportsRead10 = !dev.Read10(out buffer, out senseBuffer, 0, false, true, false, false, 0,
mediaTest.BlockSize ?? 512, 0, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead10);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read10", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results",
- buffer);
+ if(debug) mediaTest.Read10Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (12)...");
mediaTest.SupportsRead12 = !dev.Read12(out buffer, out senseBuffer, 0, false, true, false, false, 0,
mediaTest.BlockSize ?? 512, 0, 1, false, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead12);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read12", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results",
- buffer);
+ if(debug) mediaTest.Read12Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (16)...");
mediaTest.SupportsRead16 = !dev.Read16(out buffer, out senseBuffer, 0, false, true, false, 0,
mediaTest.BlockSize ?? 512, 0, 1, false, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.SupportsRead16);
- if(debug)
- DataFile.WriteTo("SCSI Report", "read16", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results",
- buffer);
+ if(debug) mediaTest.Read16Data = buffer;
mediaTest.LongBlockSize = mediaTest.BlockSize;
DicConsole.WriteLine("Trying SCSI READ LONG (10)...");
@@ -456,25 +448,25 @@ namespace DiscImageChef.Core.Devices.Report
capabilities.SupportsRead6 = !dev.Read6(out buffer, out senseBuffer, 0, capabilities.BlockSize ?? 512,
dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead6);
- if(debug) DataFile.WriteTo("SCSI Report", "read6", "_debug_" + dev.Model + ".bin", "read results", buffer);
+ if(debug) capabilities.Read6Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (10)...");
capabilities.SupportsRead10 = !dev.Read10(out buffer, out senseBuffer, 0, false, true, false, false, 0,
capabilities.BlockSize ?? 512, 0, 1, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead10);
- if(debug) DataFile.WriteTo("SCSI Report", "read10", "_debug_" + dev.Model + ".bin", "read results", buffer);
+ if(debug) capabilities.Read10Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (12)...");
capabilities.SupportsRead12 = !dev.Read12(out buffer, out senseBuffer, 0, false, true, false, false, 0,
capabilities.BlockSize ?? 512, 0, 1, false, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead12);
- if(debug) DataFile.WriteTo("SCSI Report", "read12", "_debug_" + dev.Model + ".bin", "read results", buffer);
+ if(debug) capabilities.Read12Data = buffer;
DicConsole.WriteLine("Trying SCSI READ (16)...");
capabilities.SupportsRead16 = !dev.Read16(out buffer, out senseBuffer, 0, false, true, false, 0,
capabilities.BlockSize ?? 512, 0, 1, false, dev.Timeout, out _);
DicConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !capabilities.SupportsRead16);
- if(debug) DataFile.WriteTo("SCSI Report", "read16", "_debug_" + dev.Model + ".bin", "read results", buffer);
+ if(debug) capabilities.Read16Data = buffer;
capabilities.LongBlockSize = capabilities.BlockSize;
DicConsole.WriteLine("Trying SCSI READ LONG (10)...");
diff --git a/DiscImageChef.Database/DiscImageChef.Database.csproj b/DiscImageChef.Database/DiscImageChef.Database.csproj
index 8998c6f58..a6a4f315c 100644
--- a/DiscImageChef.Database/DiscImageChef.Database.csproj
+++ b/DiscImageChef.Database/DiscImageChef.Database.csproj
@@ -88,6 +88,8 @@
+
+
diff --git a/DiscImageChef.Database/Migrations/20181225214500_StoreReadResultsInReportDatabase.Designer.cs b/DiscImageChef.Database/Migrations/20181225214500_StoreReadResultsInReportDatabase.Designer.cs
new file mode 100644
index 000000000..6867e5ca4
--- /dev/null
+++ b/DiscImageChef.Database/Migrations/20181225214500_StoreReadResultsInReportDatabase.Designer.cs
@@ -0,0 +1,1551 @@
+//
+using System;
+using DiscImageChef.Database;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+namespace DiscImageChef.Database.Migrations
+{
+ [DbContext(typeof(DicContext))]
+ [Migration("20181225214500_StoreReadResultsInReportDatabase")]
+ partial class StoreReadResultsInReportDatabase
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.1.4-rtm-31024");
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Identify");
+
+ b.Property("ReadCapabilitiesId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ReadCapabilitiesId");
+
+ b.ToTable("Ata");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BlockLength");
+
+ b.Property("BlockLengthSql");
+
+ b.Property("Blocks");
+
+ b.Property("BlocksSql");
+
+ b.Property("Density");
+
+ b.Property("ScsiModeId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ScsiModeId");
+
+ b.ToTable("BlockDescriptor");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Chs", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Cylinders");
+
+ b.Property("CylindersSql");
+
+ b.Property("Heads");
+
+ b.Property("HeadsSql");
+
+ b.Property("Sectors");
+
+ b.Property("SectorsSql");
+
+ b.HasKey("Id");
+
+ b.ToTable("Chs");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b =>
+ {
+ b.Property("Code")
+ .ValueGeneratedOnAdd();
+
+ b.Property("SscSupportedMediaId");
+
+ b.HasKey("Code");
+
+ b.HasIndex("SscSupportedMediaId");
+
+ b.ToTable("DensityCode");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.FireWire", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Manufacturer");
+
+ b.Property("Product");
+
+ b.Property("ProductID");
+
+ b.Property("ProductIDSql");
+
+ b.Property("RemovableMedia");
+
+ b.Property("VendorID");
+
+ b.Property("VendorIDSql");
+
+ b.HasKey("Id");
+
+ b.ToTable("FireWire");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("FeaturesId");
+
+ b.Property("ModeSense2AData");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FeaturesId");
+
+ b.ToTable("Mmc");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcFeatures", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AACSVersion");
+
+ b.Property("AGIDs");
+
+ b.Property("BinaryData");
+
+ b.Property("BindingNonceBlocks");
+
+ b.Property("BlocksPerReadableUnit");
+
+ b.Property("BlocksPerReadableUnitSql");
+
+ b.Property("BufferUnderrunFreeInDVD");
+
+ b.Property("BufferUnderrunFreeInSAO");
+
+ b.Property("BufferUnderrunFreeInTAO");
+
+ b.Property("CPRMVersion");
+
+ b.Property("CSSVersion");
+
+ b.Property("CanAudioScan");
+
+ b.Property("CanEject");
+
+ b.Property("CanEraseSector");
+
+ b.Property("CanExpandBDRESpareArea");
+
+ b.Property("CanFormat");
+
+ b.Property("CanFormatBDREWithoutSpare");
+
+ b.Property("CanFormatCert");
+
+ b.Property("CanFormatFRF");
+
+ b.Property("CanFormatQCert");
+
+ b.Property("CanFormatRRM");
+
+ b.Property("CanGenerateBindingNonce");
+
+ b.Property("CanLoad");
+
+ b.Property("CanMuteSeparateChannels");
+
+ b.Property("CanOverwriteSAOTrack");
+
+ b.Property("CanOverwriteTAOTrack");
+
+ b.Property("CanPlayCDAudio");
+
+ b.Property("CanPseudoOverwriteBDR");
+
+ b.Property("CanReadAllDualR");
+
+ b.Property("CanReadAllDualRW");
+
+ b.Property("CanReadBD");
+
+ b.Property("CanReadBDR");
+
+ b.Property("CanReadBDRE1");
+
+ b.Property("CanReadBDRE2");
+
+ b.Property("CanReadBDROM");
+
+ b.Property("CanReadBluBCA");
+
+ b.Property("CanReadCD");
+
+ b.Property("CanReadCDMRW");
+
+ b.Property("CanReadCPRM_MKB");
+
+ b.Property("CanReadDDCD");
+
+ b.Property("CanReadDVD");
+
+ b.Property("CanReadDVDPlusMRW");
+
+ b.Property("CanReadDVDPlusR");
+
+ b.Property("CanReadDVDPlusRDL");
+
+ b.Property("CanReadDVDPlusRW");
+
+ b.Property("CanReadDVDPlusRWDL");
+
+ b.Property("CanReadDriveAACSCertificate");
+
+ b.Property("CanReadHDDVD");
+
+ b.Property("CanReadHDDVDR");
+
+ b.Property("CanReadHDDVDRAM");
+
+ b.Property("CanReadLeadInCDText");
+
+ b.Property("CanReadOldBDR");
+
+ b.Property("CanReadOldBDRE");
+
+ b.Property("CanReadOldBDROM");
+
+ b.Property("CanReadSpareAreaInformation");
+
+ b.Property("CanReportDriveSerial");
+
+ b.Property("CanReportMediaSerial");
+
+ b.Property("CanTestWriteDDCDR");
+
+ b.Property("CanTestWriteDVD");
+
+ b.Property("CanTestWriteInSAO");
+
+ b.Property("CanTestWriteInTAO");
+
+ b.Property("CanUpgradeFirmware");
+
+ b.Property("CanWriteBD");
+
+ b.Property("CanWriteBDR");
+
+ b.Property("CanWriteBDRE1");
+
+ b.Property("CanWriteBDRE2");
+
+ b.Property("CanWriteBusEncryptedBlocks");
+
+ b.Property("CanWriteCDMRW");
+
+ b.Property("CanWriteCDRW");
+
+ b.Property("CanWriteCDRWCAV");
+
+ b.Property("CanWriteCDSAO");
+
+ b.Property("CanWriteCDTAO");
+
+ b.Property("CanWriteCSSManagedDVD");
+
+ b.Property("CanWriteDDCDR");
+
+ b.Property("CanWriteDDCDRW");
+
+ b.Property("CanWriteDVDPlusMRW");
+
+ b.Property("CanWriteDVDPlusR");
+
+ b.Property("CanWriteDVDPlusRDL");
+
+ b.Property("CanWriteDVDPlusRW");
+
+ b.Property("CanWriteDVDPlusRWDL");
+
+ b.Property("CanWriteDVDR");
+
+ b.Property("CanWriteDVDRDL");
+
+ b.Property("CanWriteDVDRW");
+
+ b.Property("CanWriteHDDVDR");
+
+ b.Property("CanWriteHDDVDRAM");
+
+ b.Property("CanWriteOldBDR");
+
+ b.Property("CanWriteOldBDRE");
+
+ b.Property("CanWritePackedSubchannelInTAO");
+
+ b.Property("CanWriteRWSubchannelInSAO");
+
+ b.Property("CanWriteRWSubchannelInTAO");
+
+ b.Property("CanWriteRaw");
+
+ b.Property("CanWriteRawMultiSession");
+
+ b.Property("CanWriteRawSubchannelInTAO");
+
+ b.Property("ChangerIsSideChangeCapable");
+
+ b.Property("ChangerSlots");
+
+ b.Property("ChangerSupportsDiscPresent");
+
+ b.Property("DBML");
+
+ b.Property("DVDMultiRead");
+
+ b.Property("EmbeddedChanger");
+
+ b.Property("ErrorRecoveryPage");
+
+ b.Property("FirmwareDate");
+
+ b.Property("LoadingMechanismType");
+
+ b.Property("Locked");
+
+ b.Property("LogicalBlockSize");
+
+ b.Property("LogicalBlockSizeSql");
+
+ b.Property("MultiRead");
+
+ b.Property("PhysicalInterfaceStandardNumber");
+
+ b.Property("PhysicalInterfaceStandardNumberSql");
+
+ b.Property("PreventJumper");
+
+ b.Property("SupportsAACS");
+
+ b.Property("SupportsBusEncryption");
+
+ b.Property("SupportsC2");
+
+ b.Property("SupportsCPRM");
+
+ b.Property("SupportsCSS");
+
+ b.Property("SupportsDAP");
+
+ b.Property("SupportsDeviceBusyEvent");
+
+ b.Property("SupportsHybridDiscs");
+
+ b.Property("SupportsModePage1Ch");
+
+ b.Property("SupportsOSSC");
+
+ b.Property("SupportsPWP");
+
+ b.Property("SupportsSWPP");
+
+ b.Property("SupportsSecurDisc");
+
+ b.Property("SupportsSeparateVolume");
+
+ b.Property("SupportsVCPS");
+
+ b.Property("SupportsWriteInhibitDCB");
+
+ b.Property("SupportsWriteProtectPAC");
+
+ b.Property("VolumeLevels");
+
+ b.Property("VolumeLevelsSql");
+
+ b.HasKey("Id");
+
+ b.ToTable("MmcFeatures");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcSd", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("CID");
+
+ b.Property("CSD");
+
+ b.Property("ExtendedCSD");
+
+ b.Property("OCR");
+
+ b.Property("SCR");
+
+ b.HasKey("Id");
+
+ b.ToTable("MmcSd");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Pcmcia", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("CIS");
+
+ b.Property("CardCode");
+
+ b.Property("CardCodeSql");
+
+ b.Property("Compliance");
+
+ b.Property("Manufacturer");
+
+ b.Property("ManufacturerCode");
+
+ b.Property("ManufacturerCodeSql");
+
+ b.Property("ProductName");
+
+ b.HasKey("Id");
+
+ b.ToTable("Pcmcia");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("InquiryData");
+
+ b.Property("ModeSense10Data");
+
+ b.Property("ModeSense6Data");
+
+ b.Property("ModeSenseId");
+
+ b.Property("MultiMediaDeviceId");
+
+ b.Property("ReadCapabilitiesId");
+
+ b.Property("SequentialDeviceId");
+
+ b.Property("SupportsModeSense10");
+
+ b.Property("SupportsModeSense6");
+
+ b.Property("SupportsModeSubpages");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ModeSenseId");
+
+ b.HasIndex("MultiMediaDeviceId");
+
+ b.HasIndex("ReadCapabilitiesId");
+
+ b.HasIndex("SequentialDeviceId");
+
+ b.ToTable("Scsi");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiMode", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BlankCheckEnabled");
+
+ b.Property("BufferedMode");
+
+ b.Property("DPOandFUA");
+
+ b.Property("MediumType");
+
+ b.Property("Speed");
+
+ b.Property("WriteProtected");
+
+ b.HasKey("Id");
+
+ b.ToTable("ScsiMode");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ScsiId");
+
+ b.Property("ScsiModeId");
+
+ b.Property("page");
+
+ b.Property("subpage");
+
+ b.Property("value");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ScsiId");
+
+ b.HasIndex("ScsiModeId");
+
+ b.ToTable("ScsiPage");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ssc", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BlockSizeGranularity");
+
+ b.Property("MaxBlockLength");
+
+ b.Property("MaxBlockLengthSql");
+
+ b.Property("MinBlockLength");
+
+ b.Property("MinBlockLengthSql");
+
+ b.HasKey("Id");
+
+ b.ToTable("Ssc");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Description");
+
+ b.Property("Length");
+
+ b.Property("LengthSql");
+
+ b.Property("MediumType");
+
+ b.Property("Name");
+
+ b.Property("Organization");
+
+ b.Property("SscId");
+
+ b.Property("TestedSequentialMediaId");
+
+ b.Property("Width");
+
+ b.Property("WidthSql");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SscId");
+
+ b.HasIndex("TestedSequentialMediaId");
+
+ b.ToTable("SscSupportedMedia");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BitsPerMm");
+
+ b.Property("BitsPerMmSql");
+
+ b.Property("Capacity");
+
+ b.Property("CapacitySql");
+
+ b.Property("DefaultDensity");
+
+ b.Property("Description");
+
+ b.Property("Duplicate");
+
+ b.Property("Name");
+
+ b.Property("Organization");
+
+ b.Property("PrimaryCode");
+
+ b.Property("SecondaryCode");
+
+ b.Property("SscId");
+
+ b.Property("TestedSequentialMediaId");
+
+ b.Property("Tracks");
+
+ b.Property("TracksSql");
+
+ b.Property("Width");
+
+ b.Property("WidthSql");
+
+ b.Property("Writable");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SscId");
+
+ b.HasIndex("TestedSequentialMediaId");
+
+ b.ToTable("SupportedDensity");
+ });
+
+ modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AdipData");
+
+ b.Property("AtaId");
+
+ b.Property("AtipData");
+
+ b.Property("BlockSize");
+
+ b.Property("BlockSizeSql");
+
+ b.Property("Blocks");
+
+ b.Property("BlocksSql");
+
+ b.Property("BluBcaData");
+
+ b.Property("BluDdsData");
+
+ b.Property("BluDiData");
+
+ b.Property("BluPacData");
+
+ b.Property("BluSaiData");
+
+ b.Property("C2PointersData");
+
+ b.Property("CHSId");
+
+ b.Property("CanReadAACS");
+
+ b.Property("CanReadADIP");
+
+ b.Property("CanReadATIP");
+
+ b.Property("CanReadBCA");
+
+ b.Property