Convert to switch expression.

This commit is contained in:
2022-11-13 19:59:23 +00:00
parent 02d6222ae9
commit f0bee36d9e
12 changed files with 1455 additions and 2504 deletions

View File

@@ -590,49 +590,46 @@ public static class Subchannel
public static string DecodeMcn(byte[] q) => $"{q[1]:X2}{q[2]:X2}{q[3]:X2}{q[4]:X2}{q[5]:X2}{q[6]:X2}{q[7] >> 4:X}"; public static string DecodeMcn(byte[] q) => $"{q[1]:X2}{q[2]:X2}{q[3]:X2}{q[4]:X2}{q[5]:X2}{q[6]:X2}{q[7] >> 4:X}";
public static byte GetIsrcCode(char c) public static byte GetIsrcCode(char c) => c switch
{ {
switch(c) '0' => 0x00,
{ '1' => 0x01,
case '0': return 0x00; '2' => 0x02,
case '1': return 0x01; '3' => 0x03,
case '2': return 0x02; '4' => 0x04,
case '3': return 0x03; '5' => 0x05,
case '4': return 0x04; '6' => 0x06,
case '5': return 0x05; '7' => 0x07,
case '6': return 0x06; '8' => 0x08,
case '7': return 0x07; '9' => 0x09,
case '8': return 0x08; 'A' => 0x11,
case '9': return 0x09; 'B' => 0x12,
case 'A': return 0x11; 'C' => 0x13,
case 'B': return 0x12; 'D' => 0x14,
case 'C': return 0x13; 'E' => 0x15,
case 'D': return 0x14; 'F' => 0x16,
case 'E': return 0x15; 'G' => 0x17,
case 'F': return 0x16; 'H' => 0x18,
case 'G': return 0x17; 'I' => 0x19,
case 'H': return 0x18; 'J' => 0x1A,
case 'I': return 0x19; 'K' => 0x1B,
case 'J': return 0x1A; 'L' => 0x1C,
case 'K': return 0x1B; 'M' => 0x1D,
case 'L': return 0x1C; 'N' => 0x1E,
case 'M': return 0x1D; 'O' => 0x1F,
case 'N': return 0x1E; 'P' => 0x20,
case 'O': return 0x1F; 'Q' => 0x21,
case 'P': return 0x20; 'R' => 0x22,
case 'Q': return 0x21; 'S' => 0x23,
case 'R': return 0x22; 'T' => 0x24,
case 'S': return 0x23; 'U' => 0x25,
case 'T': return 0x24; 'V' => 0x26,
case 'U': return 0x25; 'W' => 0x27,
case 'V': return 0x26; 'X' => 0x28,
case 'W': return 0x27; 'Y' => 0x29,
case 'X': return 0x28; 'Z' => 0x2A,
case 'Y': return 0x29; _ => 0x00
case 'Z': return 0x2A; };
default: return 0x00;
}
}
public static byte[] Generate(int sector, uint trackSequence, int pregap, int trackStart, byte flags, byte index) public static byte[] Generate(int sector, uint trackSequence, int pregap, int trackStart, byte flags, byte index)
{ {

View File

@@ -477,23 +477,12 @@ public static class PFI
PhysicalFormatInformation decoded = pfi.Value; PhysicalFormatInformation decoded = pfi.Value;
var sb = new StringBuilder(); var sb = new StringBuilder();
string sizeString; string sizeString = decoded.DiscSize switch
switch(decoded.DiscSize)
{ {
case DVDSize.Eighty: DVDSize.Eighty => "80mm",
sizeString = "80mm"; DVDSize.OneTwenty => "120mm",
_ => $"unknown size identifier {decoded.DiscSize}"
break; };
case DVDSize.OneTwenty:
sizeString = "120mm";
break;
default:
sizeString = $"unknown size identifier {decoded.DiscSize}";
break;
}
var categorySentence = "Disc is a {0} {1} version {2}"; var categorySentence = "Disc is a {0} {1} version {2}";
@@ -960,13 +949,11 @@ public static class PFI
public static string Prettify(byte[] response, MediaType mediaType) => Prettify(Decode(response, mediaType)); public static string Prettify(byte[] response, MediaType mediaType) => Prettify(Decode(response, mediaType));
public static string ManufacturerFromDVDRAM(string manufacturerId) public static string ManufacturerFromDVDRAM(string manufacturerId) => manufacturerId switch
{ {
switch(manufacturerId) _ =>
{ ManufacturerFromDVDPlusID(manufacturerId)
default: return ManufacturerFromDVDPlusID(manufacturerId); };
}
}
[SuppressMessage("ReSharper", "StringLiteralTypo")] [SuppressMessage("ReSharper", "StringLiteralTypo")]
public static string ManufacturerFromDVDPlusID(string manufacturerId) public static string ManufacturerFromDVDPlusID(string manufacturerId)

View File

@@ -185,71 +185,25 @@ public static class PRI
{ {
if((decoded.OPCSuggestedCode & 0xF) > 0) if((decoded.OPCSuggestedCode & 0xF) > 0)
{ {
double recordingPower = 0; double recordingPower = (decoded.OPCSuggestedCode & 0xF) switch
switch(decoded.OPCSuggestedCode & 0xF)
{ {
case 1: 1 => 7.0,
recordingPower = 7.0; 2 => 7.5,
3 => 8.0,
break; 4 => 8.5,
case 2: 5 => 9.0,
recordingPower = 7.5; 6 => 9.5,
7 => 10.0,
break; 8 => 10.5,
case 3: 9 => 11.0,
recordingPower = 8.0; 10 => 11.5,
11 => 12.0,
break; 12 => 12.5,
case 4: 13 => 13.0,
recordingPower = 8.5; 14 => 13.5,
15 => 14.0,
break; _ => 0
case 5: };
recordingPower = 9.0;
break;
case 6:
recordingPower = 9.5;
break;
case 7:
recordingPower = 10.0;
break;
case 8:
recordingPower = 10.5;
break;
case 9:
recordingPower = 11.0;
break;
case 10:
recordingPower = 11.5;
break;
case 11:
recordingPower = 12.0;
break;
case 12:
recordingPower = 12.5;
break;
case 13:
recordingPower = 13.0;
break;
case 14:
recordingPower = 13.5;
break;
case 15:
recordingPower = 14.0;
break;
}
sb.AppendFormat("Recommended recording power is {0} mW", recordingPower).AppendLine(); sb.AppendFormat("Recommended recording power is {0} mW", recordingPower).AppendLine();
} }
@@ -258,71 +212,25 @@ public static class PRI
if((decoded.WaveLengthCode & 0xF) > 0) if((decoded.WaveLengthCode & 0xF) > 0)
{ {
double erasingPower = 0; double erasingPower = (decoded.WaveLengthCode & 0xF) switch
switch(decoded.WaveLengthCode & 0xF)
{ {
case 1: 1 => 0.38,
erasingPower = 0.38; 2 => 0.40,
3 => 0.42,
break; 4 => 0.44,
case 2: 5 => 0.46,
erasingPower = 0.40; 6 => 0.48,
7 => 0.50,
break; 8 => 0.52,
case 3: 9 => 0.54,
erasingPower = 0.42; 10 => 0.56,
11 => 0.58,
break; 12 => 0.60,
case 4: 13 => 0.62,
erasingPower = 0.44; 14 => 0.64,
15 => 0.66,
break; _ => 0
case 5: };
erasingPower = 0.46;
break;
case 6:
erasingPower = 0.48;
break;
case 7:
erasingPower = 0.50;
break;
case 8:
erasingPower = 0.52;
break;
case 9:
erasingPower = 0.54;
break;
case 10:
erasingPower = 0.56;
break;
case 11:
erasingPower = 0.58;
break;
case 12:
erasingPower = 0.60;
break;
case 13:
erasingPower = 0.62;
break;
case 14:
erasingPower = 0.64;
break;
case 15:
erasingPower = 0.66;
break;
}
sb.AppendFormat("Recommended erasing power ratio is {0} ε", erasingPower).AppendLine(); sb.AppendFormat("Recommended erasing power ratio is {0} ε", erasingPower).AppendLine();
} }
@@ -333,138 +241,49 @@ public static class PRI
{ {
if((decoded.OPCSuggestedCode & 0xF) > 0) if((decoded.OPCSuggestedCode & 0xF) > 0)
{ {
double recordingPower = 0; double recordingPower = (decoded.OPCSuggestedCode & 0xF) switch
switch(decoded.OPCSuggestedCode & 0xF)
{ {
case 1: 1 => 6.0,
recordingPower = 6.0; 2 => 6.5,
3 => 7.0,
break; 4 => 7.5,
case 2: 5 => 8.0,
recordingPower = 6.5; 6 => 8.5,
7 => 9.0,
break; 8 => 9.5,
case 3: 9 => 10.0,
recordingPower = 7.0; 10 => 10.5,
11 => 11.0,
break; 12 => 11.5,
case 4: 13 => 12.0,
recordingPower = 7.5; _ => 0
};
break;
case 5:
recordingPower = 8.0;
break;
case 6:
recordingPower = 8.5;
break;
case 7:
recordingPower = 9.0;
break;
case 8:
recordingPower = 9.5;
break;
case 9:
recordingPower = 10.0;
break;
case 10:
recordingPower = 10.5;
break;
case 11:
recordingPower = 11.0;
break;
case 12:
recordingPower = 11.5;
break;
case 13:
recordingPower = 12.0;
break;
}
sb.AppendFormat("Recommended recording power is {0} mW", recordingPower).AppendLine(); sb.AppendFormat("Recommended recording power is {0} mW", recordingPower).AppendLine();
} }
if(decoded.WaveLengthCode > 0) if(decoded.WaveLengthCode > 0)
{ {
var wavelength = 0; int wavelength = decoded.WaveLengthCode switch
switch(decoded.WaveLengthCode)
{ {
case 1: 1 => 645,
wavelength = 645; 2 => 646,
3 => 647,
break; 4 => 648,
case 2: 5 => 649,
wavelength = 646; 6 => 650,
7 => 651,
break; 8 => 652,
case 3: 9 => 653,
wavelength = 647; 10 => 654,
11 => 655,
break; 12 => 656,
case 4: 13 => 657,
wavelength = 648; 14 => 658,
15 => 659,
break; 16 => 660,
case 5: _ => 0
wavelength = 649; };
break;
case 6:
wavelength = 650;
break;
case 7:
wavelength = 651;
break;
case 8:
wavelength = 652;
break;
case 9:
wavelength = 653;
break;
case 10:
wavelength = 654;
break;
case 11:
wavelength = 655;
break;
case 12:
wavelength = 656;
break;
case 13:
wavelength = 657;
break;
case 14:
wavelength = 658;
break;
case 15:
wavelength = 659;
break;
case 16:
wavelength = 660;
break;
}
sb.AppendFormat("Recommended recording power is {0} mW", wavelength).AppendLine(); sb.AppendFormat("Recommended recording power is {0} mW", wavelength).AppendLine();
} }

View File

@@ -129,75 +129,27 @@ public static partial class Decoders
cid.ProductRevision & 0x0F).AppendLine(); cid.ProductRevision & 0x0F).AppendLine();
sb.AppendFormat("\tProduct serial number: {0}", cid.ProductSerialNumber).AppendLine(); sb.AppendFormat("\tProduct serial number: {0}", cid.ProductSerialNumber).AppendLine();
var year = "";
switch(cid.ManufacturingDate & 0x0F) string year = (cid.ManufacturingDate & 0x0F) switch
{ {
case 0: 0 => "1997 or 2013",
year = "1997 or 2013"; 1 => "1998 or 2014",
2 => "1999 or 2015",
break; 3 => "2000 or 2016",
case 1: 4 => "2001 or 2017",
year = "1998 or 2014"; 5 => "2002 or 2018",
6 => "2003 or 2019",
break; 7 => "2004 or 2020",
case 2: 8 => "2005 or 2021",
year = "1999 or 2015"; 9 => "2006 or 2022",
10 => "2007 or 2023",
break; 11 => "2008 or 2024",
case 3: 12 => "2009 or 2025",
year = "2000 or 2016"; 13 => "2010",
14 => "2011",
break; 15 => "2012",
case 4: _ => ""
year = "2001 or 2017"; };
break;
case 5:
year = "2002 or 2018";
break;
case 6:
year = "2003 or 2019";
break;
case 7:
year = "2004 or 2020";
break;
case 8:
year = "2005 or 2021";
break;
case 9:
year = "2006 or 2022";
break;
case 10:
year = "2007 or 2023";
break;
case 11:
year = "2008 or 2024";
break;
case 12:
year = "2009 or 2025";
break;
case 13:
year = "2010";
break;
case 14:
year = "2011";
break;
case 15:
year = "2012";
break;
}
sb.AppendFormat("\tDevice manufactured month {0} of {1}", (cid.ManufacturingDate & 0xF0) >> 4, year). sb.AppendFormat("\tDevice manufactured month {0} of {1}", (cid.ManufacturingDate & 0xF0) >> 4, year).
AppendLine(); AppendLine();

View File

@@ -217,73 +217,26 @@ public static partial class Decoders
break; break;
} }
switch((csd.TAAC & 0x78) >> 3) multiplier = ((csd.TAAC & 0x78) >> 3) switch
{ {
case 0: 0 => 0,
multiplier = 0; 1 => 1,
2 => 1.2,
break; 3 => 1.3,
case 1: 4 => 1.5,
multiplier = 1; 5 => 2,
6 => 2.5,
break; 7 => 3,
case 2: 8 => 3.5,
multiplier = 1.2; 9 => 4,
10 => 4.5,
break; 11 => 5,
case 3: 12 => 5.5,
multiplier = 1.3; 13 => 6,
14 => 7,
break; 15 => 8,
case 4: _ => multiplier
multiplier = 1.5; };
break;
case 5:
multiplier = 2;
break;
case 6:
multiplier = 2.5;
break;
case 7:
multiplier = 3;
break;
case 8:
multiplier = 3.5;
break;
case 9:
multiplier = 4;
break;
case 10:
multiplier = 4.5;
break;
case 11:
multiplier = 5;
break;
case 12:
multiplier = 5.5;
break;
case 13:
multiplier = 6;
break;
case 14:
multiplier = 7;
break;
case 15:
multiplier = 8;
break;
}
double result = unitFactor * multiplier; double result = unitFactor * multiplier;
sb.AppendFormat("\tAsynchronous data access time is {0}{1}", result, unit).AppendLine(); sb.AppendFormat("\tAsynchronous data access time is {0}{1}", result, unit).AppendLine();
@@ -317,73 +270,26 @@ public static partial class Decoders
break; break;
} }
switch((csd.Speed & 0x78) >> 3) multiplier = ((csd.Speed & 0x78) >> 3) switch
{ {
case 0: 0 => 0,
multiplier = 0; 1 => 1,
2 => 1.2,
break; 3 => 1.3,
case 1: 4 => 1.5,
multiplier = 1; 5 => 2,
6 => 2.6,
break; 7 => 3,
case 2: 8 => 3.5,
multiplier = 1.2; 9 => 4,
10 => 4.5,
break; 11 => 5.2,
case 3: 12 => 5.5,
multiplier = 1.3; 13 => 6,
14 => 7,
break; 15 => 8,
case 4: _ => multiplier
multiplier = 1.5; };
break;
case 5:
multiplier = 2;
break;
case 6:
multiplier = 2.6;
break;
case 7:
multiplier = 3;
break;
case 8:
multiplier = 3.5;
break;
case 9:
multiplier = 4;
break;
case 10:
multiplier = 4.5;
break;
case 11:
multiplier = 5.2;
break;
case 12:
multiplier = 5.5;
break;
case 13:
multiplier = 6;
break;
case 14:
multiplier = 7;
break;
case 15:
multiplier = 8;
break;
}
result = unitFactor * multiplier; result = unitFactor * multiplier;
sb.AppendFormat("\tDevice's clock frequency: {0}{1}", result, unit).AppendLine(); sb.AppendFormat("\tDevice's clock frequency: {0}{1}", result, unit).AppendLine();

View File

@@ -254,18 +254,16 @@ public static class EVPD
public static string PrettifyPage_81(byte[] pageResponse) => PrettifyPage_81(DecodePage_81(pageResponse)); public static string PrettifyPage_81(byte[] pageResponse) => PrettifyPage_81(DecodePage_81(pageResponse));
public static string DefinitionToString(ScsiDefinitions definition) public static string DefinitionToString(ScsiDefinitions definition) => definition switch
{ {
switch(definition) ScsiDefinitions.Current => "",
{ ScsiDefinitions.CCS => "CCS",
case ScsiDefinitions.Current: return ""; ScsiDefinitions.SCSI1 => "SCSI-1",
case ScsiDefinitions.CCS: return "CCS"; ScsiDefinitions.SCSI2 => "SCSI-2",
case ScsiDefinitions.SCSI1: return "SCSI-1"; ScsiDefinitions.SCSI3 => "SCSI-3",
case ScsiDefinitions.SCSI2: return "SCSI-2"; _ => $"Unknown definition code {
case ScsiDefinitions.SCSI3: return "SCSI-3"; (byte)definition}"
default: return $"Unknown definition code {(byte)definition}"; };
}
}
public static string PrettifyPage_81(Page_81? modePage) public static string PrettifyPage_81(Page_81? modePage)
{ {
@@ -416,21 +414,12 @@ public static class EVPD
Array.Copy(pageResponse, position + 4, descriptor.Binary, 0, descriptor.Length); Array.Copy(pageResponse, position + 4, descriptor.Binary, 0, descriptor.Length);
switch(descriptor.CodeSet) descriptor.ASCII = descriptor.CodeSet switch
{ {
case IdentificationCodeSet.ASCII: IdentificationCodeSet.ASCII => StringHandlers.CToString(descriptor.Binary),
descriptor.ASCII = StringHandlers.CToString(descriptor.Binary); IdentificationCodeSet.UTF8 => Encoding.UTF8.GetString(descriptor.Binary),
_ => ""
break; };
case IdentificationCodeSet.UTF8:
descriptor.ASCII = Encoding.UTF8.GetString(descriptor.Binary);
break;
default:
descriptor.ASCII = "";
break;
}
position += 4 + descriptor.Length; position += 4 + descriptor.Length;
descriptors.Add(descriptor); descriptors.Add(descriptor);
@@ -485,67 +474,23 @@ public static class EVPD
if(descriptor.PIV) if(descriptor.PIV)
{ {
string protocol; string protocol = descriptor.ProtocolIdentifier switch
switch(descriptor.ProtocolIdentifier)
{ {
case ProtocolIdentifiers.ADT: ProtocolIdentifiers.ADT => "Automation/Drive Interface Transport",
protocol = "Automation/Drive Interface Transport"; ProtocolIdentifiers.ATA => "AT Attachment Interface (ATA/ATAPI)",
ProtocolIdentifiers.FibreChannel => "Fibre Channel",
break; ProtocolIdentifiers.Firewire => "IEEE 1394",
case ProtocolIdentifiers.ATA: ProtocolIdentifiers.iSCSI => "Internet SCSI",
protocol = "AT Attachment Interface (ATA/ATAPI)"; ProtocolIdentifiers.NoProtocol => "no specific",
ProtocolIdentifiers.PCIe => "PCI Express",
break; ProtocolIdentifiers.RDMAP => "SCSI Remote Direct Memory Access",
case ProtocolIdentifiers.FibreChannel: ProtocolIdentifiers.SAS => "Serial Attachment SCSI",
protocol = "Fibre Channel"; ProtocolIdentifiers.SCSI => "Parallel SCSI",
ProtocolIdentifiers.SCSIe => "SCSI over PCI Express",
break; ProtocolIdentifiers.SSA => "SSA",
case ProtocolIdentifiers.Firewire: ProtocolIdentifiers.UAS => "USB Attached SCSI",
protocol = "IEEE 1394"; _ => $"unknown code {(byte)descriptor.ProtocolIdentifier}"
};
break;
case ProtocolIdentifiers.iSCSI:
protocol = "Internet SCSI";
break;
case ProtocolIdentifiers.NoProtocol:
protocol = "no specific";
break;
case ProtocolIdentifiers.PCIe:
protocol = "PCI Express";
break;
case ProtocolIdentifiers.RDMAP:
protocol = "SCSI Remote Direct Memory Access";
break;
case ProtocolIdentifiers.SAS:
protocol = "Serial Attachment SCSI";
break;
case ProtocolIdentifiers.SCSI:
protocol = "Parallel SCSI";
break;
case ProtocolIdentifiers.SCSIe:
protocol = "SCSI over PCI Express";
break;
case ProtocolIdentifiers.SSA:
protocol = "SSA";
break;
case ProtocolIdentifiers.UAS:
protocol = "USB Attached SCSI";
break;
default:
protocol = $"unknown code {(byte)descriptor.ProtocolIdentifier}";
break;
}
sb.AppendFormat("\tDescriptor referes to {0} protocol", protocol).AppendLine(); sb.AppendFormat("\tDescriptor referes to {0} protocol", protocol).AppendLine();
} }
@@ -1014,8 +959,8 @@ public static class EVPD
break; break;
default: default:
sb.AppendFormat("\tIdentifier has unknown association with code {0}", sb.AppendFormat("\tIdentifier has unknown association with code {0}", (byte)descriptor.Association).
(byte)descriptor.Association).AppendLine(); AppendLine();
break; break;
} }

View File

@@ -354,14 +354,13 @@ public static class DiscInformation
if(response.Length < 12) if(response.Length < 12)
return null; return null;
switch(response[2] & 0xE0) return (response[2] & 0xE0) switch
{ {
case 0x00: return Prettify000b(Decode000b(response)); 0x00 => Prettify000b(Decode000b(response)),
case 0x20: return Prettify001b(Decode001b(response)); 0x20 => Prettify001b(Decode001b(response)),
case 0x40: return Prettify010b(Decode010b(response)); 0x40 => Prettify010b(Decode010b(response)),
} _ => null
};
return null;
} }
public struct StandardDiscInformation public struct StandardDiscInformation

File diff suppressed because it is too large Load Diff

View File

@@ -187,14 +187,14 @@ public static class Sense
if((sense[0] & 0x70) != 0x70) if((sense[0] & 0x70) != 0x70)
return sense.Length != 4 ? SenseType.Invalid : SenseType.StandardSense; return sense.Length != 4 ? SenseType.Invalid : SenseType.StandardSense;
switch(sense[0] & 0x0F) return (sense[0] & 0x0F) switch
{ {
case 0: return SenseType.ExtendedSenseFixedCurrent; 0 => SenseType.ExtendedSenseFixedCurrent,
case 1: return SenseType.ExtendedSenseFixedPast; 1 => SenseType.ExtendedSenseFixedPast,
case 2: return SenseType.ExtendedSenseDescriptorCurrent; 2 => SenseType.ExtendedSenseDescriptorCurrent,
case 3: return SenseType.ExtendedSenseDescriptorPast; 3 => SenseType.ExtendedSenseDescriptorPast,
default: return SenseType.Unknown; _ => SenseType.Unknown
} };
} }
public static StandardSense? DecodeStandard(byte[] sense) public static StandardSense? DecodeStandard(byte[] sense)
@@ -593,28 +593,25 @@ public static class Sense
public static string PrettifyDescriptor00(byte[] descriptor) => public static string PrettifyDescriptor00(byte[] descriptor) =>
PrettifyDescriptor00(DecodeDescriptor00(descriptor)); PrettifyDescriptor00(DecodeDescriptor00(descriptor));
public static string GetSenseKey(SenseKeys key) public static string GetSenseKey(SenseKeys key) => key switch
{ {
switch(key) SenseKeys.AbortedCommand => "ABORTED COMMAND",
{ SenseKeys.BlankCheck => "BLANK CHECK",
case SenseKeys.AbortedCommand: return "ABORTED COMMAND"; SenseKeys.CopyAborted => "COPY ABORTED",
case SenseKeys.BlankCheck: return "BLANK CHECK"; SenseKeys.DataProtect => "DATA PROTECT",
case SenseKeys.CopyAborted: return "COPY ABORTED"; SenseKeys.Equal => "EQUAL",
case SenseKeys.DataProtect: return "DATA PROTECT"; SenseKeys.HardwareError => "HARDWARE ERROR",
case SenseKeys.Equal: return "EQUAL"; SenseKeys.IllegalRequest => "ILLEGAL REQUEST",
case SenseKeys.HardwareError: return "HARDWARE ERROR"; SenseKeys.MediumError => "MEDIUM ERROR",
case SenseKeys.IllegalRequest: return "ILLEGAL REQUEST"; SenseKeys.Miscompare => "MISCOMPARE",
case SenseKeys.MediumError: return "MEDIUM ERROR"; SenseKeys.NoSense => "NO SENSE",
case SenseKeys.Miscompare: return "MISCOMPARE"; SenseKeys.PrivateUse => "PRIVATE USE",
case SenseKeys.NoSense: return "NO SENSE"; SenseKeys.RecoveredError => "RECOVERED ERROR",
case SenseKeys.PrivateUse: return "PRIVATE USE"; SenseKeys.Completed => "COMPLETED",
case SenseKeys.RecoveredError: return "RECOVERED ERROR"; SenseKeys.UnitAttention => "UNIT ATTENTION",
case SenseKeys.Completed: return "COMPLETED"; SenseKeys.VolumeOverflow => "VOLUME OVERFLOW",
case SenseKeys.UnitAttention: return "UNIT ATTENTION"; _ => "UNKNOWN"
case SenseKeys.VolumeOverflow: return "VOLUME OVERFLOW"; };
default: return "UNKNOWN";
}
}
[SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "InconsistentNaming")]
public static string GetSenseDescription(byte ASC, byte ASCQ) public static string GetSenseDescription(byte ASC, byte ASCQ)
@@ -1431,11 +1428,11 @@ public static class Sense
break; break;
case 0x40: case 0x40:
switch(ASCQ) return ASCQ switch
{ {
case 0x00: return "RAM FAILURE"; 0x00 => "RAM FAILURE",
default: return $"DIAGNOSTIC FAILURE ON COMPONENT {ASCQ:X2}h"; _ => $"DIAGNOSTIC FAILURE ON COMPONENT {ASCQ:X2}h"
} };
case 0x41: case 0x41:
switch(ASCQ) switch(ASCQ)
{ {

File diff suppressed because it is too large Load Diff

View File

@@ -209,73 +209,26 @@ public static partial class Decoders
break; break;
} }
switch((csd.TAAC & 0x78) >> 3) multiplier = ((csd.TAAC & 0x78) >> 3) switch
{ {
case 0: 0 => 0,
multiplier = 0; 1 => 1,
2 => 1.2,
break; 3 => 1.3,
case 1: 4 => 1.5,
multiplier = 1; 5 => 2,
6 => 2.5,
break; 7 => 3,
case 2: 8 => 3.5,
multiplier = 1.2; 9 => 4,
10 => 4.5,
break; 11 => 5,
case 3: 12 => 5.5,
multiplier = 1.3; 13 => 6,
14 => 7,
break; 15 => 8,
case 4: _ => multiplier
multiplier = 1.5; };
break;
case 5:
multiplier = 2;
break;
case 6:
multiplier = 2.5;
break;
case 7:
multiplier = 3;
break;
case 8:
multiplier = 3.5;
break;
case 9:
multiplier = 4;
break;
case 10:
multiplier = 4.5;
break;
case 11:
multiplier = 5;
break;
case 12:
multiplier = 5.5;
break;
case 13:
multiplier = 6;
break;
case 14:
multiplier = 7;
break;
case 15:
multiplier = 8;
break;
}
double result = unitFactor * multiplier; double result = unitFactor * multiplier;
sb.AppendFormat("\tAsynchronous data access time is {0}{1}", result, unit).AppendLine(); sb.AppendFormat("\tAsynchronous data access time is {0}{1}", result, unit).AppendLine();
@@ -309,73 +262,26 @@ public static partial class Decoders
break; break;
} }
switch((csd.Speed & 0x78) >> 3) multiplier = ((csd.Speed & 0x78) >> 3) switch
{ {
case 0: 0 => 0,
multiplier = 0; 1 => 1,
2 => 1.2,
break; 3 => 1.3,
case 1: 4 => 1.5,
multiplier = 1; 5 => 2,
6 => 2.6,
break; 7 => 3,
case 2: 8 => 3.5,
multiplier = 1.2; 9 => 4,
10 => 4.5,
break; 11 => 5.2,
case 3: 12 => 5.5,
multiplier = 1.3; 13 => 6,
14 => 7,
break; 15 => 8,
case 4: _ => multiplier
multiplier = 1.5; };
break;
case 5:
multiplier = 2;
break;
case 6:
multiplier = 2.6;
break;
case 7:
multiplier = 3;
break;
case 8:
multiplier = 3.5;
break;
case 9:
multiplier = 4;
break;
case 10:
multiplier = 4.5;
break;
case 11:
multiplier = 5.2;
break;
case 12:
multiplier = 5.5;
break;
case 13:
multiplier = 6;
break;
case 14:
multiplier = 7;
break;
case 15:
multiplier = 8;
break;
}
result = unitFactor * multiplier; result = unitFactor * multiplier;
sb.AppendFormat("\tDevice's transfer speed: {0}{1}", result, unit).AppendLine(); sb.AppendFormat("\tDevice's transfer speed: {0}{1}", result, unit).AppendLine();

View File

@@ -138,23 +138,12 @@ public static class SS
SecuritySector decoded = ss.Value; SecuritySector decoded = ss.Value;
var sb = new StringBuilder(); var sb = new StringBuilder();
string sizeString; string sizeString = decoded.DiscSize switch
switch(decoded.DiscSize)
{ {
case DVDSize.Eighty: DVDSize.Eighty => "80mm",
sizeString = "80mm"; DVDSize.OneTwenty => "120mm",
_ => $"unknown size identifier {decoded.DiscSize}"
break; };
case DVDSize.OneTwenty:
sizeString = "120mm";
break;
default:
sizeString = $"unknown size identifier {decoded.DiscSize}";
break;
}
const string categorySentence = "Disc is a {0} {1} version {2}"; const string categorySentence = "Disc is a {0} {1} version {2}";