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("CanReadC2Pointers"); + + b.Property("CanReadCMI"); + + b.Property("CanReadCorrectedSubchannel"); + + b.Property("CanReadCorrectedSubchannelWithC2"); + + b.Property("CanReadDCB"); + + b.Property("CanReadDDS"); + + b.Property("CanReadDMI"); + + b.Property("CanReadDiscInformation"); + + b.Property("CanReadFirstTrackPreGap"); + + b.Property("CanReadFullTOC"); + + b.Property("CanReadHDCMI"); + + b.Property("CanReadLayerCapacity"); + + b.Property("CanReadLeadIn"); + + b.Property("CanReadLeadOut"); + + b.Property("CanReadMediaID"); + + b.Property("CanReadMediaSerial"); + + b.Property("CanReadPAC"); + + b.Property("CanReadPFI"); + + b.Property("CanReadPMA"); + + b.Property("CanReadPQSubchannel"); + + b.Property("CanReadPQSubchannelWithC2"); + + b.Property("CanReadPRI"); + + b.Property("CanReadRWSubchannel"); + + b.Property("CanReadRWSubchannelWithC2"); + + b.Property("CanReadRecordablePFI"); + + b.Property("CanReadSpareAreaInformation"); + + b.Property("CanReadTOC"); + + b.Property("CmiData"); + + b.Property("CorrectedSubchannelData"); + + b.Property("CorrectedSubchannelWithC2Data"); + + b.Property("CurrentCHSId"); + + b.Property("DcbData"); + + b.Property("Density"); + + b.Property("DmiData"); + + b.Property("DvdAacsData"); + + b.Property("DvdBcaData"); + + b.Property("DvdDdsData"); + + b.Property("DvdLayerData"); + + b.Property("DvdSaiData"); + + b.Property("EmbossedPfiData"); + + b.Property("FullTocData"); + + b.Property("HLDTSTReadRawDVDData"); + + b.Property("HdCmiData"); + + b.Property("IdentifyData"); + + b.Property("LBA48Sectors"); + + b.Property("LBA48SectorsSql"); + + b.Property("LBASectors"); + + b.Property("LBASectorsSql"); + + b.Property("LeadInData"); + + b.Property("LeadOutData"); + + b.Property("LogicalAlignment"); + + b.Property("LogicalAlignmentSql"); + + b.Property("LongBlockSize"); + + b.Property("LongBlockSizeSql"); + + b.Property("Manufacturer"); + + b.Property("MediaIsRecognized"); + + b.Property("MediumType"); + + b.Property("MediumTypeName"); + + b.Property("MmcId"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("Model"); + + b.Property("NecReadCddaData"); + + b.Property("NominalRotationRate"); + + b.Property("NominalRotationRateSql"); + + b.Property("PQSubchannelData"); + + b.Property("PQSubchannelWithC2Data"); + + b.Property("PfiData"); + + b.Property("PhysicalBlockSize"); + + b.Property("PhysicalBlockSizeSql"); + + b.Property("PioneerReadCddaData"); + + b.Property("PioneerReadCddaMsfData"); + + b.Property("PlextorReadCddaData"); + + b.Property("PlextorReadRawDVDData"); + + b.Property("PmaData"); + + b.Property("PriData"); + + b.Property("RWSubchannelData"); + + b.Property("RWSubchannelWithC2Data"); + + b.Property("Read10Data"); + + b.Property("Read12Data"); + + b.Property("Read16Data"); + + b.Property("Read6Data"); + + b.Property("ReadCdData"); + + b.Property("ReadCdFullData"); + + b.Property("ReadCdMsfData"); + + b.Property("ReadCdMsfFullData"); + + b.Property("ReadDmaData"); + + b.Property("ReadDmaLba48Data"); + + b.Property("ReadDmaLbaData"); + + b.Property("ReadDmaRetryData"); + + b.Property("ReadDmaRetryLbaData"); + + b.Property("ReadLba48Data"); + + b.Property("ReadLbaData"); + + b.Property("ReadLong10Data"); + + b.Property("ReadLong16Data"); + + b.Property("ReadLongData"); + + b.Property("ReadLongLbaData"); + + b.Property("ReadLongRetryData"); + + b.Property("ReadLongRetryLbaData"); + + b.Property("ReadRetryLbaData"); + + b.Property("ReadSectorsData"); + + b.Property("ReadSectorsRetryData"); + + b.Property("ScsiId"); + + b.Property("SolidStateDevice"); + + b.Property("SupportsHLDTSTReadRawDVD"); + + b.Property("SupportsNECReadCDDA"); + + b.Property("SupportsPioneerReadCDDA"); + + b.Property("SupportsPioneerReadCDDAMSF"); + + b.Property("SupportsPlextorReadCDDA"); + + b.Property("SupportsPlextorReadRawDVD"); + + b.Property("SupportsRead10"); + + b.Property("SupportsRead12"); + + b.Property("SupportsRead16"); + + b.Property("SupportsRead6"); + + b.Property("SupportsReadCapacity"); + + b.Property("SupportsReadCapacity16"); + + b.Property("SupportsReadCd"); + + b.Property("SupportsReadCdMsf"); + + b.Property("SupportsReadCdMsfRaw"); + + b.Property("SupportsReadCdRaw"); + + b.Property("SupportsReadDma"); + + b.Property("SupportsReadDmaLba"); + + b.Property("SupportsReadDmaLba48"); + + b.Property("SupportsReadDmaRetry"); + + b.Property("SupportsReadDmaRetryLba"); + + b.Property("SupportsReadLba"); + + b.Property("SupportsReadLba48"); + + b.Property("SupportsReadLong"); + + b.Property("SupportsReadLong16"); + + b.Property("SupportsReadLongLba"); + + b.Property("SupportsReadLongRetry"); + + b.Property("SupportsReadLongRetryLba"); + + b.Property("SupportsReadRetry"); + + b.Property("SupportsReadRetryLba"); + + b.Property("SupportsReadSectors"); + + b.Property("SupportsSeek"); + + b.Property("SupportsSeekLba"); + + b.Property("TocData"); + + b.Property("Track1PregapData"); + + b.Property("UnformattedBPS"); + + b.Property("UnformattedBPSSql"); + + b.Property("UnformattedBPT"); + + b.Property("UnformattedBPTSql"); + + b.HasKey("Id"); + + b.HasIndex("AtaId"); + + b.HasIndex("CHSId"); + + b.HasIndex("CurrentCHSId"); + + b.HasIndex("MmcId"); + + b.HasIndex("ScsiId"); + + b.ToTable("TestedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CanReadMediaSerial"); + + b.Property("Density"); + + b.Property("Manufacturer"); + + b.Property("MediaIsRecognized"); + + b.Property("MediumType"); + + b.Property("MediumTypeName"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("Model"); + + b.Property("SscId"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.ToTable("TestedSequentialMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Usb", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Descriptors"); + + 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("Usb"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.CdOffset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddedWhen"); + + b.Property("Agreement"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("ModifiedWhen"); + + b.Property("Offset"); + + b.Property("Submissions"); + + b.HasKey("Id"); + + b.ToTable("CdOffsets"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Command", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Commands"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ATAId"); + + b.Property("ATAPIId"); + + b.Property("CompactFlash"); + + b.Property("FireWireId"); + + b.Property("LastSynchronized"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("MultiMediaCardId"); + + b.Property("PCMCIAId"); + + b.Property("Revision"); + + b.Property("SCSIId"); + + b.Property("SecureDigitalId"); + + b.Property("Type"); + + b.Property("USBId"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.DeviceStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Bus"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("Revision"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("SeenDevices"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Filesystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Filesystems"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Filters"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Media", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Real"); + + b.Property("Synchronized"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.ToTable("Medias"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.MediaFormat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("MediaFormats"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.OperatingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.Property("Version"); + + b.HasKey("Id"); + + b.ToTable("OperatingSystems"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Partition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Partitions"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ATAId"); + + b.Property("ATAPIId"); + + b.Property("CompactFlash"); + + b.Property("Created"); + + b.Property("FireWireId"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("MultiMediaCardId"); + + b.Property("PCMCIAId"); + + b.Property("Revision"); + + b.Property("SCSIId"); + + b.Property("SecureDigitalId"); + + b.Property("Type"); + + b.Property("USBId"); + + b.Property("Uploaded"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Reports"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.UsbProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddedWhen"); + + b.Property("ModifiedWhen"); + + b.Property("Product"); + + b.Property("ProductId"); + + b.Property("VendorId"); + + b.HasKey("Id"); + + b.HasIndex("VendorId"); + + b.ToTable("UsbProducts"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.UsbVendor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AddedWhen"); + + b.Property("ModifiedWhen"); + + b.Property("Vendor"); + + b.HasKey("Id"); + + b.ToTable("UsbVendors"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Version", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Synchronized"); + + b.Property("Value"); + + b.HasKey("Id"); + + b.ToTable("Versions"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode") + .WithMany("BlockDescriptors") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia") + .WithMany("DensityCodes") + .HasForeignKey("SscSupportedMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") + .WithMany() + .HasForeignKey("FeaturesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", "ModeSense") + .WithMany() + .HasForeignKey("ModeSenseId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", "MultiMediaDevice") + .WithMany() + .HasForeignKey("MultiMediaDeviceId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") + .WithMany() + .HasForeignKey("SequentialDeviceId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi") + .WithMany("EVPDPages") + .HasForeignKey("ScsiId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode") + .WithMany("ModePages") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("SupportedMediaTypes") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia") + .WithMany("SupportedMediaTypes") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("SupportedDensities") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia") + .WithMany("SupportedDensities") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata") + .WithMany("RemovableMedias") + .HasForeignKey("AtaId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CHS") + .WithMany() + .HasForeignKey("CHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CurrentCHS") + .WithMany() + .HasForeignKey("CurrentCHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc") + .WithMany("TestedMedia") + .HasForeignKey("MmcId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi") + .WithMany("RemovableMedias") + .HasForeignKey("ScsiId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("TestedMedia") + .HasForeignKey("SscId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Device", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Report", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.UsbProduct", b => + { + b.HasOne("DiscImageChef.Database.Models.UsbVendor", "Vendor") + .WithMany("Products") + .HasForeignKey("VendorId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DiscImageChef.Database/Migrations/20181225214500_StoreReadResultsInReportDatabase.cs b/DiscImageChef.Database/Migrations/20181225214500_StoreReadResultsInReportDatabase.cs new file mode 100644 index 000000000..3201bf7a3 --- /dev/null +++ b/DiscImageChef.Database/Migrations/20181225214500_StoreReadResultsInReportDatabase.cs @@ -0,0 +1,261 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace DiscImageChef.Database.Migrations +{ + public partial class StoreReadResultsInReportDatabase : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn("AdipData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("AtipData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BluBcaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BluDdsData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BluDiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BluPacData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BluSaiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("C2PointersData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("CmiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("CorrectedSubchannelData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("CorrectedSubchannelWithC2Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DcbData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DmiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DvdAacsData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DvdBcaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DvdDdsData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DvdLayerData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("DvdSaiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("EmbossedPfiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("FullTocData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("HLDTSTReadRawDVDData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("HdCmiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("LeadInData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("LeadOutData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("NecReadCddaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PQSubchannelData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PQSubchannelWithC2Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PfiData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PioneerReadCddaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PioneerReadCddaMsfData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PlextorReadCddaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PlextorReadRawDVDData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PmaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PriData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("RWSubchannelData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("RWSubchannelWithC2Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("Read10Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("Read12Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("Read16Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("Read6Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadCdData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadCdFullData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadCdMsfData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadCdMsfFullData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadDmaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadDmaLba48Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadDmaLbaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadDmaRetryData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadDmaRetryLbaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLba48Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLbaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLong10Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLong16Data", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLongData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLongLbaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLongRetryData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadLongRetryLbaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadRetryLbaData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadSectorsData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("ReadSectorsRetryData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("TocData", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("Track1PregapData", "TestedMedia", nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn("AdipData", "TestedMedia"); + + migrationBuilder.DropColumn("AtipData", "TestedMedia"); + + migrationBuilder.DropColumn("BluBcaData", "TestedMedia"); + + migrationBuilder.DropColumn("BluDdsData", "TestedMedia"); + + migrationBuilder.DropColumn("BluDiData", "TestedMedia"); + + migrationBuilder.DropColumn("BluPacData", "TestedMedia"); + + migrationBuilder.DropColumn("BluSaiData", "TestedMedia"); + + migrationBuilder.DropColumn("C2PointersData", "TestedMedia"); + + migrationBuilder.DropColumn("CmiData", "TestedMedia"); + + migrationBuilder.DropColumn("CorrectedSubchannelData", "TestedMedia"); + + migrationBuilder.DropColumn("CorrectedSubchannelWithC2Data", "TestedMedia"); + + migrationBuilder.DropColumn("DcbData", "TestedMedia"); + + migrationBuilder.DropColumn("DmiData", "TestedMedia"); + + migrationBuilder.DropColumn("DvdAacsData", "TestedMedia"); + + migrationBuilder.DropColumn("DvdBcaData", "TestedMedia"); + + migrationBuilder.DropColumn("DvdDdsData", "TestedMedia"); + + migrationBuilder.DropColumn("DvdLayerData", "TestedMedia"); + + migrationBuilder.DropColumn("DvdSaiData", "TestedMedia"); + + migrationBuilder.DropColumn("EmbossedPfiData", "TestedMedia"); + + migrationBuilder.DropColumn("FullTocData", "TestedMedia"); + + migrationBuilder.DropColumn("HLDTSTReadRawDVDData", "TestedMedia"); + + migrationBuilder.DropColumn("HdCmiData", "TestedMedia"); + + migrationBuilder.DropColumn("LeadInData", "TestedMedia"); + + migrationBuilder.DropColumn("LeadOutData", "TestedMedia"); + + migrationBuilder.DropColumn("NecReadCddaData", "TestedMedia"); + + migrationBuilder.DropColumn("PQSubchannelData", "TestedMedia"); + + migrationBuilder.DropColumn("PQSubchannelWithC2Data", "TestedMedia"); + + migrationBuilder.DropColumn("PfiData", "TestedMedia"); + + migrationBuilder.DropColumn("PioneerReadCddaData", "TestedMedia"); + + migrationBuilder.DropColumn("PioneerReadCddaMsfData", "TestedMedia"); + + migrationBuilder.DropColumn("PlextorReadCddaData", "TestedMedia"); + + migrationBuilder.DropColumn("PlextorReadRawDVDData", "TestedMedia"); + + migrationBuilder.DropColumn("PmaData", "TestedMedia"); + + migrationBuilder.DropColumn("PriData", "TestedMedia"); + + migrationBuilder.DropColumn("RWSubchannelData", "TestedMedia"); + + migrationBuilder.DropColumn("RWSubchannelWithC2Data", "TestedMedia"); + + migrationBuilder.DropColumn("Read10Data", "TestedMedia"); + + migrationBuilder.DropColumn("Read12Data", "TestedMedia"); + + migrationBuilder.DropColumn("Read16Data", "TestedMedia"); + + migrationBuilder.DropColumn("Read6Data", "TestedMedia"); + + migrationBuilder.DropColumn("ReadCdData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadCdFullData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadCdMsfData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadCdMsfFullData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadDmaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadDmaLba48Data", "TestedMedia"); + + migrationBuilder.DropColumn("ReadDmaLbaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadDmaRetryData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadDmaRetryLbaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLba48Data", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLbaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLong10Data", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLong16Data", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLongData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLongLbaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLongRetryData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadLongRetryLbaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadRetryLbaData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadSectorsData", "TestedMedia"); + + migrationBuilder.DropColumn("ReadSectorsRetryData", "TestedMedia"); + + migrationBuilder.DropColumn("TocData", "TestedMedia"); + + migrationBuilder.DropColumn("Track1PregapData", "TestedMedia"); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs b/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs index 8042dbf53..d24ec8a5f 100644 --- a/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs +++ b/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs @@ -619,8 +619,12 @@ namespace DiscImageChef.Database.Migrations { b.Property("Id").ValueGeneratedOnAdd(); + b.Property("AdipData"); + b.Property("AtaId"); + b.Property("AtipData"); + b.Property("BlockSize"); b.Property("BlockSizeSql"); @@ -629,6 +633,18 @@ namespace DiscImageChef.Database.Migrations 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"); @@ -693,10 +709,38 @@ namespace DiscImageChef.Database.Migrations b.Property("CanReadTOC"); + b.Property("CmiData"); + + b.Property("CorrectedSubchannelData"); + + b.Property("CorrectedSubchannelWithC2Data"); + b.Property("CurrentCHSId"); + b.Property("DcbData"); + b.Property("Density"); + b.Property("DmiData"); + + b.Property("DvdAacsData"); + + b.Property("DvdBcaData"); + + b.Property("DvdDdsData"); + + b.Property("DvdLayerData"); + + b.Property("DvdSaiData"); + + b.Property("EmbossedPfiData"); + + b.Property("FullTocData"); + + b.Property("HLDTSTReadRawDVDData"); + + b.Property("HdCmiData"); + b.Property("IdentifyData"); b.Property("LBA48Sectors"); @@ -707,6 +751,10 @@ namespace DiscImageChef.Database.Migrations b.Property("LBASectorsSql"); + b.Property("LeadInData"); + + b.Property("LeadOutData"); + b.Property("LogicalAlignment"); b.Property("LogicalAlignmentSql"); @@ -731,14 +779,86 @@ namespace DiscImageChef.Database.Migrations b.Property("Model"); + b.Property("NecReadCddaData"); + b.Property("NominalRotationRate"); b.Property("NominalRotationRateSql"); + b.Property("PQSubchannelData"); + + b.Property("PQSubchannelWithC2Data"); + + b.Property("PfiData"); + b.Property("PhysicalBlockSize"); b.Property("PhysicalBlockSizeSql"); + b.Property("PioneerReadCddaData"); + + b.Property("PioneerReadCddaMsfData"); + + b.Property("PlextorReadCddaData"); + + b.Property("PlextorReadRawDVDData"); + + b.Property("PmaData"); + + b.Property("PriData"); + + b.Property("RWSubchannelData"); + + b.Property("RWSubchannelWithC2Data"); + + b.Property("Read10Data"); + + b.Property("Read12Data"); + + b.Property("Read16Data"); + + b.Property("Read6Data"); + + b.Property("ReadCdData"); + + b.Property("ReadCdFullData"); + + b.Property("ReadCdMsfData"); + + b.Property("ReadCdMsfFullData"); + + b.Property("ReadDmaData"); + + b.Property("ReadDmaLba48Data"); + + b.Property("ReadDmaLbaData"); + + b.Property("ReadDmaRetryData"); + + b.Property("ReadDmaRetryLbaData"); + + b.Property("ReadLba48Data"); + + b.Property("ReadLbaData"); + + b.Property("ReadLong10Data"); + + b.Property("ReadLong16Data"); + + b.Property("ReadLongData"); + + b.Property("ReadLongLbaData"); + + b.Property("ReadLongRetryData"); + + b.Property("ReadLongRetryLbaData"); + + b.Property("ReadRetryLbaData"); + + b.Property("ReadSectorsData"); + + b.Property("ReadSectorsRetryData"); + b.Property("ScsiId"); b.Property("SolidStateDevice"); @@ -809,6 +929,10 @@ namespace DiscImageChef.Database.Migrations b.Property("SupportsSeekLba"); + b.Property("TocData"); + + b.Property("Track1PregapData"); + b.Property("UnformattedBPS"); b.Property("UnformattedBPSSql"); diff --git a/DiscImageChef.Server/DiscImageChef.Server.csproj b/DiscImageChef.Server/DiscImageChef.Server.csproj index 972df27bd..8dd3abebb 100644 --- a/DiscImageChef.Server/DiscImageChef.Server.csproj +++ b/DiscImageChef.Server/DiscImageChef.Server.csproj @@ -233,6 +233,10 @@ 201812251556377_StoreMmcGetConfigurationResponse.cs + + + 201812252219066_StoreReadResultsInReportDatabase.cs + @@ -346,6 +350,9 @@ 201812251556377_StoreMmcGetConfigurationResponse.cs + + 201812252219066_StoreReadResultsInReportDatabase.cs + 10.0 diff --git a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs new file mode 100644 index 000000000..c732f1dac --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs @@ -0,0 +1,29 @@ +// +namespace DiscImageChef.Server.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class StoreReadResultsInReportDatabase : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(StoreReadResultsInReportDatabase)); + + string IMigrationMetadata.Id + { + get { return "201812252219066_StoreReadResultsInReportDatabase"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs new file mode 100644 index 000000000..c4bd2e51e --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs @@ -0,0 +1,127 @@ +using System.Data.Entity.Migrations; + +namespace DiscImageChef.Server.Migrations +{ + public partial class StoreReadResultsInReportDatabase : DbMigration + { + public override void Up() + { + AddColumn("dbo.TestedMedias", "Read6Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "Read10Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "Read12Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "Read16Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLong10Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLong16Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadSectorsData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadSectorsRetryData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadDmaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadDmaRetryData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLbaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadRetryLbaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadDmaLbaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadDmaRetryLbaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLba48Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadDmaLba48Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLongData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLongRetryData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLongLbaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadLongRetryLbaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "TocData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "FullTocData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "AtipData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "PmaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "PfiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DmiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "CmiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DvdBcaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DvdAacsData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DvdDdsData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DvdSaiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "BluBcaData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "BluDdsData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "BluSaiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "PriData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "EmbossedPfiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "AdipData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DcbData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "HdCmiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "DvdLayerData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "BluDiData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "BluPacData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadCdData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadCdMsfData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadCdFullData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "ReadCdMsfFullData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "Track1PregapData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "LeadInData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "LeadOutData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "C2PointersData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "PQSubchannelData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "RWSubchannelData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "CorrectedSubchannelData", c => c.Binary()); + AddColumn("dbo.TestedMedias", "PQSubchannelWithC2Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "RWSubchannelWithC2Data", c => c.Binary()); + AddColumn("dbo.TestedMedias", "CorrectedSubchannelWithC2Data", c => c.Binary()); + } + + public override void Down() + { + DropColumn("dbo.TestedMedias", "CorrectedSubchannelWithC2Data"); + DropColumn("dbo.TestedMedias", "RWSubchannelWithC2Data"); + DropColumn("dbo.TestedMedias", "PQSubchannelWithC2Data"); + DropColumn("dbo.TestedMedias", "CorrectedSubchannelData"); + DropColumn("dbo.TestedMedias", "RWSubchannelData"); + DropColumn("dbo.TestedMedias", "PQSubchannelData"); + DropColumn("dbo.TestedMedias", "C2PointersData"); + DropColumn("dbo.TestedMedias", "LeadOutData"); + DropColumn("dbo.TestedMedias", "LeadInData"); + DropColumn("dbo.TestedMedias", "Track1PregapData"); + DropColumn("dbo.TestedMedias", "ReadCdMsfFullData"); + DropColumn("dbo.TestedMedias", "ReadCdFullData"); + DropColumn("dbo.TestedMedias", "ReadCdMsfData"); + DropColumn("dbo.TestedMedias", "ReadCdData"); + DropColumn("dbo.TestedMedias", "BluPacData"); + DropColumn("dbo.TestedMedias", "BluDiData"); + DropColumn("dbo.TestedMedias", "DvdLayerData"); + DropColumn("dbo.TestedMedias", "HdCmiData"); + DropColumn("dbo.TestedMedias", "DcbData"); + DropColumn("dbo.TestedMedias", "AdipData"); + DropColumn("dbo.TestedMedias", "EmbossedPfiData"); + DropColumn("dbo.TestedMedias", "PriData"); + DropColumn("dbo.TestedMedias", "BluSaiData"); + DropColumn("dbo.TestedMedias", "BluDdsData"); + DropColumn("dbo.TestedMedias", "BluBcaData"); + DropColumn("dbo.TestedMedias", "DvdSaiData"); + DropColumn("dbo.TestedMedias", "DvdDdsData"); + DropColumn("dbo.TestedMedias", "DvdAacsData"); + DropColumn("dbo.TestedMedias", "DvdBcaData"); + DropColumn("dbo.TestedMedias", "CmiData"); + DropColumn("dbo.TestedMedias", "DmiData"); + DropColumn("dbo.TestedMedias", "PfiData"); + DropColumn("dbo.TestedMedias", "PmaData"); + DropColumn("dbo.TestedMedias", "AtipData"); + DropColumn("dbo.TestedMedias", "FullTocData"); + DropColumn("dbo.TestedMedias", "TocData"); + DropColumn("dbo.TestedMedias", "ReadLongRetryLbaData"); + DropColumn("dbo.TestedMedias", "ReadLongLbaData"); + DropColumn("dbo.TestedMedias", "ReadLongRetryData"); + DropColumn("dbo.TestedMedias", "ReadLongData"); + DropColumn("dbo.TestedMedias", "ReadDmaLba48Data"); + DropColumn("dbo.TestedMedias", "ReadLba48Data"); + DropColumn("dbo.TestedMedias", "ReadDmaRetryLbaData"); + DropColumn("dbo.TestedMedias", "ReadDmaLbaData"); + DropColumn("dbo.TestedMedias", "ReadRetryLbaData"); + DropColumn("dbo.TestedMedias", "ReadLbaData"); + DropColumn("dbo.TestedMedias", "ReadDmaRetryData"); + DropColumn("dbo.TestedMedias", "ReadDmaData"); + DropColumn("dbo.TestedMedias", "ReadSectorsRetryData"); + DropColumn("dbo.TestedMedias", "ReadSectorsData"); + DropColumn("dbo.TestedMedias", "ReadLong16Data"); + DropColumn("dbo.TestedMedias", "ReadLong10Data"); + DropColumn("dbo.TestedMedias", "Read16Data"); + DropColumn("dbo.TestedMedias", "Read12Data"); + DropColumn("dbo.TestedMedias", "Read10Data"); + DropColumn("dbo.TestedMedias", "Read6Data"); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx new file mode 100644 index 000000000..2eda7a215 --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/DiscImageChef/Commands/DeviceReport.cs b/DiscImageChef/Commands/DeviceReport.cs index 9372c9341..cf05e9649 100644 --- a/DiscImageChef/Commands/DeviceReport.cs +++ b/DiscImageChef/Commands/DeviceReport.cs @@ -605,14 +605,7 @@ namespace DiscImageChef.Commands dev.Timeout, out _); if(!sense) { - if(options.Debug) - { - FileStream bingo = - new FileStream($"{mediaType}_readlong.bin", - FileMode.Create); - bingo.Write(buffer, 0, buffer.Length); - bingo.Close(); - } + if(options.Debug) mediaTest.ReadLong10Data = buffer; mediaTest.LongBlockSize = i; break; @@ -630,11 +623,10 @@ namespace DiscImageChef.Commands { sense = dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, (ushort)mediaTest.LongBlockSize, dev.Timeout, out _); - if(!sense) - DataFile.WriteTo("SCSI Report", "readlong10", - "_debug_" + dev.Model + "_" + mediaType + ".bin", - "read results", buffer); + if(!sense) mediaTest.ReadLong10Data = buffer; } + + // TODO: READ LONG (16) } mediaTest.MediumTypeName = mediaType; @@ -848,10 +840,7 @@ namespace DiscImageChef.Commands { sense = dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, (ushort)mediaTest.LongBlockSize, dev.Timeout, out _); - if(!sense) - DataFile.WriteTo("SCSI Report", "readlong10", - "_debug_" + mediaTest.MediumTypeName + ".bin", - "read results", buffer); + if(!sense) mediaTest.ReadLong10Data = buffer; } } @@ -891,13 +880,7 @@ namespace DiscImageChef.Commands dev.Timeout, out _); if(!sense) { - if(options.Debug) - { - FileStream bingo = - new FileStream($"{dev.Model}_readlong.bin", FileMode.Create); - bingo.Write(buffer, 0, buffer.Length); - bingo.Close(); - } + if(options.Debug) report.SCSI.ReadCapabilities.ReadLong10Data = buffer; report.SCSI.ReadCapabilities.LongBlockSize = i; break; @@ -917,9 +900,7 @@ namespace DiscImageChef.Commands sense = dev.ReadLong10(out buffer, out senseBuffer, false, false, 0, (ushort)report.SCSI.ReadCapabilities.LongBlockSize, dev.Timeout, out _); - if(!sense) - DataFile.WriteTo("SCSI Report", "readlong10", "_debug_" + dev.Model + ".bin", - "read results", buffer); + if(!sense) report.SCSI.ReadCapabilities.ReadLong10Data = buffer; } }