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 byte GetIsrcCode(char c)
{
switch(c)
{
case '0': return 0x00;
case '1': return 0x01;
case '2': return 0x02;
case '3': return 0x03;
case '4': return 0x04;
case '5': return 0x05;
case '6': return 0x06;
case '7': return 0x07;
case '8': return 0x08;
case '9': return 0x09;
case 'A': return 0x11;
case 'B': return 0x12;
case 'C': return 0x13;
case 'D': return 0x14;
case 'E': return 0x15;
case 'F': return 0x16;
case 'G': return 0x17;
case 'H': return 0x18;
case 'I': return 0x19;
case 'J': return 0x1A;
case 'K': return 0x1B;
case 'L': return 0x1C;
case 'M': return 0x1D;
case 'N': return 0x1E;
case 'O': return 0x1F;
case 'P': return 0x20;
case 'Q': return 0x21;
case 'R': return 0x22;
case 'S': return 0x23;
case 'T': return 0x24;
case 'U': return 0x25;
case 'V': return 0x26;
case 'W': return 0x27;
case 'X': return 0x28;
case 'Y': return 0x29;
case 'Z': return 0x2A;
default: return 0x00;
}
}
public static byte GetIsrcCode(char c) => c switch
{
'0' => 0x00,
'1' => 0x01,
'2' => 0x02,
'3' => 0x03,
'4' => 0x04,
'5' => 0x05,
'6' => 0x06,
'7' => 0x07,
'8' => 0x08,
'9' => 0x09,
'A' => 0x11,
'B' => 0x12,
'C' => 0x13,
'D' => 0x14,
'E' => 0x15,
'F' => 0x16,
'G' => 0x17,
'H' => 0x18,
'I' => 0x19,
'J' => 0x1A,
'K' => 0x1B,
'L' => 0x1C,
'M' => 0x1D,
'N' => 0x1E,
'O' => 0x1F,
'P' => 0x20,
'Q' => 0x21,
'R' => 0x22,
'S' => 0x23,
'T' => 0x24,
'U' => 0x25,
'V' => 0x26,
'W' => 0x27,
'X' => 0x28,
'Y' => 0x29,
'Z' => 0x2A,
_ => 0x00
};
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;
var sb = new StringBuilder();
string sizeString;
switch(decoded.DiscSize)
{
case DVDSize.Eighty:
sizeString = "80mm";
break;
case DVDSize.OneTwenty:
sizeString = "120mm";
break;
default:
sizeString = $"unknown size identifier {decoded.DiscSize}";
break;
}
string sizeString = decoded.DiscSize switch
{
DVDSize.Eighty => "80mm",
DVDSize.OneTwenty => "120mm",
_ => $"unknown size identifier {decoded.DiscSize}"
};
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 ManufacturerFromDVDRAM(string manufacturerId)
{
switch(manufacturerId)
{
default: return ManufacturerFromDVDPlusID(manufacturerId);
}
}
public static string ManufacturerFromDVDRAM(string manufacturerId) => manufacturerId switch
{
_ =>
ManufacturerFromDVDPlusID(manufacturerId)
};
[SuppressMessage("ReSharper", "StringLiteralTypo")]
public static string ManufacturerFromDVDPlusID(string manufacturerId)

View File

@@ -185,71 +185,25 @@ public static class PRI
{
if((decoded.OPCSuggestedCode & 0xF) > 0)
{
double recordingPower = 0;
switch(decoded.OPCSuggestedCode & 0xF)
{
case 1:
recordingPower = 7.0;
break;
case 2:
recordingPower = 7.5;
break;
case 3:
recordingPower = 8.0;
break;
case 4:
recordingPower = 8.5;
break;
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;
}
double recordingPower = (decoded.OPCSuggestedCode & 0xF) switch
{
1 => 7.0,
2 => 7.5,
3 => 8.0,
4 => 8.5,
5 => 9.0,
6 => 9.5,
7 => 10.0,
8 => 10.5,
9 => 11.0,
10 => 11.5,
11 => 12.0,
12 => 12.5,
13 => 13.0,
14 => 13.5,
15 => 14.0,
_ => 0
};
sb.AppendFormat("Recommended recording power is {0} mW", recordingPower).AppendLine();
}
@@ -258,71 +212,25 @@ public static class PRI
if((decoded.WaveLengthCode & 0xF) > 0)
{
double erasingPower = 0;
switch(decoded.WaveLengthCode & 0xF)
{
case 1:
erasingPower = 0.38;
break;
case 2:
erasingPower = 0.40;
break;
case 3:
erasingPower = 0.42;
break;
case 4:
erasingPower = 0.44;
break;
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;
}
double erasingPower = (decoded.WaveLengthCode & 0xF) switch
{
1 => 0.38,
2 => 0.40,
3 => 0.42,
4 => 0.44,
5 => 0.46,
6 => 0.48,
7 => 0.50,
8 => 0.52,
9 => 0.54,
10 => 0.56,
11 => 0.58,
12 => 0.60,
13 => 0.62,
14 => 0.64,
15 => 0.66,
_ => 0
};
sb.AppendFormat("Recommended erasing power ratio is {0} ε", erasingPower).AppendLine();
}
@@ -333,138 +241,49 @@ public static class PRI
{
if((decoded.OPCSuggestedCode & 0xF) > 0)
{
double recordingPower = 0;
switch(decoded.OPCSuggestedCode & 0xF)
{
case 1:
recordingPower = 6.0;
break;
case 2:
recordingPower = 6.5;
break;
case 3:
recordingPower = 7.0;
break;
case 4:
recordingPower = 7.5;
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;
}
double recordingPower = (decoded.OPCSuggestedCode & 0xF) switch
{
1 => 6.0,
2 => 6.5,
3 => 7.0,
4 => 7.5,
5 => 8.0,
6 => 8.5,
7 => 9.0,
8 => 9.5,
9 => 10.0,
10 => 10.5,
11 => 11.0,
12 => 11.5,
13 => 12.0,
_ => 0
};
sb.AppendFormat("Recommended recording power is {0} mW", recordingPower).AppendLine();
}
if(decoded.WaveLengthCode > 0)
{
var wavelength = 0;
switch(decoded.WaveLengthCode)
{
case 1:
wavelength = 645;
break;
case 2:
wavelength = 646;
break;
case 3:
wavelength = 647;
break;
case 4:
wavelength = 648;
break;
case 5:
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;
}
int wavelength = decoded.WaveLengthCode switch
{
1 => 645,
2 => 646,
3 => 647,
4 => 648,
5 => 649,
6 => 650,
7 => 651,
8 => 652,
9 => 653,
10 => 654,
11 => 655,
12 => 656,
13 => 657,
14 => 658,
15 => 659,
16 => 660,
_ => 0
};
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();
sb.AppendFormat("\tProduct serial number: {0}", cid.ProductSerialNumber).AppendLine();
var year = "";
switch(cid.ManufacturingDate & 0x0F)
{
case 0:
year = "1997 or 2013";
break;
case 1:
year = "1998 or 2014";
break;
case 2:
year = "1999 or 2015";
break;
case 3:
year = "2000 or 2016";
break;
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;
}
string year = (cid.ManufacturingDate & 0x0F) switch
{
0 => "1997 or 2013",
1 => "1998 or 2014",
2 => "1999 or 2015",
3 => "2000 or 2016",
4 => "2001 or 2017",
5 => "2002 or 2018",
6 => "2003 or 2019",
7 => "2004 or 2020",
8 => "2005 or 2021",
9 => "2006 or 2022",
10 => "2007 or 2023",
11 => "2008 or 2024",
12 => "2009 or 2025",
13 => "2010",
14 => "2011",
15 => "2012",
_ => ""
};
sb.AppendFormat("\tDevice manufactured month {0} of {1}", (cid.ManufacturingDate & 0xF0) >> 4, year).
AppendLine();

View File

@@ -217,73 +217,26 @@ public static partial class Decoders
break;
}
switch((csd.TAAC & 0x78) >> 3)
{
case 0:
multiplier = 0;
break;
case 1:
multiplier = 1;
break;
case 2:
multiplier = 1.2;
break;
case 3:
multiplier = 1.3;
break;
case 4:
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;
}
multiplier = ((csd.TAAC & 0x78) >> 3) switch
{
0 => 0,
1 => 1,
2 => 1.2,
3 => 1.3,
4 => 1.5,
5 => 2,
6 => 2.5,
7 => 3,
8 => 3.5,
9 => 4,
10 => 4.5,
11 => 5,
12 => 5.5,
13 => 6,
14 => 7,
15 => 8,
_ => multiplier
};
double result = unitFactor * multiplier;
sb.AppendFormat("\tAsynchronous data access time is {0}{1}", result, unit).AppendLine();
@@ -317,73 +270,26 @@ public static partial class Decoders
break;
}
switch((csd.Speed & 0x78) >> 3)
{
case 0:
multiplier = 0;
break;
case 1:
multiplier = 1;
break;
case 2:
multiplier = 1.2;
break;
case 3:
multiplier = 1.3;
break;
case 4:
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;
}
multiplier = ((csd.Speed & 0x78) >> 3) switch
{
0 => 0,
1 => 1,
2 => 1.2,
3 => 1.3,
4 => 1.5,
5 => 2,
6 => 2.6,
7 => 3,
8 => 3.5,
9 => 4,
10 => 4.5,
11 => 5.2,
12 => 5.5,
13 => 6,
14 => 7,
15 => 8,
_ => multiplier
};
result = unitFactor * multiplier;
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 DefinitionToString(ScsiDefinitions definition)
{
switch(definition)
{
case ScsiDefinitions.Current: return "";
case ScsiDefinitions.CCS: return "CCS";
case ScsiDefinitions.SCSI1: return "SCSI-1";
case ScsiDefinitions.SCSI2: return "SCSI-2";
case ScsiDefinitions.SCSI3: return "SCSI-3";
default: return $"Unknown definition code {(byte)definition}";
}
}
public static string DefinitionToString(ScsiDefinitions definition) => definition switch
{
ScsiDefinitions.Current => "",
ScsiDefinitions.CCS => "CCS",
ScsiDefinitions.SCSI1 => "SCSI-1",
ScsiDefinitions.SCSI2 => "SCSI-2",
ScsiDefinitions.SCSI3 => "SCSI-3",
_ => $"Unknown definition code {
(byte)definition}"
};
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);
switch(descriptor.CodeSet)
{
case IdentificationCodeSet.ASCII:
descriptor.ASCII = StringHandlers.CToString(descriptor.Binary);
break;
case IdentificationCodeSet.UTF8:
descriptor.ASCII = Encoding.UTF8.GetString(descriptor.Binary);
break;
default:
descriptor.ASCII = "";
break;
}
descriptor.ASCII = descriptor.CodeSet switch
{
IdentificationCodeSet.ASCII => StringHandlers.CToString(descriptor.Binary),
IdentificationCodeSet.UTF8 => Encoding.UTF8.GetString(descriptor.Binary),
_ => ""
};
position += 4 + descriptor.Length;
descriptors.Add(descriptor);
@@ -485,67 +474,23 @@ public static class EVPD
if(descriptor.PIV)
{
string protocol;
switch(descriptor.ProtocolIdentifier)
{
case ProtocolIdentifiers.ADT:
protocol = "Automation/Drive Interface Transport";
break;
case ProtocolIdentifiers.ATA:
protocol = "AT Attachment Interface (ATA/ATAPI)";
break;
case ProtocolIdentifiers.FibreChannel:
protocol = "Fibre Channel";
break;
case ProtocolIdentifiers.Firewire:
protocol = "IEEE 1394";
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;
}
string protocol = descriptor.ProtocolIdentifier switch
{
ProtocolIdentifiers.ADT => "Automation/Drive Interface Transport",
ProtocolIdentifiers.ATA => "AT Attachment Interface (ATA/ATAPI)",
ProtocolIdentifiers.FibreChannel => "Fibre Channel",
ProtocolIdentifiers.Firewire => "IEEE 1394",
ProtocolIdentifiers.iSCSI => "Internet SCSI",
ProtocolIdentifiers.NoProtocol => "no specific",
ProtocolIdentifiers.PCIe => "PCI Express",
ProtocolIdentifiers.RDMAP => "SCSI Remote Direct Memory Access",
ProtocolIdentifiers.SAS => "Serial Attachment SCSI",
ProtocolIdentifiers.SCSI => "Parallel SCSI",
ProtocolIdentifiers.SCSIe => "SCSI over PCI Express",
ProtocolIdentifiers.SSA => "SSA",
ProtocolIdentifiers.UAS => "USB Attached SCSI",
_ => $"unknown code {(byte)descriptor.ProtocolIdentifier}"
};
sb.AppendFormat("\tDescriptor referes to {0} protocol", protocol).AppendLine();
}
@@ -1014,8 +959,8 @@ public static class EVPD
break;
default:
sb.AppendFormat("\tIdentifier has unknown association with code {0}",
(byte)descriptor.Association).AppendLine();
sb.AppendFormat("\tIdentifier has unknown association with code {0}", (byte)descriptor.Association).
AppendLine();
break;
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -209,73 +209,26 @@ public static partial class Decoders
break;
}
switch((csd.TAAC & 0x78) >> 3)
{
case 0:
multiplier = 0;
break;
case 1:
multiplier = 1;
break;
case 2:
multiplier = 1.2;
break;
case 3:
multiplier = 1.3;
break;
case 4:
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;
}
multiplier = ((csd.TAAC & 0x78) >> 3) switch
{
0 => 0,
1 => 1,
2 => 1.2,
3 => 1.3,
4 => 1.5,
5 => 2,
6 => 2.5,
7 => 3,
8 => 3.5,
9 => 4,
10 => 4.5,
11 => 5,
12 => 5.5,
13 => 6,
14 => 7,
15 => 8,
_ => multiplier
};
double result = unitFactor * multiplier;
sb.AppendFormat("\tAsynchronous data access time is {0}{1}", result, unit).AppendLine();
@@ -309,73 +262,26 @@ public static partial class Decoders
break;
}
switch((csd.Speed & 0x78) >> 3)
{
case 0:
multiplier = 0;
break;
case 1:
multiplier = 1;
break;
case 2:
multiplier = 1.2;
break;
case 3:
multiplier = 1.3;
break;
case 4:
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;
}
multiplier = ((csd.Speed & 0x78) >> 3) switch
{
0 => 0,
1 => 1,
2 => 1.2,
3 => 1.3,
4 => 1.5,
5 => 2,
6 => 2.6,
7 => 3,
8 => 3.5,
9 => 4,
10 => 4.5,
11 => 5.2,
12 => 5.5,
13 => 6,
14 => 7,
15 => 8,
_ => multiplier
};
result = unitFactor * multiplier;
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;
var sb = new StringBuilder();
string sizeString;
switch(decoded.DiscSize)
{
case DVDSize.Eighty:
sizeString = "80mm";
break;
case DVDSize.OneTwenty:
sizeString = "120mm";
break;
default:
sizeString = $"unknown size identifier {decoded.DiscSize}";
break;
}
string sizeString = decoded.DiscSize switch
{
DVDSize.Eighty => "80mm",
DVDSize.OneTwenty => "120mm",
_ => $"unknown size identifier {decoded.DiscSize}"
};
const string categorySentence = "Disc is a {0} {1} version {2}";