mirror of
https://github.com/aaru-dps/Aaru.Decoders.git
synced 2025-12-16 19:24:32 +00:00
Convert to switch expression.
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
35
DVD/PFI.cs
35
DVD/PFI.cs
@@ -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)
|
||||
|
||||
331
DVD/PRI.cs
331
DVD/PRI.cs
@@ -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();
|
||||
}
|
||||
|
||||
88
MMC/CID.cs
88
MMC/CID.cs
@@ -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();
|
||||
|
||||
174
MMC/CSD.cs
174
MMC/CSD.cs
@@ -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();
|
||||
|
||||
125
SCSI/EVPD.cs
125
SCSI/EVPD.cs
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
1607
SCSI/VendorString.cs
1607
SCSI/VendorString.cs
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
|
||||
23
Xbox/SS.cs
23
Xbox/SS.cs
@@ -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}";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user