Refactor.

This commit is contained in:
2019-11-02 21:37:09 +00:00
parent f653af2059
commit d4020f1a3f
52 changed files with 4207 additions and 4095 deletions

View File

@@ -47,24 +47,25 @@ namespace DiscImageChef.Server
/// <param name="deviceType">SCSI peripheral device type</param>
/// <param name="scsiOneValue">List to put values on</param>
/// <param name="modePages">List to put key=value pairs on</param>
public static void Report(ScsiMode modeSense, string vendor,
PeripheralDeviceTypes deviceType,
ref List<string> scsiOneValue, ref Dictionary<string, string> modePages)
public static void Report(ScsiMode modeSense, string vendor,
PeripheralDeviceTypes deviceType,
ref List<string> scsiOneValue, ref Dictionary<string, string> 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<string, string> newModePages = new Dictionary<string, string>();
foreach(KeyValuePair<string, string> kvp in modePages)
var newModePages = new Dictionary<string, string>();
foreach (var kvp in modePages)
newModePages.Add(kvp.Key,
string.IsNullOrWhiteSpace(kvp.Value) ? "Undecoded" : kvp.Value.Replace("\n", "<br/>"));
string.IsNullOrWhiteSpace(kvp.Value) ? "Undecoded" : kvp.Value.Replace("\n", "<br/>"));
modePages = newModePages;
}