diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..585e7fdd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +[*] +charset=utf-8 +end_of_line=lf +trim_trailing_whitespace=true +insert_final_newline=false +indent_style=space +indent_size=4 + +[{.babelrc,.stylelintrc,.eslintrc,jest.config,*.uplugin,*.bowerrc,*.jsb3,*.jsb2,*.json}] +indent_style=space +indent_size=2 + +[{*.yml,*.yaml}] +indent_style=space +indent_size=2 + diff --git a/DiscImageChef.Server/App_Start/Ata.cs b/DiscImageChef.Server/App_Start/Ata.cs index fb793c88..d7072079 100644 --- a/DiscImageChef.Server/App_Start/Ata.cs +++ b/DiscImageChef.Server/App_Start/Ata.cs @@ -51,36 +51,36 @@ namespace DiscImageChef.Server /// List to put key=value pairs on /// List of tested media public static void Report(CommonTypes.Metadata.Ata ataReport, bool cfa, bool atapi, - ref bool removable, - ref List ataOneValue, ref Dictionary ataTwoValue, - ref List testedMedia) + ref bool removable, + ref List ataOneValue, ref Dictionary ataTwoValue, + ref List testedMedia) { uint logicalsectorsize = 0; - Identify.IdentifyDevice? ataIdentifyNullable = Identify.Decode(ataReport.Identify); - if(!ataIdentifyNullable.HasValue) return; + var ataIdentifyNullable = Identify.Decode(ataReport.Identify); + if (!ataIdentifyNullable.HasValue) return; - Identify.IdentifyDevice ataIdentify = ataIdentifyNullable.Value; + var ataIdentify = ataIdentifyNullable.Value; - if(!string.IsNullOrEmpty(ataIdentify.Model)) ataTwoValue.Add("Model", ataIdentify.Model); - if(!string.IsNullOrEmpty(ataIdentify.FirmwareRevision)) + if (!string.IsNullOrEmpty(ataIdentify.Model)) ataTwoValue.Add("Model", ataIdentify.Model); + if (!string.IsNullOrEmpty(ataIdentify.FirmwareRevision)) ataTwoValue.Add("Firmware revision", ataIdentify.FirmwareRevision); - if(!string.IsNullOrEmpty(ataIdentify.AdditionalPID)) + if (!string.IsNullOrEmpty(ataIdentify.AdditionalPID)) ataTwoValue.Add("Additional product ID", ataIdentify.AdditionalPID); bool ata1 = false, - ata2 = false, - ata3 = false, - ata4 = false, - ata5 = false, - ata6 = false, - ata7 = false, - acs = false, - acs2 = false, - acs3 = false, - acs4 = false; + ata2 = false, + ata3 = false, + ata4 = false, + ata5 = false, + ata6 = false, + ata7 = false, + acs = false, + acs2 = false, + acs3 = false, + acs4 = false; - if((ushort)ataIdentify.MajorVersion == 0x0000 || (ushort)ataIdentify.MajorVersion == 0xFFFF) + if ((ushort) ataIdentify.MajorVersion == 0x0000 || (ushort) ataIdentify.MajorVersion == 0xFFFF) { // Obsolete in ATA-2, if present, device supports ATA-1 ata1 |= ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FastIDE) || @@ -91,13 +91,13 @@ namespace DiscImageChef.Server ataIdentify.ExtendedIdentify.HasFlag(Identify.ExtendedIdentifyBit.Words64to70Valid) || ataIdentify.ExtendedIdentify.HasFlag(Identify.ExtendedIdentifyBit.Word88Valid); - if(!ata1 && !ata2 && !atapi && !cfa) ata2 = true; + if (!ata1 && !ata2 && !atapi && !cfa) ata2 = true; ata4 |= atapi; ata3 |= cfa; - if(cfa && ata1) ata1 = false; - if(cfa && ata2) ata2 = false; + if (cfa && ata1) ata1 = false; + if (cfa && ata2) ata2 = false; } else { @@ -108,97 +108,97 @@ namespace DiscImageChef.Server ata5 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi5); ata6 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi6); ata7 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi7); - acs |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.Ata8ACS); + acs |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.Ata8ACS); acs2 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.ACS2); acs3 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.ACS3); acs4 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.ACS4); } - int maxatalevel = 0; - int minatalevel = 255; - string tmpString = ""; - if(ata1) + var maxatalevel = 0; + var minatalevel = 255; + var tmpString = ""; + if (ata1) { - tmpString += "ATA-1 "; - maxatalevel = 1; - if(minatalevel > 1) minatalevel = 1; + tmpString += "ATA-1 "; + maxatalevel = 1; + if (minatalevel > 1) minatalevel = 1; } - if(ata2) + if (ata2) { - tmpString += "ATA-2 "; - maxatalevel = 2; - if(minatalevel > 2) minatalevel = 2; + tmpString += "ATA-2 "; + maxatalevel = 2; + if (minatalevel > 2) minatalevel = 2; } - if(ata3) + if (ata3) { - tmpString += "ATA-3 "; - maxatalevel = 3; - if(minatalevel > 3) minatalevel = 3; + tmpString += "ATA-3 "; + maxatalevel = 3; + if (minatalevel > 3) minatalevel = 3; } - if(ata4) + if (ata4) { - tmpString += "ATA/ATAPI-4 "; - maxatalevel = 4; - if(minatalevel > 4) minatalevel = 4; + tmpString += "ATA/ATAPI-4 "; + maxatalevel = 4; + if (minatalevel > 4) minatalevel = 4; } - if(ata5) + if (ata5) { - tmpString += "ATA/ATAPI-5 "; - maxatalevel = 5; - if(minatalevel > 5) minatalevel = 5; + tmpString += "ATA/ATAPI-5 "; + maxatalevel = 5; + if (minatalevel > 5) minatalevel = 5; } - if(ata6) + if (ata6) { - tmpString += "ATA/ATAPI-6 "; - maxatalevel = 6; - if(minatalevel > 6) minatalevel = 6; + tmpString += "ATA/ATAPI-6 "; + maxatalevel = 6; + if (minatalevel > 6) minatalevel = 6; } - if(ata7) + if (ata7) { - tmpString += "ATA/ATAPI-7 "; - maxatalevel = 7; - if(minatalevel > 7) minatalevel = 7; + tmpString += "ATA/ATAPI-7 "; + maxatalevel = 7; + if (minatalevel > 7) minatalevel = 7; } - if(acs) + if (acs) { - tmpString += "ATA8-ACS "; - maxatalevel = 8; - if(minatalevel > 8) minatalevel = 8; + tmpString += "ATA8-ACS "; + maxatalevel = 8; + if (minatalevel > 8) minatalevel = 8; } - if(acs2) + if (acs2) { - tmpString += "ATA8-ACS2 "; - maxatalevel = 9; - if(minatalevel > 9) minatalevel = 9; + tmpString += "ATA8-ACS2 "; + maxatalevel = 9; + if (minatalevel > 9) minatalevel = 9; } - if(acs3) + if (acs3) { - tmpString += "ATA8-ACS3 "; - maxatalevel = 10; - if(minatalevel > 10) minatalevel = 10; + tmpString += "ATA8-ACS3 "; + maxatalevel = 10; + if (minatalevel > 10) minatalevel = 10; } - if(acs4) + if (acs4) { - tmpString += "ATA8-ACS4 "; - maxatalevel = 11; - if(minatalevel > 11) minatalevel = 11; + tmpString += "ATA8-ACS4 "; + maxatalevel = 11; + if (minatalevel > 11) minatalevel = 11; } - if(tmpString != "") ataTwoValue.Add("Supported ATA versions", tmpString); + if (tmpString != "") ataTwoValue.Add("Supported ATA versions", tmpString); - if(maxatalevel >= 3) + if (maxatalevel >= 3) { - switch(ataIdentify.MinorVersion) + switch (ataIdentify.MinorVersion) { case 0x0000: case 0xFFFF: @@ -351,21 +351,21 @@ namespace DiscImageChef.Server } tmpString = ""; - switch((ataIdentify.TransportMajorVersion & 0xF000) >> 12) + switch ((ataIdentify.TransportMajorVersion & 0xF000) >> 12) { case 0x0: - if((ataIdentify.TransportMajorVersion & 0x0002) == 0x0002) tmpString += "ATA/ATAPI-7 "; - if((ataIdentify.TransportMajorVersion & 0x0001) == 0x0001) tmpString += "ATA8-APT "; + if ((ataIdentify.TransportMajorVersion & 0x0002) == 0x0002) tmpString += "ATA/ATAPI-7 "; + if ((ataIdentify.TransportMajorVersion & 0x0001) == 0x0001) tmpString += "ATA8-APT "; ataTwoValue.Add("Parallel ATA device", tmpString); break; case 0x1: - if((ataIdentify.TransportMajorVersion & 0x0001) == 0x0001) tmpString += "ATA8-AST "; - if((ataIdentify.TransportMajorVersion & 0x0002) == 0x0002) tmpString += "SATA 1.0a "; - if((ataIdentify.TransportMajorVersion & 0x0004) == 0x0004) tmpString += "SATA II Extensions "; - if((ataIdentify.TransportMajorVersion & 0x0008) == 0x0008) tmpString += "SATA 2.5 "; - if((ataIdentify.TransportMajorVersion & 0x0010) == 0x0010) tmpString += "SATA 2.6 "; - if((ataIdentify.TransportMajorVersion & 0x0020) == 0x0020) tmpString += "SATA 3.0 "; - if((ataIdentify.TransportMajorVersion & 0x0040) == 0x0040) tmpString += "SATA 3.1 "; + if ((ataIdentify.TransportMajorVersion & 0x0001) == 0x0001) tmpString += "ATA8-AST "; + if ((ataIdentify.TransportMajorVersion & 0x0002) == 0x0002) tmpString += "SATA 1.0a "; + if ((ataIdentify.TransportMajorVersion & 0x0004) == 0x0004) tmpString += "SATA II Extensions "; + if ((ataIdentify.TransportMajorVersion & 0x0008) == 0x0008) tmpString += "SATA 2.5 "; + if ((ataIdentify.TransportMajorVersion & 0x0010) == 0x0010) tmpString += "SATA 2.6 "; + if ((ataIdentify.TransportMajorVersion & 0x0020) == 0x0020) tmpString += "SATA 3.0 "; + if ((ataIdentify.TransportMajorVersion & 0x0040) == 0x0040) tmpString += "SATA 3.1 "; ataTwoValue.Add("Serial ATA device: ", tmpString); break; case 0xE: @@ -373,14 +373,14 @@ namespace DiscImageChef.Server break; default: ataTwoValue.Add("Unknown transport type", - $"0x{(ataIdentify.TransportMajorVersion & 0xF000) >> 12:X1}"); + $"0x{(ataIdentify.TransportMajorVersion & 0xF000) >> 12:X1}"); break; } - if(atapi) + if (atapi) { // Bits 12 to 8, SCSI Peripheral Device Type - switch((PeripheralDeviceTypes)(((ushort)ataIdentify.GeneralConfiguration & 0x1F00) >> 8)) + switch ((PeripheralDeviceTypes) (((ushort) ataIdentify.GeneralConfiguration & 0x1F00) >> 8)) { case PeripheralDeviceTypes.DirectAccess: //0x00, ataOneValue.Add("ATAPI Direct-access device"); @@ -447,12 +447,13 @@ namespace DiscImageChef.Server break; default: ataOneValue - .Add($"ATAPI Unknown device type field value 0x{((ushort)ataIdentify.GeneralConfiguration & 0x1F00) >> 8:X2}"); + .Add( + $"ATAPI Unknown device type field value 0x{((ushort) ataIdentify.GeneralConfiguration & 0x1F00) >> 8:X2}"); break; } // ATAPI DRQ behaviour - switch(((ushort)ataIdentify.GeneralConfiguration & 0x60) >> 5) + switch (((ushort) ataIdentify.GeneralConfiguration & 0x60) >> 5) { case 0: ataOneValue.Add("Device shall set DRQ within 3 ms of receiving PACKET"); @@ -465,12 +466,13 @@ namespace DiscImageChef.Server break; default: ataOneValue - .Add($"Unknown ATAPI DRQ behaviour code {((ushort)ataIdentify.GeneralConfiguration & 0x60) >> 5}"); + .Add( + $"Unknown ATAPI DRQ behaviour code {((ushort) ataIdentify.GeneralConfiguration & 0x60) >> 5}"); break; } // ATAPI PACKET size - switch((ushort)ataIdentify.GeneralConfiguration & 0x03) + switch ((ushort) ataIdentify.GeneralConfiguration & 0x03) { case 0: ataOneValue.Add("ATAPI device uses 12 byte command packet"); @@ -480,399 +482,411 @@ namespace DiscImageChef.Server break; default: ataOneValue - .Add($"Unknown ATAPI packet size code {(ushort)ataIdentify.GeneralConfiguration & 0x03}"); + .Add($"Unknown ATAPI packet size code {(ushort) ataIdentify.GeneralConfiguration & 0x03}"); break; } } - else if(!cfa) + else if (!cfa) { - if(minatalevel >= 5) - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.IncompleteResponse)) + if (minatalevel >= 5) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.IncompleteResponse)) ataOneValue.Add("Incomplete identify response"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.NonMagnetic)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.NonMagnetic)) ataOneValue.Add("Device uses non-magnetic media"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Removable)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Removable)) ataOneValue.Add("Device is removable"); - if(minatalevel <= 5) - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Fixed)) + if (minatalevel <= 5) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Fixed)) ataOneValue.Add("Device is fixed"); - if(ata1) + if (ata1) { - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SlowIDE)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SlowIDE)) ataOneValue.Add("Device transfer rate is <= 5 Mb/s"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FastIDE)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FastIDE)) ataOneValue.Add("Device transfer rate is > 5 Mb/s but <= 10 Mb/s"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.UltraFastIDE)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.UltraFastIDE)) ataOneValue.Add("Device transfer rate is > 10 Mb/s"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SoftSector)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SoftSector)) ataOneValue.Add("Device is soft sectored"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.HardSector)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.HardSector)) ataOneValue.Add("Device is hard sectored"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.NotMFM)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.NotMFM)) ataOneValue.Add("Device is not MFM encoded"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FormatGapReq)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FormatGapReq)) ataOneValue.Add("Format speed tolerance gap is required"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.TrackOffset)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.TrackOffset)) ataOneValue.Add("Track offset option is available"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.DataStrobeOffset)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.DataStrobeOffset)) ataOneValue.Add("Data strobe offset option is available"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit - .RotationalSpeedTolerance)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit + .RotationalSpeedTolerance)) ataOneValue.Add("Rotational speed tolerance is higher than 0,5%"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SpindleControl)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SpindleControl)) ataOneValue.Add("Spindle motor control is implemented"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.HighHeadSwitch)) + if (ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.HighHeadSwitch)) ataOneValue.Add("Head switch time is bigger than 15 µs."); } } - if((ushort)ataIdentify.SpecificConfiguration != 0x0000 && - (ushort)ataIdentify.SpecificConfiguration != 0xFFFF) - switch(ataIdentify.SpecificConfiguration) + if ((ushort) ataIdentify.SpecificConfiguration != 0x0000 && + (ushort) ataIdentify.SpecificConfiguration != 0xFFFF) + switch (ataIdentify.SpecificConfiguration) { case Identify.SpecificConfigurationEnum.RequiresSetIncompleteResponse: ataOneValue - .Add("Device requires SET FEATURES to spin up and IDENTIFY DEVICE response is incomplete."); + .Add("Device requires SET FEATURES to spin up and IDENTIFY DEVICE response is incomplete."); break; case Identify.SpecificConfigurationEnum.RequiresSetCompleteResponse: ataOneValue - .Add("Device requires SET FEATURES to spin up and IDENTIFY DEVICE response is complete."); + .Add("Device requires SET FEATURES to spin up and IDENTIFY DEVICE response is complete."); break; case Identify.SpecificConfigurationEnum.NotRequiresSetIncompleteResponse: ataOneValue - .Add("Device does not require SET FEATURES to spin up and IDENTIFY DEVICE response is incomplete."); + .Add( + "Device does not require SET FEATURES to spin up and IDENTIFY DEVICE response is incomplete."); break; case Identify.SpecificConfigurationEnum.NotRequiresSetCompleteResponse: ataOneValue - .Add("Device does not require SET FEATURES to spin up and IDENTIFY DEVICE response is complete."); + .Add( + "Device does not require SET FEATURES to spin up and IDENTIFY DEVICE response is complete."); break; default: ataOneValue - .Add($"Unknown device specific configuration 0x{(ushort)ataIdentify.SpecificConfiguration:X4}"); + .Add( + $"Unknown device specific configuration 0x{(ushort) ataIdentify.SpecificConfiguration:X4}"); break; } // Obsolete since ATA-2, however, it is yet used in ATA-8 devices - if(ataIdentify.BufferSize != 0x0000 && ataIdentify.BufferSize != 0xFFFF && - ataIdentify.BufferType != 0x0000 && ataIdentify.BufferType != 0xFFFF) - switch(ataIdentify.BufferType) + if (ataIdentify.BufferSize != 0x0000 && ataIdentify.BufferSize != 0xFFFF && + ataIdentify.BufferType != 0x0000 && ataIdentify.BufferType != 0xFFFF) + switch (ataIdentify.BufferType) { case 1: ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of single ported single sector buffer"); + .Add( + $"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of single ported single sector buffer"); break; case 2: ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of dual ported multi sector buffer"); + .Add( + $"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of dual ported multi sector buffer"); break; case 3: ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of dual ported multi sector buffer with read caching"); + .Add( + $"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of dual ported multi sector buffer with read caching"); break; default: ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of unknown type {ataIdentify.BufferType} buffer"); + .Add( + $"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of unknown type {ataIdentify.BufferType} buffer"); break; } ataOneValue.Add("Device capabilities:"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.StandardStanbyTimer)) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.StandardStanbyTimer)) ataOneValue.Add("Standby time values are standard"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.IORDY)) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.IORDY)) ataOneValue.Add(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.CanDisableIORDY) - ? "IORDY is supported and can be disabled" - : "IORDY is supported"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.DMASupport)) + ? "IORDY is supported and can be disabled" + : "IORDY is supported"); + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.DMASupport)) ataOneValue.Add("DMA is supported"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.PhysicalAlignment1) || - ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.PhysicalAlignment0)) - ataOneValue.Add($"Long Physical Alignment setting is {(ushort)ataIdentify.Capabilities & 0x03}"); - if(atapi) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.PhysicalAlignment1) || + ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.PhysicalAlignment0)) + ataOneValue.Add($"Long Physical Alignment setting is {(ushort) ataIdentify.Capabilities & 0x03}"); + if (atapi) { - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.InterleavedDMA)) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.InterleavedDMA)) ataOneValue.Add("ATAPI device supports interleaved DMA"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.CommandQueue)) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.CommandQueue)) ataOneValue.Add("ATAPI device supports command queueing"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.OverlapOperation)) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.OverlapOperation)) ataOneValue.Add("ATAPI device supports overlapped operations"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.RequiresATASoftReset)) + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.RequiresATASoftReset)) ataOneValue.Add("ATAPI device requires ATA software reset"); } - if(ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.MustBeSet) && - !ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.MustBeClear)) - if(ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.SpecificStandbyTimer)) + if (ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.MustBeSet) && + !ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.MustBeClear)) + if (ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.SpecificStandbyTimer)) ataOneValue.Add("Device indicates a specific minimum standby timer value"); - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.MultipleValid)) + if (ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.MultipleValid)) { - ataOneValue.Add($"A maximum of {ataIdentify.MultipleSectorNumber} sectors can be transferred per interrupt on READ/WRITE MULTIPLE"); + ataOneValue.Add( + $"A maximum of {ataIdentify.MultipleSectorNumber} sectors can be transferred per interrupt on READ/WRITE MULTIPLE"); ataOneValue.Add($"Device supports setting a maximum of {ataIdentify.MultipleMaxSectors} sectors"); } - if(ata1) - if(ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.TrustedComputing)) + if (ata1) + if (ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.TrustedComputing)) ataOneValue.Add("Device supports doubleword I/O"); - if(minatalevel <= 3) + if (minatalevel <= 3) { - if(ataIdentify.PIOTransferTimingMode > 0) + if (ataIdentify.PIOTransferTimingMode > 0) ataTwoValue.Add("PIO timing mode", $"{ataIdentify.PIOTransferTimingMode}"); - if(ataIdentify.DMATransferTimingMode > 0) + if (ataIdentify.DMATransferTimingMode > 0) ataTwoValue.Add("DMA timing mode", $"{ataIdentify.DMATransferTimingMode}"); } tmpString = ""; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode0)) tmpString += "PIO0 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode1)) tmpString += "PIO1 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode2)) tmpString += "PIO2 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode3)) tmpString += "PIO3 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode4)) tmpString += "PIO4 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode5)) tmpString += "PIO5 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode6)) tmpString += "PIO6 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode7)) tmpString += "PIO7 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode0)) tmpString += "PIO0 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode1)) tmpString += "PIO1 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode2)) tmpString += "PIO2 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode3)) tmpString += "PIO3 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode4)) tmpString += "PIO4 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode5)) tmpString += "PIO5 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode6)) tmpString += "PIO6 "; + if (ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode7)) tmpString += "PIO7 "; - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Advanced PIO", tmpString); + if (!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Advanced PIO", tmpString); - if(minatalevel <= 3 && !atapi) + if (minatalevel <= 3 && !atapi) { tmpString = ""; - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode0)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode0)) { tmpString += "DMA0 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode1)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode1)) { tmpString += "DMA1 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode2)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode2)) { tmpString += "DMA2 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode3)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode3)) { tmpString += "DMA3 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode4)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode4)) { tmpString += "DMA4 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode5)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode5)) { tmpString += "DMA5 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode6)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode6)) { tmpString += "DMA6 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; } - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode7)) + if (ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode7)) { tmpString += "DMA7 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; + if (ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; } - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Single-word DMA", tmpString); + if (!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Single-word DMA", tmpString); } tmpString = ""; - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode0)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode0)) { tmpString += "MDMA0 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode1)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode1)) { tmpString += "MDMA1 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode2)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode2)) { tmpString += "MDMA2 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode3)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode3)) { tmpString += "MDMA3 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode4)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode4)) { tmpString += "MDMA4 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode5)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode5)) { tmpString += "MDMA5 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode6)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode6)) { tmpString += "MDMA6 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; } - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode7)) + if (ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode7)) { tmpString += "MDMA7 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; + if (ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; } - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Multi-word DMA", tmpString); + if (!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Multi-word DMA", tmpString); tmpString = ""; - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode0)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode0)) { tmpString += "UDMA0 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode1)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode1)) { tmpString += "UDMA1 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode2)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode2)) { tmpString += "UDMA2 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode3)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode3)) { tmpString += "UDMA3 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode4)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode4)) { tmpString += "UDMA4 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode5)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode5)) { tmpString += "UDMA5 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode6)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode6)) { tmpString += "UDMA6 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; } - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode7)) + if (ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode7)) { tmpString += "UDMA7 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; + if (ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; } - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Ultra DMA", tmpString); + if (!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Ultra DMA", tmpString); - if(ataIdentify.MinMDMACycleTime != 0 && ataIdentify.RecMDMACycleTime != 0) - ataOneValue.Add($"At minimum {ataIdentify.MinMDMACycleTime} ns. transfer cycle time per word in MDMA, " + - $"{ataIdentify.RecMDMACycleTime} ns. recommended"); - if(ataIdentify.MinPIOCycleTimeNoFlow != 0) - ataOneValue.Add($"At minimum {ataIdentify.MinPIOCycleTimeNoFlow} ns. transfer cycle time per word in PIO, " + - "without flow control"); - if(ataIdentify.MinPIOCycleTimeFlow != 0) - ataOneValue.Add($"At minimum {ataIdentify.MinPIOCycleTimeFlow} ns. transfer cycle time per word in PIO, " + - "with IORDY flow control"); + if (ataIdentify.MinMDMACycleTime != 0 && ataIdentify.RecMDMACycleTime != 0) + ataOneValue.Add( + $"At minimum {ataIdentify.MinMDMACycleTime} ns. transfer cycle time per word in MDMA, " + + $"{ataIdentify.RecMDMACycleTime} ns. recommended"); + if (ataIdentify.MinPIOCycleTimeNoFlow != 0) + ataOneValue.Add( + $"At minimum {ataIdentify.MinPIOCycleTimeNoFlow} ns. transfer cycle time per word in PIO, " + + "without flow control"); + if (ataIdentify.MinPIOCycleTimeFlow != 0) + ataOneValue.Add( + $"At minimum {ataIdentify.MinPIOCycleTimeFlow} ns. transfer cycle time per word in PIO, " + + "with IORDY flow control"); - if(ataIdentify.MaxQueueDepth != 0) + if (ataIdentify.MaxQueueDepth != 0) ataOneValue.Add($"{ataIdentify.MaxQueueDepth + 1} depth of queue maximum"); - if(atapi) + if (atapi) { - if(ataIdentify.PacketBusRelease != 0) + if (ataIdentify.PacketBusRelease != 0) ataOneValue - .Add($"{ataIdentify.PacketBusRelease} ns. typical to release bus from receipt of PACKET"); - if(ataIdentify.ServiceBusyClear != 0) + .Add($"{ataIdentify.PacketBusRelease} ns. typical to release bus from receipt of PACKET"); + if (ataIdentify.ServiceBusyClear != 0) ataOneValue - .Add($"{ataIdentify.ServiceBusyClear} ns. typical to clear BSY bit from receipt of SERVICE"); + .Add($"{ataIdentify.ServiceBusyClear} ns. typical to clear BSY bit from receipt of SERVICE"); } - if((ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0x1 || - (ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0xE) + if ((ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0x1 || + (ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0xE) { - if(!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear)) + if (!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear)) { - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen1Speed)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen1Speed)) ataOneValue.Add("SATA 1.5Gb/s is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen2Speed)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen2Speed)) ataOneValue.Add("SATA 3.0Gb/s is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen3Speed)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen3Speed)) ataOneValue.Add("SATA 6.0Gb/s is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.PowerReceipt)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.PowerReceipt)) ataOneValue.Add("Receipt of host initiated power management requests is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.PHYEventCounter)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.PHYEventCounter)) ataOneValue.Add("PHY Event counters are supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.HostSlumbTrans)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.HostSlumbTrans)) ataOneValue.Add("Supports host automatic partial to slumber transitions is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.DevSlumbTrans)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.DevSlumbTrans)) ataOneValue.Add("Supports device automatic partial to slumber transitions is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQ)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQ)) { ataOneValue.Add("NCQ is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQPriority)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQPriority)) ataOneValue.Add("NCQ priority is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.UnloadNCQ)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.UnloadNCQ)) ataOneValue.Add("Unload is supported with outstanding NCQ commands"); } } - if(!ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.Clear)) + if (!ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.Clear)) { - if(!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear) && - ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQ)) + if (!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear) && + ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQ)) { - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.NCQMgmt)) + if (ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.NCQMgmt)) ataOneValue.Add("NCQ queue management is supported"); - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.NCQStream)) + if (ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.NCQStream)) ataOneValue.Add("NCQ streaming is supported"); } - if(atapi) + if (atapi) { - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.HostEnvDetect)) + if (ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.HostEnvDetect)) ataOneValue.Add("ATAPI device supports host environment detection"); - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.DevAttSlimline)) + if (ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.DevAttSlimline)) ataOneValue.Add("ATAPI device supports attention on slimline connected devices"); } } } - if(ataIdentify.InterseekDelay != 0x0000 && ataIdentify.InterseekDelay != 0xFFFF) - ataOneValue.Add($"{ataIdentify.InterseekDelay} microseconds of interseek delay for ISO-7779 accoustic testing"); + if (ataIdentify.InterseekDelay != 0x0000 && ataIdentify.InterseekDelay != 0xFFFF) + ataOneValue.Add( + $"{ataIdentify.InterseekDelay} microseconds of interseek delay for ISO-7779 accoustic testing"); - if((ushort)ataIdentify.DeviceFormFactor != 0x0000 && (ushort)ataIdentify.DeviceFormFactor != 0xFFFF) - switch(ataIdentify.DeviceFormFactor) + if ((ushort) ataIdentify.DeviceFormFactor != 0x0000 && (ushort) ataIdentify.DeviceFormFactor != 0xFFFF) + switch (ataIdentify.DeviceFormFactor) { case Identify.DeviceFormFactorEnum.FiveAndQuarter: ataOneValue.Add("Device nominal size is 5.25\""); @@ -894,420 +908,424 @@ namespace DiscImageChef.Server break; } - if(atapi) - if(ataIdentify.ATAPIByteCount > 0) + if (atapi) + if (ataIdentify.ATAPIByteCount > 0) ataOneValue.Add($"{ataIdentify.ATAPIByteCount} bytes count limit for ATAPI"); - if(cfa) - if((ataIdentify.CFAPowerMode & 0x8000) == 0x8000) + if (cfa) + if ((ataIdentify.CFAPowerMode & 0x8000) == 0x8000) { ataOneValue.Add("CompactFlash device supports power mode 1"); - if((ataIdentify.CFAPowerMode & 0x2000) == 0x2000) + if ((ataIdentify.CFAPowerMode & 0x2000) == 0x2000) ataOneValue.Add("CompactFlash power mode 1 required for one or more commands"); - if((ataIdentify.CFAPowerMode & 0x1000) == 0x1000) + if ((ataIdentify.CFAPowerMode & 0x1000) == 0x1000) ataOneValue.Add("CompactFlash power mode 1 is disabled"); ataOneValue.Add($"CompactFlash device uses a maximum of {ataIdentify.CFAPowerMode & 0x0FFF} mA"); } ataOneValue.Add("Command set and features:"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Nop)) + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Nop)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Nop) - ? "NOP is supported and enabled" - : "NOP is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.ReadBuffer)) + ? "NOP is supported and enabled" + : "NOP is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.ReadBuffer)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.ReadBuffer) - ? "READ BUFFER is supported and enabled" - : "READ BUFFER is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.WriteBuffer)) + ? "READ BUFFER is supported and enabled" + : "READ BUFFER is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.WriteBuffer)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.WriteBuffer) - ? "WRITE BUFFER is supported and enabled" - : "WRITE BUFFER is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.HPA)) + ? "WRITE BUFFER is supported and enabled" + : "WRITE BUFFER is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.HPA)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.HPA) - ? "Host Protected Area is supported and enabled" - : "Host Protected Area is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.DeviceReset)) + ? "Host Protected Area is supported and enabled" + : "Host Protected Area is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.DeviceReset)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.DeviceReset) - ? "DEVICE RESET is supported and enabled" - : "DEVICE RESET is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Service)) + ? "DEVICE RESET is supported and enabled" + : "DEVICE RESET is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Service)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Service) - ? "SERVICE interrupt is supported and enabled" - : "SERVICE interrupt is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Release)) + ? "SERVICE interrupt is supported and enabled" + : "SERVICE interrupt is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Release)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Release) - ? "Release is supported and enabled" - : "Release is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.LookAhead)) + ? "Release is supported and enabled" + : "Release is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.LookAhead)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.LookAhead) - ? "Look-ahead read is supported and enabled" - : "Look-ahead read is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.WriteCache)) + ? "Look-ahead read is supported and enabled" + : "Look-ahead read is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.WriteCache)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.WriteCache) - ? "Write cache is supported and enabled" - : "Write cache is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Packet)) + ? "Write cache is supported and enabled" + : "Write cache is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Packet)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Packet) - ? "PACKET is supported and enabled" - : "PACKET is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.PowerManagement)) + ? "PACKET is supported and enabled" + : "PACKET is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.PowerManagement)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.PowerManagement) - ? "Power management is supported and enabled" - : "Power management is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.RemovableMedia)) + ? "Power management is supported and enabled" + : "Power management is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.RemovableMedia)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.RemovableMedia) - ? "Removable media feature set is supported and enabled" - : "Removable media feature set is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.SecurityMode)) + ? "Removable media feature set is supported and enabled" + : "Removable media feature set is supported"); + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.SecurityMode)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.SecurityMode) - ? "Security mode is supported and enabled" - : "Security mode is supported"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.LBASupport)) + ? "Security mode is supported and enabled" + : "Security mode is supported"); + if (ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.LBASupport)) ataOneValue.Add("28-bit LBA is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.MustBeSet) && - !ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.MustBeClear)) + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.MustBeSet) && + !ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.MustBeClear)) { - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.LBA48)) + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.LBA48)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.LBA48) - ? "48-bit LBA is supported and enabled" - : "48-bit LBA is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.FlushCache)) + ? "48-bit LBA is supported and enabled" + : "48-bit LBA is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.FlushCache)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.FlushCache) - ? "FLUSH CACHE is supported and enabled" - : "FLUSH CACHE is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.FlushCacheExt)) + ? "FLUSH CACHE is supported and enabled" + : "FLUSH CACHE is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.FlushCacheExt)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.FlushCacheExt) - ? "FLUSH CACHE EXT is supported and enabled" - : "FLUSH CACHE EXT is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.DCO)) + ? "FLUSH CACHE EXT is supported and enabled" + : "FLUSH CACHE EXT is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.DCO)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.DCO) - ? "Device Configuration Overlay feature set is supported and enabled" - : "Device Configuration Overlay feature set is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.AAM)) + ? "Device Configuration Overlay feature set is supported and enabled" + : "Device Configuration Overlay feature set is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.AAM)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.AAM) - ? $"Automatic Acoustic Management is supported and enabled with value {ataIdentify.CurrentAAM} (vendor recommends {ataIdentify.RecommendedAAM}" - : "Automatic Acoustic Management is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.SetMax)) + ? $"Automatic Acoustic Management is supported and enabled with value {ataIdentify.CurrentAAM} (vendor recommends {ataIdentify.RecommendedAAM}" + : "Automatic Acoustic Management is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.SetMax)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.SetMax) - ? "SET MAX security extension is supported and enabled" - : "SET MAX security extension is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.AddressOffsetReservedAreaBoot)) + ? "SET MAX security extension is supported and enabled" + : "SET MAX security extension is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.AddressOffsetReservedAreaBoot)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2 - .AddressOffsetReservedAreaBoot) - ? "Address Offset Reserved Area Boot is supported and enabled" - : "Address Offset Reserved Area Boot is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.SetFeaturesRequired)) + .AddressOffsetReservedAreaBoot) + ? "Address Offset Reserved Area Boot is supported and enabled" + : "Address Offset Reserved Area Boot is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.SetFeaturesRequired)) ataOneValue.Add("SET FEATURES is required before spin-up"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.PowerUpInStandby)) + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.PowerUpInStandby)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.PowerUpInStandby) - ? "Power-up in standby is supported and enabled" - : "Power-up in standby is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.RemovableNotification)) + ? "Power-up in standby is supported and enabled" + : "Power-up in standby is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.RemovableNotification)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2 - .RemovableNotification) - ? "Removable Media Status Notification is supported and enabled" - : "Removable Media Status Notification is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.APM)) + .RemovableNotification) + ? "Removable Media Status Notification is supported and enabled" + : "Removable Media Status Notification is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.APM)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.APM) - ? $"Advanced Power Management is supported and enabled with value {ataIdentify.CurrentAPM}" - : "Advanced Power Management is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.CompactFlash)) + ? $"Advanced Power Management is supported and enabled with value {ataIdentify.CurrentAPM}" + : "Advanced Power Management is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.CompactFlash)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.CompactFlash) - ? "CompactFlash feature set is supported and enabled" - : "CompactFlash feature set is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.RWQueuedDMA)) + ? "CompactFlash feature set is supported and enabled" + : "CompactFlash feature set is supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.RWQueuedDMA)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.RWQueuedDMA) - ? "READ DMA QUEUED and WRITE DMA QUEUED are supported and enabled" - : "READ DMA QUEUED and WRITE DMA QUEUED are supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.DownloadMicrocode)) + ? "READ DMA QUEUED and WRITE DMA QUEUED are supported and enabled" + : "READ DMA QUEUED and WRITE DMA QUEUED are supported"); + if (ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.DownloadMicrocode)) ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.DownloadMicrocode) - ? "DOWNLOAD MICROCODE is supported and enabled" - : "DOWNLOAD MICROCODE is supported"); + ? "DOWNLOAD MICROCODE is supported and enabled" + : "DOWNLOAD MICROCODE is supported"); } - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.SMART)) + if (ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.SMART)) ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.SMART) - ? "S.M.A.R.T. is supported and enabled" - : "S.M.A.R.T. is supported"); + ? "S.M.A.R.T. is supported and enabled" + : "S.M.A.R.T. is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.Supported)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.Supported)) ataOneValue.Add("S.M.A.R.T. Command Transport is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeSet) && - !ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeClear)) + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeSet) && + !ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeClear)) { - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.SMARTSelfTest)) + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.SMARTSelfTest)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.SMARTSelfTest) - ? "S.M.A.R.T. self-testing is supported and enabled" - : "S.M.A.R.T. self-testing is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.SMARTLog)) + ? "S.M.A.R.T. self-testing is supported and enabled" + : "S.M.A.R.T. self-testing is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.SMARTLog)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.SMARTLog) - ? "S.M.A.R.T. error logging is supported and enabled" - : "S.M.A.R.T. error logging is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.IdleImmediate)) + ? "S.M.A.R.T. error logging is supported and enabled" + : "S.M.A.R.T. error logging is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.IdleImmediate)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.IdleImmediate) - ? "IDLE IMMEDIATE with UNLOAD FEATURE is supported and enabled" - : "IDLE IMMEDIATE with UNLOAD FEATURE is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.WriteURG)) + ? "IDLE IMMEDIATE with UNLOAD FEATURE is supported and enabled" + : "IDLE IMMEDIATE with UNLOAD FEATURE is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.WriteURG)) ataOneValue.Add("URG bit is supported in WRITE STREAM DMA EXT and WRITE STREAM EXT"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.ReadURG)) + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.ReadURG)) ataOneValue.Add("URG bit is supported in READ STREAM DMA EXT and READ STREAM EXT"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.WWN)) + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.WWN)) ataOneValue.Add("Device has a World Wide Name"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.FUAWriteQ)) + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.FUAWriteQ)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.FUAWriteQ) - ? "WRITE DMA QUEUED FUA EXT is supported and enabled" - : "WRITE DMA QUEUED FUA EXT is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.FUAWrite)) + ? "WRITE DMA QUEUED FUA EXT is supported and enabled" + : "WRITE DMA QUEUED FUA EXT is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.FUAWrite)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.FUAWrite) - ? "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported and enabled" - : "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.GPL)) + ? "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported and enabled" + : "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.GPL)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.GPL) - ? "General Purpose Logging is supported and enabled" - : "General Purpose Logging is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.Streaming)) + ? "General Purpose Logging is supported and enabled" + : "General Purpose Logging is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.Streaming)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.Streaming) - ? "Streaming feature set is supported and enabled" - : "Streaming feature set is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MCPT)) + ? "Streaming feature set is supported and enabled" + : "Streaming feature set is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MCPT)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.MCPT) - ? "Media Card Pass Through command set is supported and enabled" - : "Media Card Pass Through command set is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MediaSerial)) + ? "Media Card Pass Through command set is supported and enabled" + : "Media Card Pass Through command set is supported"); + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MediaSerial)) ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.MediaSerial) - ? "Media Serial is supported and valid" - : "Media Serial is supported"); + ? "Media Serial is supported and valid" + : "Media Serial is supported"); } - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.MustBeSet) && - !ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.MustBeClear)) + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.MustBeSet) && + !ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.MustBeClear)) { - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.DSN)) + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.DSN)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.DSN) - ? "DSN feature set is supported and enabled" - : "DSN feature set is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.AMAC)) + ? "DSN feature set is supported and enabled" + : "DSN feature set is supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.AMAC)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.AMAC) - ? "Accessible Max Address Configuration is supported and enabled" - : "Accessible Max Address Configuration is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.ExtPowerCond)) + ? "Accessible Max Address Configuration is supported and enabled" + : "Accessible Max Address Configuration is supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.ExtPowerCond)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.ExtPowerCond) - ? "Extended Power Conditions are supported and enabled" - : "Extended Power Conditions are supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.ExtStatusReport)) + ? "Extended Power Conditions are supported and enabled" + : "Extended Power Conditions are supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.ExtStatusReport)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.ExtStatusReport) - ? "Extended Status Reporting is supported and enabled" - : "Extended Status Reporting is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.FreeFallControl)) + ? "Extended Status Reporting is supported and enabled" + : "Extended Status Reporting is supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.FreeFallControl)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.FreeFallControl) - ? "Free-fall control feature set is supported and enabled" - : "Free-fall control feature set is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.SegmentedDownloadMicrocode)) + ? "Free-fall control feature set is supported and enabled" + : "Free-fall control feature set is supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.SegmentedDownloadMicrocode)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4 - .SegmentedDownloadMicrocode) - ? "Segmented feature in DOWNLOAD MICROCODE is supported and enabled" - : "Segmented feature in DOWNLOAD MICROCODE is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.RWDMAExtGpl)) + .SegmentedDownloadMicrocode) + ? "Segmented feature in DOWNLOAD MICROCODE is supported and enabled" + : "Segmented feature in DOWNLOAD MICROCODE is supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.RWDMAExtGpl)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.RWDMAExtGpl) - ? "READ/WRITE DMA EXT GPL are supported and enabled" - : "READ/WRITE DMA EXT GPL are supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.WriteUnc)) + ? "READ/WRITE DMA EXT GPL are supported and enabled" + : "READ/WRITE DMA EXT GPL are supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.WriteUnc)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WriteUnc) - ? "WRITE UNCORRECTABLE is supported and enabled" - : "WRITE UNCORRECTABLE is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.WRV)) + ? "WRITE UNCORRECTABLE is supported and enabled" + : "WRITE UNCORRECTABLE is supported"); + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.WRV)) { ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WRV) - ? "Write/Read/Verify is supported and enabled" - : "Write/Read/Verify is supported"); + ? "Write/Read/Verify is supported and enabled" + : "Write/Read/Verify is supported"); ataOneValue.Add($"{ataIdentify.WRVSectorCountMode2} sectors for Write/Read/Verify mode 2"); ataOneValue.Add($"{ataIdentify.WRVSectorCountMode3} sectors for Write/Read/Verify mode 3"); - if(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WRV)) + if (ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WRV)) ataOneValue.Add($"Current Write/Read/Verify mode: {ataIdentify.WRVMode}"); } - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.DT1825)) + if (ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.DT1825)) ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.DT1825) - ? "DT1825 is supported and enabled" - : "DT1825 is supported"); + ? "DT1825 is supported and enabled" + : "DT1825 is supported"); } - if(true) + if (true) { - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.BlockErase)) + if (ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.BlockErase)) ataOneValue.Add("BLOCK ERASE EXT is supported"); - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.Overwrite)) + if (ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.Overwrite)) ataOneValue.Add("OVERWRITE EXT is supported"); - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.CryptoScramble)) + if (ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.CryptoScramble)) ataOneValue.Add("CRYPTO SCRAMBLE EXT is supported"); } - if(true) + if (true) { - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DeviceConfDMA)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DeviceConfDMA)) ataOneValue.Add("DEVICE CONFIGURATION IDENTIFY DMA and DEVICE CONFIGURATION SET DMA are supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ReadBufferDMA)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ReadBufferDMA)) ataOneValue.Add("READ BUFFER DMA is supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.WriteBufferDMA)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.WriteBufferDMA)) ataOneValue.Add("WRITE BUFFER DMA is supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DownloadMicroCodeDMA)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DownloadMicroCodeDMA)) ataOneValue.Add("DOWNLOAD MICROCODE DMA is supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.SetMaxDMA)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.SetMaxDMA)) ataOneValue.Add("SET PASSWORD DMA and SET UNLOCK DMA are supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.Ata28)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.Ata28)) ataOneValue.Add("Not all 28-bit commands are supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.CFast)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.CFast)) ataOneValue.Add("Device follows CFast specification"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.IEEE1667)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.IEEE1667)) ataOneValue.Add("Device follows IEEE-1667"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DeterministicTrim)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DeterministicTrim)) { ataOneValue.Add("Read after TRIM is deterministic"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ReadZeroTrim)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ReadZeroTrim)) ataOneValue.Add("Read after TRIM returns empty data"); } - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.LongPhysSectorAligError)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.LongPhysSectorAligError)) ataOneValue.Add("Device supports Long Physical Sector Alignment Error Reporting Control"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.Encrypted)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.Encrypted)) ataOneValue.Add("Device encrypts all user data"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.AllCacheNV)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.AllCacheNV)) ataOneValue.Add("Device's write cache is non-volatile"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ZonedBit0) || - ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ZonedBit1)) + if (ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ZonedBit0) || + ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ZonedBit1)) ataOneValue.Add("Device is zoned"); } - if(true) - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.Sanitize)) + if (true) + if (ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.Sanitize)) { ataOneValue.Add("Sanitize feature set is supported"); ataOneValue.Add(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.SanitizeCommands) - ? "Sanitize commands are specified by ACS-3 or higher" - : "Sanitize commands are specified by ACS-2"); + ? "Sanitize commands are specified by ACS-3 or higher" + : "Sanitize commands are specified by ACS-2"); - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.SanitizeAntifreeze)) + if (ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.SanitizeAntifreeze)) ataOneValue.Add("SANITIZE ANTIFREEZE LOCK EXT is supported"); } - if(!ata1 && maxatalevel >= 8) - if(ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.Set) && - !ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.Clear) && - ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.TrustedComputing)) + if (!ata1 && maxatalevel >= 8) + if (ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.Set) && + !ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.Clear) && + ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.TrustedComputing)) ataOneValue.Add("Trusted Computing feature set is supported"); - if((ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0x1 || - (ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0xE) + if ((ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0x1 || + (ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0xE) { - if(true) - if(!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear)) - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.ReadLogDMAExt)) + if (true) + if (!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear)) + if (ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.ReadLogDMAExt)) ataOneValue.Add("READ LOG DMA EXT is supported"); - if(true) - if(!ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.Clear)) - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.FPDMAQ)) + if (true) + if (!ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.Clear)) + if (ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.FPDMAQ)) ataOneValue.Add("RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED are supported"); - if(true) - if(!ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.Clear)) + if (true) + if (!ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.Clear)) { - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.NonZeroBufferOffset)) + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.NonZeroBufferOffset)) ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit - .NonZeroBufferOffset) - ? "Non-zero buffer offsets are supported and enabled" - : "Non-zero buffer offsets are supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.DMASetup)) + .NonZeroBufferOffset) + ? "Non-zero buffer offsets are supported and enabled" + : "Non-zero buffer offsets are supported"); + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.DMASetup)) ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.DMASetup) - ? "DMA Setup auto-activation is supported and enabled" - : "DMA Setup auto-activation is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.InitPowerMgmt)) + ? "DMA Setup auto-activation is supported and enabled" + : "DMA Setup auto-activation is supported"); + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.InitPowerMgmt)) ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit - .InitPowerMgmt) - ? "Device-initiated power management is supported and enabled" - : "Device-initiated power management is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.InOrderData)) + .InitPowerMgmt) + ? "Device-initiated power management is supported and enabled" + : "Device-initiated power management is supported"); + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.InOrderData)) ataOneValue.Add(ataIdentify.EnabledSATAFeatures - .HasFlag(Identify.SATAFeaturesBit.InOrderData) - ? "In-order data delivery is supported and enabled" - : "In-order data delivery is supported"); - if(!atapi) - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.HardwareFeatureControl)) + .HasFlag(Identify.SATAFeaturesBit.InOrderData) + ? "In-order data delivery is supported and enabled" + : "In-order data delivery is supported"); + if (!atapi) + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.HardwareFeatureControl)) ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit - .HardwareFeatureControl) - ? "Hardware Feature Control is supported and enabled" - : "Hardware Feature Control is supported"); - if(atapi) - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.AsyncNotification)) - if(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.AsyncNotification)) + .HardwareFeatureControl) + ? "Hardware Feature Control is supported and enabled" + : "Hardware Feature Control is supported"); + if (atapi) + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.AsyncNotification)) + if (ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.AsyncNotification)) ataOneValue.Add("Asynchronous notification is supported"); else ataOneValue.Add("Asynchronous notification is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.SettingsPreserve)) - if(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.SettingsPreserve)) + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.SettingsPreserve)) + if (ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.SettingsPreserve)) ataOneValue.Add("Software Settings Preservation is supported"); else ataOneValue.Add("Software Settings Preservation is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.NCQAutoSense)) + if (ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.NCQAutoSense)) ataOneValue.Add("NCQ Autosense is supported"); - if(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.EnabledSlumber)) + if (ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.EnabledSlumber)) ataOneValue.Add("Automatic Partial to Slumber transitions are enabled"); } } - if((ataIdentify.RemovableStatusSet & 0x03) > 0) + if ((ataIdentify.RemovableStatusSet & 0x03) > 0) ataOneValue.Add("Removable Media Status Notification feature set is supported"); - if(ataIdentify.FreeFallSensitivity != 0x00 && ataIdentify.FreeFallSensitivity != 0xFF) + if (ataIdentify.FreeFallSensitivity != 0x00 && ataIdentify.FreeFallSensitivity != 0xFF) ataOneValue.Add($"Free-fall sensitivity set to {ataIdentify.FreeFallSensitivity}"); - if(ataIdentify.DataSetMgmt.HasFlag(Identify.DataSetMgmtBit.Trim)) ataOneValue.Add("TRIM is supported"); - if(ataIdentify.DataSetMgmtSize > 0) - ataOneValue.Add($"DATA SET MANAGEMENT can receive a maximum of {ataIdentify.DataSetMgmtSize} blocks of 512 bytes"); + if (ataIdentify.DataSetMgmt.HasFlag(Identify.DataSetMgmtBit.Trim)) ataOneValue.Add("TRIM is supported"); + if (ataIdentify.DataSetMgmtSize > 0) + ataOneValue.Add( + $"DATA SET MANAGEMENT can receive a maximum of {ataIdentify.DataSetMgmtSize} blocks of 512 bytes"); - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Supported)) + if (ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Supported)) { ataOneValue.Add("Security:"); - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enabled)) + if (ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enabled)) { ataOneValue.Add("Security is enabled"); ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Locked) - ? "Security is locked" - : "Security is not locked"); + ? "Security is locked" + : "Security is not locked"); ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Frozen) - ? "Security is frozen" - : "Security is not frozen"); + ? "Security is frozen" + : "Security is not frozen"); ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Expired) - ? "Security count has expired" - : "Security count has notexpired"); + ? "Security count has expired" + : "Security count has notexpired"); ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Maximum) - ? "Security level is maximum" - : "Security level is high"); + ? "Security level is maximum" + : "Security level is high"); + } + else + { + ataOneValue.Add("Security is not enabled"); } - else ataOneValue.Add("Security is not enabled"); - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enhanced)) + if (ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enhanced)) ataOneValue.Add("Supports enhanced security erase"); ataOneValue.Add($"{ataIdentify.SecurityEraseTime * 2} minutes to complete secure erase"); - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enhanced)) + if (ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enhanced)) ataOneValue - .Add($"{ataIdentify.EnhancedSecurityEraseTime * 2} minutes to complete enhanced secure erase"); + .Add($"{ataIdentify.EnhancedSecurityEraseTime * 2} minutes to complete enhanced secure erase"); ataOneValue.Add($"Master password revision code: {ataIdentify.MasterPasswordRevisionCode}"); } - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeSet) && - !ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeClear) && - ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.Streaming)) + if (ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeSet) && + !ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeClear) && + ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.Streaming)) { ataOneValue.Add("Streaming:"); ataOneValue.Add($"Minimum request size is {ataIdentify.StreamMinReqSize}"); @@ -1317,30 +1335,30 @@ namespace DiscImageChef.Server ataOneValue.Add($"Streaming performance granularity is {ataIdentify.StreamPerformanceGranularity}"); } - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.Supported)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.Supported)) { ataOneValue.Add("S.M.A.R.T. Command Transport (SCT):"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.LongSectorAccess)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.LongSectorAccess)) ataOneValue.Add("SCT Long Sector Address is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.WriteSame)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.WriteSame)) ataOneValue.Add("SCT Write Same is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.ErrorRecoveryControl)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.ErrorRecoveryControl)) ataOneValue.Add("SCT Error Recovery Control is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.FeaturesControl)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.FeaturesControl)) ataOneValue.Add("SCT Features Control is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.DataTables)) + if (ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.DataTables)) ataOneValue.Add("SCT Data Tables are supported"); } - if((ataIdentify.NVCacheCaps & 0x0010) == 0x0010) + if ((ataIdentify.NVCacheCaps & 0x0010) == 0x0010) { ataOneValue.Add("Non-Volatile Cache:"); ataOneValue.Add($"Version {(ataIdentify.NVCacheCaps & 0xF000) >> 12}"); - if((ataIdentify.NVCacheCaps & 0x0001) == 0x0001) + if ((ataIdentify.NVCacheCaps & 0x0001) == 0x0001) { ataOneValue.Add((ataIdentify.NVCacheCaps & 0x0002) == 0x0002 - ? "Power mode feature set is supported and enabled" - : "Power mode feature set is supported"); + ? "Power mode feature set is supported and enabled" + : "Power mode feature set is supported"); ataOneValue.Add($"Version {(ataIdentify.NVCacheCaps & 0x0F00) >> 8}"); } @@ -1348,151 +1366,155 @@ namespace DiscImageChef.Server ataOneValue.Add($"Non-Volatile Cache is {ataIdentify.NVCacheSize * logicalsectorsize} bytes"); } - if(ataReport.ReadCapabilities != null) + if (ataReport.ReadCapabilities != null) { removable = false; ataOneValue.Add(""); - if(ataReport.ReadCapabilities.NominalRotationRate != null && - ataReport.ReadCapabilities.NominalRotationRate != 0x0000 && - ataReport.ReadCapabilities.NominalRotationRate != 0xFFFF) + if (ataReport.ReadCapabilities.NominalRotationRate != null && + ataReport.ReadCapabilities.NominalRotationRate != 0x0000 && + ataReport.ReadCapabilities.NominalRotationRate != 0xFFFF) ataOneValue.Add(ataReport.ReadCapabilities.NominalRotationRate == 0x0001 - ? "Device does not rotate." - : $"Device rotates at {ataReport.ReadCapabilities.NominalRotationRate} rpm"); + ? "Device does not rotate." + : $"Device rotates at {ataReport.ReadCapabilities.NominalRotationRate} rpm"); - if(!atapi) + if (!atapi) { - if(ataReport.ReadCapabilities.BlockSize != null) + if (ataReport.ReadCapabilities.BlockSize != null) { ataTwoValue.Add("Logical sector size", $"{ataReport.ReadCapabilities.BlockSize} bytes"); logicalsectorsize = ataReport.ReadCapabilities.BlockSize.Value; } - if(ataReport.ReadCapabilities.PhysicalBlockSize != null) + if (ataReport.ReadCapabilities.PhysicalBlockSize != null) ataTwoValue.Add("Physical sector size", - $"{ataReport.ReadCapabilities.PhysicalBlockSize} bytes"); - if(ataReport.ReadCapabilities.LongBlockSize != null) + $"{ataReport.ReadCapabilities.PhysicalBlockSize} bytes"); + if (ataReport.ReadCapabilities.LongBlockSize != null) ataTwoValue.Add("READ LONG sector size", $"{ataReport.ReadCapabilities.LongBlockSize} bytes"); - if(ataReport.ReadCapabilities.BlockSize != null && - ataReport.ReadCapabilities.PhysicalBlockSize != null && - ataReport.ReadCapabilities.BlockSize.Value != - ataReport.ReadCapabilities.PhysicalBlockSize.Value && - (ataReport.ReadCapabilities.LogicalAlignment & 0x8000) == 0x0000 && - (ataReport.ReadCapabilities.LogicalAlignment & 0x4000) == 0x4000) + if (ataReport.ReadCapabilities.BlockSize != null && + ataReport.ReadCapabilities.PhysicalBlockSize != null && + ataReport.ReadCapabilities.BlockSize.Value != + ataReport.ReadCapabilities.PhysicalBlockSize.Value && + (ataReport.ReadCapabilities.LogicalAlignment & 0x8000) == 0x0000 && + (ataReport.ReadCapabilities.LogicalAlignment & 0x4000) == 0x4000) ataOneValue - .Add($"Logical sector starts at offset {ataReport.ReadCapabilities.LogicalAlignment & 0x3FFF} from physical sector"); + .Add( + $"Logical sector starts at offset {ataReport.ReadCapabilities.LogicalAlignment & 0x3FFF} from physical sector"); - if(ataReport.ReadCapabilities.CHS != null && ataReport.ReadCapabilities.CurrentCHS != null) + if (ataReport.ReadCapabilities.CHS != null && ataReport.ReadCapabilities.CurrentCHS != null) { - int currentSectors = ataReport.ReadCapabilities.CurrentCHS.Cylinders * - ataReport.ReadCapabilities.CurrentCHS.Heads * + var currentSectors = ataReport.ReadCapabilities.CurrentCHS.Cylinders * + ataReport.ReadCapabilities.CurrentCHS.Heads * ataReport.ReadCapabilities.CurrentCHS.Sectors; ataTwoValue.Add("Cylinders", - $"{ataReport.ReadCapabilities.CHS.Cylinders} max., {ataReport.ReadCapabilities.CurrentCHS.Cylinders} current"); + $"{ataReport.ReadCapabilities.CHS.Cylinders} max., {ataReport.ReadCapabilities.CurrentCHS.Cylinders} current"); ataTwoValue.Add("Heads", - $"{ataReport.ReadCapabilities.CHS.Heads} max., {ataReport.ReadCapabilities.CurrentCHS.Heads} current"); + $"{ataReport.ReadCapabilities.CHS.Heads} max., {ataReport.ReadCapabilities.CurrentCHS.Heads} current"); ataTwoValue.Add("Sectors per track", - $"{ataReport.ReadCapabilities.CHS.Sectors} max., {ataReport.ReadCapabilities.CurrentCHS.Sectors} current"); + $"{ataReport.ReadCapabilities.CHS.Sectors} max., {ataReport.ReadCapabilities.CurrentCHS.Sectors} current"); ataTwoValue.Add("Sectors addressable in CHS mode", - $"{ataReport.ReadCapabilities.CHS.Cylinders * ataReport.ReadCapabilities.CHS.Heads * ataReport.ReadCapabilities.CHS.Sectors} max., {currentSectors} current"); + $"{ataReport.ReadCapabilities.CHS.Cylinders * ataReport.ReadCapabilities.CHS.Heads * ataReport.ReadCapabilities.CHS.Sectors} max., {currentSectors} current"); ataTwoValue.Add("Device size in CHS mode", - $"{(ulong)currentSectors * logicalsectorsize} bytes, {(ulong)currentSectors * logicalsectorsize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); + $"{(ulong) currentSectors * logicalsectorsize} bytes, {(ulong) currentSectors * logicalsectorsize / 1000 / 1000} Mb, {(double) ((ulong) currentSectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); } - else if(ataReport.ReadCapabilities.CHS != null) + else if (ataReport.ReadCapabilities.CHS != null) { - int currentSectors = ataReport.ReadCapabilities.CHS.Cylinders * - ataReport.ReadCapabilities.CHS.Heads * + var currentSectors = ataReport.ReadCapabilities.CHS.Cylinders * + ataReport.ReadCapabilities.CHS.Heads * ataReport.ReadCapabilities.CHS.Sectors; ataTwoValue.Add("Cylinders", - $"{ataReport.ReadCapabilities.CHS.Cylinders}"); - ataTwoValue.Add("Heads", $"{ataReport.ReadCapabilities.CHS.Heads}"); - ataTwoValue.Add("Sectors per track", $"{ataReport.ReadCapabilities.CHS.Sectors}"); + $"{ataReport.ReadCapabilities.CHS.Cylinders}"); + ataTwoValue.Add("Heads", $"{ataReport.ReadCapabilities.CHS.Heads}"); + ataTwoValue.Add("Sectors per track", $"{ataReport.ReadCapabilities.CHS.Sectors}"); ataTwoValue.Add("Sectors addressable in CHS mode", $"{currentSectors}"); ataTwoValue.Add("Device size in CHS mode", - $"{(ulong)currentSectors * logicalsectorsize} bytes, {(ulong)currentSectors * logicalsectorsize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); + $"{(ulong) currentSectors * logicalsectorsize} bytes, {(ulong) currentSectors * logicalsectorsize / 1000 / 1000} Mb, {(double) ((ulong) currentSectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); } - if(ataReport.ReadCapabilities.LBASectors != null) + if (ataReport.ReadCapabilities.LBASectors != null) { ataTwoValue.Add("Sectors addressable in sectors in 28-bit LBA mode", - $"{ataReport.ReadCapabilities.LBASectors}"); + $"{ataReport.ReadCapabilities.LBASectors}"); - if((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1024 / 1024 > 1000000) + if ((ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1024 / 1024 > 1000000) ataTwoValue.Add("Device size in 28-bit LBA mode", - $"{(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000} Tb, {(double)((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1024 / 1024 > 1000) + $"{(ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000} Tb, {(double) ((ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); + else if ((ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1024 / 1024 > 1000) ataTwoValue.Add("Device size in 28-bit LBA mode", - $"{(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000 / 1000} Gb, {(double)((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024 / 1024:F2} GiB"); + $"{(ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000 / 1000} Gb, {(double) ((ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024 / 1024:F2} GiB"); else ataTwoValue.Add("Device size in 28-bit LBA mode", - $"{(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000} Mb, {(double)((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); + $"{(ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000} Mb, {(double) ((ulong) ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); } - if(ataReport.ReadCapabilities.LBA48Sectors != null) + if (ataReport.ReadCapabilities.LBA48Sectors != null) { ataTwoValue.Add("Sectors addressable in sectors in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors}"); + $"{ataReport.ReadCapabilities.LBA48Sectors}"); - if(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000000) + if (ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000000) ataTwoValue.Add("Device size in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000) + $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000} Tb, {(double) (ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); + else if (ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000) ataTwoValue.Add("Device size in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000} Gb, {(double)(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024:F2} GiB"); + $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000} Gb, {(double) (ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024:F2} GiB"); else ataTwoValue.Add("Device size in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000} Mb, {(double)(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); + $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000} Mb, {(double) (ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); } - if(ata1 || cfa) + if (ata1 || cfa) { - if(ataReport.ReadCapabilities.UnformattedBPT > 0) + if (ataReport.ReadCapabilities.UnformattedBPT > 0) ataTwoValue.Add("Bytes per unformatted track", - $"{ataReport.ReadCapabilities.UnformattedBPT}"); - if(ataReport.ReadCapabilities.UnformattedBPS > 0) + $"{ataReport.ReadCapabilities.UnformattedBPT}"); + if (ataReport.ReadCapabilities.UnformattedBPS > 0) ataTwoValue.Add("Bytes per unformatted sector", - $"{ataReport.ReadCapabilities.UnformattedBPS}"); + $"{ataReport.ReadCapabilities.UnformattedBPS}"); } } - if(ataReport.ReadCapabilities.SupportsReadSectors == true) + if (ataReport.ReadCapabilities.SupportsReadSectors == true) ataOneValue.Add("Device supports READ SECTOR(S) command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadRetry == true) + if (ataReport.ReadCapabilities.SupportsReadRetry == true) ataOneValue.Add("Device supports READ SECTOR(S) RETRY command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadDma == true) + if (ataReport.ReadCapabilities.SupportsReadDma == true) ataOneValue.Add("Device supports READ DMA command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaRetry == true) + if (ataReport.ReadCapabilities.SupportsReadDmaRetry == true) ataOneValue.Add("Device supports READ DMA RETRY command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadLong == true) + if (ataReport.ReadCapabilities.SupportsReadLong == true) ataOneValue.Add("Device supports READ LONG command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadLongRetry == true) + if (ataReport.ReadCapabilities.SupportsReadLongRetry == true) ataOneValue.Add("Device supports READ LONG RETRY command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadLba == true) + if (ataReport.ReadCapabilities.SupportsReadLba == true) ataOneValue.Add("Device supports READ SECTOR(S) command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadRetryLba == true) + if (ataReport.ReadCapabilities.SupportsReadRetryLba == true) ataOneValue.Add("Device supports READ SECTOR(S) RETRY command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaLba == true) + if (ataReport.ReadCapabilities.SupportsReadDmaLba == true) ataOneValue.Add("Device supports READ DMA command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaRetryLba == true) + if (ataReport.ReadCapabilities.SupportsReadDmaRetryLba == true) ataOneValue.Add("Device supports READ DMA RETRY command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadLongLba == true) + if (ataReport.ReadCapabilities.SupportsReadLongLba == true) ataOneValue.Add("Device supports READ LONG command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadLongRetryLba == true) + if (ataReport.ReadCapabilities.SupportsReadLongRetryLba == true) ataOneValue.Add("Device supports READ LONG RETRY command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadLba48 == true) + if (ataReport.ReadCapabilities.SupportsReadLba48 == true) ataOneValue.Add("Device supports READ SECTOR(S) command in 48-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaLba48 == true) + if (ataReport.ReadCapabilities.SupportsReadDmaLba48 == true) ataOneValue.Add("Device supports READ DMA command in 48-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsSeek == true) + if (ataReport.ReadCapabilities.SupportsSeek == true) ataOneValue.Add("Device supports SEEK command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsSeekLba == true) + if (ataReport.ReadCapabilities.SupportsSeekLba == true) ataOneValue.Add("Device supports SEEK command in 28-bit LBA mode"); } - else testedMedia = ataReport.RemovableMedias; + else + { + testedMedia = ataReport.RemovableMedias; + } } } } \ No newline at end of file diff --git a/DiscImageChef.Server/App_Start/ScsiEvpd.cs b/DiscImageChef.Server/App_Start/ScsiEvpd.cs index 9a290e8e..dc3092d2 100644 --- a/DiscImageChef.Server/App_Start/ScsiEvpd.cs +++ b/DiscImageChef.Server/App_Start/ScsiEvpd.cs @@ -47,44 +47,44 @@ namespace DiscImageChef.Server /// List to put the key=value pairs on public static void Report(IEnumerable pages, string vendor, ref Dictionary evpdPages) { - foreach(ScsiPage evpd in pages) + foreach (var evpd in pages) { string decoded; - if(evpd.page >= 0x01 && evpd.page <= 0x7F) decoded = EVPD.DecodeASCIIPage(evpd.value); - else if(evpd.page == 0x81) decoded = EVPD.PrettifyPage_81(evpd.value); - else if(evpd.page == 0x82) decoded = EVPD.DecodePage82(evpd.value); - else if(evpd.page == 0x83) decoded = EVPD.PrettifyPage_83(evpd.value); - else if(evpd.page == 0x84) decoded = EVPD.PrettifyPage_84(evpd.value); - else if(evpd.page == 0x85) decoded = EVPD.PrettifyPage_85(evpd.value); - else if(evpd.page == 0x86) decoded = EVPD.PrettifyPage_86(evpd.value); - else if(evpd.page == 0x89) decoded = EVPD.PrettifyPage_89(evpd.value); - else if(evpd.page == 0xB0) decoded = EVPD.PrettifyPage_B0(evpd.value); - else if(evpd.page == 0xB2) + if (evpd.page >= 0x01 && evpd.page <= 0x7F) decoded = EVPD.DecodeASCIIPage(evpd.value); + else if (evpd.page == 0x81) decoded = EVPD.PrettifyPage_81(evpd.value); + else if (evpd.page == 0x82) decoded = EVPD.DecodePage82(evpd.value); + else if (evpd.page == 0x83) decoded = EVPD.PrettifyPage_83(evpd.value); + else if (evpd.page == 0x84) decoded = EVPD.PrettifyPage_84(evpd.value); + else if (evpd.page == 0x85) decoded = EVPD.PrettifyPage_85(evpd.value); + else if (evpd.page == 0x86) decoded = EVPD.PrettifyPage_86(evpd.value); + else if (evpd.page == 0x89) decoded = EVPD.PrettifyPage_89(evpd.value); + else if (evpd.page == 0xB0) decoded = EVPD.PrettifyPage_B0(evpd.value); + else if (evpd.page == 0xB2) decoded = $"TapeAlert Supported Flags Bitmap: 0x{EVPD.DecodePageB2(evpd.value):X16}
"; - else if(evpd.page == 0xB4) decoded = EVPD.DecodePageB4(evpd.value); - else if(evpd.page == 0xC0 && vendor.Trim() == "quantum") + else if (evpd.page == 0xB4) decoded = EVPD.DecodePageB4(evpd.value); + else if (evpd.page == 0xC0 && vendor.Trim() == "quantum") decoded = EVPD.PrettifyPage_C0_Quantum(evpd.value); - else if(evpd.page == 0xC0 && vendor.Trim() == "seagate") + else if (evpd.page == 0xC0 && vendor.Trim() == "seagate") decoded = EVPD.PrettifyPage_C0_Seagate(evpd.value); - else if(evpd.page == 0xC0 && vendor.Trim() == "ibm") + else if (evpd.page == 0xC0 && vendor.Trim() == "ibm") decoded = EVPD.PrettifyPage_C0_IBM(evpd.value); - else if(evpd.page == 0xC1 && vendor.Trim() == "ibm") + else if (evpd.page == 0xC1 && vendor.Trim() == "ibm") decoded = EVPD.PrettifyPage_C1_IBM(evpd.value); - else if((evpd.page == 0xC0 || evpd.page == 0xC1) && vendor.Trim() == "certance") + else if ((evpd.page == 0xC0 || evpd.page == 0xC1) && vendor.Trim() == "certance") decoded = EVPD.PrettifyPage_C0_C1_Certance(evpd.value); - else if((evpd.page == 0xC2 || evpd.page == 0xC3 || evpd.page == 0xC4 || evpd.page == 0xC5 || - evpd.page == 0xC6) && - vendor.Trim() == "certance") decoded = EVPD.PrettifyPage_C2_C3_C4_C5_C6_Certance(evpd.value); - else if((evpd.page == 0xC0 || evpd.page == 0xC1 || evpd.page == 0xC2 || evpd.page == 0xC3 || - evpd.page == 0xC4 || evpd.page == 0xC5) && - vendor.Trim() == "hp") decoded = EVPD.PrettifyPage_C0_to_C5_HP(evpd.value); - else if(evpd.page == 0xDF && vendor.Trim() == "certance") - decoded = EVPD.PrettifyPage_DF_Certance(evpd.value); + else if ((evpd.page == 0xC2 || evpd.page == 0xC3 || evpd.page == 0xC4 || evpd.page == 0xC5 || + evpd.page == 0xC6) && + vendor.Trim() == "certance") decoded = EVPD.PrettifyPage_C2_C3_C4_C5_C6_Certance(evpd.value); + else if ((evpd.page == 0xC0 || evpd.page == 0xC1 || evpd.page == 0xC2 || evpd.page == 0xC3 || + evpd.page == 0xC4 || evpd.page == 0xC5) && + vendor.Trim() == "hp") decoded = EVPD.PrettifyPage_C0_to_C5_HP(evpd.value); + else if (evpd.page == 0xDF && vendor.Trim() == "certance") + decoded = EVPD.PrettifyPage_DF_Certance(evpd.value); else decoded = "Undecoded"; - if(!string.IsNullOrEmpty(decoded)) decoded = decoded.Replace("\n", "
"); + if (!string.IsNullOrEmpty(decoded)) decoded = decoded.Replace("\n", "
"); evpdPages.Add($"EVPD page {evpd.page:X2}h", decoded); } diff --git a/DiscImageChef.Server/App_Start/ScsiInquiry.cs b/DiscImageChef.Server/App_Start/ScsiInquiry.cs index 5701e276..c481b89b 100644 --- a/DiscImageChef.Server/App_Start/ScsiInquiry.cs +++ b/DiscImageChef.Server/App_Start/ScsiInquiry.cs @@ -35,7 +35,7 @@ using DiscImageChef.Decoders.SCSI; namespace DiscImageChef.Server { - static class ScsiInquiry + internal static class ScsiInquiry { /// /// Takes the SCSI INQUIRY part of a device report and prints it as a list of values to be sequenced by ASP.NET in the @@ -45,13 +45,13 @@ namespace DiscImageChef.Server /// List of values internal static IEnumerable Report(Inquiry.SCSIInquiry? inquiryNullable) { - List scsiOneValue = new List(); + var scsiOneValue = new List(); - if(!inquiryNullable.HasValue) return scsiOneValue; + if (!inquiryNullable.HasValue) return scsiOneValue; - Inquiry.SCSIInquiry inquiry = inquiryNullable.Value; + var inquiry = inquiryNullable.Value; - switch((PeripheralQualifiers)inquiry.PeripheralQualifier) + switch ((PeripheralQualifiers) inquiry.PeripheralQualifier) { case PeripheralQualifiers.Supported: scsiOneValue.Add("Device is connected and supported."); @@ -70,7 +70,7 @@ namespace DiscImageChef.Server break; } - switch((PeripheralDeviceTypes)inquiry.PeripheralDeviceType) + switch ((PeripheralDeviceTypes) inquiry.PeripheralDeviceType) { case PeripheralDeviceTypes.DirectAccess: //0x00, scsiOneValue.Add("Direct-access device"); @@ -146,7 +146,7 @@ namespace DiscImageChef.Server break; } - switch((ANSIVersions)inquiry.ANSIVersion) + switch ((ANSIVersions) inquiry.ANSIVersion) { case ANSIVersions.ANSINoVersion: scsiOneValue.Add("Device does not claim to comply with any SCSI ANSI standard"); @@ -171,11 +171,12 @@ namespace DiscImageChef.Server break; default: scsiOneValue - .Add($"Device claims to comply with unknown SCSI ANSI standard value 0x{inquiry.ANSIVersion:X2})"); + .Add( + $"Device claims to comply with unknown SCSI ANSI standard value 0x{inquiry.ANSIVersion:X2})"); break; } - switch((ECMAVersions)inquiry.ECMAVersion) + switch ((ECMAVersions) inquiry.ECMAVersion) { case ECMAVersions.ECMANoVersion: scsiOneValue.Add("Device does not claim to comply with any SCSI ECMA standard"); @@ -185,11 +186,12 @@ namespace DiscImageChef.Server break; default: scsiOneValue - .Add($"Device claims to comply with unknown SCSI ECMA standard value 0x{inquiry.ECMAVersion:X2})"); + .Add( + $"Device claims to comply with unknown SCSI ECMA standard value 0x{inquiry.ECMAVersion:X2})"); break; } - switch((ISOVersions)inquiry.ISOVersion) + switch ((ISOVersions) inquiry.ISOVersion) { case ISOVersions.ISONoVersion: scsiOneValue.Add("Device does not claim to comply with any SCSI ISO/IEC standard"); @@ -199,38 +201,39 @@ namespace DiscImageChef.Server break; default: scsiOneValue - .Add($"Device claims to comply with unknown SCSI ISO/IEC standard value 0x{inquiry.ISOVersion:X2})"); + .Add( + $"Device claims to comply with unknown SCSI ISO/IEC standard value 0x{inquiry.ISOVersion:X2})"); break; } - if(inquiry.RMB) scsiOneValue.Add("Device is removable"); - if(inquiry.AERC) scsiOneValue.Add("Device supports Asynchronous Event Reporting Capability"); - if(inquiry.TrmTsk) scsiOneValue.Add("Device supports TERMINATE TASK command"); - if(inquiry.NormACA) scsiOneValue.Add("Device supports setting Normal ACA"); - if(inquiry.HiSup) scsiOneValue.Add("Device supports LUN hierarchical addressing"); - if(inquiry.SCCS) scsiOneValue.Add("Device contains an embedded storage array controller"); - if(inquiry.ACC) scsiOneValue.Add("Device contains an Access Control Coordinator"); - if(inquiry.ThreePC) scsiOneValue.Add("Device supports third-party copy commands"); - if(inquiry.Protect) scsiOneValue.Add("Device supports protection information"); - if(inquiry.BQue) scsiOneValue.Add("Device supports basic queueing"); - if(inquiry.EncServ) scsiOneValue.Add("Device contains an embedded enclosure services component"); - if(inquiry.MultiP) scsiOneValue.Add("Multi-port device"); - if(inquiry.MChngr) scsiOneValue.Add("Device contains or is attached to a medium changer"); - if(inquiry.ACKREQQ) scsiOneValue.Add("Device supports request and acknowledge handshakes"); - if(inquiry.Addr32) scsiOneValue.Add("Device supports 32-bit wide SCSI addresses"); - if(inquiry.Addr16) scsiOneValue.Add("Device supports 16-bit wide SCSI addresses"); - if(inquiry.RelAddr) scsiOneValue.Add("Device supports relative addressing"); - if(inquiry.WBus32) scsiOneValue.Add("Device supports 32-bit wide data transfers"); - if(inquiry.WBus16) scsiOneValue.Add("Device supports 16-bit wide data transfers"); - if(inquiry.Sync) scsiOneValue.Add("Device supports synchronous data transfer"); - if(inquiry.Linked) scsiOneValue.Add("Device supports linked commands"); - if(inquiry.TranDis) scsiOneValue.Add("Device supports CONTINUE TASK and TARGET TRANSFER DISABLE commands"); - if(inquiry.QAS) scsiOneValue.Add("Device supports Quick Arbitration and Selection"); - if(inquiry.CmdQue) scsiOneValue.Add("Device supports TCQ queue"); - if(inquiry.IUS) scsiOneValue.Add("Device supports information unit transfers"); - if(inquiry.SftRe) scsiOneValue.Add("Device implements RESET as a soft reset"); + if (inquiry.RMB) scsiOneValue.Add("Device is removable"); + if (inquiry.AERC) scsiOneValue.Add("Device supports Asynchronous Event Reporting Capability"); + if (inquiry.TrmTsk) scsiOneValue.Add("Device supports TERMINATE TASK command"); + if (inquiry.NormACA) scsiOneValue.Add("Device supports setting Normal ACA"); + if (inquiry.HiSup) scsiOneValue.Add("Device supports LUN hierarchical addressing"); + if (inquiry.SCCS) scsiOneValue.Add("Device contains an embedded storage array controller"); + if (inquiry.ACC) scsiOneValue.Add("Device contains an Access Control Coordinator"); + if (inquiry.ThreePC) scsiOneValue.Add("Device supports third-party copy commands"); + if (inquiry.Protect) scsiOneValue.Add("Device supports protection information"); + if (inquiry.BQue) scsiOneValue.Add("Device supports basic queueing"); + if (inquiry.EncServ) scsiOneValue.Add("Device contains an embedded enclosure services component"); + if (inquiry.MultiP) scsiOneValue.Add("Multi-port device"); + if (inquiry.MChngr) scsiOneValue.Add("Device contains or is attached to a medium changer"); + if (inquiry.ACKREQQ) scsiOneValue.Add("Device supports request and acknowledge handshakes"); + if (inquiry.Addr32) scsiOneValue.Add("Device supports 32-bit wide SCSI addresses"); + if (inquiry.Addr16) scsiOneValue.Add("Device supports 16-bit wide SCSI addresses"); + if (inquiry.RelAddr) scsiOneValue.Add("Device supports relative addressing"); + if (inquiry.WBus32) scsiOneValue.Add("Device supports 32-bit wide data transfers"); + if (inquiry.WBus16) scsiOneValue.Add("Device supports 16-bit wide data transfers"); + if (inquiry.Sync) scsiOneValue.Add("Device supports synchronous data transfer"); + if (inquiry.Linked) scsiOneValue.Add("Device supports linked commands"); + if (inquiry.TranDis) scsiOneValue.Add("Device supports CONTINUE TASK and TARGET TRANSFER DISABLE commands"); + if (inquiry.QAS) scsiOneValue.Add("Device supports Quick Arbitration and Selection"); + if (inquiry.CmdQue) scsiOneValue.Add("Device supports TCQ queue"); + if (inquiry.IUS) scsiOneValue.Add("Device supports information unit transfers"); + if (inquiry.SftRe) scsiOneValue.Add("Device implements RESET as a soft reset"); - switch((TGPSValues)inquiry.TPGS) + switch ((TGPSValues) inquiry.TPGS) { case TGPSValues.NotSupported: scsiOneValue.Add("Device does not support assymetrical access"); @@ -249,7 +252,7 @@ namespace DiscImageChef.Server break; } - switch((SPIClocking)inquiry.Clocking) + switch ((SPIClocking) inquiry.Clocking) { case SPIClocking.ST: scsiOneValue.Add("Device supports only ST clocking"); @@ -268,10 +271,10 @@ namespace DiscImageChef.Server break; } - if(inquiry.VersionDescriptors == null) return scsiOneValue; + if (inquiry.VersionDescriptors == null) return scsiOneValue; - foreach(ushort versionDescriptor in inquiry.VersionDescriptors) - switch(versionDescriptor) + foreach (var versionDescriptor in inquiry.VersionDescriptors) + switch (versionDescriptor) { case 0xFFFF: case 0x0000: break; @@ -403,11 +406,12 @@ namespace DiscImageChef.Server break; case 0x01DD: scsiOneValue - .Add("Device complies with SES T10/1212 revision 08b w/ Amendment ANSI INCITS.305/AM1-2000"); + .Add( + "Device complies with SES T10/1212 revision 08b w/ Amendment ANSI INCITS.305/AM1-2000"); break; case 0x01DE: scsiOneValue - .Add("Device complies with SES ANSI INCITS 305-1998 w/ Amendment ANSI INCITS.305/AM1-2000"); + .Add("Device complies with SES ANSI INCITS 305-1998 w/ Amendment ANSI INCITS.305/AM1-2000"); break; case 0x01E0: scsiOneValue.Add("Device complies with SCC-2 (no version claimed)"); @@ -744,7 +748,8 @@ namespace DiscImageChef.Server break; case 0x04E7: scsiOneValue - .Add("Device complies with MMC-6 ANSI INCITS 468-2010 + MMC-6/AM1 ANSI INCITS 468-2010/AM 1"); + .Add( + "Device complies with MMC-6 ANSI INCITS 468-2010 + MMC-6/AM1 ANSI INCITS 468-2010/AM 1"); break; case 0x0500: scsiOneValue.Add("Device complies with ADC-3 (no version claimed)"); @@ -1033,7 +1038,8 @@ namespace DiscImageChef.Server break; case 0x0ABC: scsiOneValue - .Add("Device complies with SPI ANSI INCITS 253-1995 with SPI Amnd ANSI INCITS 253/AM1-1998"); + .Add( + "Device complies with SPI ANSI INCITS 253-1995 with SPI Amnd ANSI INCITS 253/AM1-1998"); break; case 0x0AC0: scsiOneValue.Add("Device complies with Fast-20 (no version claimed)"); @@ -1175,7 +1181,8 @@ namespace DiscImageChef.Server break; case 0x0C4F: scsiOneValue - .Add("Device complies with SAS-2.1 ANSI INCITS 478-2011 w/ Amnd 1 ANSI INCITS 478/AM1-2014"); + .Add( + "Device complies with SAS-2.1 ANSI INCITS 478-2011 w/ Amnd 1 ANSI INCITS 478/AM1-2014"); break; case 0x0C52: scsiOneValue.Add("Device complies with SAS-2.1 ISO/IEC 14776-153"); @@ -1203,7 +1210,8 @@ namespace DiscImageChef.Server break; case 0x0D3C: scsiOneValue - .Add("Device complies with FC-PH ANSI INCITS 230-1994 with Amnd 1 ANSI INCITS 230/AM1-1996"); + .Add( + "Device complies with FC-PH ANSI INCITS 230-1994 with Amnd 1 ANSI INCITS 230/AM1-1996"); break; case 0x0D40: scsiOneValue.Add("Device complies with FC-AL (no version claimed)"); @@ -1276,7 +1284,7 @@ namespace DiscImageChef.Server break; case 0x0E03: scsiOneValue - .Add("Device complies with FC-FS-2 ANSI INCITS 242-2007 with AM1 ANSI INCITS 242/AM1-2007"); + .Add("Device complies with FC-FS-2 ANSI INCITS 242-2007 with AM1 ANSI INCITS 242/AM1-2007"); break; case 0x0E20: scsiOneValue.Add("Device complies with FC-LS (no version claimed)"); @@ -1334,7 +1342,8 @@ namespace DiscImageChef.Server break; case 0x0EA6: scsiOneValue - .Add("Device complies with FC 10GFC ANSI INCITS 364-2003 with AM1 ANSI INCITS 364/AM1-2007"); + .Add( + "Device complies with FC 10GFC ANSI INCITS 364-2003 with AM1 ANSI INCITS 364/AM1-2007"); break; case 0x0EC0: scsiOneValue.Add("Device complies with FC-SP-2 (no version claimed)"); @@ -1515,22 +1524,23 @@ namespace DiscImageChef.Server break; case 0x1621: scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-APT Parallel Transport (no version claimed)"); + .Add("Device complies with ATA/ATAPI-8 ATA8-APT Parallel Transport (no version claimed)"); break; case 0x1622: scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-AST Serial Transport (no version claimed)"); + .Add("Device complies with ATA/ATAPI-8 ATA8-AST Serial Transport (no version claimed)"); break; case 0x1623: scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-ACS ATA/ATAPI Command Set (no version claimed)"); + .Add( + "Device complies with ATA/ATAPI-8 ATA8-ACS ATA/ATAPI Command Set (no version claimed)"); break; case 0x1628: scsiOneValue.Add("Device complies with ATA/ATAPI-8 ATA8-AAM ANSI INCITS 451-2008"); break; case 0x162A: scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-ACS ANSI INCITS 452-2009 w/ Amendment 1"); + .Add("Device complies with ATA/ATAPI-8 ATA8-ACS ANSI INCITS 452-2009 w/ Amendment 1"); break; case 0x1728: scsiOneValue.Add("Device complies with Universal Serial Bus Specification, Revision 1.1"); @@ -1540,7 +1550,7 @@ namespace DiscImageChef.Server break; case 0x1730: scsiOneValue - .Add("Device complies with USB Mass Storage Class Bulk-Only Transport, Revision 1.0"); + .Add("Device complies with USB Mass Storage Class Bulk-Only Transport, Revision 1.0"); break; case 0x1740: scsiOneValue.Add("Device complies with UAS (no version claimed)"); diff --git a/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs b/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs index b9e8fbb1..7b908898 100644 --- a/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs +++ b/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs @@ -46,93 +46,96 @@ namespace DiscImageChef.Server /// List to put the values on public static void Report(MmcFeatures ftr, ref List mmcOneValue) { - if(ftr.SupportsAACS && ftr.AACSVersion.HasValue) + if (ftr.SupportsAACS && ftr.AACSVersion.HasValue) mmcOneValue.Add($"Drive supports AACS version {ftr.AACSVersion}"); - else if(ftr.SupportsAACS) mmcOneValue.Add("Drive supports AACS"); - if(ftr.AGIDs.HasValue) mmcOneValue.Add($"Drive supports {ftr.AGIDs} AGIDs concurrently"); - if(ftr.CanGenerateBindingNonce) + else if (ftr.SupportsAACS) mmcOneValue.Add("Drive supports AACS"); + if (ftr.AGIDs.HasValue) mmcOneValue.Add($"Drive supports {ftr.AGIDs} AGIDs concurrently"); + if (ftr.CanGenerateBindingNonce) { mmcOneValue.Add("Drive supports generating the binding nonce"); - if(ftr.BindingNonceBlocks.HasValue) + if (ftr.BindingNonceBlocks.HasValue) mmcOneValue.Add($"{ftr.BindingNonceBlocks} media blocks are required for the binding nonce"); } - if(ftr.BlocksPerReadableUnit > 1) + if (ftr.BlocksPerReadableUnit > 1) mmcOneValue.Add($"{ftr.BlocksPerReadableUnit} logical blocks per media writable unit"); - if(ftr.BufferUnderrunFreeInDVD) mmcOneValue.Add("Drive supports zero loss linking writing DVDs"); - if(ftr.BufferUnderrunFreeInSAO) mmcOneValue.Add("Drive supports zero loss linking in Session at Once Mode"); - if(ftr.BufferUnderrunFreeInTAO) mmcOneValue.Add("Drive supports zero loss linking in Track at Once Mode"); - if(ftr.CanAudioScan) mmcOneValue.Add("Drive supports the SCAN command"); - if(ftr.CanEject) mmcOneValue.Add("Drive can eject media"); - if(ftr.CanEraseSector) mmcOneValue.Add("Drive supports media that require erasing before writing"); - if(ftr.CanExpandBDRESpareArea) mmcOneValue.Add("Drive can expand the spare area on a formatted BD-RE disc"); - if(ftr.CanFormat) mmcOneValue.Add("Drive can format media into logical blocks"); - if(ftr.CanFormatBDREWithoutSpare) mmcOneValue.Add("Drive can format BD-RE with no spares allocated"); - if(ftr.CanFormatQCert) mmcOneValue.Add("Drive can format BD-RE discs with quick certification"); - if(ftr.CanFormatCert) mmcOneValue.Add("Drive can format BD-RE discs with full certification"); - if(ftr.CanFormatFRF) mmcOneValue.Add("Drive can fast re-format BD-RE discs"); - if(ftr.CanFormatRRM) mmcOneValue.Add("Drive can format BD-R discs with RRM format"); - if(ftr.CanLoad) mmcOneValue.Add("Drive can load media"); - if(ftr.CanMuteSeparateChannels) mmcOneValue.Add("Drive is able to mute channels separately"); - if(ftr.CanOverwriteSAOTrack) mmcOneValue.Add("Drive can overwrite a SAO track with another in CD-RWs"); - if(ftr.CanOverwriteTAOTrack) mmcOneValue.Add("Drive can overwrite a TAO track with another in CD-RWs"); - if(ftr.CanPlayCDAudio) mmcOneValue.Add("Drive has an analogue audio output"); - if(ftr.CanPseudoOverwriteBDR) mmcOneValue.Add("Drive can write BD-R on Pseudo-OVerwrite SRM mode"); - if(ftr.CanReadAllDualR) mmcOneValue.Add("Drive can read DVD-R DL from all recording modes"); - if(ftr.CanReadAllDualRW) mmcOneValue.Add("Drive can read DVD-RW DL from all recording modes"); - if(ftr.CanReadBD) mmcOneValue.Add("Drive can read BD-ROM"); - if(ftr.CanReadBDR) mmcOneValue.Add("Drive can read BD-R Ver.1"); - if(ftr.CanReadBDRE1) mmcOneValue.Add("Drive can read BD-RE Ver.1"); - if(ftr.CanReadBDRE2) mmcOneValue.Add("Drive can read BD-RE Ver.2"); - if(ftr.CanReadBDROM) mmcOneValue.Add("Drive can read BD-ROM Ver.1"); - if(ftr.CanReadBluBCA) mmcOneValue.Add("Drive can read BD's Burst Cutting Area"); - if(ftr.CanReadCD) mmcOneValue.Add("Drive can read CD-ROM"); - if(ftr.CanWriteCDMRW && ftr.CanReadDVDPlusMRW && ftr.CanWriteDVDPlusMRW) + if (ftr.BufferUnderrunFreeInDVD) mmcOneValue.Add("Drive supports zero loss linking writing DVDs"); + if (ftr.BufferUnderrunFreeInSAO) + mmcOneValue.Add("Drive supports zero loss linking in Session at Once Mode"); + if (ftr.BufferUnderrunFreeInTAO) mmcOneValue.Add("Drive supports zero loss linking in Track at Once Mode"); + if (ftr.CanAudioScan) mmcOneValue.Add("Drive supports the SCAN command"); + if (ftr.CanEject) mmcOneValue.Add("Drive can eject media"); + if (ftr.CanEraseSector) mmcOneValue.Add("Drive supports media that require erasing before writing"); + if (ftr.CanExpandBDRESpareArea) + mmcOneValue.Add("Drive can expand the spare area on a formatted BD-RE disc"); + if (ftr.CanFormat) mmcOneValue.Add("Drive can format media into logical blocks"); + if (ftr.CanFormatBDREWithoutSpare) mmcOneValue.Add("Drive can format BD-RE with no spares allocated"); + if (ftr.CanFormatQCert) mmcOneValue.Add("Drive can format BD-RE discs with quick certification"); + if (ftr.CanFormatCert) mmcOneValue.Add("Drive can format BD-RE discs with full certification"); + if (ftr.CanFormatFRF) mmcOneValue.Add("Drive can fast re-format BD-RE discs"); + if (ftr.CanFormatRRM) mmcOneValue.Add("Drive can format BD-R discs with RRM format"); + if (ftr.CanLoad) mmcOneValue.Add("Drive can load media"); + if (ftr.CanMuteSeparateChannels) mmcOneValue.Add("Drive is able to mute channels separately"); + if (ftr.CanOverwriteSAOTrack) mmcOneValue.Add("Drive can overwrite a SAO track with another in CD-RWs"); + if (ftr.CanOverwriteTAOTrack) mmcOneValue.Add("Drive can overwrite a TAO track with another in CD-RWs"); + if (ftr.CanPlayCDAudio) mmcOneValue.Add("Drive has an analogue audio output"); + if (ftr.CanPseudoOverwriteBDR) mmcOneValue.Add("Drive can write BD-R on Pseudo-OVerwrite SRM mode"); + if (ftr.CanReadAllDualR) mmcOneValue.Add("Drive can read DVD-R DL from all recording modes"); + if (ftr.CanReadAllDualRW) mmcOneValue.Add("Drive can read DVD-RW DL from all recording modes"); + if (ftr.CanReadBD) mmcOneValue.Add("Drive can read BD-ROM"); + if (ftr.CanReadBDR) mmcOneValue.Add("Drive can read BD-R Ver.1"); + if (ftr.CanReadBDRE1) mmcOneValue.Add("Drive can read BD-RE Ver.1"); + if (ftr.CanReadBDRE2) mmcOneValue.Add("Drive can read BD-RE Ver.2"); + if (ftr.CanReadBDROM) mmcOneValue.Add("Drive can read BD-ROM Ver.1"); + if (ftr.CanReadBluBCA) mmcOneValue.Add("Drive can read BD's Burst Cutting Area"); + if (ftr.CanReadCD) mmcOneValue.Add("Drive can read CD-ROM"); + if (ftr.CanWriteCDMRW && ftr.CanReadDVDPlusMRW && ftr.CanWriteDVDPlusMRW) mmcOneValue.Add("Drive can read and write CD-MRW and DVD+MRW"); - else if(ftr.CanReadDVDPlusMRW && ftr.CanWriteDVDPlusMRW) + else if (ftr.CanReadDVDPlusMRW && ftr.CanWriteDVDPlusMRW) mmcOneValue.Add("Drive can read and write DVD+MRW"); - else if(ftr.CanWriteCDMRW && ftr.CanReadDVDPlusMRW) + else if (ftr.CanWriteCDMRW && ftr.CanReadDVDPlusMRW) mmcOneValue.Add("Drive and read DVD+MRW and read and write CD-MRW"); - else if(ftr.CanWriteCDMRW) mmcOneValue.Add("Drive can read and write CD-MRW"); - else if(ftr.CanReadDVDPlusMRW) mmcOneValue.Add("Drive can read CD-MRW and DVD+MRW"); - else if(ftr.CanReadCDMRW) mmcOneValue.Add("Drive can read CD-MRW"); - if(ftr.CanReadCPRM_MKB) mmcOneValue.Add("Drive supports reading Media Key Block of CPRM"); - if(ftr.CanReadDDCD) mmcOneValue.Add("Drive can read DDCDs"); - if(ftr.CanReadDVD) mmcOneValue.Add("Drive can read DVD"); - if(ftr.CanWriteDVDPlusRW) mmcOneValue.Add("Drive can read and write DVD+RW"); - else if(ftr.CanReadDVDPlusRW) mmcOneValue.Add("Drive can read DVD+RW"); - if(ftr.CanWriteDVDPlusR) mmcOneValue.Add("Drive can read and write DVD+R"); - else if(ftr.CanReadDVDPlusR) mmcOneValue.Add("Drive can read DVD+R"); - if(ftr.CanWriteDVDPlusRDL) mmcOneValue.Add("Drive can read and write DVD+R DL"); - else if(ftr.CanReadDVDPlusRDL) mmcOneValue.Add("Drive can read DVD+R DL"); - if(ftr.CanReadDriveAACSCertificate) mmcOneValue.Add("Drive supports reading the Drive Certificate"); - if(ftr.CanReadHDDVD && ftr.CanReadHDDVDR && ftr.CanReadHDDVDRAM) + else if (ftr.CanWriteCDMRW) mmcOneValue.Add("Drive can read and write CD-MRW"); + else if (ftr.CanReadDVDPlusMRW) mmcOneValue.Add("Drive can read CD-MRW and DVD+MRW"); + else if (ftr.CanReadCDMRW) mmcOneValue.Add("Drive can read CD-MRW"); + if (ftr.CanReadCPRM_MKB) mmcOneValue.Add("Drive supports reading Media Key Block of CPRM"); + if (ftr.CanReadDDCD) mmcOneValue.Add("Drive can read DDCDs"); + if (ftr.CanReadDVD) mmcOneValue.Add("Drive can read DVD"); + if (ftr.CanWriteDVDPlusRW) mmcOneValue.Add("Drive can read and write DVD+RW"); + else if (ftr.CanReadDVDPlusRW) mmcOneValue.Add("Drive can read DVD+RW"); + if (ftr.CanWriteDVDPlusR) mmcOneValue.Add("Drive can read and write DVD+R"); + else if (ftr.CanReadDVDPlusR) mmcOneValue.Add("Drive can read DVD+R"); + if (ftr.CanWriteDVDPlusRDL) mmcOneValue.Add("Drive can read and write DVD+R DL"); + else if (ftr.CanReadDVDPlusRDL) mmcOneValue.Add("Drive can read DVD+R DL"); + if (ftr.CanReadDriveAACSCertificate) mmcOneValue.Add("Drive supports reading the Drive Certificate"); + if (ftr.CanReadHDDVD && ftr.CanReadHDDVDR && ftr.CanReadHDDVDRAM) mmcOneValue.Add("Drive can read HD DVD-ROM, HD DVD-RW, HD DVD-R and HD DVD-RAM"); - else if(ftr.CanReadHDDVD && ftr.CanReadHDDVDR) + else if (ftr.CanReadHDDVD && ftr.CanReadHDDVDR) mmcOneValue.Add("Drive can read HD DVD-ROM, HD DVD-RW and HD DVD-R"); - else if(ftr.CanReadHDDVD && ftr.CanReadHDDVDRAM) + else if (ftr.CanReadHDDVD && ftr.CanReadHDDVDRAM) mmcOneValue.Add("Drive can read HD DVD-ROM, HD DVD-RW and HD DVD-RAM"); - else if(ftr.CanReadHDDVD) mmcOneValue.Add("Drive can read HD DVD-ROM and HD DVD-RW"); - if(ftr.CanReadLeadInCDText) mmcOneValue.Add("Drive can return CD-Text from Lead-In"); - if(ftr.CanReadOldBDR) mmcOneValue.Add("Drive can read BD-R pre-1.0"); - if(ftr.CanReadOldBDRE) mmcOneValue.Add("Drive can read BD-RE pre-1.0"); - if(ftr.CanReadOldBDROM) mmcOneValue.Add("Drive can read BD-ROM pre-1.0"); - if(ftr.CanReadSpareAreaInformation) mmcOneValue.Add("Drive can return Spare Area Information"); - if(ftr.CanReportDriveSerial) mmcOneValue.Add("Drive is to report drive serial number"); - if(ftr.CanReportMediaSerial) mmcOneValue.Add("Drive is to read media serial number"); - if(ftr.CanTestWriteDDCDR) mmcOneValue.Add("Drive can do a test writing with DDCD-R"); - if(ftr.CanTestWriteDVD) mmcOneValue.Add("Drive can do a test writing with DVDs"); - if(ftr.CanTestWriteInSAO) mmcOneValue.Add("Drive can do a test writing in Session at Once Mode"); - if(ftr.CanTestWriteInTAO) mmcOneValue.Add("Drive can do a test writing in Track at Once Mode"); - if(ftr.CanUpgradeFirmware) mmcOneValue.Add("Drive supports Microcode Upgrade"); - if(ftr.ErrorRecoveryPage) mmcOneValue.Add("Drive shall report Read/Write Error Recovery mode page"); - if(ftr.Locked) mmcOneValue.Add("Drive can lock media"); - if(ftr.LogicalBlockSize > 0) mmcOneValue.Add($"{ftr.LogicalBlockSize} bytes per logical block"); - if(ftr.MultiRead) - mmcOneValue.Add("Drive claims capability to read all CD formats according to OSTA Multi-Read Specification"); + else if (ftr.CanReadHDDVD) mmcOneValue.Add("Drive can read HD DVD-ROM and HD DVD-RW"); + if (ftr.CanReadLeadInCDText) mmcOneValue.Add("Drive can return CD-Text from Lead-In"); + if (ftr.CanReadOldBDR) mmcOneValue.Add("Drive can read BD-R pre-1.0"); + if (ftr.CanReadOldBDRE) mmcOneValue.Add("Drive can read BD-RE pre-1.0"); + if (ftr.CanReadOldBDROM) mmcOneValue.Add("Drive can read BD-ROM pre-1.0"); + if (ftr.CanReadSpareAreaInformation) mmcOneValue.Add("Drive can return Spare Area Information"); + if (ftr.CanReportDriveSerial) mmcOneValue.Add("Drive is to report drive serial number"); + if (ftr.CanReportMediaSerial) mmcOneValue.Add("Drive is to read media serial number"); + if (ftr.CanTestWriteDDCDR) mmcOneValue.Add("Drive can do a test writing with DDCD-R"); + if (ftr.CanTestWriteDVD) mmcOneValue.Add("Drive can do a test writing with DVDs"); + if (ftr.CanTestWriteInSAO) mmcOneValue.Add("Drive can do a test writing in Session at Once Mode"); + if (ftr.CanTestWriteInTAO) mmcOneValue.Add("Drive can do a test writing in Track at Once Mode"); + if (ftr.CanUpgradeFirmware) mmcOneValue.Add("Drive supports Microcode Upgrade"); + if (ftr.ErrorRecoveryPage) mmcOneValue.Add("Drive shall report Read/Write Error Recovery mode page"); + if (ftr.Locked) mmcOneValue.Add("Drive can lock media"); + if (ftr.LogicalBlockSize > 0) mmcOneValue.Add($"{ftr.LogicalBlockSize} bytes per logical block"); + if (ftr.MultiRead) + mmcOneValue.Add( + "Drive claims capability to read all CD formats according to OSTA Multi-Read Specification"); - if(ftr.PhysicalInterfaceStandard.HasValue) - switch(ftr.PhysicalInterfaceStandard) + if (ftr.PhysicalInterfaceStandard.HasValue) + switch (ftr.PhysicalInterfaceStandard) { case PhysicalInterfaces.Unspecified: mmcOneValue.Add("Drive uses an unspecified physical interface"); @@ -166,86 +169,86 @@ namespace DiscImageChef.Server break; default: mmcOneValue - .Add($"Drive uses an unknown interface with code {(uint)ftr.PhysicalInterfaceStandard}"); + .Add($"Drive uses an unknown interface with code {(uint) ftr.PhysicalInterfaceStandard}"); break; } - if(ftr.PreventJumper) mmcOneValue.Add("Drive power ups locked"); - if(ftr.SupportsBusEncryption) mmcOneValue.Add("Drive supports bus encryption"); - if(ftr.CanWriteBD) mmcOneValue.Add("Drive can write BD-R or BD-RE"); - if(ftr.CanWriteBDR) mmcOneValue.Add("Drive can write BD-R Ver.1"); - if(ftr.CanWriteBDRE1) mmcOneValue.Add("Drive can write BD-RE Ver.1"); - if(ftr.CanWriteBDRE2) mmcOneValue.Add("Drive can write BD-RE Ver.2"); - if(ftr.CanWriteBusEncryptedBlocks) mmcOneValue.Add("Drive supports writing with bus encryption"); - if(ftr.CanWriteCDRW) mmcOneValue.Add("Drive can write CD-RW"); - if(ftr.CanWriteCDRWCAV) mmcOneValue.Add("Drive can write High-Speed CD-RW"); - if(ftr.CanWriteCDSAO && !ftr.CanWriteRaw) + if (ftr.PreventJumper) mmcOneValue.Add("Drive power ups locked"); + if (ftr.SupportsBusEncryption) mmcOneValue.Add("Drive supports bus encryption"); + if (ftr.CanWriteBD) mmcOneValue.Add("Drive can write BD-R or BD-RE"); + if (ftr.CanWriteBDR) mmcOneValue.Add("Drive can write BD-R Ver.1"); + if (ftr.CanWriteBDRE1) mmcOneValue.Add("Drive can write BD-RE Ver.1"); + if (ftr.CanWriteBDRE2) mmcOneValue.Add("Drive can write BD-RE Ver.2"); + if (ftr.CanWriteBusEncryptedBlocks) mmcOneValue.Add("Drive supports writing with bus encryption"); + if (ftr.CanWriteCDRW) mmcOneValue.Add("Drive can write CD-RW"); + if (ftr.CanWriteCDRWCAV) mmcOneValue.Add("Drive can write High-Speed CD-RW"); + if (ftr.CanWriteCDSAO && !ftr.CanWriteRaw) mmcOneValue.Add("Drive can write CDs in Session at Once Mode:"); - else if(!ftr.CanWriteCDSAO && ftr.CanWriteRaw) mmcOneValue.Add("Drive can write CDs in raw Mode:"); - else if(ftr.CanWriteCDSAO && ftr.CanWriteRaw) + else if (!ftr.CanWriteCDSAO && ftr.CanWriteRaw) mmcOneValue.Add("Drive can write CDs in raw Mode:"); + else if (ftr.CanWriteCDSAO && ftr.CanWriteRaw) mmcOneValue.Add("Drive can write CDs in Session at Once and in Raw Modes:"); - if(ftr.CanWriteCDTAO) mmcOneValue.Add("Drive can write CDs in Track at Once Mode:"); - if(ftr.CanWriteCSSManagedDVD) mmcOneValue.Add("Drive can write CSS managed DVDs"); - if(ftr.CanWriteDDCDR) mmcOneValue.Add("Drive supports writing DDCD-R"); - if(ftr.CanWriteDDCDRW) mmcOneValue.Add("Drive supports writing DDCD-RW"); - if(ftr.CanWriteDVDPlusRWDL) mmcOneValue.Add("Drive can read and write DVD+RW DL"); - else if(ftr.CanReadDVDPlusRWDL) mmcOneValue.Add("Drive can read DVD+RW DL"); - if(ftr.CanWriteDVDR && ftr.CanWriteDVDRW && ftr.CanWriteDVDRDL) + if (ftr.CanWriteCDTAO) mmcOneValue.Add("Drive can write CDs in Track at Once Mode:"); + if (ftr.CanWriteCSSManagedDVD) mmcOneValue.Add("Drive can write CSS managed DVDs"); + if (ftr.CanWriteDDCDR) mmcOneValue.Add("Drive supports writing DDCD-R"); + if (ftr.CanWriteDDCDRW) mmcOneValue.Add("Drive supports writing DDCD-RW"); + if (ftr.CanWriteDVDPlusRWDL) mmcOneValue.Add("Drive can read and write DVD+RW DL"); + else if (ftr.CanReadDVDPlusRWDL) mmcOneValue.Add("Drive can read DVD+RW DL"); + if (ftr.CanWriteDVDR && ftr.CanWriteDVDRW && ftr.CanWriteDVDRDL) mmcOneValue.Add("Drive supports writing DVD-R, DVD-RW and DVD-R DL"); - else if(ftr.CanWriteDVDR && ftr.CanWriteDVDRDL) + else if (ftr.CanWriteDVDR && ftr.CanWriteDVDRDL) mmcOneValue.Add("Drive supports writing DVD-R and DVD-R DL"); - else if(ftr.CanWriteDVDR && ftr.CanWriteDVDRW) mmcOneValue.Add("Drive supports writing DVD-R and DVD-RW"); - else if(ftr.CanWriteDVDR) mmcOneValue.Add("Drive supports writing DVD-R"); - if(ftr.CanWriteHDDVDR && ftr.CanWriteHDDVDRAM) + else if (ftr.CanWriteDVDR && ftr.CanWriteDVDRW) mmcOneValue.Add("Drive supports writing DVD-R and DVD-RW"); + else if (ftr.CanWriteDVDR) mmcOneValue.Add("Drive supports writing DVD-R"); + if (ftr.CanWriteHDDVDR && ftr.CanWriteHDDVDRAM) mmcOneValue.Add("Drive can write HD DVD-RW, HD DVD-R and HD DVD-RAM"); - else if(ftr.CanWriteHDDVDR) mmcOneValue.Add("Drive can write HD DVD-RW and HD DVD-R"); - else if(ftr.CanWriteHDDVDRAM) mmcOneValue.Add("Drive can write HD DVD-RW and HD DVD-RAM"); + else if (ftr.CanWriteHDDVDR) mmcOneValue.Add("Drive can write HD DVD-RW and HD DVD-R"); + else if (ftr.CanWriteHDDVDRAM) mmcOneValue.Add("Drive can write HD DVD-RW and HD DVD-RAM"); // TODO: Write HD DVD-RW /* else mmcOneValue.Add("Drive can write HD DVD-RW"); */ - if(ftr.CanWriteOldBDR) mmcOneValue.Add("Drive can write BD-R pre-1.0"); - if(ftr.CanWriteOldBDRE) mmcOneValue.Add("Drive can write BD-RE pre-1.0"); - if(ftr.CanWriteRWSubchannelInTAO) + if (ftr.CanWriteOldBDR) mmcOneValue.Add("Drive can write BD-R pre-1.0"); + if (ftr.CanWriteOldBDRE) mmcOneValue.Add("Drive can write BD-RE pre-1.0"); + if (ftr.CanWriteRWSubchannelInTAO) { mmcOneValue.Add("Drive can write user provided data in the R-W subchannels in Track at Once Mode"); - if(ftr.CanWriteRawSubchannelInTAO) + if (ftr.CanWriteRawSubchannelInTAO) mmcOneValue.Add("Drive accepts RAW R-W subchannel data in Track at Once Mode"); - if(ftr.CanWritePackedSubchannelInTAO) + if (ftr.CanWritePackedSubchannelInTAO) mmcOneValue.Add("Drive accepts Packed R-W subchannel data in Track at Once Mode"); } - if(ftr.CanWriteRWSubchannelInSAO) + if (ftr.CanWriteRWSubchannelInSAO) mmcOneValue.Add("Drive can write user provided data in the R-W subchannels in Session at Once Mode"); - if(ftr.CanWriteRaw && ftr.CanWriteRawMultiSession) + if (ftr.CanWriteRaw && ftr.CanWriteRawMultiSession) mmcOneValue.Add("Drive can write multi-session CDs in raw mode"); - if(ftr.EmbeddedChanger) + if (ftr.EmbeddedChanger) { mmcOneValue.Add("Drive contains an embedded changer"); - if(ftr.ChangerIsSideChangeCapable) mmcOneValue.Add("Drive can change disc side"); - if(ftr.ChangerSupportsDiscPresent) + if (ftr.ChangerIsSideChangeCapable) mmcOneValue.Add("Drive can change disc side"); + if (ftr.ChangerSupportsDiscPresent) mmcOneValue.Add("Drive is able to report slots contents after a reset or change"); mmcOneValue.Add($"Drive has {ftr.ChangerSlots + 1} slots"); } - if(ftr.SupportsCSS && ftr.CSSVersion.HasValue) + if (ftr.SupportsCSS && ftr.CSSVersion.HasValue) mmcOneValue.Add($"Drive supports DVD CSS/CPPM version {ftr.CSSVersion}"); - else if(ftr.SupportsCSS) mmcOneValue.Add("Drive supports DVD CSS/CPRM"); - if(ftr.SupportsCPRM && ftr.CPRMVersion.HasValue) + else if (ftr.SupportsCSS) mmcOneValue.Add("Drive supports DVD CSS/CPRM"); + if (ftr.SupportsCPRM && ftr.CPRMVersion.HasValue) mmcOneValue.Add($"Drive supports DVD CPPM version {ftr.CPRMVersion}"); - else if(ftr.SupportsCPRM) mmcOneValue.Add("Drive supports DVD CPRM"); - if(ftr.DBML) mmcOneValue.Add("Drive reports Device Busy Class events during medium loading/unloading"); - if(ftr.DVDMultiRead) mmcOneValue.Add("Drive conforms to DVD Multi Drive Read-only Specifications"); - if(ftr.FirmwareDate.HasValue) mmcOneValue.Add($"Drive firmware is dated {ftr.FirmwareDate}"); - if(ftr.SupportsC2) mmcOneValue.Add("Drive supports C2 Error Pointers"); - if(ftr.SupportsDAP) mmcOneValue.Add("Drive supports the DAP bit in the READ CD and READ CD MSF commands"); - if(ftr.SupportsDeviceBusyEvent) mmcOneValue.Add("Drive supports Device Busy events"); + else if (ftr.SupportsCPRM) mmcOneValue.Add("Drive supports DVD CPRM"); + if (ftr.DBML) mmcOneValue.Add("Drive reports Device Busy Class events during medium loading/unloading"); + if (ftr.DVDMultiRead) mmcOneValue.Add("Drive conforms to DVD Multi Drive Read-only Specifications"); + if (ftr.FirmwareDate.HasValue) mmcOneValue.Add($"Drive firmware is dated {ftr.FirmwareDate}"); + if (ftr.SupportsC2) mmcOneValue.Add("Drive supports C2 Error Pointers"); + if (ftr.SupportsDAP) mmcOneValue.Add("Drive supports the DAP bit in the READ CD and READ CD MSF commands"); + if (ftr.SupportsDeviceBusyEvent) mmcOneValue.Add("Drive supports Device Busy events"); - if(ftr.LoadingMechanismType.HasValue) - switch(ftr.LoadingMechanismType) + if (ftr.LoadingMechanismType.HasValue) + switch (ftr.LoadingMechanismType) { case 0: mmcOneValue.Add("Drive uses media caddy"); @@ -267,20 +270,20 @@ namespace DiscImageChef.Server break; } - if(ftr.SupportsHybridDiscs) mmcOneValue.Add("Drive is able to access Hybrid discs"); - if(ftr.SupportsModePage1Ch) + if (ftr.SupportsHybridDiscs) mmcOneValue.Add("Drive is able to access Hybrid discs"); + if (ftr.SupportsModePage1Ch) mmcOneValue.Add("Drive supports the Informational Exceptions Control mode page 1Ch"); - if(ftr.SupportsOSSC) + if (ftr.SupportsOSSC) mmcOneValue.Add("Drive supports the Trusted Computing Group Optical Security Subsystem Class"); - if(ftr.SupportsPWP) mmcOneValue.Add("Drive supports set/release of PWP status"); - if(ftr.SupportsSWPP) mmcOneValue.Add("Drive supports the SWPP bit of the Timeout and Protect mode page"); - if(ftr.SupportsSecurDisc) mmcOneValue.Add("Drive supports SecurDisc"); - if(ftr.SupportsSeparateVolume) mmcOneValue.Add("Drive supports separate volume per channel"); - if(ftr.SupportsVCPS) mmcOneValue.Add("Drive supports VCPS"); - if(ftr.VolumeLevels.HasValue) mmcOneValue.Add($"Drive has {ftr.VolumeLevels + 1} volume levels"); - if(ftr.SupportsWriteProtectPAC) + if (ftr.SupportsPWP) mmcOneValue.Add("Drive supports set/release of PWP status"); + if (ftr.SupportsSWPP) mmcOneValue.Add("Drive supports the SWPP bit of the Timeout and Protect mode page"); + if (ftr.SupportsSecurDisc) mmcOneValue.Add("Drive supports SecurDisc"); + if (ftr.SupportsSeparateVolume) mmcOneValue.Add("Drive supports separate volume per channel"); + if (ftr.SupportsVCPS) mmcOneValue.Add("Drive supports VCPS"); + if (ftr.VolumeLevels.HasValue) mmcOneValue.Add($"Drive has {ftr.VolumeLevels + 1} volume levels"); + if (ftr.SupportsWriteProtectPAC) mmcOneValue.Add("Drive supports reading/writing the Disc Write Protect PAC on BD-R/-RE media"); - if(ftr.SupportsWriteInhibitDCB) + if (ftr.SupportsWriteInhibitDCB) mmcOneValue.Add("Drive supports writing the Write Inhibit DCB on DVD+RW media"); mmcOneValue.Sort(); diff --git a/DiscImageChef.Server/App_Start/ScsiMmcMode.cs b/DiscImageChef.Server/App_Start/ScsiMmcMode.cs index 7c557828..8e41a954 100644 --- a/DiscImageChef.Server/App_Start/ScsiMmcMode.cs +++ b/DiscImageChef.Server/App_Start/ScsiMmcMode.cs @@ -46,20 +46,20 @@ namespace DiscImageChef.Server /// List to put the values on public static void Report(Modes.ModePage_2A mode, ref List mmcOneValue) { - if(mode.AudioPlay) mmcOneValue.Add("Drive can play audio"); - if(mode.Mode2Form1) mmcOneValue.Add("Drive can read sectors in Mode 2 Form 1 format"); - if(mode.Mode2Form2) mmcOneValue.Add("Drive can read sectors in Mode 2 Form 2 format"); - if(mode.MultiSession) mmcOneValue.Add("Drive supports multi-session discs and/or Photo-CD"); + if (mode.AudioPlay) mmcOneValue.Add("Drive can play audio"); + if (mode.Mode2Form1) mmcOneValue.Add("Drive can read sectors in Mode 2 Form 1 format"); + if (mode.Mode2Form2) mmcOneValue.Add("Drive can read sectors in Mode 2 Form 2 format"); + if (mode.MultiSession) mmcOneValue.Add("Drive supports multi-session discs and/or Photo-CD"); - if(mode.CDDACommand) mmcOneValue.Add("Drive can read digital audio"); - if(mode.AccurateCDDA) mmcOneValue.Add("Drive can continue from streaming loss"); - if(mode.Subchannel) mmcOneValue.Add("Drive can read uncorrected and interleaved R-W subchannels"); - if(mode.DeinterlaveSubchannel) mmcOneValue.Add("Drive can read, deinterleave and correct R-W subchannels"); - if(mode.C2Pointer) mmcOneValue.Add("Drive supports C2 pointers"); - if(mode.UPC) mmcOneValue.Add("Drive can read Media Catalogue Number"); - if(mode.ISRC) mmcOneValue.Add("Drive can read ISRC"); + if (mode.CDDACommand) mmcOneValue.Add("Drive can read digital audio"); + if (mode.AccurateCDDA) mmcOneValue.Add("Drive can continue from streaming loss"); + if (mode.Subchannel) mmcOneValue.Add("Drive can read uncorrected and interleaved R-W subchannels"); + if (mode.DeinterlaveSubchannel) mmcOneValue.Add("Drive can read, deinterleave and correct R-W subchannels"); + if (mode.C2Pointer) mmcOneValue.Add("Drive supports C2 pointers"); + if (mode.UPC) mmcOneValue.Add("Drive can read Media Catalogue Number"); + if (mode.ISRC) mmcOneValue.Add("Drive can read ISRC"); - switch(mode.LoadingMechanism) + switch (mode.LoadingMechanism) { case 0: mmcOneValue.Add("Drive uses media caddy"); @@ -81,89 +81,93 @@ namespace DiscImageChef.Server break; } - if(mode.Lock) mmcOneValue.Add("Drive can lock media"); - if(mode.PreventJumper) + if (mode.Lock) mmcOneValue.Add("Drive can lock media"); + if (mode.PreventJumper) { mmcOneValue.Add("Drive power ups locked"); mmcOneValue.Add(mode.LockState - ? "Drive is locked, media cannot be ejected or inserted" - : "Drive is not locked, media can be ejected and inserted"); + ? "Drive is locked, media cannot be ejected or inserted" + : "Drive is not locked, media can be ejected and inserted"); } else + { mmcOneValue.Add(mode.LockState - ? "Drive is locked, media cannot be ejected, but if empty, can be inserted" - : "Drive is not locked, media can be ejected and inserted"); + ? "Drive is locked, media cannot be ejected, but if empty, can be inserted" + : "Drive is not locked, media can be ejected and inserted"); + } - if(mode.Eject) mmcOneValue.Add("Drive can eject media"); + if (mode.Eject) mmcOneValue.Add("Drive can eject media"); - if(mode.SeparateChannelMute) mmcOneValue.Add("Each channel can be muted independently"); - if(mode.SeparateChannelVolume) mmcOneValue.Add("Each channel's volume can be controlled independently"); + if (mode.SeparateChannelMute) mmcOneValue.Add("Each channel can be muted independently"); + if (mode.SeparateChannelVolume) mmcOneValue.Add("Each channel's volume can be controlled independently"); - if(mode.SupportedVolumeLevels > 0) + if (mode.SupportedVolumeLevels > 0) mmcOneValue.Add($"Drive supports {mode.SupportedVolumeLevels} volume levels"); - if(mode.BufferSize > 0) mmcOneValue.Add($"Drive has {mode.BufferSize} Kbyte of buffer"); - if(mode.MaximumSpeed > 0) + if (mode.BufferSize > 0) mmcOneValue.Add($"Drive has {mode.BufferSize} Kbyte of buffer"); + if (mode.MaximumSpeed > 0) mmcOneValue.Add($"Drive's maximum reading speed is {mode.MaximumSpeed} Kbyte/sec."); - if(mode.CurrentSpeed > 0) + if (mode.CurrentSpeed > 0) mmcOneValue.Add($"Drive's current reading speed is {mode.CurrentSpeed} Kbyte/sec."); - if(mode.ReadCDR) + if (mode.ReadCDR) { mmcOneValue.Add(mode.WriteCDR ? "Drive can read and write CD-R" : "Drive can read CD-R"); - if(mode.Method2) mmcOneValue.Add("Drive supports reading CD-R packet media"); + if (mode.Method2) mmcOneValue.Add("Drive supports reading CD-R packet media"); } - if(mode.ReadCDRW) + if (mode.ReadCDRW) mmcOneValue.Add(mode.WriteCDRW ? "Drive can read and write CD-RW" : "Drive can read CD-RW"); - if(mode.ReadDVDROM) mmcOneValue.Add("Drive can read DVD-ROM"); - if(mode.ReadDVDR) + if (mode.ReadDVDROM) mmcOneValue.Add("Drive can read DVD-ROM"); + if (mode.ReadDVDR) mmcOneValue.Add(mode.WriteDVDR ? "Drive can read and write DVD-R" : "Drive can read DVD-R"); - if(mode.ReadDVDRAM) + if (mode.ReadDVDRAM) mmcOneValue.Add(mode.WriteDVDRAM ? "Drive can read and write DVD-RAM" : "Drive can read DVD-RAM"); - if(mode.Composite) mmcOneValue.Add("Drive can deliver a composite audio and video data stream"); - if(mode.DigitalPort1) mmcOneValue.Add("Drive supports IEC-958 digital output on port 1"); - if(mode.DigitalPort2) mmcOneValue.Add("Drive supports IEC-958 digital output on port 2"); + if (mode.Composite) mmcOneValue.Add("Drive can deliver a composite audio and video data stream"); + if (mode.DigitalPort1) mmcOneValue.Add("Drive supports IEC-958 digital output on port 1"); + if (mode.DigitalPort2) mmcOneValue.Add("Drive supports IEC-958 digital output on port 2"); - if(mode.SDP) mmcOneValue.Add("Drive contains a changer that can report the exact contents of the slots"); - if(mode.CurrentWriteSpeedSelected > 0) + if (mode.SDP) mmcOneValue.Add("Drive contains a changer that can report the exact contents of the slots"); + if (mode.CurrentWriteSpeedSelected > 0) { - if(mode.RotationControlSelected == 0) + if (mode.RotationControlSelected == 0) mmcOneValue - .Add($"Drive's current writing speed is {mode.CurrentWriteSpeedSelected} Kbyte/sec. in CLV mode"); - else if(mode.RotationControlSelected == 1) + .Add( + $"Drive's current writing speed is {mode.CurrentWriteSpeedSelected} Kbyte/sec. in CLV mode"); + else if (mode.RotationControlSelected == 1) mmcOneValue - .Add($"Drive's current writing speed is {mode.CurrentWriteSpeedSelected} Kbyte/sec. in pure CAV mode"); + .Add( + $"Drive's current writing speed is {mode.CurrentWriteSpeedSelected} Kbyte/sec. in pure CAV mode"); } else { - if(mode.MaxWriteSpeed > 0) + if (mode.MaxWriteSpeed > 0) mmcOneValue.Add($"Drive's maximum writing speed is {mode.MaxWriteSpeed} Kbyte/sec."); - if(mode.CurrentWriteSpeed > 0) + if (mode.CurrentWriteSpeed > 0) mmcOneValue.Add($"Drive's current writing speed is {mode.CurrentWriteSpeed} Kbyte/sec."); } - if(mode.WriteSpeedPerformanceDescriptors != null) - foreach(Modes.ModePage_2A_WriteDescriptor descriptor in + if (mode.WriteSpeedPerformanceDescriptors != null) + foreach (var descriptor in mode.WriteSpeedPerformanceDescriptors.Where(descriptor => descriptor.WriteSpeed > 0)) - if(descriptor.RotationControl == 0) + if (descriptor.RotationControl == 0) mmcOneValue.Add($"Drive supports writing at {descriptor.WriteSpeed} Kbyte/sec. in CLV mode"); - else if(descriptor.RotationControl == 1) + else if (descriptor.RotationControl == 1) mmcOneValue - .Add($"Drive supports writing at is {descriptor.WriteSpeed} Kbyte/sec. in pure CAV mode"); + .Add($"Drive supports writing at is {descriptor.WriteSpeed} Kbyte/sec. in pure CAV mode"); - if(mode.TestWrite) mmcOneValue.Add("Drive supports test writing"); + if (mode.TestWrite) mmcOneValue.Add("Drive supports test writing"); - if(mode.ReadBarcode) mmcOneValue.Add("Drive can read barcode"); + if (mode.ReadBarcode) mmcOneValue.Add("Drive can read barcode"); - if(mode.SCC) mmcOneValue.Add("Drive can read both sides of a disc"); - if(mode.LeadInPW) mmcOneValue.Add("Drive an read raw R-W subchannel from the Lead-In"); + if (mode.SCC) mmcOneValue.Add("Drive can read both sides of a disc"); + if (mode.LeadInPW) mmcOneValue.Add("Drive an read raw R-W subchannel from the Lead-In"); - if(mode.CMRSupported == 1) mmcOneValue.Add("Drive supports DVD CSS and/or DVD CPPM"); + if (mode.CMRSupported == 1) mmcOneValue.Add("Drive supports DVD CSS and/or DVD CPPM"); - if(mode.BUF) mmcOneValue.Add("Drive supports buffer under-run free recording"); + if (mode.BUF) mmcOneValue.Add("Drive supports buffer under-run free recording"); mmcOneValue.Sort(); mmcOneValue.Add(""); diff --git a/DiscImageChef.Server/App_Start/ScsiModeSense.cs b/DiscImageChef.Server/App_Start/ScsiModeSense.cs index 3a512445..06cc4b4a 100644 --- a/DiscImageChef.Server/App_Start/ScsiModeSense.cs +++ b/DiscImageChef.Server/App_Start/ScsiModeSense.cs @@ -47,24 +47,25 @@ namespace DiscImageChef.Server /// SCSI peripheral device type /// List to put values on /// List to put key=value pairs on - public static void Report(ScsiMode modeSense, string vendor, - PeripheralDeviceTypes deviceType, - ref List scsiOneValue, ref Dictionary modePages) + public static void Report(ScsiMode modeSense, string vendor, + PeripheralDeviceTypes deviceType, + ref List scsiOneValue, ref Dictionary modePages) { - if(modeSense.MediumType.HasValue) scsiOneValue.Add($"Medium type is {modeSense.MediumType:X2}h"); - if(modeSense.WriteProtected) scsiOneValue.Add("Device is write protected."); - if(modeSense.BlockDescriptors != null) - foreach(BlockDescriptor descriptor in modeSense.BlockDescriptors) - if(descriptor.Blocks.HasValue && descriptor.BlockLength.HasValue) + if (modeSense.MediumType.HasValue) scsiOneValue.Add($"Medium type is {modeSense.MediumType:X2}h"); + if (modeSense.WriteProtected) scsiOneValue.Add("Device is write protected."); + if (modeSense.BlockDescriptors != null) + foreach (var descriptor in modeSense.BlockDescriptors) + if (descriptor.Blocks.HasValue && descriptor.BlockLength.HasValue) scsiOneValue - .Add($"Density code {descriptor.Density:X2}h has {descriptor.Blocks} blocks of {descriptor.BlockLength} bytes each"); + .Add( + $"Density code {descriptor.Density:X2}h has {descriptor.Blocks} blocks of {descriptor.BlockLength} bytes each"); else scsiOneValue.Add($"Density code {descriptor.Density:X2}h"); - if(modeSense.DPOandFUA) scsiOneValue.Add("Drive supports DPO and FUA bits"); - if(modeSense.BlankCheckEnabled) scsiOneValue.Add("Blank checking during write is enabled"); - if(modeSense.BufferedMode.HasValue) - switch(modeSense.BufferedMode) + if (modeSense.DPOandFUA) scsiOneValue.Add("Drive supports DPO and FUA bits"); + if (modeSense.BlankCheckEnabled) scsiOneValue.Add("Blank checking during write is enabled"); + if (modeSense.BufferedMode.HasValue) + switch (modeSense.BufferedMode) { case 0: scsiOneValue.Add("Device writes directly to media"); @@ -80,35 +81,38 @@ namespace DiscImageChef.Server break; } - if(modeSense.ModePages == null) return; + if (modeSense.ModePages == null) return; - foreach(ScsiPage page in modeSense.ModePages) - switch(page.page) + foreach (var page in modeSense.ModePages) + switch (page.page) { case 0x00: { - if(deviceType == PeripheralDeviceTypes.MultiMediaDevice && page.subpage == 0) + if (deviceType == PeripheralDeviceTypes.MultiMediaDevice && page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_00_SFF(page.value)); else modePages - .Add(page.subpage != 0 ? $"MODE page {page.page:X2}h subpage {page.subpage:X2}h" : $"MODE page {page.page:X2}h", + .Add( + page.subpage != 0 + ? $"MODE page {page.page:X2}h subpage {page.subpage:X2}h" + : $"MODE page {page.page:X2}h", "Unknown vendor mode page"); break; } case 0x01: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.MultiMediaDevice - ? Modes.PrettifyModePage_01_MMC(page.value) - : Modes.PrettifyModePage_01(page.value)); + deviceType == PeripheralDeviceTypes.MultiMediaDevice + ? Modes.PrettifyModePage_01_MMC(page.value) + : Modes.PrettifyModePage_01(page.value)); else goto default; break; } case 0x02: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_02(page.value)); else goto default; @@ -116,7 +120,7 @@ namespace DiscImageChef.Server } case 0x03: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_03(page.value)); else goto default; @@ -124,7 +128,7 @@ namespace DiscImageChef.Server } case 0x04: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_04(page.value)); else goto default; @@ -132,7 +136,7 @@ namespace DiscImageChef.Server } case 0x05: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_05(page.value)); else goto default; @@ -140,7 +144,7 @@ namespace DiscImageChef.Server } case 0x06: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_06(page.value)); else goto default; @@ -148,18 +152,18 @@ namespace DiscImageChef.Server } case 0x07: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.MultiMediaDevice - ? Modes.PrettifyModePage_07_MMC(page.value) - : Modes.PrettifyModePage_07(page.value)); + deviceType == PeripheralDeviceTypes.MultiMediaDevice + ? Modes.PrettifyModePage_07_MMC(page.value) + : Modes.PrettifyModePage_07(page.value)); else goto default; break; } case 0x08: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_08(page.value)); else goto default; @@ -167,18 +171,18 @@ namespace DiscImageChef.Server } case 0x0A: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0A(page.value)); - else if(page.subpage == 1) + else if (page.subpage == 1) modePages.Add($"MODE page {page.page:X2}h subpage {page.subpage:X2}h", - Modes.PrettifyModePage_0A_S01(page.value)); + Modes.PrettifyModePage_0A_S01(page.value)); else goto default; break; } case 0x0B: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0B(page.value)); else goto default; @@ -186,7 +190,7 @@ namespace DiscImageChef.Server } case 0x0D: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0D(page.value)); else goto default; @@ -194,7 +198,7 @@ namespace DiscImageChef.Server } case 0x0E: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0E(page.value)); else goto default; @@ -202,7 +206,7 @@ namespace DiscImageChef.Server } case 0x0F: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0F(page.value)); else goto default; @@ -210,18 +214,18 @@ namespace DiscImageChef.Server } case 0x10: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.SequentialAccess - ? Modes.PrettifyModePage_10_SSC(page.value) - : Modes.PrettifyModePage_10(page.value)); + deviceType == PeripheralDeviceTypes.SequentialAccess + ? Modes.PrettifyModePage_10_SSC(page.value) + : Modes.PrettifyModePage_10(page.value)); else goto default; break; } case 0x11: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_11(page.value)); else goto default; @@ -231,7 +235,7 @@ namespace DiscImageChef.Server case 0x13: case 0x14: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_12_13_14(page.value)); else goto default; @@ -239,18 +243,18 @@ namespace DiscImageChef.Server } case 0x1A: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_1A(page.value)); - else if(page.subpage == 1) + else if (page.subpage == 1) modePages.Add($"MODE page {page.page:X2}h subpage {page.subpage:X2}h", - Modes.PrettifyModePage_1A_S01(page.value)); + Modes.PrettifyModePage_1A_S01(page.value)); else goto default; break; } case 0x1B: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_1B(page.value)); else goto default; @@ -258,21 +262,21 @@ namespace DiscImageChef.Server } case 0x1C: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.MultiMediaDevice - ? Modes.PrettifyModePage_1C_SFF(page.value) - : Modes.PrettifyModePage_1C(page.value)); - else if(page.subpage == 1) + deviceType == PeripheralDeviceTypes.MultiMediaDevice + ? Modes.PrettifyModePage_1C_SFF(page.value) + : Modes.PrettifyModePage_1C(page.value)); + else if (page.subpage == 1) modePages.Add($"MODE page {page.page:X2}h subpage {page.subpage:X2}h", - Modes.PrettifyModePage_1C_S01(page.value)); + Modes.PrettifyModePage_1C_S01(page.value)); else goto default; break; } case 0x1D: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_1D(page.value)); else goto default; @@ -280,7 +284,7 @@ namespace DiscImageChef.Server } case 0x21: { - if(vendor == "CERTANCE") + if (vendor == "CERTANCE") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyCertanceModePage_21(page.value)); else goto default; @@ -288,7 +292,7 @@ namespace DiscImageChef.Server } case 0x22: { - if(vendor == "CERTANCE") + if (vendor == "CERTANCE") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyCertanceModePage_22(page.value)); else goto default; @@ -296,7 +300,7 @@ namespace DiscImageChef.Server } case 0x24: { - if(vendor == "IBM") + if (vendor == "IBM") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyIBMModePage_24(page.value)); else goto default; @@ -304,7 +308,7 @@ namespace DiscImageChef.Server } case 0x2A: { - if(page.subpage == 0) + if (page.subpage == 0) modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_2A(page.value)); else goto default; @@ -312,7 +316,7 @@ namespace DiscImageChef.Server } case 0x2F: { - if(vendor == "IBM") + if (vendor == "IBM") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyIBMModePage_2F(page.value)); else goto default; @@ -320,7 +324,7 @@ namespace DiscImageChef.Server } case 0x30: { - if(Modes.IsAppleModePage_30(page.value)) + if (Modes.IsAppleModePage_30(page.value)) modePages.Add("MODE page 30h", "Drive identifies as an Apple OEM drive"); else goto default; @@ -328,7 +332,7 @@ namespace DiscImageChef.Server } case 0x3B: { - if(vendor == "HP") + if (vendor == "HP") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3B(page.value)); else goto default; @@ -336,7 +340,7 @@ namespace DiscImageChef.Server } case 0x3C: { - if(vendor == "HP") + if (vendor == "HP") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3C(page.value)); else goto default; @@ -344,9 +348,9 @@ namespace DiscImageChef.Server } case 0x3D: { - if(vendor == "IBM") + if (vendor == "IBM") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyIBMModePage_3D(page.value)); - else if(vendor == "HP") + else if (vendor == "HP") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3D(page.value)); else goto default; @@ -354,9 +358,9 @@ namespace DiscImageChef.Server } case 0x3E: { - if(vendor == "FUJITSU") + if (vendor == "FUJITSU") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyFujitsuModePage_3E(page.value)); - else if(vendor == "HP") + else if (vendor == "HP") modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3E(page.value)); else goto default; @@ -364,16 +368,19 @@ namespace DiscImageChef.Server } default: { - modePages.Add(page.subpage != 0 ? $"MODE page {page.page:X2}h subpage {page.subpage:X2}h" : $"MODE page {page.page:X2}h", - "Unknown mode page"); + modePages.Add( + page.subpage != 0 + ? $"MODE page {page.page:X2}h subpage {page.subpage:X2}h" + : $"MODE page {page.page:X2}h", + "Unknown mode page"); } break; } - Dictionary newModePages = new Dictionary(); - foreach(KeyValuePair kvp in modePages) + var newModePages = new Dictionary(); + foreach (var kvp in modePages) newModePages.Add(kvp.Key, - string.IsNullOrWhiteSpace(kvp.Value) ? "Undecoded" : kvp.Value.Replace("\n", "
")); + string.IsNullOrWhiteSpace(kvp.Value) ? "Undecoded" : kvp.Value.Replace("\n", "
")); modePages = newModePages; } diff --git a/DiscImageChef.Server/App_Start/SscTestedMedia.cs b/DiscImageChef.Server/App_Start/SscTestedMedia.cs index 6b6b2eec..f783261b 100644 --- a/DiscImageChef.Server/App_Start/SscTestedMedia.cs +++ b/DiscImageChef.Server/App_Start/SscTestedMedia.cs @@ -44,24 +44,29 @@ namespace DiscImageChef.Server /// List of tested media public static void Report(IEnumerable testedMedia, ref List mediaOneValue) { - foreach(TestedSequentialMedia media in testedMedia) + foreach (var media in testedMedia) { - if(!string.IsNullOrWhiteSpace(media.MediumTypeName)) + if (!string.IsNullOrWhiteSpace(media.MediumTypeName)) { mediaOneValue.Add($"Information for medium named \"{media.MediumTypeName}\""); - if(media.MediumType.HasValue) mediaOneValue.Add($"Medium type code: {media.MediumType:X2}h"); + if (media.MediumType.HasValue) mediaOneValue.Add($"Medium type code: {media.MediumType:X2}h"); } - else if(media.MediumType.HasValue) + else if (media.MediumType.HasValue) + { mediaOneValue.Add($"Information for medium type {media.MediumType:X2}h"); - else mediaOneValue.Add("Information for unknown medium type"); + } + else + { + mediaOneValue.Add("Information for unknown medium type"); + } - if(!string.IsNullOrWhiteSpace(media.Manufacturer)) + if (!string.IsNullOrWhiteSpace(media.Manufacturer)) mediaOneValue.Add($"Medium manufactured by: {media.Manufacturer}"); - if(!string.IsNullOrWhiteSpace(media.Model)) mediaOneValue.Add($"Medium model: {media.Model}"); + if (!string.IsNullOrWhiteSpace(media.Model)) mediaOneValue.Add($"Medium model: {media.Model}"); - if(media.Density.HasValue) mediaOneValue.Add($"Medium has density code {media.Density:X2}h"); - if(media.CanReadMediaSerial == true) mediaOneValue.Add("Drive can read medium serial number."); - if(media.MediaIsRecognized) mediaOneValue.Add("Drive recognizes this medium."); + if (media.Density.HasValue) mediaOneValue.Add($"Medium has density code {media.Density:X2}h"); + if (media.CanReadMediaSerial == true) mediaOneValue.Add("Drive can read medium serial number."); + if (media.MediaIsRecognized) mediaOneValue.Add("Drive recognizes this medium."); mediaOneValue.Add(""); } diff --git a/DiscImageChef.Server/App_Start/StatsConverter.cs b/DiscImageChef.Server/App_Start/StatsConverter.cs index da99fb37..1e140a86 100644 --- a/DiscImageChef.Server/App_Start/StatsConverter.cs +++ b/DiscImageChef.Server/App_Start/StatsConverter.cs @@ -41,51 +41,51 @@ namespace DiscImageChef.Server { public static void Convert(Stats newStats) { - DicServerContext ctx = new DicServerContext(); + var ctx = new DicServerContext(); - if(newStats.Commands != null) + if (newStats.Commands != null) { - if(newStats.Commands.Analyze > 0) + if (newStats.Commands.Analyze > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "analyze"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "analyze"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Analyze, Name = "analyze"}); else existing.Count += newStats.Commands.Analyze; } - if(newStats.Commands.Benchmark > 0) + if (newStats.Commands.Benchmark > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "benchmark"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "benchmark"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Benchmark, Name = "benchmark"}); else existing.Count += newStats.Commands.Benchmark; } - if(newStats.Commands.Checksum > 0) + if (newStats.Commands.Checksum > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "checksum"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "checksum"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Checksum, Name = "checksum"}); else existing.Count += newStats.Commands.Checksum; } - if(newStats.Commands.Compare > 0) + if (newStats.Commands.Compare > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "compare"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "compare"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Compare, Name = "compare"}); else existing.Count += newStats.Commands.Compare; } - if(newStats.Commands.CreateSidecar > 0) + if (newStats.Commands.CreateSidecar > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "create-sidecar"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "create-sidecar"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command { Count = newStats.Commands.CreateSidecar, Name = "create-sidecar" @@ -93,127 +93,127 @@ namespace DiscImageChef.Server else existing.Count += newStats.Commands.CreateSidecar; } - if(newStats.Commands.Decode > 0) + if (newStats.Commands.Decode > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "decode"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "decode"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Decode, Name = "decode"}); else existing.Count += newStats.Commands.Decode; } - if(newStats.Commands.DeviceInfo > 0) + if (newStats.Commands.DeviceInfo > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "device-info"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "device-info"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.DeviceInfo, Name = "device-info"}); else existing.Count += newStats.Commands.DeviceInfo; } - if(newStats.Commands.DeviceReport > 0) + if (newStats.Commands.DeviceReport > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "device-report"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "device-report"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.DeviceReport, Name = "device-report"}); else existing.Count += newStats.Commands.DeviceReport; } - if(newStats.Commands.DumpMedia > 0) + if (newStats.Commands.DumpMedia > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "dump-media"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "dump-media"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.DumpMedia, Name = "dump-media"}); else existing.Count += newStats.Commands.DumpMedia; } - if(newStats.Commands.Entropy > 0) + if (newStats.Commands.Entropy > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "entropy"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "entropy"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Entropy, Name = "entropy"}); else existing.Count += newStats.Commands.Entropy; } - if(newStats.Commands.Formats > 0) + if (newStats.Commands.Formats > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "formats"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "formats"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Formats, Name = "formats"}); else existing.Count += newStats.Commands.Formats; } - if(newStats.Commands.MediaInfo > 0) + if (newStats.Commands.MediaInfo > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "media-info"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "media-info"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.MediaInfo, Name = "media-info"}); else existing.Count += newStats.Commands.MediaInfo; } - if(newStats.Commands.MediaScan > 0) + if (newStats.Commands.MediaScan > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "media-scan"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "media-scan"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.MediaScan, Name = "media-scan"}); else existing.Count += newStats.Commands.MediaScan; } - if(newStats.Commands.PrintHex > 0) + if (newStats.Commands.PrintHex > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "printhex"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "printhex"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.PrintHex, Name = "printhex"}); else existing.Count += newStats.Commands.PrintHex; } - if(newStats.Commands.Verify > 0) + if (newStats.Commands.Verify > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "verify"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "verify"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Verify, Name = "verify"}); else existing.Count += newStats.Commands.Verify; } - if(newStats.Commands.Ls > 0) + if (newStats.Commands.Ls > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "ls"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "ls"); - if(existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Ls, Name = "ls"}); + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Ls, Name = "ls"}); else existing.Count += newStats.Commands.Ls; } - if(newStats.Commands.ExtractFiles > 0) + if (newStats.Commands.ExtractFiles > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "extract-files"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "extract-files"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.ExtractFiles, Name = "extract-files"}); else existing.Count += newStats.Commands.ExtractFiles; } - if(newStats.Commands.ListDevices > 0) + if (newStats.Commands.ListDevices > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "list-devices"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "list-devices"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.ListDevices, Name = "list-devices"}); else existing.Count += newStats.Commands.ListDevices; } - if(newStats.Commands.ListEncodings > 0) + if (newStats.Commands.ListEncodings > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "list-encodings"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "list-encodings"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command { Count = newStats.Commands.ListEncodings, Name = "list-encodings" @@ -221,139 +221,143 @@ namespace DiscImageChef.Server else existing.Count += newStats.Commands.ListEncodings; } - if(newStats.Commands.ConvertImage > 0) + if (newStats.Commands.ConvertImage > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "convert-image"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "convert-image"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.ConvertImage, Name = "convert-image"}); else existing.Count += newStats.Commands.ConvertImage; } - if(newStats.Commands.ImageInfo > 0) + if (newStats.Commands.ImageInfo > 0) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "image-info"); + var existing = ctx.Commands.FirstOrDefault(c => c.Name == "image-info"); - if(existing == null) + if (existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.ImageInfo, Name = "image-info"}); else existing.Count += newStats.Commands.ImageInfo; } } - if(newStats.OperatingSystems != null) - foreach(OsStats operatingSystem in newStats.OperatingSystems) + if (newStats.OperatingSystems != null) + { + foreach (var operatingSystem in newStats.OperatingSystems) { - if(string.IsNullOrWhiteSpace(operatingSystem.name) || - string.IsNullOrWhiteSpace(operatingSystem.version)) continue; + if (string.IsNullOrWhiteSpace(operatingSystem.name) || + string.IsNullOrWhiteSpace(operatingSystem.version)) continue; - OperatingSystem existing = - ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && + var existing = + ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && c.Version == operatingSystem.version); - if(existing == null) + if (existing == null) ctx.OperatingSystems.Add(new OperatingSystem { - Count = operatingSystem.Value, - Name = operatingSystem.name, + Count = operatingSystem.Value, + Name = operatingSystem.name, Version = operatingSystem.version }); else existing.Count += operatingSystem.Value; } + } else { - OperatingSystem existing = + var existing = ctx.OperatingSystems.FirstOrDefault(c => c.Name == "Linux" && c.Version == null); - if(existing == null) ctx.OperatingSystems.Add(new OperatingSystem {Count = 1, Name = "Linux"}); + if (existing == null) ctx.OperatingSystems.Add(new OperatingSystem {Count = 1, Name = "Linux"}); else existing.Count++; } - if(newStats.Versions != null) - foreach(NameValueStats nvs in newStats.Versions) + if (newStats.Versions != null) + { + foreach (var nvs in newStats.Versions) { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; + if (string.IsNullOrWhiteSpace(nvs.name)) continue; - Version existing = ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); + var existing = ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); - if(existing == null) ctx.Versions.Add(new Version {Count = nvs.Value, Value = nvs.name}); + if (existing == null) ctx.Versions.Add(new Version {Count = nvs.Value, Value = nvs.name}); else existing.Count += nvs.Value; } + } else { - Version existing = ctx.Versions.FirstOrDefault(c => c.Value == "previous"); + var existing = ctx.Versions.FirstOrDefault(c => c.Value == "previous"); - if(existing == null) ctx.Versions.Add(new Version {Count = 1, Value = "previous"}); + if (existing == null) ctx.Versions.Add(new Version {Count = 1, Value = "previous"}); else existing.Count++; } - if(newStats.Filesystems != null) - foreach(NameValueStats nvs in newStats.Filesystems) + if (newStats.Filesystems != null) + foreach (var nvs in newStats.Filesystems) { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; + if (string.IsNullOrWhiteSpace(nvs.name)) continue; - Filesystem existing = ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); + var existing = ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Filesystems.Add(new Filesystem {Count = nvs.Value, Name = nvs.name}); + if (existing == null) ctx.Filesystems.Add(new Filesystem {Count = nvs.Value, Name = nvs.name}); else existing.Count += nvs.Value; } - if(newStats.Partitions != null) - foreach(NameValueStats nvs in newStats.Partitions) + if (newStats.Partitions != null) + foreach (var nvs in newStats.Partitions) { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; + if (string.IsNullOrWhiteSpace(nvs.name)) continue; - Partition existing = ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); + var existing = ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Partitions.Add(new Partition {Count = nvs.Value, Name = nvs.name}); + if (existing == null) ctx.Partitions.Add(new Partition {Count = nvs.Value, Name = nvs.name}); else existing.Count += nvs.Value; } - if(newStats.MediaImages != null) - foreach(NameValueStats nvs in newStats.MediaImages) + if (newStats.MediaImages != null) + foreach (var nvs in newStats.MediaImages) { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; + if (string.IsNullOrWhiteSpace(nvs.name)) continue; - MediaFormat existing = ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); + var existing = ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.MediaFormats.Add(new MediaFormat {Count = nvs.Value, Name = nvs.name}); + if (existing == null) ctx.MediaFormats.Add(new MediaFormat {Count = nvs.Value, Name = nvs.name}); else existing.Count += nvs.Value; } - if(newStats.Filters != null) - foreach(NameValueStats nvs in newStats.Filters) + if (newStats.Filters != null) + foreach (var nvs in newStats.Filters) { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; + if (string.IsNullOrWhiteSpace(nvs.name)) continue; - Filter existing = ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); + var existing = ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Filters.Add(new Filter {Count = nvs.Value, Name = nvs.name}); + if (existing == null) ctx.Filters.Add(new Filter {Count = nvs.Value, Name = nvs.name}); else existing.Count += nvs.Value; } - if(newStats.Devices != null) - foreach(DeviceStats device in newStats.Devices) + if (newStats.Devices != null) + foreach (var device in newStats.Devices) { - if(string.IsNullOrWhiteSpace(device.Model)) continue; + if (string.IsNullOrWhiteSpace(device.Model)) continue; - if(!ctx.DeviceStats.Any(c => c.Bus == device.Bus && c.Manufacturer == device.Manufacturer && - c.Model == device.Model && c.Revision == device.Revision)) + if (!ctx.DeviceStats.Any(c => c.Bus == device.Bus && c.Manufacturer == device.Manufacturer && + c.Model == device.Model && c.Revision == device.Revision)) ctx.DeviceStats.Add(new DeviceStat { - Bus = device.Bus, + Bus = device.Bus, Manufacturer = device.Manufacturer, - Model = device.Model, - Revision = device.Revision + Model = device.Model, + Revision = device.Revision }); } - if(newStats.Medias != null) - foreach(MediaStats media in newStats.Medias) + if (newStats.Medias != null) + foreach (var media in newStats.Medias) { - if(string.IsNullOrWhiteSpace(media.type)) continue; + if (string.IsNullOrWhiteSpace(media.type)) continue; - Media existing = ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); + var existing = ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); - if(existing == null) + if (existing == null) ctx.Medias.Add(new Media {Count = media.Value, Real = media.real, Type = media.type}); else existing.Count += media.Value; } diff --git a/DiscImageChef.Server/App_Start/TestedMedia.cs b/DiscImageChef.Server/App_Start/TestedMedia.cs index 70ab174a..e57b8c4f 100644 --- a/DiscImageChef.Server/App_Start/TestedMedia.cs +++ b/DiscImageChef.Server/App_Start/TestedMedia.cs @@ -44,259 +44,282 @@ namespace DiscImageChef.Server.App_Start /// List of tested media public static void Report(List testedMedias, ref List mediaOneValue) { - foreach(CommonTypes.Metadata.TestedMedia testedMedia in testedMedias) + foreach (var testedMedia in testedMedias) { - if(!string.IsNullOrWhiteSpace(testedMedia.MediumTypeName)) + if (!string.IsNullOrWhiteSpace(testedMedia.MediumTypeName)) { mediaOneValue.Add($"Information for medium named \"{testedMedia.MediumTypeName}\""); - if(testedMedia.MediumType != null) + if (testedMedia.MediumType != null) mediaOneValue.Add($"Medium type code: {testedMedia.MediumType:X2}h"); } - else if(testedMedia.MediumType != null) + else if (testedMedia.MediumType != null) + { mediaOneValue.Add($"Information for medium type {testedMedia.MediumType:X2}h"); - else mediaOneValue.Add("Information for unknown medium type"); + } + else + { + mediaOneValue.Add("Information for unknown medium type"); + } mediaOneValue.Add(testedMedia.MediaIsRecognized - ? "Drive recognizes this medium." - : "Drive does not recognize this medium."); + ? "Drive recognizes this medium." + : "Drive does not recognize this medium."); - if(!string.IsNullOrWhiteSpace(testedMedia.Manufacturer)) + if (!string.IsNullOrWhiteSpace(testedMedia.Manufacturer)) mediaOneValue.Add($"Medium manufactured by: {testedMedia.Manufacturer}"); - if(!string.IsNullOrWhiteSpace(testedMedia.Model)) + if (!string.IsNullOrWhiteSpace(testedMedia.Model)) mediaOneValue.Add($"Medium model: {testedMedia.Model}"); - if(testedMedia.Density != null) mediaOneValue.Add($"Density code: {testedMedia.Density:X2}h"); + if (testedMedia.Density != null) mediaOneValue.Add($"Density code: {testedMedia.Density:X2}h"); - if(testedMedia.BlockSize != null) + if (testedMedia.BlockSize != null) mediaOneValue.Add($"Logical sector size: {testedMedia.BlockSize} bytes"); - if(testedMedia.PhysicalBlockSize != null) + if (testedMedia.PhysicalBlockSize != null) mediaOneValue.Add($"Physical sector size: {testedMedia.PhysicalBlockSize} bytes"); - if(testedMedia.LongBlockSize != null) + if (testedMedia.LongBlockSize != null) mediaOneValue.Add($"READ LONG sector size: {testedMedia.LongBlockSize} bytes"); - if(testedMedia.Blocks != null && testedMedia.BlockSize != null) + if (testedMedia.Blocks != null && testedMedia.BlockSize != null) { mediaOneValue.Add($"Medium has {testedMedia.Blocks} blocks of {testedMedia.BlockSize} bytes each"); - if(testedMedia.Blocks * testedMedia.BlockSize / 1024 / 1024 > 1000000) + if (testedMedia.Blocks * testedMedia.BlockSize / 1024 / 1024 > 1000000) mediaOneValue - .Add($"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(testedMedia.Blocks * testedMedia.BlockSize / 1024 / 1024 > 1000) + .Add( + $"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double) (testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); + else if (testedMedia.Blocks * testedMedia.BlockSize / 1024 / 1024 > 1000) mediaOneValue - .Add($"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double)(testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); + .Add( + $"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double) (testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); else mediaOneValue - .Add($"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)(testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); + .Add( + $"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000} Mb, {(double) (testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); } - if(testedMedia.CHS != null && testedMedia.CurrentCHS != null) + if (testedMedia.CHS != null && testedMedia.CurrentCHS != null) { - int currentSectors = testedMedia.CurrentCHS.Cylinders * testedMedia.CurrentCHS.Heads * + var currentSectors = testedMedia.CurrentCHS.Cylinders * testedMedia.CurrentCHS.Heads * testedMedia.CurrentCHS.Sectors; mediaOneValue - .Add($"Cylinders: {testedMedia.CHS.Cylinders} max., {testedMedia.CurrentCHS.Cylinders} current"); + .Add( + $"Cylinders: {testedMedia.CHS.Cylinders} max., {testedMedia.CurrentCHS.Cylinders} current"); mediaOneValue.Add($"Heads: {testedMedia.CHS.Heads} max., {testedMedia.CurrentCHS.Heads} current"); mediaOneValue - .Add($"Sectors per track: {testedMedia.CHS.Sectors} max., {testedMedia.CurrentCHS.Sectors} current"); + .Add( + $"Sectors per track: {testedMedia.CHS.Sectors} max., {testedMedia.CurrentCHS.Sectors} current"); mediaOneValue - .Add($"Sectors addressable in CHS mode: {testedMedia.CHS.Cylinders * testedMedia.CHS.Heads * testedMedia.CHS.Sectors} max., {currentSectors} current"); + .Add( + $"Sectors addressable in CHS mode: {testedMedia.CHS.Cylinders * testedMedia.CHS.Heads * testedMedia.CHS.Sectors} max., {currentSectors} current"); mediaOneValue - .Add($"Medium size in CHS mode: {(ulong)currentSectors * testedMedia.BlockSize} bytes, {(ulong)currentSectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); + .Add( + $"Medium size in CHS mode: {(ulong) currentSectors * testedMedia.BlockSize} bytes, {(ulong) currentSectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double) ((ulong) currentSectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); } - else if(testedMedia.CHS != null) + else if (testedMedia.CHS != null) { - int currentSectors = testedMedia.CHS.Cylinders * testedMedia.CHS.Heads * testedMedia.CHS.Sectors; + var currentSectors = testedMedia.CHS.Cylinders * testedMedia.CHS.Heads * testedMedia.CHS.Sectors; mediaOneValue.Add($"Cylinders: {testedMedia.CHS.Cylinders}"); mediaOneValue.Add($"Heads: {testedMedia.CHS.Heads}"); mediaOneValue.Add($"Sectors per track: {testedMedia.CHS.Sectors}"); mediaOneValue.Add($"Sectors addressable in CHS mode: {currentSectors}"); mediaOneValue - .Add($"Medium size in CHS mode: {(ulong)currentSectors * testedMedia.BlockSize} bytes, {(ulong)currentSectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); + .Add( + $"Medium size in CHS mode: {(ulong) currentSectors * testedMedia.BlockSize} bytes, {(ulong) currentSectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double) ((ulong) currentSectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); } - if(testedMedia.LBASectors != null) + if (testedMedia.LBASectors != null) { mediaOneValue.Add($"Sectors addressable in sectors in 28-bit LBA mode: {testedMedia.LBASectors}"); - if((ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1024 / 1024 > 1000000) + if ((ulong) testedMedia.LBASectors * testedMedia.BlockSize / 1024 / 1024 > 1000000) mediaOneValue - .Add($"Medium size in 28-bit LBA mode: {(ulong)testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)((ulong)testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if((ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1024 / 1024 > 1000) + .Add( + $"Medium size in 28-bit LBA mode: {(ulong) testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong) testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double) ((ulong) testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); + else if ((ulong) testedMedia.LBASectors * testedMedia.BlockSize / 1024 / 1024 > 1000) mediaOneValue - .Add($"Medium size in 28-bit LBA mode: {(ulong)testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double)((ulong)testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); + .Add( + $"Medium size in 28-bit LBA mode: {(ulong) testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong) testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double) ((ulong) testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); else mediaOneValue - .Add($"Medium size in 28-bit LBA mode: {(ulong)testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)((ulong)testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); + .Add( + $"Medium size in 28-bit LBA mode: {(ulong) testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong) testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double) ((ulong) testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); } - if(testedMedia.LBA48Sectors != null) + if (testedMedia.LBA48Sectors != null) { mediaOneValue.Add($"Sectors addressable in sectors in 48-bit LBA mode: {testedMedia.LBA48Sectors}"); - if(testedMedia.LBA48Sectors * testedMedia.BlockSize / 1024 / 1024 > 1000000) + if (testedMedia.LBA48Sectors * testedMedia.BlockSize / 1024 / 1024 > 1000000) mediaOneValue - .Add($"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(testedMedia.LBA48Sectors * testedMedia.BlockSize / 1024 / 1024 > 1000) + .Add( + $"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double) (testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); + else if (testedMedia.LBA48Sectors * testedMedia.BlockSize / 1024 / 1024 > 1000) mediaOneValue - .Add($"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double)(testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); + .Add( + $"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double) (testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); else mediaOneValue - .Add($"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)(testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); + .Add( + $"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double) (testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); } - if(testedMedia.NominalRotationRate != null && testedMedia.NominalRotationRate != 0x0000 && - testedMedia.NominalRotationRate != 0xFFFF) + if (testedMedia.NominalRotationRate != null && testedMedia.NominalRotationRate != 0x0000 && + testedMedia.NominalRotationRate != 0xFFFF) mediaOneValue.Add(testedMedia.NominalRotationRate == 0x0001 - ? "Medium does not rotate." - : $"Medium rotates at {testedMedia.NominalRotationRate} rpm"); + ? "Medium does not rotate." + : $"Medium rotates at {testedMedia.NominalRotationRate} rpm"); - if(testedMedia.BlockSize != null && - testedMedia.PhysicalBlockSize != null && - testedMedia.BlockSize.Value != testedMedia.PhysicalBlockSize.Value && - (testedMedia.LogicalAlignment & 0x8000) == 0x0000 && - (testedMedia.LogicalAlignment & 0x4000) == 0x4000) + if (testedMedia.BlockSize != null && + testedMedia.PhysicalBlockSize != null && + testedMedia.BlockSize.Value != testedMedia.PhysicalBlockSize.Value && + (testedMedia.LogicalAlignment & 0x8000) == 0x0000 && + (testedMedia.LogicalAlignment & 0x4000) == 0x4000) mediaOneValue - .Add($"Logical sector starts at offset {testedMedia.LogicalAlignment & 0x3FFF} from physical sector"); + .Add( + $"Logical sector starts at offset {testedMedia.LogicalAlignment & 0x3FFF} from physical sector"); - if(testedMedia.SupportsReadSectors == true) + if (testedMedia.SupportsReadSectors == true) mediaOneValue.Add("Device can use the READ SECTOR(S) command in CHS mode with this medium"); - if(testedMedia.SupportsReadRetry == true) + if (testedMedia.SupportsReadRetry == true) mediaOneValue.Add("Device can use the READ SECTOR(S) RETRY command in CHS mode with this medium"); - if(testedMedia.SupportsReadDma == true) + if (testedMedia.SupportsReadDma == true) mediaOneValue.Add("Device can use the READ DMA command in CHS mode with this medium"); - if(testedMedia.SupportsReadDmaRetry == true) + if (testedMedia.SupportsReadDmaRetry == true) mediaOneValue.Add("Device can use the READ DMA RETRY command in CHS mode with this medium"); - if(testedMedia.SupportsReadLong == true) + if (testedMedia.SupportsReadLong == true) mediaOneValue.Add("Device can use the READ LONG command in CHS mode with this medium"); - if(testedMedia.SupportsReadLongRetry == true) + if (testedMedia.SupportsReadLongRetry == true) mediaOneValue.Add("Device can use the READ LONG RETRY command in CHS mode with this medium"); - if(testedMedia.SupportsReadLba == true) + if (testedMedia.SupportsReadLba == true) mediaOneValue.Add("Device can use the READ SECTOR(S) command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadRetryLba == true) + if (testedMedia.SupportsReadRetryLba == true) mediaOneValue - .Add("Device can use the READ SECTOR(S) RETRY command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadDmaLba == true) + .Add("Device can use the READ SECTOR(S) RETRY command in 28-bit LBA mode with this medium"); + if (testedMedia.SupportsReadDmaLba == true) mediaOneValue.Add("Device can use the READ DMA command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadDmaRetryLba == true) + if (testedMedia.SupportsReadDmaRetryLba == true) mediaOneValue.Add("Device can use the READ DMA RETRY command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadLongLba == true) + if (testedMedia.SupportsReadLongLba == true) mediaOneValue.Add("Device can use the READ LONG command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadLongRetryLba == true) + if (testedMedia.SupportsReadLongRetryLba == true) mediaOneValue.Add("Device can use the READ LONG RETRY command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadLba48 == true) + if (testedMedia.SupportsReadLba48 == true) mediaOneValue.Add("Device can use the READ SECTOR(S) command in 48-bit LBA mode with this medium"); - if(testedMedia.SupportsReadDmaLba48 == true) + if (testedMedia.SupportsReadDmaLba48 == true) mediaOneValue.Add("Device can use the READ DMA command in 48-bit LBA mode with this medium"); - if(testedMedia.SupportsSeek == true) + if (testedMedia.SupportsSeek == true) mediaOneValue.Add("Device can use the SEEK command in CHS mode with this medium"); - if(testedMedia.SupportsSeekLba == true) + if (testedMedia.SupportsSeekLba == true) mediaOneValue.Add("Device can use the SEEK command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadCapacity == true) + if (testedMedia.SupportsReadCapacity == true) mediaOneValue.Add("Device can use the READ CAPACITY (10) command with this medium"); - if(testedMedia.SupportsReadCapacity16 == true) + if (testedMedia.SupportsReadCapacity16 == true) mediaOneValue.Add("Device can use the READ CAPACITY (16) command with this medium"); - if(testedMedia.SupportsRead6 == true) + if (testedMedia.SupportsRead6 == true) mediaOneValue.Add("Device can use the READ (6) command with this medium"); - if(testedMedia.SupportsRead10 == true) + if (testedMedia.SupportsRead10 == true) mediaOneValue.Add("Device can use the READ (10) command with this medium"); - if(testedMedia.SupportsRead12 == true) + if (testedMedia.SupportsRead12 == true) mediaOneValue.Add("Device can use the READ (12) command with this medium"); - if(testedMedia.SupportsRead16 == true) + if (testedMedia.SupportsRead16 == true) mediaOneValue.Add("Device can use the READ (16) command with this medium"); - if(testedMedia.SupportsReadLong == true) + if (testedMedia.SupportsReadLong == true) mediaOneValue.Add("Device can use the READ LONG (10) command with this medium"); - if(testedMedia.SupportsReadLong16 == true) + if (testedMedia.SupportsReadLong16 == true) mediaOneValue.Add("Device can use the READ LONG (16) command with this medium"); - if(testedMedia.SupportsReadCd == true) + if (testedMedia.SupportsReadCd == true) mediaOneValue.Add("Device can use the READ CD command with LBA addressing with this medium"); - if(testedMedia.SupportsReadCdMsf == true) + if (testedMedia.SupportsReadCdMsf == true) mediaOneValue.Add("Device can use the READ CD command with MM:SS:FF addressing with this medium"); - if(testedMedia.SupportsReadCdRaw == true) + if (testedMedia.SupportsReadCdRaw == true) mediaOneValue - .Add("Device can use the READ CD command with LBA addressing with this medium to read raw sector"); - if(testedMedia.SupportsReadCdMsfRaw == true) + .Add( + "Device can use the READ CD command with LBA addressing with this medium to read raw sector"); + if (testedMedia.SupportsReadCdMsfRaw == true) mediaOneValue - .Add("Device can use the READ CD command with MM:SS:FF addressing with this medium read raw sector"); + .Add( + "Device can use the READ CD command with MM:SS:FF addressing with this medium read raw sector"); - if(testedMedia.SupportsHLDTSTReadRawDVD == true) + if (testedMedia.SupportsHLDTSTReadRawDVD == true) mediaOneValue.Add("Device can use the HL-DT-ST vendor READ DVD (RAW) command with this medium"); - if(testedMedia.SupportsNECReadCDDA == true) + if (testedMedia.SupportsNECReadCDDA == true) mediaOneValue.Add("Device can use the NEC vendor READ CD-DA command with this medium"); - if(testedMedia.SupportsPioneerReadCDDA == true) + if (testedMedia.SupportsPioneerReadCDDA == true) mediaOneValue.Add("Device can use the PIONEER vendor READ CD-DA command with this medium"); - if(testedMedia.SupportsPioneerReadCDDAMSF == true) + if (testedMedia.SupportsPioneerReadCDDAMSF == true) mediaOneValue.Add("Device can use the PIONEER vendor READ CD-DA MSF command with this medium"); - if(testedMedia.SupportsPlextorReadCDDA == true) + if (testedMedia.SupportsPlextorReadCDDA == true) mediaOneValue.Add("Device can use the PLEXTOR vendor READ CD-DA command with this medium"); - if(testedMedia.SupportsPlextorReadRawDVD == true) + if (testedMedia.SupportsPlextorReadRawDVD == true) mediaOneValue.Add("Device can use the PLEXOR vendor READ DVD (RAW) command with this medium"); - if(testedMedia.CanReadAACS == true) + if (testedMedia.CanReadAACS == true) mediaOneValue.Add("Device can read the Advanced Access Content System from this medium"); - if(testedMedia.CanReadADIP == true) + if (testedMedia.CanReadADIP == true) mediaOneValue.Add("Device can read the DVD ADress-In-Pregroove from this medium"); - if(testedMedia.CanReadATIP == true) + if (testedMedia.CanReadATIP == true) mediaOneValue.Add("Device can read the CD Absolute-Time-In-Pregroove from this medium"); - if(testedMedia.CanReadBCA == true) + if (testedMedia.CanReadBCA == true) mediaOneValue.Add("Device can read the Burst Cutting Area from this medium"); - if(testedMedia.CanReadC2Pointers == true) + if (testedMedia.CanReadC2Pointers == true) mediaOneValue.Add("Device can report the C2 pointers when reading from this medium"); - if(testedMedia.CanReadCMI == true) + if (testedMedia.CanReadCMI == true) mediaOneValue.Add("Device can read the Copyright Management Information from this medium"); - if(testedMedia.CanReadCorrectedSubchannel == true) + if (testedMedia.CanReadCorrectedSubchannel == true) mediaOneValue.Add("Device can correct subchannels when reading from this medium"); - if(testedMedia.CanReadCorrectedSubchannelWithC2 == true) + if (testedMedia.CanReadCorrectedSubchannelWithC2 == true) mediaOneValue - .Add("Device can correct subchannels and report the C2 pointers when reading from this medium"); - if(testedMedia.CanReadDCB == true) + .Add("Device can correct subchannels and report the C2 pointers when reading from this medium"); + if (testedMedia.CanReadDCB == true) mediaOneValue.Add("Device can read the Disc Control Blocks from this medium"); - if(testedMedia.CanReadDDS == true) + if (testedMedia.CanReadDDS == true) mediaOneValue.Add("Device can read the Disc Definition Structure from this medium"); - if(testedMedia.CanReadDMI == true) + if (testedMedia.CanReadDMI == true) mediaOneValue.Add("Device can read the Disc Manufacurer Information from this medium"); - if(testedMedia.CanReadDiscInformation == true) + if (testedMedia.CanReadDiscInformation == true) mediaOneValue.Add("Device can read the Disc Information from this medium"); - if(testedMedia.CanReadFullTOC == true) + if (testedMedia.CanReadFullTOC == true) mediaOneValue.Add("Device can read the Table of Contents from this medium, without processing it"); - if(testedMedia.CanReadHDCMI == true) + if (testedMedia.CanReadHDCMI == true) mediaOneValue.Add("Device can read the HD DVD Copyright Management Information from this medium"); - if(testedMedia.CanReadLayerCapacity == true) + if (testedMedia.CanReadLayerCapacity == true) mediaOneValue.Add("Device can read the layer capacity from this medium"); - if(testedMedia.CanReadFirstTrackPreGap == true) + if (testedMedia.CanReadFirstTrackPreGap == true) mediaOneValue.Add("Device can read the first track's pregap data"); - if(testedMedia.CanReadLeadIn == true) mediaOneValue.Add("Device can read the Lead-In from this medium"); - if(testedMedia.CanReadLeadOut == true) + if (testedMedia.CanReadLeadIn == true) + mediaOneValue.Add("Device can read the Lead-In from this medium"); + if (testedMedia.CanReadLeadOut == true) mediaOneValue.Add("Device can read the Lead-Out from this medium"); - if(testedMedia.CanReadMediaID == true) + if (testedMedia.CanReadMediaID == true) mediaOneValue.Add("Device can read the Media ID from this medium"); - if(testedMedia.CanReadMediaSerial == true) + if (testedMedia.CanReadMediaSerial == true) mediaOneValue.Add("Device can read the Media Serial Number from this medium"); - if(testedMedia.CanReadPAC == true) mediaOneValue.Add("Device can read the PAC from this medium"); - if(testedMedia.CanReadPFI == true) + if (testedMedia.CanReadPAC == true) mediaOneValue.Add("Device can read the PAC from this medium"); + if (testedMedia.CanReadPFI == true) mediaOneValue.Add("Device can read the Physical Format Information from this medium"); - if(testedMedia.CanReadPMA == true) + if (testedMedia.CanReadPMA == true) mediaOneValue.Add("Device can read the Power Management Area from this medium"); - if(testedMedia.CanReadPQSubchannel == true) + if (testedMedia.CanReadPQSubchannel == true) mediaOneValue.Add("Device can read the P to Q subchannels from this medium"); - if(testedMedia.CanReadPQSubchannelWithC2 == true) + if (testedMedia.CanReadPQSubchannelWithC2 == true) mediaOneValue - .Add("Device can read the P to Q subchannels from this medium reporting the C2 pointers"); - if(testedMedia.CanReadPRI == true) + .Add("Device can read the P to Q subchannels from this medium reporting the C2 pointers"); + if (testedMedia.CanReadPRI == true) mediaOneValue.Add("Device can read the Pre-Recorded Information from this medium"); - if(testedMedia.CanReadRWSubchannel == true) + if (testedMedia.CanReadRWSubchannel == true) mediaOneValue.Add("Device can read the R to W subchannels from this medium"); - if(testedMedia.CanReadRWSubchannelWithC2 == true) + if (testedMedia.CanReadRWSubchannelWithC2 == true) mediaOneValue - .Add("Device can read the R to W subchannels from this medium reporting the C2 pointers"); - if(testedMedia.CanReadRecordablePFI == true) + .Add("Device can read the R to W subchannels from this medium reporting the C2 pointers"); + if (testedMedia.CanReadRecordablePFI == true) mediaOneValue.Add("Device can read the Physical Format Information from Lead-In from this medium"); - if(testedMedia.CanReadSpareAreaInformation == true) + if (testedMedia.CanReadSpareAreaInformation == true) mediaOneValue.Add("Device can read the Spare Area Information from this medium"); - if(testedMedia.CanReadTOC == true) + if (testedMedia.CanReadTOC == true) mediaOneValue.Add("Device can read the Table of Contents from this medium"); mediaOneValue.Add(""); diff --git a/DiscImageChef.Server/Controllers/HomeController.cs b/DiscImageChef.Server/Controllers/HomeController.cs index edb25ba9..01d2cc46 100644 --- a/DiscImageChef.Server/Controllers/HomeController.cs +++ b/DiscImageChef.Server/Controllers/HomeController.cs @@ -41,7 +41,7 @@ namespace DiscImageChef.Server.Controllers { public class HomeController : Controller { - private IWebHostEnvironment _environment; + private readonly IWebHostEnvironment _environment; public HomeController(IWebHostEnvironment environment) { @@ -52,10 +52,10 @@ namespace DiscImageChef.Server.Controllers [Route("README")] public ActionResult Index() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "README.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "README.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")"); @@ -70,10 +70,10 @@ namespace DiscImageChef.Server.Controllers [Route("Changelog")] public ActionResult Changelog() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "Changelog.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "Changelog.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")"); @@ -88,10 +88,10 @@ namespace DiscImageChef.Server.Controllers [Route("CODE_OF_CONDUCT")] public ActionResult CODE_OF_CONDUCT() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "CODE_OF_CONDUCT.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "CODE_OF_CONDUCT.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); @@ -106,10 +106,10 @@ namespace DiscImageChef.Server.Controllers [Route("PULL_REQUEST_TEMPLATE")] public ActionResult PULL_REQUEST_TEMPLATE() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "PULL_REQUEST_TEMPLATE.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "PULL_REQUEST_TEMPLATE.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); @@ -124,10 +124,10 @@ namespace DiscImageChef.Server.Controllers [Route("ISSUE_TEMPLATE")] public ActionResult ISSUE_TEMPLATE() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "ISSUE_TEMPLATE.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "ISSUE_TEMPLATE.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); @@ -142,10 +142,10 @@ namespace DiscImageChef.Server.Controllers [Route("CONTRIBUTING")] public ActionResult CONTRIBUTING() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "CONTRIBUTING.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "CONTRIBUTING.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); @@ -160,10 +160,10 @@ namespace DiscImageChef.Server.Controllers [Route("DONATING")] public ActionResult DONATING() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "DONATING.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "DONATING.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")"); @@ -178,10 +178,10 @@ namespace DiscImageChef.Server.Controllers [Route("TODO")] public ActionResult TODO() { - StreamReader sr = + var sr = new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "docs", "TODO.md")); - string mdcontent = sr.ReadToEnd(); + "docs", "TODO.md")); + var mdcontent = sr.ReadToEnd(); sr.Close(); mdcontent = mdcontent.Replace(".md)", ")"); diff --git a/DiscImageChef.Server/Controllers/ReportController.cs b/DiscImageChef.Server/Controllers/ReportController.cs index e06d95b3..51f5eb1d 100644 --- a/DiscImageChef.Server/Controllers/ReportController.cs +++ b/DiscImageChef.Server/Controllers/ReportController.cs @@ -39,97 +39,99 @@ using DiscImageChef.Decoders.SCSI; using DiscImageChef.Server.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Tuple = DiscImageChef.Decoders.PCMCIA.Tuple; namespace DiscImageChef.Server.Controllers { public class ReportController : Controller { - private DicServerContext _ctx; + private readonly DicServerContext _ctx; public ReportController(DicServerContext context) { _ctx = context; } - public ActionResult Index() => RedirectToAction("View", "Report", new RouteValueDictionary {{"id", 1}}); + public ActionResult Index() + { + return RedirectToAction("View", "Report", new RouteValueDictionary {{"id", 1}}); + } public ActionResult View(int? id) { - if(id == null || id <= 0) return Content("Incorrect device report request"); + if (id == null || id <= 0) return Content("Incorrect device report request"); try { - Device report = _ctx.Devices.FirstOrDefault(d => d.Id == id); + var report = _ctx.Devices.FirstOrDefault(d => d.Id == id); - if(report is null) return Content("Cannot find requested report"); + if (report is null) return Content("Cannot find requested report"); ViewBag.lblManufacturer = report.Manufacturer; - ViewBag.lblModel = report.Model; - ViewBag.lblRevision = report.Revision; + ViewBag.lblModel = report.Model; + ViewBag.lblRevision = report.Revision; - if(report.USB != null) + if (report.USB != null) { - string usbVendorDescription = null; + string usbVendorDescription = null; string usbProductDescription = null; - UsbProduct dbProduct = - _ctx.UsbProducts.FirstOrDefault(p => p.ProductId == report.USB.ProductID && - p.Vendor != null && - p.Vendor.VendorId == report.USB.VendorID); + var dbProduct = + _ctx.UsbProducts.FirstOrDefault(p => p.ProductId == report.USB.ProductID && + p.Vendor != null && + p.Vendor.VendorId == report.USB.VendorID); - if(dbProduct is null) + if (dbProduct is null) { - UsbVendor dbVendor = _ctx.UsbVendors.FirstOrDefault(v => v.VendorId == report.USB.VendorID); + var dbVendor = _ctx.UsbVendors.FirstOrDefault(v => v.VendorId == report.USB.VendorID); - if(!(dbVendor is null)) usbVendorDescription = dbVendor.Vendor; + if (!(dbVendor is null)) usbVendorDescription = dbVendor.Vendor; } else { usbProductDescription = dbProduct.Product; - usbVendorDescription = dbProduct.Vendor.Vendor; + usbVendorDescription = dbProduct.Vendor.Vendor; } ViewBag.UsbItem = new Item { Manufacturer = report.USB.Manufacturer, - Product = report.USB.Product, + Product = report.USB.Product, VendorDescription = usbVendorDescription != null ? $"0x{report.USB.VendorID:x4} ({usbVendorDescription})" : $"0x{report.USB.VendorID:x4}", ProductDescription = usbProductDescription != null - ? $"0x{report.USB.ProductID:x4} ({usbProductDescription})" - : $"0x{report.USB.ProductID:x4}" + ? $"0x{report.USB.ProductID:x4} ({usbProductDescription})" + : $"0x{report.USB.ProductID:x4}" }; } - if(report.FireWire != null) + if (report.FireWire != null) ViewBag.FireWireItem = new Item { - Manufacturer = report.FireWire.Manufacturer, - Product = report.FireWire.Product, - VendorDescription = $"0x{report.FireWire.VendorID:x8}", + Manufacturer = report.FireWire.Manufacturer, + Product = report.FireWire.Product, + VendorDescription = $"0x{report.FireWire.VendorID:x8}", ProductDescription = $"0x{report.FireWire.ProductID:x8}" }; - if(report.PCMCIA != null) + if (report.PCMCIA != null) { ViewBag.PcmciaItem = new PcmciaItem { - Manufacturer = report.PCMCIA.Manufacturer, - Product = report.PCMCIA.ProductName, - VendorDescription = $"0x{report.PCMCIA.ManufacturerCode:x4}", + Manufacturer = report.PCMCIA.Manufacturer, + Product = report.PCMCIA.ProductName, + VendorDescription = $"0x{report.PCMCIA.ManufacturerCode:x4}", ProductDescription = $"0x{report.PCMCIA.CardCode:x4}", - Compliance = report.PCMCIA.Compliance + Compliance = report.PCMCIA.Compliance }; - Tuple[] tuples = CIS.GetTuples(report.PCMCIA.CIS); - if(tuples != null) + var tuples = CIS.GetTuples(report.PCMCIA.CIS); + if (tuples != null) { - Dictionary decodedTuples = new Dictionary(); - foreach(Tuple tuple in tuples) - switch(tuple.Code) + var decodedTuples = new Dictionary(); + foreach (var tuple in tuples) + switch (tuple.Code) { case TupleCodes.CISTPL_NULL: case TupleCodes.CISTPL_END: @@ -137,20 +139,20 @@ namespace DiscImageChef.Server.Controllers case TupleCodes.CISTPL_VERS_1: break; case TupleCodes.CISTPL_DEVICEGEO: case TupleCodes.CISTPL_DEVICEGEO_A: - DeviceGeometryTuple geom = CIS.DecodeDeviceGeometryTuple(tuple.Data); - if(geom?.Geometries != null) - foreach(DeviceGeometry geometry in geom.Geometries) + var geom = CIS.DecodeDeviceGeometryTuple(tuple.Data); + if (geom?.Geometries != null) + foreach (var geometry in geom.Geometries) { decodedTuples.Add("Device width", - $"{(1 << (geometry.CardInterface - 1)) * 8} bits"); + $"{(1 << (geometry.CardInterface - 1)) * 8} bits"); decodedTuples.Add("Erase block", - $"{(1 << (geometry.EraseBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); + $"{(1 << (geometry.EraseBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); decodedTuples.Add("Read block", - $"{(1 << (geometry.ReadBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); + $"{(1 << (geometry.ReadBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); decodedTuples.Add("Write block", - $"{(1 << (geometry.WriteBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); + $"{(1 << (geometry.WriteBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); decodedTuples.Add("Partition alignment", - $"{(1 << (geometry.EraseBlockSize - 1)) * (1 << (geometry.Interleaving - 1)) * (1 << (geometry.Partitions - 1))} bytes"); + $"{(1 << (geometry.EraseBlockSize - 1)) * (1 << (geometry.Interleaving - 1)) * (1 << (geometry.Partitions - 1))} bytes"); } break; @@ -191,44 +193,44 @@ namespace DiscImageChef.Server.Controllers decodedTuples.Add("Undecoded tuple ID", tuple.Code.ToString()); break; default: - decodedTuples.Add("Unknown tuple ID", $"0x{(byte)tuple.Code:X2}"); + decodedTuples.Add("Unknown tuple ID", $"0x{(byte) tuple.Code:X2}"); break; } - if(decodedTuples.Count > 0) ViewBag.repPcmciaTuples = decodedTuples; + if (decodedTuples.Count > 0) ViewBag.repPcmciaTuples = decodedTuples; } } - bool removable = true; + var removable = true; List testedMedia = null; - bool ata = false; - bool atapi = false; - bool sscMedia = false; + var ata = false; + var atapi = false; + var sscMedia = false; - if(report.ATA != null || report.ATAPI != null) + if (report.ATA != null || report.ATAPI != null) { ata = true; - List ataOneValue = new List(); - Dictionary ataTwoValue = new Dictionary(); - CommonTypes.Metadata.Ata ataReport; + var ataOneValue = new List(); + var ataTwoValue = new Dictionary(); + CommonTypes.Metadata.Ata ataReport; - if(report.ATAPI != null) + if (report.ATAPI != null) { ViewBag.AtaItem = "ATAPI"; - ataReport = report.ATAPI; - atapi = true; + ataReport = report.ATAPI; + atapi = true; } else { ViewBag.AtaItem = "ATA"; - ataReport = report.ATA; + ataReport = report.ATA; } - bool cfa = report.CompactFlash; + var cfa = report.CompactFlash; - if(atapi && !cfa) ViewBag.lblAtaDeviceType = "ATAPI device"; - else if(!atapi && cfa) ViewBag.lblAtaDeviceType = "CompactFlash device"; - else ViewBag.lblAtaDeviceType = "ATA device"; + if (atapi && !cfa) ViewBag.lblAtaDeviceType = "ATAPI device"; + else if (!atapi && cfa) ViewBag.lblAtaDeviceType = "CompactFlash device"; + else ViewBag.lblAtaDeviceType = "ATA device"; Ata.Report(ataReport, cfa, atapi, ref removable, ref ataOneValue, ref ataTwoValue, ref testedMedia); @@ -236,62 +238,62 @@ namespace DiscImageChef.Server.Controllers ViewBag.repAtaTwo = ataTwoValue; } - if(report.SCSI != null) + if (report.SCSI != null) { - List scsiOneValue = new List(); - Dictionary modePages = new Dictionary(); - Dictionary evpdPages = new Dictionary(); + var scsiOneValue = new List(); + var modePages = new Dictionary(); + var evpdPages = new Dictionary(); - string vendorId = StringHandlers.CToString(report.SCSI.Inquiry?.VendorIdentification); - if(report.SCSI.Inquiry != null) + var vendorId = StringHandlers.CToString(report.SCSI.Inquiry?.VendorIdentification); + if (report.SCSI.Inquiry != null) { - Inquiry.SCSIInquiry inq = report.SCSI.Inquiry.Value; + var inq = report.SCSI.Inquiry.Value; ViewBag.lblScsiVendor = VendorString.Prettify(vendorId) != vendorId - ? $"{vendorId} ({VendorString.Prettify(vendorId)})" - : vendorId; - ViewBag.lblScsiProduct = StringHandlers.CToString(inq.ProductIdentification); + ? $"{vendorId} ({VendorString.Prettify(vendorId)})" + : vendorId; + ViewBag.lblScsiProduct = StringHandlers.CToString(inq.ProductIdentification); ViewBag.lblScsiRevision = StringHandlers.CToString(inq.ProductRevisionLevel); } scsiOneValue.AddRange(ScsiInquiry.Report(report.SCSI.Inquiry)); - if(report.SCSI.SupportsModeSense6) scsiOneValue.Add("Device supports MODE SENSE (6)"); - if(report.SCSI.SupportsModeSense10) scsiOneValue.Add("Device supports MODE SENSE (10)"); - if(report.SCSI.SupportsModeSubpages) scsiOneValue.Add("Device supports MODE SENSE subpages"); + if (report.SCSI.SupportsModeSense6) scsiOneValue.Add("Device supports MODE SENSE (6)"); + if (report.SCSI.SupportsModeSense10) scsiOneValue.Add("Device supports MODE SENSE (10)"); + if (report.SCSI.SupportsModeSubpages) scsiOneValue.Add("Device supports MODE SENSE subpages"); - if(report.SCSI.ModeSense != null) + if (report.SCSI.ModeSense != null) { - PeripheralDeviceTypes devType = PeripheralDeviceTypes.DirectAccess; - if(report.SCSI.Inquiry != null) - devType = (PeripheralDeviceTypes)report.SCSI.Inquiry.Value.PeripheralDeviceType; + var devType = PeripheralDeviceTypes.DirectAccess; + if (report.SCSI.Inquiry != null) + devType = (PeripheralDeviceTypes) report.SCSI.Inquiry.Value.PeripheralDeviceType; ScsiModeSense.Report(report.SCSI.ModeSense, vendorId, devType, ref scsiOneValue, ref modePages); } - if(modePages.Count > 0) ViewBag.repModeSense = modePages; + if (modePages.Count > 0) ViewBag.repModeSense = modePages; - if(report.SCSI.EVPDPages != null) ScsiEvpd.Report(report.SCSI.EVPDPages, vendorId, ref evpdPages); + if (report.SCSI.EVPDPages != null) ScsiEvpd.Report(report.SCSI.EVPDPages, vendorId, ref evpdPages); - if(evpdPages.Count > 0) ViewBag.repEvpd = evpdPages; + if (evpdPages.Count > 0) ViewBag.repEvpd = evpdPages; - if(report.SCSI.MultiMediaDevice != null) + if (report.SCSI.MultiMediaDevice != null) { testedMedia = report.SCSI.MultiMediaDevice.TestedMedia; - if(report.SCSI.MultiMediaDevice.ModeSense2A != null) + if (report.SCSI.MultiMediaDevice.ModeSense2A != null) { - List mmcModeOneValue = new List(); + var mmcModeOneValue = new List(); ScsiMmcMode.Report(report.SCSI.MultiMediaDevice.ModeSense2A, ref mmcModeOneValue); - if(mmcModeOneValue.Count > 0) ViewBag.repScsiMmcMode = mmcModeOneValue; + if (mmcModeOneValue.Count > 0) ViewBag.repScsiMmcMode = mmcModeOneValue; } - if(report.SCSI.MultiMediaDevice.Features != null) + if (report.SCSI.MultiMediaDevice.Features != null) { - List mmcFeaturesOneValue = new List(); + var mmcFeaturesOneValue = new List(); ScsiMmcFeatures.Report(report.SCSI.MultiMediaDevice.Features, ref mmcFeaturesOneValue); - if(mmcFeaturesOneValue.Count > 0) ViewBag.repScsiMmcFeatures = mmcFeaturesOneValue; + if (mmcFeaturesOneValue.Count > 0) ViewBag.repScsiMmcFeatures = mmcFeaturesOneValue; } } - else if(report.SCSI.SequentialDevice != null) + else if (report.SCSI.SequentialDevice != null) { ViewBag.divScsiSscVisible = true; @@ -304,160 +306,167 @@ namespace DiscImageChef.Server.Controllers ViewBag.lblScsiSscMinBlock = report.SCSI.SequentialDevice.MinBlockLength?.ToString() ?? "Unspecified"; - if(report.SCSI.SequentialDevice.SupportedDensities != null) + if (report.SCSI.SequentialDevice.SupportedDensities != null) ViewBag.repScsiSscDensities = report.SCSI.SequentialDevice.SupportedDensities; - if(report.SCSI.SequentialDevice.SupportedMediaTypes != null) + if (report.SCSI.SequentialDevice.SupportedMediaTypes != null) ViewBag.repScsiSscMedias = report.SCSI.SequentialDevice.SupportedMediaTypes; - if(report.SCSI.SequentialDevice.TestedMedia != null) + if (report.SCSI.SequentialDevice.TestedMedia != null) { - List mediaOneValue = new List(); + var mediaOneValue = new List(); SscTestedMedia.Report(report.SCSI.SequentialDevice.TestedMedia, ref mediaOneValue); - if(mediaOneValue.Count > 0) + if (mediaOneValue.Count > 0) { - sscMedia = true; + sscMedia = true; ViewBag.repTestedMedia = mediaOneValue; } } } - else if(report.SCSI.ReadCapabilities != null) + else if (report.SCSI.ReadCapabilities != null) { removable = false; scsiOneValue.Add(""); - if(report.SCSI.ReadCapabilities.Blocks.HasValue && - report.SCSI.ReadCapabilities.BlockSize.HasValue) + if (report.SCSI.ReadCapabilities.Blocks.HasValue && + report.SCSI.ReadCapabilities.BlockSize.HasValue) { scsiOneValue - .Add($"Device has {report.SCSI.ReadCapabilities.Blocks} blocks of {report.SCSI.ReadCapabilities.BlockSize} bytes each"); + .Add( + $"Device has {report.SCSI.ReadCapabilities.Blocks} blocks of {report.SCSI.ReadCapabilities.BlockSize} bytes each"); - if(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1024 / - 1024 > 1000000) + if (report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1024 / + 1024 > 1000000) scsiOneValue - .Add($"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / - 1024 / - 1024 > 1000) + .Add( + $"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double) (report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); + else if (report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / + 1024 / + 1024 > 1000) scsiOneValue - .Add($"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000 / 1000} Gb, {(double)(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); + .Add( + $"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000 / 1000} Gb, {(double) (report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); else scsiOneValue - .Add($"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000} Mb, {(double)(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024:F2} MiB"); + .Add( + $"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000} Mb, {(double) (report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024:F2} MiB"); } - if(report.SCSI.ReadCapabilities.MediumType.HasValue) + if (report.SCSI.ReadCapabilities.MediumType.HasValue) scsiOneValue.Add($"Medium type code: {report.SCSI.ReadCapabilities.MediumType:X2}h"); - if(report.SCSI.ReadCapabilities.Density.HasValue) + if (report.SCSI.ReadCapabilities.Density.HasValue) scsiOneValue.Add($"Density code: {report.SCSI.ReadCapabilities.Density:X2}h"); - if((report.SCSI.ReadCapabilities.SupportsReadLong == true || - report.SCSI.ReadCapabilities.SupportsReadLong16 == true) && - report.SCSI.ReadCapabilities.LongBlockSize.HasValue) + if ((report.SCSI.ReadCapabilities.SupportsReadLong == true || + report.SCSI.ReadCapabilities.SupportsReadLong16 == true) && + report.SCSI.ReadCapabilities.LongBlockSize.HasValue) scsiOneValue.Add($"Long block size: {report.SCSI.ReadCapabilities.LongBlockSize} bytes"); - if(report.SCSI.ReadCapabilities.SupportsReadCapacity == true) + if (report.SCSI.ReadCapabilities.SupportsReadCapacity == true) scsiOneValue.Add("Device supports READ CAPACITY (10) command."); - if(report.SCSI.ReadCapabilities.SupportsReadCapacity16 == true) + if (report.SCSI.ReadCapabilities.SupportsReadCapacity16 == true) scsiOneValue.Add("Device supports READ CAPACITY (16) command."); - if(report.SCSI.ReadCapabilities.SupportsRead6 == true) + if (report.SCSI.ReadCapabilities.SupportsRead6 == true) scsiOneValue.Add("Device supports READ (6) command."); - if(report.SCSI.ReadCapabilities.SupportsRead10 == true) + if (report.SCSI.ReadCapabilities.SupportsRead10 == true) scsiOneValue.Add("Device supports READ (10) command."); - if(report.SCSI.ReadCapabilities.SupportsRead12 == true) + if (report.SCSI.ReadCapabilities.SupportsRead12 == true) scsiOneValue.Add("Device supports READ (12) command."); - if(report.SCSI.ReadCapabilities.SupportsRead16 == true) + if (report.SCSI.ReadCapabilities.SupportsRead16 == true) scsiOneValue.Add("Device supports READ (16) command."); - if(report.SCSI.ReadCapabilities.SupportsReadLong == true) + if (report.SCSI.ReadCapabilities.SupportsReadLong == true) scsiOneValue.Add("Device supports READ LONG (10) command."); - if(report.SCSI.ReadCapabilities.SupportsReadLong16 == true) + if (report.SCSI.ReadCapabilities.SupportsReadLong16 == true) scsiOneValue.Add("Device supports READ LONG (16) command."); } - else testedMedia = report.SCSI.RemovableMedias; + else + { + testedMedia = report.SCSI.RemovableMedias; + } ViewBag.repScsi = scsiOneValue; } - if(report.MultiMediaCard != null) + if (report.MultiMediaCard != null) { - List mmcOneValue = new List(); + var mmcOneValue = new List(); - if(report.MultiMediaCard.CID != null) + if (report.MultiMediaCard.CID != null) { mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyCID(report.MultiMediaCard.CID) - .Replace("\n", "
")); + .Replace("\n", "
")); mmcOneValue.Add(""); } - if(report.MultiMediaCard.CSD != null) + if (report.MultiMediaCard.CSD != null) { mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyCSD(report.MultiMediaCard.CSD) - .Replace("\n", "
")); + .Replace("\n", "
")); mmcOneValue.Add(""); } - if(report.MultiMediaCard.ExtendedCSD != null) + if (report.MultiMediaCard.ExtendedCSD != null) { mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyExtendedCSD(report.MultiMediaCard.ExtendedCSD) - .Replace("\n", "
")); + .Replace("\n", "
")); mmcOneValue.Add(""); } - if(report.MultiMediaCard.OCR != null) + if (report.MultiMediaCard.OCR != null) { mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyCSD(report.MultiMediaCard.OCR) - .Replace("\n", "
")); + .Replace("\n", "
")); mmcOneValue.Add(""); } ViewBag.repMMC = mmcOneValue; } - if(report.SecureDigital != null) + if (report.SecureDigital != null) { - List sdOneValue = new List(); + var sdOneValue = new List(); - if(report.SecureDigital.CID != null) + if (report.SecureDigital.CID != null) { sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifyCID(report.SecureDigital.CID) - .Replace("\n", "
")); + .Replace("\n", "
")); sdOneValue.Add(""); } - if(report.SecureDigital.CSD != null) + if (report.SecureDigital.CSD != null) { sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifyCSD(report.SecureDigital.CSD) - .Replace("\n", "
")); + .Replace("\n", "
")); sdOneValue.Add(""); } - if(report.SecureDigital.SCR != null) + if (report.SecureDigital.SCR != null) { sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifySCR(report.SecureDigital.SCR) - .Replace("\n", "
")); + .Replace("\n", "
")); sdOneValue.Add(""); } - if(report.SecureDigital.OCR != null) + if (report.SecureDigital.OCR != null) { sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifyCSD(report.SecureDigital.OCR) - .Replace("\n", "
")); + .Replace("\n", "
")); sdOneValue.Add(""); } ViewBag.repSD = sdOneValue; } - if(removable && !sscMedia && testedMedia != null) + if (removable && !sscMedia && testedMedia != null) { - List mediaOneValue = new List(); + var mediaOneValue = new List(); App_Start.TestedMedia.Report(testedMedia, ref mediaOneValue); - if(mediaOneValue.Count > 0) ViewBag.repTestedMedia = mediaOneValue; + if (mediaOneValue.Count > 0) ViewBag.repTestedMedia = mediaOneValue; } } - catch(Exception) + catch (Exception) { - #if DEBUG +#if DEBUG throw; - #endif +#endif return Content("Could not load device report"); } diff --git a/DiscImageChef.Server/Controllers/StatsController.cs b/DiscImageChef.Server/Controllers/StatsController.cs index 32a57530..29a6ca58 100644 --- a/DiscImageChef.Server/Controllers/StatsController.cs +++ b/DiscImageChef.Server/Controllers/StatsController.cs @@ -44,11 +44,7 @@ using DiscImageChef.Server.Models; using Highsoft.Web.Mvc.Charts; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Hosting.Internal; -using Filter = DiscImageChef.Server.Models.Filter; -using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; using PlatformID = DiscImageChef.CommonTypes.Interop.PlatformID; -using Version = DiscImageChef.Server.Models.Version; namespace DiscImageChef.Server.Controllers { @@ -57,13 +53,13 @@ namespace DiscImageChef.Server.Controllers ///
public class StatsController : Controller { - DicServerContext ctx; - List devices; - List operatingSystems; - List realMedia; - List versions; - List virtualMedia; - private IWebHostEnvironment _environment; + private readonly IWebHostEnvironment _environment; + private readonly DicServerContext ctx; + private List devices; + private List operatingSystems; + private List realMedia; + private List versions; + private List virtualMedia; public StatsController(IWebHostEnvironment environment, DicServerContext context) { @@ -77,118 +73,120 @@ namespace DiscImageChef.Server.Controllers try { - if( + if ( System.IO.File - .Exists(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "Statistics", "Statistics.xml"))) + .Exists(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), + "Statistics", "Statistics.xml"))) try { - Stats statistics = new Stats(); + var statistics = new Stats(); - XmlSerializer xs = new XmlSerializer(statistics.GetType()); - FileStream fs = - WaitForFile(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"), - FileMode.Open, FileAccess.Read, FileShare.Read); - statistics = (Stats)xs.Deserialize(fs); + var xs = new XmlSerializer(statistics.GetType()); + var fs = + WaitForFile( + Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), + "Statistics", "Statistics.xml"), + FileMode.Open, FileAccess.Read, FileShare.Read); + statistics = (Stats) xs.Deserialize(fs); fs.Close(); StatsConverter.Convert(statistics); System.IO.File - .Delete(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "Statistics", "Statistics.xml")); + .Delete(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), + "Statistics", "Statistics.xml")); } - catch(XmlException) + catch (XmlException) { // Do nothing } - if(ctx.OperatingSystems.Any()) + if (ctx.OperatingSystems.Any()) { operatingSystems = new List(); - foreach(OperatingSystem nvs in ctx.OperatingSystems) + foreach (var nvs in ctx.OperatingSystems) operatingSystems.Add(new NameValueStats { name = - $"{DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), nvs.Name), nvs.Version)}{(string.IsNullOrEmpty(nvs.Version) ? "" : " ")}{nvs.Version}", + $"{DetectOS.GetPlatformName((PlatformID) Enum.Parse(typeof(PlatformID), nvs.Name), nvs.Version)}{(string.IsNullOrEmpty(nvs.Version) ? "" : " ")}{nvs.Version}", Value = nvs.Count }); ViewBag.repOperatingSystems = operatingSystems.OrderBy(os => os.name).ToList(); - List osPieData = new List(); + var osPieData = new List(); decimal totalOsCount = ctx.OperatingSystems.Sum(o => o.Count); - foreach(string os in ctx.OperatingSystems.Select(o => o.Name).Distinct().ToList()) + foreach (var os in ctx.OperatingSystems.Select(o => o.Name).Distinct().ToList()) { decimal osCount = ctx.OperatingSystems.Where(o => o.Name == os).Sum(o => o.Count); osPieData.Add(new PieSeriesData { Name = - DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), - os)), - Y = (double?)(osCount / totalOsCount), - Sliced = os == "Linux", + DetectOS.GetPlatformName((PlatformID) Enum.Parse(typeof(PlatformID), + os)), + Y = (double?) (osCount / totalOsCount), + Sliced = os == "Linux", Selected = os == "Linux" }); } ViewData["osPieData"] = osPieData; - List linuxPieData = new List(); + var linuxPieData = new List(); decimal linuxCount = ctx.OperatingSystems.Where(o => o.Name == PlatformID.Linux.ToString()) - .Sum(o => o.Count); - foreach(OperatingSystem version in + .Sum(o => o.Count); + foreach (var version in ctx.OperatingSystems.Where(o => o.Name == PlatformID.Linux.ToString())) linuxPieData.Add(new PieSeriesData { Name = $"{DetectOS.GetPlatformName(PlatformID.Linux, version.Version)}{(string.IsNullOrEmpty(version.Version) ? "" : " ")}{version.Version}", - Y = (double?)(version.Count / linuxCount) + Y = (double?) (version.Count / linuxCount) }); ViewData["linuxPieData"] = linuxPieData; - List macosPieData = new List(); + var macosPieData = new List(); decimal macosCount = ctx.OperatingSystems.Where(o => o.Name == PlatformID.MacOSX.ToString()) - .Sum(o => o.Count); - foreach(OperatingSystem version in + .Sum(o => o.Count); + foreach (var version in ctx.OperatingSystems.Where(o => o.Name == PlatformID.MacOSX.ToString())) macosPieData.Add(new PieSeriesData { Name = $"{DetectOS.GetPlatformName(PlatformID.MacOSX, version.Version)}{(string.IsNullOrEmpty(version.Version) ? "" : " ")}{version.Version}", - Y = (double?)(version.Count / macosCount) + Y = (double?) (version.Count / macosCount) }); ViewData["macosPieData"] = macosPieData; - List windowsPieData = new List(); + var windowsPieData = new List(); decimal windowsCount = ctx.OperatingSystems.Where(o => o.Name == PlatformID.Win32NT.ToString()) - .Sum(o => o.Count); - foreach(OperatingSystem version in + .Sum(o => o.Count); + foreach (var version in ctx.OperatingSystems.Where(o => o.Name == PlatformID.Win32NT.ToString())) windowsPieData.Add(new PieSeriesData { Name = $"{DetectOS.GetPlatformName(PlatformID.Win32NT, version.Version)}{(string.IsNullOrEmpty(version.Version) ? "" : " ")}{version.Version}", - Y = (double?)(version.Count / windowsCount) + Y = (double?) (version.Count / windowsCount) }); ViewData["windowsPieData"] = windowsPieData; } - if(ctx.Versions.Any()) + if (ctx.Versions.Any()) { versions = new List(); - foreach(Version nvs in ctx.Versions) + foreach (var nvs in ctx.Versions) versions.Add(new NameValueStats { - name = nvs.Value == "previous" ? "Previous than 3.4.99.0" : nvs.Value, + name = nvs.Value == "previous" ? "Previous than 3.4.99.0" : nvs.Value, Value = nvs.Count }); @@ -202,210 +200,211 @@ namespace DiscImageChef.Server.Controllers version.Value == "previous" ? "Previous than 3.4.99.0" : version.Value, - Y = (double?)(version.Count / - totalVersionCount), - Sliced = version.Value == "previous", + Y = (double?) (version.Count / + totalVersionCount), + Sliced = version.Value == "previous", Selected = version.Value == "previous" }).ToList(); } - if(ctx.Commands.Any()) + if (ctx.Commands.Any()) { ViewBag.repCommands = ctx.Commands.OrderBy(c => c.Name).ToList(); decimal totalCommandCount = ctx.Commands.Sum(o => o.Count); ViewData["commandsPieData"] = ctx - .Commands.Select(command => new PieSeriesData - { - Name = command.Name, - Y = (double?)(command.Count / - totalCommandCount), - Sliced = command.Name == "analyze", - Selected = command.Name == "analyze" - }).ToList(); + .Commands.Select(command => new PieSeriesData + { + Name = command.Name, + Y = (double?) (command.Count / + totalCommandCount), + Sliced = command.Name == "analyze", + Selected = command.Name == "analyze" + }).ToList(); } - if(ctx.Filters.Any()) + if (ctx.Filters.Any()) { ViewBag.repFilters = ctx.Filters.OrderBy(filter => filter.Name).ToList(); - List filtersPieData = new List(); + var filtersPieData = new List(); decimal totalFiltersCount = ctx.Filters.Sum(o => o.Count); - foreach(Filter filter in ctx.Filters.ToList()) + foreach (var filter in ctx.Filters.ToList()) filtersPieData.Add(new PieSeriesData { - Name = filter.Name, - Y = (double?)(filter.Count / totalFiltersCount), - Sliced = filter.Name == "No filter", + Name = filter.Name, + Y = (double?) (filter.Count / totalFiltersCount), + Sliced = filter.Name == "No filter", Selected = filter.Name == "No filter" }); ViewData["filtersPieData"] = filtersPieData; } - if(ctx.MediaFormats.Any()) + if (ctx.MediaFormats.Any()) { ViewBag.repMediaImages = ctx.MediaFormats.OrderBy(filter => filter.Name).ToList(); - List formatsPieData = new List(); + var formatsPieData = new List(); decimal totalFormatsCount = ctx.MediaFormats.Sum(o => o.Count); - decimal top10FormatCount = 0; + decimal top10FormatCount = 0; - foreach(MediaFormat format in ctx.MediaFormats.OrderByDescending(o => o.Count).Take(10)) + foreach (var format in ctx.MediaFormats.OrderByDescending(o => o.Count).Take(10)) { top10FormatCount += format.Count; formatsPieData.Add(new PieSeriesData { - Name = format.Name, Y = (double?)(format.Count / totalFormatsCount) + Name = format.Name, Y = (double?) (format.Count / totalFormatsCount) }); } formatsPieData.Add(new PieSeriesData { Name = "Other", - Y = (double?)((totalFormatsCount - top10FormatCount) / - totalFormatsCount), - Sliced = true, + Y = (double?) ((totalFormatsCount - top10FormatCount) / + totalFormatsCount), + Sliced = true, Selected = true }); ViewData["formatsPieData"] = formatsPieData; } - if(ctx.Partitions.Any()) + if (ctx.Partitions.Any()) { ViewBag.repPartitions = ctx.Partitions.OrderBy(filter => filter.Name).ToList(); - List partitionsPieData = new List(); + var partitionsPieData = new List(); decimal totalPartitionsCount = ctx.Partitions.Sum(o => o.Count); - decimal top10PartitionCount = 0; + decimal top10PartitionCount = 0; - foreach(Partition partition in ctx.Partitions.OrderByDescending(o => o.Count).Take(10)) + foreach (var partition in ctx.Partitions.OrderByDescending(o => o.Count).Take(10)) { top10PartitionCount += partition.Count; partitionsPieData.Add(new PieSeriesData { Name = partition.Name, - Y = (double?)(partition.Count / totalPartitionsCount) + Y = (double?) (partition.Count / totalPartitionsCount) }); } partitionsPieData.Add(new PieSeriesData { Name = "Other", - Y = (double?)((totalPartitionsCount - top10PartitionCount) / - totalPartitionsCount), - Sliced = true, + Y = (double?) ((totalPartitionsCount - top10PartitionCount) / + totalPartitionsCount), + Sliced = true, Selected = true }); ViewData["partitionsPieData"] = partitionsPieData; } - if(ctx.Filesystems.Any()) + if (ctx.Filesystems.Any()) { ViewBag.repFilesystems = ctx.Filesystems.OrderBy(filter => filter.Name).ToList(); - List filesystemsPieData = new List(); + var filesystemsPieData = new List(); decimal totalFilesystemsCount = ctx.Filesystems.Sum(o => o.Count); - decimal top10FilesystemCount = 0; + decimal top10FilesystemCount = 0; - foreach(Filesystem filesystem in ctx.Filesystems.OrderByDescending(o => o.Count).Take(10)) + foreach (var filesystem in ctx.Filesystems.OrderByDescending(o => o.Count).Take(10)) { top10FilesystemCount += filesystem.Count; filesystemsPieData.Add(new PieSeriesData { Name = filesystem.Name, - Y = (double?)(filesystem.Count / totalFilesystemsCount) + Y = (double?) (filesystem.Count / totalFilesystemsCount) }); } filesystemsPieData.Add(new PieSeriesData { Name = "Other", - Y = (double?)((totalFilesystemsCount - top10FilesystemCount) / - totalFilesystemsCount), - Sliced = true, + Y = (double?) ((totalFilesystemsCount - top10FilesystemCount) / + totalFilesystemsCount), + Sliced = true, Selected = true }); ViewData["filesystemsPieData"] = filesystemsPieData; } - if(ctx.Medias.Any()) + if (ctx.Medias.Any()) { - realMedia = new List(); + realMedia = new List(); virtualMedia = new List(); - foreach(Media nvs in ctx.Medias) + foreach (var nvs in ctx.Medias) try { MediaType - .MediaTypeToString((CommonTypes.MediaType)Enum.Parse(typeof(CommonTypes.MediaType), nvs.Type), - out string type, out string subtype); + .MediaTypeToString( + (CommonTypes.MediaType) Enum.Parse(typeof(CommonTypes.MediaType), nvs.Type), + out var type, out var subtype); - if(nvs.Real) - realMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); + if (nvs.Real) + realMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); else virtualMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); } catch { - if(nvs.Real) - realMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); + if (nvs.Real) + realMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); else virtualMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); } - if(realMedia.Count > 0) + if (realMedia.Count > 0) { ViewBag.repRealMedia = realMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList(); - List realMediaPieData = new List(); + var realMediaPieData = new List(); decimal totalRealMediaCount = realMedia.Sum(o => o.Count); decimal top10RealMediaCount = 0; - foreach(MediaItem realMediaItem in realMedia.OrderByDescending(o => o.Count).Take(10)) + foreach (var realMediaItem in realMedia.OrderByDescending(o => o.Count).Take(10)) { top10RealMediaCount += realMediaItem.Count; realMediaPieData.Add(new PieSeriesData { Name = $"{realMediaItem.Type} ({realMediaItem.SubType})", - Y = (double?)(realMediaItem.Count / totalRealMediaCount) + Y = (double?) (realMediaItem.Count / totalRealMediaCount) }); } realMediaPieData.Add(new PieSeriesData { Name = "Other", - Y = (double?)((totalRealMediaCount - top10RealMediaCount) / - totalRealMediaCount), - Sliced = true, + Y = (double?) ((totalRealMediaCount - top10RealMediaCount) / + totalRealMediaCount), + Sliced = true, Selected = true }); ViewData["realMediaPieData"] = realMediaPieData; } - if(virtualMedia.Count > 0) + if (virtualMedia.Count > 0) { ViewBag.repVirtualMedia = virtualMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList(); - List virtualMediaPieData = new List(); + var virtualMediaPieData = new List(); decimal totalVirtualMediaCount = virtualMedia.Sum(o => o.Count); decimal top10VirtualMediaCount = 0; - foreach(MediaItem virtualMediaItem in virtualMedia.OrderByDescending(o => o.Count).Take(10)) + foreach (var virtualMediaItem in virtualMedia.OrderByDescending(o => o.Count).Take(10)) { top10VirtualMediaCount += virtualMediaItem.Count; @@ -413,8 +412,8 @@ namespace DiscImageChef.Server.Controllers { Name = $"{virtualMediaItem.Type} ({virtualMediaItem.SubType})", - Y = (double?)(virtualMediaItem.Count / - totalVirtualMediaCount) + Y = (double?) (virtualMediaItem.Count / + totalVirtualMediaCount) }); } @@ -424,7 +423,7 @@ namespace DiscImageChef.Server.Controllers Y = (double?) ((totalVirtualMediaCount - top10VirtualMediaCount) / totalVirtualMediaCount), - Sliced = true, + Sliced = true, Selected = true }); @@ -432,93 +431,100 @@ namespace DiscImageChef.Server.Controllers } } - if(ctx.DeviceStats.Any()) + if (ctx.DeviceStats.Any()) { devices = new List(); - foreach(DeviceStat device in ctx.DeviceStats.ToList()) + foreach (var device in ctx.DeviceStats.ToList()) { string xmlFile; - if(!string.IsNullOrWhiteSpace(device.Manufacturer) && - !string.IsNullOrWhiteSpace(device.Model) && - !string.IsNullOrWhiteSpace(device.Revision)) + if (!string.IsNullOrWhiteSpace(device.Manufacturer) && + !string.IsNullOrWhiteSpace(device.Model) && + !string.IsNullOrWhiteSpace(device.Revision)) xmlFile = device.Manufacturer + "_" + device.Model + "_" + device.Revision + ".xml"; - else if(!string.IsNullOrWhiteSpace(device.Manufacturer) && - !string.IsNullOrWhiteSpace(device.Model)) + else if (!string.IsNullOrWhiteSpace(device.Manufacturer) && + !string.IsNullOrWhiteSpace(device.Model)) xmlFile = device.Manufacturer + "_" + device.Model + ".xml"; - else if(!string.IsNullOrWhiteSpace(device.Model) && !string.IsNullOrWhiteSpace(device.Revision)) - xmlFile = device.Model + "_" + device.Revision + ".xml"; - else xmlFile = device.Model + ".xml"; + else if (!string.IsNullOrWhiteSpace(device.Model) && + !string.IsNullOrWhiteSpace(device.Revision)) + xmlFile = device.Model + "_" + device.Revision + ".xml"; + else xmlFile = device.Model + ".xml"; xmlFile = xmlFile.Replace('/', '_').Replace('\\', '_').Replace('?', '_'); - if(System.IO.File.Exists(Path.Combine(_environment.ContentRootPath, "Reports", xmlFile))) + if (System.IO.File.Exists(Path.Combine(_environment.ContentRootPath, "Reports", xmlFile))) { - DeviceReport deviceReport = new DeviceReport(); + var deviceReport = new DeviceReport(); - XmlSerializer xs = new XmlSerializer(deviceReport.GetType()); - FileStream fs = - WaitForFile(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Reports", xmlFile), - FileMode.Open, FileAccess.Read, FileShare.Read); - deviceReport = (DeviceReport)xs.Deserialize(fs); + var xs = new XmlSerializer(deviceReport.GetType()); + var fs = + WaitForFile( + Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), + "Reports", xmlFile), + FileMode.Open, FileAccess.Read, FileShare.Read); + deviceReport = (DeviceReport) xs.Deserialize(fs); fs.Close(); - DeviceReportV2 deviceReportV2 = new DeviceReportV2(deviceReport); + var deviceReportV2 = new DeviceReportV2(deviceReport); device.Report = ctx.Devices.Add(new Device(deviceReportV2)).Entity; ctx.SaveChanges(); System.IO.File - .Delete(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "Reports", xmlFile)); + .Delete(Path.Combine( + _environment.ContentRootPath ?? throw new InvalidOperationException(), + "Reports", xmlFile)); } devices.Add(new DeviceItem { Manufacturer = device.Manufacturer, - Model = device.Model, - Revision = device.Revision, - Bus = device.Bus, + Model = device.Model, + Revision = device.Revision, + Bus = device.Bus, ReportId = device.Report != null && device.Report.Id != 0 - ? device.Report.Id - : 0 + ? device.Report.Id + : 0 }); } ViewBag.repDevices = devices.OrderBy(device => device.Manufacturer).ThenBy(device => device.Model) - .ThenBy(device => device.Revision).ThenBy(device => device.Bus) - .ToList(); + .ThenBy(device => device.Revision).ThenBy(device => device.Bus) + .ToList(); ViewData["devicesBusPieData"] = (from deviceBus in devices.Select(d => d.Bus).Distinct() - let deviceBusCount = devices.Count(d => d.Bus == deviceBus) - select new PieSeriesData - { - Name = deviceBus, - Y = deviceBusCount / (double)devices.Count - }).ToList(); + let deviceBusCount = devices.Count(d => d.Bus == deviceBus) + select new PieSeriesData + { + Name = deviceBus, + Y = deviceBusCount / (double) devices.Count + }).ToList(); ViewData["devicesManufacturerPieData"] = (from manufacturer in - devices.Where(d => d.Manufacturer != null).Select(d => d.Manufacturer.ToLowerInvariant()) + devices.Where(d => d.Manufacturer != null) + .Select(d => d.Manufacturer.ToLowerInvariant()) .Distinct() - let manufacturerCount = devices.Count(d => d.Manufacturer?.ToLowerInvariant() == manufacturer) - select new PieSeriesData {Name = manufacturer, Y = manufacturerCount / (double)devices.Count}) - .ToList(); + let manufacturerCount = + devices.Count(d => d.Manufacturer?.ToLowerInvariant() == manufacturer) + select new PieSeriesData + {Name = manufacturer, Y = manufacturerCount / (double) devices.Count}) + .ToList(); } } - catch(Exception) + catch (Exception) { - #if DEBUG +#if DEBUG throw; - #endif +#endif return Content("Could not read statistics"); } return View(); } - static FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) + private static FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) { - for(int numTries = 0; numTries < 100; numTries++) + for (var numTries = 0; numTries < 100; numTries++) { FileStream fs = null; try @@ -526,7 +532,7 @@ namespace DiscImageChef.Server.Controllers fs = new FileStream(fullPath, mode, access, share); return fs; } - catch(IOException) + catch (IOException) { fs?.Dispose(); Thread.Sleep(50); diff --git a/DiscImageChef.Server/Controllers/UpdateController.cs b/DiscImageChef.Server/Controllers/UpdateController.cs index d23bf798..9f905bd9 100644 --- a/DiscImageChef.Server/Controllers/UpdateController.cs +++ b/DiscImageChef.Server/Controllers/UpdateController.cs @@ -30,13 +30,10 @@ // Copyright © 2011-2019 Natalia Portillo // ****************************************************************************/ -using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; -using System.Net.Http; -using System.Text; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Dto; using DiscImageChef.Server.Models; @@ -48,7 +45,7 @@ namespace DiscImageChef.Server.Controllers { public class UpdateController : Controller { - private DicServerContext _ctx; + private readonly DicServerContext _ctx; public UpdateController(DicServerContext ctx) { @@ -63,40 +60,43 @@ namespace DiscImageChef.Server.Controllers [HttpGet] public ActionResult Update(long timestamp) { - SyncDto sync = new SyncDto(); - DateTime lastSync = DateHandlers.UnixToDateTime(timestamp); + var sync = new SyncDto(); + var lastSync = DateHandlers.UnixToDateTime(timestamp); sync.UsbVendors = new List(); - foreach(UsbVendor vendor in _ctx.UsbVendors.Where(v => v.ModifiedWhen > lastSync)) - sync.UsbVendors.Add(new UsbVendorDto {VendorId = (ushort)vendor.VendorId, Vendor = vendor.Vendor}); + foreach (var vendor in _ctx.UsbVendors.Where(v => v.ModifiedWhen > lastSync)) + sync.UsbVendors.Add(new UsbVendorDto {VendorId = (ushort) vendor.VendorId, Vendor = vendor.Vendor}); sync.UsbProducts = new List(); - foreach(UsbProduct product in _ctx.UsbProducts.Include(p => p.Vendor).Where(p => p.ModifiedWhen > lastSync)) + foreach (var product in _ctx.UsbProducts.Include(p => p.Vendor).Where(p => p.ModifiedWhen > lastSync)) sync.UsbProducts.Add(new UsbProductDto { - Id = product.Id, - Product = product.Product, - ProductId = (ushort)product.ProductId, - VendorId = (ushort)product.Vendor.VendorId + Id = product.Id, + Product = product.Product, + ProductId = (ushort) product.ProductId, + VendorId = (ushort) product.Vendor.VendorId }); sync.Offsets = new List(); - foreach(CompactDiscOffset offset in _ctx.CdOffsets.Where(o => o.ModifiedWhen > lastSync)) + foreach (var offset in _ctx.CdOffsets.Where(o => o.ModifiedWhen > lastSync)) sync.Offsets.Add(new CdOffsetDto(offset, offset.Id)); sync.Devices = new List(); - foreach(Device device in _ctx.Devices.Where(d => d.ModifiedWhen > lastSync).ToList()) + foreach (var device in _ctx.Devices.Where(d => d.ModifiedWhen > lastSync).ToList()) sync.Devices.Add(new - DeviceDto(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(device, Formatting.None, new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore})), - device.Id, device.OptimalMultipleSectorsRead)); + DeviceDto( + JsonConvert.DeserializeObject(JsonConvert.SerializeObject(device, + Formatting.None, + new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore})), + device.Id, device.OptimalMultipleSectorsRead)); - JsonSerializer js = JsonSerializer.Create(); - StringWriter sw = new StringWriter(); + var js = JsonSerializer.Create(); + var sw = new StringWriter(); js.Serialize(sw, sync); return new ContentResult { - StatusCode = (int)HttpStatusCode.OK, + StatusCode = (int) HttpStatusCode.OK, Content = sw.ToString(), ContentType = "application/json" }; diff --git a/DiscImageChef.Server/Controllers/UploadReportController.cs b/DiscImageChef.Server/Controllers/UploadReportController.cs index d0a76728..0f15d01b 100644 --- a/DiscImageChef.Server/Controllers/UploadReportController.cs +++ b/DiscImageChef.Server/Controllers/UploadReportController.cs @@ -34,19 +34,15 @@ using System; using System.Diagnostics; using System.IO; using System.Net; -using System.Net.Http; using System.Text; using System.Threading.Tasks; -using System.Web; using System.Xml.Serialization; using Cinchoo.PGP; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Server.Models; using MailKit.Net.Smtp; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Hosting.Internal; using MimeKit; using Newtonsoft.Json; @@ -54,8 +50,8 @@ namespace DiscImageChef.Server.Controllers { public class UploadReportController : Controller { - private DicServerContext ctx; - private IWebHostEnvironment _environment; + private readonly IWebHostEnvironment _environment; + private readonly DicServerContext ctx; public UploadReportController(IWebHostEnvironment environment, DicServerContext _ctx) { @@ -71,53 +67,54 @@ namespace DiscImageChef.Server.Controllers [HttpPost] public async Task UploadReport() { - ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; + var response = new ContentResult {StatusCode = (int) HttpStatusCode.OK, ContentType = "text/plain"}; try { - DeviceReport newReport = new DeviceReport(); - HttpRequest request = HttpContext.Request; + var newReport = new DeviceReport(); + var request = HttpContext.Request; - XmlSerializer xs = new XmlSerializer(newReport.GetType()); - newReport = (DeviceReport) xs.Deserialize(new StringReader(await new StreamReader(request.Body).ReadToEndAsync())); + var xs = new XmlSerializer(newReport.GetType()); + newReport = (DeviceReport) xs.Deserialize( + new StringReader(await new StreamReader(request.Body).ReadToEndAsync())); - if(newReport == null) + if (newReport == null) { response.Content = "notstats"; return response; } - DeviceReportV2 reportV2 = new DeviceReportV2(newReport); - StringWriter jsonSw = new StringWriter(); + var reportV2 = new DeviceReportV2(newReport); + var jsonSw = new StringWriter(); jsonSw.Write(JsonConvert.SerializeObject(reportV2, Formatting.Indented, - new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore - })); - string reportV2String = jsonSw.ToString(); + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + })); + var reportV2String = jsonSw.ToString(); jsonSw.Close(); ctx.Reports.Add(new UploadedReport(reportV2)); ctx.SaveChanges(); - MemoryStream pgpIn = new MemoryStream(Encoding.UTF8.GetBytes(reportV2String)); - MemoryStream pgpOut = new MemoryStream(); - ChoPGPEncryptDecrypt pgp = new ChoPGPEncryptDecrypt(); + var pgpIn = new MemoryStream(Encoding.UTF8.GetBytes(reportV2String)); + var pgpOut = new MemoryStream(); + var pgp = new ChoPGPEncryptDecrypt(); pgp.Encrypt(pgpIn, pgpOut, - Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "public.asc"), true); + Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), + "public.asc")); pgpOut.Position = 0; - reportV2String = Encoding.UTF8.GetString(pgpOut.ToArray()); + reportV2String = Encoding.UTF8.GetString(pgpOut.ToArray()); - MimeMessage message = new MimeMessage + var message = new MimeMessage { Subject = "New device report (old version)", - Body = new TextPart("plain") {Text = reportV2String} + Body = new TextPart("plain") {Text = reportV2String} }; - message.From.Add(new MailboxAddress("DiscImageChef", "dic@claunia.com")); + message.From.Add(new MailboxAddress("DiscImageChef", "dic@claunia.com")); message.To.Add(new MailboxAddress("Natalia Portillo", "claunia@claunia.com")); - using(SmtpClient client = new SmtpClient()) + using (var client = new SmtpClient()) { client.Connect("mail.claunia.com", 25, false); client.Send(message); @@ -130,9 +127,9 @@ namespace DiscImageChef.Server.Controllers // ReSharper disable once RedundantCatchClause catch { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif +#if DEBUG + if (Debugger.IsAttached) throw; +#endif response.Content = "error"; return response; } @@ -146,17 +143,17 @@ namespace DiscImageChef.Server.Controllers [HttpPost] public async Task UploadReportV2() { - ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; + var response = new ContentResult {StatusCode = (int) HttpStatusCode.OK, ContentType = "text/plain"}; try { - HttpRequest request = HttpContext.Request; + var request = HttpContext.Request; - StreamReader sr = new StreamReader(request.Body); - string reportJson = await sr.ReadToEndAsync(); - DeviceReportV2 newReport = JsonConvert.DeserializeObject(reportJson); + var sr = new StreamReader(request.Body); + var reportJson = await sr.ReadToEndAsync(); + var newReport = JsonConvert.DeserializeObject(reportJson); - if(newReport == null) + if (newReport == null) { response.Content = "notstats"; return response; @@ -165,23 +162,23 @@ namespace DiscImageChef.Server.Controllers ctx.Reports.Add(new UploadedReport(newReport)); ctx.SaveChanges(); - MemoryStream pgpIn = new MemoryStream(Encoding.UTF8.GetBytes(reportJson)); - MemoryStream pgpOut = new MemoryStream(); - ChoPGPEncryptDecrypt pgp = new ChoPGPEncryptDecrypt(); + var pgpIn = new MemoryStream(Encoding.UTF8.GetBytes(reportJson)); + var pgpOut = new MemoryStream(); + var pgp = new ChoPGPEncryptDecrypt(); pgp.Encrypt(pgpIn, pgpOut, - Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), - "public.asc"), true); + Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), + "public.asc")); pgpOut.Position = 0; - reportJson = Encoding.UTF8.GetString(pgpOut.ToArray()); + reportJson = Encoding.UTF8.GetString(pgpOut.ToArray()); - MimeMessage message = new MimeMessage + var message = new MimeMessage { Subject = "New device report", Body = new TextPart("plain") {Text = reportJson} }; - message.From.Add(new MailboxAddress("DiscImageChef", "dic@claunia.com")); + message.From.Add(new MailboxAddress("DiscImageChef", "dic@claunia.com")); message.To.Add(new MailboxAddress("Natalia Portillo", "claunia@claunia.com")); - using(SmtpClient client = new SmtpClient()) + using (var client = new SmtpClient()) { client.Connect("mail.claunia.com", 25, false); client.Send(message); @@ -194,10 +191,10 @@ namespace DiscImageChef.Server.Controllers // ReSharper disable once RedundantCatchClause catch { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - response.Content ="error"; +#if DEBUG + if (Debugger.IsAttached) throw; +#endif + response.Content = "error"; return response; } } diff --git a/DiscImageChef.Server/Controllers/UploadStatsController.cs b/DiscImageChef.Server/Controllers/UploadStatsController.cs index 5a370105..f780a936 100644 --- a/DiscImageChef.Server/Controllers/UploadStatsController.cs +++ b/DiscImageChef.Server/Controllers/UploadStatsController.cs @@ -35,16 +35,12 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Net; -using System.Net.Http; -using System.Text; using System.Threading; using System.Threading.Tasks; -using System.Web; using System.Xml.Serialization; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Server.Models; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; @@ -54,7 +50,7 @@ namespace DiscImageChef.Server.Controllers { public class UploadStatsController : Controller { - DicServerContext _ctx; + private readonly DicServerContext _ctx; private IWebHostEnvironment _environment; public UploadStatsController(IWebHostEnvironment environment, DicServerContext ctx) @@ -62,6 +58,7 @@ namespace DiscImageChef.Server.Controllers _environment = environment; _ctx = ctx; } + /// /// Receives statistics from DiscImageChef.Core, processes them and adds them to a server-side global statistics XML /// @@ -70,17 +67,18 @@ namespace DiscImageChef.Server.Controllers [HttpPost] public async Task UploadStats() { - ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; + var response = new ContentResult {StatusCode = (int) HttpStatusCode.OK, ContentType = "text/plain"}; try { - Stats newStats = new Stats(); - HttpRequest request = HttpContext.Request; + var newStats = new Stats(); + var request = HttpContext.Request; - XmlSerializer xs = new XmlSerializer(newStats.GetType()); - newStats = (Stats) xs.Deserialize(new StringReader(await new StreamReader(request.Body).ReadToEndAsync())); + var xs = new XmlSerializer(newStats.GetType()); + newStats = (Stats) xs.Deserialize( + new StringReader(await new StreamReader(request.Body).ReadToEndAsync())); - if(newStats == null) + if (newStats == null) { response.Content = "notstats"; return response; @@ -91,11 +89,11 @@ namespace DiscImageChef.Server.Controllers response.Content = "ok"; return response; } - catch(Exception ex) + catch (Exception ex) { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif +#if DEBUG + if (Debugger.IsAttached) throw; +#endif response.Content = "error"; return response; } @@ -109,119 +107,120 @@ namespace DiscImageChef.Server.Controllers [HttpPost] public async Task UploadStatsV2() { - ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; + var response = new ContentResult {StatusCode = (int) HttpStatusCode.OK, ContentType = "text/plain"}; try { - HttpRequest request = HttpContext.Request; + var request = HttpContext.Request; - StreamReader sr = new StreamReader(request.Body); + var sr = new StreamReader(request.Body); var statsString = await sr.ReadToEndAsync(); - StatsDto newstats = JsonConvert.DeserializeObject(statsString); + var newstats = JsonConvert.DeserializeObject(statsString); - if(newstats == null) + if (newstats == null) { response.Content = "notstats"; return response; } - if(newstats.Commands != null) - foreach(NameValueStats nvs in newstats.Commands) + if (newstats.Commands != null) + foreach (var nvs in newstats.Commands) { - Command existing = _ctx.Commands.FirstOrDefault(c => c.Name == nvs.name); + var existing = _ctx.Commands.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) _ctx.Commands.Add(new Command {Name = nvs.name, Count = nvs.Value}); + if (existing == null) _ctx.Commands.Add(new Command {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } - if(newstats.Versions != null) - foreach(NameValueStats nvs in newstats.Versions) + if (newstats.Versions != null) + foreach (var nvs in newstats.Versions) { - Version existing = _ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); + var existing = _ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); - if(existing == null) _ctx.Versions.Add(new Version {Value = nvs.name, Count = nvs.Value}); + if (existing == null) _ctx.Versions.Add(new Version {Value = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } - if(newstats.Filesystems != null) - foreach(NameValueStats nvs in newstats.Filesystems) + if (newstats.Filesystems != null) + foreach (var nvs in newstats.Filesystems) { - Filesystem existing = _ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); + var existing = _ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) _ctx.Filesystems.Add(new Filesystem {Name = nvs.name, Count = nvs.Value}); + if (existing == null) _ctx.Filesystems.Add(new Filesystem {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } - if(newstats.Partitions != null) - foreach(NameValueStats nvs in newstats.Partitions) + if (newstats.Partitions != null) + foreach (var nvs in newstats.Partitions) { - Partition existing = _ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); + var existing = _ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) _ctx.Partitions.Add(new Partition {Name = nvs.name, Count = nvs.Value}); + if (existing == null) _ctx.Partitions.Add(new Partition {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } - if(newstats.MediaFormats != null) - foreach(NameValueStats nvs in newstats.MediaFormats) + if (newstats.MediaFormats != null) + foreach (var nvs in newstats.MediaFormats) { - MediaFormat existing = _ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); + var existing = _ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) _ctx.MediaFormats.Add(new MediaFormat {Name = nvs.name, Count = nvs.Value}); + if (existing == null) + _ctx.MediaFormats.Add(new MediaFormat {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } - if(newstats.Filters != null) - foreach(NameValueStats nvs in newstats.Filters) + if (newstats.Filters != null) + foreach (var nvs in newstats.Filters) { - Filter existing = _ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); + var existing = _ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) _ctx.Filters.Add(new Filter {Name = nvs.name, Count = nvs.Value}); + if (existing == null) _ctx.Filters.Add(new Filter {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } - if(newstats.OperatingSystems != null) - foreach(OsStats operatingSystem in newstats.OperatingSystems) + if (newstats.OperatingSystems != null) + foreach (var operatingSystem in newstats.OperatingSystems) { - OperatingSystem existing = - _ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && - c.Version == operatingSystem.version); + var existing = + _ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && + c.Version == operatingSystem.version); - if(existing == null) + if (existing == null) _ctx.OperatingSystems.Add(new OperatingSystem { - Name = operatingSystem.name, + Name = operatingSystem.name, Version = operatingSystem.version, - Count = operatingSystem.Value + Count = operatingSystem.Value }); else existing.Count += operatingSystem.Value; } - if(newstats.Medias != null) - foreach(MediaStats media in newstats.Medias) + if (newstats.Medias != null) + foreach (var media in newstats.Medias) { - Media existing = _ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); + var existing = _ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); - if(existing == null) + if (existing == null) _ctx.Medias.Add(new Media {Type = media.type, Real = media.real, Count = media.Value}); else existing.Count += media.Value; } - if(newstats.Devices != null) - foreach(DeviceStats device in newstats.Devices) + if (newstats.Devices != null) + foreach (var device in newstats.Devices) { - DeviceStat existing = - _ctx.DeviceStats.FirstOrDefault(c => c.Bus == device.Bus && - c.Manufacturer == device.Manufacturer && - c.Model == device.Model && - c.Revision == device.Revision); + var existing = + _ctx.DeviceStats.FirstOrDefault(c => c.Bus == device.Bus && + c.Manufacturer == device.Manufacturer && + c.Model == device.Model && + c.Revision == device.Revision); - if(existing == null) + if (existing == null) _ctx.DeviceStats.Add(new DeviceStat { - Bus = device.Bus, + Bus = device.Bus, Manufacturer = device.Manufacturer, - Model = device.Model, - Revision = device.Revision + Model = device.Model, + Revision = device.Revision }); } @@ -233,17 +232,17 @@ namespace DiscImageChef.Server.Controllers // ReSharper disable once RedundantCatchClause catch { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif +#if DEBUG + if (Debugger.IsAttached) throw; +#endif response.Content = "error"; return response; } } - FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) + private FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) { - for(int numTries = 0; numTries < 100; numTries++) + for (var numTries = 0; numTries < 100; numTries++) { FileStream fs = null; try @@ -251,9 +250,9 @@ namespace DiscImageChef.Server.Controllers fs = new FileStream(fullPath, mode, access, share); return fs; } - catch(IOException) + catch (IOException) { - if(fs != null) fs.Dispose(); + if (fs != null) fs.Dispose(); Thread.Sleep(50); } } diff --git a/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs b/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs index ba536db9..ed8c583c 100644 --- a/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs +++ b/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs @@ -10,6 +10,7 @@ namespace DiscImageChef.Server.Migrations protected override void Up(MigrationBuilder migrationBuilder) { #region Check for old tables + var AtasExists = DicServerContext.TableExists("Atas"); var BlockDescriptorsExists = DicServerContext.TableExists("BlockDescriptors"); var ChsExists = DicServerContext.TableExists("Chs"); @@ -43,10 +44,12 @@ namespace DiscImageChef.Server.Migrations var UsbVendorsExists = DicServerContext.TableExists("UsbVendors"); var VersionsExists = DicServerContext.TableExists("Versions"); var EFExists = DicServerContext.TableExists("__MigrationHistory"); + #endregion #region Drop old restrictions - if(AtasExists) + + if (AtasExists) migrationBuilder.DropForeignKey("FK_Atas_TestedMedias_ReadCapabilities_Id", "Atas"); if (BlockDescriptorsExists) migrationBuilder.DropForeignKey("FK_BlockDescriptors_ScsiModes_ScsiMode_Id", "BlockDescriptors"); @@ -74,6 +77,7 @@ namespace DiscImageChef.Server.Migrations migrationBuilder.DropForeignKey( "FK_Devices_Usbs_USB_Id", "Devices"); } + if (DeviceStatsExists) migrationBuilder.DropForeignKey( "FK_DeviceStats_Devices_Report_Id", "DeviceStats"); @@ -83,123 +87,128 @@ namespace DiscImageChef.Server.Migrations if (ScsiPagesExists) { migrationBuilder.DropForeignKey( - "FK_ScsiPages_ScsiModes_ScsiMode_Id","ScsiPages"); + "FK_ScsiPages_ScsiModes_ScsiMode_Id", "ScsiPages"); migrationBuilder.DropForeignKey( - "FK_ScsiPages_Scsis_Scsi_Id","ScsiPages"); + "FK_ScsiPages_Scsis_Scsi_Id", "ScsiPages"); } + if (ScsisExists) { migrationBuilder.DropForeignKey( - "FK_Scsis_Mmcs_MultiMediaDevice_Id","Scsis"); + "FK_Scsis_Mmcs_MultiMediaDevice_Id", "Scsis"); migrationBuilder.DropForeignKey( - "FK_Scsis_ScsiModes_ModeSense_Id","Scsis"); + "FK_Scsis_ScsiModes_ModeSense_Id", "Scsis"); migrationBuilder.DropForeignKey( - "FK_Scsis_Sscs_SequentialDevice_Id","Scsis"); + "FK_Scsis_Sscs_SequentialDevice_Id", "Scsis"); migrationBuilder.DropForeignKey( - "FK_Scsis_TestedMedias_ReadCapabilities_Id","Scsis"); + "FK_Scsis_TestedMedias_ReadCapabilities_Id", "Scsis"); } + if (SscSupportedMediasExists) { migrationBuilder.DropForeignKey( - "FK_a812ec60296b45bcb3d245a5c6d01d73","SscSupportedMedias"); + "FK_a812ec60296b45bcb3d245a5c6d01d73", "SscSupportedMedias"); migrationBuilder.DropForeignKey( - "FK_SscSupportedMedias_Sscs_Ssc_Id","SscSupportedMedias"); + "FK_SscSupportedMedias_Sscs_Ssc_Id", "SscSupportedMedias"); } + if (SupportedDensitiesExists) { migrationBuilder.DropForeignKey( - "FK_783f1b3552774280af1caf44fb27e285","SupportedDensities"); + "FK_783f1b3552774280af1caf44fb27e285", "SupportedDensities"); migrationBuilder.DropForeignKey( - "FK_SupportedDensities_Sscs_Ssc_Id","SupportedDensities"); + "FK_SupportedDensities_Sscs_Ssc_Id", "SupportedDensities"); } + if (TestedMediasExists) { migrationBuilder.DropForeignKey( - "FK_TestedMedias_Atas_Ata_Id","TestedMedias"); + "FK_TestedMedias_Atas_Ata_Id", "TestedMedias"); migrationBuilder.DropForeignKey( - "FK_TestedMedias_Chs_CHS_Id","TestedMedias"); + "FK_TestedMedias_Chs_CHS_Id", "TestedMedias"); migrationBuilder.DropForeignKey( - "FK_TestedMedias_Chs_CurrentCHS_Id","TestedMedias"); + "FK_TestedMedias_Chs_CurrentCHS_Id", "TestedMedias"); migrationBuilder.DropForeignKey( - "FK_TestedMedias_Mmcs_Mmc_Id","TestedMedias"); + "FK_TestedMedias_Mmcs_Mmc_Id", "TestedMedias"); migrationBuilder.DropForeignKey( - "FK_TestedMedias_Scsis_Scsi_Id","TestedMedias"); + "FK_TestedMedias_Scsis_Scsi_Id", "TestedMedias"); } + if (TestedSequentialMediasExists) migrationBuilder.DropForeignKey( - "FK_TestedSequentialMedias_Sscs_Ssc_Id","TestedSequentialMedias"); + "FK_TestedSequentialMedias_Sscs_Ssc_Id", "TestedSequentialMedias"); if (UploadedReportsExists) { migrationBuilder.DropForeignKey( - "FK_UploadedReports_Atas_ATA_Id","UploadedReports"); + "FK_UploadedReports_Atas_ATA_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_Atas_ATAPI_Id","UploadedReports"); + "FK_UploadedReports_Atas_ATAPI_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_FireWires_FireWire_Id","UploadedReports"); + "FK_UploadedReports_FireWires_FireWire_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_MmcSds_MultiMediaCard_Id","UploadedReports"); + "FK_UploadedReports_MmcSds_MultiMediaCard_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_MmcSds_SecureDigital_Id","UploadedReports"); + "FK_UploadedReports_MmcSds_SecureDigital_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_Pcmcias_PCMCIA_Id","UploadedReports"); + "FK_UploadedReports_Pcmcias_PCMCIA_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_Scsis_SCSI_Id","UploadedReports"); + "FK_UploadedReports_Scsis_SCSI_Id", "UploadedReports"); migrationBuilder.DropForeignKey( - "FK_UploadedReports_Usbs_USB_Id","UploadedReports"); + "FK_UploadedReports_Usbs_USB_Id", "UploadedReports"); } + if (UsbProductsExists) migrationBuilder.DropForeignKey( - "FK_UsbProducts_UsbVendors_VendorId","UsbProducts"); + "FK_UsbProducts_UsbVendors_VendorId", "UsbProducts"); + #endregion #region TABLE: CdOffsets + migrationBuilder.CreateTable( - name: "CdOffsets", - columns: table => new + "CdOffsets", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), - Offset = table.Column(nullable: false), - Submissions = table.Column(nullable: false), - Agreement = table.Column(nullable: false), - AddedWhen = table.Column(nullable: false), - ModifiedWhen = table.Column(nullable: false) + Offset = table.Column(), + Submissions = table.Column(), + Agreement = table.Column(), + AddedWhen = table.Column(), + ModifiedWhen = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_CdOffsets", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_CdOffsets", x => x.Id); }); if (CompactDiscOffsetsExists) { - migrationBuilder.Sql("INSERT INTO CdOffsets (Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen) SELECT Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen FROM CompactDiscOffsets"); + migrationBuilder.Sql( + "INSERT INTO CdOffsets (Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen) SELECT Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen FROM CompactDiscOffsets"); migrationBuilder.DropTable("CompactDiscOffsets"); } + #endregion #region TABLE: Chs + if (ChsExists) - migrationBuilder.RenameTable(name: "Chs", newName: "Chs_old"); + migrationBuilder.RenameTable("Chs", newName: "Chs_old"); migrationBuilder.CreateTable( - name: "Chs", - columns: table => new + "Chs", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Cylinders = table.Column(nullable: false), - Heads = table.Column(nullable: false), - Sectors = table.Column(nullable: false), - CylindersSql = table.Column(nullable: false), - HeadsSql = table.Column(nullable: false), - SectorsSql = table.Column(nullable: false) + Cylinders = table.Column(), + Heads = table.Column(), + Sectors = table.Column(), + CylindersSql = table.Column(), + HeadsSql = table.Column(), + SectorsSql = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Chs", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Chs", x => x.Id); }); if (ChsExists) { @@ -207,25 +216,24 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO Chs (Id, Cylinders, Heads, Sectors, CylindersSql, HeadsSql, SectorsSql) SELECT Id, CylindersSql AS Cylinders, HeadsSql AS Heads, SectorsSql AS Sectors, CylindersSql, HeadsSql, SectorsSql FROM Chs_old"); migrationBuilder.DropTable("Chs_old"); } + #endregion #region TABLE: Commands + if (CommandsExists) - migrationBuilder.RenameTable(name: "Commands", newName: "Commands_old"); + migrationBuilder.RenameTable("Commands", newName: "Commands_old"); migrationBuilder.CreateTable( - name: "Commands", - columns: table => new + "Commands", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Commands", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Commands", x => x.Id); }); if (CommandsExists) { @@ -233,25 +241,24 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO Commands (Id, Name, Count) SELECT Id, Name, Count FROM Commands_old"); migrationBuilder.DropTable("Commands_old"); } + #endregion #region TABLE: Filesystems + if (FilesystemsExists) - migrationBuilder.RenameTable(name: "Filesystems", newName: "Filesystems_old"); + migrationBuilder.RenameTable("Filesystems", newName: "Filesystems_old"); migrationBuilder.CreateTable( - name: "Filesystems", - columns: table => new + "Filesystems", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Filesystems", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Filesystems", x => x.Id); }); if (FilesystemsExists) { @@ -259,25 +266,24 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO Filesystems (Id, Name, Count) SELECT Id, Name, Count FROM Filesystems_old"); migrationBuilder.DropTable("Filesystems_old"); } + #endregion #region TABLE: Filters + if (FiltersExists) - migrationBuilder.RenameTable(name: "Filters", newName: "Filters_old"); + migrationBuilder.RenameTable("Filters", newName: "Filters_old"); migrationBuilder.CreateTable( - name: "Filters", - columns: table => new + "Filters", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Filters", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Filters", x => x.Id); }); if (FiltersExists) { @@ -285,27 +291,26 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO Filters (Id, Name, Count) SELECT Id, Name, Count FROM Filters_old"); migrationBuilder.DropTable("Filters_old"); } + #endregion #region TABLE: FireWire + migrationBuilder.CreateTable( - name: "FireWire", - columns: table => new + "FireWire", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - VendorID = table.Column(nullable: false), - ProductID = table.Column(nullable: false), + VendorID = table.Column(), + ProductID = table.Column(), Manufacturer = table.Column(nullable: true), Product = table.Column(nullable: true), - RemovableMedia = table.Column(nullable: false), - VendorIDSql = table.Column(nullable: false), - ProductIDSql = table.Column(nullable: false) + RemovableMedia = table.Column(), + VendorIDSql = table.Column(), + ProductIDSql = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_FireWire", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_FireWire", x => x.Id); }); if (FireWiresExists) { @@ -313,25 +318,24 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO FireWire (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, VendorIDSql, ProductIDSql FROM FireWires"); migrationBuilder.DropTable("FireWires"); } + #endregion #region TABLE: MediaFormats + if (MediaFormatsExists) - migrationBuilder.RenameTable(name: "MediaFormats", newName: "MediaFormats_old"); + migrationBuilder.RenameTable("MediaFormats", newName: "MediaFormats_old"); migrationBuilder.CreateTable( - name: "MediaFormats", - columns: table => new + "MediaFormats", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_MediaFormats", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_MediaFormats", x => x.Id); }); if (MediaFormatsExists) { @@ -339,23 +343,22 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO MediaFormats (Id, Name, Count) SELECT Id, Name, Count FROM MediaFormats_old"); migrationBuilder.DropTable("MediaFormats_old"); } + #endregion #region TABLE: Medias + migrationBuilder.CreateTable( - name: "Medias", - columns: table => new + "Medias", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Type = table.Column(nullable: true), - Real = table.Column(nullable: false), - Count = table.Column(nullable: false) + Real = table.Column(), + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Medias", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Medias", x => x.Id); }); if (MediaExists) { @@ -363,140 +366,142 @@ namespace DiscImageChef.Server.Migrations "INSERT INTO Medias (`Id`, `Type`, `Real`, `Count`) SELECT `Id`, `Type`, `Real`, `Count` FROM Media"); migrationBuilder.DropTable("Media"); } + #endregion #region TABLE: MmcFeatures + if (MmcFeaturesExists) - migrationBuilder.RenameTable(name: "MmcFeatures", newName: "MmcFeatures_old"); + migrationBuilder.RenameTable("MmcFeatures", newName: "MmcFeatures_old"); migrationBuilder.CreateTable( - name: "MmcFeatures", - columns: table => new + "MmcFeatures", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), AACSVersion = table.Column(nullable: true), AGIDs = table.Column(nullable: true), BindingNonceBlocks = table.Column(nullable: true), BlocksPerReadableUnit = table.Column(nullable: true), - BufferUnderrunFreeInDVD = table.Column(nullable: false), - BufferUnderrunFreeInSAO = table.Column(nullable: false), - BufferUnderrunFreeInTAO = table.Column(nullable: false), - CanAudioScan = table.Column(nullable: false), - CanEject = table.Column(nullable: false), - CanEraseSector = table.Column(nullable: false), - CanExpandBDRESpareArea = table.Column(nullable: false), - CanFormat = table.Column(nullable: false), - CanFormatBDREWithoutSpare = table.Column(nullable: false), - CanFormatCert = table.Column(nullable: false), - CanFormatFRF = table.Column(nullable: false), - CanFormatQCert = table.Column(nullable: false), - CanFormatRRM = table.Column(nullable: false), - CanGenerateBindingNonce = table.Column(nullable: false), - CanLoad = table.Column(nullable: false), - CanMuteSeparateChannels = table.Column(nullable: false), - CanOverwriteSAOTrack = table.Column(nullable: false), - CanOverwriteTAOTrack = table.Column(nullable: false), - CanPlayCDAudio = table.Column(nullable: false), - CanPseudoOverwriteBDR = table.Column(nullable: false), - CanReadAllDualR = table.Column(nullable: false), - CanReadAllDualRW = table.Column(nullable: false), - CanReadBD = table.Column(nullable: false), - CanReadBDR = table.Column(nullable: false), - CanReadBDRE1 = table.Column(nullable: false), - CanReadBDRE2 = table.Column(nullable: false), - CanReadBDROM = table.Column(nullable: false), - CanReadBluBCA = table.Column(nullable: false), - CanReadCD = table.Column(nullable: false), - CanReadCDMRW = table.Column(nullable: false), - CanReadCPRM_MKB = table.Column(nullable: false), - CanReadDDCD = table.Column(nullable: false), - CanReadDVD = table.Column(nullable: false), - CanReadDVDPlusMRW = table.Column(nullable: false), - CanReadDVDPlusR = table.Column(nullable: false), - CanReadDVDPlusRDL = table.Column(nullable: false), - CanReadDVDPlusRW = table.Column(nullable: false), - CanReadDVDPlusRWDL = table.Column(nullable: false), - CanReadDriveAACSCertificate = table.Column(nullable: false), - CanReadHDDVD = table.Column(nullable: false), - CanReadHDDVDR = table.Column(nullable: false), - CanReadHDDVDRAM = table.Column(nullable: false), - CanReadLeadInCDText = table.Column(nullable: false), - CanReadOldBDR = table.Column(nullable: false), - CanReadOldBDRE = table.Column(nullable: false), - CanReadOldBDROM = table.Column(nullable: false), - CanReadSpareAreaInformation = table.Column(nullable: false), - CanReportDriveSerial = table.Column(nullable: false), - CanReportMediaSerial = table.Column(nullable: false), - CanTestWriteDDCDR = table.Column(nullable: false), - CanTestWriteDVD = table.Column(nullable: false), - CanTestWriteInSAO = table.Column(nullable: false), - CanTestWriteInTAO = table.Column(nullable: false), - CanUpgradeFirmware = table.Column(nullable: false), - CanWriteBD = table.Column(nullable: false), - CanWriteBDR = table.Column(nullable: false), - CanWriteBDRE1 = table.Column(nullable: false), - CanWriteBDRE2 = table.Column(nullable: false), - CanWriteBusEncryptedBlocks = table.Column(nullable: false), - CanWriteCDMRW = table.Column(nullable: false), - CanWriteCDRW = table.Column(nullable: false), - CanWriteCDRWCAV = table.Column(nullable: false), - CanWriteCDSAO = table.Column(nullable: false), - CanWriteCDTAO = table.Column(nullable: false), - CanWriteCSSManagedDVD = table.Column(nullable: false), - CanWriteDDCDR = table.Column(nullable: false), - CanWriteDDCDRW = table.Column(nullable: false), - CanWriteDVDPlusMRW = table.Column(nullable: false), - CanWriteDVDPlusR = table.Column(nullable: false), - CanWriteDVDPlusRDL = table.Column(nullable: false), - CanWriteDVDPlusRW = table.Column(nullable: false), - CanWriteDVDPlusRWDL = table.Column(nullable: false), - CanWriteDVDR = table.Column(nullable: false), - CanWriteDVDRDL = table.Column(nullable: false), - CanWriteDVDRW = table.Column(nullable: false), - CanWriteHDDVDR = table.Column(nullable: false), - CanWriteHDDVDRAM = table.Column(nullable: false), - CanWriteOldBDR = table.Column(nullable: false), - CanWriteOldBDRE = table.Column(nullable: false), - CanWritePackedSubchannelInTAO = table.Column(nullable: false), - CanWriteRWSubchannelInSAO = table.Column(nullable: false), - CanWriteRWSubchannelInTAO = table.Column(nullable: false), - CanWriteRaw = table.Column(nullable: false), - CanWriteRawMultiSession = table.Column(nullable: false), - CanWriteRawSubchannelInTAO = table.Column(nullable: false), - ChangerIsSideChangeCapable = table.Column(nullable: false), - ChangerSlots = table.Column(nullable: false), - ChangerSupportsDiscPresent = table.Column(nullable: false), + BufferUnderrunFreeInDVD = table.Column(), + BufferUnderrunFreeInSAO = table.Column(), + BufferUnderrunFreeInTAO = table.Column(), + CanAudioScan = table.Column(), + CanEject = table.Column(), + CanEraseSector = table.Column(), + CanExpandBDRESpareArea = table.Column(), + CanFormat = table.Column(), + CanFormatBDREWithoutSpare = table.Column(), + CanFormatCert = table.Column(), + CanFormatFRF = table.Column(), + CanFormatQCert = table.Column(), + CanFormatRRM = table.Column(), + CanGenerateBindingNonce = table.Column(), + CanLoad = table.Column(), + CanMuteSeparateChannels = table.Column(), + CanOverwriteSAOTrack = table.Column(), + CanOverwriteTAOTrack = table.Column(), + CanPlayCDAudio = table.Column(), + CanPseudoOverwriteBDR = table.Column(), + CanReadAllDualR = table.Column(), + CanReadAllDualRW = table.Column(), + CanReadBD = table.Column(), + CanReadBDR = table.Column(), + CanReadBDRE1 = table.Column(), + CanReadBDRE2 = table.Column(), + CanReadBDROM = table.Column(), + CanReadBluBCA = table.Column(), + CanReadCD = table.Column(), + CanReadCDMRW = table.Column(), + CanReadCPRM_MKB = table.Column(), + CanReadDDCD = table.Column(), + CanReadDVD = table.Column(), + CanReadDVDPlusMRW = table.Column(), + CanReadDVDPlusR = table.Column(), + CanReadDVDPlusRDL = table.Column(), + CanReadDVDPlusRW = table.Column(), + CanReadDVDPlusRWDL = table.Column(), + CanReadDriveAACSCertificate = table.Column(), + CanReadHDDVD = table.Column(), + CanReadHDDVDR = table.Column(), + CanReadHDDVDRAM = table.Column(), + CanReadLeadInCDText = table.Column(), + CanReadOldBDR = table.Column(), + CanReadOldBDRE = table.Column(), + CanReadOldBDROM = table.Column(), + CanReadSpareAreaInformation = table.Column(), + CanReportDriveSerial = table.Column(), + CanReportMediaSerial = table.Column(), + CanTestWriteDDCDR = table.Column(), + CanTestWriteDVD = table.Column(), + CanTestWriteInSAO = table.Column(), + CanTestWriteInTAO = table.Column(), + CanUpgradeFirmware = table.Column(), + CanWriteBD = table.Column(), + CanWriteBDR = table.Column(), + CanWriteBDRE1 = table.Column(), + CanWriteBDRE2 = table.Column(), + CanWriteBusEncryptedBlocks = table.Column(), + CanWriteCDMRW = table.Column(), + CanWriteCDRW = table.Column(), + CanWriteCDRWCAV = table.Column(), + CanWriteCDSAO = table.Column(), + CanWriteCDTAO = table.Column(), + CanWriteCSSManagedDVD = table.Column(), + CanWriteDDCDR = table.Column(), + CanWriteDDCDRW = table.Column(), + CanWriteDVDPlusMRW = table.Column(), + CanWriteDVDPlusR = table.Column(), + CanWriteDVDPlusRDL = table.Column(), + CanWriteDVDPlusRW = table.Column(), + CanWriteDVDPlusRWDL = table.Column(), + CanWriteDVDR = table.Column(), + CanWriteDVDRDL = table.Column(), + CanWriteDVDRW = table.Column(), + CanWriteHDDVDR = table.Column(), + CanWriteHDDVDRAM = table.Column(), + CanWriteOldBDR = table.Column(), + CanWriteOldBDRE = table.Column(), + CanWritePackedSubchannelInTAO = table.Column(), + CanWriteRWSubchannelInSAO = table.Column(), + CanWriteRWSubchannelInTAO = table.Column(), + CanWriteRaw = table.Column(), + CanWriteRawMultiSession = table.Column(), + CanWriteRawSubchannelInTAO = table.Column(), + ChangerIsSideChangeCapable = table.Column(), + ChangerSlots = table.Column(), + ChangerSupportsDiscPresent = table.Column(), CPRMVersion = table.Column(nullable: true), CSSVersion = table.Column(nullable: true), - DBML = table.Column(nullable: false), - DVDMultiRead = table.Column(nullable: false), - EmbeddedChanger = table.Column(nullable: false), - ErrorRecoveryPage = table.Column(nullable: false), + DBML = table.Column(), + DVDMultiRead = table.Column(), + EmbeddedChanger = table.Column(), + ErrorRecoveryPage = table.Column(), FirmwareDate = table.Column(nullable: true), LoadingMechanismType = table.Column(nullable: true), - Locked = table.Column(nullable: false), + Locked = table.Column(), LogicalBlockSize = table.Column(nullable: true), - MultiRead = table.Column(nullable: false), + MultiRead = table.Column(), PhysicalInterfaceStandardNumber = table.Column(nullable: true), - PreventJumper = table.Column(nullable: false), - SupportsAACS = table.Column(nullable: false), - SupportsBusEncryption = table.Column(nullable: false), - SupportsC2 = table.Column(nullable: false), - SupportsCPRM = table.Column(nullable: false), - SupportsCSS = table.Column(nullable: false), - SupportsDAP = table.Column(nullable: false), - SupportsDeviceBusyEvent = table.Column(nullable: false), - SupportsHybridDiscs = table.Column(nullable: false), - SupportsModePage1Ch = table.Column(nullable: false), - SupportsOSSC = table.Column(nullable: false), - SupportsPWP = table.Column(nullable: false), - SupportsSWPP = table.Column(nullable: false), - SupportsSecurDisc = table.Column(nullable: false), - SupportsSeparateVolume = table.Column(nullable: false), - SupportsVCPS = table.Column(nullable: false), - SupportsWriteInhibitDCB = table.Column(nullable: false), - SupportsWriteProtectPAC = table.Column(nullable: false), + PreventJumper = table.Column(), + SupportsAACS = table.Column(), + SupportsBusEncryption = table.Column(), + SupportsC2 = table.Column(), + SupportsCPRM = table.Column(), + SupportsCSS = table.Column(), + SupportsDAP = table.Column(), + SupportsDeviceBusyEvent = table.Column(), + SupportsHybridDiscs = table.Column(), + SupportsModePage1Ch = table.Column(), + SupportsOSSC = table.Column(), + SupportsPWP = table.Column(), + SupportsSWPP = table.Column(), + SupportsSecurDisc = table.Column(), + SupportsSeparateVolume = table.Column(), + SupportsVCPS = table.Column(), + SupportsWriteInhibitDCB = table.Column(), + SupportsWriteProtectPAC = table.Column(), VolumeLevels = table.Column(nullable: true), BinaryData = table.Column(nullable: true), BlocksPerReadableUnitSql = table.Column(nullable: true), @@ -504,10 +509,7 @@ namespace DiscImageChef.Server.Migrations PhysicalInterfaceStandardNumberSql = table.Column(nullable: true), VolumeLevelsSql = table.Column(nullable: true) }, - constraints: table => - { - table.PrimaryKey("PK_MmcFeatures", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_MmcFeatures", x => x.Id); }); if (MmcFeaturesExists) { @@ -766,7 +768,7 @@ BlocksPerReadableUnitSql, LogicalBlockSizeSql, PhysicalInterfaceStandardNumberSql, VolumeLevelsSql FROM MmcFeatures_old WHERE VolumeLevelsSql >= 0 OR VolumeLevelsSql IS NULL"); -migrationBuilder.Sql(@"INSERT INTO MmcFeatures (AACSVersion, + migrationBuilder.Sql(@"INSERT INTO MmcFeatures (AACSVersion, AGIDs, BindingNonceBlocks, BlocksPerReadableUnit, @@ -1021,16 +1023,18 @@ BlocksPerReadableUnitSql, LogicalBlockSizeSql, PhysicalInterfaceStandardNumberSql, VolumeLevelsSql FROM MmcFeatures_old WHERE VolumeLevelsSql < 0"); -migrationBuilder.DropTable("MmcFeatures_old"); + migrationBuilder.DropTable("MmcFeatures_old"); } + #endregion #region TABLE: MmcSd + migrationBuilder.CreateTable( - name: "MmcSd", - columns: table => new + "MmcSd", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CID = table.Column(nullable: true), CSD = table.Column(nullable: true), @@ -1038,10 +1042,7 @@ migrationBuilder.DropTable("MmcFeatures_old"); SCR = table.Column(nullable: true), ExtendedCSD = table.Column(nullable: true) }, - constraints: table => - { - table.PrimaryKey("PK_MmcSd", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_MmcSd", x => x.Id); }); if (MmcSdsExists) { @@ -1049,26 +1050,25 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO MmcSd (Id, CID, CSD, OCR, SCR, ExtendedCSD) SELECT Id, CID, CSD, OCR, SCR, ExtendedCSD FROM MmcSds"); migrationBuilder.DropTable("MmcSds"); } + #endregion #region TABLE: OperatingSystems + if (OperatingSystemsExists) - migrationBuilder.RenameTable(name: "OperatingSystems", newName: "OperatingSystems_old"); + migrationBuilder.RenameTable("OperatingSystems", newName: "OperatingSystems_old"); migrationBuilder.CreateTable( - name: "OperatingSystems", - columns: table => new + "OperatingSystems", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Version = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_OperatingSystems", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_OperatingSystems", x => x.Id); }); if (OperatingSystemsExists) { @@ -1076,25 +1076,24 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO OperatingSystems (Id, Name, Version, Count) SELECT Id, Name, Version, Count FROM OperatingSystems_old"); migrationBuilder.DropTable("OperatingSystems_old"); } + #endregion #region TABLE: Partitions + if (PartitionsExists) - migrationBuilder.RenameTable(name: "Partitions", newName: "Partitions_old"); + migrationBuilder.RenameTable("Partitions", newName: "Partitions_old"); migrationBuilder.CreateTable( - name: "Partitions", - columns: table => new + "Partitions", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Partitions", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Partitions", x => x.Id); }); if (PartitionsExists) { @@ -1102,14 +1101,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Partitions (Id, Name, Count) SELECT Id, Name, Count FROM Partitions_old"); migrationBuilder.DropTable("Partitions_old"); } + #endregion #region TABLE: Pcmcia + migrationBuilder.CreateTable( - name: "Pcmcia", - columns: table => new + "Pcmcia", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CIS = table.Column(nullable: true), Compliance = table.Column(nullable: true), @@ -1120,10 +1121,7 @@ migrationBuilder.DropTable("MmcFeatures_old"); ManufacturerCodeSql = table.Column(nullable: true), CardCodeSql = table.Column(nullable: true) }, - constraints: table => - { - table.PrimaryKey("PK_Pcmcia", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Pcmcia", x => x.Id); }); if (PcmciasExists) { @@ -1131,26 +1129,25 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Pcmcia (Id, CIS, Compliance, ManufacturerCode, CardCode, Manufacturer, ProductName, ManufacturerCodeSql, CardCodeSql) SELECT Id, CIS, Compliance, ManufacturerCodeSql AS ManufacturerCode, CardCodeSql AS CardCode, Manufacturer, ProductName, ManufacturerCodeSql, CardCodeSql FROM Pcmcias"); migrationBuilder.DropTable("Pcmcias"); } + #endregion #region TABLE: ScsiMode + migrationBuilder.CreateTable( - name: "ScsiMode", - columns: table => new + "ScsiMode", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), MediumType = table.Column(nullable: true), - WriteProtected = table.Column(nullable: false), + WriteProtected = table.Column(), Speed = table.Column(nullable: true), BufferedMode = table.Column(nullable: true), - BlankCheckEnabled = table.Column(nullable: false), - DPOandFUA = table.Column(nullable: false) + BlankCheckEnabled = table.Column(), + DPOandFUA = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_ScsiMode", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_ScsiMode", x => x.Id); }); if (ScsiModesExists) { @@ -1158,14 +1155,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO ScsiMode (Id, MediumType, WriteProtected, Speed, BufferedMode, BlankCheckEnabled, DPOandFUA) SELECT Id, MediumType, WriteProtected, Speed, BufferedMode, BlankCheckEnabled, DPOandFUA FROM ScsiModes"); migrationBuilder.DropTable("ScsiModes"); } + #endregion #region TABLE: Ssc + migrationBuilder.CreateTable( - name: "Ssc", - columns: table => new + "Ssc", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), BlockSizeGranularity = table.Column(nullable: true), MaxBlockLength = table.Column(nullable: true), @@ -1173,10 +1172,7 @@ migrationBuilder.DropTable("MmcFeatures_old"); MaxBlockLengthSql = table.Column(nullable: true), MinBlockLengthSql = table.Column(nullable: true) }, - constraints: table => - { - table.PrimaryKey("PK_Ssc", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Ssc", x => x.Id); }); if (SscsExists) { @@ -1184,28 +1180,27 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Ssc (Id, BlockSizeGranularity, MaxBlockLength, MinBlockLength, MaxBlockLengthSql, MinBlockLengthSql) SELECT Id, BlockSizeGranularity, MaxBlockLengthSql AS MaxBlockLength, MinBlockLengthSql AS MinBlockLength, MaxBlockLengthSql, MinBlockLengthSql FROM Sscs"); migrationBuilder.DropTable("Sscs"); } + #endregion #region TABLE: Usb + migrationBuilder.CreateTable( - name: "Usb", - columns: table => new + "Usb", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - VendorID = table.Column(nullable: false), - ProductID = table.Column(nullable: false), + VendorID = table.Column(), + ProductID = table.Column(), Manufacturer = table.Column(nullable: true), Product = table.Column(nullable: true), - RemovableMedia = table.Column(nullable: false), + RemovableMedia = table.Column(), Descriptors = table.Column(nullable: true), - VendorIDSql = table.Column(nullable: false), - ProductIDSql = table.Column(nullable: false) + VendorIDSql = table.Column(), + ProductIDSql = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Usb", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Usb", x => x.Id); }); if (UsbsExists) { @@ -1219,28 +1214,26 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, (65536+VendorIDSql) AS VendorID, (65536+ProductIDSql) AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql < 0 AND ProductIDSql < 0"); migrationBuilder.DropTable("Usbs"); } + #endregion #region TABLE: UsbVendors if (UsbVendorsExists) - migrationBuilder.RenameTable(name: "UsbVendors", newName: "UsbVendors_old"); + migrationBuilder.RenameTable("UsbVendors", newName: "UsbVendors_old"); migrationBuilder.CreateTable( - name: "UsbVendors", - columns: table => new + "UsbVendors", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - VendorId = table.Column(nullable: false), + VendorId = table.Column(), Vendor = table.Column(nullable: true), - AddedWhen = table.Column(nullable: false), - ModifiedWhen = table.Column(nullable: false) + AddedWhen = table.Column(), + ModifiedWhen = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_UsbVendors", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_UsbVendors", x => x.Id); }); if (UsbVendorsExists) { @@ -1248,26 +1241,24 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO UsbVendors (Id, VendorId, Vendor, AddedWhen, ModifiedWhen) SELECT Id, VendorId, Vendor, AddedWhen, ModifiedWhen FROM UsbVendors_old"); migrationBuilder.DropTable("UsbVendors_old"); } + #endregion #region TABLE: Versions if (VersionsExists) - migrationBuilder.RenameTable(name: "Versions", newName: "Versions_old"); + migrationBuilder.RenameTable("Versions", newName: "Versions_old"); migrationBuilder.CreateTable( - name: "Versions", - columns: table => new + "Versions", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Value = table.Column(nullable: true), - Count = table.Column(nullable: false) + Count = table.Column() }, - constraints: table => - { - table.PrimaryKey("PK_Versions", x => x.Id); - }); + constraints: table => { table.PrimaryKey("PK_Versions", x => x.Id); }); if (VersionsExists) { @@ -1275,14 +1266,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Versions (`Id`, `Value`, `Count`) SELECT `Id`, `Value`, `Count` FROM Versions_old"); migrationBuilder.DropTable("Versions_old"); } + #endregion #region TABLE: Mmc + migrationBuilder.CreateTable( - name: "Mmc", - columns: table => new + "Mmc", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), FeaturesId = table.Column(nullable: true), ModeSense2AData = table.Column(nullable: true) @@ -1291,10 +1284,10 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_Mmc", x => x.Id); table.ForeignKey( - name: "FK_Mmc_MmcFeatures_FeaturesId", - column: x => x.FeaturesId, - principalTable: "MmcFeatures", - principalColumn: "Id", + "FK_Mmc_MmcFeatures_FeaturesId", + x => x.FeaturesId, + "MmcFeatures", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1304,16 +1297,18 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Mmc (Id, FeaturesId, ModeSense2AData) SELECT Id, Features_Id, ModeSense2AData FROM Mmcs WHERE EXISTS(SELECT 1 FROM MmcFeatures WHERE MmcFeatures.Id = Features_Id) OR Features_Id IS NULL"); migrationBuilder.DropTable("Mmcs"); } + #endregion #region TABLE: BlockDescriptor + migrationBuilder.CreateTable( - name: "BlockDescriptor", - columns: table => new + "BlockDescriptor", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Density = table.Column(nullable: false), + Density = table.Column(), Blocks = table.Column(nullable: true), BlockLength = table.Column(nullable: true), BlocksSql = table.Column(nullable: true), @@ -1324,10 +1319,10 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_BlockDescriptor", x => x.Id); table.ForeignKey( - name: "FK_BlockDescriptor_ScsiMode_ScsiModeId", - column: x => x.ScsiModeId, - principalTable: "ScsiMode", - principalColumn: "Id", + "FK_BlockDescriptor_ScsiMode_ScsiModeId", + x => x.ScsiModeId, + "ScsiMode", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1337,19 +1332,21 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO BlockDescriptor (Id, Density, Blocks, BlocksSql, BlockLength, BlockLengthSql, ScsiModeId) SELECT Id, Density, BlocksSql AS Blocks, BlocksSql, BlockLengthSql AS BlockLength, BlockLengthSql, ScsiMode_Id FROM BlockDescriptors"); migrationBuilder.DropTable("BlockDescriptors"); } + #endregion #region TABLE: TestedSequentialMedia + migrationBuilder.CreateTable( - name: "TestedSequentialMedia", - columns: table => new + "TestedSequentialMedia", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CanReadMediaSerial = table.Column(nullable: true), Density = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), - MediaIsRecognized = table.Column(nullable: false), + MediaIsRecognized = table.Column(), MediumType = table.Column(nullable: true), MediumTypeName = table.Column(nullable: true), Model = table.Column(nullable: true), @@ -1361,10 +1358,10 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_TestedSequentialMedia", x => x.Id); table.ForeignKey( - name: "FK_TestedSequentialMedia_Ssc_SscId", - column: x => x.SscId, - principalTable: "Ssc", - principalColumn: "Id", + "FK_TestedSequentialMedia_Ssc_SscId", + x => x.SscId, + "Ssc", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1374,35 +1371,33 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO TestedSequentialMedia (Id, CanReadMediaSerial, Density, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, ModeSense6Data, ModeSense10Data, SscId) SELECT Id, CanReadMediaSerial, Density, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, ModeSense6Data, ModeSense10Data, Ssc_Id FROM TestedSequentialMedias"); migrationBuilder.DropTable("TestedSequentialMedias"); } + #endregion #region TABLE: UsbProducts - if (UsbProductsExists) - { - migrationBuilder.RenameTable(name: "UsbProducts", newName: "UsbProducts_old"); - } + if (UsbProductsExists) migrationBuilder.RenameTable("UsbProducts", newName: "UsbProducts_old"); migrationBuilder.CreateTable( - name: "UsbProducts", - columns: table => new + "UsbProducts", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ProductId = table.Column(nullable: false), + ProductId = table.Column(), Product = table.Column(nullable: true), - AddedWhen = table.Column(nullable: false), - ModifiedWhen = table.Column(nullable: false), - VendorId = table.Column(nullable: false) + AddedWhen = table.Column(), + ModifiedWhen = table.Column(), + VendorId = table.Column() }, constraints: table => { table.PrimaryKey("PK_UsbProducts", x => x.Id); table.ForeignKey( - name: "FK_UsbProducts_UsbVendors_VendorId", - column: x => x.VendorId, - principalTable: "UsbVendors", - principalColumn: "Id", + "FK_UsbProducts_UsbVendors_VendorId", + x => x.VendorId, + "UsbVendors", + "Id", onDelete: ReferentialAction.Cascade); }); @@ -1412,23 +1407,25 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO UsbProducts (Id, ProductId, Product, AddedWhen, ModifiedWhen, VendorId) SELECT Id, ProductId, Product, AddedWhen, ModifiedWhen, VendorId FROM UsbProducts_old"); migrationBuilder.DropTable("UsbProducts_old"); } + #endregion -#region TABLE: SscSupportedMedia + #region TABLE: SscSupportedMedia + migrationBuilder.CreateTable( - name: "SscSupportedMedia", - columns: table => new + "SscSupportedMedia", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - MediumType = table.Column(nullable: false), - Width = table.Column(nullable: false), - Length = table.Column(nullable: false), + MediumType = table.Column(), + Width = table.Column(), + Length = table.Column(), Organization = table.Column(nullable: true), Name = table.Column(nullable: true), Description = table.Column(nullable: true), - WidthSql = table.Column(nullable: false), - LengthSql = table.Column(nullable: false), + WidthSql = table.Column(), + LengthSql = table.Column(), SscId = table.Column(nullable: true), TestedSequentialMediaId = table.Column(nullable: true) }, @@ -1436,16 +1433,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_SscSupportedMedia", x => x.Id); table.ForeignKey( - name: "FK_SscSupportedMedia_Ssc_SscId", - column: x => x.SscId, - principalTable: "Ssc", - principalColumn: "Id", + "FK_SscSupportedMedia_Ssc_SscId", + x => x.SscId, + "Ssc", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_SscSupportedMedia_TestedSequentialMedia_TestedSequentialMedi~", - column: x => x.TestedSequentialMediaId, - principalTable: "TestedSequentialMedia", - principalColumn: "Id", + "FK_SscSupportedMedia_TestedSequentialMedia_TestedSequentialMedi~", + x => x.TestedSequentialMediaId, + "TestedSequentialMedia", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1455,31 +1452,33 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO SscSupportedMedia (Id, MediumType, Width, Length, Organization, Name, Description, WidthSql, LengthSql, SscId, TestedSequentialMediaId) SELECT Id, MediumType, WidthSql AS Width, LengthSql AS Length, Organization, Name, Description, WidthSql, LengthSql, Ssc_Id, TestedSequentialMedia_Id FROM SscSupportedMedias"); migrationBuilder.DropTable("SscSupportedMedias"); } + #endregion #region TABLE: SupportedDensity + migrationBuilder.CreateTable( - name: "SupportedDensity", - columns: table => new + "SupportedDensity", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - PrimaryCode = table.Column(nullable: false), - SecondaryCode = table.Column(nullable: false), - Writable = table.Column(nullable: false), - Duplicate = table.Column(nullable: false), - DefaultDensity = table.Column(nullable: false), - BitsPerMm = table.Column(nullable: false), - Width = table.Column(nullable: false), - Tracks = table.Column(nullable: false), - Capacity = table.Column(nullable: false), + PrimaryCode = table.Column(), + SecondaryCode = table.Column(), + Writable = table.Column(), + Duplicate = table.Column(), + DefaultDensity = table.Column(), + BitsPerMm = table.Column(), + Width = table.Column(), + Tracks = table.Column(), + Capacity = table.Column(), Organization = table.Column(nullable: true), Name = table.Column(nullable: true), Description = table.Column(nullable: true), - BitsPerMmSql = table.Column(nullable: false), - WidthSql = table.Column(nullable: false), - TracksSql = table.Column(nullable: false), - CapacitySql = table.Column(nullable: false), + BitsPerMmSql = table.Column(), + WidthSql = table.Column(), + TracksSql = table.Column(), + CapacitySql = table.Column(), SscId = table.Column(nullable: true), TestedSequentialMediaId = table.Column(nullable: true) }, @@ -1487,16 +1486,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_SupportedDensity", x => x.Id); table.ForeignKey( - name: "FK_SupportedDensity_Ssc_SscId", - column: x => x.SscId, - principalTable: "Ssc", - principalColumn: "Id", + "FK_SupportedDensity_Ssc_SscId", + x => x.SscId, + "Ssc", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_SupportedDensity_TestedSequentialMedia_TestedSequentialMedia~", - column: x => x.TestedSequentialMediaId, - principalTable: "TestedSequentialMedia", - principalColumn: "Id", + "FK_SupportedDensity_TestedSequentialMedia_TestedSequentialMedia~", + x => x.TestedSequentialMediaId, + "TestedSequentialMedia", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1506,26 +1505,28 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO SupportedDensity (PrimaryCode, SecondaryCode, Writable, Duplicate, DefaultDensity, BitsPerMm, Width, Tracks, Capacity, Organization, Name, Description, BitsPerMmSql, WidthSql, TracksSql, CapacitySql, SscId, TestedSequentialMediaId) SELECT PrimaryCode, SecondaryCode, Writable, Duplicate, DefaultDensity, BitsPerMmSql AS BitsPerMm, WidthSql AS Width, TracksSql AS Tracks, CapacitySql AS Capacity, Organization, Name, Description, BitsPerMmSql, WidthSql, TracksSql, CapacitySql, Ssc_Id, TestedSequentialMedia_Id FROM SupportedDensities"); migrationBuilder.DropTable("SupportedDensities"); } -#endregion -#region TABLE: DensityCode + #endregion + + #region TABLE: DensityCode + migrationBuilder.CreateTable( - name: "DensityCode", - columns: table => new + "DensityCode", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Code = table.Column(nullable: false), + Code = table.Column(), SscSupportedMediaId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_DensityCode", x => x.Id); table.ForeignKey( - name: "FK_DensityCode_SscSupportedMedia_SscSupportedMediaId", - column: x => x.SscSupportedMediaId, - principalTable: "SscSupportedMedia", - principalColumn: "Id", + "FK_DensityCode_SscSupportedMedia_SscSupportedMediaId", + x => x.SscSupportedMediaId, + "SscSupportedMedia", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1535,23 +1536,24 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO DensityCode (Id, Code, SscSupportedMediaId) SELECT Id, Code, SscSupportedMedia_Id FROM DensityCodes"); migrationBuilder.DropTable("DensityCodes"); } + #endregion #region TABLE: Devices if (DevicesExists) - migrationBuilder.RenameTable(name: "Devices", newName: "Devices_old"); + migrationBuilder.RenameTable("Devices", newName: "Devices_old"); migrationBuilder.CreateTable( - name: "Devices", - columns: table => new + "Devices", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), USBId = table.Column(nullable: true), FireWireId = table.Column(nullable: true), PCMCIAId = table.Column(nullable: true), - CompactFlash = table.Column(nullable: false), + CompactFlash = table.Column(), ATAId = table.Column(nullable: true), ATAPIId = table.Column(nullable: true), SCSIId = table.Column(nullable: true), @@ -1560,50 +1562,50 @@ migrationBuilder.DropTable("MmcFeatures_old"); Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), Revision = table.Column(nullable: true), - Type = table.Column(nullable: false), - AddedWhen = table.Column(nullable: false), + Type = table.Column(), + AddedWhen = table.Column(), ModifiedWhen = table.Column(nullable: true), CdOffsetId = table.Column(nullable: true), - OptimalMultipleSectorsRead = table.Column(nullable: false) + OptimalMultipleSectorsRead = table.Column() }, constraints: table => { table.PrimaryKey("PK_Devices", x => x.Id); table.ForeignKey( - name: "FK_Devices_CdOffsets_CdOffsetId", - column: x => x.CdOffsetId, - principalTable: "CdOffsets", - principalColumn: "Id", + "FK_Devices_CdOffsets_CdOffsetId", + x => x.CdOffsetId, + "CdOffsets", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Devices_FireWire_FireWireId", - column: x => x.FireWireId, - principalTable: "FireWire", - principalColumn: "Id", + "FK_Devices_FireWire_FireWireId", + x => x.FireWireId, + "FireWire", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Devices_MmcSd_MultiMediaCardId", - column: x => x.MultiMediaCardId, - principalTable: "MmcSd", - principalColumn: "Id", + "FK_Devices_MmcSd_MultiMediaCardId", + x => x.MultiMediaCardId, + "MmcSd", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Devices_Pcmcia_PCMCIAId", - column: x => x.PCMCIAId, - principalTable: "Pcmcia", - principalColumn: "Id", + "FK_Devices_Pcmcia_PCMCIAId", + x => x.PCMCIAId, + "Pcmcia", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Devices_MmcSd_SecureDigitalId", - column: x => x.SecureDigitalId, - principalTable: "MmcSd", - principalColumn: "Id", + "FK_Devices_MmcSd_SecureDigitalId", + x => x.SecureDigitalId, + "MmcSd", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Devices_Usb_USBId", - column: x => x.USBId, - principalTable: "Usb", - principalColumn: "Id", + "FK_Devices_Usb_USBId", + x => x.USBId, + "Usb", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1613,18 +1615,19 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Devices (Id, USBId, FireWireId, PCMCIAId, CompactFlash, ATAId, ATAPIId, SCSIId, MultiMediaCardId, SecureDigitalId, Manufacturer, Model, Revision, Type, AddedWhen, ModifiedWhen, CdOffsetId, OptimalMultipleSectorsRead) SELECT Id, USB_Id, FireWire_Id, PCMCIA_Id, CompactFlash, ATA_Id, ATAPI_Id, SCSI_Id, MultiMediaCard_Id, SecureDigital_Id, Manufacturer, Model, Revision, Type, AddedWhen, ModifiedWhen, CdOffset_Id, OptimalMultipleSectorsRead FROM Devices_old"); migrationBuilder.DropTable("Devices_old"); } + #endregion #region TABLE: DeviceStats if (DeviceStatsExists) - migrationBuilder.RenameTable(name: "DeviceStats", newName: "DeviceStats_old"); + migrationBuilder.RenameTable("DeviceStats", newName: "DeviceStats_old"); migrationBuilder.CreateTable( - name: "DeviceStats", - columns: table => new + "DeviceStats", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), @@ -1636,10 +1639,10 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_DeviceStats", x => x.Id); table.ForeignKey( - name: "FK_DeviceStats_Devices_ReportId", - column: x => x.ReportId, - principalTable: "Devices", - principalColumn: "Id", + "FK_DeviceStats_Devices_ReportId", + x => x.ReportId, + "Devices", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1649,19 +1652,21 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO DeviceStats (Id, Manufacturer, Model, Revision, Bus, ReportId) SELECT Id, Manufacturer, Model, Revision, Bus, Report_Id FROM DeviceStats_old"); migrationBuilder.DropTable("DeviceStats_old"); } + #endregion #region TABLE: Reports + migrationBuilder.CreateTable( - name: "Reports", - columns: table => new + "Reports", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), USBId = table.Column(nullable: true), FireWireId = table.Column(nullable: true), PCMCIAId = table.Column(nullable: true), - CompactFlash = table.Column(nullable: false), + CompactFlash = table.Column(), ATAId = table.Column(nullable: true), ATAPIId = table.Column(nullable: true), SCSIId = table.Column(nullable: true), @@ -1670,41 +1675,41 @@ migrationBuilder.DropTable("MmcFeatures_old"); Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), Revision = table.Column(nullable: true), - Type = table.Column(nullable: false), - UploadedWhen = table.Column(nullable: false) + Type = table.Column(), + UploadedWhen = table.Column() }, constraints: table => { table.PrimaryKey("PK_Reports", x => x.Id); table.ForeignKey( - name: "FK_Reports_FireWire_FireWireId", - column: x => x.FireWireId, - principalTable: "FireWire", - principalColumn: "Id", + "FK_Reports_FireWire_FireWireId", + x => x.FireWireId, + "FireWire", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Reports_MmcSd_MultiMediaCardId", - column: x => x.MultiMediaCardId, - principalTable: "MmcSd", - principalColumn: "Id", + "FK_Reports_MmcSd_MultiMediaCardId", + x => x.MultiMediaCardId, + "MmcSd", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Reports_Pcmcia_PCMCIAId", - column: x => x.PCMCIAId, - principalTable: "Pcmcia", - principalColumn: "Id", + "FK_Reports_Pcmcia_PCMCIAId", + x => x.PCMCIAId, + "Pcmcia", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Reports_MmcSd_SecureDigitalId", - column: x => x.SecureDigitalId, - principalTable: "MmcSd", - principalColumn: "Id", + "FK_Reports_MmcSd_SecureDigitalId", + x => x.SecureDigitalId, + "MmcSd", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Reports_Usb_USBId", - column: x => x.USBId, - principalTable: "Usb", - principalColumn: "Id", + "FK_Reports_Usb_USBId", + x => x.USBId, + "Usb", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -1714,14 +1719,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Reports (Id, USBId, FireWireId, PCMCIAId, CompactFlash, ATAId, ATAPIId, SCSIId, MultiMediaCardId, SecureDigitalId, Manufacturer, Model, Revision, Type, UploadedWhen) SELECT Id, USB_Id, FireWire_Id, PCMCIA_Id, CompactFlash, ATA_Id, ATAPI_Id, SCSI_Id, MultiMediaCard_Id, SecureDigital_Id, Manufacturer, Model, Revision, Type, UploadedWhen FROM UploadedReports"); migrationBuilder.DropTable("UploadedReports"); } + #endregion #region TABLE: TestedMedia + migrationBuilder.CreateTable( - name: "TestedMedia", - columns: table => new + "TestedMedia", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), IdentifyData = table.Column(nullable: true), Blocks = table.Column(nullable: true), @@ -1760,7 +1767,7 @@ migrationBuilder.DropTable("MmcFeatures_old"); Density = table.Column(nullable: true), LongBlockSize = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), - MediaIsRecognized = table.Column(nullable: false), + MediaIsRecognized = table.Column(), MediumType = table.Column(nullable: true), MediumTypeName = table.Column(nullable: true), Model = table.Column(nullable: true), @@ -1893,29 +1900,29 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_TestedMedia", x => x.Id); table.ForeignKey( - name: "FK_TestedMedia_Chs_CHSId", - column: x => x.CHSId, - principalTable: "Chs", - principalColumn: "Id", + "FK_TestedMedia_Chs_CHSId", + x => x.CHSId, + "Chs", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_TestedMedia_Chs_CurrentCHSId", - column: x => x.CurrentCHSId, - principalTable: "Chs", - principalColumn: "Id", + "FK_TestedMedia_Chs_CurrentCHSId", + x => x.CurrentCHSId, + "Chs", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_TestedMedia_Mmc_MmcId", - column: x => x.MmcId, - principalTable: "Mmc", - principalColumn: "Id", + "FK_TestedMedia_Mmc_MmcId", + x => x.MmcId, + "Mmc", + "Id", onDelete: ReferentialAction.Restrict); }); if (TestedMediasExists) { - string preFormat = - @"INSERT INTO TestedMedia (Id, IdentifyData, Blocks, BlockSize, CanReadAACS, CanReadADIP, + var preFormat = + @"INSERT INTO TestedMedia (Id, IdentifyData, Blocks, BlockSize, CanReadAACS, CanReadADIP, CanReadATIP, CanReadBCA, CanReadC2Pointers, CanReadCMI, CanReadCorrectedSubchannel, CanReadCorrectedSubchannelWithC2, CanReadDCB, CanReadDDS, CanReadDMI, CanReadDiscInformation, CanReadFullTOC, CanReadHDCMI, CanReadLayerCapacity, CanReadFirstTrackPreGap, CanReadLeadIn, @@ -1994,14 +2001,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); migrationBuilder.DropTable("TestedMedias"); } + #endregion #region TABLE: Ata + migrationBuilder.CreateTable( - name: "Ata", - columns: table => new + "Ata", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Identify = table.Column(nullable: true), ReadCapabilitiesId = table.Column(nullable: true) @@ -2010,10 +2019,10 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_Ata", x => x.Id); table.ForeignKey( - name: "FK_Ata_TestedMedia_ReadCapabilitiesId", - column: x => x.ReadCapabilitiesId, - principalTable: "TestedMedia", - principalColumn: "Id", + "FK_Ata_TestedMedia_ReadCapabilitiesId", + x => x.ReadCapabilitiesId, + "TestedMedia", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -2023,19 +2032,21 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Ata (Id, Identify, ReadCapabilitiesId) SELECT Id, Identify, ReadCapabilities_Id FROM Atas"); migrationBuilder.DropTable("Atas"); } + #endregion #region TABLE: Scsi + migrationBuilder.CreateTable( - name: "Scsi", - columns: table => new + "Scsi", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), InquiryData = table.Column(nullable: true), - SupportsModeSense6 = table.Column(nullable: false), - SupportsModeSense10 = table.Column(nullable: false), - SupportsModeSubpages = table.Column(nullable: false), + SupportsModeSense6 = table.Column(), + SupportsModeSense10 = table.Column(), + SupportsModeSubpages = table.Column(), ModeSenseId = table.Column(nullable: true), MultiMediaDeviceId = table.Column(nullable: true), ReadCapabilitiesId = table.Column(nullable: true), @@ -2051,28 +2062,28 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_Scsi", x => x.Id); table.ForeignKey( - name: "FK_Scsi_ScsiMode_ModeSenseId", - column: x => x.ModeSenseId, - principalTable: "ScsiMode", - principalColumn: "Id", + "FK_Scsi_ScsiMode_ModeSenseId", + x => x.ModeSenseId, + "ScsiMode", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Scsi_Mmc_MultiMediaDeviceId", - column: x => x.MultiMediaDeviceId, - principalTable: "Mmc", - principalColumn: "Id", + "FK_Scsi_Mmc_MultiMediaDeviceId", + x => x.MultiMediaDeviceId, + "Mmc", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Scsi_TestedMedia_ReadCapabilitiesId", - column: x => x.ReadCapabilitiesId, - principalTable: "TestedMedia", - principalColumn: "Id", + "FK_Scsi_TestedMedia_ReadCapabilitiesId", + x => x.ReadCapabilitiesId, + "TestedMedia", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Scsi_Ssc_SequentialDeviceId", - column: x => x.SequentialDeviceId, - principalTable: "Ssc", - principalColumn: "Id", + "FK_Scsi_Ssc_SequentialDeviceId", + x => x.SequentialDeviceId, + "Ssc", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -2082,16 +2093,18 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO Scsi (Id, InquiryData, SupportsModeSense6, SupportsModeSense10, SupportsModeSubpages, ModeSenseId, MultiMediaDeviceId, ReadCapabilitiesId, SequentialDeviceId, ModeSense6Data, ModeSense10Data, ModeSense6CurrentData, ModeSense10CurrentData, ModeSense6ChangeableData, ModeSense10ChangeableData) SELECT Id, InquiryData, SupportsModeSense6, SupportsModeSense10, SupportsModeSubpages, ModeSense_Id, MultiMediaDevice_Id, ReadCapabilities_Id, SequentialDevice_Id, ModeSense6Data, ModeSense10Data, ModeSense6CurrentData, ModeSense10CurrentData, ModeSense6ChangeableData, ModeSense10ChangeableData FROM Scsis WHERE EXISTS(SELECT 1 from Mmc WHERE Mmc.Id = Scsis.MultiMediaDevice_Id) OR MultiMediaDevice_Id IS NULL"); migrationBuilder.DropTable("Scsis"); } + #endregion #region TABLE: ScsiPage + migrationBuilder.CreateTable( - name: "ScsiPage", - columns: table => new + "ScsiPage", + table => new { - Id = table.Column(nullable: false) + Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - page = table.Column(nullable: false), + page = table.Column(), subpage = table.Column(nullable: true), value = table.Column(nullable: true), ScsiId = table.Column(nullable: true), @@ -2101,16 +2114,16 @@ migrationBuilder.DropTable("MmcFeatures_old"); { table.PrimaryKey("PK_ScsiPage", x => x.Id); table.ForeignKey( - name: "FK_ScsiPage_Scsi_ScsiId", - column: x => x.ScsiId, - principalTable: "Scsi", - principalColumn: "Id", + "FK_ScsiPage_Scsi_ScsiId", + x => x.ScsiId, + "Scsi", + "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_ScsiPage_ScsiMode_ScsiModeId", - column: x => x.ScsiModeId, - principalTable: "ScsiMode", - principalColumn: "Id", + "FK_ScsiPage_ScsiMode_ScsiModeId", + x => x.ScsiModeId, + "ScsiMode", + "Id", onDelete: ReferentialAction.Restrict); }); @@ -2120,271 +2133,272 @@ migrationBuilder.DropTable("MmcFeatures_old"); "INSERT INTO ScsiPage (Id, page, subpage, value, ScsiId, ScsiModeId) SELECT Id, page, subpage, value, Scsi_Id, ScsiMode_Id FROM ScsiPages"); migrationBuilder.DropTable("ScsiPages"); } + #endregion migrationBuilder.CreateIndex( - name: "IX_Ata_ReadCapabilitiesId", - table: "Ata", - column: "ReadCapabilitiesId"); + "IX_Ata_ReadCapabilitiesId", + "Ata", + "ReadCapabilitiesId"); migrationBuilder.CreateIndex( - name: "IX_BlockDescriptor_ScsiModeId", - table: "BlockDescriptor", - column: "ScsiModeId"); + "IX_BlockDescriptor_ScsiModeId", + "BlockDescriptor", + "ScsiModeId"); migrationBuilder.CreateIndex( - name: "IX_CdOffsets_ModifiedWhen", - table: "CdOffsets", - column: "ModifiedWhen"); + "IX_CdOffsets_ModifiedWhen", + "CdOffsets", + "ModifiedWhen"); migrationBuilder.CreateIndex( - name: "IX_DensityCode_SscSupportedMediaId", - table: "DensityCode", - column: "SscSupportedMediaId"); + "IX_DensityCode_SscSupportedMediaId", + "DensityCode", + "SscSupportedMediaId"); migrationBuilder.CreateIndex( - name: "IX_Devices_ATAId", - table: "Devices", - column: "ATAId"); + "IX_Devices_ATAId", + "Devices", + "ATAId"); migrationBuilder.CreateIndex( - name: "IX_Devices_ATAPIId", - table: "Devices", - column: "ATAPIId"); + "IX_Devices_ATAPIId", + "Devices", + "ATAPIId"); migrationBuilder.CreateIndex( - name: "IX_Devices_CdOffsetId", - table: "Devices", - column: "CdOffsetId"); + "IX_Devices_CdOffsetId", + "Devices", + "CdOffsetId"); migrationBuilder.CreateIndex( - name: "IX_Devices_FireWireId", - table: "Devices", - column: "FireWireId"); + "IX_Devices_FireWireId", + "Devices", + "FireWireId"); migrationBuilder.CreateIndex( - name: "IX_Devices_ModifiedWhen", - table: "Devices", - column: "ModifiedWhen"); + "IX_Devices_ModifiedWhen", + "Devices", + "ModifiedWhen"); migrationBuilder.CreateIndex( - name: "IX_Devices_MultiMediaCardId", - table: "Devices", - column: "MultiMediaCardId"); + "IX_Devices_MultiMediaCardId", + "Devices", + "MultiMediaCardId"); migrationBuilder.CreateIndex( - name: "IX_Devices_PCMCIAId", - table: "Devices", - column: "PCMCIAId"); + "IX_Devices_PCMCIAId", + "Devices", + "PCMCIAId"); migrationBuilder.CreateIndex( - name: "IX_Devices_SCSIId", - table: "Devices", - column: "SCSIId"); + "IX_Devices_SCSIId", + "Devices", + "SCSIId"); migrationBuilder.CreateIndex( - name: "IX_Devices_SecureDigitalId", - table: "Devices", - column: "SecureDigitalId"); + "IX_Devices_SecureDigitalId", + "Devices", + "SecureDigitalId"); migrationBuilder.CreateIndex( - name: "IX_Devices_USBId", - table: "Devices", - column: "USBId"); + "IX_Devices_USBId", + "Devices", + "USBId"); migrationBuilder.CreateIndex( - name: "IX_DeviceStats_ReportId", - table: "DeviceStats", - column: "ReportId"); + "IX_DeviceStats_ReportId", + "DeviceStats", + "ReportId"); migrationBuilder.CreateIndex( - name: "IX_Mmc_FeaturesId", - table: "Mmc", - column: "FeaturesId"); + "IX_Mmc_FeaturesId", + "Mmc", + "FeaturesId"); migrationBuilder.CreateIndex( - name: "IX_Reports_ATAId", - table: "Reports", - column: "ATAId"); + "IX_Reports_ATAId", + "Reports", + "ATAId"); migrationBuilder.CreateIndex( - name: "IX_Reports_ATAPIId", - table: "Reports", - column: "ATAPIId"); + "IX_Reports_ATAPIId", + "Reports", + "ATAPIId"); migrationBuilder.CreateIndex( - name: "IX_Reports_FireWireId", - table: "Reports", - column: "FireWireId"); + "IX_Reports_FireWireId", + "Reports", + "FireWireId"); migrationBuilder.CreateIndex( - name: "IX_Reports_MultiMediaCardId", - table: "Reports", - column: "MultiMediaCardId"); + "IX_Reports_MultiMediaCardId", + "Reports", + "MultiMediaCardId"); migrationBuilder.CreateIndex( - name: "IX_Reports_PCMCIAId", - table: "Reports", - column: "PCMCIAId"); + "IX_Reports_PCMCIAId", + "Reports", + "PCMCIAId"); migrationBuilder.CreateIndex( - name: "IX_Reports_SCSIId", - table: "Reports", - column: "SCSIId"); + "IX_Reports_SCSIId", + "Reports", + "SCSIId"); migrationBuilder.CreateIndex( - name: "IX_Reports_SecureDigitalId", - table: "Reports", - column: "SecureDigitalId"); + "IX_Reports_SecureDigitalId", + "Reports", + "SecureDigitalId"); migrationBuilder.CreateIndex( - name: "IX_Reports_USBId", - table: "Reports", - column: "USBId"); + "IX_Reports_USBId", + "Reports", + "USBId"); migrationBuilder.CreateIndex( - name: "IX_Scsi_ModeSenseId", - table: "Scsi", - column: "ModeSenseId"); + "IX_Scsi_ModeSenseId", + "Scsi", + "ModeSenseId"); migrationBuilder.CreateIndex( - name: "IX_Scsi_MultiMediaDeviceId", - table: "Scsi", - column: "MultiMediaDeviceId"); + "IX_Scsi_MultiMediaDeviceId", + "Scsi", + "MultiMediaDeviceId"); migrationBuilder.CreateIndex( - name: "IX_Scsi_ReadCapabilitiesId", - table: "Scsi", - column: "ReadCapabilitiesId"); + "IX_Scsi_ReadCapabilitiesId", + "Scsi", + "ReadCapabilitiesId"); migrationBuilder.CreateIndex( - name: "IX_Scsi_SequentialDeviceId", - table: "Scsi", - column: "SequentialDeviceId"); + "IX_Scsi_SequentialDeviceId", + "Scsi", + "SequentialDeviceId"); migrationBuilder.CreateIndex( - name: "IX_ScsiPage_ScsiId", - table: "ScsiPage", - column: "ScsiId"); + "IX_ScsiPage_ScsiId", + "ScsiPage", + "ScsiId"); migrationBuilder.CreateIndex( - name: "IX_ScsiPage_ScsiModeId", - table: "ScsiPage", - column: "ScsiModeId"); + "IX_ScsiPage_ScsiModeId", + "ScsiPage", + "ScsiModeId"); migrationBuilder.CreateIndex( - name: "IX_SscSupportedMedia_SscId", - table: "SscSupportedMedia", - column: "SscId"); + "IX_SscSupportedMedia_SscId", + "SscSupportedMedia", + "SscId"); migrationBuilder.CreateIndex( - name: "IX_SscSupportedMedia_TestedSequentialMediaId", - table: "SscSupportedMedia", - column: "TestedSequentialMediaId"); + "IX_SscSupportedMedia_TestedSequentialMediaId", + "SscSupportedMedia", + "TestedSequentialMediaId"); migrationBuilder.CreateIndex( - name: "IX_SupportedDensity_SscId", - table: "SupportedDensity", - column: "SscId"); + "IX_SupportedDensity_SscId", + "SupportedDensity", + "SscId"); migrationBuilder.CreateIndex( - name: "IX_SupportedDensity_TestedSequentialMediaId", - table: "SupportedDensity", - column: "TestedSequentialMediaId"); + "IX_SupportedDensity_TestedSequentialMediaId", + "SupportedDensity", + "TestedSequentialMediaId"); migrationBuilder.CreateIndex( - name: "IX_TestedMedia_AtaId", - table: "TestedMedia", - column: "AtaId"); + "IX_TestedMedia_AtaId", + "TestedMedia", + "AtaId"); migrationBuilder.CreateIndex( - name: "IX_TestedMedia_CHSId", - table: "TestedMedia", - column: "CHSId"); + "IX_TestedMedia_CHSId", + "TestedMedia", + "CHSId"); migrationBuilder.CreateIndex( - name: "IX_TestedMedia_CurrentCHSId", - table: "TestedMedia", - column: "CurrentCHSId"); + "IX_TestedMedia_CurrentCHSId", + "TestedMedia", + "CurrentCHSId"); migrationBuilder.CreateIndex( - name: "IX_TestedMedia_MmcId", - table: "TestedMedia", - column: "MmcId"); + "IX_TestedMedia_MmcId", + "TestedMedia", + "MmcId"); migrationBuilder.CreateIndex( - name: "IX_TestedMedia_ScsiId", - table: "TestedMedia", - column: "ScsiId"); + "IX_TestedMedia_ScsiId", + "TestedMedia", + "ScsiId"); migrationBuilder.CreateIndex( - name: "IX_TestedSequentialMedia_SscId", - table: "TestedSequentialMedia", - column: "SscId"); + "IX_TestedSequentialMedia_SscId", + "TestedSequentialMedia", + "SscId"); migrationBuilder.CreateIndex( - name: "IX_UsbProducts_ModifiedWhen", - table: "UsbProducts", - column: "ModifiedWhen"); + "IX_UsbProducts_ModifiedWhen", + "UsbProducts", + "ModifiedWhen"); migrationBuilder.CreateIndex( - name: "IX_UsbProducts_ProductId", - table: "UsbProducts", - column: "ProductId"); + "IX_UsbProducts_ProductId", + "UsbProducts", + "ProductId"); migrationBuilder.CreateIndex( - name: "IX_UsbProducts_VendorId", - table: "UsbProducts", - column: "VendorId"); + "IX_UsbProducts_VendorId", + "UsbProducts", + "VendorId"); migrationBuilder.CreateIndex( - name: "IX_UsbVendors_ModifiedWhen", - table: "UsbVendors", - column: "ModifiedWhen"); + "IX_UsbVendors_ModifiedWhen", + "UsbVendors", + "ModifiedWhen"); migrationBuilder.CreateIndex( - name: "IX_UsbVendors_VendorId", - table: "UsbVendors", - column: "VendorId", + "IX_UsbVendors_VendorId", + "UsbVendors", + "VendorId", unique: true); migrationBuilder.AddForeignKey( - name: "FK_Devices_Ata_ATAId", - table: "Devices", - column: "ATAId", - principalTable: "Ata", + "FK_Devices_Ata_ATAId", + "Devices", + "ATAId", + "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( - name: "FK_Devices_Ata_ATAPIId", - table: "Devices", - column: "ATAPIId", - principalTable: "Ata", + "FK_Devices_Ata_ATAPIId", + "Devices", + "ATAPIId", + "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( - name: "FK_Devices_Scsi_SCSIId", - table: "Devices", - column: "SCSIId", - principalTable: "Scsi", + "FK_Devices_Scsi_SCSIId", + "Devices", + "SCSIId", + "Scsi", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( - name: "FK_Reports_Ata_ATAId", - table: "Reports", - column: "ATAId", - principalTable: "Ata", + "FK_Reports_Ata_ATAId", + "Reports", + "ATAId", + "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( - name: "FK_Reports_Ata_ATAPIId", - table: "Reports", - column: "ATAPIId", - principalTable: "Ata", + "FK_Reports_Ata_ATAPIId", + "Reports", + "ATAPIId", + "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); @@ -2392,138 +2406,138 @@ migrationBuilder.DropTable("MmcFeatures_old"); "DELETE FROM Reports WHERE NOT EXISTS(SELECT 1 from Scsi WHERE Scsi.Id = SCSIId) AND SCSIId IS NOT NULL"); migrationBuilder.AddForeignKey( - name: "FK_Reports_Scsi_SCSIId", - table: "Reports", - column: "SCSIId", - principalTable: "Scsi", + "FK_Reports_Scsi_SCSIId", + "Reports", + "SCSIId", + "Scsi", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( - name: "FK_TestedMedia_Ata_AtaId", - table: "TestedMedia", - column: "AtaId", - principalTable: "Ata", + "FK_TestedMedia_Ata_AtaId", + "TestedMedia", + "AtaId", + "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( - name: "FK_TestedMedia_Scsi_ScsiId", - table: "TestedMedia", - column: "ScsiId", - principalTable: "Scsi", + "FK_TestedMedia_Scsi_ScsiId", + "TestedMedia", + "ScsiId", + "Scsi", principalColumn: "Id", onDelete: ReferentialAction.Restrict); - if(EFExists) + if (EFExists) migrationBuilder.DropTable("__MigrationHistory"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( - name: "FK_Ata_TestedMedia_ReadCapabilitiesId", - table: "Ata"); + "FK_Ata_TestedMedia_ReadCapabilitiesId", + "Ata"); migrationBuilder.DropForeignKey( - name: "FK_Scsi_TestedMedia_ReadCapabilitiesId", - table: "Scsi"); + "FK_Scsi_TestedMedia_ReadCapabilitiesId", + "Scsi"); migrationBuilder.DropTable( - name: "BlockDescriptor"); + "BlockDescriptor"); migrationBuilder.DropTable( - name: "Commands"); + "Commands"); migrationBuilder.DropTable( - name: "DensityCode"); + "DensityCode"); migrationBuilder.DropTable( - name: "DeviceStats"); + "DeviceStats"); migrationBuilder.DropTable( - name: "Filesystems"); + "Filesystems"); migrationBuilder.DropTable( - name: "Filters"); + "Filters"); migrationBuilder.DropTable( - name: "MediaFormats"); + "MediaFormats"); migrationBuilder.DropTable( - name: "Medias"); + "Medias"); migrationBuilder.DropTable( - name: "OperatingSystems"); + "OperatingSystems"); migrationBuilder.DropTable( - name: "Partitions"); + "Partitions"); migrationBuilder.DropTable( - name: "Reports"); + "Reports"); migrationBuilder.DropTable( - name: "ScsiPage"); + "ScsiPage"); migrationBuilder.DropTable( - name: "SupportedDensity"); + "SupportedDensity"); migrationBuilder.DropTable( - name: "UsbProducts"); + "UsbProducts"); migrationBuilder.DropTable( - name: "Versions"); + "Versions"); migrationBuilder.DropTable( - name: "SscSupportedMedia"); + "SscSupportedMedia"); migrationBuilder.DropTable( - name: "Devices"); + "Devices"); migrationBuilder.DropTable( - name: "UsbVendors"); + "UsbVendors"); migrationBuilder.DropTable( - name: "TestedSequentialMedia"); + "TestedSequentialMedia"); migrationBuilder.DropTable( - name: "CdOffsets"); + "CdOffsets"); migrationBuilder.DropTable( - name: "FireWire"); + "FireWire"); migrationBuilder.DropTable( - name: "MmcSd"); + "MmcSd"); migrationBuilder.DropTable( - name: "Pcmcia"); + "Pcmcia"); migrationBuilder.DropTable( - name: "Usb"); + "Usb"); migrationBuilder.DropTable( - name: "TestedMedia"); + "TestedMedia"); migrationBuilder.DropTable( - name: "Ata"); + "Ata"); migrationBuilder.DropTable( - name: "Chs"); + "Chs"); migrationBuilder.DropTable( - name: "Scsi"); + "Scsi"); migrationBuilder.DropTable( - name: "ScsiMode"); + "ScsiMode"); migrationBuilder.DropTable( - name: "Mmc"); + "Mmc"); migrationBuilder.DropTable( - name: "Ssc"); + "Ssc"); migrationBuilder.DropTable( - name: "MmcFeatures"); + "MmcFeatures"); } } -} +} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs b/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs index 9b0fca7f..d3017c4d 100644 --- a/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs +++ b/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs @@ -1,14 +1,14 @@ // + using System; using DiscImageChef.Server.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace DiscImageChef.Server.Migrations { [DbContext(typeof(DicServerContext))] - partial class DicServerContextModelSnapshot : ModelSnapshot + internal class DicServerContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { @@ -18,2079 +18,2079 @@ namespace DiscImageChef.Server.Migrations .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Identify") - .HasColumnType("longblob"); + b.Property("Identify") + .HasColumnType("longblob"); - b.Property("ReadCapabilitiesId") - .HasColumnType("int"); + b.Property("ReadCapabilitiesId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ReadCapabilitiesId"); + b.HasIndex("ReadCapabilitiesId"); - b.ToTable("Ata"); - }); + b.ToTable("Ata"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("BlockLength") - .HasColumnType("int unsigned"); + b.Property("BlockLength") + .HasColumnType("int unsigned"); - b.Property("BlockLengthSql") - .HasColumnType("int"); + b.Property("BlockLengthSql") + .HasColumnType("int"); - b.Property("Blocks") - .HasColumnType("bigint unsigned"); + b.Property("Blocks") + .HasColumnType("bigint unsigned"); - b.Property("BlocksSql") - .HasColumnType("bigint"); + b.Property("BlocksSql") + .HasColumnType("bigint"); - b.Property("Density") - .HasColumnType("tinyint unsigned"); + b.Property("Density") + .HasColumnType("tinyint unsigned"); - b.Property("ScsiModeId") - .HasColumnType("int"); + b.Property("ScsiModeId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ScsiModeId"); + b.HasIndex("ScsiModeId"); - b.ToTable("BlockDescriptor"); - }); + b.ToTable("BlockDescriptor"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Chs", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Cylinders") - .HasColumnType("smallint unsigned"); + b.Property("Cylinders") + .HasColumnType("smallint unsigned"); - b.Property("CylindersSql") - .HasColumnType("smallint"); + b.Property("CylindersSql") + .HasColumnType("smallint"); - b.Property("Heads") - .HasColumnType("smallint unsigned"); + b.Property("Heads") + .HasColumnType("smallint unsigned"); - b.Property("HeadsSql") - .HasColumnType("smallint"); + b.Property("HeadsSql") + .HasColumnType("smallint"); - b.Property("Sectors") - .HasColumnType("smallint unsigned"); + b.Property("Sectors") + .HasColumnType("smallint unsigned"); - b.Property("SectorsSql") - .HasColumnType("smallint"); + b.Property("SectorsSql") + .HasColumnType("smallint"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Chs"); - }); + b.ToTable("Chs"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Code") - .HasColumnType("int"); + b.Property("Code") + .HasColumnType("int"); - b.Property("SscSupportedMediaId") - .HasColumnType("int"); + b.Property("SscSupportedMediaId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("SscSupportedMediaId"); + b.HasIndex("SscSupportedMediaId"); - b.ToTable("DensityCode"); - }); + b.ToTable("DensityCode"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.FireWire", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("Product") - .HasColumnType("longtext"); + b.Property("Product") + .HasColumnType("longtext"); - b.Property("ProductID") - .HasColumnType("int unsigned"); + b.Property("ProductID") + .HasColumnType("int unsigned"); - b.Property("ProductIDSql") - .HasColumnType("int"); + b.Property("ProductIDSql") + .HasColumnType("int"); - b.Property("RemovableMedia") - .HasColumnType("bit"); + b.Property("RemovableMedia") + .HasColumnType("bit"); - b.Property("VendorID") - .HasColumnType("int unsigned"); + b.Property("VendorID") + .HasColumnType("int unsigned"); - b.Property("VendorIDSql") - .HasColumnType("int"); + b.Property("VendorIDSql") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("FireWire"); - }); + b.ToTable("FireWire"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("FeaturesId") - .HasColumnType("int"); + b.Property("FeaturesId") + .HasColumnType("int"); - b.Property("ModeSense2AData") - .HasColumnType("longblob"); + b.Property("ModeSense2AData") + .HasColumnType("longblob"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("FeaturesId"); + b.HasIndex("FeaturesId"); - b.ToTable("Mmc"); - }); + b.ToTable("Mmc"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcFeatures", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("AACSVersion") - .HasColumnType("tinyint unsigned"); + b.Property("AACSVersion") + .HasColumnType("tinyint unsigned"); - b.Property("AGIDs") - .HasColumnType("tinyint unsigned"); + b.Property("AGIDs") + .HasColumnType("tinyint unsigned"); - b.Property("BinaryData") - .HasColumnType("longblob"); + b.Property("BinaryData") + .HasColumnType("longblob"); - b.Property("BindingNonceBlocks") - .HasColumnType("tinyint unsigned"); + b.Property("BindingNonceBlocks") + .HasColumnType("tinyint unsigned"); - b.Property("BlocksPerReadableUnit") - .HasColumnType("smallint unsigned"); + b.Property("BlocksPerReadableUnit") + .HasColumnType("smallint unsigned"); - b.Property("BlocksPerReadableUnitSql") - .HasColumnType("smallint"); + b.Property("BlocksPerReadableUnitSql") + .HasColumnType("smallint"); - b.Property("BufferUnderrunFreeInDVD") - .HasColumnType("bit"); + b.Property("BufferUnderrunFreeInDVD") + .HasColumnType("bit"); - b.Property("BufferUnderrunFreeInSAO") - .HasColumnType("bit"); + b.Property("BufferUnderrunFreeInSAO") + .HasColumnType("bit"); - b.Property("BufferUnderrunFreeInTAO") - .HasColumnType("bit"); + b.Property("BufferUnderrunFreeInTAO") + .HasColumnType("bit"); - b.Property("CPRMVersion") - .HasColumnType("tinyint unsigned"); + b.Property("CPRMVersion") + .HasColumnType("tinyint unsigned"); - b.Property("CSSVersion") - .HasColumnType("tinyint unsigned"); + b.Property("CSSVersion") + .HasColumnType("tinyint unsigned"); - b.Property("CanAudioScan") - .HasColumnType("bit"); + b.Property("CanAudioScan") + .HasColumnType("bit"); - b.Property("CanEject") - .HasColumnType("bit"); + b.Property("CanEject") + .HasColumnType("bit"); - b.Property("CanEraseSector") - .HasColumnType("bit"); + b.Property("CanEraseSector") + .HasColumnType("bit"); - b.Property("CanExpandBDRESpareArea") - .HasColumnType("bit"); + b.Property("CanExpandBDRESpareArea") + .HasColumnType("bit"); - b.Property("CanFormat") - .HasColumnType("bit"); + b.Property("CanFormat") + .HasColumnType("bit"); - b.Property("CanFormatBDREWithoutSpare") - .HasColumnType("bit"); + b.Property("CanFormatBDREWithoutSpare") + .HasColumnType("bit"); - b.Property("CanFormatCert") - .HasColumnType("bit"); + b.Property("CanFormatCert") + .HasColumnType("bit"); - b.Property("CanFormatFRF") - .HasColumnType("bit"); + b.Property("CanFormatFRF") + .HasColumnType("bit"); - b.Property("CanFormatQCert") - .HasColumnType("bit"); + b.Property("CanFormatQCert") + .HasColumnType("bit"); - b.Property("CanFormatRRM") - .HasColumnType("bit"); + b.Property("CanFormatRRM") + .HasColumnType("bit"); - b.Property("CanGenerateBindingNonce") - .HasColumnType("bit"); + b.Property("CanGenerateBindingNonce") + .HasColumnType("bit"); - b.Property("CanLoad") - .HasColumnType("bit"); + b.Property("CanLoad") + .HasColumnType("bit"); - b.Property("CanMuteSeparateChannels") - .HasColumnType("bit"); + b.Property("CanMuteSeparateChannels") + .HasColumnType("bit"); - b.Property("CanOverwriteSAOTrack") - .HasColumnType("bit"); + b.Property("CanOverwriteSAOTrack") + .HasColumnType("bit"); - b.Property("CanOverwriteTAOTrack") - .HasColumnType("bit"); + b.Property("CanOverwriteTAOTrack") + .HasColumnType("bit"); - b.Property("CanPlayCDAudio") - .HasColumnType("bit"); + b.Property("CanPlayCDAudio") + .HasColumnType("bit"); - b.Property("CanPseudoOverwriteBDR") - .HasColumnType("bit"); + b.Property("CanPseudoOverwriteBDR") + .HasColumnType("bit"); - b.Property("CanReadAllDualR") - .HasColumnType("bit"); + b.Property("CanReadAllDualR") + .HasColumnType("bit"); - b.Property("CanReadAllDualRW") - .HasColumnType("bit"); + b.Property("CanReadAllDualRW") + .HasColumnType("bit"); - b.Property("CanReadBD") - .HasColumnType("bit"); + b.Property("CanReadBD") + .HasColumnType("bit"); - b.Property("CanReadBDR") - .HasColumnType("bit"); + b.Property("CanReadBDR") + .HasColumnType("bit"); - b.Property("CanReadBDRE1") - .HasColumnType("bit"); + b.Property("CanReadBDRE1") + .HasColumnType("bit"); - b.Property("CanReadBDRE2") - .HasColumnType("bit"); + b.Property("CanReadBDRE2") + .HasColumnType("bit"); - b.Property("CanReadBDROM") - .HasColumnType("bit"); + b.Property("CanReadBDROM") + .HasColumnType("bit"); - b.Property("CanReadBluBCA") - .HasColumnType("bit"); + b.Property("CanReadBluBCA") + .HasColumnType("bit"); - b.Property("CanReadCD") - .HasColumnType("bit"); + b.Property("CanReadCD") + .HasColumnType("bit"); - b.Property("CanReadCDMRW") - .HasColumnType("bit"); + b.Property("CanReadCDMRW") + .HasColumnType("bit"); - b.Property("CanReadCPRM_MKB") - .HasColumnType("bit"); + b.Property("CanReadCPRM_MKB") + .HasColumnType("bit"); - b.Property("CanReadDDCD") - .HasColumnType("bit"); + b.Property("CanReadDDCD") + .HasColumnType("bit"); - b.Property("CanReadDVD") - .HasColumnType("bit"); + b.Property("CanReadDVD") + .HasColumnType("bit"); - b.Property("CanReadDVDPlusMRW") - .HasColumnType("bit"); + b.Property("CanReadDVDPlusMRW") + .HasColumnType("bit"); - b.Property("CanReadDVDPlusR") - .HasColumnType("bit"); + b.Property("CanReadDVDPlusR") + .HasColumnType("bit"); - b.Property("CanReadDVDPlusRDL") - .HasColumnType("bit"); + b.Property("CanReadDVDPlusRDL") + .HasColumnType("bit"); - b.Property("CanReadDVDPlusRW") - .HasColumnType("bit"); + b.Property("CanReadDVDPlusRW") + .HasColumnType("bit"); - b.Property("CanReadDVDPlusRWDL") - .HasColumnType("bit"); + b.Property("CanReadDVDPlusRWDL") + .HasColumnType("bit"); - b.Property("CanReadDriveAACSCertificate") - .HasColumnType("bit"); + b.Property("CanReadDriveAACSCertificate") + .HasColumnType("bit"); - b.Property("CanReadHDDVD") - .HasColumnType("bit"); + b.Property("CanReadHDDVD") + .HasColumnType("bit"); - b.Property("CanReadHDDVDR") - .HasColumnType("bit"); + b.Property("CanReadHDDVDR") + .HasColumnType("bit"); - b.Property("CanReadHDDVDRAM") - .HasColumnType("bit"); + b.Property("CanReadHDDVDRAM") + .HasColumnType("bit"); - b.Property("CanReadLeadInCDText") - .HasColumnType("bit"); + b.Property("CanReadLeadInCDText") + .HasColumnType("bit"); - b.Property("CanReadOldBDR") - .HasColumnType("bit"); + b.Property("CanReadOldBDR") + .HasColumnType("bit"); - b.Property("CanReadOldBDRE") - .HasColumnType("bit"); + b.Property("CanReadOldBDRE") + .HasColumnType("bit"); - b.Property("CanReadOldBDROM") - .HasColumnType("bit"); + b.Property("CanReadOldBDROM") + .HasColumnType("bit"); - b.Property("CanReadSpareAreaInformation") - .HasColumnType("bit"); + b.Property("CanReadSpareAreaInformation") + .HasColumnType("bit"); - b.Property("CanReportDriveSerial") - .HasColumnType("bit"); + b.Property("CanReportDriveSerial") + .HasColumnType("bit"); - b.Property("CanReportMediaSerial") - .HasColumnType("bit"); + b.Property("CanReportMediaSerial") + .HasColumnType("bit"); - b.Property("CanTestWriteDDCDR") - .HasColumnType("bit"); + b.Property("CanTestWriteDDCDR") + .HasColumnType("bit"); - b.Property("CanTestWriteDVD") - .HasColumnType("bit"); + b.Property("CanTestWriteDVD") + .HasColumnType("bit"); - b.Property("CanTestWriteInSAO") - .HasColumnType("bit"); + b.Property("CanTestWriteInSAO") + .HasColumnType("bit"); - b.Property("CanTestWriteInTAO") - .HasColumnType("bit"); + b.Property("CanTestWriteInTAO") + .HasColumnType("bit"); - b.Property("CanUpgradeFirmware") - .HasColumnType("bit"); + b.Property("CanUpgradeFirmware") + .HasColumnType("bit"); - b.Property("CanWriteBD") - .HasColumnType("bit"); + b.Property("CanWriteBD") + .HasColumnType("bit"); - b.Property("CanWriteBDR") - .HasColumnType("bit"); + b.Property("CanWriteBDR") + .HasColumnType("bit"); - b.Property("CanWriteBDRE1") - .HasColumnType("bit"); + b.Property("CanWriteBDRE1") + .HasColumnType("bit"); - b.Property("CanWriteBDRE2") - .HasColumnType("bit"); + b.Property("CanWriteBDRE2") + .HasColumnType("bit"); - b.Property("CanWriteBusEncryptedBlocks") - .HasColumnType("bit"); + b.Property("CanWriteBusEncryptedBlocks") + .HasColumnType("bit"); - b.Property("CanWriteCDMRW") - .HasColumnType("bit"); + b.Property("CanWriteCDMRW") + .HasColumnType("bit"); - b.Property("CanWriteCDRW") - .HasColumnType("bit"); + b.Property("CanWriteCDRW") + .HasColumnType("bit"); - b.Property("CanWriteCDRWCAV") - .HasColumnType("bit"); + b.Property("CanWriteCDRWCAV") + .HasColumnType("bit"); - b.Property("CanWriteCDSAO") - .HasColumnType("bit"); + b.Property("CanWriteCDSAO") + .HasColumnType("bit"); - b.Property("CanWriteCDTAO") - .HasColumnType("bit"); + b.Property("CanWriteCDTAO") + .HasColumnType("bit"); - b.Property("CanWriteCSSManagedDVD") - .HasColumnType("bit"); + b.Property("CanWriteCSSManagedDVD") + .HasColumnType("bit"); - b.Property("CanWriteDDCDR") - .HasColumnType("bit"); + b.Property("CanWriteDDCDR") + .HasColumnType("bit"); - b.Property("CanWriteDDCDRW") - .HasColumnType("bit"); + b.Property("CanWriteDDCDRW") + .HasColumnType("bit"); - b.Property("CanWriteDVDPlusMRW") - .HasColumnType("bit"); + b.Property("CanWriteDVDPlusMRW") + .HasColumnType("bit"); - b.Property("CanWriteDVDPlusR") - .HasColumnType("bit"); + b.Property("CanWriteDVDPlusR") + .HasColumnType("bit"); - b.Property("CanWriteDVDPlusRDL") - .HasColumnType("bit"); + b.Property("CanWriteDVDPlusRDL") + .HasColumnType("bit"); - b.Property("CanWriteDVDPlusRW") - .HasColumnType("bit"); + b.Property("CanWriteDVDPlusRW") + .HasColumnType("bit"); - b.Property("CanWriteDVDPlusRWDL") - .HasColumnType("bit"); + b.Property("CanWriteDVDPlusRWDL") + .HasColumnType("bit"); - b.Property("CanWriteDVDR") - .HasColumnType("bit"); + b.Property("CanWriteDVDR") + .HasColumnType("bit"); - b.Property("CanWriteDVDRDL") - .HasColumnType("bit"); + b.Property("CanWriteDVDRDL") + .HasColumnType("bit"); - b.Property("CanWriteDVDRW") - .HasColumnType("bit"); + b.Property("CanWriteDVDRW") + .HasColumnType("bit"); - b.Property("CanWriteHDDVDR") - .HasColumnType("bit"); + b.Property("CanWriteHDDVDR") + .HasColumnType("bit"); - b.Property("CanWriteHDDVDRAM") - .HasColumnType("bit"); + b.Property("CanWriteHDDVDRAM") + .HasColumnType("bit"); - b.Property("CanWriteOldBDR") - .HasColumnType("bit"); + b.Property("CanWriteOldBDR") + .HasColumnType("bit"); - b.Property("CanWriteOldBDRE") - .HasColumnType("bit"); + b.Property("CanWriteOldBDRE") + .HasColumnType("bit"); - b.Property("CanWritePackedSubchannelInTAO") - .HasColumnType("bit"); + b.Property("CanWritePackedSubchannelInTAO") + .HasColumnType("bit"); - b.Property("CanWriteRWSubchannelInSAO") - .HasColumnType("bit"); + b.Property("CanWriteRWSubchannelInSAO") + .HasColumnType("bit"); - b.Property("CanWriteRWSubchannelInTAO") - .HasColumnType("bit"); + b.Property("CanWriteRWSubchannelInTAO") + .HasColumnType("bit"); - b.Property("CanWriteRaw") - .HasColumnType("bit"); + b.Property("CanWriteRaw") + .HasColumnType("bit"); - b.Property("CanWriteRawMultiSession") - .HasColumnType("bit"); + b.Property("CanWriteRawMultiSession") + .HasColumnType("bit"); - b.Property("CanWriteRawSubchannelInTAO") - .HasColumnType("bit"); + b.Property("CanWriteRawSubchannelInTAO") + .HasColumnType("bit"); - b.Property("ChangerIsSideChangeCapable") - .HasColumnType("bit"); + b.Property("ChangerIsSideChangeCapable") + .HasColumnType("bit"); - b.Property("ChangerSlots") - .HasColumnType("tinyint unsigned"); + b.Property("ChangerSlots") + .HasColumnType("tinyint unsigned"); - b.Property("ChangerSupportsDiscPresent") - .HasColumnType("bit"); + b.Property("ChangerSupportsDiscPresent") + .HasColumnType("bit"); - b.Property("DBML") - .HasColumnType("bit"); + b.Property("DBML") + .HasColumnType("bit"); - b.Property("DVDMultiRead") - .HasColumnType("bit"); + b.Property("DVDMultiRead") + .HasColumnType("bit"); - b.Property("EmbeddedChanger") - .HasColumnType("bit"); + b.Property("EmbeddedChanger") + .HasColumnType("bit"); - b.Property("ErrorRecoveryPage") - .HasColumnType("bit"); + b.Property("ErrorRecoveryPage") + .HasColumnType("bit"); - b.Property("FirmwareDate") - .HasColumnType("datetime(6)"); + b.Property("FirmwareDate") + .HasColumnType("datetime(6)"); - b.Property("LoadingMechanismType") - .HasColumnType("tinyint unsigned"); + b.Property("LoadingMechanismType") + .HasColumnType("tinyint unsigned"); - b.Property("Locked") - .HasColumnType("bit"); + b.Property("Locked") + .HasColumnType("bit"); - b.Property("LogicalBlockSize") - .HasColumnType("int unsigned"); + b.Property("LogicalBlockSize") + .HasColumnType("int unsigned"); - b.Property("LogicalBlockSizeSql") - .HasColumnType("int"); + b.Property("LogicalBlockSizeSql") + .HasColumnType("int"); - b.Property("MultiRead") - .HasColumnType("bit"); + b.Property("MultiRead") + .HasColumnType("bit"); - b.Property("PhysicalInterfaceStandardNumber") - .HasColumnType("int unsigned"); + b.Property("PhysicalInterfaceStandardNumber") + .HasColumnType("int unsigned"); - b.Property("PhysicalInterfaceStandardNumberSql") - .HasColumnType("int"); + b.Property("PhysicalInterfaceStandardNumberSql") + .HasColumnType("int"); - b.Property("PreventJumper") - .HasColumnType("bit"); + b.Property("PreventJumper") + .HasColumnType("bit"); - b.Property("SupportsAACS") - .HasColumnType("bit"); + b.Property("SupportsAACS") + .HasColumnType("bit"); - b.Property("SupportsBusEncryption") - .HasColumnType("bit"); + b.Property("SupportsBusEncryption") + .HasColumnType("bit"); - b.Property("SupportsC2") - .HasColumnType("bit"); + b.Property("SupportsC2") + .HasColumnType("bit"); - b.Property("SupportsCPRM") - .HasColumnType("bit"); + b.Property("SupportsCPRM") + .HasColumnType("bit"); - b.Property("SupportsCSS") - .HasColumnType("bit"); + b.Property("SupportsCSS") + .HasColumnType("bit"); - b.Property("SupportsDAP") - .HasColumnType("bit"); + b.Property("SupportsDAP") + .HasColumnType("bit"); - b.Property("SupportsDeviceBusyEvent") - .HasColumnType("bit"); + b.Property("SupportsDeviceBusyEvent") + .HasColumnType("bit"); - b.Property("SupportsHybridDiscs") - .HasColumnType("bit"); + b.Property("SupportsHybridDiscs") + .HasColumnType("bit"); - b.Property("SupportsModePage1Ch") - .HasColumnType("bit"); + b.Property("SupportsModePage1Ch") + .HasColumnType("bit"); - b.Property("SupportsOSSC") - .HasColumnType("bit"); + b.Property("SupportsOSSC") + .HasColumnType("bit"); - b.Property("SupportsPWP") - .HasColumnType("bit"); + b.Property("SupportsPWP") + .HasColumnType("bit"); - b.Property("SupportsSWPP") - .HasColumnType("bit"); + b.Property("SupportsSWPP") + .HasColumnType("bit"); - b.Property("SupportsSecurDisc") - .HasColumnType("bit"); + b.Property("SupportsSecurDisc") + .HasColumnType("bit"); - b.Property("SupportsSeparateVolume") - .HasColumnType("bit"); + b.Property("SupportsSeparateVolume") + .HasColumnType("bit"); - b.Property("SupportsVCPS") - .HasColumnType("bit"); + b.Property("SupportsVCPS") + .HasColumnType("bit"); - b.Property("SupportsWriteInhibitDCB") - .HasColumnType("bit"); + b.Property("SupportsWriteInhibitDCB") + .HasColumnType("bit"); - b.Property("SupportsWriteProtectPAC") - .HasColumnType("bit"); + b.Property("SupportsWriteProtectPAC") + .HasColumnType("bit"); - b.Property("VolumeLevels") - .HasColumnType("smallint unsigned"); + b.Property("VolumeLevels") + .HasColumnType("smallint unsigned"); - b.Property("VolumeLevelsSql") - .HasColumnType("smallint"); + b.Property("VolumeLevelsSql") + .HasColumnType("smallint"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("MmcFeatures"); - }); + b.ToTable("MmcFeatures"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcSd", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("CID") - .HasColumnType("longblob"); + b.Property("CID") + .HasColumnType("longblob"); - b.Property("CSD") - .HasColumnType("longblob"); + b.Property("CSD") + .HasColumnType("longblob"); - b.Property("ExtendedCSD") - .HasColumnType("longblob"); + b.Property("ExtendedCSD") + .HasColumnType("longblob"); - b.Property("OCR") - .HasColumnType("longblob"); + b.Property("OCR") + .HasColumnType("longblob"); - b.Property("SCR") - .HasColumnType("longblob"); + b.Property("SCR") + .HasColumnType("longblob"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("MmcSd"); - }); + b.ToTable("MmcSd"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Pcmcia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("CIS") - .HasColumnType("longblob"); + b.Property("CIS") + .HasColumnType("longblob"); - b.Property("CardCode") - .HasColumnType("smallint unsigned"); + b.Property("CardCode") + .HasColumnType("smallint unsigned"); - b.Property("CardCodeSql") - .HasColumnType("smallint"); + b.Property("CardCodeSql") + .HasColumnType("smallint"); - b.Property("Compliance") - .HasColumnType("longtext"); + b.Property("Compliance") + .HasColumnType("longtext"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("ManufacturerCode") - .HasColumnType("smallint unsigned"); + b.Property("ManufacturerCode") + .HasColumnType("smallint unsigned"); - b.Property("ManufacturerCodeSql") - .HasColumnType("smallint"); + b.Property("ManufacturerCodeSql") + .HasColumnType("smallint"); - b.Property("ProductName") - .HasColumnType("longtext"); + b.Property("ProductName") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Pcmcia"); - }); + b.ToTable("Pcmcia"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("InquiryData") - .HasColumnType("longblob"); + b.Property("InquiryData") + .HasColumnType("longblob"); - b.Property("ModeSense10ChangeableData") - .HasColumnType("longblob"); + b.Property("ModeSense10ChangeableData") + .HasColumnType("longblob"); - b.Property("ModeSense10CurrentData") - .HasColumnType("longblob"); + b.Property("ModeSense10CurrentData") + .HasColumnType("longblob"); - b.Property("ModeSense10Data") - .HasColumnType("longblob"); + b.Property("ModeSense10Data") + .HasColumnType("longblob"); - b.Property("ModeSense6ChangeableData") - .HasColumnType("longblob"); + b.Property("ModeSense6ChangeableData") + .HasColumnType("longblob"); - b.Property("ModeSense6CurrentData") - .HasColumnType("longblob"); + b.Property("ModeSense6CurrentData") + .HasColumnType("longblob"); - b.Property("ModeSense6Data") - .HasColumnType("longblob"); + b.Property("ModeSense6Data") + .HasColumnType("longblob"); - b.Property("ModeSenseId") - .HasColumnType("int"); + b.Property("ModeSenseId") + .HasColumnType("int"); - b.Property("MultiMediaDeviceId") - .HasColumnType("int"); + b.Property("MultiMediaDeviceId") + .HasColumnType("int"); - b.Property("ReadCapabilitiesId") - .HasColumnType("int"); + b.Property("ReadCapabilitiesId") + .HasColumnType("int"); - b.Property("SequentialDeviceId") - .HasColumnType("int"); + b.Property("SequentialDeviceId") + .HasColumnType("int"); - b.Property("SupportsModeSense10") - .HasColumnType("bit"); + b.Property("SupportsModeSense10") + .HasColumnType("bit"); - b.Property("SupportsModeSense6") - .HasColumnType("bit"); + b.Property("SupportsModeSense6") + .HasColumnType("bit"); - b.Property("SupportsModeSubpages") - .HasColumnType("bit"); + b.Property("SupportsModeSubpages") + .HasColumnType("bit"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ModeSenseId"); + b.HasIndex("ModeSenseId"); - b.HasIndex("MultiMediaDeviceId"); + b.HasIndex("MultiMediaDeviceId"); - b.HasIndex("ReadCapabilitiesId"); + b.HasIndex("ReadCapabilitiesId"); - b.HasIndex("SequentialDeviceId"); + b.HasIndex("SequentialDeviceId"); - b.ToTable("Scsi"); - }); + b.ToTable("Scsi"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiMode", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("BlankCheckEnabled") - .HasColumnType("bit"); + b.Property("BlankCheckEnabled") + .HasColumnType("bit"); - b.Property("BufferedMode") - .HasColumnType("tinyint unsigned"); + b.Property("BufferedMode") + .HasColumnType("tinyint unsigned"); - b.Property("DPOandFUA") - .HasColumnType("bit"); + b.Property("DPOandFUA") + .HasColumnType("bit"); - b.Property("MediumType") - .HasColumnType("tinyint unsigned"); + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); - b.Property("Speed") - .HasColumnType("tinyint unsigned"); + b.Property("Speed") + .HasColumnType("tinyint unsigned"); - b.Property("WriteProtected") - .HasColumnType("bit"); + b.Property("WriteProtected") + .HasColumnType("bit"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("ScsiMode"); - }); + b.ToTable("ScsiMode"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("ScsiId") - .HasColumnType("int"); + b.Property("ScsiId") + .HasColumnType("int"); - b.Property("ScsiModeId") - .HasColumnType("int"); + b.Property("ScsiModeId") + .HasColumnType("int"); - b.Property("page") - .HasColumnType("tinyint unsigned"); + b.Property("page") + .HasColumnType("tinyint unsigned"); - b.Property("subpage") - .HasColumnType("tinyint unsigned"); + b.Property("subpage") + .HasColumnType("tinyint unsigned"); - b.Property("value") - .HasColumnType("longblob"); + b.Property("value") + .HasColumnType("longblob"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ScsiId"); + b.HasIndex("ScsiId"); - b.HasIndex("ScsiModeId"); + b.HasIndex("ScsiModeId"); - b.ToTable("ScsiPage"); - }); + b.ToTable("ScsiPage"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ssc", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("BlockSizeGranularity") - .HasColumnType("tinyint unsigned"); + b.Property("BlockSizeGranularity") + .HasColumnType("tinyint unsigned"); - b.Property("MaxBlockLength") - .HasColumnType("int unsigned"); + b.Property("MaxBlockLength") + .HasColumnType("int unsigned"); - b.Property("MaxBlockLengthSql") - .HasColumnType("int"); + b.Property("MaxBlockLengthSql") + .HasColumnType("int"); - b.Property("MinBlockLength") - .HasColumnType("int unsigned"); + b.Property("MinBlockLength") + .HasColumnType("int unsigned"); - b.Property("MinBlockLengthSql") - .HasColumnType("int"); + b.Property("MinBlockLengthSql") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Ssc"); - }); + b.ToTable("Ssc"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Description") - .HasColumnType("longtext"); + b.Property("Description") + .HasColumnType("longtext"); - b.Property("Length") - .HasColumnType("smallint unsigned"); + b.Property("Length") + .HasColumnType("smallint unsigned"); - b.Property("LengthSql") - .HasColumnType("smallint"); + b.Property("LengthSql") + .HasColumnType("smallint"); - b.Property("MediumType") - .HasColumnType("tinyint unsigned"); + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.Property("Organization") - .HasColumnType("longtext"); + b.Property("Organization") + .HasColumnType("longtext"); - b.Property("SscId") - .HasColumnType("int"); + b.Property("SscId") + .HasColumnType("int"); - b.Property("TestedSequentialMediaId") - .HasColumnType("int"); + b.Property("TestedSequentialMediaId") + .HasColumnType("int"); - b.Property("Width") - .HasColumnType("smallint unsigned"); + b.Property("Width") + .HasColumnType("smallint unsigned"); - b.Property("WidthSql") - .HasColumnType("smallint"); + b.Property("WidthSql") + .HasColumnType("smallint"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("SscId"); + b.HasIndex("SscId"); - b.HasIndex("TestedSequentialMediaId"); + b.HasIndex("TestedSequentialMediaId"); - b.ToTable("SscSupportedMedia"); - }); + b.ToTable("SscSupportedMedia"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("BitsPerMm") - .HasColumnType("int unsigned"); + b.Property("BitsPerMm") + .HasColumnType("int unsigned"); - b.Property("BitsPerMmSql") - .HasColumnType("int"); + b.Property("BitsPerMmSql") + .HasColumnType("int"); - b.Property("Capacity") - .HasColumnType("int unsigned"); + b.Property("Capacity") + .HasColumnType("int unsigned"); - b.Property("CapacitySql") - .HasColumnType("int"); + b.Property("CapacitySql") + .HasColumnType("int"); - b.Property("DefaultDensity") - .HasColumnType("bit"); + b.Property("DefaultDensity") + .HasColumnType("bit"); - b.Property("Description") - .HasColumnType("longtext"); + b.Property("Description") + .HasColumnType("longtext"); - b.Property("Duplicate") - .HasColumnType("bit"); + b.Property("Duplicate") + .HasColumnType("bit"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.Property("Organization") - .HasColumnType("longtext"); + b.Property("Organization") + .HasColumnType("longtext"); - b.Property("PrimaryCode") - .HasColumnType("tinyint unsigned"); + b.Property("PrimaryCode") + .HasColumnType("tinyint unsigned"); - b.Property("SecondaryCode") - .HasColumnType("tinyint unsigned"); + b.Property("SecondaryCode") + .HasColumnType("tinyint unsigned"); - b.Property("SscId") - .HasColumnType("int"); + b.Property("SscId") + .HasColumnType("int"); - b.Property("TestedSequentialMediaId") - .HasColumnType("int"); + b.Property("TestedSequentialMediaId") + .HasColumnType("int"); - b.Property("Tracks") - .HasColumnType("smallint unsigned"); + b.Property("Tracks") + .HasColumnType("smallint unsigned"); - b.Property("TracksSql") - .HasColumnType("smallint"); + b.Property("TracksSql") + .HasColumnType("smallint"); - b.Property("Width") - .HasColumnType("smallint unsigned"); + b.Property("Width") + .HasColumnType("smallint unsigned"); - b.Property("WidthSql") - .HasColumnType("smallint"); + b.Property("WidthSql") + .HasColumnType("smallint"); - b.Property("Writable") - .HasColumnType("bit"); + b.Property("Writable") + .HasColumnType("bit"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("SscId"); + b.HasIndex("SscId"); - b.HasIndex("TestedSequentialMediaId"); + b.HasIndex("TestedSequentialMediaId"); - b.ToTable("SupportedDensity"); - }); + b.ToTable("SupportedDensity"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("AdipData") - .HasColumnType("longblob"); + b.Property("AdipData") + .HasColumnType("longblob"); - b.Property("AtaId") - .HasColumnType("int"); + b.Property("AtaId") + .HasColumnType("int"); - b.Property("AtipData") - .HasColumnType("longblob"); + b.Property("AtipData") + .HasColumnType("longblob"); - b.Property("BlockSize") - .HasColumnType("int unsigned"); + b.Property("BlockSize") + .HasColumnType("int unsigned"); - b.Property("BlockSizeSql") - .HasColumnType("int"); + b.Property("BlockSizeSql") + .HasColumnType("int"); - b.Property("Blocks") - .HasColumnType("bigint unsigned"); + b.Property("Blocks") + .HasColumnType("bigint unsigned"); - b.Property("BlocksSql") - .HasColumnType("bigint"); + b.Property("BlocksSql") + .HasColumnType("bigint"); - b.Property("BluBcaData") - .HasColumnType("longblob"); + b.Property("BluBcaData") + .HasColumnType("longblob"); - b.Property("BluDdsData") - .HasColumnType("longblob"); + b.Property("BluDdsData") + .HasColumnType("longblob"); - b.Property("BluDiData") - .HasColumnType("longblob"); + b.Property("BluDiData") + .HasColumnType("longblob"); - b.Property("BluPacData") - .HasColumnType("longblob"); + b.Property("BluPacData") + .HasColumnType("longblob"); - b.Property("BluSaiData") - .HasColumnType("longblob"); + b.Property("BluSaiData") + .HasColumnType("longblob"); - b.Property("C2PointersData") - .HasColumnType("longblob"); + b.Property("C2PointersData") + .HasColumnType("longblob"); - b.Property("CHSId") - .HasColumnType("int"); + b.Property("CHSId") + .HasColumnType("int"); - b.Property("CanReadAACS") - .HasColumnType("bit"); + b.Property("CanReadAACS") + .HasColumnType("bit"); - b.Property("CanReadADIP") - .HasColumnType("bit"); + b.Property("CanReadADIP") + .HasColumnType("bit"); - b.Property("CanReadATIP") - .HasColumnType("bit"); + b.Property("CanReadATIP") + .HasColumnType("bit"); - b.Property("CanReadBCA") - .HasColumnType("bit"); + b.Property("CanReadBCA") + .HasColumnType("bit"); - b.Property("CanReadC2Pointers") - .HasColumnType("bit"); + b.Property("CanReadC2Pointers") + .HasColumnType("bit"); - b.Property("CanReadCMI") - .HasColumnType("bit"); + b.Property("CanReadCMI") + .HasColumnType("bit"); - b.Property("CanReadCorrectedSubchannel") - .HasColumnType("bit"); + b.Property("CanReadCorrectedSubchannel") + .HasColumnType("bit"); - b.Property("CanReadCorrectedSubchannelWithC2") - .HasColumnType("bit"); + b.Property("CanReadCorrectedSubchannelWithC2") + .HasColumnType("bit"); - b.Property("CanReadDCB") - .HasColumnType("bit"); + b.Property("CanReadDCB") + .HasColumnType("bit"); - b.Property("CanReadDDS") - .HasColumnType("bit"); + b.Property("CanReadDDS") + .HasColumnType("bit"); - b.Property("CanReadDMI") - .HasColumnType("bit"); + b.Property("CanReadDMI") + .HasColumnType("bit"); - b.Property("CanReadDiscInformation") - .HasColumnType("bit"); + b.Property("CanReadDiscInformation") + .HasColumnType("bit"); - b.Property("CanReadFirstTrackPreGap") - .HasColumnType("bit"); + b.Property("CanReadFirstTrackPreGap") + .HasColumnType("bit"); - b.Property("CanReadFullTOC") - .HasColumnType("bit"); + b.Property("CanReadFullTOC") + .HasColumnType("bit"); - b.Property("CanReadHDCMI") - .HasColumnType("bit"); + b.Property("CanReadHDCMI") + .HasColumnType("bit"); - b.Property("CanReadLayerCapacity") - .HasColumnType("bit"); + b.Property("CanReadLayerCapacity") + .HasColumnType("bit"); - b.Property("CanReadLeadIn") - .HasColumnType("bit"); + b.Property("CanReadLeadIn") + .HasColumnType("bit"); - b.Property("CanReadLeadOut") - .HasColumnType("bit"); + b.Property("CanReadLeadOut") + .HasColumnType("bit"); - b.Property("CanReadMediaID") - .HasColumnType("bit"); + b.Property("CanReadMediaID") + .HasColumnType("bit"); - b.Property("CanReadMediaSerial") - .HasColumnType("bit"); + b.Property("CanReadMediaSerial") + .HasColumnType("bit"); - b.Property("CanReadPAC") - .HasColumnType("bit"); + b.Property("CanReadPAC") + .HasColumnType("bit"); - b.Property("CanReadPFI") - .HasColumnType("bit"); + b.Property("CanReadPFI") + .HasColumnType("bit"); - b.Property("CanReadPMA") - .HasColumnType("bit"); + b.Property("CanReadPMA") + .HasColumnType("bit"); - b.Property("CanReadPQSubchannel") - .HasColumnType("bit"); + b.Property("CanReadPQSubchannel") + .HasColumnType("bit"); - b.Property("CanReadPQSubchannelWithC2") - .HasColumnType("bit"); + b.Property("CanReadPQSubchannelWithC2") + .HasColumnType("bit"); - b.Property("CanReadPRI") - .HasColumnType("bit"); + b.Property("CanReadPRI") + .HasColumnType("bit"); - b.Property("CanReadRWSubchannel") - .HasColumnType("bit"); + b.Property("CanReadRWSubchannel") + .HasColumnType("bit"); - b.Property("CanReadRWSubchannelWithC2") - .HasColumnType("bit"); + b.Property("CanReadRWSubchannelWithC2") + .HasColumnType("bit"); - b.Property("CanReadRecordablePFI") - .HasColumnType("bit"); + b.Property("CanReadRecordablePFI") + .HasColumnType("bit"); - b.Property("CanReadSpareAreaInformation") - .HasColumnType("bit"); + b.Property("CanReadSpareAreaInformation") + .HasColumnType("bit"); - b.Property("CanReadTOC") - .HasColumnType("bit"); + b.Property("CanReadTOC") + .HasColumnType("bit"); - b.Property("CanReadingIntersessionLeadIn") - .HasColumnType("bit"); + b.Property("CanReadingIntersessionLeadIn") + .HasColumnType("bit"); - b.Property("CanReadingIntersessionLeadOut") - .HasColumnType("bit"); + b.Property("CanReadingIntersessionLeadOut") + .HasColumnType("bit"); - b.Property("CmiData") - .HasColumnType("longblob"); + b.Property("CmiData") + .HasColumnType("longblob"); - b.Property("CorrectedSubchannelData") - .HasColumnType("longblob"); + b.Property("CorrectedSubchannelData") + .HasColumnType("longblob"); - b.Property("CorrectedSubchannelWithC2Data") - .HasColumnType("longblob"); + b.Property("CorrectedSubchannelWithC2Data") + .HasColumnType("longblob"); - b.Property("CurrentCHSId") - .HasColumnType("int"); + b.Property("CurrentCHSId") + .HasColumnType("int"); - b.Property("DcbData") - .HasColumnType("longblob"); + b.Property("DcbData") + .HasColumnType("longblob"); - b.Property("Density") - .HasColumnType("tinyint unsigned"); + b.Property("Density") + .HasColumnType("tinyint unsigned"); - b.Property("DmiData") - .HasColumnType("longblob"); + b.Property("DmiData") + .HasColumnType("longblob"); - b.Property("DvdAacsData") - .HasColumnType("longblob"); + b.Property("DvdAacsData") + .HasColumnType("longblob"); - b.Property("DvdBcaData") - .HasColumnType("longblob"); + b.Property("DvdBcaData") + .HasColumnType("longblob"); - b.Property("DvdDdsData") - .HasColumnType("longblob"); + b.Property("DvdDdsData") + .HasColumnType("longblob"); - b.Property("DvdLayerData") - .HasColumnType("longblob"); + b.Property("DvdLayerData") + .HasColumnType("longblob"); - b.Property("DvdSaiData") - .HasColumnType("longblob"); + b.Property("DvdSaiData") + .HasColumnType("longblob"); - b.Property("EmbossedPfiData") - .HasColumnType("longblob"); + b.Property("EmbossedPfiData") + .HasColumnType("longblob"); - b.Property("FullTocData") - .HasColumnType("longblob"); + b.Property("FullTocData") + .HasColumnType("longblob"); - b.Property("HLDTSTReadRawDVDData") - .HasColumnType("longblob"); + b.Property("HLDTSTReadRawDVDData") + .HasColumnType("longblob"); - b.Property("HdCmiData") - .HasColumnType("longblob"); + b.Property("HdCmiData") + .HasColumnType("longblob"); - b.Property("IdentifyData") - .HasColumnType("longblob"); + b.Property("IdentifyData") + .HasColumnType("longblob"); - b.Property("IntersessionLeadInData") - .HasColumnType("longblob"); + b.Property("IntersessionLeadInData") + .HasColumnType("longblob"); - b.Property("IntersessionLeadOutData") - .HasColumnType("longblob"); + b.Property("IntersessionLeadOutData") + .HasColumnType("longblob"); - b.Property("LBA48Sectors") - .HasColumnType("bigint unsigned"); + b.Property("LBA48Sectors") + .HasColumnType("bigint unsigned"); - b.Property("LBA48SectorsSql") - .HasColumnType("bigint"); + b.Property("LBA48SectorsSql") + .HasColumnType("bigint"); - b.Property("LBASectors") - .HasColumnType("int unsigned"); + b.Property("LBASectors") + .HasColumnType("int unsigned"); - b.Property("LBASectorsSql") - .HasColumnType("int"); + b.Property("LBASectorsSql") + .HasColumnType("int"); - b.Property("LeadInData") - .HasColumnType("longblob"); + b.Property("LeadInData") + .HasColumnType("longblob"); - b.Property("LeadOutData") - .HasColumnType("longblob"); + b.Property("LeadOutData") + .HasColumnType("longblob"); - b.Property("LogicalAlignment") - .HasColumnType("smallint unsigned"); + b.Property("LogicalAlignment") + .HasColumnType("smallint unsigned"); - b.Property("LogicalAlignmentSql") - .HasColumnType("smallint"); + b.Property("LogicalAlignmentSql") + .HasColumnType("smallint"); - b.Property("LongBlockSize") - .HasColumnType("int unsigned"); + b.Property("LongBlockSize") + .HasColumnType("int unsigned"); - b.Property("LongBlockSizeSql") - .HasColumnType("int"); + b.Property("LongBlockSizeSql") + .HasColumnType("int"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("MediaIsRecognized") - .HasColumnType("bit"); + b.Property("MediaIsRecognized") + .HasColumnType("bit"); - b.Property("MediumType") - .HasColumnType("tinyint unsigned"); + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); - b.Property("MediumTypeName") - .HasColumnType("longtext"); + b.Property("MediumTypeName") + .HasColumnType("longtext"); - b.Property("MmcId") - .HasColumnType("int"); + b.Property("MmcId") + .HasColumnType("int"); - b.Property("ModeSense10Data") - .HasColumnType("longblob"); + b.Property("ModeSense10Data") + .HasColumnType("longblob"); - b.Property("ModeSense6Data") - .HasColumnType("longblob"); + b.Property("ModeSense6Data") + .HasColumnType("longblob"); - b.Property("Model") - .HasColumnType("longtext"); + b.Property("Model") + .HasColumnType("longtext"); - b.Property("NecReadCddaData") - .HasColumnType("longblob"); + b.Property("NecReadCddaData") + .HasColumnType("longblob"); - b.Property("NominalRotationRate") - .HasColumnType("smallint unsigned"); + b.Property("NominalRotationRate") + .HasColumnType("smallint unsigned"); - b.Property("NominalRotationRateSql") - .HasColumnType("smallint"); + b.Property("NominalRotationRateSql") + .HasColumnType("smallint"); - b.Property("PQSubchannelData") - .HasColumnType("longblob"); + b.Property("PQSubchannelData") + .HasColumnType("longblob"); - b.Property("PQSubchannelWithC2Data") - .HasColumnType("longblob"); + b.Property("PQSubchannelWithC2Data") + .HasColumnType("longblob"); - b.Property("PfiData") - .HasColumnType("longblob"); + b.Property("PfiData") + .HasColumnType("longblob"); - b.Property("PhysicalBlockSize") - .HasColumnType("int unsigned"); + b.Property("PhysicalBlockSize") + .HasColumnType("int unsigned"); - b.Property("PhysicalBlockSizeSql") - .HasColumnType("int"); + b.Property("PhysicalBlockSizeSql") + .HasColumnType("int"); - b.Property("PioneerReadCddaData") - .HasColumnType("longblob"); + b.Property("PioneerReadCddaData") + .HasColumnType("longblob"); - b.Property("PioneerReadCddaMsfData") - .HasColumnType("longblob"); + b.Property("PioneerReadCddaMsfData") + .HasColumnType("longblob"); - b.Property("PlextorReadCddaData") - .HasColumnType("longblob"); + b.Property("PlextorReadCddaData") + .HasColumnType("longblob"); - b.Property("PlextorReadRawDVDData") - .HasColumnType("longblob"); + b.Property("PlextorReadRawDVDData") + .HasColumnType("longblob"); - b.Property("PmaData") - .HasColumnType("longblob"); + b.Property("PmaData") + .HasColumnType("longblob"); - b.Property("PriData") - .HasColumnType("longblob"); + b.Property("PriData") + .HasColumnType("longblob"); - b.Property("RWSubchannelData") - .HasColumnType("longblob"); + b.Property("RWSubchannelData") + .HasColumnType("longblob"); - b.Property("RWSubchannelWithC2Data") - .HasColumnType("longblob"); + b.Property("RWSubchannelWithC2Data") + .HasColumnType("longblob"); - b.Property("Read10Data") - .HasColumnType("longblob"); + b.Property("Read10Data") + .HasColumnType("longblob"); - b.Property("Read12Data") - .HasColumnType("longblob"); + b.Property("Read12Data") + .HasColumnType("longblob"); - b.Property("Read16Data") - .HasColumnType("longblob"); + b.Property("Read16Data") + .HasColumnType("longblob"); - b.Property("Read6Data") - .HasColumnType("longblob"); + b.Property("Read6Data") + .HasColumnType("longblob"); - b.Property("ReadCdData") - .HasColumnType("longblob"); + b.Property("ReadCdData") + .HasColumnType("longblob"); - b.Property("ReadCdFullData") - .HasColumnType("longblob"); + b.Property("ReadCdFullData") + .HasColumnType("longblob"); - b.Property("ReadCdMsfData") - .HasColumnType("longblob"); + b.Property("ReadCdMsfData") + .HasColumnType("longblob"); - b.Property("ReadCdMsfFullData") - .HasColumnType("longblob"); + b.Property("ReadCdMsfFullData") + .HasColumnType("longblob"); - b.Property("ReadDmaData") - .HasColumnType("longblob"); + b.Property("ReadDmaData") + .HasColumnType("longblob"); - b.Property("ReadDmaLba48Data") - .HasColumnType("longblob"); + b.Property("ReadDmaLba48Data") + .HasColumnType("longblob"); - b.Property("ReadDmaLbaData") - .HasColumnType("longblob"); + b.Property("ReadDmaLbaData") + .HasColumnType("longblob"); - b.Property("ReadDmaRetryData") - .HasColumnType("longblob"); + b.Property("ReadDmaRetryData") + .HasColumnType("longblob"); - b.Property("ReadDmaRetryLbaData") - .HasColumnType("longblob"); + b.Property("ReadDmaRetryLbaData") + .HasColumnType("longblob"); - b.Property("ReadLba48Data") - .HasColumnType("longblob"); + b.Property("ReadLba48Data") + .HasColumnType("longblob"); - b.Property("ReadLbaData") - .HasColumnType("longblob"); + b.Property("ReadLbaData") + .HasColumnType("longblob"); - b.Property("ReadLong10Data") - .HasColumnType("longblob"); + b.Property("ReadLong10Data") + .HasColumnType("longblob"); - b.Property("ReadLong16Data") - .HasColumnType("longblob"); + b.Property("ReadLong16Data") + .HasColumnType("longblob"); - b.Property("ReadLongData") - .HasColumnType("longblob"); + b.Property("ReadLongData") + .HasColumnType("longblob"); - b.Property("ReadLongLbaData") - .HasColumnType("longblob"); + b.Property("ReadLongLbaData") + .HasColumnType("longblob"); - b.Property("ReadLongRetryData") - .HasColumnType("longblob"); + b.Property("ReadLongRetryData") + .HasColumnType("longblob"); - b.Property("ReadLongRetryLbaData") - .HasColumnType("longblob"); + b.Property("ReadLongRetryLbaData") + .HasColumnType("longblob"); - b.Property("ReadRetryLbaData") - .HasColumnType("longblob"); + b.Property("ReadRetryLbaData") + .HasColumnType("longblob"); - b.Property("ReadSectorsData") - .HasColumnType("longblob"); + b.Property("ReadSectorsData") + .HasColumnType("longblob"); - b.Property("ReadSectorsRetryData") - .HasColumnType("longblob"); + b.Property("ReadSectorsRetryData") + .HasColumnType("longblob"); - b.Property("ScsiId") - .HasColumnType("int"); + b.Property("ScsiId") + .HasColumnType("int"); - b.Property("SolidStateDevice") - .HasColumnType("bit"); + b.Property("SolidStateDevice") + .HasColumnType("bit"); - b.Property("SupportsHLDTSTReadRawDVD") - .HasColumnType("bit"); + b.Property("SupportsHLDTSTReadRawDVD") + .HasColumnType("bit"); - b.Property("SupportsNECReadCDDA") - .HasColumnType("bit"); + b.Property("SupportsNECReadCDDA") + .HasColumnType("bit"); - b.Property("SupportsPioneerReadCDDA") - .HasColumnType("bit"); + b.Property("SupportsPioneerReadCDDA") + .HasColumnType("bit"); - b.Property("SupportsPioneerReadCDDAMSF") - .HasColumnType("bit"); + b.Property("SupportsPioneerReadCDDAMSF") + .HasColumnType("bit"); - b.Property("SupportsPlextorReadCDDA") - .HasColumnType("bit"); + b.Property("SupportsPlextorReadCDDA") + .HasColumnType("bit"); - b.Property("SupportsPlextorReadRawDVD") - .HasColumnType("bit"); + b.Property("SupportsPlextorReadRawDVD") + .HasColumnType("bit"); - b.Property("SupportsRead10") - .HasColumnType("bit"); + b.Property("SupportsRead10") + .HasColumnType("bit"); - b.Property("SupportsRead12") - .HasColumnType("bit"); + b.Property("SupportsRead12") + .HasColumnType("bit"); - b.Property("SupportsRead16") - .HasColumnType("bit"); + b.Property("SupportsRead16") + .HasColumnType("bit"); - b.Property("SupportsRead6") - .HasColumnType("bit"); + b.Property("SupportsRead6") + .HasColumnType("bit"); - b.Property("SupportsReadCapacity") - .HasColumnType("bit"); + b.Property("SupportsReadCapacity") + .HasColumnType("bit"); - b.Property("SupportsReadCapacity16") - .HasColumnType("bit"); + b.Property("SupportsReadCapacity16") + .HasColumnType("bit"); - b.Property("SupportsReadCd") - .HasColumnType("bit"); + b.Property("SupportsReadCd") + .HasColumnType("bit"); - b.Property("SupportsReadCdMsf") - .HasColumnType("bit"); + b.Property("SupportsReadCdMsf") + .HasColumnType("bit"); - b.Property("SupportsReadCdMsfRaw") - .HasColumnType("bit"); + b.Property("SupportsReadCdMsfRaw") + .HasColumnType("bit"); - b.Property("SupportsReadCdRaw") - .HasColumnType("bit"); + b.Property("SupportsReadCdRaw") + .HasColumnType("bit"); - b.Property("SupportsReadDma") - .HasColumnType("bit"); + b.Property("SupportsReadDma") + .HasColumnType("bit"); - b.Property("SupportsReadDmaLba") - .HasColumnType("bit"); + b.Property("SupportsReadDmaLba") + .HasColumnType("bit"); - b.Property("SupportsReadDmaLba48") - .HasColumnType("bit"); + b.Property("SupportsReadDmaLba48") + .HasColumnType("bit"); - b.Property("SupportsReadDmaRetry") - .HasColumnType("bit"); + b.Property("SupportsReadDmaRetry") + .HasColumnType("bit"); - b.Property("SupportsReadDmaRetryLba") - .HasColumnType("bit"); + b.Property("SupportsReadDmaRetryLba") + .HasColumnType("bit"); - b.Property("SupportsReadLba") - .HasColumnType("bit"); + b.Property("SupportsReadLba") + .HasColumnType("bit"); - b.Property("SupportsReadLba48") - .HasColumnType("bit"); + b.Property("SupportsReadLba48") + .HasColumnType("bit"); - b.Property("SupportsReadLong") - .HasColumnType("bit"); + b.Property("SupportsReadLong") + .HasColumnType("bit"); - b.Property("SupportsReadLong16") - .HasColumnType("bit"); + b.Property("SupportsReadLong16") + .HasColumnType("bit"); - b.Property("SupportsReadLongLba") - .HasColumnType("bit"); + b.Property("SupportsReadLongLba") + .HasColumnType("bit"); - b.Property("SupportsReadLongRetry") - .HasColumnType("bit"); + b.Property("SupportsReadLongRetry") + .HasColumnType("bit"); - b.Property("SupportsReadLongRetryLba") - .HasColumnType("bit"); + b.Property("SupportsReadLongRetryLba") + .HasColumnType("bit"); - b.Property("SupportsReadRetry") - .HasColumnType("bit"); + b.Property("SupportsReadRetry") + .HasColumnType("bit"); - b.Property("SupportsReadRetryLba") - .HasColumnType("bit"); + b.Property("SupportsReadRetryLba") + .HasColumnType("bit"); - b.Property("SupportsReadSectors") - .HasColumnType("bit"); + b.Property("SupportsReadSectors") + .HasColumnType("bit"); - b.Property("SupportsSeek") - .HasColumnType("bit"); + b.Property("SupportsSeek") + .HasColumnType("bit"); - b.Property("SupportsSeekLba") - .HasColumnType("bit"); + b.Property("SupportsSeekLba") + .HasColumnType("bit"); - b.Property("TocData") - .HasColumnType("longblob"); + b.Property("TocData") + .HasColumnType("longblob"); - b.Property("Track1PregapData") - .HasColumnType("longblob"); + b.Property("Track1PregapData") + .HasColumnType("longblob"); - b.Property("UnformattedBPS") - .HasColumnType("smallint unsigned"); + b.Property("UnformattedBPS") + .HasColumnType("smallint unsigned"); - b.Property("UnformattedBPSSql") - .HasColumnType("smallint"); + b.Property("UnformattedBPSSql") + .HasColumnType("smallint"); - b.Property("UnformattedBPT") - .HasColumnType("smallint unsigned"); + b.Property("UnformattedBPT") + .HasColumnType("smallint unsigned"); - b.Property("UnformattedBPTSql") - .HasColumnType("smallint"); + b.Property("UnformattedBPTSql") + .HasColumnType("smallint"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("AtaId"); + b.HasIndex("AtaId"); - b.HasIndex("CHSId"); + b.HasIndex("CHSId"); - b.HasIndex("CurrentCHSId"); + b.HasIndex("CurrentCHSId"); - b.HasIndex("MmcId"); + b.HasIndex("MmcId"); - b.HasIndex("ScsiId"); + b.HasIndex("ScsiId"); - b.ToTable("TestedMedia"); - }); + b.ToTable("TestedMedia"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("CanReadMediaSerial") - .HasColumnType("bit"); + b.Property("CanReadMediaSerial") + .HasColumnType("bit"); - b.Property("Density") - .HasColumnType("tinyint unsigned"); + b.Property("Density") + .HasColumnType("tinyint unsigned"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("MediaIsRecognized") - .HasColumnType("bit"); + b.Property("MediaIsRecognized") + .HasColumnType("bit"); - b.Property("MediumType") - .HasColumnType("tinyint unsigned"); + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); - b.Property("MediumTypeName") - .HasColumnType("longtext"); + b.Property("MediumTypeName") + .HasColumnType("longtext"); - b.Property("ModeSense10Data") - .HasColumnType("longblob"); + b.Property("ModeSense10Data") + .HasColumnType("longblob"); - b.Property("ModeSense6Data") - .HasColumnType("longblob"); + b.Property("ModeSense6Data") + .HasColumnType("longblob"); - b.Property("Model") - .HasColumnType("longtext"); + b.Property("Model") + .HasColumnType("longtext"); - b.Property("SscId") - .HasColumnType("int"); + b.Property("SscId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("SscId"); + b.HasIndex("SscId"); - b.ToTable("TestedSequentialMedia"); - }); + b.ToTable("TestedSequentialMedia"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Usb", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Descriptors") - .HasColumnType("longblob"); + b.Property("Descriptors") + .HasColumnType("longblob"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("Product") - .HasColumnType("longtext"); + b.Property("Product") + .HasColumnType("longtext"); - b.Property("ProductID") - .HasColumnType("smallint unsigned"); + b.Property("ProductID") + .HasColumnType("smallint unsigned"); - b.Property("ProductIDSql") - .HasColumnType("smallint"); + b.Property("ProductIDSql") + .HasColumnType("smallint"); - b.Property("RemovableMedia") - .HasColumnType("bit"); + b.Property("RemovableMedia") + .HasColumnType("bit"); - b.Property("VendorID") - .HasColumnType("smallint unsigned"); + b.Property("VendorID") + .HasColumnType("smallint unsigned"); - b.Property("VendorIDSql") - .HasColumnType("smallint"); + b.Property("VendorIDSql") + .HasColumnType("smallint"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Usb"); - }); + b.ToTable("Usb"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Command", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Commands"); - }); + b.ToTable("Commands"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.CompactDiscOffset", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("AddedWhen") - .HasColumnType("datetime(6)"); + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); - b.Property("Agreement") - .HasColumnType("float"); + b.Property("Agreement") + .HasColumnType("float"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("Model") - .HasColumnType("longtext"); + b.Property("Model") + .HasColumnType("longtext"); - b.Property("ModifiedWhen") - .HasColumnType("datetime(6)"); + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); - b.Property("Offset") - .HasColumnType("smallint"); + b.Property("Offset") + .HasColumnType("smallint"); - b.Property("Submissions") - .HasColumnType("int"); + b.Property("Submissions") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ModifiedWhen"); + b.HasIndex("ModifiedWhen"); - b.ToTable("CdOffsets"); - }); + b.ToTable("CdOffsets"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("ATAId") - .HasColumnType("int"); + b.Property("ATAId") + .HasColumnType("int"); - b.Property("ATAPIId") - .HasColumnType("int"); + b.Property("ATAPIId") + .HasColumnType("int"); - b.Property("AddedWhen") - .HasColumnType("datetime(6)"); + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); - b.Property("CdOffsetId") - .HasColumnType("int"); + b.Property("CdOffsetId") + .HasColumnType("int"); - b.Property("CompactFlash") - .HasColumnType("bit"); + b.Property("CompactFlash") + .HasColumnType("bit"); - b.Property("FireWireId") - .HasColumnType("int"); + b.Property("FireWireId") + .HasColumnType("int"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("Model") - .HasColumnType("longtext"); + b.Property("Model") + .HasColumnType("longtext"); - b.Property("ModifiedWhen") - .HasColumnType("datetime(6)"); + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); - b.Property("MultiMediaCardId") - .HasColumnType("int"); + b.Property("MultiMediaCardId") + .HasColumnType("int"); - b.Property("OptimalMultipleSectorsRead") - .HasColumnType("int"); + b.Property("OptimalMultipleSectorsRead") + .HasColumnType("int"); - b.Property("PCMCIAId") - .HasColumnType("int"); + b.Property("PCMCIAId") + .HasColumnType("int"); - b.Property("Revision") - .HasColumnType("longtext"); + b.Property("Revision") + .HasColumnType("longtext"); - b.Property("SCSIId") - .HasColumnType("int"); + b.Property("SCSIId") + .HasColumnType("int"); - b.Property("SecureDigitalId") - .HasColumnType("int"); + b.Property("SecureDigitalId") + .HasColumnType("int"); - b.Property("Type") - .HasColumnType("int"); + b.Property("Type") + .HasColumnType("int"); - b.Property("USBId") - .HasColumnType("int"); + b.Property("USBId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ATAId"); + b.HasIndex("ATAId"); - b.HasIndex("ATAPIId"); + b.HasIndex("ATAPIId"); - b.HasIndex("CdOffsetId"); + b.HasIndex("CdOffsetId"); - b.HasIndex("FireWireId"); + b.HasIndex("FireWireId"); - b.HasIndex("ModifiedWhen"); + b.HasIndex("ModifiedWhen"); - b.HasIndex("MultiMediaCardId"); + b.HasIndex("MultiMediaCardId"); - b.HasIndex("PCMCIAId"); + b.HasIndex("PCMCIAId"); - b.HasIndex("SCSIId"); + b.HasIndex("SCSIId"); - b.HasIndex("SecureDigitalId"); + b.HasIndex("SecureDigitalId"); - b.HasIndex("USBId"); + b.HasIndex("USBId"); - b.ToTable("Devices"); - }); + b.ToTable("Devices"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.DeviceStat", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Bus") - .HasColumnType("longtext"); + b.Property("Bus") + .HasColumnType("longtext"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("Model") - .HasColumnType("longtext"); + b.Property("Model") + .HasColumnType("longtext"); - b.Property("ReportId") - .HasColumnType("int"); + b.Property("ReportId") + .HasColumnType("int"); - b.Property("Revision") - .HasColumnType("longtext"); + b.Property("Revision") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ReportId"); + b.HasIndex("ReportId"); - b.ToTable("DeviceStats"); - }); + b.ToTable("DeviceStats"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Filesystem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Filesystems"); - }); + b.ToTable("Filesystems"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Filter", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Filters"); - }); + b.ToTable("Filters"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Media", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Real") - .HasColumnType("bit"); + b.Property("Real") + .HasColumnType("bit"); - b.Property("Type") - .HasColumnType("longtext"); + b.Property("Type") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Medias"); - }); + b.ToTable("Medias"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.MediaFormat", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("MediaFormats"); - }); + b.ToTable("MediaFormats"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.OperatingSystem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.Property("Version") - .HasColumnType("longtext"); + b.Property("Version") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("OperatingSystems"); - }); + b.ToTable("OperatingSystems"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Partition", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Name") - .HasColumnType("longtext"); + b.Property("Name") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Partitions"); - }); + b.ToTable("Partitions"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.UploadedReport", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("ATAId") - .HasColumnType("int"); + b.Property("ATAId") + .HasColumnType("int"); - b.Property("ATAPIId") - .HasColumnType("int"); + b.Property("ATAPIId") + .HasColumnType("int"); - b.Property("CompactFlash") - .HasColumnType("bit"); + b.Property("CompactFlash") + .HasColumnType("bit"); - b.Property("FireWireId") - .HasColumnType("int"); + b.Property("FireWireId") + .HasColumnType("int"); - b.Property("Manufacturer") - .HasColumnType("longtext"); + b.Property("Manufacturer") + .HasColumnType("longtext"); - b.Property("Model") - .HasColumnType("longtext"); + b.Property("Model") + .HasColumnType("longtext"); - b.Property("MultiMediaCardId") - .HasColumnType("int"); + b.Property("MultiMediaCardId") + .HasColumnType("int"); - b.Property("PCMCIAId") - .HasColumnType("int"); + b.Property("PCMCIAId") + .HasColumnType("int"); - b.Property("Revision") - .HasColumnType("longtext"); + b.Property("Revision") + .HasColumnType("longtext"); - b.Property("SCSIId") - .HasColumnType("int"); + b.Property("SCSIId") + .HasColumnType("int"); - b.Property("SecureDigitalId") - .HasColumnType("int"); + b.Property("SecureDigitalId") + .HasColumnType("int"); - b.Property("Type") - .HasColumnType("int"); + b.Property("Type") + .HasColumnType("int"); - b.Property("USBId") - .HasColumnType("int"); + b.Property("USBId") + .HasColumnType("int"); - b.Property("UploadedWhen") - .HasColumnType("datetime(6)"); + b.Property("UploadedWhen") + .HasColumnType("datetime(6)"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ATAId"); + b.HasIndex("ATAId"); - b.HasIndex("ATAPIId"); + b.HasIndex("ATAPIId"); - b.HasIndex("FireWireId"); + b.HasIndex("FireWireId"); - b.HasIndex("MultiMediaCardId"); + b.HasIndex("MultiMediaCardId"); - b.HasIndex("PCMCIAId"); + b.HasIndex("PCMCIAId"); - b.HasIndex("SCSIId"); + b.HasIndex("SCSIId"); - b.HasIndex("SecureDigitalId"); + b.HasIndex("SecureDigitalId"); - b.HasIndex("USBId"); + b.HasIndex("USBId"); - b.ToTable("Reports"); - }); + b.ToTable("Reports"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.UsbProduct", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("AddedWhen") - .HasColumnType("datetime(6)"); + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); - b.Property("ModifiedWhen") - .HasColumnType("datetime(6)"); + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); - b.Property("Product") - .HasColumnType("longtext"); + b.Property("Product") + .HasColumnType("longtext"); - b.Property("ProductId") - .HasColumnType("int"); + b.Property("ProductId") + .HasColumnType("int"); - b.Property("VendorId") - .HasColumnType("int"); + b.Property("VendorId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ModifiedWhen"); + b.HasIndex("ModifiedWhen"); - b.HasIndex("ProductId"); + b.HasIndex("ProductId"); - b.HasIndex("VendorId"); + b.HasIndex("VendorId"); - b.ToTable("UsbProducts"); - }); + b.ToTable("UsbProducts"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.UsbVendor", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("AddedWhen") - .HasColumnType("datetime(6)"); + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); - b.Property("ModifiedWhen") - .HasColumnType("datetime(6)"); + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); - b.Property("Vendor") - .HasColumnType("longtext"); + b.Property("Vendor") + .HasColumnType("longtext"); - b.Property("VendorId") - .HasColumnType("int"); + b.Property("VendorId") + .HasColumnType("int"); - b.HasKey("Id"); + b.HasKey("Id"); - b.HasIndex("ModifiedWhen"); + b.HasIndex("ModifiedWhen"); - b.HasIndex("VendorId") - .IsUnique(); + b.HasIndex("VendorId") + .IsUnique(); - b.ToTable("UsbVendors"); - }); + b.ToTable("UsbVendors"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Version", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); - b.Property("Count") - .HasColumnType("bigint"); + b.Property("Count") + .HasColumnType("bigint"); - b.Property("Value") - .HasColumnType("longtext"); + b.Property("Value") + .HasColumnType("longtext"); - b.HasKey("Id"); + b.HasKey("Id"); - b.ToTable("Versions"); - }); + b.ToTable("Versions"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") - .WithMany() - .HasForeignKey("ReadCapabilitiesId"); - }); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) - .WithMany("BlockDescriptors") - .HasForeignKey("ScsiModeId"); - }); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) + .WithMany("BlockDescriptors") + .HasForeignKey("ScsiModeId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", null) - .WithMany("DensityCodes") - .HasForeignKey("SscSupportedMediaId"); - }); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", null) + .WithMany("DensityCodes") + .HasForeignKey("SscSupportedMediaId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") - .WithMany() - .HasForeignKey("FeaturesId"); - }); + { + 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.ScsiMode", "ModeSense") + .WithMany() + .HasForeignKey("ModeSenseId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", "MultiMediaDevice") - .WithMany() - .HasForeignKey("MultiMediaDeviceId"); + 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.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") - .WithMany() - .HasForeignKey("SequentialDeviceId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") + .WithMany() + .HasForeignKey("SequentialDeviceId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) - .WithMany("EVPDPages") - .HasForeignKey("ScsiId"); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) + .WithMany("EVPDPages") + .HasForeignKey("ScsiId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) - .WithMany("ModePages") - .HasForeignKey("ScsiModeId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) + .WithMany("ModePages") + .HasForeignKey("ScsiModeId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) - .WithMany("SupportedMediaTypes") - .HasForeignKey("SscId"); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("SupportedMediaTypes") + .HasForeignKey("SscId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) - .WithMany("SupportedMediaTypes") - .HasForeignKey("TestedSequentialMediaId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) + .WithMany("SupportedMediaTypes") + .HasForeignKey("TestedSequentialMediaId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) - .WithMany("SupportedDensities") - .HasForeignKey("SscId"); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("SupportedDensities") + .HasForeignKey("SscId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) - .WithMany("SupportedDensities") - .HasForeignKey("TestedSequentialMediaId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) + .WithMany("SupportedDensities") + .HasForeignKey("TestedSequentialMediaId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", null) - .WithMany("RemovableMedias") - .HasForeignKey("AtaId"); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", null) + .WithMany("RemovableMedias") + .HasForeignKey("AtaId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CHS") - .WithMany() - .HasForeignKey("CHSId"); + 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.Chs", "CurrentCHS") + .WithMany() + .HasForeignKey("CurrentCHSId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", null) - .WithMany("TestedMedia") - .HasForeignKey("MmcId"); + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", null) + .WithMany("TestedMedia") + .HasForeignKey("MmcId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) - .WithMany("RemovableMedias") - .HasForeignKey("ScsiId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) + .WithMany("RemovableMedias") + .HasForeignKey("ScsiId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) - .WithMany("TestedMedia") - .HasForeignKey("SscId"); - }); + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("TestedMedia") + .HasForeignKey("SscId"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.Device", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") - .WithMany() - .HasForeignKey("ATAId"); + { + 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.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); - b.HasOne("DiscImageChef.Server.Models.CompactDiscOffset", "CdOffset") - .WithMany("Devices") - .HasForeignKey("CdOffsetId"); + b.HasOne("DiscImageChef.Server.Models.CompactDiscOffset", "CdOffset") + .WithMany("Devices") + .HasForeignKey("CdOffsetId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") - .WithMany() - .HasForeignKey("FireWireId"); + 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.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") - .WithMany() - .HasForeignKey("PCMCIAId"); + 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.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") - .WithMany() - .HasForeignKey("SecureDigitalId"); + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") - .WithMany() - .HasForeignKey("USBId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.DeviceStat", b => - { - b.HasOne("DiscImageChef.Server.Models.Device", "Report") - .WithMany() - .HasForeignKey("ReportId"); - }); + { + b.HasOne("DiscImageChef.Server.Models.Device", "Report") + .WithMany() + .HasForeignKey("ReportId"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.UploadedReport", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") - .WithMany() - .HasForeignKey("ATAId"); + { + 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.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") - .WithMany() - .HasForeignKey("FireWireId"); + 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.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") - .WithMany() - .HasForeignKey("PCMCIAId"); + 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.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") - .WithMany() - .HasForeignKey("SecureDigitalId"); + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); - b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") - .WithMany() - .HasForeignKey("USBId"); - }); + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); modelBuilder.Entity("DiscImageChef.Server.Models.UsbProduct", b => - { - b.HasOne("DiscImageChef.Server.Models.UsbVendor", "Vendor") - .WithMany("Products") - .HasForeignKey("VendorId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + { + b.HasOne("DiscImageChef.Server.Models.UsbVendor", "Vendor") + .WithMany("Products") + .HasForeignKey("VendorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } } -} +} \ No newline at end of file diff --git a/DiscImageChef.Server/Models/CdOffset.cs b/DiscImageChef.Server/Models/CdOffset.cs index 7871623c..70793e83 100644 --- a/DiscImageChef.Server/Models/CdOffset.cs +++ b/DiscImageChef.Server/Models/CdOffset.cs @@ -32,38 +32,39 @@ using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; using DiscImageChef.CommonTypes.Metadata; namespace DiscImageChef.Server.Models { public class CompactDiscOffset : CdOffset { - public CompactDiscOffset() { } + public CompactDiscOffset() + { + } public CompactDiscOffset(string manufacturer, string model, short offset, int submissions, float agreement) { Manufacturer = manufacturer; - Model = model; - Offset = offset; - Submissions = submissions; - Agreement = agreement; - AddedWhen = ModifiedWhen = DateTime.UtcNow; + Model = model; + Offset = offset; + Submissions = submissions; + Agreement = agreement; + AddedWhen = ModifiedWhen = DateTime.UtcNow; } public CompactDiscOffset(CdOffset offset) { Manufacturer = offset.Manufacturer; - Model = offset.Model; - Offset = offset.Offset; - Submissions = offset.Submissions; - Agreement = offset.Agreement; - AddedWhen = ModifiedWhen = DateTime.UtcNow; + Model = offset.Model; + Offset = offset.Offset; + Submissions = offset.Submissions; + Agreement = offset.Agreement; + AddedWhen = ModifiedWhen = DateTime.UtcNow; } - public int Id { get; set; } + public int Id { get; set; } public DateTime AddedWhen { get; set; } - public DateTime ModifiedWhen { get; set; } + public DateTime ModifiedWhen { get; set; } public virtual ICollection Devices { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Command.cs b/DiscImageChef.Server/Models/Command.cs index fc756d9c..ebb44090 100644 --- a/DiscImageChef.Server/Models/Command.cs +++ b/DiscImageChef.Server/Models/Command.cs @@ -36,9 +36,9 @@ namespace DiscImageChef.Server.Models { public class Command { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } + [Key] public int Id { get; set; } + + public string Name { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Context.cs b/DiscImageChef.Server/Models/Context.cs index efd4327c..8e685804 100644 --- a/DiscImageChef.Server/Models/Context.cs +++ b/DiscImageChef.Server/Models/Context.cs @@ -37,28 +37,32 @@ namespace DiscImageChef.Server.Models { public sealed class DicServerContext : DbContext { - public DbSet Devices { get; set; } - public DbSet Reports { get; set; } - public DbSet Commands { get; set; } - public DbSet DeviceStats { get; set; } - public DbSet Filesystems { get; set; } - public DbSet Filters { get; set; } - public DbSet Medias { get; set; } - public DbSet MediaFormats { get; set; } - public DbSet OperatingSystems { get; set; } - public DbSet Partitions { get; set; } - public DbSet Versions { get; set; } - public DbSet UsbVendors { get; set; } - public DbSet UsbProducts { get; set; } - public DbSet CdOffsets { get; set; } + public DicServerContext() + { + } - public DicServerContext() { } + public DicServerContext(DbContextOptions options) : base(options) + { + } - public DicServerContext(DbContextOptions options) : base(options) { } + public DbSet Devices { get; set; } + public DbSet Reports { get; set; } + public DbSet Commands { get; set; } + public DbSet DeviceStats { get; set; } + public DbSet Filesystems { get; set; } + public DbSet Filters { get; set; } + public DbSet Medias { get; set; } + public DbSet MediaFormats { get; set; } + public DbSet OperatingSystems { get; set; } + public DbSet Partitions { get; set; } + public DbSet Versions { get; set; } + public DbSet UsbVendors { get; set; } + public DbSet UsbProducts { get; set; } + public DbSet CdOffsets { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - if(optionsBuilder.IsConfigured) return; + if (optionsBuilder.IsConfigured) return; var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); @@ -82,7 +86,7 @@ namespace DiscImageChef.Server.Models internal static bool TableExists(string tableName) { - using(var db = new DicServerContext()) + using (var db = new DicServerContext()) { var connection = db.Database.GetDbConnection(); connection.Open(); @@ -91,7 +95,7 @@ namespace DiscImageChef.Server.Models command.CommandText = $"SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=\"{tableName}\""; - var result = (long)command.ExecuteScalar(); + var result = (long) command.ExecuteScalar(); return result != 0; } diff --git a/DiscImageChef.Server/Models/Device.cs b/DiscImageChef.Server/Models/Device.cs index ac02b5b3..4ff0c2d9 100644 --- a/DiscImageChef.Server/Models/Device.cs +++ b/DiscImageChef.Server/Models/Device.cs @@ -32,7 +32,6 @@ using System; using System.ComponentModel; -using System.ComponentModel.DataAnnotations.Schema; using DiscImageChef.CommonTypes.Metadata; namespace DiscImageChef.Server.Models @@ -46,27 +45,27 @@ namespace DiscImageChef.Server.Models public Device(DeviceReportV2 report) { - ATA = report.ATA; - ATAPI = report.ATAPI; - CompactFlash = report.CompactFlash; - FireWire = report.FireWire; - AddedWhen = DateTime.UtcNow; - ModifiedWhen = DateTime.UtcNow; + ATA = report.ATA; + ATAPI = report.ATAPI; + CompactFlash = report.CompactFlash; + FireWire = report.FireWire; + AddedWhen = DateTime.UtcNow; + ModifiedWhen = DateTime.UtcNow; MultiMediaCard = report.MultiMediaCard; - PCMCIA = report.PCMCIA; - SCSI = report.SCSI; - SecureDigital = report.SecureDigital; - USB = report.USB; - Manufacturer = report.Manufacturer; - Model = report.Model; - Revision = report.Revision; - Type = report.Type; + PCMCIA = report.PCMCIA; + SCSI = report.SCSI; + SecureDigital = report.SecureDigital; + USB = report.USB; + Manufacturer = report.Manufacturer; + Model = report.Model; + Revision = report.Revision; + Type = report.Type; } public DateTime AddedWhen { get; set; } - public DateTime? ModifiedWhen { get; set; } + public DateTime? ModifiedWhen { get; set; } public virtual CompactDiscOffset CdOffset { get; set; } - [DefaultValue(0)] - public int OptimalMultipleSectorsRead { get; set; } + + [DefaultValue(0)] public int OptimalMultipleSectorsRead { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/DeviceItem.cs b/DiscImageChef.Server/Models/DeviceItem.cs index 2be4ec8b..24a7fccb 100644 --- a/DiscImageChef.Server/Models/DeviceItem.cs +++ b/DiscImageChef.Server/Models/DeviceItem.cs @@ -35,9 +35,9 @@ namespace DiscImageChef.Server.Models public class DeviceItem { public string Manufacturer { get; set; } - public string Model { get; set; } - public string Revision { get; set; } - public string Bus { get; set; } - public int ReportId { get; set; } + public string Model { get; set; } + public string Revision { get; set; } + public string Bus { get; set; } + public int ReportId { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/DeviceStat.cs b/DiscImageChef.Server/Models/DeviceStat.cs index 21500617..719fbd36 100644 --- a/DiscImageChef.Server/Models/DeviceStat.cs +++ b/DiscImageChef.Server/Models/DeviceStat.cs @@ -36,12 +36,12 @@ namespace DiscImageChef.Server.Models { public class DeviceStat { - [Key] - public int Id { get; set; } - public string Manufacturer { get; set; } - public string Model { get; set; } - public string Revision { get; set; } - public string Bus { get; set; } - public virtual Device Report { get; set; } + [Key] public int Id { get; set; } + + public string Manufacturer { get; set; } + public string Model { get; set; } + public string Revision { get; set; } + public string Bus { get; set; } + public virtual Device Report { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/ErrorViewModel.cs b/DiscImageChef.Server/Models/ErrorViewModel.cs index 3e47becd..7fbd7ccf 100644 --- a/DiscImageChef.Server/Models/ErrorViewModel.cs +++ b/DiscImageChef.Server/Models/ErrorViewModel.cs @@ -1,5 +1,3 @@ -using System; - namespace DiscImageChef.Server.Models { public class ErrorViewModel diff --git a/DiscImageChef.Server/Models/Filesystem.cs b/DiscImageChef.Server/Models/Filesystem.cs index 9bcfb744..c6eb3eb2 100644 --- a/DiscImageChef.Server/Models/Filesystem.cs +++ b/DiscImageChef.Server/Models/Filesystem.cs @@ -36,9 +36,9 @@ namespace DiscImageChef.Server.Models { public class Filesystem { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } + [Key] public int Id { get; set; } + + public string Name { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Filter.cs b/DiscImageChef.Server/Models/Filter.cs index 1d150e66..214b96e9 100644 --- a/DiscImageChef.Server/Models/Filter.cs +++ b/DiscImageChef.Server/Models/Filter.cs @@ -36,9 +36,9 @@ namespace DiscImageChef.Server.Models { public class Filter { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } + [Key] public int Id { get; set; } + + public string Name { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Media.cs b/DiscImageChef.Server/Models/Media.cs index 3fc7d393..feefb42b 100644 --- a/DiscImageChef.Server/Models/Media.cs +++ b/DiscImageChef.Server/Models/Media.cs @@ -36,10 +36,10 @@ namespace DiscImageChef.Server.Models { public class Media { - [Key] - public int Id { get; set; } - public string Type { get; set; } - public bool Real { get; set; } - public long Count { get; set; } + [Key] public int Id { get; set; } + + public string Type { get; set; } + public bool Real { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/MediaFormat.cs b/DiscImageChef.Server/Models/MediaFormat.cs index 83342b81..d9a68b41 100644 --- a/DiscImageChef.Server/Models/MediaFormat.cs +++ b/DiscImageChef.Server/Models/MediaFormat.cs @@ -36,9 +36,9 @@ namespace DiscImageChef.Server.Models { public class MediaFormat { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } + [Key] public int Id { get; set; } + + public string Name { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/MediaItem.cs b/DiscImageChef.Server/Models/MediaItem.cs index 3063e3a6..3d767491 100644 --- a/DiscImageChef.Server/Models/MediaItem.cs +++ b/DiscImageChef.Server/Models/MediaItem.cs @@ -34,8 +34,8 @@ namespace DiscImageChef.Server.Models { public class MediaItem { - public string Type { get; set; } + public string Type { get; set; } public string SubType { get; set; } - public long Count { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/OperatingSystem.cs b/DiscImageChef.Server/Models/OperatingSystem.cs index 3c2b8be8..ba03b27b 100644 --- a/DiscImageChef.Server/Models/OperatingSystem.cs +++ b/DiscImageChef.Server/Models/OperatingSystem.cs @@ -36,10 +36,10 @@ namespace DiscImageChef.Server.Models { public class OperatingSystem { - [Key] - public int Id { get; set; } - public string Name { get; set; } + [Key] public int Id { get; set; } + + public string Name { get; set; } public string Version { get; set; } - public long Count { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Partition.cs b/DiscImageChef.Server/Models/Partition.cs index 83e64ef3..9276ad94 100644 --- a/DiscImageChef.Server/Models/Partition.cs +++ b/DiscImageChef.Server/Models/Partition.cs @@ -36,9 +36,9 @@ namespace DiscImageChef.Server.Models { public class Partition { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } + [Key] public int Id { get; set; } + + public string Name { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/UploadedReport.cs b/DiscImageChef.Server/Models/UploadedReport.cs index 3e818be6..01ceb427 100644 --- a/DiscImageChef.Server/Models/UploadedReport.cs +++ b/DiscImageChef.Server/Models/UploadedReport.cs @@ -44,20 +44,20 @@ namespace DiscImageChef.Server.Models public UploadedReport(DeviceReportV2 report) { - ATA = report.ATA; - ATAPI = report.ATAPI; - CompactFlash = report.CompactFlash; - FireWire = report.FireWire; - UploadedWhen = DateTime.UtcNow; + ATA = report.ATA; + ATAPI = report.ATAPI; + CompactFlash = report.CompactFlash; + FireWire = report.FireWire; + UploadedWhen = DateTime.UtcNow; MultiMediaCard = report.MultiMediaCard; - PCMCIA = report.PCMCIA; - SCSI = report.SCSI; - SecureDigital = report.SecureDigital; - USB = report.USB; - Manufacturer = report.Manufacturer; - Model = report.Model; - Revision = report.Revision; - Type = report.Type; + PCMCIA = report.PCMCIA; + SCSI = report.SCSI; + SecureDigital = report.SecureDigital; + USB = report.USB; + Manufacturer = report.Manufacturer; + Model = report.Model; + Revision = report.Revision; + Type = report.Type; } public DateTime UploadedWhen { get; set; } diff --git a/DiscImageChef.Server/Models/UsbProduct.cs b/DiscImageChef.Server/Models/UsbProduct.cs index 1ad0006e..06ac1b17 100644 --- a/DiscImageChef.Server/Models/UsbProduct.cs +++ b/DiscImageChef.Server/Models/UsbProduct.cs @@ -32,31 +32,32 @@ using System; using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; using Newtonsoft.Json; namespace DiscImageChef.Server.Models { public class UsbProduct { - public UsbProduct() { } + public UsbProduct() + { + } public UsbProduct(UsbVendor vendor, ushort id, string product) { ProductId = id; - Product = product; + Product = product; AddedWhen = ModifiedWhen = DateTime.UtcNow; - Vendor = vendor; + Vendor = vendor; } - [Key] - public int Id { get; set; } - public int ProductId { get; set; } - public string Product { get; set; } + [Key] public int Id { get; set; } + + public int ProductId { get; set; } + public string Product { get; set; } public DateTime AddedWhen { get; set; } public DateTime ModifiedWhen { get; set; } public int VendorId { get; set; } - [JsonIgnore] - public virtual UsbVendor Vendor { get; set; } + + [JsonIgnore] public virtual UsbVendor Vendor { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/UsbVendor.cs b/DiscImageChef.Server/Models/UsbVendor.cs index f01f8989..db065b0f 100644 --- a/DiscImageChef.Server/Models/UsbVendor.cs +++ b/DiscImageChef.Server/Models/UsbVendor.cs @@ -33,30 +33,30 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; using Newtonsoft.Json; namespace DiscImageChef.Server.Models { public class UsbVendor { - public UsbVendor() { } + public UsbVendor() + { + } public UsbVendor(ushort id, string vendor) { - VendorId = id; - Vendor = vendor; + VendorId = id; + Vendor = vendor; AddedWhen = ModifiedWhen = DateTime.UtcNow; } - [Key] - public int Id { get; set; } - public int VendorId { get; set; } - public string Vendor { get; set; } + [Key] public int Id { get; set; } + + public int VendorId { get; set; } + public string Vendor { get; set; } public DateTime AddedWhen { get; set; } public DateTime ModifiedWhen { get; set; } - [JsonIgnore] - public virtual ICollection Products { get; set; } + [JsonIgnore] public virtual ICollection Products { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Version.cs b/DiscImageChef.Server/Models/Version.cs index c94b67ef..952cbebb 100644 --- a/DiscImageChef.Server/Models/Version.cs +++ b/DiscImageChef.Server/Models/Version.cs @@ -36,9 +36,9 @@ namespace DiscImageChef.Server.Models { public class Version { - [Key] - public int Id { get; set; } + [Key] public int Id { get; set; } + public string Value { get; set; } - public long Count { get; set; } + public long Count { get; set; } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Program.cs b/DiscImageChef.Server/Program.cs index 115003db..75222fb7 100644 --- a/DiscImageChef.Server/Program.cs +++ b/DiscImageChef.Server/Program.cs @@ -1,14 +1,11 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using DiscImageChef.CommonTypes.Interop; using DiscImageChef.Server.Models; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; +using Version = DiscImageChef.CommonTypes.Interop.Version; namespace DiscImageChef.Server { @@ -19,68 +16,68 @@ namespace DiscImageChef.Server DateTime start; DateTime end; - System.Console.Clear(); + System.Console.Clear(); - System.Console.Write( - "\u001b[32m . ,,\n" + - "\u001b[32m ;,. '0d.\n" + - "\u001b[32m oc oWd \u001b[31m" + - @"________/\\\\\\\\\___/\\\\\\\\\\\_________/\\\\\\\\\___/\\\\____________/\\\\_" + - "\n\u001b[0m" + - "\u001b[32m ;X. 'WN' \u001b[31m" + - @" _____/\\\////////___\/////\\\///_______/\\\////////___\/\\\\\\________/\\\\\\_" + - "\n\u001b[0m" + - "\u001b[32m oMo cMM: \u001b[31m" + - @" ___/\\\/________________\/\\\________/\\\/____________\/\\\//\\\____/\\\//\\\_" + - "\n\u001b[0m" + - "\u001b[32m ;MM. .MMM; \u001b[31m" + - @" __/\\\__________________\/\\\_______/\\\______________\/\\\\///\\\/\\\/_\/\\\_" + - "\n\u001b[0m" + - "\u001b[32m NMM WMMW \u001b[31m" + - @" _\/\\\__________________\/\\\______\/\\\______________\/\\\__\///\\\/___\/\\\_" + - "\n\u001b[0m" + - "\u001b[32m 'MMM MMMM; \u001b[31m" + - @" _\//\\\_________________\/\\\______\//\\\_____________\/\\\____\///_____\/\\\_" + - "\n\u001b[0m" + - "\u001b[32m ,MMM: dMMMM: \u001b[31m" + - @" __\///\\\_______________\/\\\_______\///\\\___________\/\\\_____________\/\\\_" + - "\n\u001b[0m" + - "\u001b[32m .MMMW. :MMMMM. \u001b[31m" + - @" ____\////\\\\\\\\\___/\\\\\\\\\\\_____\////\\\\\\\\\__\/\\\_____________\/\\\_" + - "\n\u001b[0m" + - "\u001b[32m XMMMW: .:xKNMMMMMMN0d, lMMMMMd \u001b[31m" + - @" _______\/////////___\///////////_________\/////////___\///______________\///__" + - "\n\u001b[0m" + - "\u001b[32m :MMMMMK; cWMNkl:;;;:lxKMXc .0MMMMMO\u001b[0m\n" + - "\u001b[32m ..KMMMMMMNo,. ,OMMMMMMW:,. \u001b[37;1m DiscImageChef Website\u001b[0m\n" + - "\u001b[32m .;d0NMMMMMMMMMMMMMMW0d:' .;lOWMMMMMMMMMMMMMXkl. \u001b[37;1m Version \u001b[0m\u001b[33m{0}\u001b[37;1m-\u001b[0m\u001b[31m{1}\u001b[0m\n" + - "\u001b[32m :KMMMMMMMMMMMMMMMMMMMMMMMMc WMMMMMMMMMMMMMMMMMMMMMMWk'\u001b[0m\n" + - "\u001b[32m ;NMMMMWX0kkkkO0XMMMMMMMMMMM0' dNMMMMMMMMMMW0xl:;,;:oOWMMX; \u001b[37;1m Running under \u001b[35;1m{2}\u001b[37;1m, \u001b[35m{3}-bit\u001b[37;1m in \u001b[35m{4}-bit\u001b[37;1m mode.\u001b[0m\n" + - "\u001b[32m xMMWk:. .c0MMMMMW' OMMMMMM0c'.. .oNMO \u001b[37;1m Using \u001b[33;1m{5}\u001b[37;1m version \u001b[31;1m{6}\u001b[0m\n" + - "\u001b[32m OMNc .MNc oWMMk 'WMMNl. .MMK ;KX.\u001b[0m\n" + - "\u001b[32m xMO WMN ; ., , ': ,MMx lK\u001b[0m\n" + - "\u001b[32m ,Md cMMl .XMMMWWMMMO XMW. :\u001b[0m\n" + - "\u001b[32m Ok xMMl XMMMMMMMMc 0MW,\u001b[0m\n" + - "\u001b[32m 0 oMM0' lMMMMMMMM. :NMN'\u001b[0m\n" + - "\u001b[32m . .0MMKl ;MMMMMMMM oNMWd\u001b[0m\n" + - "\u001b[32m .dNW cMMMMMMMM, XKl\u001b[0m\n" + - "\u001b[32m 0MMMMMMMMK\u001b[0m\n" + - "\u001b[32m ;MMMMMMMMMMO \u001b[37;1m Proudly presented to you by:\u001b[0m\n" + - "\u001b[32m 'WMMMMKxMMMMM0 \u001b[34;1m Natalia Portillo\u001b[0m\n" + - "\u001b[32m oMMMMNc :WMMMMN:\u001b[0m\n" + - "\u001b[32m .dWMMM0; dWMMMMXl. \u001b[37;1m Thanks to all contributors, collaborators, translators, donators and friends.\u001b[0m\n" + - "\u001b[32m .......,cd0WMMNk: c0MMMMMWKkolc:clodc'\u001b[0m\n" + - "\u001b[32m .';loddol:'. ':oxkkOkkxoc,.\u001b[0m\n" + - "\u001b[0m\n", DiscImageChef.CommonTypes.Interop.Version.GetVersion(), - #if DEBUG - "DEBUG" - #else + System.Console.Write( + "\u001b[32m . ,,\n" + + "\u001b[32m ;,. '0d.\n" + + "\u001b[32m oc oWd \u001b[31m" + + @"________/\\\\\\\\\___/\\\\\\\\\\\_________/\\\\\\\\\___/\\\\____________/\\\\_" + + "\n\u001b[0m" + + "\u001b[32m ;X. 'WN' \u001b[31m" + + @" _____/\\\////////___\/////\\\///_______/\\\////////___\/\\\\\\________/\\\\\\_" + + "\n\u001b[0m" + + "\u001b[32m oMo cMM: \u001b[31m" + + @" ___/\\\/________________\/\\\________/\\\/____________\/\\\//\\\____/\\\//\\\_" + + "\n\u001b[0m" + + "\u001b[32m ;MM. .MMM; \u001b[31m" + + @" __/\\\__________________\/\\\_______/\\\______________\/\\\\///\\\/\\\/_\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m NMM WMMW \u001b[31m" + + @" _\/\\\__________________\/\\\______\/\\\______________\/\\\__\///\\\/___\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m 'MMM MMMM; \u001b[31m" + + @" _\//\\\_________________\/\\\______\//\\\_____________\/\\\____\///_____\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m ,MMM: dMMMM: \u001b[31m" + + @" __\///\\\_______________\/\\\_______\///\\\___________\/\\\_____________\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m .MMMW. :MMMMM. \u001b[31m" + + @" ____\////\\\\\\\\\___/\\\\\\\\\\\_____\////\\\\\\\\\__\/\\\_____________\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m XMMMW: .:xKNMMMMMMN0d, lMMMMMd \u001b[31m" + + @" _______\/////////___\///////////_________\/////////___\///______________\///__" + + "\n\u001b[0m" + + "\u001b[32m :MMMMMK; cWMNkl:;;;:lxKMXc .0MMMMMO\u001b[0m\n" + + "\u001b[32m ..KMMMMMMNo,. ,OMMMMMMW:,. \u001b[37;1m DiscImageChef Website\u001b[0m\n" + + "\u001b[32m .;d0NMMMMMMMMMMMMMMW0d:' .;lOWMMMMMMMMMMMMMXkl. \u001b[37;1m Version \u001b[0m\u001b[33m{0}\u001b[37;1m-\u001b[0m\u001b[31m{1}\u001b[0m\n" + + "\u001b[32m :KMMMMMMMMMMMMMMMMMMMMMMMMc WMMMMMMMMMMMMMMMMMMMMMMWk'\u001b[0m\n" + + "\u001b[32m ;NMMMMWX0kkkkO0XMMMMMMMMMMM0' dNMMMMMMMMMMW0xl:;,;:oOWMMX; \u001b[37;1m Running under \u001b[35;1m{2}\u001b[37;1m, \u001b[35m{3}-bit\u001b[37;1m in \u001b[35m{4}-bit\u001b[37;1m mode.\u001b[0m\n" + + "\u001b[32m xMMWk:. .c0MMMMMW' OMMMMMM0c'.. .oNMO \u001b[37;1m Using \u001b[33;1m{5}\u001b[37;1m version \u001b[31;1m{6}\u001b[0m\n" + + "\u001b[32m OMNc .MNc oWMMk 'WMMNl. .MMK ;KX.\u001b[0m\n" + + "\u001b[32m xMO WMN ; ., , ': ,MMx lK\u001b[0m\n" + + "\u001b[32m ,Md cMMl .XMMMWWMMMO XMW. :\u001b[0m\n" + + "\u001b[32m Ok xMMl XMMMMMMMMc 0MW,\u001b[0m\n" + + "\u001b[32m 0 oMM0' lMMMMMMMM. :NMN'\u001b[0m\n" + + "\u001b[32m . .0MMKl ;MMMMMMMM oNMWd\u001b[0m\n" + + "\u001b[32m .dNW cMMMMMMMM, XKl\u001b[0m\n" + + "\u001b[32m 0MMMMMMMMK\u001b[0m\n" + + "\u001b[32m ;MMMMMMMMMMO \u001b[37;1m Proudly presented to you by:\u001b[0m\n" + + "\u001b[32m 'WMMMMKxMMMMM0 \u001b[34;1m Natalia Portillo\u001b[0m\n" + + "\u001b[32m oMMMMNc :WMMMMN:\u001b[0m\n" + + "\u001b[32m .dWMMM0; dWMMMMXl. \u001b[37;1m Thanks to all contributors, collaborators, translators, donators and friends.\u001b[0m\n" + + "\u001b[32m .......,cd0WMMNk: c0MMMMMWKkolc:clodc'\u001b[0m\n" + + "\u001b[32m .';loddol:'. ':oxkkOkkxoc,.\u001b[0m\n" + + "\u001b[0m\n", Version.GetVersion(), +#if DEBUG + "DEBUG" +#else "RELEASE" - #endif - , DiscImageChef.CommonTypes.Interop.DetectOS.GetPlatformName(DiscImageChef.CommonTypes.Interop.DetectOS.GetRealPlatformID()), - Environment.Is64BitOperatingSystem ? 64 : 32, Environment.Is64BitProcess ? 64 : 32, - DiscImageChef.CommonTypes.Interop.DetectOS.IsMono ? "Mono" : ".NET Core", - DiscImageChef.CommonTypes.Interop.DetectOS.IsMono ? DiscImageChef.CommonTypes.Interop.Version.GetMonoVersion() : DiscImageChef.CommonTypes.Interop.Version.GetNetCoreVersion()); +#endif + , DetectOS.GetPlatformName(DetectOS.GetRealPlatformID()), + Environment.Is64BitOperatingSystem ? 64 : 32, Environment.Is64BitProcess ? 64 : 32, + DetectOS.IsMono ? "Mono" : ".NET Core", + DetectOS.IsMono ? Version.GetMonoVersion() : Version.GetNetCoreVersion()); var host = CreateHostBuilder(args).Build(); @@ -97,15 +94,14 @@ namespace DiscImageChef.Server context.Database.Migrate(); end = DateTime.Now; System.Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m", - (end - start).TotalSeconds); - + (end - start).TotalSeconds); } - catch(Exception ex) + catch (Exception ex) { System.Console.WriteLine("\u001b[31;1mCould not open database...\u001b[0m"); - #if DEBUG +#if DEBUG System.Console.WriteLine("\u001b[31;1mException: {0}\u001b[0m", ex.Message); - #endif +#endif return; } } @@ -114,8 +110,10 @@ namespace DiscImageChef.Server host.Run(); } - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) + public static IHostBuilder CreateHostBuilder(string[] args) + { + return Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); + } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Startup.cs b/DiscImageChef.Server/Startup.cs index 6c277d76..2f1f2687 100644 --- a/DiscImageChef.Server/Startup.cs +++ b/DiscImageChef.Server/Startup.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using DiscImageChef.Server.Models; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; @@ -56,8 +51,8 @@ namespace DiscImageChef.Server app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( - name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); + "default", + "{controller=Home}/{action=Index}/{id?}"); }); } } diff --git a/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml b/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml index 6b6bda17..aec00607 100644 --- a/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml +++ b/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
DiscImageChef's code of conduct:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml b/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml index 65d75687..900ced77 100644 --- a/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml +++ b/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
How to contribute to DiscImageChef:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/Changelog.cshtml b/DiscImageChef.Server/Views/Home/Changelog.cshtml index 82cd302b..73d12202 100644 --- a/DiscImageChef.Server/Views/Home/Changelog.cshtml +++ b/DiscImageChef.Server/Views/Home/Changelog.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
DiscImageChef list of changes:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/DONATING.cshtml b/DiscImageChef.Server/Views/Home/DONATING.cshtml index 18538340..d070d374 100644 --- a/DiscImageChef.Server/Views/Home/DONATING.cshtml +++ b/DiscImageChef.Server/Views/Home/DONATING.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
DiscImageChef list of things to be donated:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml b/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml index c29d744d..045564e5 100644 --- a/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml +++ b/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
DiscImageChef's template for issue reports:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml b/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml index b613a629..d4f44b67 100644 --- a/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml +++ b/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
DiscImageChef's template for pull requests:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/TODO.cshtml b/DiscImageChef.Server/Views/Home/TODO.cshtml index db382d34..acc4dc3e 100644 --- a/DiscImageChef.Server/Views/Home/TODO.cshtml +++ b/DiscImageChef.Server/Views/Home/TODO.cshtml @@ -36,7 +36,7 @@ // ****************************************************************************/ }

- @Html.ActionLink("Return to main page.", "Index")
+ @Html.ActionLink("Return to main page.", "Index")
DiscImageChef list of things to do:

@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Report/View.cshtml b/DiscImageChef.Server/Views/Report/View.cshtml index 03c594b5..50db6f5e 100644 --- a/DiscImageChef.Server/Views/Report/View.cshtml +++ b/DiscImageChef.Server/Views/Report/View.cshtml @@ -42,91 +42,91 @@ DiscImageChef Report for @ViewBag.lblModel @ViewBag.lblRevision -@if(ViewBag.UsbItem != null) +@if (ViewBag.UsbItem != null) {
-
- USB characteristics:
- Manufacturer: @ViewBag.UsbItem.Manufacturer
- Product: @ViewBag.UsbItem.Product
- Vendor ID: @ViewBag.UsbItem.VendorDescription
+
+ USB characteristics:
+ Manufacturer: @ViewBag.UsbItem.Manufacturer
+ Product: @ViewBag.UsbItem.Product
+ Vendor ID: @ViewBag.UsbItem.VendorDescription
Product ID: @ViewBag.UsbItem.ProductDescription
} -@if(ViewBag.FireWireItem != null) +@if (ViewBag.FireWireItem != null) {
-
- FireWire characteristics:
- Manufacturer: @ViewBag.FireWire.Manufacturer
- Product: @ViewBag.FireWire.Product
- Vendor ID: @ViewBag.FireWire.VendorDescription
+
+ FireWire characteristics:
+ Manufacturer: @ViewBag.FireWire.Manufacturer
+ Product: @ViewBag.FireWire.Product
+ Vendor ID: @ViewBag.FireWire.VendorDescription
Product ID: @ViewBag.FireWire.ProductDescription
} -@if(ViewBag.PcmciaItem != null) +@if (ViewBag.PcmciaItem != null) {
-
- PCMCIA characteristics:
- Manufacturer: @ViewBag.PcmciaItem.Manufacturer
- Product: @ViewBag.PcmciaItem.ProductName
- Manufacturer code: @ViewBag.PcmciaItem.VendorDescription
- Card code: @ViewBag.PcmciaItem.CardCode
- Compliance: @ViewBag.PcmciaItem.Compliance
- @if(ViewBag.repPcmciaTuples != null) +
+ PCMCIA characteristics:
+ Manufacturer: @ViewBag.PcmciaItem.Manufacturer
+ Product: @ViewBag.PcmciaItem.ProductName
+ Manufacturer code: @ViewBag.PcmciaItem.VendorDescription
+ Card code: @ViewBag.PcmciaItem.CardCode
+ Compliance: @ViewBag.PcmciaItem.Compliance
+ @if (ViewBag.repPcmciaTuples != null) { - foreach(KeyValuePair kvp in ViewBag.repPcmciaTuples) + foreach (KeyValuePair kvp in ViewBag.repPcmciaTuples) { - @kvp.Key: @kvp.Value
+ @kvp.Key: @kvp.Value
} }
} -@if(ViewBag.AtaItem != null) +@if (ViewBag.AtaItem != null) {
-
+
@ViewBag.AtaItem characteristics: -
- @ViewBag.lblAtaDeviceType
- @foreach(KeyValuePair kvp in ViewBag.repAtaTwo) +
+ @ViewBag.lblAtaDeviceType
+ @foreach (KeyValuePair kvp in ViewBag.repAtaTwo) { - @kvp.Key: @kvp.Value
+ @kvp.Key: @kvp.Value
} -
- @foreach(string item in ViewBag.repAtaOne) +
+ @foreach (string item in ViewBag.repAtaOne) { - @Html.Raw(item)
+ @Html.Raw(item)
}
} -@if(ViewBag.repScsi != null) +@if (ViewBag.repScsi != null) {
-
- SCSI characteristics:
- Vendor: @ViewBag.lblScsiVendor
- Product: @ViewBag.lblScsiProduct
- Revision: @ViewBag.lblScsiRevision
- @foreach(string item in ViewBag.repScsi) +
+ SCSI characteristics:
+ Vendor: @ViewBag.lblScsiVendor
+ Product: @ViewBag.lblScsiProduct
+ Revision: @ViewBag.lblScsiRevision
+ @foreach (string item in ViewBag.repScsi) { - @Html.Raw(item)
+ @Html.Raw(item)
} - @if(ViewBag.repModeSense != null) + @if (ViewBag.repModeSense != null) {
-
SCSI mode sense pages: +
SCSI mode sense pages: - @foreach(KeyValuePair kvp in ViewBag.repModeSense) + @foreach (KeyValuePair kvp in ViewBag.repModeSense) {
Mode Contents
@@ -140,16 +140,16 @@ DiscImageChef Report for
} - @if(ViewBag.repEvpd != null) + @if (ViewBag.repEvpd != null) {
-
SCSI extended vital product data pages: +
SCSI extended vital product data pages: - @foreach(KeyValuePair kvp in ViewBag.repEvpd) + @foreach (KeyValuePair kvp in ViewBag.repEvpd) {
EVPD Contents
@@ -163,66 +163,66 @@ DiscImageChef Report for
} - @if(ViewBag.repScsiMmcMode != null) + @if (ViewBag.repScsiMmcMode != null) {
-
SCSI CD-ROM capabilities:
- @foreach(string item in ViewBag.repScsiMmcMode) +
SCSI CD-ROM capabilities:
+ @foreach (string item in ViewBag.repScsiMmcMode) { - @Html.Raw(item)
+ @Html.Raw(item)
}
} - @if(ViewBag.repScsiMmcFeatures != null) + @if (ViewBag.repScsiMmcFeatures != null) {
-
SCSI MMC features:
- @foreach(string item in ViewBag.repScsiMmcFeatures) +
SCSI MMC features:
+ @foreach (string item in ViewBag.repScsiMmcFeatures) { - @Html.Raw(item)
+ @Html.Raw(item)
}
} - @if(ViewBag.divScsiSscVisible == true) + @if (ViewBag.divScsiSscVisible == true) {
-
SCSI Streaming device capabilities:
- Block size granularity: @ViewBag.lblScsiSscGranularity
- Maximum block length: @ViewBag.lblScsiSscMaxBlock bytes
- Minimum block length: @ViewBag.lblScsiSscMinBlock bytes
- @if(ViewBag.repScsiSscDensities != null) +
SCSI Streaming device capabilities:
+ Block size granularity: @ViewBag.lblScsiSscGranularity
+ Maximum block length: @ViewBag.lblScsiSscMaxBlock bytes
+ Minimum block length: @ViewBag.lblScsiSscMinBlock bytes
+ @if (ViewBag.repScsiSscDensities != null) { - foreach(SupportedDensity density in ViewBag.repScsiSscDensities) + foreach (SupportedDensity density in ViewBag.repScsiSscDensities) { -
+
Information for supported density with primary code @($"{density.PrimaryCode:X2h}") and secondary code @($"{density.SecondaryCode:X2h}") -
- Drive can write this density: @density.Writable
- Duplicate density: @density.Duplicate
- Default density: @density.DefaultDensity
+
+ Drive can write this density: @density.Writable
+ Duplicate density: @density.Duplicate
+ Default density: @density.DefaultDensity
Density has @density.BitsPerMm bits per mm, with @density.Tracks tracks in a @density.Width mm width tape - Name: @density.Name
- Organization: @density.Organization
- Description: @density.Description
- Maximum capacity: @density.Capacity megabytes
+ Name: @density.Name
+ Organization: @density.Organization
+ Description: @density.Description
+ Maximum capacity: @density.Capacity megabytes
} } - @if(ViewBag.repScsiSscMedias != null) + @if (ViewBag.repScsiSscMedias != null) { - foreach(SscSupportedMedia media in ViewBag.repScsiSscMedias) + foreach (SscSupportedMedia media in ViewBag.repScsiSscMedias) { -
+
Information for supported media with type code @($"{media.MediumType:X2h}") -
+
Media is @media.Length m long in a @media.Width mm width tape - Name: @media.Name
- Organization: @media.Organization
- Description: @media.Description
+ Name: @media.Name
+ Organization: @media.Organization
+ Description: @media.Description
} } @@ -230,35 +230,35 @@ DiscImageChef Report for }
} -@if(ViewBag.repTestedMedia != null) +@if (ViewBag.repTestedMedia != null) {
-
Tested media:
- @foreach(string item in ViewBag.repTestedMedia) +
Tested media:
+ @foreach (string item in ViewBag.repTestedMedia) { - @Html.Raw(item)
+ @Html.Raw(item)
}
} -@if(ViewBag.repMMC != null) +@if (ViewBag.repMMC != null) {
-
- MultiMediaCard device:
- @foreach(string item in ViewBag.repMMC) +
+ MultiMediaCard device:
+ @foreach (string item in ViewBag.repMMC) { - @Html.Raw(item)
+ @Html.Raw(item)
}
} -@if(ViewBag.repSD != null) +@if (ViewBag.repSD != null) {
-
- SecureDigital device:
- @foreach(string item in ViewBag.repSD) +
+ SecureDigital device:
+ @foreach (string item in ViewBag.repSD) { - @Html.Raw(item)
+ @Html.Raw(item)
}
} diff --git a/DiscImageChef.Server/Views/Shared/Error.cshtml b/DiscImageChef.Server/Views/Shared/Error.cshtml index a1e04783..4d96f6a7 100644 --- a/DiscImageChef.Server/Views/Shared/Error.cshtml +++ b/DiscImageChef.Server/Views/Shared/Error.cshtml @@ -22,4 +22,4 @@ It can result in displaying sensitive information from exceptions to end users. For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development and restarting the app. -

+

\ No newline at end of file diff --git a/DiscImageChef.Server/Views/Shared/_Layout.cshtml b/DiscImageChef.Server/Views/Shared/_Layout.cshtml index 364e9c28..ed840c09 100644 --- a/DiscImageChef.Server/Views/Shared/_Layout.cshtml +++ b/DiscImageChef.Server/Views/Shared/_Layout.cshtml @@ -35,23 +35,23 @@ - @switch(DateTime.UtcNow.DayOfYear) + @switch (DateTime.UtcNow.DayOfYear) { // 24th January, Macintosh launch case 24: + rel="stylesheet" type="text/css"/> + rel="stylesheet" type="text/css"/> break; default: + rel="stylesheet" type="text/css"/> + rel="stylesheet" type="text/css"/> break; } - + @ViewBag.Title - + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Stats/Index.cshtml b/DiscImageChef.Server/Views/Stats/Index.cshtml index 9573c575..1919c2df 100644 --- a/DiscImageChef.Server/Views/Stats/Index.cshtml +++ b/DiscImageChef.Server/Views/Stats/Index.cshtml @@ -1,9 +1,4 @@ -@using System.Collections @using DiscImageChef.CommonTypes.Metadata -@using DiscImageChef.Server.Models -@using Highsoft.Web.Mvc.Charts -@using Chart = Highsoft.Web.Mvc.Charts.Chart -@using Filter = DiscImageChef.Server.Models.Filter @{ // /*************************************************************************** // The Disc Image Chef @@ -51,7 +46,7 @@ Server version @ViewBag.Version
-@if(ViewBag.repOperatingSystems != null) +@if (ViewBag.repOperatingSystems != null) {
@@ -129,7 +124,7 @@ id="osCollapse">
- @foreach(NameValueStats os in ViewBag.repOperatingSystems) + @foreach (NameValueStats os in ViewBag.repOperatingSystems) {
@@ -142,10 +137,10 @@ -
+
} -@if(ViewBag.repVersions != null) +@if (ViewBag.repVersions != null) {
@@ -175,7 +170,7 @@ id="versionsCollapse">
- @foreach(NameValueStats version in ViewBag.repVersions) + @foreach (NameValueStats version in ViewBag.repVersions) {
@@ -188,10 +183,10 @@ -
+
} -@if(ViewBag.repCommands != null) +@if (ViewBag.repCommands != null) {
@@ -221,7 +216,7 @@ id="commandsCollapse">
- @foreach(Command command in ViewBag.repCommands) + @foreach (Command command in ViewBag.repCommands) { - @foreach(Filter filter in ViewBag.repFilters) + @foreach (Filter filter in ViewBag.repFilters) { - @foreach(MediaFormat format in ViewBag.repMediaImages) + @foreach (MediaFormat format in ViewBag.repMediaImages) { - @foreach(Partition partition in ViewBag.repPartitions) + @foreach (Partition partition in ViewBag.repPartitions) { - @foreach(Filesystem filesystem in ViewBag.repFilesystems) + @foreach (Filesystem filesystem in ViewBag.repFilesystems) { - @foreach(MediaItem media in ViewBag.repVirtualMedia) + @foreach (MediaItem media in ViewBag.repVirtualMedia) { - @foreach(MediaItem media in ViewBag.repRealMedia) + @foreach (MediaItem media in ViewBag.repRealMedia) { - @foreach(DeviceItem device in ViewBag.repDevices) + @foreach (DeviceItem device in ViewBag.repDevices) { } @@ -657,7 +654,7 @@ @{ -/* string highChartsTitleColor; + /* string highChartsTitleColor; string highChartsDataLabelColor; switch(DateTime.UtcNow.DayOfYear) diff --git a/DiscImageChef.Server/Views/_ViewImports.cshtml b/DiscImageChef.Server/Views/_ViewImports.cshtml index 773d1403..bd476068 100644 --- a/DiscImageChef.Server/Views/_ViewImports.cshtml +++ b/DiscImageChef.Server/Views/_ViewImports.cshtml @@ -1,3 +1,3 @@ @using DiscImageChef.Server @using DiscImageChef.Server.Models -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers \ No newline at end of file diff --git a/DiscImageChef.Server/Views/_ViewStart.cshtml b/DiscImageChef.Server/Views/_ViewStart.cshtml index a5f10045..1af6e494 100644 --- a/DiscImageChef.Server/Views/_ViewStart.cshtml +++ b/DiscImageChef.Server/Views/_ViewStart.cshtml @@ -1,3 +1,3 @@ @{ Layout = "_Layout"; -} +} \ No newline at end of file
@@ -234,10 +229,10 @@ -
+
} -@if(ViewBag.repFilters != null) +@if (ViewBag.repFilters != null) {
@@ -271,7 +266,7 @@
Filter Times
@@ -289,7 +284,7 @@ } -@if(ViewBag.repMediaImages != null) +@if (ViewBag.repMediaImages != null) {
@@ -323,7 +318,7 @@
Media image format Times
@@ -341,7 +336,7 @@ } -@if(ViewBag.repPartitions != null) +@if (ViewBag.repPartitions != null) {
@@ -375,7 +370,7 @@
Partitioning scheme Times
@@ -393,7 +388,7 @@ } -@if(ViewBag.repFilesystems != null) +@if (ViewBag.repFilesystems != null) {
@@ -427,7 +422,7 @@
Filesystem name Times
@@ -445,7 +440,7 @@ } -@if(ViewBag.repVirtualMedia != null) +@if (ViewBag.repVirtualMedia != null) {
@@ -480,7 +475,7 @@
Logical type Times
@@ -501,7 +496,7 @@ } -@if(ViewBag.repRealMedia != null) +@if (ViewBag.repRealMedia != null) {
@@ -536,7 +531,7 @@
Logical type Times
@@ -557,7 +552,7 @@ } -@if(ViewBag.repDevices != null) +@if (ViewBag.repDevices != null) {
@@ -623,7 +618,7 @@
Bus Report
@@ -639,12 +634,14 @@ @device.Bus - @if(device.ReportId != 0) + @if (device.ReportId != 0) { @Html.ActionLink("Yes", "View", "Report", new {id = device.ReportId}, new {target = "_blank"}) } else - { No } + { + No + }