REFACTOR: All refactor in DiscImageChef.Decoders.

This commit is contained in:
2017-12-22 02:04:18 +00:00
parent 7f829422a8
commit 49144eeb01
148 changed files with 2606 additions and 1939 deletions

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x00: Drive Operation Mode page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x01: Read-write error recovery page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x01: Read error recovery page for MultiMedia Devices

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x02: Disconnect-reconnect page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x03: Format device page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x04: Rigid disk drive geometry page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x05: Flexible disk page
@@ -263,18 +267,15 @@ namespace DiscImageChef.Decoders.SCSI
break;
case 1:
sb.Append("\tPin 34 indicates drive is ready when active ");
if((page.Pin34 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin34 & 0x08) == 0x08 ? "high" : "low");
break;
case 2:
sb.Append("\tPin 34 indicates disk has changed when active ");
if((page.Pin34 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin34 & 0x08) == 0x08 ? "high" : "low");
break;
default:
sb.AppendFormat("\tPin 34 indicates unknown function {0} when active ", page.Pin34 & 0x07);
if((page.Pin34 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin34 & 0x08) == 0x08 ? "high" : "low");
break;
}
@@ -285,23 +286,19 @@ namespace DiscImageChef.Decoders.SCSI
break;
case 1:
sb.Append("\tPin 4 indicates drive is in use when active ");
if((page.Pin4 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low");
break;
case 2:
sb.Append("\tPin 4 indicates eject when active ");
if((page.Pin4 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low");
break;
case 3:
sb.Append("\tPin 4 indicates head load when active ");
if((page.Pin4 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low");
break;
default:
sb.AppendFormat("\tPin 4 indicates unknown function {0} when active ", page.Pin4 & 0x07);
if((page.Pin4 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low");
break;
}
@@ -312,8 +309,7 @@ namespace DiscImageChef.Decoders.SCSI
break;
default:
sb.AppendFormat("\tPin 2 indicates unknown function {0} when active ", page.Pin2 & 0x07);
if((page.Pin2 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin2 & 0x08) == 0x08 ? "high" : "low");
break;
}
@@ -324,13 +320,11 @@ namespace DiscImageChef.Decoders.SCSI
break;
case 1:
sb.Append("\tPin 1 indicates disk change reset when active ");
if((page.Pin1 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin1 & 0x08) == 0x08 ? "high" : "low");
break;
default:
sb.AppendFormat("\tPin 1 indicates unknown function {0} when active ", page.Pin1 & 0x07);
if((page.Pin1 & 0x08) == 0x08) sb.Append("high");
else sb.Append("low");
sb.Append((page.Pin1 & 0x08) == 0x08 ? "high" : "low");
break;
}

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x06: Optical memory page

View File

@@ -30,10 +30,15 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "NotAccessedField.Global")]
public static partial class Modes
{
#region Mode Page 0x07: Verify error recovery page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x07: Verify error recovery page for MultiMedia Devices

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x08: Caching page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x0A: Control mode page
@@ -391,9 +395,7 @@ namespace DiscImageChef.Decoders.SCSI
public static ModePage_0A_S01? DecodeModePage_0A_S01(byte[] pageResponse)
{
if(pageResponse == null) return null;
if((pageResponse[0] & 0x40) != 0x40) return null;
if((pageResponse?[0] & 0x40) != 0x40) return null;
if((pageResponse[0] & 0x3F) != 0x0A) return null;

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x0B: Medium types supported page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x0D: CD-ROM parameteres page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x0E: CD-ROM audio control parameters page
@@ -147,8 +151,9 @@ namespace DiscImageChef.Decoders.SCSI
sb.AppendLine("SCSI CD-ROM audio control parameters page:");
if(page.PS) sb.AppendLine("\tParameters can be saved");
if(page.Immed) sb.AppendLine("\tDrive will return from playback command immediately");
else sb.AppendLine("\tDrive will return from playback command when playback ends");
sb.AppendLine(page.Immed
? "\tDrive will return from playback command immediately"
: "\tDrive will return from playback command when playback ends");
if(page.SOTC) sb.AppendLine("\tDrive will stop playback on track end");
if(page.APRVal)

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x0F: Data compression page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x10: XOR control mode page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x10: Device configuration page
@@ -237,8 +241,9 @@ namespace DiscImageChef.Decoders.SCSI
if(page.DBR)
{
sb.AppendLine("\tDrive supports recovering data from buffer");
if(page.RBO) sb.AppendLine("\tRecovered buffer data comes in LIFO order");
else sb.AppendLine("\tRecovered buffer data comes in FIFO order");
sb.AppendLine(page.RBO
? "\tRecovered buffer data comes in LIFO order"
: "\tRecovered buffer data comes in FIFO order");
}
if(page.BIS) sb.AppendLine("\tMedium supports block IDs");
if(page.RSmk) sb.AppendLine("\tDrive reports setmarks");
@@ -313,8 +318,9 @@ namespace DiscImageChef.Decoders.SCSI
if(page.PRMWP) sb.AppendLine("\tPermanent write protect is enabled");
if(page.BAML)
if(page.BAM) sb.AppendLine("\tDrive operates using explicit address mode");
else sb.AppendLine("\tDrive operates using implicit address mode");
sb.AppendLine(page.BAM
? "\tDrive operates using explicit address mode"
: "\tDrive operates using implicit address mode");
switch(page.RewindOnReset)
{

View File

@@ -31,10 +31,14 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x11: Medium partition page (1)

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Pages 0x12, 0x13, 0x14: Medium partition page (2-4)

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x1A: Power condition page
@@ -219,9 +223,7 @@ namespace DiscImageChef.Decoders.SCSI
public static ModePage_1A_S01? DecodeModePage_1A_S01(byte[] pageResponse)
{
if(pageResponse == null) return null;
if((pageResponse[0] & 0x40) != 0x40) return null;
if((pageResponse?[0] & 0x40) != 0x40) return null;
if((pageResponse[0] & 0x3F) != 0x1A) return null;

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x1B: Removable Block Access Capabilities page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x1C: Informational exceptions control page
@@ -247,9 +251,7 @@ namespace DiscImageChef.Decoders.SCSI
public static ModePage_1C_S01? DecodeModePage_1C_S01(byte[] pageResponse)
{
if(pageResponse == null) return null;
if((pageResponse[0] & 0x40) != 0x40) return null;
if((pageResponse?[0] & 0x40) != 0x40) return null;
if((pageResponse[0] & 0x3F) != 0x1C) return null;

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x1C: Timer & Protect page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Mode Page 0x1D: Medium Configuration Mode Page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Certance Mode Page 0x21: Drive Capabilities Control Mode page

View File

@@ -30,10 +30,15 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "NotAccessedField.Global")]
public static partial class Modes
{
#region Certance Mode Page 0x22: Interface Control Mode Page
@@ -124,8 +129,9 @@ namespace DiscImageChef.Decoders.SCSI
break;
}
if(page.StopBits) sb.AppendLine("Library interface transmits 2 stop bits per byte");
else sb.AppendLine("Library interface transmits 1 stop bits per byte");
sb.AppendLine(page.StopBits
? "Library interface transmits 2 stop bits per byte"
: "Library interface transmits 1 stop bits per byte");
switch(page.CmdFwd)
{
@@ -160,11 +166,11 @@ namespace DiscImageChef.Decoders.SCSI
.AppendLine();
sb.AppendFormat("\tDrive jumpers choose SCSI ID {0}", page.JumperedSelectionID).AppendLine();
if(page.PortAEnabled) sb.AppendLine("\tSCSI port is enabled");
else sb.AppendLine("\tSCSI port is disabled");
sb.AppendLine(page.PortAEnabled ? "\tSCSI port is enabled" : "\tSCSI port is disabled");
if(page.PortAEnabledOnPower) sb.AppendLine("\tSCSI port will be enabled on next power up");
else sb.AppendLine("\tSCSI port will be disabled on next power up");
sb.AppendLine(page.PortAEnabledOnPower
? "\tSCSI port will be enabled on next power up"
: "\tSCSI port will be disabled on next power up");
return sb.ToString();
}

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region IBM Mode Page 0x24: Drive Capabilities Control Mode page

View File

@@ -30,11 +30,16 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "NotAccessedField.Global")]
public static partial class Modes
{
#region Mode Page 0x2A: CD-ROM capabilities page
@@ -279,11 +284,11 @@ namespace DiscImageChef.Decoders.SCSI
for(int i = 0; i < descriptors; i++)
{
decoded.WriteSpeedPerformanceDescriptors[i] = new ModePage_2A_WriteDescriptor();
decoded.WriteSpeedPerformanceDescriptors[i].RotationControl =
(byte)(pageResponse[1 + 32 + i * 4] & 0x07);
decoded.WriteSpeedPerformanceDescriptors[i].WriteSpeed =
(ushort)((pageResponse[2 + 32 + i * 4] << 8) + pageResponse[3 + 32 + i * 4]);
decoded.WriteSpeedPerformanceDescriptors[i] = new ModePage_2A_WriteDescriptor
{
RotationControl = (byte)(pageResponse[1 + 32 + i * 4] & 0x07),
WriteSpeed = (ushort)((pageResponse[2 + 32 + i * 4] << 8) + pageResponse[3 + 32 + i * 4])
};
}
return decoded;
@@ -345,14 +350,15 @@ namespace DiscImageChef.Decoders.SCSI
if(page.PreventJumper)
{
sb.AppendLine("\tDrive power ups locked");
if(page.LockState) sb.AppendLine("\tDrive is locked, media cannot be ejected or inserted");
else sb.AppendLine("\tDrive is not locked, media can be ejected and inserted");
sb.AppendLine(page.LockState
? "\tDrive is locked, media cannot be ejected or inserted"
: "\tDrive is not locked, media can be ejected and inserted");
}
else
{
if(page.LockState)
sb.AppendLine("\tDrive is locked, media cannot be ejected, but if empty, can be inserted");
else sb.AppendLine("\tDrive is not locked, media can be ejected and inserted");
sb.AppendLine(page.LockState
? "\tDrive is locked, media cannot be ejected, but if empty, can be inserted"
: "\tDrive is not locked, media can be ejected and inserted");
}
if(page.Eject) sb.AppendLine("\tDrive can eject media");
@@ -369,23 +375,19 @@ namespace DiscImageChef.Decoders.SCSI
if(page.ReadCDR)
{
if(page.WriteCDR) sb.AppendLine("\tDrive can read and write CD-R");
else sb.AppendLine("\tDrive can read CD-R");
sb.AppendLine(page.WriteCDR ? "\tDrive can read and write CD-R" : "\tDrive can read CD-R");
if(page.Method2) sb.AppendLine("\tDrive supports reading CD-R packet media");
}
if(page.ReadCDRW)
if(page.WriteCDRW) sb.AppendLine("\tDrive can read and write CD-RW");
else sb.AppendLine("\tDrive can read CD-RW");
sb.AppendLine(page.WriteCDRW ? "\tDrive can read and write CD-RW" : "\tDrive can read CD-RW");
if(page.ReadDVDROM) sb.AppendLine("\tDrive can read DVD-ROM");
if(page.ReadDVDR)
if(page.WriteDVDR) sb.AppendLine("\tDrive can read and write DVD-R");
else sb.AppendLine("\tDrive can read DVD-R");
sb.AppendLine(page.WriteDVDR ? "\tDrive can read and write DVD-R" : "\tDrive can read DVD-R");
if(page.ReadDVDRAM)
if(page.WriteDVDRAM) sb.AppendLine("\tDrive can read and write DVD-RAM");
else sb.AppendLine("\tDrive can read DVD-RAM");
sb.AppendLine(page.WriteDVDRAM ? "\tDrive can read and write DVD-RAM" : "\tDrive can read DVD-RAM");
if(page.Composite) sb.AppendLine("\tDrive can deliver a composite audio and video data stream");
if(page.DigitalPort1) sb.AppendLine("\tDrive supports IEC-958 digital output on port 1");

View File

@@ -30,10 +30,15 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "UnassignedField.Global")]
public static partial class Modes
{
#region IBM Mode Page 0x2F: Behaviour Configuration Mode page
@@ -66,22 +71,20 @@ namespace DiscImageChef.Decoders.SCSI
if(pageResponse.Length < 8) return null;
IBM_ModePage_2F decoded = new IBM_ModePage_2F();
decoded.PS |= (pageResponse[0] & 0x80) == 0x80;
decoded.FenceBehaviour = pageResponse[2];
decoded.CleanBehaviour = pageResponse[3];
decoded.WORMEmulation = pageResponse[4];
decoded.SenseDataBehaviour = pageResponse[5];
decoded.CCDM |= (pageResponse[6] & 0x04) == 0x04;
decoded.DDEOR |= (pageResponse[6] & 0x02) == 0x02;
decoded.CLNCHK |= (pageResponse[6] & 0x01) == 0x01;
decoded.FirmwareUpdateBehaviour = pageResponse[7];
decoded.UOE_C = (byte)((pageResponse[8] & 0x30) >> 4);
decoded.UOE_F = (byte)((pageResponse[8] & 0x0C) >> 2);
decoded.UOE_F = (byte)(pageResponse[8] & 0x03);
return decoded;
return new IBM_ModePage_2F
{
PS = (pageResponse[0] & 0x80) == 0x80,
FenceBehaviour = pageResponse[2],
CleanBehaviour = pageResponse[3],
WORMEmulation = pageResponse[4],
SenseDataBehaviour = pageResponse[5],
CCDM = (pageResponse[6] & 0x04) == 0x04,
DDEOR = (pageResponse[6] & 0x02) == 0x02,
CLNCHK = (pageResponse[6] & 0x01) == 0x01,
FirmwareUpdateBehaviour = pageResponse[7],
UOE_C = (byte)((pageResponse[8] & 0x30) >> 4),
UOE_F = (byte)((pageResponse[8] & 0x0C) >> 2)
};
}
public static string PrettifyIBMModePage_2F(byte[] pageResponse)

View File

@@ -31,10 +31,14 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region Apple Mode Page 0x30: Apple OEM String

View File

@@ -31,10 +31,14 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region HP Mode Page 0x3B: Serial Number Override Mode page

View File

@@ -31,10 +31,14 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region HP Mode Page 0x3C: Device Time Mode page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region HP Mode Page 0x3D: Extended Reset Mode page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region IBM Mode Page 0x3D: Behaviour Configuration Mode page

View File

@@ -31,10 +31,15 @@
// ****************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "NotAccessedField.Global")]
public static partial class Modes
{
#region Fujitsu Mode Page 0x3E: Verify Control page

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
#region HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page
@@ -82,8 +86,7 @@ namespace DiscImageChef.Decoders.SCSI
if(page.PS) sb.AppendLine("\tParameters can be saved");
if(page.CDmode) sb.AppendLine("\tDrive is emulating a CD-ROM drive");
else sb.AppendLine("\tDrive is not emulating a CD-ROM drive");
sb.AppendLine(page.CDmode ? "\tDrive is emulating a CD-ROM drive" : "\tDrive is not emulating a CD-ROM drive");
if(page.NonAuto) sb.AppendLine("\tDrive will not exit emulation automatically");
return sb.ToString();

View File

@@ -30,10 +30,14 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
public static string GetMediumTypeDescription(MediumTypes type)

View File

@@ -32,10 +32,14 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
public static ModeHeader? DecodeModeHeader10(byte[] modeResponse, PeripheralDeviceTypes deviceType)
@@ -50,8 +54,7 @@ namespace DiscImageChef.Decoders.SCSI
if(modeResponse.Length < modeLength) return null;
ModeHeader header = new ModeHeader();
header.MediumType = (MediumTypes)modeResponse[2];
ModeHeader header = new ModeHeader {MediumType = (MediumTypes)modeResponse[2]};
bool longLBA = (modeResponse[4] & 0x01) == 0x01;
@@ -61,8 +64,7 @@ namespace DiscImageChef.Decoders.SCSI
header.BlockDescriptors = new BlockDescriptor[blockDescLength / 16];
for(int i = 0; i < header.BlockDescriptors.Length; i++)
{
header.BlockDescriptors[i] = new BlockDescriptor();
header.BlockDescriptors[i].Density = DensityType.Default;
header.BlockDescriptors[i] = new BlockDescriptor {Density = DensityType.Default};
byte[] temp = new byte[8];
temp[0] = modeResponse[7 + i * 16 + 8];
temp[1] = modeResponse[6 + i * 16 + 8];
@@ -134,8 +136,7 @@ namespace DiscImageChef.Decoders.SCSI
ModeHeader? hdr = DecodeModeHeader10(modeResponse, deviceType);
if(!hdr.HasValue) return null;
DecodedMode decoded = new DecodedMode();
decoded.Header = hdr.Value;
DecodedMode decoded = new DecodedMode {Header = hdr.Value};
bool longlba = (modeResponse[4] & 0x01) == 0x01;
int offset;
int blkDrLength = 0;
@@ -199,18 +200,12 @@ namespace DiscImageChef.Decoders.SCSI
return decoded;
}
public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType)
{
return EncodeModeHeader10(header, deviceType, false);
}
public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType, bool longLBA)
public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType, bool longLBA = false)
{
byte[] hdr;
if(header.BlockDescriptors != null)
if(longLBA) hdr = new byte[8 + header.BlockDescriptors.Length * 16];
else hdr = new byte[8 + header.BlockDescriptors.Length * 8];
hdr = longLBA ? new byte[8 + header.BlockDescriptors.Length * 16] : new byte[8 + header.BlockDescriptors.Length * 8];
else hdr = new byte[8];
hdr[2] = (byte)header.MediumType;

View File

@@ -32,10 +32,14 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
public static ModeHeader? DecodeModeHeader6(byte[] modeResponse, PeripheralDeviceTypes deviceType)
@@ -43,8 +47,7 @@ namespace DiscImageChef.Decoders.SCSI
if(modeResponse == null || modeResponse.Length < 4 || modeResponse.Length < modeResponse[0] + 1)
return null;
ModeHeader header = new ModeHeader();
header.MediumType = (MediumTypes)modeResponse[1];
ModeHeader header = new ModeHeader {MediumType = (MediumTypes)modeResponse[1]};
if(modeResponse[3] > 0)
{
@@ -94,8 +97,7 @@ namespace DiscImageChef.Decoders.SCSI
ModeHeader? hdr = DecodeModeHeader6(modeResponse, deviceType);
if(!hdr.HasValue) return null;
DecodedMode decoded = new DecodedMode();
decoded.Header = hdr.Value;
DecodedMode decoded = new DecodedMode {Header = hdr.Value};
int blkDrLength = 0;
if(decoded.Header.BlockDescriptors != null) blkDrLength = decoded.Header.BlockDescriptors.Length;
@@ -158,10 +160,7 @@ namespace DiscImageChef.Decoders.SCSI
public static byte[] EncodeModeHeader6(ModeHeader header, PeripheralDeviceTypes deviceType)
{
byte[] hdr;
if(header.BlockDescriptors != null) hdr = new byte[4 + header.BlockDescriptors.Length * 8];
else hdr = new byte[4];
byte[] hdr = header.BlockDescriptors != null ? new byte[4 + header.BlockDescriptors.Length * 8] : new byte[4];
hdr[1] = (byte)header.MediumType;

View File

@@ -30,8 +30,13 @@
// Copyright © 2011-2018 Natalia Portillo
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
namespace DiscImageChef.Decoders.SCSI
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "MemberCanBeInternal")]
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
public static partial class Modes
{
public struct BlockDescriptor