diff --git a/ATA/Identify.cs b/ATA/Identify.cs index f0161cc..e8c7d4d 100644 --- a/ATA/Identify.cs +++ b/ATA/Identify.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Text; @@ -40,18 +41,18 @@ using DiscImageChef.Decoders.SCSI; namespace DiscImageChef.Decoders.ATA { /// - /// Information from following standards: - /// T10-791D rev. 4c (ATA) - /// T10-948D rev. 4c (ATA-2) - /// T13-1153D rev. 18 (ATA/ATAPI-4) - /// T13-1321D rev. 3 (ATA/ATAPI-5) - /// T13-1410D rev. 3b (ATA/ATAPI-6) - /// T13-1532D rev. 4b (ATA/ATAPI-7) - /// T13-1699D rev. 3f (ATA8-ACS) - /// T13-1699D rev. 4a (ATA8-ACS) - /// T13-2015D rev. 2 (ACS-2) - /// T13-2161D rev. 5 (ACS-3) - /// CF+ & CF Specification rev. 1.4 (CFA) + /// Information from following standards: + /// T10-791D rev. 4c (ATA) + /// T10-948D rev. 4c (ATA-2) + /// T13-1153D rev. 18 (ATA/ATAPI-4) + /// T13-1321D rev. 3 (ATA/ATAPI-5) + /// T13-1410D rev. 3b (ATA/ATAPI-6) + /// T13-1532D rev. 4b (ATA/ATAPI-7) + /// T13-1699D rev. 3f (ATA8-ACS) + /// T13-1699D rev. 4a (ATA8-ACS) + /// T13-2015D rev. 2 (ACS-2) + /// T13-2161D rev. 5 (ACS-3) + /// CF+ & CF Specification rev. 1.4 (CFA) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -62,963 +63,963 @@ namespace DiscImageChef.Decoders.ATA public struct IdentifyDevice { /// - /// Word 0 - /// General device configuration - /// On ATAPI devices: - /// Bits 12 to 8 indicate device type as SCSI defined - /// Bits 6 to 5: - /// 0 = Device shall set DRQ within 3 ms of receiving PACKET - /// 1 = Device shall assert INTRQ when DRQ is set to one - /// 2 = Device shall set DRQ within 50 µs of receiving PACKET - /// Bits 1 to 0: - /// 0 = 12 byte command packet - /// 1 = 16 byte command packet - /// CompactFlash is 0x848A (non magnetic, removable, not MFM, hardsector, and UltraFAST) + /// Word 0 + /// General device configuration + /// On ATAPI devices: + /// Bits 12 to 8 indicate device type as SCSI defined + /// Bits 6 to 5: + /// 0 = Device shall set DRQ within 3 ms of receiving PACKET + /// 1 = Device shall assert INTRQ when DRQ is set to one + /// 2 = Device shall set DRQ within 50 µs of receiving PACKET + /// Bits 1 to 0: + /// 0 = 12 byte command packet + /// 1 = 16 byte command packet + /// CompactFlash is 0x848A (non magnetic, removable, not MFM, hardsector, and UltraFAST) /// public GeneralConfigurationBit GeneralConfiguration; /// - /// Word 1 - /// Cylinders in default translation mode - /// Obsoleted in ATA/ATAPI-6 + /// Word 1 + /// Cylinders in default translation mode + /// Obsoleted in ATA/ATAPI-6 /// public ushort Cylinders; /// - /// Word 2 - /// Specific configuration + /// Word 2 + /// Specific configuration /// public SpecificConfigurationEnum SpecificConfiguration; /// - /// Word 3 - /// Heads in default translation mode - /// Obsoleted in ATA/ATAPI-6 + /// Word 3 + /// Heads in default translation mode + /// Obsoleted in ATA/ATAPI-6 /// public ushort Heads; /// - /// Word 4 - /// Unformatted bytes per track in default translation mode - /// Obsoleted in ATA-2 + /// Word 4 + /// Unformatted bytes per track in default translation mode + /// Obsoleted in ATA-2 /// public ushort UnformattedBPT; /// - /// Word 5 - /// Unformatted bytes per sector in default translation mode - /// Obsoleted in ATA-2 + /// Word 5 + /// Unformatted bytes per sector in default translation mode + /// Obsoleted in ATA-2 /// public ushort UnformattedBPS; /// - /// Word 6 - /// Sectors per track in default translation mode - /// Obsoleted in ATA/ATAPI-6 + /// Word 6 + /// Sectors per track in default translation mode + /// Obsoleted in ATA/ATAPI-6 /// public ushort SectorsPerTrack; /// - /// Words 7 to 8 - /// CFA: Number of sectors per card + /// Words 7 to 8 + /// CFA: Number of sectors per card /// public uint SectorsPerCard; /// - /// Word 9 - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Word 9 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// public ushort VendorWord9; /// - /// Words 10 to 19 - /// Device serial number, right justified, padded with spaces + /// Words 10 to 19 + /// Device serial number, right justified, padded with spaces /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string SerialNumber; /// - /// Word 20 - /// Manufacturer defined - /// Obsoleted in ATA-2 - /// 0x0001 = single ported single sector buffer - /// 0x0002 = dual ported multi sector buffer - /// 0x0003 = dual ported multi sector buffer with reading + /// Word 20 + /// Manufacturer defined + /// Obsoleted in ATA-2 + /// 0x0001 = single ported single sector buffer + /// 0x0002 = dual ported multi sector buffer + /// 0x0003 = dual ported multi sector buffer with reading /// public ushort BufferType; /// - /// Word 21 - /// Size of buffer in 512 byte increments - /// Obsoleted in ATA-2 + /// Word 21 + /// Size of buffer in 512 byte increments + /// Obsoleted in ATA-2 /// public ushort BufferSize; /// - /// Word 22 - /// Bytes of ECC available in READ/WRITE LONG commands - /// Obsoleted in ATA/ATAPI-4 + /// Word 22 + /// Bytes of ECC available in READ/WRITE LONG commands + /// Obsoleted in ATA/ATAPI-4 /// public ushort EccBytes; /// - /// Words 23 to 26 - /// Firmware revision, left justified, padded with spaces + /// Words 23 to 26 + /// Firmware revision, left justified, padded with spaces /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] public string FirmwareRevision; /// - /// Words 27 to 46 - /// Model number, left justified, padded with spaces + /// Words 27 to 46 + /// Model number, left justified, padded with spaces /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string Model; /// - /// Word 47 bits 7 to 0 - /// Maximum number of sectors that can be transferred per - /// interrupt on read and write multiple commands + /// Word 47 bits 7 to 0 + /// Maximum number of sectors that can be transferred per + /// interrupt on read and write multiple commands /// public byte MultipleMaxSectors; /// - /// Word 47 bits 15 to 8 - /// Vendor unique - /// ATA/ATAPI-4 says it must be 0x80 + /// Word 47 bits 15 to 8 + /// Vendor unique + /// ATA/ATAPI-4 says it must be 0x80 /// public byte VendorWord47; /// - /// Word 48 - /// ATA-1: Set to 1 if it can perform doubleword I/O - /// ATA-2 to ATA/ATAPI-7: Reserved - /// ATA8-ACS: Trusted Computing feature set + /// Word 48 + /// ATA-1: Set to 1 if it can perform doubleword I/O + /// ATA-2 to ATA/ATAPI-7: Reserved + /// ATA8-ACS: Trusted Computing feature set /// public TrustedComputingBit TrustedComputing; /// - /// Word 49 - /// Capabilities + /// Word 49 + /// Capabilities /// public CapabilitiesBit Capabilities; /// - /// Word 50 - /// Capabilities + /// Word 50 + /// Capabilities /// public CapabilitiesBit2 Capabilities2; /// - /// Word 51 bits 7 to 0 - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Word 51 bits 7 to 0 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// public byte VendorWord51; /// - /// Word 51 bits 15 to 8 - /// Transfer timing mode in PIO - /// Obsoleted in ATA/ATAPI-4 + /// Word 51 bits 15 to 8 + /// Transfer timing mode in PIO + /// Obsoleted in ATA/ATAPI-4 /// public byte PIOTransferTimingMode; /// - /// Word 52 bits 7 to 0 - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Word 52 bits 7 to 0 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// public byte VendorWord52; /// - /// Word 52 bits 15 to 8 - /// Transfer timing mode in DMA - /// Obsoleted in ATA/ATAPI-4 + /// Word 52 bits 15 to 8 + /// Transfer timing mode in DMA + /// Obsoleted in ATA/ATAPI-4 /// public byte DMATransferTimingMode; /// - /// Word 53 bits 7 to 0 - /// Reports if words 54 to 58 are valid + /// Word 53 bits 7 to 0 + /// Reports if words 54 to 58 are valid /// public ExtendedIdentifyBit ExtendedIdentify; /// - /// Word 53 bits 15 to 8 - /// Free-fall Control Sensitivity + /// Word 53 bits 15 to 8 + /// Free-fall Control Sensitivity /// public byte FreeFallSensitivity; /// - /// Word 54 - /// Cylinders in current translation mode - /// Obsoleted in ATA/ATAPI-6 + /// Word 54 + /// Cylinders in current translation mode + /// Obsoleted in ATA/ATAPI-6 /// public ushort CurrentCylinders; /// - /// Word 55 - /// Heads in current translation mode - /// Obsoleted in ATA/ATAPI-6 + /// Word 55 + /// Heads in current translation mode + /// Obsoleted in ATA/ATAPI-6 /// public ushort CurrentHeads; /// - /// Word 56 - /// Sectors per track in current translation mode - /// Obsoleted in ATA/ATAPI-6 + /// Word 56 + /// Sectors per track in current translation mode + /// Obsoleted in ATA/ATAPI-6 /// public ushort CurrentSectorsPerTrack; /// - /// Words 57 to 58 - /// Total sectors currently user-addressable - /// Obsoleted in ATA/ATAPI-6 + /// Words 57 to 58 + /// Total sectors currently user-addressable + /// Obsoleted in ATA/ATAPI-6 /// public uint CurrentSectors; /// - /// Word 59 bits 7 to 0 - /// Number of sectors currently set to transfer on a READ/WRITE MULTIPLE command + /// Word 59 bits 7 to 0 + /// Number of sectors currently set to transfer on a READ/WRITE MULTIPLE command /// public byte MultipleSectorNumber; /// - /// Word 59 bits 15 to 8 - /// Indicates if is valid + /// Word 59 bits 15 to 8 + /// Indicates if is valid /// public CapabilitiesBit3 Capabilities3; /// - /// Words 60 to 61 - /// If drive supports LBA, how many sectors are addressable using LBA + /// Words 60 to 61 + /// If drive supports LBA, how many sectors are addressable using LBA /// public uint LBASectors; /// - /// Word 62 bits 7 to 0 - /// Single word DMA modes available - /// Obsoleted in ATA/ATAPI-4 - /// In ATAPI it's not obsolete, indicates UDMA mode (UDMA7 is instead MDMA0) + /// Word 62 bits 7 to 0 + /// Single word DMA modes available + /// Obsoleted in ATA/ATAPI-4 + /// In ATAPI it's not obsolete, indicates UDMA mode (UDMA7 is instead MDMA0) /// public TransferMode DMASupported; /// - /// Word 62 bits 15 to 8 - /// Single word DMA mode currently active - /// Obsoleted in ATA/ATAPI-4 - /// In ATAPI it's not obsolete, bits 0 and 1 indicate MDMA mode+1, - /// bit 10 indicates DMA is supported and bit 15 indicates DMADIR bit - /// in PACKET is required for DMA transfers + /// Word 62 bits 15 to 8 + /// Single word DMA mode currently active + /// Obsoleted in ATA/ATAPI-4 + /// In ATAPI it's not obsolete, bits 0 and 1 indicate MDMA mode+1, + /// bit 10 indicates DMA is supported and bit 15 indicates DMADIR bit + /// in PACKET is required for DMA transfers /// public TransferMode DMAActive; /// - /// Word 63 bits 7 to 0 - /// Multiword DMA modes available + /// Word 63 bits 7 to 0 + /// Multiword DMA modes available /// public TransferMode MDMASupported; /// - /// Word 63 bits 15 to 8 - /// Multiword DMA mode currently active + /// Word 63 bits 15 to 8 + /// Multiword DMA mode currently active /// public TransferMode MDMAActive; /// - /// Word 64 bits 7 to 0 - /// Supported Advanced PIO transfer modes + /// Word 64 bits 7 to 0 + /// Supported Advanced PIO transfer modes /// public TransferMode APIOSupported; /// - /// Word 64 bits 15 to 8 - /// Reserved + /// Word 64 bits 15 to 8 + /// Reserved /// public byte ReservedWord64; /// - /// Word 65 - /// Minimum MDMA transfer cycle time per word in nanoseconds + /// Word 65 + /// Minimum MDMA transfer cycle time per word in nanoseconds /// public ushort MinMDMACycleTime; /// - /// Word 66 - /// Recommended MDMA transfer cycle time per word in nanoseconds + /// Word 66 + /// Recommended MDMA transfer cycle time per word in nanoseconds /// public ushort RecMDMACycleTime; /// - /// Word 67 - /// Minimum PIO transfer cycle time without flow control in nanoseconds + /// Word 67 + /// Minimum PIO transfer cycle time without flow control in nanoseconds /// public ushort MinPIOCycleTimeNoFlow; /// - /// Word 68 - /// Minimum PIO transfer cycle time with IORDY flow control in nanoseconds + /// Word 68 + /// Minimum PIO transfer cycle time with IORDY flow control in nanoseconds /// public ushort MinPIOCycleTimeFlow; /// - /// Word 69 - /// Additional supported + /// Word 69 + /// Additional supported /// public CommandSetBit5 CommandSet5; /// - /// Word 70 - /// Reserved + /// Word 70 + /// Reserved /// public ushort ReservedWord70; /// - /// Word 71 - /// ATAPI: Typical time in ns from receipt of PACKET to release bus + /// Word 71 + /// ATAPI: Typical time in ns from receipt of PACKET to release bus /// public ushort PacketBusRelease; /// - /// Word 72 - /// ATAPI: Typical time in ns from receipt of SERVICE to clear BSY + /// Word 72 + /// ATAPI: Typical time in ns from receipt of SERVICE to clear BSY /// public ushort ServiceBusyClear; /// - /// Word 73 - /// Reserved + /// Word 73 + /// Reserved /// public ushort ReservedWord73; /// - /// Word 74 - /// Reserved + /// Word 74 + /// Reserved /// public ushort ReservedWord74; /// - /// Word 75 - /// Maximum Queue depth + /// Word 75 + /// Maximum Queue depth /// public ushort MaxQueueDepth; /// - /// Word 76 - /// Serial ATA Capabilities + /// Word 76 + /// Serial ATA Capabilities /// public SATACapabilitiesBit SATACapabilities; /// - /// Word 77 - /// Serial ATA Additional Capabilities + /// Word 77 + /// Serial ATA Additional Capabilities /// public SATACapabilitiesBit2 SATACapabilities2; /// - /// Word 78 - /// Supported Serial ATA features + /// Word 78 + /// Supported Serial ATA features /// public SATAFeaturesBit SATAFeatures; /// - /// Word 79 - /// Enabled Serial ATA features + /// Word 79 + /// Enabled Serial ATA features /// public SATAFeaturesBit EnabledSATAFeatures; /// - /// Word 80 - /// Major version of ATA/ATAPI standard supported + /// Word 80 + /// Major version of ATA/ATAPI standard supported /// public MajorVersionBit MajorVersion; /// - /// Word 81 - /// Minimum version of ATA/ATAPI standard supported + /// Word 81 + /// Minimum version of ATA/ATAPI standard supported /// public ushort MinorVersion; /// - /// Word 82 - /// Supported command/feature sets + /// Word 82 + /// Supported command/feature sets /// public CommandSetBit CommandSet; /// - /// Word 83 - /// Supported command/feature sets + /// Word 83 + /// Supported command/feature sets /// public CommandSetBit2 CommandSet2; /// - /// Word 84 - /// Supported command/feature sets + /// Word 84 + /// Supported command/feature sets /// public CommandSetBit3 CommandSet3; /// - /// Word 85 - /// Enabled command/feature sets + /// Word 85 + /// Enabled command/feature sets /// public CommandSetBit EnabledCommandSet; /// - /// Word 86 - /// Enabled command/feature sets + /// Word 86 + /// Enabled command/feature sets /// public CommandSetBit2 EnabledCommandSet2; /// - /// Word 87 - /// Enabled command/feature sets + /// Word 87 + /// Enabled command/feature sets /// public CommandSetBit3 EnabledCommandSet3; /// - /// Word 88 bits 7 to 0 - /// Supported Ultra DMA transfer modes + /// Word 88 bits 7 to 0 + /// Supported Ultra DMA transfer modes /// public TransferMode UDMASupported; /// - /// Word 88 bits 15 to 8 - /// Selected Ultra DMA transfer modes + /// Word 88 bits 15 to 8 + /// Selected Ultra DMA transfer modes /// public TransferMode UDMAActive; /// - /// Word 89 - /// Time required for security erase completion + /// Word 89 + /// Time required for security erase completion /// public ushort SecurityEraseTime; /// - /// Word 90 - /// Time required for enhanced security erase completion + /// Word 90 + /// Time required for enhanced security erase completion /// public ushort EnhancedSecurityEraseTime; /// - /// Word 91 - /// Current advanced power management value + /// Word 91 + /// Current advanced power management value /// public ushort CurrentAPM; /// - /// Word 92 - /// Master password revision code + /// Word 92 + /// Master password revision code /// public ushort MasterPasswordRevisionCode; /// - /// Word 93 - /// Hardware reset result + /// Word 93 + /// Hardware reset result /// public ushort HardwareResetResult; /// - /// Word 94 bits 7 to 0 - /// Current AAM value + /// Word 94 bits 7 to 0 + /// Current AAM value /// public byte CurrentAAM; /// - /// Word 94 bits 15 to 8 - /// Vendor's recommended AAM value + /// Word 94 bits 15 to 8 + /// Vendor's recommended AAM value /// public byte RecommendedAAM; /// - /// Word 95 - /// Stream minimum request size + /// Word 95 + /// Stream minimum request size /// public ushort StreamMinReqSize; /// - /// Word 96 - /// Streaming transfer time in DMA + /// Word 96 + /// Streaming transfer time in DMA /// public ushort StreamTransferTimeDMA; /// - /// Word 97 - /// Streaming access latency in DMA and PIO + /// Word 97 + /// Streaming access latency in DMA and PIO /// public ushort StreamAccessLatency; /// - /// Words 98 to 99 - /// Streaming performance granularity + /// Words 98 to 99 + /// Streaming performance granularity /// public uint StreamPerformanceGranularity; /// - /// Words 100 to 103 - /// 48-bit LBA addressable sectors + /// Words 100 to 103 + /// 48-bit LBA addressable sectors /// public ulong LBA48Sectors; /// - /// Word 104 - /// Streaming transfer time in PIO + /// Word 104 + /// Streaming transfer time in PIO /// public ushort StreamTransferTimePIO; /// - /// Word 105 - /// Maximum number of 512-byte block per DATA SET MANAGEMENT command + /// Word 105 + /// Maximum number of 512-byte block per DATA SET MANAGEMENT command /// public ushort DataSetMgmtSize; /// - /// Word 106 - /// Bit 15 should be zero - /// Bit 14 should be one - /// Bit 13 set indicates device has multiple logical sectors per physical sector - /// Bit 12 set indicates logical sector has more than 256 words (512 bytes) - /// Bits 11 to 4 are reserved - /// Bits 3 to 0 indicate power of two of logical sectors per physical sector + /// Word 106 + /// Bit 15 should be zero + /// Bit 14 should be one + /// Bit 13 set indicates device has multiple logical sectors per physical sector + /// Bit 12 set indicates logical sector has more than 256 words (512 bytes) + /// Bits 11 to 4 are reserved + /// Bits 3 to 0 indicate power of two of logical sectors per physical sector /// public ushort PhysLogSectorSize; /// - /// Word 107 - /// Interseek delay for ISO-7779 acoustic testing, in microseconds + /// Word 107 + /// Interseek delay for ISO-7779 acoustic testing, in microseconds /// public ushort InterseekDelay; /// - /// Words 108 to 111 - /// World Wide Name + /// Words 108 to 111 + /// World Wide Name /// public ulong WWN; /// - /// Words 112 to 115 - /// Reserved for WWN extension to 128 bit + /// Words 112 to 115 + /// Reserved for WWN extension to 128 bit /// public ulong WWNExtension; /// - /// Word 116 - /// Reserved for technical report + /// Word 116 + /// Reserved for technical report /// public ushort ReservedWord116; /// - /// Words 117 to 118 - /// Words per logical sector + /// Words 117 to 118 + /// Words per logical sector /// public uint LogicalSectorWords; /// - /// Word 119 - /// Supported command/feature sets + /// Word 119 + /// Supported command/feature sets /// public CommandSetBit4 CommandSet4; /// - /// Word 120 - /// Supported command/feature sets + /// Word 120 + /// Supported command/feature sets /// public CommandSetBit4 EnabledCommandSet4; /// - /// Words 121 to 125 - /// Reserved + /// Words 121 to 125 + /// Reserved /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public ushort[] ReservedWords121; /// - /// Word 126 - /// ATAPI byte count limit + /// Word 126 + /// ATAPI byte count limit /// public ushort ATAPIByteCount; /// - /// Word 127 - /// Removable Media Status Notification feature set support - /// Bits 15 to 2 are reserved - /// Bits 1 to 0 must be 0 for not supported or 1 for supported. 2 and 3 are reserved. - /// Obsoleted in ATA8-ACS + /// Word 127 + /// Removable Media Status Notification feature set support + /// Bits 15 to 2 are reserved + /// Bits 1 to 0 must be 0 for not supported or 1 for supported. 2 and 3 are reserved. + /// Obsoleted in ATA8-ACS /// public ushort RemovableStatusSet; /// - /// Word 128 - /// Security status + /// Word 128 + /// Security status /// public SecurityStatusBit SecurityStatus; /// - /// Words 129 to 159 + /// Words 129 to 159 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 31)] public ushort[] ReservedWords129; /// - /// Word 160 - /// CFA power mode - /// Bit 15 must be set - /// Bit 13 indicates mode 1 is required for one or more commands - /// Bit 12 indicates mode 1 is disabled - /// Bits 11 to 0 indicates maximum current in mA + /// Word 160 + /// CFA power mode + /// Bit 15 must be set + /// Bit 13 indicates mode 1 is required for one or more commands + /// Bit 12 indicates mode 1 is disabled + /// Bits 11 to 0 indicates maximum current in mA /// public ushort CFAPowerMode; /// - /// Words 161 to 167 - /// Reserved for CFA + /// Words 161 to 167 + /// Reserved for CFA /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public ushort[] ReservedCFA; /// - /// Word 168 - /// Bits 15 to 4, reserved - /// Bits 3 to 0, device nominal form factor + /// Word 168 + /// Bits 15 to 4, reserved + /// Bits 3 to 0, device nominal form factor /// public DeviceFormFactorEnum DeviceFormFactor; /// - /// Word 169 - /// DATA SET MANAGEMENT support + /// Word 169 + /// DATA SET MANAGEMENT support /// public DataSetMgmtBit DataSetMgmt; /// - /// Words 170 to 173 - /// Additional product identifier + /// Words 170 to 173 + /// Additional product identifier /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] public string AdditionalPID; /// - /// Word 174 - /// Reserved + /// Word 174 + /// Reserved /// public ushort ReservedWord174; /// - /// Word 175 - /// Reserved + /// Word 175 + /// Reserved /// public ushort ReservedWord175; /// - /// Words 176 to 195 - /// Current media serial number + /// Words 176 to 195 + /// Current media serial number /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string MediaSerial; /// - /// Words 196 to 205 - /// Current media manufacturer + /// Words 196 to 205 + /// Current media manufacturer /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string MediaManufacturer; /// - /// Word 206 - /// SCT Command Transport features + /// Word 206 + /// SCT Command Transport features /// public SCTCommandTransportBit SCTCommandTransport; /// - /// Word 207 - /// Reserved for CE-ATA + /// Word 207 + /// Reserved for CE-ATA /// public ushort ReservedCEATAWord207; /// - /// Word 208 - /// Reserved for CE-ATA + /// Word 208 + /// Reserved for CE-ATA /// public ushort ReservedCEATAWord208; /// - /// Word 209 - /// Alignment of logical block within a larger physical block - /// Bit 15 shall be cleared to zero - /// Bit 14 shall be set to one - /// Bits 13 to 0 indicate logical sector offset within the first physical sector + /// Word 209 + /// Alignment of logical block within a larger physical block + /// Bit 15 shall be cleared to zero + /// Bit 14 shall be set to one + /// Bits 13 to 0 indicate logical sector offset within the first physical sector /// public ushort LogicalAlignment; /// - /// Words 210 to 211 - /// Write/Read/Verify sector count mode 3 only + /// Words 210 to 211 + /// Write/Read/Verify sector count mode 3 only /// public uint WRVSectorCountMode3; /// - /// Words 212 to 213 - /// Write/Read/Verify sector count mode 2 only + /// Words 212 to 213 + /// Write/Read/Verify sector count mode 2 only /// public uint WRVSectorCountMode2; /// - /// Word 214 - /// NV Cache capabilities - /// Bits 15 to 12 feature set version - /// Bits 11 to 18 power mode feature set version - /// Bits 7 to 5 reserved - /// Bit 4 feature set enabled - /// Bits 3 to 2 reserved - /// Bit 1 power mode feature set enabled - /// Bit 0 power mode feature set supported + /// Word 214 + /// NV Cache capabilities + /// Bits 15 to 12 feature set version + /// Bits 11 to 18 power mode feature set version + /// Bits 7 to 5 reserved + /// Bit 4 feature set enabled + /// Bits 3 to 2 reserved + /// Bit 1 power mode feature set enabled + /// Bit 0 power mode feature set supported /// public ushort NVCacheCaps; /// - /// Words 215 to 216 - /// NV Cache Size in Logical BLocks + /// Words 215 to 216 + /// NV Cache Size in Logical BLocks /// public uint NVCacheSize; /// - /// Word 217 - /// Nominal media rotation rate - /// In ACS-1 meant NV Cache read speed in MB/s + /// Word 217 + /// Nominal media rotation rate + /// In ACS-1 meant NV Cache read speed in MB/s /// public ushort NominalRotationRate; /// - /// Word 218 - /// NV Cache write speed in MB/s - /// Reserved since ACS-2 + /// Word 218 + /// NV Cache write speed in MB/s + /// Reserved since ACS-2 /// public ushort NVCacheWriteSpeed; /// - /// Word 219 bits 7 to 0 - /// Estimated device spin up in seconds + /// Word 219 bits 7 to 0 + /// Estimated device spin up in seconds /// public byte NVEstimatedSpinUp; /// - /// Word 219 bits 15 to 8 - /// NV Cache reserved + /// Word 219 bits 15 to 8 + /// NV Cache reserved /// public byte NVReserved; /// - /// Word 220 bits 7 to 0 - /// Write/Read/Verify feature set current mode + /// Word 220 bits 7 to 0 + /// Write/Read/Verify feature set current mode /// public byte WRVMode; /// - /// Word 220 bits 15 to 8 - /// Reserved + /// Word 220 bits 15 to 8 + /// Reserved /// public byte WRVReserved; /// - /// Word 221 - /// Reserved + /// Word 221 + /// Reserved /// public ushort ReservedWord221; /// - /// Word 222 - /// Transport major revision number - /// Bits 15 to 12 indicate transport type. 0 parallel, 1 serial, 0xE PCIe. - /// Bits 11 to 0 indicate revision + /// Word 222 + /// Transport major revision number + /// Bits 15 to 12 indicate transport type. 0 parallel, 1 serial, 0xE PCIe. + /// Bits 11 to 0 indicate revision /// public ushort TransportMajorVersion; /// - /// Word 223 - /// Transport minor revision number + /// Word 223 + /// Transport minor revision number /// public ushort TransportMinorVersion; /// - /// Words 224 to 229 - /// Reserved for CE-ATA + /// Words 224 to 229 + /// Reserved for CE-ATA /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public ushort[] ReservedCEATA224; /// - /// Words 230 to 233 - /// 48-bit LBA if Word 69 bit 3 is set + /// Words 230 to 233 + /// 48-bit LBA if Word 69 bit 3 is set /// public ulong ExtendedUserSectors; /// - /// Word 234 - /// Minimum number of 512 byte units per DOWNLOAD MICROCODE mode 3 + /// Word 234 + /// Minimum number of 512 byte units per DOWNLOAD MICROCODE mode 3 /// public ushort MinDownloadMicroMode3; /// - /// Word 235 - /// Maximum number of 512 byte units per DOWNLOAD MICROCODE mode 3 + /// Word 235 + /// Maximum number of 512 byte units per DOWNLOAD MICROCODE mode 3 /// public ushort MaxDownloadMicroMode3; /// - /// Words 236 to 254 + /// Words 236 to 254 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 19)] public ushort[] ReservedWords; /// - /// Word 255 bits 7 to 0 - /// Should be 0xA5 + /// Word 255 bits 7 to 0 + /// Should be 0xA5 /// public byte Signature; /// - /// Word 255 bits 15 to 8 - /// Checksum + /// Word 255 bits 15 to 8 + /// Checksum /// public byte Checksum; } /// - /// General configuration flag bits. + /// General configuration flag bits. /// [Flags] public enum GeneralConfigurationBit : ushort { /// - /// Set on ATAPI + /// Set on ATAPI /// NonMagnetic = 0x8000, /// - /// Format speed tolerance gap is required - /// Obsoleted in ATA-2 + /// Format speed tolerance gap is required + /// Obsoleted in ATA-2 /// FormatGapReq = 0x4000, /// - /// Track offset option is available - /// Obsoleted in ATA-2 + /// Track offset option is available + /// Obsoleted in ATA-2 /// TrackOffset = 0x2000, /// - /// Data strobe offset option is available - /// Obsoleted in ATA-2 + /// Data strobe offset option is available + /// Obsoleted in ATA-2 /// DataStrobeOffset = 0x1000, /// - /// Rotational speed tolerance is higher than 0,5% - /// Obsoleted in ATA-2 + /// Rotational speed tolerance is higher than 0,5% + /// Obsoleted in ATA-2 /// RotationalSpeedTolerance = 0x0800, /// - /// Disk transfer rate is > 10 Mb/s - /// Obsoleted in ATA-2 + /// Disk transfer rate is > 10 Mb/s + /// Obsoleted in ATA-2 /// UltraFastIDE = 0x0400, /// - /// Disk transfer rate is > 5 Mb/s but <= 10 Mb/s - /// Obsoleted in ATA-2 + /// Disk transfer rate is > 5 Mb/s but <= 10 Mb/s + /// Obsoleted in ATA-2 /// FastIDE = 0x0200, /// - /// Disk transfer rate is <= 5 Mb/s - /// Obsoleted in ATA-2 + /// Disk transfer rate is <= 5 Mb/s + /// Obsoleted in ATA-2 /// SlowIDE = 0x0100, /// - /// Drive uses removable media + /// Drive uses removable media /// Removable = 0x0080, /// - /// Drive is fixed - /// Obsoleted in ATA/ATAPI-6 + /// Drive is fixed + /// Obsoleted in ATA/ATAPI-6 /// Fixed = 0x0040, /// - /// Spindle motor control is implemented - /// Obsoleted in ATA-2 + /// Spindle motor control is implemented + /// Obsoleted in ATA-2 /// SpindleControl = 0x0020, /// - /// Head switch time is bigger than 15 µsec. - /// Obsoleted in ATA-2 + /// Head switch time is bigger than 15 µsec. + /// Obsoleted in ATA-2 /// HighHeadSwitch = 0x0010, /// - /// Drive is not MFM encoded - /// Obsoleted in ATA-2 + /// Drive is not MFM encoded + /// Obsoleted in ATA-2 /// NotMFM = 0x0008, /// - /// Drive is soft sectored - /// Obsoleted in ATA-2 + /// Drive is soft sectored + /// Obsoleted in ATA-2 /// SoftSector = 0x0004, /// - /// Response incomplete - /// Since ATA/ATAPI-5 + /// Response incomplete + /// Since ATA/ATAPI-5 /// IncompleteResponse = 0x0004, /// - /// Drive is hard sectored - /// Obsoleted in ATA-2 + /// Drive is hard sectored + /// Obsoleted in ATA-2 /// HardSector = 0x0002, /// - /// Reserved + /// Reserved /// Reserved = 0x0001 } /// - /// Capabilities flag bits. + /// Capabilities flag bits. /// [Flags] public enum CapabilitiesBit : ushort { /// - /// ATAPI: Interleaved DMA supported + /// ATAPI: Interleaved DMA supported /// InterleavedDMA = 0x8000, /// - /// ATAPI: Command queueing supported + /// ATAPI: Command queueing supported /// CommandQueue = 0x4000, /// - /// Standby timer values are standard + /// Standby timer values are standard /// StandardStanbyTimer = 0x2000, /// - /// ATAPI: Overlap operation supported + /// ATAPI: Overlap operation supported /// OverlapOperation = 0x2000, /// - /// ATAPI: ATA software reset required - /// Obsoleted in ATA/ATAPI-4 + /// ATAPI: ATA software reset required + /// Obsoleted in ATA/ATAPI-4 /// RequiresATASoftReset = 0x1000, /// - /// IORDY is supported + /// IORDY is supported /// IORDY = 0x0800, /// - /// IORDY can be disabled + /// IORDY can be disabled /// CanDisableIORDY = 0x0400, /// - /// LBA is supported + /// LBA is supported /// LBASupport = 0x0200, /// - /// DMA is supported + /// DMA is supported /// DMASupport = 0x0100, /// - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// VendorBit7 = 0x0080, /// - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// VendorBit6 = 0x0040, /// - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// VendorBit5 = 0x0020, /// - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// VendorBit4 = 0x0010, /// - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// VendorBit3 = 0x0008, /// - /// Vendor unique - /// Obsoleted in ATA/ATAPI-4 + /// Vendor unique + /// Obsoleted in ATA/ATAPI-4 /// VendorBit2 = 0x0004, /// - /// Long Physical Alignment setting bit 1 + /// Long Physical Alignment setting bit 1 /// PhysicalAlignment1 = 0x0002, /// - /// Long Physical Alignment setting bit 0 + /// Long Physical Alignment setting bit 0 /// PhysicalAlignment0 = 0x0001 } /// - /// Extended identify flag bits. + /// Extended identify flag bits. /// [Flags] public enum ExtendedIdentifyBit : byte { /// - /// Reserved + /// Reserved /// Reserved07 = 0x80, /// - /// Reserved + /// Reserved /// Reserved06 = 0x40, /// - /// Reserved + /// Reserved /// Reserved05 = 0x20, /// - /// Reserved + /// Reserved /// Reserved04 = 0x10, /// - /// Reserved + /// Reserved /// Reserved03 = 0x08, /// - /// Identify word 88 is valid + /// Identify word 88 is valid /// Word88Valid = 0x04, /// - /// Identify words 64 to 70 are valid + /// Identify words 64 to 70 are valid /// Words64to70Valid = 0x02, /// - /// Identify words 54 to 58 are valid + /// Identify words 54 to 58 are valid /// Words54to58Valid = 0x01 } /// - /// More capabilities flag bits. + /// More capabilities flag bits. /// [Flags] public enum CapabilitiesBit2 : ushort { /// - /// MUST NOT be set + /// MUST NOT be set /// MustBeClear = 0x8000, /// - /// MUST be set + /// MUST be set /// MustBeSet = 0x4000, Reserved13 = 0x2000, @@ -1035,7 +1036,7 @@ namespace DiscImageChef.Decoders.ATA Reserved02 = 0x0004, Reserved01 = 0x0002, /// - /// Indicates a device specific minimum standby timer value + /// Indicates a device specific minimum standby timer value /// SpecificStandbyTimer = 0x0001 } @@ -1054,223 +1055,223 @@ namespace DiscImageChef.Decoders.ATA } /// - /// More capabilities flag bits. + /// More capabilities flag bits. /// [Flags] public enum CommandSetBit : ushort { /// - /// Already obsolete in ATA/ATAPI-4, reserved in ATA3 + /// Already obsolete in ATA/ATAPI-4, reserved in ATA3 /// Obsolete15 = 0x8000, /// - /// NOP is supported + /// NOP is supported /// Nop = 0x4000, /// - /// READ BUFFER is supported + /// READ BUFFER is supported /// ReadBuffer = 0x2000, /// - /// WRITE BUFFER is supported + /// WRITE BUFFER is supported /// WriteBuffer = 0x1000, /// - /// Already obsolete in ATA/ATAPI-4, reserved in ATA3 + /// Already obsolete in ATA/ATAPI-4, reserved in ATA3 /// Obsolete11 = 0x0800, /// - /// Host Protected Area is supported + /// Host Protected Area is supported /// HPA = 0x0400, /// - /// DEVICE RESET is supported + /// DEVICE RESET is supported /// DeviceReset = 0x0200, /// - /// SERVICE interrupt is supported + /// SERVICE interrupt is supported /// Service = 0x0100, /// - /// Release is supported + /// Release is supported /// Release = 0x0080, /// - /// Look-ahead is supported + /// Look-ahead is supported /// LookAhead = 0x0040, /// - /// Write cache is supported + /// Write cache is supported /// WriteCache = 0x0020, /// - /// PACKET command set is supported + /// PACKET command set is supported /// Packet = 0x0010, /// - /// Power Management feature set is supported + /// Power Management feature set is supported /// PowerManagement = 0x0008, /// - /// Removable Media feature set is supported + /// Removable Media feature set is supported /// RemovableMedia = 0x0004, /// - /// Security Mode feature set is supported + /// Security Mode feature set is supported /// SecurityMode = 0x0002, /// - /// SMART feature set is supported + /// SMART feature set is supported /// SMART = 0x0001 } /// - /// More capabilities flag bits. + /// More capabilities flag bits. /// [Flags] public enum CommandSetBit2 : ushort { /// - /// MUST NOT be set + /// MUST NOT be set /// MustBeClear = 0x8000, /// - /// MUST BE SET + /// MUST BE SET /// MustBeSet = 0x4000, /// - /// FLUSH CACHE EXT supported + /// FLUSH CACHE EXT supported /// FlushCacheExt = 0x2000, /// - /// FLUSH CACHE supported + /// FLUSH CACHE supported /// FlushCache = 0x1000, /// - /// Device Configuration Overlay feature set supported + /// Device Configuration Overlay feature set supported /// DCO = 0x0800, /// - /// 48-bit LBA supported + /// 48-bit LBA supported /// LBA48 = 0x0400, /// - /// Automatic Acoustic Management supported + /// Automatic Acoustic Management supported /// AAM = 0x0200, /// - /// SET MAX security extension supported + /// SET MAX security extension supported /// SetMax = 0x0100, /// - /// Address Offset Reserved Area Boot NCITS TR27:2001 + /// Address Offset Reserved Area Boot NCITS TR27:2001 /// AddressOffsetReservedAreaBoot = 0x0080, /// - /// SET FEATURES required to spin-up + /// SET FEATURES required to spin-up /// SetFeaturesRequired = 0x0040, /// - /// Power-Up in standby feature set supported + /// Power-Up in standby feature set supported /// PowerUpInStandby = 0x0020, /// - /// Removable Media Status Notification feature set is supported + /// Removable Media Status Notification feature set is supported /// RemovableNotification = 0x0010, /// - /// Advanced Power Management feature set is supported + /// Advanced Power Management feature set is supported /// APM = 0x0008, /// - /// Compact Flash feature set is supported + /// Compact Flash feature set is supported /// CompactFlash = 0x0004, /// - /// READ DMA QUEUED and WRITE DMA QUEUED are supported + /// READ DMA QUEUED and WRITE DMA QUEUED are supported /// RWQueuedDMA = 0x0002, /// - /// DOWNLOAD MICROCODE is supported + /// DOWNLOAD MICROCODE is supported /// DownloadMicrocode = 0x0001 } /// - /// More capabilities flag bits. + /// More capabilities flag bits. /// [Flags] public enum CommandSetBit3 : ushort { /// - /// MUST NOT be set + /// MUST NOT be set /// MustBeClear = 0x8000, /// - /// MUST BE SET + /// MUST BE SET /// MustBeSet = 0x4000, /// - /// IDLE IMMEDIATE with UNLOAD FEATURE is supported + /// IDLE IMMEDIATE with UNLOAD FEATURE is supported /// IdleImmediate = 0x2000, /// - /// Reserved for INCITS TR-37/2004 + /// Reserved for INCITS TR-37/2004 /// Reserved12 = 0x1000, /// - /// Reserved for INCITS TR-37/2004 + /// Reserved for INCITS TR-37/2004 /// Reserved11 = 0x0800, /// - /// URG bit is supported in WRITE STREAM DMA EXT and WRITE STREAM EXT + /// URG bit is supported in WRITE STREAM DMA EXT and WRITE STREAM EXT /// WriteURG = 0x0400, /// - /// URG bit is supported in READ STREAM DMA EXT and READ STREAM EXT + /// URG bit is supported in READ STREAM DMA EXT and READ STREAM EXT /// ReadURG = 0x0200, /// - /// 64-bit World Wide Name is supported + /// 64-bit World Wide Name is supported /// WWN = 0x0100, /// - /// WRITE DMA QUEUED FUA EXT is supported + /// WRITE DMA QUEUED FUA EXT is supported /// FUAWriteQ = 0x0080, /// - /// WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported + /// WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported /// FUAWrite = 0x0040, /// - /// General Purpose Logging feature supported + /// General Purpose Logging feature supported /// GPL = 0x0020, /// - /// Sstreaming feature set is supported + /// Sstreaming feature set is supported /// Streaming = 0x0010, /// - /// Media Card Pass Through command set supported + /// Media Card Pass Through command set supported /// MCPT = 0x0008, /// - /// Media serial number supported + /// Media serial number supported /// MediaSerial = 0x0004, /// - /// SMART self-test supported + /// SMART self-test supported /// SMARTSelfTest = 0x0002, /// - /// SMART error logging supported + /// SMART error logging supported /// SMARTLog = 0x0001 } /// - /// More capabilities flag bits. + /// More capabilities flag bits. /// [Flags] public enum SecurityStatusBit : ushort @@ -1283,40 +1284,40 @@ namespace DiscImageChef.Decoders.ATA Reserved10 = 0x0400, Reserved09 = 0x0200, /// - /// Maximum security level + /// Maximum security level /// Maximum = 0x0100, Reserved07 = 0x0080, Reserved06 = 0x0040, /// - /// Supports enhanced security erase + /// Supports enhanced security erase /// Enhanced = 0x0020, /// - /// Security count expired + /// Security count expired /// Expired = 0x0010, /// - /// Security frozen + /// Security frozen /// Frozen = 0x0008, /// - /// Security locked + /// Security locked /// Locked = 0x0004, /// - /// Security enabled + /// Security enabled /// Enabled = 0x0002, /// - /// Security supported + /// Security supported /// Supported = 0x0001 } /// - /// Word 80 - /// Major version + /// Word 80 + /// Major version /// [Flags] public enum MajorVersionBit : ushort @@ -1326,47 +1327,47 @@ namespace DiscImageChef.Decoders.ATA Reserved13 = 0x2000, Reserved12 = 0x1000, /// - /// ACS-4 + /// ACS-4 /// ACS4 = 0x0800, /// - /// ACS-3 + /// ACS-3 /// ACS3 = 0x0400, /// - /// ACS-2 + /// ACS-2 /// ACS2 = 0x0200, /// - /// ATA8-ACS + /// ATA8-ACS /// Ata8ACS = 0x0100, /// - /// ATA/ATAPI-7 + /// ATA/ATAPI-7 /// AtaAtapi7 = 0x0080, /// - /// ATA/ATAPI-6 + /// ATA/ATAPI-6 /// AtaAtapi6 = 0x0040, /// - /// ATA/ATAPI-5 + /// ATA/ATAPI-5 /// AtaAtapi5 = 0x0020, /// - /// ATA/ATAPI-4 + /// ATA/ATAPI-4 /// AtaAtapi4 = 0x0010, /// - /// ATA-3 + /// ATA-3 /// Ata3 = 0x0008, /// - /// ATA-2 + /// ATA-2 /// Ata2 = 0x0004, /// - /// ATA-1 + /// ATA-1 /// Ata1 = 0x0002, Reserved00 = 0x0001 @@ -1375,23 +1376,23 @@ namespace DiscImageChef.Decoders.ATA public enum SpecificConfigurationEnum : ushort { /// - /// Device requires SET FEATURES to spin up and - /// IDENTIFY DEVICE response is incomplete + /// Device requires SET FEATURES to spin up and + /// IDENTIFY DEVICE response is incomplete /// RequiresSetIncompleteResponse = 0x37C8, /// - /// Device requires SET FEATURES to spin up and - /// IDENTIFY DEVICE response is complete + /// Device requires SET FEATURES to spin up and + /// IDENTIFY DEVICE response is complete /// RequiresSetCompleteResponse = 0x738C, /// - /// Device does not requires SET FEATURES to spin up and - /// IDENTIFY DEVICE response is incomplete + /// Device does not requires SET FEATURES to spin up and + /// IDENTIFY DEVICE response is incomplete /// NotRequiresSetIncompleteResponse = 0x8C73, /// - /// Device does not requires SET FEATURES to spin up and - /// IDENTIFY DEVICE response is complete + /// Device does not requires SET FEATURES to spin up and + /// IDENTIFY DEVICE response is complete /// NotRequiresSetCompleteResponse = 0xC837 } @@ -1400,11 +1401,11 @@ namespace DiscImageChef.Decoders.ATA public enum TrustedComputingBit : ushort { /// - /// MUST NOT be set + /// MUST NOT be set /// Clear = 0x8000, /// - /// MUST be set + /// MUST be set /// Set = 0x4000, Reserved13 = 0x2000, @@ -1421,23 +1422,23 @@ namespace DiscImageChef.Decoders.ATA Reserved02 = 0x0004, Reserved01 = 0x0002, /// - /// Trusted Computing feature set is supported + /// Trusted Computing feature set is supported /// TrustedComputing = 0x0001 } /// - /// More capabilities flag bits. + /// More capabilities flag bits. /// [Flags] public enum CommandSetBit4 : ushort { /// - /// MUST NOT be set + /// MUST NOT be set /// MustBeClear = 0x8000, /// - /// MUST be set + /// MUST be set /// MustBeSet = 0x4000, Reserved13 = 0x2000, @@ -1445,43 +1446,43 @@ namespace DiscImageChef.Decoders.ATA Reserved11 = 0x0800, Reserved10 = 0x0400, /// - /// DSN feature set is supported + /// DSN feature set is supported /// DSN = 0x0200, /// - /// Accessible Max Address Configuration is supported + /// Accessible Max Address Configuration is supported /// AMAC = 0x0100, /// - /// Extended Power Conditions is supported + /// Extended Power Conditions is supported /// ExtPowerCond = 0x0080, /// - /// Extended Status Reporting is supported + /// Extended Status Reporting is supported /// ExtStatusReport = 0x0040, /// - /// Free-fall Control feature set is supported + /// Free-fall Control feature set is supported /// FreeFallControl = 0x0020, /// - /// Supports segmented feature in DOWNLOAD MICROCODE + /// Supports segmented feature in DOWNLOAD MICROCODE /// SegmentedDownloadMicrocode = 0x0010, /// - /// READ/WRITE DMA EXT GPL are supported + /// READ/WRITE DMA EXT GPL are supported /// RWDMAExtGpl = 0x0008, /// - /// WRITE UNCORRECTABLE is supported + /// WRITE UNCORRECTABLE is supported /// WriteUnc = 0x0004, /// - /// Write/Read/Verify is supported + /// Write/Read/Verify is supported /// WRV = 0x0002, /// - /// Reserved for DT1825 + /// Reserved for DT1825 /// DT1825 = 0x0001 } @@ -1500,27 +1501,27 @@ namespace DiscImageChef.Decoders.ATA Reserved07 = 0x0080, Reserved06 = 0x0040, /// - /// SCT Command Transport Data Tables supported + /// SCT Command Transport Data Tables supported /// DataTables = 0x0020, /// - /// SCT Command Transport Features Control supported + /// SCT Command Transport Features Control supported /// FeaturesControl = 0x0010, /// - /// SCT Command Transport Error Recovery Control supported + /// SCT Command Transport Error Recovery Control supported /// ErrorRecoveryControl = 0x0008, /// - /// SCT Command Transport Write Same supported + /// SCT Command Transport Write Same supported /// WriteSame = 0x0004, /// - /// SCT Command Transport Long Sector Address supported + /// SCT Command Transport Long Sector Address supported /// LongSectorAccess = 0x0002, /// - /// SCT Command Transport supported + /// SCT Command Transport supported /// Supported = 0x0001 } @@ -1529,35 +1530,35 @@ namespace DiscImageChef.Decoders.ATA public enum SATACapabilitiesBit : ushort { /// - /// Supports READ LOG DMA EXT + /// Supports READ LOG DMA EXT /// ReadLogDMAExt = 0x8000, /// - /// Supports device automatic partial to slumber transitions + /// Supports device automatic partial to slumber transitions /// DevSlumbTrans = 0x4000, /// - /// Supports host automatic partial to slumber transitions + /// Supports host automatic partial to slumber transitions /// HostSlumbTrans = 0x2000, /// - /// Supports NCQ priroty + /// Supports NCQ priroty /// NCQPriority = 0x1000, /// - /// Supports unload while NCQ commands are outstanding + /// Supports unload while NCQ commands are outstanding /// UnloadNCQ = 0x0800, /// - /// Supports PHY Event Counters + /// Supports PHY Event Counters /// PHYEventCounter = 0x0400, /// - /// Supports receipt of host initiated power management requests + /// Supports receipt of host initiated power management requests /// PowerReceipt = 0x0200, /// - /// Supports NCQ + /// Supports NCQ /// NCQ = 0x0100, Reserved07 = 0x0080, @@ -1565,19 +1566,19 @@ namespace DiscImageChef.Decoders.ATA Reserved05 = 0x0020, Reserved04 = 0x0010, /// - /// Supports SATA Gen. 3 Signaling Speed (6.0Gb/s) + /// Supports SATA Gen. 3 Signaling Speed (6.0Gb/s) /// Gen3Speed = 0x0008, /// - /// Supports SATA Gen. 2 Signaling Speed (3.0Gb/s) + /// Supports SATA Gen. 2 Signaling Speed (3.0Gb/s) /// Gen2Speed = 0x0004, /// - /// Supports SATA Gen. 1 Signaling Speed (1.5Gb/s) + /// Supports SATA Gen. 1 Signaling Speed (1.5Gb/s) /// Gen1Speed = 0x0002, /// - /// MUST NOT be set + /// MUST NOT be set /// Clear = 0x0001 } @@ -1594,43 +1595,43 @@ namespace DiscImageChef.Decoders.ATA Reserved09 = 0x0200, Reserved08 = 0x0100, /// - /// Supports NCQ autosense + /// Supports NCQ autosense /// NCQAutoSense = 0x0080, /// - /// Automatic Partial to Slumber transitions are enabled + /// Automatic Partial to Slumber transitions are enabled /// EnabledSlumber = 0x0080, /// - /// Supports Software Settings Preservation + /// Supports Software Settings Preservation /// SettingsPreserve = 0x0040, /// - /// Supports hardware feature control + /// Supports hardware feature control /// HardwareFeatureControl = 0x0020, /// - /// ATAPI: Asynchronous notification + /// ATAPI: Asynchronous notification /// AsyncNotification = 0x0020, /// - /// Supports in-order data delivery + /// Supports in-order data delivery /// InOrderData = 0x0010, /// - /// Supports initiating power management + /// Supports initiating power management /// InitPowerMgmt = 0x0008, /// - /// Supports DMA Setup auto-activation + /// Supports DMA Setup auto-activation /// DMASetup = 0x0004, /// - /// Supports non-zero buffer offsets + /// Supports non-zero buffer offsets /// NonZeroBufferOffset = 0x0002, /// - /// MUST NOT be set + /// MUST NOT be set /// Clear = 0x0001 } @@ -1639,32 +1640,32 @@ namespace DiscImageChef.Decoders.ATA public enum CapabilitiesBit3 : byte { /// - /// BLOCK ERASE EXT supported + /// BLOCK ERASE EXT supported /// BlockErase = 0x0080, /// - /// OVERWRITE EXT supported + /// OVERWRITE EXT supported /// Overwrite = 0x0040, /// - /// CRYPTO SCRAMBLE EXT supported + /// CRYPTO SCRAMBLE EXT supported /// CryptoScramble = 0x0020, /// - /// Sanitize feature set is supported + /// Sanitize feature set is supported /// Sanitize = 0x0010, /// - /// If unset, sanitize commands are specified by ACS-2 + /// If unset, sanitize commands are specified by ACS-2 /// SanitizeCommands = 0x0008, /// - /// SANITIZE ANTIFREEZE LOCK EXT is supported + /// SANITIZE ANTIFREEZE LOCK EXT is supported /// SanitizeAntifreeze = 0x0004, Reserved01 = 0x0002, /// - /// Multiple logical sector setting is valid + /// Multiple logical sector setting is valid /// MultipleValid = 0x0001 } @@ -1673,67 +1674,67 @@ namespace DiscImageChef.Decoders.ATA public enum CommandSetBit5 : ushort { /// - /// Supports CFast Specification + /// Supports CFast Specification /// CFast = 0x8000, /// - /// Deterministic read after TRIM is supported + /// Deterministic read after TRIM is supported /// DeterministicTrim = 0x4000, /// - /// Long physical sector alignment error reporting control is supported + /// Long physical sector alignment error reporting control is supported /// LongPhysSectorAligError = 0x2000, /// - /// DEVICE CONFIGURATION IDENTIFY DMA and DEVICE CONFIGURATION SET DMA are supported + /// DEVICE CONFIGURATION IDENTIFY DMA and DEVICE CONFIGURATION SET DMA are supported /// DeviceConfDMA = 0x1000, /// - /// READ BUFFER DMA is supported + /// READ BUFFER DMA is supported /// ReadBufferDMA = 0x0800, /// - /// WRITE BUFFER DMA is supported + /// WRITE BUFFER DMA is supported /// WriteBufferDMA = 0x0400, /// - /// SET PASSWORD DMA and SET UNLOCK DMA are supported + /// SET PASSWORD DMA and SET UNLOCK DMA are supported /// SetMaxDMA = 0x0200, /// - /// DOWNLOAD MICROCODE DMA is supported + /// DOWNLOAD MICROCODE DMA is supported /// DownloadMicroCodeDMA = 0x0100, /// - /// Reserved for IEEE-1667 + /// Reserved for IEEE-1667 /// IEEE1667 = 0x0080, /// - /// Optional ATA 28-bit commands are supported + /// Optional ATA 28-bit commands are supported /// Ata28 = 0x0040, /// - /// Read zero after TRIM is supported + /// Read zero after TRIM is supported /// ReadZeroTrim = 0x0020, /// - /// Device encrypts all user data + /// Device encrypts all user data /// Encrypted = 0x0010, /// - /// Extended number of user addressable sectors is supported + /// Extended number of user addressable sectors is supported /// ExtSectors = 0x0008, /// - /// All write cache is non-volatile + /// All write cache is non-volatile /// AllCacheNV = 0x0004, /// - /// Zoned capabilities bit 1 + /// Zoned capabilities bit 1 /// ZonedBit1 = 0x0002, /// - /// Zoned capabilities bit 0 + /// Zoned capabilities bit 0 /// ZonedBit0 = 0x0001 } @@ -1741,27 +1742,27 @@ namespace DiscImageChef.Decoders.ATA public enum DeviceFormFactorEnum : ushort { /// - /// Size not reported + /// Size not reported /// NotReported = 0, /// - /// 5.25" + /// 5.25" /// FiveAndQuarter = 1, /// - /// 3.5" + /// 3.5" /// ThreeAndHalf = 2, /// - /// 2.5" + /// 2.5" /// TwoAndHalf = 3, /// - /// 1.8" + /// 1.8" /// OnePointEight = 4, /// - /// Less than 1.8" + /// Less than 1.8" /// LessThanOnePointEight = 5 } @@ -1785,7 +1786,7 @@ namespace DiscImageChef.Decoders.ATA Reserved02 = 0x0004, Reserved01 = 0x0002, /// - /// TRIM is suported + /// TRIM is suported /// Trim = 0x0001 } @@ -1803,39 +1804,39 @@ namespace DiscImageChef.Decoders.ATA Reserved08 = 0x0100, Reserved07 = 0x0080, /// - /// Supports RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED + /// Supports RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED /// FPDMAQ = 0x0040, /// - /// Supports NCQ Queue Management + /// Supports NCQ Queue Management /// NCQMgmt = 0x0020, /// - /// ATAPI: Supports host environment detect + /// ATAPI: Supports host environment detect /// HostEnvDetect = 0x0020, /// - /// Supports NCQ streaming + /// Supports NCQ streaming /// NCQStream = 0x0010, /// - /// ATAPI: Supports device attention on slimline connected devices + /// ATAPI: Supports device attention on slimline connected devices /// DevAttSlimline = 0x0010, /// - /// Coded value indicating current negotiated Serial ATA signal speed + /// Coded value indicating current negotiated Serial ATA signal speed /// CurrentSpeedBit2 = 0x0008, /// - /// Coded value indicating current negotiated Serial ATA signal speed + /// Coded value indicating current negotiated Serial ATA signal speed /// CurrentSpeedBit1 = 0x0004, /// - /// Coded value indicating current negotiated Serial ATA signal speed + /// Coded value indicating current negotiated Serial ATA signal speed /// CurrentSpeedBit0 = 0x0002, /// - /// MUST NOT be set + /// MUST NOT be set /// Clear = 0x0001 } @@ -1888,10 +1889,8 @@ namespace DiscImageChef.Decoders.ATA IdentifyDevice ATAID = IdentifyDeviceResponse.Value; if(ATAID.GeneralConfiguration.HasFlag(GeneralConfigurationBit.NonMagnetic)) - if((ushort)ATAID.GeneralConfiguration != 0x848A) - atapi = true; - else - cfa = true; + if((ushort)ATAID.GeneralConfiguration != 0x848A) atapi = true; + else cfa = true; if(atapi) sb.AppendLine("ATAPI device"); else if(cfa) sb.AppendLine("CompactFlash device"); @@ -1914,7 +1913,8 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.MediaSerial != "") sb.AppendFormat("Media serial #: {0}", ATAID.MediaSerial).AppendLine(); } - if(ATAID.EnabledCommandSet3.HasFlag(CommandSetBit3.WWN)) sb.AppendFormat("World Wide Name: {0:X16}", ATAID.WWN).AppendLine(); + if(ATAID.EnabledCommandSet3.HasFlag(CommandSetBit3.WWN)) + sb.AppendFormat("World Wide Name: {0:X16}", ATAID.WWN).AppendLine(); } bool ata1 = false, @@ -2381,10 +2381,7 @@ namespace DiscImageChef.Decoders.ATA else logicalsectorsize = 512; if((ATAID.PhysLogSectorSize & 0x2000) == 0x2000) - { - physicalsectorsize = - logicalsectorsize * (uint)Math.Pow(2, ATAID.PhysLogSectorSize & 0xF); - } + physicalsectorsize = logicalsectorsize * (uint)Math.Pow(2, ATAID.PhysLogSectorSize & 0xF); else physicalsectorsize = logicalsectorsize; } else @@ -2422,9 +2419,11 @@ namespace DiscImageChef.Decoders.ATA ATAID.Cylinders * ATAID.Heads * ATAID.SectorsPerTrack).AppendLine(); } - if(ATAID.Capabilities.HasFlag(CapabilitiesBit.LBASupport)) sb.AppendFormat("{0} sectors in 28-bit LBA mode", ATAID.LBASectors).AppendLine(); + if(ATAID.Capabilities.HasFlag(CapabilitiesBit.LBASupport)) + sb.AppendFormat("{0} sectors in 28-bit LBA mode", ATAID.LBASectors).AppendLine(); - if(ATAID.CommandSet2.HasFlag(CommandSetBit2.LBA48)) sb.AppendFormat("{0} sectors in 48-bit LBA mode", ATAID.LBA48Sectors).AppendLine(); + if(ATAID.CommandSet2.HasFlag(CommandSetBit2.LBA48)) + sb.AppendFormat("{0} sectors in 48-bit LBA mode", ATAID.LBA48Sectors).AppendLine(); if(minatalevel <= 5) if(ATAID.CurrentSectors > 0) @@ -2533,8 +2532,8 @@ namespace DiscImageChef.Decoders.ATA switch(ATAID.BufferType) { case 1: - sb.AppendFormat("{0} KiB of single ported single sector buffer", - ATAID.BufferSize * 512 / 1024).AppendLine(); + sb.AppendFormat("{0} KiB of single ported single sector buffer", ATAID.BufferSize * 512 / 1024) + .AppendLine(); break; case 2: sb.AppendFormat("{0} KiB of dual ported multi sector buffer", ATAID.BufferSize * 512 / 1024) @@ -2758,7 +2757,8 @@ namespace DiscImageChef.Decoders.ATA .AppendFormat("At minimum {0} ns. transfer cycle time per word in PIO, " + "with IORDY flow control", ATAID.MinPIOCycleTimeFlow); - if(ATAID.MaxQueueDepth != 0) sb.AppendLine().AppendFormat("{0} depth of queue maximum", ATAID.MaxQueueDepth + 1); + if(ATAID.MaxQueueDepth != 0) + sb.AppendLine().AppendFormat("{0} depth of queue maximum", ATAID.MaxQueueDepth + 1); if(atapi) { @@ -2775,19 +2775,28 @@ namespace DiscImageChef.Decoders.ATA { if(!ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Clear)) { - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Gen1Speed)) sb.AppendLine().Append("SATA 1.5Gb/s is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Gen2Speed)) sb.AppendLine().Append("SATA 3.0Gb/s is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Gen3Speed)) sb.AppendLine().Append("SATA 6.0Gb/s is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.PowerReceipt)) sb.AppendLine().Append("Receipt of host initiated power management requests is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.PHYEventCounter)) sb.AppendLine().Append("PHY Event counters are supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.HostSlumbTrans)) sb.AppendLine().Append("Supports host automatic partial to slumber transitions is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.DevSlumbTrans)) sb.AppendLine().Append("Supports device automatic partial to slumber transitions is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Gen1Speed)) + sb.AppendLine().Append("SATA 1.5Gb/s is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Gen2Speed)) + sb.AppendLine().Append("SATA 3.0Gb/s is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Gen3Speed)) + sb.AppendLine().Append("SATA 6.0Gb/s is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.PowerReceipt)) + sb.AppendLine().Append("Receipt of host initiated power management requests is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.PHYEventCounter)) + sb.AppendLine().Append("PHY Event counters are supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.HostSlumbTrans)) + sb.AppendLine().Append("Supports host automatic partial to slumber transitions is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.DevSlumbTrans)) + sb.AppendLine().Append("Supports device automatic partial to slumber transitions is supported"); if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.NCQ)) { sb.AppendLine().Append("NCQ is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.NCQPriority)) sb.AppendLine().Append("NCQ priority is supported"); - if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.UnloadNCQ)) sb.AppendLine().Append("Unload is supported with outstanding NCQ commands"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.NCQPriority)) + sb.AppendLine().Append("NCQ priority is supported"); + if(ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.UnloadNCQ)) + sb.AppendLine().Append("Unload is supported with outstanding NCQ commands"); } } @@ -2796,14 +2805,18 @@ namespace DiscImageChef.Decoders.ATA if(!ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.Clear) && ATAID.SATACapabilities.HasFlag(SATACapabilitiesBit.NCQ)) { - if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.NCQMgmt)) sb.AppendLine().Append("NCQ queue management is supported"); - if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.NCQStream)) sb.AppendLine().Append("NCQ streaming is supported"); + if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.NCQMgmt)) + sb.AppendLine().Append("NCQ queue management is supported"); + if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.NCQStream)) + sb.AppendLine().Append("NCQ streaming is supported"); } if(atapi) { - if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.HostEnvDetect)) sb.AppendLine().Append("ATAPI device supports host environment detection"); - if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.DevAttSlimline)) sb.AppendLine().Append("ATAPI device supports attention on slimline connected devices"); + if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.HostEnvDetect)) + sb.AppendLine().Append("ATAPI device supports host environment detection"); + if(ATAID.SATACapabilities2.HasFlag(SATACapabilitiesBit2.DevAttSlimline)) + sb.AppendLine().Append("ATAPI device supports attention on slimline connected devices"); } //sb.AppendFormat("Negotiated speed = {0}", ((ushort)ATAID.SATACapabilities2 & 0x000E) >> 1); @@ -2967,7 +2980,8 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.EnabledCommandSet2.HasFlag(CommandSetBit2.AddressOffsetReservedAreaBoot)) sb.Append(" and enabled"); } - if(ATAID.CommandSet2.HasFlag(CommandSetBit2.SetFeaturesRequired)) sb.AppendLine().Append("SET FEATURES is required before spin-up"); + if(ATAID.CommandSet2.HasFlag(CommandSetBit2.SetFeaturesRequired)) + sb.AppendLine().Append("SET FEATURES is required before spin-up"); if(ATAID.CommandSet2.HasFlag(CommandSetBit2.PowerUpInStandby)) { sb.AppendLine().Append("Power-up in standby is supported"); @@ -2982,7 +2996,8 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.CommandSet2.HasFlag(CommandSetBit2.APM)) { sb.AppendLine().Append("Advanced Power Management is supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommandSetBit2.APM)) sb.AppendFormat(" and enabled with value {0}", ATAID.CurrentAPM); + if(ATAID.EnabledCommandSet2.HasFlag(CommandSetBit2.APM)) + sb.AppendFormat(" and enabled with value {0}", ATAID.CurrentAPM); } if(ATAID.CommandSet2.HasFlag(CommandSetBit2.CompactFlash)) { @@ -3028,9 +3043,12 @@ namespace DiscImageChef.Decoders.ATA sb.AppendLine().Append("IDLE IMMEDIATE with UNLOAD FEATURE is supported"); if(ATAID.EnabledCommandSet3.HasFlag(CommandSetBit3.IdleImmediate)) sb.Append(" and enabled"); } - if(ATAID.CommandSet3.HasFlag(CommandSetBit3.WriteURG)) sb.AppendLine().Append("URG bit is supported in WRITE STREAM DMA EXT and WRITE STREAM EXT"); - if(ATAID.CommandSet3.HasFlag(CommandSetBit3.ReadURG)) sb.AppendLine().Append("URG bit is supported in READ STREAM DMA EXT and READ STREAM EXT"); - if(ATAID.CommandSet3.HasFlag(CommandSetBit3.WWN)) sb.AppendLine().Append("Device has a World Wide Name"); + if(ATAID.CommandSet3.HasFlag(CommandSetBit3.WriteURG)) + sb.AppendLine().Append("URG bit is supported in WRITE STREAM DMA EXT and WRITE STREAM EXT"); + if(ATAID.CommandSet3.HasFlag(CommandSetBit3.ReadURG)) + sb.AppendLine().Append("URG bit is supported in READ STREAM DMA EXT and READ STREAM EXT"); + if(ATAID.CommandSet3.HasFlag(CommandSetBit3.WWN)) + sb.AppendLine().Append("Device has a World Wide Name"); if(ATAID.CommandSet3.HasFlag(CommandSetBit3.FUAWriteQ)) { sb.AppendLine().Append("WRITE DMA QUEUED FUA EXT is supported"); @@ -3132,23 +3150,33 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.CommandSet5.HasFlag(CommandSetBit5.DeviceConfDMA)) sb.AppendLine() .Append("DEVICE CONFIGURATION IDENTIFY DMA and DEVICE CONFIGURATION SET DMA are supported"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ReadBufferDMA)) sb.AppendLine().Append("READ BUFFER DMA is supported"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.WriteBufferDMA)) sb.AppendLine().Append("WRITE BUFFER DMA is supported"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.DownloadMicroCodeDMA)) sb.AppendLine().Append("DOWNLOAD MICROCODE DMA is supported"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.SetMaxDMA)) sb.AppendLine().Append("SET PASSWORD DMA and SET UNLOCK DMA are supported"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.Ata28)) sb.AppendLine().Append("Not all 28-bit commands are supported"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ReadBufferDMA)) + sb.AppendLine().Append("READ BUFFER DMA is supported"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.WriteBufferDMA)) + sb.AppendLine().Append("WRITE BUFFER DMA is supported"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.DownloadMicroCodeDMA)) + sb.AppendLine().Append("DOWNLOAD MICROCODE DMA is supported"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.SetMaxDMA)) + sb.AppendLine().Append("SET PASSWORD DMA and SET UNLOCK DMA are supported"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.Ata28)) + sb.AppendLine().Append("Not all 28-bit commands are supported"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.CFast)) sb.AppendLine().Append("Device follows CFast specification"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.CFast)) + sb.AppendLine().Append("Device follows CFast specification"); if(ATAID.CommandSet5.HasFlag(CommandSetBit5.IEEE1667)) sb.AppendLine().Append("Device follows IEEE-1667"); if(ATAID.CommandSet5.HasFlag(CommandSetBit5.DeterministicTrim)) { sb.AppendLine().Append("Read after TRIM is deterministic"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ReadZeroTrim)) sb.AppendLine().Append("Read after TRIM returns empty data"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ReadZeroTrim)) + sb.AppendLine().Append("Read after TRIM returns empty data"); } - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.LongPhysSectorAligError)) sb.AppendLine().Append("Device supports Long Physical Sector Alignment Error Reporting Control"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.Encrypted)) sb.AppendLine().Append("Device encrypts all user data"); - if(ATAID.CommandSet5.HasFlag(CommandSetBit5.AllCacheNV)) sb.AppendLine().Append("Device's write cache is non-volatile"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.LongPhysSectorAligError)) + sb.AppendLine().Append("Device supports Long Physical Sector Alignment Error Reporting Control"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.Encrypted)) + sb.AppendLine().Append("Device encrypts all user data"); + if(ATAID.CommandSet5.HasFlag(CommandSetBit5.AllCacheNV)) + sb.AppendLine().Append("Device's write cache is non-volatile"); if(ATAID.CommandSet5.HasFlag(CommandSetBit5.ZonedBit0) || ATAID.CommandSet5.HasFlag(CommandSetBit5.ZonedBit1)) sb.AppendLine().Append("Device is zoned"); @@ -3223,13 +3251,17 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.EnabledSATAFeatures.HasFlag(SATAFeaturesBit.SettingsPreserve)) sb.Append(" and enabled"); } - if(ATAID.SATAFeatures.HasFlag(SATAFeaturesBit.NCQAutoSense)) sb.AppendLine().Append("NCQ Autosense is supported"); - if(ATAID.EnabledSATAFeatures.HasFlag(SATAFeaturesBit.EnabledSlumber)) sb.AppendLine().Append("Automatic Partial to Slumber transitions are enabled"); + if(ATAID.SATAFeatures.HasFlag(SATAFeaturesBit.NCQAutoSense)) + sb.AppendLine().Append("NCQ Autosense is supported"); + if(ATAID.EnabledSATAFeatures.HasFlag(SATAFeaturesBit.EnabledSlumber)) + sb.AppendLine().Append("Automatic Partial to Slumber transitions are enabled"); } } - if((ATAID.RemovableStatusSet & 0x03) > 0) sb.AppendLine().Append("Removable Media Status Notification feature set is supported"); + if((ATAID.RemovableStatusSet & 0x03) > 0) + sb.AppendLine().Append("Removable Media Status Notification feature set is supported"); - if(ATAID.FreeFallSensitivity != 0x00 && ATAID.FreeFallSensitivity != 0xFF) sb.AppendLine().AppendFormat("Free-fall sensitivity set to {0}", ATAID.FreeFallSensitivity); + if(ATAID.FreeFallSensitivity != 0x00 && ATAID.FreeFallSensitivity != 0xFF) + sb.AppendLine().AppendFormat("Free-fall sensitivity set to {0}", ATAID.FreeFallSensitivity); if(ATAID.DataSetMgmt.HasFlag(DataSetMgmtBit.Trim)) sb.AppendLine().Append("TRIM is supported"); if(ATAID.DataSetMgmtSize > 0) @@ -3386,7 +3418,7 @@ namespace DiscImageChef.Decoders.ATA return BitConverter.ToUInt64(qword, 0); } - static string DescrambleATAString(byte[] buffer, int offset, int length) + static string DescrambleATAString(IList buffer, int offset, int length) { byte[] outbuf = buffer[offset + length - 1] != 0x00 ? new byte[length + 1] : new byte[length]; diff --git a/Blu-ray/BCA.cs b/Blu-ray/BCA.cs index e9be911..c45727c 100644 --- a/Blu-ray/BCA.cs +++ b/Blu-ray/BCA.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Bluray { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -112,23 +112,23 @@ namespace DiscImageChef.Decoders.Bluray public struct BurstCuttingArea { /// - /// Bytes 0 to 1 - /// Always 66 + /// Bytes 0 to 1 + /// Always 66 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 to 67 - /// BCA data + /// Byte 4 to 67 + /// BCA data /// public byte[] BCA; } diff --git a/Blu-ray/Cartridge.cs b/Blu-ray/Cartridge.cs index 99ad147..a3a00dc 100644 --- a/Blu-ray/Cartridge.cs +++ b/Blu-ray/Cartridge.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Bluray { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -137,58 +137,58 @@ namespace DiscImageChef.Decoders.Bluray public struct CartridgeStatus { /// - /// Bytes 0 to 1 - /// Always 6 + /// Bytes 0 to 1 + /// Always 6 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bit 7 - /// Medium is inserted in a cartridge + /// Byte 4, bit 7 + /// Medium is inserted in a cartridge /// public bool Cartridge; /// - /// Byte 4, bit 6 - /// Medium taken out / put in a cartridge + /// Byte 4, bit 6 + /// Medium taken out / put in a cartridge /// public bool OUT; /// - /// Byte 4, bits 5 to 3 - /// Reserved + /// Byte 4, bits 5 to 3 + /// Reserved /// public byte Reserved3; /// - /// Byte 4, bit 2 - /// Cartridge sets write protection + /// Byte 4, bit 2 + /// Cartridge sets write protection /// public bool CWP; /// - /// Byte 4, bits 1 to 0 - /// Reserved + /// Byte 4, bits 1 to 0 + /// Reserved /// public byte Reserved4; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved5; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved6; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved7; } diff --git a/Blu-ray/DDS.cs b/Blu-ray/DDS.cs index 8c7d97c..1130de2 100644 --- a/Blu-ray/DDS.cs +++ b/Blu-ray/DDS.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Bluray { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,7 +60,7 @@ namespace DiscImageChef.Decoders.Bluray { #region Private constants /// - /// Disc Definition Structure Identifier "DS" + /// Disc Definition Structure Identifier "DS" /// const ushort DDSIdentifier = 0x4453; #endregion Private constants @@ -162,128 +162,128 @@ namespace DiscImageChef.Decoders.Bluray public struct DiscDefinitionStructure { /// - /// Bytes 0 to 1 - /// Data Length + /// Bytes 0 to 1 + /// Data Length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 5 - /// "DS" + /// Bytes 4 to 5 + /// "DS" /// public ushort Signature; /// - /// Byte 6 - /// DDS format + /// Byte 6 + /// DDS format /// public byte Format; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved3; /// - /// Bytes 8 to 11 - /// DDS update count + /// Bytes 8 to 11 + /// DDS update count /// public uint UpdateCount; /// - /// Bytes 12 to 19 - /// Reserved + /// Bytes 12 to 19 + /// Reserved /// public ulong Reserved4; /// - /// Bytes 20 to 23 - /// First PSN of Drive Area + /// Bytes 20 to 23 + /// First PSN of Drive Area /// public uint DriveAreaPSN; /// - /// Bytes 24 to 27 - /// Reserved + /// Bytes 24 to 27 + /// Reserved /// public uint Reserved5; /// - /// Bytes 28 to 31 - /// First PSN of Defect List + /// Bytes 28 to 31 + /// First PSN of Defect List /// public uint DefectListPSN; /// - /// Bytes 32 to 35 - /// Reserved + /// Bytes 32 to 35 + /// Reserved /// public uint Reserved6; /// - /// Bytes 36 to 39 - /// PSN of LSN 0 of user data area + /// Bytes 36 to 39 + /// PSN of LSN 0 of user data area /// public uint PSNofLSNZero; /// - /// Bytes 40 to 43 - /// Last LSN of user data area + /// Bytes 40 to 43 + /// Last LSN of user data area /// public uint LastUserAreaLSN; /// - /// Bytes 44 to 47 - /// ISA0 size + /// Bytes 44 to 47 + /// ISA0 size /// public uint ISA0; /// - /// Bytes 48 to 51 - /// OSA size + /// Bytes 48 to 51 + /// OSA size /// public uint OSA; /// - /// Bytes 52 to 55 - /// ISA1 size + /// Bytes 52 to 55 + /// ISA1 size /// public uint ISA1; /// - /// Byte 56 - /// Spare Area full flags + /// Byte 56 + /// Spare Area full flags /// public byte SpareAreaFullFlags; /// - /// Byte 57 - /// Reserved + /// Byte 57 + /// Reserved /// public byte Reserved7; /// - /// Byte 58 - /// Disc type specific field + /// Byte 58 + /// Disc type specific field /// public byte DiscTypeSpecificField1; /// - /// Byte 59 - /// Reserved + /// Byte 59 + /// Reserved /// public byte Reserved8; /// - /// Byte 60 to 63 - /// Disc type specific field + /// Byte 60 to 63 + /// Disc type specific field /// public uint DiscTypeSpecificField2; /// - /// Byte 64 to 67 - /// Reserved + /// Byte 64 to 67 + /// Reserved /// public uint Reserved9; /// - /// Bytes 68 to 99 - /// Status bits of INFO1/2 and PAC1/2 on L0 and L1 + /// Bytes 68 to 99 + /// Status bits of INFO1/2 and PAC1/2 on L0 and L1 /// public byte[] StatusBits; /// - /// Bytes 100 to end - /// Disc type specific data + /// Bytes 100 to end + /// Disc type specific data /// public byte[] DiscTypeSpecificData; } diff --git a/Blu-ray/DI.cs b/Blu-ray/DI.cs index 2fe49b2..8b1ec68 100644 --- a/Blu-ray/DI.cs +++ b/Blu-ray/DI.cs @@ -39,19 +39,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Bluray { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -65,7 +65,7 @@ namespace DiscImageChef.Decoders.Bluray const string DiscTypeBDR = "BDR"; /// - /// Disc Information Unit Identifier "DI" + /// Disc Information Unit Identifier "DI" /// const ushort DIUIdentifier = 0x4449; #endregion Private constants @@ -204,23 +204,23 @@ namespace DiscImageChef.Decoders.Bluray public struct DiscInformation { /// - /// Bytes 0 to 1 - /// Always 4098 + /// Bytes 0 to 1 + /// Always 4098 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 to 4099 - /// Disc information units + /// Byte 4 to 4099 + /// Disc information units /// public DiscInformationUnits[] Units; } @@ -228,73 +228,73 @@ namespace DiscImageChef.Decoders.Bluray public struct DiscInformationUnits { /// - /// Byte 0 - /// "DI" + /// Byte 0 + /// "DI" /// public ushort Signature; /// - /// Byte 2 - /// Disc information format + /// Byte 2 + /// Disc information format /// public byte Format; /// - /// Byte 3 - /// Number of DI units per block + /// Byte 3 + /// Number of DI units per block /// public byte UnitsPerBlock; /// - /// Byte 4 - /// Reserved for BD-ROM, legacy information for BD-R/-RE + /// Byte 4 + /// Reserved for BD-ROM, legacy information for BD-R/-RE /// public byte Legacy; /// - /// Byte 5 - /// Sequence number for this DI unit + /// Byte 5 + /// Sequence number for this DI unit /// public byte Sequence; /// - /// Byte 6 - /// Number of bytes used by this DI unit, should be 64 for BD-ROM and 112 for BD-R/-RE + /// Byte 6 + /// Number of bytes used by this DI unit, should be 64 for BD-ROM and 112 for BD-R/-RE /// public byte Length; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved; /// - /// Bytes 8 to 10 - /// Disc type identifier + /// Bytes 8 to 10 + /// Disc type identifier /// public byte[] DiscTypeIdentifier; /// - /// Byte 11 - /// Disc size/class/version + /// Byte 11 + /// Disc size/class/version /// public byte DiscSizeClassVersion; /// - /// Bytes 12 to 63 for BD-ROM, bytes 12 to 99 for BD-R/-RE - /// Format dependent contents, disclosed in private blu-ray specifications + /// Bytes 12 to 63 for BD-ROM, bytes 12 to 99 for BD-R/-RE + /// Format dependent contents, disclosed in private blu-ray specifications /// public byte[] FormatDependentContents; /// - /// Bytes 100 to 105, BD-R/-RE only - /// Manufacturer ID + /// Bytes 100 to 105, BD-R/-RE only + /// Manufacturer ID /// public byte[] ManufacturerID; /// - /// Bytes 106 to 108, BD-R/-RE only - /// Media type ID + /// Bytes 106 to 108, BD-R/-RE only + /// Media type ID /// public byte[] MediaTypeID; /// - /// Bytes 109 to 110, BD-R/-RE only - /// Timestamp + /// Bytes 109 to 110, BD-R/-RE only + /// Timestamp /// public ushort TimeStamp; /// - /// Byte 111 - /// Product revision number + /// Byte 111 + /// Product revision number /// public byte ProductRevisionNumber; } diff --git a/Blu-ray/Spare.cs b/Blu-ray/Spare.cs index 6a80d22..d658d4e 100644 --- a/Blu-ray/Spare.cs +++ b/Blu-ray/Spare.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Bluray { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -114,33 +114,33 @@ namespace DiscImageChef.Decoders.Bluray public struct SpareAreaInformation { /// - /// Bytes 0 to 1 - /// Always 14 + /// Bytes 0 to 1 + /// Always 14 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// Reserved + /// Bytes 4 to 7 + /// Reserved /// public uint Reserved3; /// - /// Bytes 8 to 11 - /// Free spare blocks + /// Bytes 8 to 11 + /// Free spare blocks /// public uint FreeSpareBlocks; /// - /// Bytes 12 to 15 - /// Allocated spare blocks + /// Bytes 12 to 15 + /// Allocated spare blocks /// public uint AllocatedSpareBlocks; } diff --git a/CD/ATIP.cs b/CD/ATIP.cs index a98ba97..a1ca824 100644 --- a/CD/ATIP.cs +++ b/CD/ATIP.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.CD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -61,163 +61,163 @@ namespace DiscImageChef.Decoders.CD public struct CDATIP { /// - /// Bytes 1 to 0 - /// Total size of returned session information minus this field + /// Bytes 1 to 0 + /// Total size of returned session information minus this field /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bits 7 to 4 - /// Indicative target writing power + /// Byte 4, bits 7 to 4 + /// Indicative target writing power /// public byte ITWP; /// - /// Byte 4, bit 3 - /// Set if DDCD + /// Byte 4, bit 3 + /// Set if DDCD /// public bool DDCD; /// - /// Byte 4, bits 2 to 0 - /// Reference speed + /// Byte 4, bits 2 to 0 + /// Reference speed /// public byte ReferenceSpeed; /// - /// Byte 5, bit 7 - /// Always unset + /// Byte 5, bit 7 + /// Always unset /// public bool AlwaysZero; /// - /// Byte 5, bit 6 - /// Unrestricted media + /// Byte 5, bit 6 + /// Unrestricted media /// public bool URU; /// - /// Byte 5, bits 5 to 0 - /// Reserved + /// Byte 5, bits 5 to 0 + /// Reserved /// public byte Reserved3; /// - /// Byte 6, bit 7 - /// Always set + /// Byte 6, bit 7 + /// Always set /// public bool AlwaysOne; /// - /// Byte 6, bit 6 - /// Set if rewritable (CD-RW or DDCD-RW) + /// Byte 6, bit 6 + /// Set if rewritable (CD-RW or DDCD-RW) /// public bool DiscType; /// - /// Byte 6, bits 5 to 3 - /// Disc subtype + /// Byte 6, bits 5 to 3 + /// Disc subtype /// public byte DiscSubType; /// - /// Byte 6, bit 2 - /// A1 values are valid + /// Byte 6, bit 2 + /// A1 values are valid /// public bool A1Valid; /// - /// Byte 6, bit 1 - /// A2 values are valid + /// Byte 6, bit 1 + /// A2 values are valid /// public bool A2Valid; /// - /// Byte 6, bit 0 - /// A3 values are valid + /// Byte 6, bit 0 + /// A3 values are valid /// public bool A3Valid; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved4; /// - /// Byte 8 - /// ATIP Start time of Lead-In (Minute) + /// Byte 8 + /// ATIP Start time of Lead-In (Minute) /// public byte LeadInStartMin; /// - /// Byte 9 - /// ATIP Start time of Lead-In (Second) + /// Byte 9 + /// ATIP Start time of Lead-In (Second) /// public byte LeadInStartSec; /// - /// Byte 10 - /// ATIP Start time of Lead-In (Frame) + /// Byte 10 + /// ATIP Start time of Lead-In (Frame) /// public byte LeadInStartFrame; /// - /// Byte 11 - /// Reserved + /// Byte 11 + /// Reserved /// public byte Reserved5; /// - /// Byte 12 - /// ATIP Last possible start time of Lead-Out (Minute) + /// Byte 12 + /// ATIP Last possible start time of Lead-Out (Minute) /// public byte LeadOutStartMin; /// - /// Byte 13 - /// ATIP Last possible start time of Lead-Out (Second) + /// Byte 13 + /// ATIP Last possible start time of Lead-Out (Second) /// public byte LeadOutStartSec; /// - /// Byte 14 - /// ATIP Last possible start time of Lead-Out (Frame) + /// Byte 14 + /// ATIP Last possible start time of Lead-Out (Frame) /// public byte LeadOutStartFrame; /// - /// Byte 15 - /// Reserved + /// Byte 15 + /// Reserved /// public byte Reserved6; /// - /// Bytes 16 to 18 - /// A1 values + /// Bytes 16 to 18 + /// A1 values /// public byte[] A1Values; /// - /// Byte 19 - /// Reserved + /// Byte 19 + /// Reserved /// public byte Reserved7; /// - /// Bytes 20 to 22 - /// A2 values + /// Bytes 20 to 22 + /// A2 values /// public byte[] A2Values; /// - /// Byte 23 - /// Reserved + /// Byte 23 + /// Reserved /// public byte Reserved8; /// - /// Bytes 24 to 26 - /// A3 values + /// Bytes 24 to 26 + /// A3 values /// public byte[] A3Values; /// - /// Byte 27 - /// Reserved + /// Byte 27 + /// Reserved /// public byte Reserved9; /// - /// Bytes 28 to 30 - /// S4 values + /// Bytes 28 to 30 + /// S4 values /// public byte[] S4Values; /// - /// Byte 31 - /// Reserved + /// Byte 31 + /// Reserved /// public byte Reserved10; } @@ -434,11 +434,9 @@ namespace DiscImageChef.Decoders.CD if(response.DiscType) sb.AppendLine("Disc uses phase change"); else - { sb.AppendLine(type < 5 ? "Disc uses long strategy type dye (Cyanine, AZO, etc...)" : "Disc uses short strategy type dye (Phthalocyanine, etc...)"); - } string manufacturer = ManufacturerFromATIP(response.LeadInStartSec, frm); @@ -458,7 +456,8 @@ namespace DiscImageChef.Decoders.CD switch(sec) { case 15: - switch(frm) { + switch(frm) + { case 00: return "TDK Corporation"; case 10: return "Ritek Co."; case 20: return "Mitsubishi Chemical Corporation"; @@ -467,7 +466,8 @@ namespace DiscImageChef.Decoders.CD break; case 16: - switch(frm) { + switch(frm) + { case 20: return "Shenzen SG&Gast Digital Optical Discs"; case 30: return "Grand Advance Technology Ltd."; } @@ -478,7 +478,8 @@ namespace DiscImageChef.Decoders.CD break; case 18: - switch(frm) { + switch(frm) + { case 10: return "Wealth Fair Investment Ltd."; case 60: return "Taroko International Co. Ltd."; } @@ -489,7 +490,8 @@ namespace DiscImageChef.Decoders.CD break; case 21: - switch(frm) { + switch(frm) + { case 10: return "Grupo Condor S.L."; case 30: return "Bestdisc Technology Corporation"; case 40: return "Optical Disc Manufacturing Equipment"; @@ -498,7 +500,8 @@ namespace DiscImageChef.Decoders.CD break; case 22: - switch(frm) { + switch(frm) + { case 00: return "Woongjin Media Corp."; case 10: return "Seantram Technology Inc."; case 20: return "Advanced Digital Media"; @@ -510,7 +513,8 @@ namespace DiscImageChef.Decoders.CD break; case 23: - switch(frm) { + switch(frm) + { case 00: return "Matsushita Electric Industrial Co., Ltd."; case 10: return "Doremi Media Co., Ltd."; case 20: return "Nacar Media s.r.l."; @@ -522,7 +526,8 @@ namespace DiscImageChef.Decoders.CD break; case 24: - switch(frm) { + switch(frm) + { case 00: return "Taiyo Yuden Company Ltd."; case 10: return "SONY Corporation"; case 20: return "Computer Support Italy s.r.l."; @@ -534,7 +539,8 @@ namespace DiscImageChef.Decoders.CD break; case 25: - switch(frm) { + switch(frm) + { case 00: return "MPO"; case 20: return "Hitachi Maxell, Ltd."; case 30: return "Infodisc Technology Co. Ltd."; @@ -545,7 +551,8 @@ namespace DiscImageChef.Decoders.CD break; case 26: - switch(frm) { + switch(frm) + { case 00: return "Fornet International Pte Ltd."; case 10: return "POSTECH Corporation"; case 20: return "SKC Co., Ltd."; @@ -557,7 +564,8 @@ namespace DiscImageChef.Decoders.CD break; case 27: - switch(frm) { + switch(frm) + { case 00: return "Digital Storage Technology Co., Ltd."; case 10: return "Plasmon Data systems Ltd."; case 20: return "Princo Corporation"; @@ -569,7 +577,8 @@ namespace DiscImageChef.Decoders.CD break; case 28: - switch(frm) { + switch(frm) + { case 00: return "Opti.Me.S. S.p.A."; case 10: return "Gigastore Corporation"; case 20: return "Multi Media Masters & Machinary SA"; @@ -581,7 +590,8 @@ namespace DiscImageChef.Decoders.CD break; case 29: - switch(frm) { + switch(frm) + { case 00: return "Taeil Media Co., Ltd."; case 10: return "Vanguard Disc Inc."; case 20: return "Unidisc Technology Co., Ltd."; @@ -596,14 +606,16 @@ namespace DiscImageChef.Decoders.CD break; case 31: - switch(frm) { + switch(frm) + { case 00: return "Ritek Co."; case 30: return "Grand Advance Technology Ltd."; } break; case 32: - switch(frm) { + switch(frm) + { case 00: return "TDK Corporation"; case 10: return "Prodisc Technology Inc."; } @@ -618,7 +630,8 @@ namespace DiscImageChef.Decoders.CD break; case 45: - switch(frm) { + switch(frm) + { case 00: return "Fornet International Pte Ltd."; case 10: return "Unitech Japan Inc."; case 20: return "Acer Media Technology, Inc."; @@ -629,7 +642,8 @@ namespace DiscImageChef.Decoders.CD break; case 46: - switch(frm) { + switch(frm) + { case 00: return "Taiyo Yuden Company Ltd."; case 10: return "Hong Kong Digital Technology Co., Ltd."; case 20: return "Multi Media Masters & Machinary SA"; @@ -641,7 +655,8 @@ namespace DiscImageChef.Decoders.CD break; case 47: - switch(frm) { + switch(frm) + { case 10: return "Hitachi Maxell, Ltd."; case 20: return "Princo Corporation"; case 40: return "POSTECH Corporation"; @@ -651,7 +666,8 @@ namespace DiscImageChef.Decoders.CD break; case 48: - switch(frm) { + switch(frm) + { case 00: return "Ricoh Company Ltd."; case 10: return "Kodak Japan Ltd."; case 20: return "Plasmon Data systems Ltd."; @@ -663,7 +679,8 @@ namespace DiscImageChef.Decoders.CD break; case 49: - switch(frm) { + switch(frm) + { case 00: return "TDK Corporation"; case 10: return "Gigastore Corporation"; case 20: return "King Pro Mediatek Inc."; @@ -674,7 +691,8 @@ namespace DiscImageChef.Decoders.CD break; case 50: - switch(frm) { + switch(frm) + { case 10: return "Vanguard Disc Inc."; case 20: return "Mitsubishi Chemical Corporation"; case 30: return "CDA Datenträger Albrechts GmbH"; @@ -682,7 +700,8 @@ namespace DiscImageChef.Decoders.CD break; case 51: - switch(frm) { + switch(frm) + { case 10: return "Grand Advance Technology Ltd."; case 20: return "Infodisc Technology Co. Ltd."; case 50: return "Hile Optical Disc Technology Corp."; diff --git a/CD/CDTextOnLeadIn.cs b/CD/CDTextOnLeadIn.cs index 832ccfe..56a6fdc 100644 --- a/CD/CDTextOnLeadIn.cs +++ b/CD/CDTextOnLeadIn.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.CD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -61,67 +61,67 @@ namespace DiscImageChef.Decoders.CD public enum PackTypeIndicator : byte { /// - /// Title of the track (or album if track == 0) + /// Title of the track (or album if track == 0) /// Title = 0x80, /// - /// Performer + /// Performer /// Performer = 0x81, /// - /// Songwriter + /// Songwriter /// Songwriter = 0x82, /// - /// Composer + /// Composer /// Composer = 0x83, /// - /// Arranger + /// Arranger /// Arranger = 0x84, /// - /// Message from the content provider or artist + /// Message from the content provider or artist /// Message = 0x85, /// - /// Disc identification information + /// Disc identification information /// DiscIdentification = 0x86, /// - /// Genre identification + /// Genre identification /// GenreIdentification = 0x87, /// - /// Table of content information + /// Table of content information /// TOCInformation = 0x88, /// - /// Second table of content information + /// Second table of content information /// SecondTOCInformation = 0x89, /// - /// Reserved + /// Reserved /// Reserved1 = 0x8A, /// - /// Reserved + /// Reserved /// Reserved2 = 0x8B, /// - /// Reserved + /// Reserved /// Reserved3 = 0x8C, /// - /// Reserved for content provider only + /// Reserved for content provider only /// ReservedForContentProvider = 0x8D, /// - /// UPC of album or ISRC of track + /// UPC of album or ISRC of track /// UPCorISRC = 0x8E, /// - /// Size information of the block + /// Size information of the block /// BlockSizeInformation = 0x8F } @@ -129,19 +129,19 @@ namespace DiscImageChef.Decoders.CD public struct CDText { /// - /// Total size of returned CD-Text information minus this field + /// Total size of returned CD-Text information minus this field /// public ushort DataLength; /// - /// Reserved + /// Reserved /// public byte Reserved1; /// - /// Reserved + /// Reserved /// public byte Reserved2; /// - /// CD-Text data packs + /// CD-Text data packs /// public CDTextPack[] DataPacks; } @@ -149,43 +149,43 @@ namespace DiscImageChef.Decoders.CD public struct CDTextPack { /// - /// Byte 0 - /// Pack ID1 (Pack Type) + /// Byte 0 + /// Pack ID1 (Pack Type) /// public byte HeaderID1; /// - /// Byte 1 - /// Pack ID2 (Track number) + /// Byte 1 + /// Pack ID2 (Track number) /// public byte HeaderID2; /// - /// Byte 2 - /// Pack ID3 + /// Byte 2 + /// Pack ID3 /// public byte HeaderID3; /// - /// Byte 3, bit 7 - /// Double Byte Character Code + /// Byte 3, bit 7 + /// Double Byte Character Code /// public bool DBCC; /// - /// Byte 3, bits 6 to 4 - /// Block number + /// Byte 3, bits 6 to 4 + /// Block number /// public byte BlockNumber; /// - /// Byte 3, bits 3 to 0 - /// Character position + /// Byte 3, bits 3 to 0 + /// Character position /// public byte CharacterPosition; /// - /// Bytes 4 to 15 - /// Text data + /// Bytes 4 to 15 + /// Text data /// public byte[] TextDataField; /// - /// Bytes 16 to 17 - /// CRC16 + /// Bytes 16 to 17 + /// CRC16 /// public ushort CRC; } diff --git a/CD/Enums.cs b/CD/Enums.cs index 2698510..5e95552 100644 --- a/CD/Enums.cs +++ b/CD/Enums.cs @@ -38,27 +38,27 @@ namespace DiscImageChef.Decoders.CD public enum TocAdr : byte { /// - /// Q Sub-channel mode information not supplied + /// Q Sub-channel mode information not supplied /// NoInformation = 0x00, /// - /// Q Sub-channel encodes current position data + /// Q Sub-channel encodes current position data /// CurrentPosition = 0x01, /// - /// Q Sub-channel encodes the media catalog number + /// Q Sub-channel encodes the media catalog number /// MediaCatalogNumber = 0x02, /// - /// Q Sub-channel encodes the ISRC + /// Q Sub-channel encodes the ISRC /// ISRC = 0x03, /// - /// Q Sub-channel encodes the start of an audio/data track (if found in TOC) + /// Q Sub-channel encodes the start of an audio/data track (if found in TOC) /// TrackPointer = 0x01, /// - /// Q Sub-channel encodes the start of a video track (if found in TOC) for CD-V + /// Q Sub-channel encodes the start of a video track (if found in TOC) for CD-V /// VideoTrackPointer = 0x04 } @@ -66,35 +66,35 @@ namespace DiscImageChef.Decoders.CD public enum TocControl : byte { /// - /// Stereo audio, no pre-emphasis + /// Stereo audio, no pre-emphasis /// TwoChanNoPreEmph = 0x00, /// - /// Stereo audio with pre-emphasis + /// Stereo audio with pre-emphasis /// TwoChanPreEmph = 0x01, /// - /// If mask applied, track can be copied + /// If mask applied, track can be copied /// CopyPermissionMask = 0x02, /// - /// Data track, recorded uninterrumpted + /// Data track, recorded uninterrumpted /// DataTrack = 0x04, /// - /// Data track, recorded incrementally + /// Data track, recorded incrementally /// DataTrackIncremental = 0x05, /// - /// Quadraphonic audio, no pre-emphasis + /// Quadraphonic audio, no pre-emphasis /// FourChanNoPreEmph = 0x08, /// - /// Quadraphonic audio with pre-emphasis + /// Quadraphonic audio with pre-emphasis /// FourChanPreEmph = 0x09, /// - /// Reserved mask + /// Reserved mask /// ReservedMask = 0x0C } diff --git a/CD/FullTOC.cs b/CD/FullTOC.cs index 27bc297..c672f21 100644 --- a/CD/FullTOC.cs +++ b/CD/FullTOC.cs @@ -38,21 +38,21 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.CD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ISO/IEC 61104: Compact disc video system - 12 cm CD-V - /// ISO/IEC 60908: Audio recording - Compact disc digital audio system + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ISO/IEC 61104: Compact disc video system - 12 cm CD-V + /// ISO/IEC 60908: Audio recording - Compact disc digital audio system /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -69,19 +69,19 @@ namespace DiscImageChef.Decoders.CD public struct CDFullTOC { /// - /// Total size of returned session information minus this field + /// Total size of returned session information minus this field /// public ushort DataLength; /// - /// First complete session number in hex + /// First complete session number in hex /// public byte FirstCompleteSession; /// - /// Last complete session number in hex + /// Last complete session number in hex /// public byte LastCompleteSession; /// - /// Track descriptors + /// Track descriptors /// public TrackDataDescriptor[] TrackDescriptors; } @@ -89,62 +89,62 @@ namespace DiscImageChef.Decoders.CD public struct TrackDataDescriptor { /// - /// Byte 0 - /// Session number in hex + /// Byte 0 + /// Session number in hex /// public byte SessionNumber; /// - /// Byte 1, bits 7 to 4 - /// Type of information in Q subchannel of block where this TOC entry was found + /// Byte 1, bits 7 to 4 + /// Type of information in Q subchannel of block where this TOC entry was found /// public byte ADR; /// - /// Byte 1, bits 3 to 0 - /// Track attributes + /// Byte 1, bits 3 to 0 + /// Track attributes /// public byte CONTROL; /// - /// Byte 2 + /// Byte 2 /// public byte TNO; /// - /// Byte 3 + /// Byte 3 /// public byte POINT; /// - /// Byte 4 + /// Byte 4 /// public byte Min; /// - /// Byte 5 + /// Byte 5 /// public byte Sec; /// - /// Byte 6 + /// Byte 6 /// public byte Frame; /// - /// Byte 7, CD only + /// Byte 7, CD only /// public byte Zero; /// - /// Byte 7, bits 7 to 4, DDCD only + /// Byte 7, bits 7 to 4, DDCD only /// public byte HOUR; /// - /// Byte 7, bits 3 to 0, DDCD only + /// Byte 7, bits 3 to 0, DDCD only /// public byte PHOUR; /// - /// Byte 8 + /// Byte 8 /// public byte PMIN; /// - /// Byte 9 + /// Byte 9 /// public byte PSEC; /// - /// Byte 10 + /// Byte 10 /// public byte PFRAME; } diff --git a/CD/PMA.cs b/CD/PMA.cs index b09e29a..b79ba93 100644 --- a/CD/PMA.cs +++ b/CD/PMA.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.CD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,19 +60,19 @@ namespace DiscImageChef.Decoders.CD public struct CDPMA { /// - /// Total size of returned session information minus this field + /// Total size of returned session information minus this field /// public ushort DataLength; /// - /// Reserved + /// Reserved /// public byte Reserved1; /// - /// Reserved + /// Reserved /// public byte Reserved2; /// - /// Track descriptors + /// Track descriptors /// public CDPMADescriptors[] PMADescriptors; } @@ -80,58 +80,58 @@ namespace DiscImageChef.Decoders.CD public struct CDPMADescriptors { /// - /// Byte 0 - /// Reserved + /// Byte 0 + /// Reserved /// public byte Reserved; /// - /// Byte 1, bits 7 to 4 - /// Type of information in Q subchannel of block where this TOC entry was found + /// Byte 1, bits 7 to 4 + /// Type of information in Q subchannel of block where this TOC entry was found /// public byte ADR; /// - /// Byte 1, bits 3 to 0 - /// Track attributes + /// Byte 1, bits 3 to 0 + /// Track attributes /// public byte CONTROL; /// - /// Byte 2 + /// Byte 2 /// public byte TNO; /// - /// Byte 3 + /// Byte 3 /// public byte POINT; /// - /// Byte 4 + /// Byte 4 /// public byte Min; /// - /// Byte 5 + /// Byte 5 /// public byte Sec; /// - /// Byte 6 + /// Byte 6 /// public byte Frame; /// - /// Byte 7, bits 7 to 4 + /// Byte 7, bits 7 to 4 /// public byte HOUR; /// - /// Byte 7, bits 3 to 0 + /// Byte 7, bits 3 to 0 /// public byte PHOUR; /// - /// Byte 8 + /// Byte 8 /// public byte PMIN; /// - /// Byte 9 + /// Byte 9 /// public byte PSEC; /// - /// Byte 10 + /// Byte 10 /// public byte PFRAME; } diff --git a/CD/Session.cs b/CD/Session.cs index 21904a8..66adebc 100644 --- a/CD/Session.cs +++ b/CD/Session.cs @@ -38,19 +38,19 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.CD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,19 +60,19 @@ namespace DiscImageChef.Decoders.CD public struct CDSessionInfo { /// - /// Total size of returned session information minus this field + /// Total size of returned session information minus this field /// public ushort DataLength; /// - /// First track number in hex + /// First track number in hex /// public byte FirstCompleteSession; /// - /// Last track number in hex + /// Last track number in hex /// public byte LastCompleteSession; /// - /// Track descriptors + /// Track descriptors /// public TrackDataDescriptor[] TrackDescriptors; } @@ -80,33 +80,33 @@ namespace DiscImageChef.Decoders.CD public struct TrackDataDescriptor { /// - /// Byte 0 - /// Reserved + /// Byte 0 + /// Reserved /// public byte Reserved1; /// - /// Byte 1, bits 7 to 4 - /// Type of information in Q subchannel of block where this TOC entry was found + /// Byte 1, bits 7 to 4 + /// Type of information in Q subchannel of block where this TOC entry was found /// public byte ADR; /// - /// Byte 1, bits 3 to 0 - /// Track attributes + /// Byte 1, bits 3 to 0 + /// Track attributes /// public byte CONTROL; /// - /// Byte 2 - /// First track number in last complete session + /// Byte 2 + /// First track number in last complete session /// public byte TrackNumber; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// First track number in last complete session start address in LBA or in MSF + /// Bytes 4 to 7 + /// First track number in last complete session start address in LBA or in MSF /// public uint TrackStartAddress; } diff --git a/CD/TOC.cs b/CD/TOC.cs index 62d703a..c5a0191 100644 --- a/CD/TOC.cs +++ b/CD/TOC.cs @@ -38,21 +38,21 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.CD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ISO/IEC 61104: Compact disc video system - 12 cm CD-V - /// ISO/IEC 60908: Audio recording - Compact disc digital audio system + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ISO/IEC 61104: Compact disc video system - 12 cm CD-V + /// ISO/IEC 60908: Audio recording - Compact disc digital audio system /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -62,19 +62,19 @@ namespace DiscImageChef.Decoders.CD public struct CDTOC { /// - /// Total size of returned TOC minus this field + /// Total size of returned TOC minus this field /// public ushort DataLength; /// - /// First track number in hex + /// First track number in hex /// public byte FirstTrack; /// - /// Last track number in hex + /// Last track number in hex /// public byte LastTrack; /// - /// Track descriptors + /// Track descriptors /// public CDTOCTrackDataDescriptor[] TrackDescriptors; } @@ -82,33 +82,33 @@ namespace DiscImageChef.Decoders.CD public struct CDTOCTrackDataDescriptor { /// - /// Byte 0 - /// Reserved + /// Byte 0 + /// Reserved /// public byte Reserved1; /// - /// Byte 1, bits 7 to 4 - /// Type of information in Q subchannel of block where this TOC entry was found + /// Byte 1, bits 7 to 4 + /// Type of information in Q subchannel of block where this TOC entry was found /// public byte ADR; /// - /// Byte 1, bits 3 to 0 - /// Track attributes + /// Byte 1, bits 3 to 0 + /// Track attributes /// public byte CONTROL; /// - /// Byte 2 - /// Track number + /// Byte 2 + /// Track number /// public byte TrackNumber; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// The track start address in LBA or in MSF + /// Bytes 4 to 7 + /// The track start address in LBA or in MSF /// public uint TrackStartAddress; } diff --git a/DVD/AACS.cs b/DVD/AACS.cs index 84776e3..5a23fdf 100644 --- a/DVD/AACS.cs +++ b/DVD/AACS.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct HDLeadInCopyright { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 2052 - /// HD DVD Lead-In Copyright Information + /// Bytes 4 to 2052 + /// HD DVD Lead-In Copyright Information /// public byte[] CopyrightInformation; } diff --git a/DVD/ADIP.cs b/DVD/ADIP.cs index 575cbb0..64cbb65 100644 --- a/DVD/ADIP.cs +++ b/DVD/ADIP.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct ADIPInformation { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 259 - /// ADIP, defined in DVD standards + /// Bytes 4 to 259 + /// ADIP, defined in DVD standards /// public byte[] ADIP; } diff --git a/DVD/BCA.cs b/DVD/BCA.cs index b22ac62..ff6d346 100644 --- a/DVD/BCA.cs +++ b/DVD/BCA.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct BurstCuttingArea { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// Burst cutting area contents, 12 to 188 bytes + /// Bytes 4 to end + /// Burst cutting area contents, 12 to 188 bytes /// public byte[] BCA; } diff --git a/DVD/CPRM.cs b/DVD/CPRM.cs index 2daf15d..da0bb62 100644 --- a/DVD/CPRM.cs +++ b/DVD/CPRM.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct DiscMediaIdentifier { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// Disc Media Identifier for CPRM + /// Bytes 4 to end + /// Disc Media Identifier for CPRM /// public byte[] MediaIdentifier; } @@ -82,23 +82,23 @@ namespace DiscImageChef.Decoders.DVD public struct DiscMediaKeyBlock { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// Disc Media Key Block for CPRM + /// Bytes 4 to end + /// Disc Media Key Block for CPRM /// public byte[] MediaKeyBlock; } diff --git a/DVD/CSS&CPRM.cs b/DVD/CSS&CPRM.cs index 1ce578d..7661341 100644 --- a/DVD/CSS&CPRM.cs +++ b/DVD/CSS&CPRM.cs @@ -36,20 +36,20 @@ using System.Text; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,38 +60,38 @@ namespace DiscImageChef.Decoders.DVD public struct LeadInCopyright { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 - /// Copy protection system type + /// Byte 4 + /// Copy protection system type /// public CopyrightType CopyrightType; /// - /// Byte 5 - /// Bitmask of regions where this disc is playable + /// Byte 5 + /// Bitmask of regions where this disc is playable /// public byte RegionInformation; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved3; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved4; } @@ -99,23 +99,23 @@ namespace DiscImageChef.Decoders.DVD public struct DiscKey { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 2052 - /// Disc key for CSS, Album Identifier for CPPM + /// Bytes 4 to 2052 + /// Disc key for CSS, Album Identifier for CPPM /// public byte[] Key; } diff --git a/DVD/Cartridge.cs b/DVD/Cartridge.cs index 23e4258..dec0650 100644 --- a/DVD/Cartridge.cs +++ b/DVD/Cartridge.cs @@ -36,19 +36,19 @@ using System.Text; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -59,68 +59,68 @@ namespace DiscImageChef.Decoders.DVD public struct MediumStatus { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bit 7 - /// Medium is in a cartridge + /// Byte 4, bit 7 + /// Medium is in a cartridge /// public bool Cartridge; /// - /// Byte 4, bit 6 - /// Medium has been taken out/inserted in a cartridge + /// Byte 4, bit 6 + /// Medium has been taken out/inserted in a cartridge /// public bool OUT; /// - /// Byte 4, bits 5 to 4 - /// Reserved + /// Byte 4, bits 5 to 4 + /// Reserved /// public byte Reserved3; /// - /// Byte 4, bit 3 - /// Media is write protected by reason stablished in RAMSWI + /// Byte 4, bit 3 + /// Media is write protected by reason stablished in RAMSWI /// public bool MSWI; /// - /// Byte 4, bit 2 - /// Media is write protected by cartridge + /// Byte 4, bit 2 + /// Media is write protected by cartridge /// public bool CWP; /// - /// Byte 4, bit 1 - /// Media is persistently write protected + /// Byte 4, bit 1 + /// Media is persistently write protected /// public bool PWP; /// - /// Byte 4, bit 0 - /// Reserved + /// Byte 4, bit 0 + /// Reserved /// public bool Reserved4; /// - /// Byte 5 - /// Writable status depending on cartridge + /// Byte 5 + /// Writable status depending on cartridge /// public byte DiscType; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved5; /// - /// Byte 7 - /// Reason of specific write protection, only defined 0x01 as "bare disc wp", and 0xFF as unspecified. Rest reserved. + /// Byte 7 + /// Reason of specific write protection, only defined 0x01 as "bare disc wp", and 0xFF as unspecified. Rest reserved. /// public byte RAMSWI; } @@ -188,8 +188,7 @@ namespace DiscImageChef.Decoders.DVD sb.AppendLine("Disc is write inhibited for an unspecified reason"); break; default: - sb.AppendFormat("Disc has unknown reason {0} for write inhibition", decoded.RAMSWI) - .AppendLine(); + sb.AppendFormat("Disc has unknown reason {0} for write inhibition", decoded.RAMSWI).AppendLine(); break; } diff --git a/DVD/DDS.cs b/DVD/DDS.cs index ded9727..8599fba 100644 --- a/DVD/DDS.cs +++ b/DVD/DDS.cs @@ -37,21 +37,21 @@ using System.Text; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 272: 120 mm DVD Rewritable Disk (DVD-RAM) - /// ECMA 330: 120 mm (4,7 Gbytes per side) and 80 mm (1,46 Gbytes per side) DVD Rewritable Disk (DVD-RAM) + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 272: 120 mm DVD Rewritable Disk (DVD-RAM) + /// ECMA 330: 120 mm (4,7 Gbytes per side) and 80 mm (1,46 Gbytes per side) DVD Rewritable Disk (DVD-RAM) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -62,110 +62,110 @@ namespace DiscImageChef.Decoders.DVD public struct DiscDefinitionStructure { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 5 - /// DDS Identifier = 0x0A0A + /// Bytes 4 to 5 + /// DDS Identifier = 0x0A0A /// public ushort Identifier; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved3; /// - /// Byte 7, bit 7 - /// If set, formatting is in process + /// Byte 7, bit 7 + /// If set, formatting is in process /// public bool InProcess; /// - /// Byte 7, bit 6 - /// If set, formatting is using partial certification - /// Only in ECMA-272 + /// Byte 7, bit 6 + /// If set, formatting is using partial certification + /// Only in ECMA-272 /// public bool PartialCertification; /// - /// Byte 7, bit 5 - /// If set, only a group is being formatted - /// Only in ECMA-272 + /// Byte 7, bit 5 + /// If set, only a group is being formatted + /// Only in ECMA-272 /// public bool FormattingOnlyAGroup; /// - /// Byte 7, bits 4 to 2 - /// Reserved + /// Byte 7, bits 4 to 2 + /// Reserved /// public byte Reserved4; /// - /// Byte 7, bit 1 - /// If set, disk has been certified by a user + /// Byte 7, bit 1 + /// If set, disk has been certified by a user /// public bool UserCertification; /// - /// Byte 7, bit 0 - /// If set, disk has been certified by a manufacturer + /// Byte 7, bit 0 + /// If set, disk has been certified by a manufacturer /// public bool ManufacturerCertification; /// - /// Bytes 8 to 11 - /// How many times the DDS has been updated + /// Bytes 8 to 11 + /// How many times the DDS has been updated /// public uint UpdateCount; /// - /// Bytes 12 to 13 - /// How many groups the disk has - /// 24 for ECMA-272 - /// 1 for ECMA-330 + /// Bytes 12 to 13 + /// How many groups the disk has + /// 24 for ECMA-272 + /// 1 for ECMA-330 /// public ushort Groups; /// - /// Bytes 14 to 15 - /// How many zones the disk has - /// Only in ECMA-330 + /// Bytes 14 to 15 + /// How many zones the disk has + /// Only in ECMA-330 /// public ushort Zones; /// - /// Bytes 14 to 19 in ECMA-272 - /// Bytes 16 to 83 in ECMA-330 - /// Reserved + /// Bytes 14 to 19 in ECMA-272 + /// Bytes 16 to 83 in ECMA-330 + /// Reserved /// public byte[] Reserved; /// - /// Bytes 20 to 43 - /// Group certification flags + /// Bytes 20 to 43 + /// Group certification flags /// public GroupCertificationFlag[] GroupCertificationFlags; /// - /// Bytes 85 to 87 - /// Location of first sector in the Primary Spare Area + /// Bytes 85 to 87 + /// Location of first sector in the Primary Spare Area /// public uint SpareAreaFirstPSN; /// - /// Bytes 89 to 91 - /// Location of first sector in the Primary Spare Area + /// Bytes 89 to 91 + /// Location of first sector in the Primary Spare Area /// public uint SpareAreaLastPSN; /// - /// Bytes 93 to 95 - /// PSN for LSN 0 + /// Bytes 93 to 95 + /// PSN for LSN 0 /// public uint LSN0Location; /// - /// The starting LSN of each zone + /// The starting LSN of each zone /// public uint[] StartLSNForZone; } @@ -173,28 +173,28 @@ namespace DiscImageChef.Decoders.DVD public struct GroupCertificationFlag { /// - /// Bit 7 - /// If set, formatting of this group is in process + /// Bit 7 + /// If set, formatting of this group is in process /// public bool InProcess; /// - /// Bit 6 - /// If set, formatting is using partial certification + /// Bit 6 + /// If set, formatting is using partial certification /// public bool PartialCertification; /// - /// Bits 5 to 2 - /// Reserved + /// Bits 5 to 2 + /// Reserved /// public byte Reserved1; /// - /// Bit 1 - /// If set, this group has been certified by user + /// Bit 1 + /// If set, this group has been certified by user /// public bool UserCertification; /// - /// Bit 0 - /// Reserved + /// Bit 0 + /// Reserved /// public bool Reserved2; } diff --git a/DVD/DMI.cs b/DVD/DMI.cs index fe3070e..eb71116 100644 --- a/DVD/DMI.cs +++ b/DVD/DMI.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct DiscManufacturingInformation { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 2052 - /// Disc Manufacturing Information + /// Bytes 4 to 2052 + /// Disc Manufacturing Information /// public byte[] DMI; } diff --git a/DVD/Enums.cs b/DVD/Enums.cs index 34bfb5e..3871b61 100644 --- a/DVD/Enums.cs +++ b/DVD/Enums.cs @@ -39,60 +39,60 @@ namespace DiscImageChef.Decoders.DVD public enum DiskCategory : byte { /// - /// DVD-ROM. Version 1 is ECMA-267 and ECMA-268. + /// DVD-ROM. Version 1 is ECMA-267 and ECMA-268. /// DVDROM = 0, /// - /// DVD-RAM. Version 1 is ECMA-272. Version 6 is ECMA-330. + /// DVD-RAM. Version 1 is ECMA-272. Version 6 is ECMA-330. /// DVDRAM = 1, /// - /// DVD-R. Version 1 is ECMA-279. Version 5 is ECMA-359. Version 6 is ECMA-382. + /// DVD-R. Version 1 is ECMA-279. Version 5 is ECMA-359. Version 6 is ECMA-382. /// DVDR = 2, /// - /// DVD-RW. Version 2 is ECMA-338. Version 3 is ECMA-384. + /// DVD-RW. Version 2 is ECMA-338. Version 3 is ECMA-384. /// DVDRW = 3, /// - /// HD DVD-ROM + /// HD DVD-ROM /// HDDVDROM = 4, /// - /// HD DVD-RAM + /// HD DVD-RAM /// HDDVDRAM = 5, /// - /// HD DVD-R + /// HD DVD-R /// HDDVDR = 6, /// - /// HD DVD-RW + /// HD DVD-RW /// HDDVDRW = 7, /// - /// UMD. Version 0 is ECMA-365. + /// UMD. Version 0 is ECMA-365. /// UMD = 8, /// - /// DVD+RW. Version 1 is ECMA-274. Version 2 is ECMA-337. Version 3 is ECMA-371. + /// DVD+RW. Version 1 is ECMA-274. Version 2 is ECMA-337. Version 3 is ECMA-371. /// DVDPRW = 9, /// - /// DVD+R. Version 1 is ECMA-349. + /// DVD+R. Version 1 is ECMA-349. /// DVDPR = 10, /// - /// DVD+RW DL. Version 1 is ECMA-374. + /// DVD+RW DL. Version 1 is ECMA-374. /// DVDPRWDL = 13, /// - /// DVD+R DL. Version 1 is ECMA-364. + /// DVD+R DL. Version 1 is ECMA-364. /// DVDPRDL = 14, /// - /// According to standards this value is reserved. - /// It's used by Nintendo GODs and WODs. + /// According to standards this value is reserved. + /// It's used by Nintendo GODs and WODs. /// Nintendo = 15 } @@ -101,23 +101,23 @@ namespace DiscImageChef.Decoders.DVD public enum MaximumRateField : byte { /// - /// 2.52 Mbps + /// 2.52 Mbps /// TwoMbps = 0x00, /// - /// 5.04 Mbps + /// 5.04 Mbps /// FiveMbps = 0x01, /// - /// 10.08 Mbps + /// 10.08 Mbps /// TenMbps = 0x02, /// - /// 20.16 Mbps + /// 20.16 Mbps /// TwentyMbps = 0x03, /// - /// 30.24 Mbps + /// 30.24 Mbps /// ThirtyMbps = 0x04, Unspecified = 0x0F @@ -136,31 +136,31 @@ namespace DiscImageChef.Decoders.DVD public enum LinearDensityField : byte { /// - /// 0.267 μm/bit + /// 0.267 μm/bit /// TwoSix = 0x00, /// - /// 0.293 μm/bit + /// 0.293 μm/bit /// TwoNine = 0x01, /// - /// 0.409 to 0.435 μm/bit + /// 0.409 to 0.435 μm/bit /// FourZero = 0x02, /// - /// 0.280 to 0.291 μm/bit + /// 0.280 to 0.291 μm/bit /// TwoEight = 0x04, /// - /// 0.153 μm/bit + /// 0.153 μm/bit /// OneFive = 0x05, /// - /// 0.130 to 0.140 μm/bit + /// 0.130 to 0.140 μm/bit /// OneThree = 0x06, /// - /// 0.353 μm/bit + /// 0.353 μm/bit /// ThreeFive = 0x08 } @@ -169,23 +169,23 @@ namespace DiscImageChef.Decoders.DVD public enum TrackDensityField : byte { /// - /// 0.74 μm/track + /// 0.74 μm/track /// Seven = 0x00, /// - /// 0.80 μm/track + /// 0.80 μm/track /// Eight = 0x01, /// - /// 0.615 μm/track + /// 0.615 μm/track /// Six = 0x02, /// - /// 0.40 μm/track + /// 0.40 μm/track /// Four = 0x03, /// - /// 0.34 μm/track + /// 0.34 μm/track /// Three = 0x04 } @@ -194,19 +194,19 @@ namespace DiscImageChef.Decoders.DVD public enum CopyrightType : byte { /// - /// There is no copy protection + /// There is no copy protection /// NoProtection = 0x00, /// - /// Copy protection is CSS/CPPM + /// Copy protection is CSS/CPPM /// CSS = 0x01, /// - /// Copy protection is CPRM + /// Copy protection is CPRM /// CPRM = 0x02, /// - /// Copy protection is AACS + /// Copy protection is AACS /// AACS = 0x10 } @@ -215,11 +215,11 @@ namespace DiscImageChef.Decoders.DVD public enum WPDiscTypes : byte { /// - /// Should not write without a cartridge + /// Should not write without a cartridge /// DoNotWrite = 0x00, /// - /// Can write without a cartridge + /// Can write without a cartridge /// CanWrite = 0x01, Reserved1 = 0x02, @@ -230,11 +230,11 @@ namespace DiscImageChef.Decoders.DVD public enum DVDSize { /// - /// 120 mm + /// 120 mm /// OneTwenty = 0, /// - /// 80 mm + /// 80 mm /// Eighty = 1 } @@ -243,11 +243,11 @@ namespace DiscImageChef.Decoders.DVD public enum DVDRAMDiscType { /// - /// Shall not be recorded without a case + /// Shall not be recorded without a case /// Cased = 0, /// - /// May be recorded without a case or within one + /// May be recorded without a case or within one /// Uncased = 1 } diff --git a/DVD/Layers.cs b/DVD/Layers.cs index 45d4314..addd1b0 100644 --- a/DVD/Layers.cs +++ b/DVD/Layers.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,48 +58,48 @@ namespace DiscImageChef.Decoders.DVD public struct LayerCapacity { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bit 7 - /// If set, L0 capacity is immutable + /// Byte 4, bit 7 + /// If set, L0 capacity is immutable /// public bool InitStatus; /// - /// Byte 4, bits 6 to 0 - /// Reserved + /// Byte 4, bits 6 to 0 + /// Reserved /// public byte Reserved3; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved4; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved5; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved6; /// - /// Byte 8 to 11 - /// L0 Data Area Capacity + /// Byte 8 to 11 + /// L0 Data Area Capacity /// public uint Capacity; } @@ -107,48 +107,48 @@ namespace DiscImageChef.Decoders.DVD public struct MiddleZoneStartAddress { /// - /// Bytes 0 to 1 - /// Data length = 10 + /// Bytes 0 to 1 + /// Data length = 10 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bit 7 - /// If set, L0 shifter middle area is immutable + /// Byte 4, bit 7 + /// If set, L0 shifter middle area is immutable /// public bool InitStatus; /// - /// Byte 4, bits 6 to 0 - /// Reserved + /// Byte 4, bits 6 to 0 + /// Reserved /// public byte Reserved3; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved4; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved5; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved6; /// - /// Byte 8 to 11 - /// Start LBA of Shifted Middle Area on L0 + /// Byte 8 to 11 + /// Start LBA of Shifted Middle Area on L0 /// public uint ShiftedMiddleAreaStartAddress; } @@ -156,43 +156,43 @@ namespace DiscImageChef.Decoders.DVD public struct JumpIntervalSize { /// - /// Bytes 0 to 1 - /// Data length = 10 + /// Bytes 0 to 1 + /// Data length = 10 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 - /// Reserved + /// Byte 4 + /// Reserved /// public byte Reserved3; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved4; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved5; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved6; /// - /// Byte 8 to 11 - /// Jump Interval size for the Regular Interval Layer Jump + /// Byte 8 to 11 + /// Jump Interval size for the Regular Interval Layer Jump /// public uint Size; } @@ -200,43 +200,43 @@ namespace DiscImageChef.Decoders.DVD public struct ManualLayerJumpAddress { /// - /// Bytes 0 to 1 - /// Data length = 10 + /// Bytes 0 to 1 + /// Data length = 10 /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 - /// Reserved + /// Byte 4 + /// Reserved /// public byte Reserved3; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved4; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved5; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved6; /// - /// Byte 8 to 11 - /// LBA for the manual layer jump + /// Byte 8 to 11 + /// LBA for the manual layer jump /// public uint LBA; } diff --git a/DVD/PFI.cs b/DVD/PFI.cs index 20086e0..5807fcf 100644 --- a/DVD/PFI.cs +++ b/DVD/PFI.cs @@ -37,1015 +37,1024 @@ using System.Text; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 267: 120 mm DVD - Read-Only Disk - /// ECMA 268: 80 mm DVD - Read-Only Disk - /// ECMA 272: 120 mm DVD Rewritable Disk (DVD-RAM) - /// ECMA 274: Data Interchange on 120 mm Optical Disk using +RW Format - Capacity: 3,0 Gbytes and 6,0 Gbytes - /// ECMA 279: 80 mm (1,23 Gbytes per side) and 120 mm (3,95 Gbytes per side) DVD-Recordable Disk (DVD-R) - /// ECMA 330: 120 mm (4,7 Gbytes per side) and 80 mm (1,46 Gbytes per side) DVD Rewritable Disk (DVD-RAM) - /// ECMA 337: Data Interchange on 120 mm and 80 mm Optical Disk using +RW Format - Capacity: 4,7 and 1,46 Gbytes per Side - /// ECMA 338: 80 mm (1,46 Gbytes per side) and 120 mm (4,70 Gbytes per side) DVD Re-recordable Disk (DVD-RW) - /// ECMA 349: Data Interchange on 120 mm and 80 mm Optical Disk using +R Format - Capacity: 4,7 and 1,46 Gbytes per Side - /// ECMA 359: 80 mm (1,46 Gbytes per side) and 120 mm (4,70 Gbytes per side) DVD Recordable Disk (DVD-R) - /// ECMA 364: Data Interchange on 120 mm and 80 mm Optical Disk using +R DL Format - Capacity 8,55 and 2,66 Gbytes per Side - /// ECMA 365: Data Interchange on 60 mm Read-Only ODC - Capacity: 1,8 Gbytes (UMD™) - /// ECMA 371: Data Interchange on 120 mm and 80 mm Optical Disk using +RW HS Format - Capacity 4,7 and 1,46 Gbytes per side - /// ECMA 374: Data Interchange on 120 mm and 80 mm Optical Disk using +RW DL Format - Capacity 8,55 and 2,66 Gbytes per side - /// ECMA 382: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Recordable Disk for Dual Layer (DVD-R for DL) - /// ECMA 384: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Re-recordable Disk for Dual Layer (DVD-RW for DL) + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 267: 120 mm DVD - Read-Only Disk + /// ECMA 268: 80 mm DVD - Read-Only Disk + /// ECMA 272: 120 mm DVD Rewritable Disk (DVD-RAM) + /// ECMA 274: Data Interchange on 120 mm Optical Disk using +RW Format - Capacity: 3,0 Gbytes and 6,0 Gbytes + /// ECMA 279: 80 mm (1,23 Gbytes per side) and 120 mm (3,95 Gbytes per side) DVD-Recordable Disk (DVD-R) + /// ECMA 330: 120 mm (4,7 Gbytes per side) and 80 mm (1,46 Gbytes per side) DVD Rewritable Disk (DVD-RAM) + /// ECMA 337: Data Interchange on 120 mm and 80 mm Optical Disk using +RW Format - Capacity: 4,7 and 1,46 Gbytes per + /// Side + /// ECMA 338: 80 mm (1,46 Gbytes per side) and 120 mm (4,70 Gbytes per side) DVD Re-recordable Disk (DVD-RW) + /// ECMA 349: Data Interchange on 120 mm and 80 mm Optical Disk using +R Format - Capacity: 4,7 and 1,46 Gbytes per + /// Side + /// ECMA 359: 80 mm (1,46 Gbytes per side) and 120 mm (4,70 Gbytes per side) DVD Recordable Disk (DVD-R) + /// ECMA 364: Data Interchange on 120 mm and 80 mm Optical Disk using +R DL Format - Capacity 8,55 and 2,66 Gbytes per + /// Side + /// ECMA 365: Data Interchange on 60 mm Read-Only ODC - Capacity: 1,8 Gbytes (UMD™) + /// ECMA 371: Data Interchange on 120 mm and 80 mm Optical Disk using +RW HS Format - Capacity 4,7 and 1,46 Gbytes per + /// side + /// ECMA 374: Data Interchange on 120 mm and 80 mm Optical Disk using +RW DL Format - Capacity 8,55 and 2,66 Gbytes per + /// side + /// ECMA 382: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Recordable Disk for Dual Layer (DVD-R + /// for DL) + /// ECMA 384: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Re-recordable Disk for Dual Layer + /// (DVD-RW for DL) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class PFI { public struct PhysicalFormatInformation { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; #region PFI common to all /// - /// Byte 4, bits 7 to 4 - /// Disk category field + /// Byte 4, bits 7 to 4 + /// Disk category field /// public DiskCategory DiskCategory; /// - /// Byte 4, bits 3 to 0 - /// Media version + /// Byte 4, bits 3 to 0 + /// Media version /// public byte PartVersion; /// - /// Byte 5, bits 7 to 4 - /// 120mm if 0, 80mm if 1. If UMD (60mm) 0 also. Reserved rest of values + /// Byte 5, bits 7 to 4 + /// 120mm if 0, 80mm if 1. If UMD (60mm) 0 also. Reserved rest of values /// public DVDSize DiscSize; /// - /// Byte 5, bits 3 to 0 - /// Maximum data rate + /// Byte 5, bits 3 to 0 + /// Maximum data rate /// public MaximumRateField MaximumRate; /// - /// Byte 6, bit 7 - /// Reserved + /// Byte 6, bit 7 + /// Reserved /// public bool Reserved3; /// - /// Byte 6, bits 6 to 5 - /// Number of layers + /// Byte 6, bits 6 to 5 + /// Number of layers /// public byte Layers; /// - /// Byte 6, bit 4 - /// Track path + /// Byte 6, bit 4 + /// Track path /// public bool TrackPath; /// - /// Byte 6, bits 3 to 0 - /// Layer type + /// Byte 6, bits 3 to 0 + /// Layer type /// public LayerTypeFieldMask LayerType; /// - /// Byte 7, bits 7 to 4 - /// Linear density field + /// Byte 7, bits 7 to 4 + /// Linear density field /// public LinearDensityField LinearDensity; /// - /// Byte 7, bits 3 to 0 - /// Track density field + /// Byte 7, bits 3 to 0 + /// Track density field /// public TrackDensityField TrackDensity; /// - /// Bytes 8 to 11 - /// PSN where Data Area starts + /// Bytes 8 to 11 + /// PSN where Data Area starts /// public uint DataAreaStartPSN; /// - /// Bytes 12 to 15 - /// PSN where Data Area ends + /// Bytes 12 to 15 + /// PSN where Data Area ends /// public uint DataAreaEndPSN; /// - /// Bytes 16 to 19 - /// PSN where Data Area ends in Layer 0 + /// Bytes 16 to 19 + /// PSN where Data Area ends in Layer 0 /// public uint Layer0EndPSN; /// - /// Byte 20, bit 7 - /// True if BCA exists. GC/Wii discs do not have this bit set, but there is a BCA, making it unreadable in normal DVD drives + /// Byte 20, bit 7 + /// True if BCA exists. GC/Wii discs do not have this bit set, but there is a BCA, making it unreadable in normal DVD + /// drives /// public bool BCA; /// - /// Byte 20, bits 6 to 0 - /// Reserved + /// Byte 20, bits 6 to 0 + /// Reserved /// public byte Reserved4; #endregion PFI common to all #region UMD PFI /// - /// Bytes 21 to 22 - /// UMD only, media attribute, application-defined, part of media specific in rest of discs + /// Bytes 21 to 22 + /// UMD only, media attribute, application-defined, part of media specific in rest of discs /// public ushort MediaAttribute; #endregion UMD PFI #region DVD-RAM PFI /// - /// Byte 36 - /// Disc type, respecting case recordability + /// Byte 36 + /// Disc type, respecting case recordability /// public DVDRAMDiscType DiscType; #endregion DVD-RAM PFI #region DVD-RAM PFI, Version 0001b /// - /// Byte 52 - /// Byte 504 in Version 0110b - /// Linear velocity, in tenths of m/s + /// Byte 52 + /// Byte 504 in Version 0110b + /// Linear velocity, in tenths of m/s /// public byte Velocity; /// - /// Byte 53 - /// Byte 505 in Version 0110b - /// Read power on disk surface, tenths of mW + /// Byte 53 + /// Byte 505 in Version 0110b + /// Read power on disk surface, tenths of mW /// public byte ReadPower; /// - /// Byte 54 - /// Byte 507 in Version 0110b - /// Peak power on disk surface for recording land tracks + /// Byte 54 + /// Byte 507 in Version 0110b + /// Peak power on disk surface for recording land tracks /// public byte PeakPower; /// - /// Byte 55 - /// Bias power on disk surface for recording land tracks + /// Byte 55 + /// Bias power on disk surface for recording land tracks /// public byte BiasPower; /// - /// Byte 56 - /// First pulse starting time for recording on land tracks, ns + /// Byte 56 + /// First pulse starting time for recording on land tracks, ns /// public byte FirstPulseStart; /// - /// Byte 57 - /// Byte 515 in Version 0110b - /// First pulse ending time for recording on land tracks + /// Byte 57 + /// Byte 515 in Version 0110b + /// First pulse ending time for recording on land tracks /// public byte FirstPulseEnd; /// - /// Byte 58 - /// Byte 518 in Version 0110b - /// Multiple-pulse duration time for recording on land tracks + /// Byte 58 + /// Byte 518 in Version 0110b + /// Multiple-pulse duration time for recording on land tracks /// public byte MultiplePulseDuration; /// - /// Byte 59 - /// Byte 519 in Version 0110b - /// Last pulse starting time for recording on land tracks + /// Byte 59 + /// Byte 519 in Version 0110b + /// Last pulse starting time for recording on land tracks /// public byte LastPulseStart; /// - /// Byte 60 - /// Las pulse ending time for recording on land tracks + /// Byte 60 + /// Las pulse ending time for recording on land tracks /// public byte LastPulseEnd; /// - /// Byte 61 - /// Bias power duration for recording on land tracks + /// Byte 61 + /// Bias power duration for recording on land tracks /// public byte BiasPowerDuration; /// - /// Byte 62 - /// Byte 511 on Version 0110b - /// Peak power for recording on groove tracks + /// Byte 62 + /// Byte 511 on Version 0110b + /// Peak power for recording on groove tracks /// public byte PeakPowerGroove; /// - /// Byte 63 - /// Bias power for recording on groove tracks + /// Byte 63 + /// Bias power for recording on groove tracks /// public byte BiasPowerGroove; /// - /// Byte 64 - /// First pulse starting time on groove tracks + /// Byte 64 + /// First pulse starting time on groove tracks /// public byte FirstPulseStartGroove; /// - /// Byte 65 - /// First pulse ending time on groove tracks + /// Byte 65 + /// First pulse ending time on groove tracks /// public byte FirstPulseEndGroove; /// - /// Byte 66 - /// Multiple-pulse duration time on groove tracks + /// Byte 66 + /// Multiple-pulse duration time on groove tracks /// public byte MultiplePulseDurationGroove; /// - /// Byte 67 - /// Last pulse starting time on groove tracks + /// Byte 67 + /// Last pulse starting time on groove tracks /// public byte LastPulseStartGroove; /// - /// Byte 68 - /// Last pulse ending time on groove tracks + /// Byte 68 + /// Last pulse ending time on groove tracks /// public byte LastPulseEndGroove; /// - /// Byte 69 - /// Bias power duration for recording on groove tracks + /// Byte 69 + /// Bias power duration for recording on groove tracks /// public byte BiasPowerDurationGroove; #endregion DVD-RAM PFI, Version 0001b #region DVD-R PFI, DVD-RW PFI /// - /// Bytes 36 to 39 - /// Sector number of the first sector of the current Border Out + /// Bytes 36 to 39 + /// Sector number of the first sector of the current Border Out /// public uint CurrentBorderOutSector; /// - /// Bytes 40 to 43 - /// Sector number of the first sector of the next Border In + /// Bytes 40 to 43 + /// Sector number of the first sector of the next Border In /// public uint NextBorderInSector; #endregion DVD-R PFI, DVD-RW PFI #region DVD+RW PFI /// - /// Byte 36 - /// Linear velocities - /// 0 = CLV from 4,90 m/s to 6,25 m/s - /// 1 = CAV from 3,02 m/s to 7,35 m/s + /// Byte 36 + /// Linear velocities + /// 0 = CLV from 4,90 m/s to 6,25 m/s + /// 1 = CAV from 3,02 m/s to 7,35 m/s /// public byte RecordingVelocity; /// - /// Byte 37 - /// Maximum read power in milliwatts at maximum velocity - /// mW = 20 * (value - 1) + /// Byte 37 + /// Maximum read power in milliwatts at maximum velocity + /// mW = 20 * (value - 1) /// public byte ReadPowerMaxVelocity; /// - /// Byte 38 - /// Indicative value of Ptarget in mW at maximum velocity + /// Byte 38 + /// Indicative value of Ptarget in mW at maximum velocity /// public byte PIndMaxVelocity; /// - /// Byte 39 - /// Peak power multiplication factor at maximum velocity + /// Byte 39 + /// Peak power multiplication factor at maximum velocity /// public byte PMaxVelocity; /// - /// Byte 40 - /// Bias1/write power ration at maximum velocity + /// Byte 40 + /// Bias1/write power ration at maximum velocity /// public byte E1MaxVelocity; /// - /// Byte 41 - /// Bias2/write power ration at maximum velocity + /// Byte 41 + /// Bias2/write power ration at maximum velocity /// public byte E2MaxVelocity; /// - /// Byte 42 - /// Target value for γ, γtarget at the maximum velocity + /// Byte 42 + /// Target value for γ, γtarget at the maximum velocity /// public byte YTargetMaxVelocity; /// - /// Byte 43 - /// Maximum read power in milliwatts at reference velocity (4,90 m/s) - /// mW = 20 * (value - 1) + /// Byte 43 + /// Maximum read power in milliwatts at reference velocity (4,90 m/s) + /// mW = 20 * (value - 1) /// public byte ReadPowerRefVelocity; /// - /// Byte 44 - /// Indicative value of Ptarget in mW at reference velocity (4,90 m/s) + /// Byte 44 + /// Indicative value of Ptarget in mW at reference velocity (4,90 m/s) /// public byte PIndRefVelocity; /// - /// Byte 45 - /// Peak power multiplication factor at reference velocity (4,90 m/s) + /// Byte 45 + /// Peak power multiplication factor at reference velocity (4,90 m/s) /// public byte PRefVelocity; /// - /// Byte 46 - /// Bias1/write power ration at reference velocity (4,90 m/s) + /// Byte 46 + /// Bias1/write power ration at reference velocity (4,90 m/s) /// public byte E1RefVelocity; /// - /// Byte 47 - /// Bias2/write power ration at reference velocity (4,90 m/s) + /// Byte 47 + /// Bias2/write power ration at reference velocity (4,90 m/s) /// public byte E2RefVelocity; /// - /// Byte 48 - /// Target value for γ, γtarget at the reference velocity (4,90 m/s) + /// Byte 48 + /// Target value for γ, γtarget at the reference velocity (4,90 m/s) /// public byte YTargetRefVelocity; /// - /// Byte 49 - /// Maximum read power in milliwatts at minimum velocity - /// mW = 20 * (value - 1) + /// Byte 49 + /// Maximum read power in milliwatts at minimum velocity + /// mW = 20 * (value - 1) /// public byte ReadPowerMinVelocity; /// - /// Byte 50 - /// Indicative value of Ptarget in mW at minimum velocity + /// Byte 50 + /// Indicative value of Ptarget in mW at minimum velocity /// public byte PIndMinVelocity; /// - /// Byte 51 - /// Peak power multiplication factor at minimum velocity + /// Byte 51 + /// Peak power multiplication factor at minimum velocity /// public byte PMinVelocity; /// - /// Byte 52 - /// Bias1/write power ration at minimum velocity + /// Byte 52 + /// Bias1/write power ration at minimum velocity /// public byte E1MinVelocity; /// - /// Byte 53 - /// Bias2/write power ration at minimum velocity + /// Byte 53 + /// Bias2/write power ration at minimum velocity /// public byte E2MinVelocity; /// - /// Byte 54 - /// Target value for γ, γtarget at the minimum velocity + /// Byte 54 + /// Target value for γ, γtarget at the minimum velocity /// public byte YTargetMinVelocity; #endregion DVD+RW PFI #region DVD-RAM PFI, version 0110b /// - /// Byte 506, bit 7 - /// Mode of adaptative write pulse control + /// Byte 506, bit 7 + /// Mode of adaptative write pulse control /// public bool AdaptativeWritePulseControlFlag; /// - /// Byte 508 - /// Bias power 1 on disk surface for recording land tracks + /// Byte 508 + /// Bias power 1 on disk surface for recording land tracks /// public byte BiasPower1; /// - /// Byte 509 - /// Bias power 2 on disk surface for recording land tracks + /// Byte 509 + /// Bias power 2 on disk surface for recording land tracks /// public byte BiasPower2; /// - /// Byte 510 - /// Bias power 3 on disk surface for recording land tracks + /// Byte 510 + /// Bias power 3 on disk surface for recording land tracks /// public byte BiasPower3; /// - /// Byte 512 - /// Bias power 1 on disk surface for recording groove tracks + /// Byte 512 + /// Bias power 1 on disk surface for recording groove tracks /// public byte BiasPower1Groove; /// - /// Byte 513 - /// Bias power 2 on disk surface for recording groove tracks + /// Byte 513 + /// Bias power 2 on disk surface for recording groove tracks /// public byte BiasPower2Groove; /// - /// Byte 514 - /// Bias power 3 on disk surface for recording groove tracks + /// Byte 514 + /// Bias power 3 on disk surface for recording groove tracks /// public byte BiasPower3Groove; /// - /// Byte 516 - /// First pulse duration + /// Byte 516 + /// First pulse duration /// public byte FirstPulseDuration; /// - /// Byte 520 - /// Bias power 2 duration on land tracks at Velocity 1 + /// Byte 520 + /// Bias power 2 duration on land tracks at Velocity 1 /// public byte BiasPower2Duration; /// - /// Byte 521 - /// First pulse start time, at Mark 3T and Leading Space 3T + /// Byte 521 + /// First pulse start time, at Mark 3T and Leading Space 3T /// public byte FirstPulseStart3TSpace3T; /// - /// Byte 522 - /// First pulse start time, at Mark 4T and Leading Space 3T + /// Byte 522 + /// First pulse start time, at Mark 4T and Leading Space 3T /// public byte FirstPulseStart4TSpace3T; /// - /// Byte 523 - /// First pulse start time, at Mark 5T and Leading Space 3T + /// Byte 523 + /// First pulse start time, at Mark 5T and Leading Space 3T /// public byte FirstPulseStart5TSpace3T; /// - /// Byte 524 - /// First pulse start time, at Mark >5T and Leading Space 3T + /// Byte 524 + /// First pulse start time, at Mark >5T and Leading Space 3T /// public byte FirstPulseStartSpace3T; /// - /// Byte 525 - /// First pulse start time, at Mark 3T and Leading Space 4T + /// Byte 525 + /// First pulse start time, at Mark 3T and Leading Space 4T /// public byte FirstPulseStart3TSpace4T; /// - /// Byte 526 - /// First pulse start time, at Mark 4T and Leading Space 4T + /// Byte 526 + /// First pulse start time, at Mark 4T and Leading Space 4T /// public byte FirstPulseStart4TSpace4T; /// - /// Byte 527 - /// First pulse start time, at Mark 5T and Leading Space 4T + /// Byte 527 + /// First pulse start time, at Mark 5T and Leading Space 4T /// public byte FirstPulseStart5TSpace4T; /// - /// Byte 528 - /// First pulse start time, at Mark >5T and Leading Space 4T + /// Byte 528 + /// First pulse start time, at Mark >5T and Leading Space 4T /// public byte FirstPulseStartSpace4T; /// - /// Byte 529 - /// First pulse start time, at Mark 3T and Leading Space 5T + /// Byte 529 + /// First pulse start time, at Mark 3T and Leading Space 5T /// public byte FirstPulseStart3TSpace5T; /// - /// Byte 530 - /// First pulse start time, at Mark 4T and Leading Space 5T + /// Byte 530 + /// First pulse start time, at Mark 4T and Leading Space 5T /// public byte FirstPulseStart4TSpace5T; /// - /// Byte 531 - /// First pulse start time, at Mark 5T and Leading Space 5T + /// Byte 531 + /// First pulse start time, at Mark 5T and Leading Space 5T /// public byte FirstPulseStart5TSpace5T; /// - /// Byte 532 - /// First pulse start time, at Mark >5T and Leading Space 5T + /// Byte 532 + /// First pulse start time, at Mark >5T and Leading Space 5T /// public byte FirstPulseStartSpace5T; /// - /// Byte 533 - /// First pulse start time, at Mark 3T and Leading Space >5T + /// Byte 533 + /// First pulse start time, at Mark 3T and Leading Space >5T /// public byte FirstPulseStart3TSpace; /// - /// Byte 534 - /// First pulse start time, at Mark 4T and Leading Space >5T + /// Byte 534 + /// First pulse start time, at Mark 4T and Leading Space >5T /// public byte FirstPulseStart4TSpace; /// - /// Byte 535 - /// First pulse start time, at Mark 5T and Leading Space >5T + /// Byte 535 + /// First pulse start time, at Mark 5T and Leading Space >5T /// public byte FirstPulseStart5TSpace; /// - /// Byte 536 - /// First pulse start time, at Mark >5T and Leading Space >5T + /// Byte 536 + /// First pulse start time, at Mark >5T and Leading Space >5T /// public byte FirstPulseStartSpace; /// - /// Byte 537 - /// First pulse start time, at Mark 3T and Trailing Space 3T + /// Byte 537 + /// First pulse start time, at Mark 3T and Trailing Space 3T /// public byte FirstPulse3TStartTSpace3T; /// - /// Byte 538 - /// First pulse start time, at Mark 4T and Trailing Space 3T + /// Byte 538 + /// First pulse start time, at Mark 4T and Trailing Space 3T /// public byte FirstPulse4TStartTSpace3T; /// - /// Byte 539 - /// First pulse start time, at Mark 5T and Trailing Space 3T + /// Byte 539 + /// First pulse start time, at Mark 5T and Trailing Space 3T /// public byte FirstPulse5TStartTSpace3T; /// - /// Byte 540 - /// First pulse start time, at Mark >5T and Trailing Space 3T + /// Byte 540 + /// First pulse start time, at Mark >5T and Trailing Space 3T /// public byte FirstPulseStartTSpace3T; /// - /// Byte 541 - /// First pulse start time, at Mark 3T and Trailing Space 4T + /// Byte 541 + /// First pulse start time, at Mark 3T and Trailing Space 4T /// public byte FirstPulse3TStartTSpace4T; /// - /// Byte 542 - /// First pulse start time, at Mark 4T and Trailing Space 4T + /// Byte 542 + /// First pulse start time, at Mark 4T and Trailing Space 4T /// public byte FirstPulse4TStartTSpace4T; /// - /// Byte 543 - /// First pulse start time, at Mark 5T and Trailing Space 4T + /// Byte 543 + /// First pulse start time, at Mark 5T and Trailing Space 4T /// public byte FirstPulse5TStartTSpace4T; /// - /// Byte 544 - /// First pulse start time, at Mark >5T and Trailing Space 4T + /// Byte 544 + /// First pulse start time, at Mark >5T and Trailing Space 4T /// public byte FirstPulseStartTSpace4T; /// - /// Byte 545 - /// First pulse start time, at Mark 3T and Trailing Space 5T + /// Byte 545 + /// First pulse start time, at Mark 3T and Trailing Space 5T /// public byte FirstPulse3TStartTSpace5T; /// - /// Byte 546 - /// First pulse start time, at Mark 4T and Trailing Space 5T + /// Byte 546 + /// First pulse start time, at Mark 4T and Trailing Space 5T /// public byte FirstPulse4TStartTSpace5T; /// - /// Byte 547 - /// First pulse start time, at Mark 5T and Trailing Space 5T + /// Byte 547 + /// First pulse start time, at Mark 5T and Trailing Space 5T /// public byte FirstPulse5TStartTSpace5T; /// - /// Byte 548 - /// First pulse start time, at Mark >5T and Trailing Space 5T + /// Byte 548 + /// First pulse start time, at Mark >5T and Trailing Space 5T /// public byte FirstPulseStartTSpace5T; /// - /// Byte 549 - /// First pulse start time, at Mark 3T and Trailing Space >5T + /// Byte 549 + /// First pulse start time, at Mark 3T and Trailing Space >5T /// public byte FirstPulse3TStartTSpace; /// - /// Byte 550 - /// First pulse start time, at Mark 4T and Trailing Space >5T + /// Byte 550 + /// First pulse start time, at Mark 4T and Trailing Space >5T /// public byte FirstPulse4TStartTSpace; /// - /// Byte 551 - /// First pulse start time, at Mark 5T and Trailing Space >5T + /// Byte 551 + /// First pulse start time, at Mark 5T and Trailing Space >5T /// public byte FirstPulse5TStartTSpace; /// - /// Byte 552 - /// First pulse start time, at Mark >5T and Trailing Space >5T + /// Byte 552 + /// First pulse start time, at Mark >5T and Trailing Space >5T /// public byte FirstPulseStartTSpace; /// - /// Bytes 553 to 600 - /// Disk manufacturer's name, space-padded + /// Bytes 553 to 600 + /// Disk manufacturer's name, space-padded /// public string DiskManufacturer; /// - /// Bytes 601 to 616 - /// Disk manufacturer's supplementary information + /// Bytes 601 to 616 + /// Disk manufacturer's supplementary information /// public string DiskManufacturerSupplementary; /// - /// Bytes 617 to 627 - /// Write power control parameters + /// Bytes 617 to 627 + /// Write power control parameters /// public byte[] WritePowerControlParams; /// - /// Byte 619 - /// Ratio of peak power for land tracks to threshold peak power for land tracks + /// Byte 619 + /// Ratio of peak power for land tracks to threshold peak power for land tracks /// public byte PowerRatioLandThreshold; /// - /// Byte 620 - /// Target asymmetry + /// Byte 620 + /// Target asymmetry /// public byte TargetAsymmetry; /// - /// Byte 621 - /// Temporary peak power + /// Byte 621 + /// Temporary peak power /// public byte TemporaryPeakPower; /// - /// Byte 622 - /// Temporary bias power 1 + /// Byte 622 + /// Temporary bias power 1 /// public byte TemporaryBiasPower1; /// - /// Byte 623 - /// Temporary bias power 2 + /// Byte 623 + /// Temporary bias power 2 /// public byte TemporaryBiasPower2; /// - /// Byte 624 - /// Temporary bias power 3 + /// Byte 624 + /// Temporary bias power 3 /// public byte TemporaryBiasPower3; /// - /// Byte 625 - /// Ratio of peak power for groove tracks to threshold peak power for groove tracks + /// Byte 625 + /// Ratio of peak power for groove tracks to threshold peak power for groove tracks /// public byte PowerRatioGrooveThreshold; /// - /// Byte 626 - /// Ratio of peak power for land tracks to threshold 6T peak power for land tracks + /// Byte 626 + /// Ratio of peak power for land tracks to threshold 6T peak power for land tracks /// public byte PowerRatioLandThreshold6T; /// - /// Byte 627 - /// Ratio of peak power for groove tracks to threshold 6T peak power for groove tracks + /// Byte 627 + /// Ratio of peak power for groove tracks to threshold 6T peak power for groove tracks /// public byte PowerRatioGrooveThreshold6T; #endregion DVD-RAM PFI, version 0110b #region DVD+RW PFI, DVD+R PFI, DVD+R DL PFI and DVD+RW DL PFI /// - /// Byte 20, bit 6 - /// If set indicates data zone contains extended information for VCPS + /// Byte 20, bit 6 + /// If set indicates data zone contains extended information for VCPS /// public bool VCPS; /// - /// Byte 21 - /// Indicates restricted usage disk + /// Byte 21 + /// Indicates restricted usage disk /// public byte ApplicationCode; /// - /// Byte 22 - /// Bitmap of extended information block presence + /// Byte 22 + /// Bitmap of extended information block presence /// public byte ExtendedInformation; /// - /// Bytes 23 to 30 - /// Disk manufacturer ID, null-padded + /// Bytes 23 to 30 + /// Disk manufacturer ID, null-padded /// public string DiskManufacturerID; /// - /// Bytes 31 to 33 - /// Media type ID, null-padded + /// Bytes 31 to 33 + /// Media type ID, null-padded /// public string MediaTypeID; /// - /// Byte 34 - /// Product revision number + /// Byte 34 + /// Product revision number /// public byte ProductRevision; /// - /// Byte 35 - /// Indicates how many bytes, up to 63, are used in ADIP's PFI + /// Byte 35 + /// Indicates how many bytes, up to 63, are used in ADIP's PFI /// public byte PFIUsedInADIP; #endregion DVD+RW PFI, DVD+R PFI, DVD+R DL PFI and DVD+RW DL PFI #region DVD+RW PFI, version 0010b /// - /// Byte 55 - /// Ttop first pulse duration + /// Byte 55 + /// Ttop first pulse duration /// public byte TopFirstPulseDuration; /// - /// Byte 56 - /// Tmp multi pulse duration + /// Byte 56 + /// Tmp multi pulse duration /// public byte MultiPulseDuration; /// - /// Byte 57 - /// dTtop first pulse lead time + /// Byte 57 + /// dTtop first pulse lead time /// public byte FirstPulseLeadTime; /// - /// Byte 58 - /// dTera erase lead time at reference velocity + /// Byte 58 + /// dTera erase lead time at reference velocity /// public byte EraseLeadTimeRefVelocity; /// - /// Byte 59 - /// dTera erase lead time at upper velocity + /// Byte 59 + /// dTera erase lead time at upper velocity /// public byte EraseLeadTimeUppVelocity; #endregion DVD+RW PFI, version 0010b #region DVD+R PFI version 0001b and DVD+R DL PFI version 0001b /// - /// Byte 36 - /// Primary recording velocity for the basic write strategy + /// Byte 36 + /// Primary recording velocity for the basic write strategy /// public byte PrimaryVelocity; /// - /// Byte 37 - /// Upper recording velocity for the basic write strategy + /// Byte 37 + /// Upper recording velocity for the basic write strategy /// public byte UpperVelocity; /// - /// Byte 38 - /// Wavelength λIND + /// Byte 38 + /// Wavelength λIND /// public byte Wavelength; /// - /// Byte 39 - /// Normalized write power dependency on wavelength (dP/dλ)/(PIND/λIND) + /// Byte 39 + /// Normalized write power dependency on wavelength (dP/dλ)/(PIND/λIND) /// public byte NormalizedPowerDependency; /// - /// Byte 40 - /// Maximum read power at primary velocity + /// Byte 40 + /// Maximum read power at primary velocity /// public byte MaximumPowerAtPrimaryVelocity; /// - /// Byte 41 - /// Pind at primary velocity + /// Byte 41 + /// Pind at primary velocity /// public byte PindAtPrimaryVelocity; /// - /// Byte 42 - /// βtarget at primary velocity + /// Byte 42 + /// βtarget at primary velocity /// public byte BtargetAtPrimaryVelocity; /// - /// Byte 43 - /// Maximum read power at upper velocity + /// Byte 43 + /// Maximum read power at upper velocity /// public byte MaximumPowerAtUpperVelocity; /// - /// Byte 44 - /// Pind at primary velocity + /// Byte 44 + /// Pind at primary velocity /// public byte PindAtUpperVelocity; /// - /// Byte 45 - /// βtarget at upper velocity + /// Byte 45 + /// βtarget at upper velocity /// public byte BtargetAtUpperVelocity; /// - /// Byte 46 - /// Ttop (≥4T) first pulse duration for cm∗ ≥4T at Primary velocity + /// Byte 46 + /// Ttop (≥4T) first pulse duration for cm∗ ≥4T at Primary velocity /// public byte FirstPulseDuration4TPrimaryVelocity; /// - /// Byte 47 - /// Ttop (=3T) first pulse duration for cm∗ =3T at Primary velocity + /// Byte 47 + /// Ttop (=3T) first pulse duration for cm∗ =3T at Primary velocity /// public byte FirstPulseDuration3TPrimaryVelocity; /// - /// Byte 48 - /// Tmp multi pulse duration at Primary velocity + /// Byte 48 + /// Tmp multi pulse duration at Primary velocity /// public byte MultiPulseDurationPrimaryVelocity; /// - /// Byte 49 - /// Tlp last pulse duration at Primary velocity + /// Byte 49 + /// Tlp last pulse duration at Primary velocity /// public byte LastPulseDurationPrimaryVelocity; /// - /// Byte 50 - /// dTtop (≥4T) first pulse lead time for cm∗ ≥4T at Primary velocity + /// Byte 50 + /// dTtop (≥4T) first pulse lead time for cm∗ ≥4T at Primary velocity /// public byte FirstPulseLeadTime4TPrimaryVelocity; /// - /// Byte 51 - /// dTtop (=3T) first pulse lead time for cm∗ =3T at Primary velocity + /// Byte 51 + /// dTtop (=3T) first pulse lead time for cm∗ =3T at Primary velocity /// public byte FirstPulseLeadTime3TPrimaryVelocity; /// - /// Byte 52 - /// dTle first pulse leading edge shift for ps∗ =3T at Primary velocity + /// Byte 52 + /// dTle first pulse leading edge shift for ps∗ =3T at Primary velocity /// public byte FirstPulseLeadingEdgePrimaryVelocity; /// - /// Byte 53 - /// Ttop (≥4T) first pulse duration for cm∗ ≥4T at Upper velocity + /// Byte 53 + /// Ttop (≥4T) first pulse duration for cm∗ ≥4T at Upper velocity /// public byte FirstPulseDuration4TUpperVelocity; /// - /// Byte 54 - /// Ttop (=3T) first pulse duration for cm∗ =3T at Upper velocity + /// Byte 54 + /// Ttop (=3T) first pulse duration for cm∗ =3T at Upper velocity /// public byte FirstPulseDuration3TUpperVelocity; /// - /// Byte 55 - /// Tmp multi pulse duration at Upper velocity + /// Byte 55 + /// Tmp multi pulse duration at Upper velocity /// public byte MultiPulseDurationUpperVelocity; /// - /// Byte 56 - /// Tlp last pulse duration at Upper velocity + /// Byte 56 + /// Tlp last pulse duration at Upper velocity /// public byte LastPulseDurationUpperVelocity; /// - /// Byte 57 - /// dTtop (≥4T) first pulse lead time for cm∗ ≥4T at Upper velocity + /// Byte 57 + /// dTtop (≥4T) first pulse lead time for cm∗ ≥4T at Upper velocity /// public byte FirstPulseLeadTime4TUpperVelocity; /// - /// Byte 58 - /// dTtop (=3T) first pulse lead time for cm∗ =3T at Upper velocity + /// Byte 58 + /// dTtop (=3T) first pulse lead time for cm∗ =3T at Upper velocity /// public byte FirstPulseLeadTime3TUpperVelocity; /// - /// Byte 59 - /// dTle first pulse leading edge shift for ps∗ =3T at Upper velocity + /// Byte 59 + /// dTle first pulse leading edge shift for ps∗ =3T at Upper velocity /// public byte FirstPulseLeadingEdgeUpperVelocity; #endregion DVD+R PFI version 0001b and DVD+R DL PFI version 0001b #region DVD+R DL PFI version 0001b /// - /// Byte 34, bits 7 to 6 + /// Byte 34, bits 7 to 6 /// public DVDLayerStructure LayerStructure; #endregion DVD+R DL PFI version 0001b #region DVD+RW DL PFI /// - /// Byte 36 - /// Primary recording velocity for the basic write strategy + /// Byte 36 + /// Primary recording velocity for the basic write strategy /// public byte BasicPrimaryVelocity; /// - /// Byte 37 - /// Maximum read power at Primary velocity + /// Byte 37 + /// Maximum read power at Primary velocity /// public byte MaxReadPowerPrimaryVelocity; /// - /// Byte 38 - /// PIND at Primary velocity + /// Byte 38 + /// PIND at Primary velocity /// public byte PindPrimaryVelocity; /// - /// Byte 39 - /// ρ at Primary velocity + /// Byte 39 + /// ρ at Primary velocity /// public byte PPrimaryVelocity; /// - /// Byte 40 - /// ε1 at Primary velocity + /// Byte 40 + /// ε1 at Primary velocity /// public byte E1PrimaryVelocity; /// - /// Byte 41 - /// ε2 at Primary velocity + /// Byte 41 + /// ε2 at Primary velocity /// public byte E2PrimaryVelocity; /// - /// Byte 42 - /// γtarget at Primary velocity + /// Byte 42 + /// γtarget at Primary velocity /// public byte YtargetPrimaryVelocity; /// - /// Byte 43 - /// β optimum at Primary velocity + /// Byte 43 + /// β optimum at Primary velocity /// public byte BOptimumPrimaryVelocity; /// - /// Byte 46 - /// Ttop first pulse duration + /// Byte 46 + /// Ttop first pulse duration /// public byte TFirstPulseDuration; /// - /// Byte 47 - /// Tmp multi pulse duration + /// Byte 47 + /// Tmp multi pulse duration /// public byte TMultiPulseDuration; /// - /// Byte 48 - /// dTtop first pulse lead/lag time for any runlength ≥ 4T + /// Byte 48 + /// dTtop first pulse lead/lag time for any runlength ≥ 4T /// public byte FirstPulseLeadTimeAnyRun; /// - /// Byte 49 - /// dTtop,3 first pulse lead/lag time for runlengths = 3T + /// Byte 49 + /// dTtop,3 first pulse lead/lag time for runlengths = 3T /// public byte FirstPulseLeadTimeRun3T; /// - /// Byte 50 - /// dTlp last pulse lead/lag time for any runlength ≥ 5T + /// Byte 50 + /// dTlp last pulse lead/lag time for any runlength ≥ 5T /// public byte LastPulseLeadTimeAnyRun; /// - /// Byte 51 - /// dTlp,3 last pulse lead/lag time for runlengths = 3T + /// Byte 51 + /// dTlp,3 last pulse lead/lag time for runlengths = 3T /// public byte LastPulseLeadTime3T; /// - /// Byte 52 - /// dTlp,4 last pulse lead/lag time for runlengths = 4T + /// Byte 52 + /// dTlp,4 last pulse lead/lag time for runlengths = 4T /// public byte LastPulseLeadTime4T; /// - /// Byte 53 - /// dTera erase lead/lag time when preceding mark length ≥ 5T + /// Byte 53 + /// dTera erase lead/lag time when preceding mark length ≥ 5T /// public byte ErasePulseLeadTimeAny; /// - /// Byte 54 - /// dTera,3 erase lead/lag time when preceding mark length = 3T + /// Byte 54 + /// dTera,3 erase lead/lag time when preceding mark length = 3T /// public byte ErasePulseLeadTime3T; /// - /// Byte 55 - /// dTera,4 erase lead/lag time when preceding mark length = 4T + /// Byte 55 + /// dTera,4 erase lead/lag time when preceding mark length = 4T /// public byte ErasePulseLeadTime4T; #endregion DVD+RW DL PFI #region DVD-R DL PFI and DVD-RW DL PFI /// - /// Byte 21 - /// Maximum recording speed + /// Byte 21 + /// Maximum recording speed /// public DVDRecordingSpeed MaxRecordingSpeed; /// - /// Byte 22 - /// Minimum recording speed + /// Byte 22 + /// Minimum recording speed /// public DVDRecordingSpeed MinRecordingSpeed; /// - /// Byte 23 - /// Another recording speed + /// Byte 23 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed1; /// - /// Byte 24 - /// Another recording speed + /// Byte 24 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed2; /// - /// Byte 25 - /// Another recording speed + /// Byte 25 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed3; /// - /// Byte 26 - /// Another recording speed + /// Byte 26 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed4; /// - /// Byte 27 - /// Another recording speed + /// Byte 27 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed5; /// - /// Byte 28 - /// Another recording speed + /// Byte 28 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed6; /// - /// Byte 29 - /// Another recording speed + /// Byte 29 + /// Another recording speed /// public DVDRecordingSpeed RecordingSpeed7; /// - /// Byte 30 - /// Class + /// Byte 30 + /// Class /// public byte Class; /// - /// Byte 31 - /// Extended version. 0x30 = ECMA-382, 0x20 = ECMA-384 + /// Byte 31 + /// Extended version. 0x30 = ECMA-382, 0x20 = ECMA-384 /// public byte ExtendedVersion; /// - /// Byte 36 - /// Start sector number of current RMD in Extra Border Zone + /// Byte 36 + /// Start sector number of current RMD in Extra Border Zone /// public uint CurrentRMDExtraBorderPSN; /// - /// Byte 40 - /// Start sector number of Physical Format Information blocks in Extra Border Zone + /// Byte 40 + /// Start sector number of Physical Format Information blocks in Extra Border Zone /// public uint PFIExtraBorderPSN; /// - /// Byte 44, bit 0 - /// If NOT set, Control Data Zone is pre-recorded + /// Byte 44, bit 0 + /// If NOT set, Control Data Zone is pre-recorded /// public bool PreRecordedControlDataInv; /// - /// Byte 44 bit 1 - /// Lead-in Zone is pre-recorded + /// Byte 44 bit 1 + /// Lead-in Zone is pre-recorded /// public bool PreRecordedLeadIn; /// - /// Byte 44 bit 3 - /// Lead-out Zone is pre-recorded + /// Byte 44 bit 3 + /// Lead-out Zone is pre-recorded /// public bool PreRecordedLeadOut; /// - /// Byte 45 bits 0 to 3 - /// AR characteristic of LPP on Layer 1 + /// Byte 45 bits 0 to 3 + /// AR characteristic of LPP on Layer 1 /// public byte ARCharLayer1; /// - /// Byte 45 bits 4 to 7 - /// Tracking polarity on Layer 1 + /// Byte 45 bits 4 to 7 + /// Tracking polarity on Layer 1 /// public byte TrackPolarityLayer1; #endregion DVD-R DL PFI and DVD-RW DL PFI @@ -1082,9 +1091,11 @@ namespace DiscImageChef.Decoders.DVD pfi.Layer0EndPSN = (uint)((response[16] << 24) + (response[17] << 16) + (response[18] << 8) + response[19]); pfi.BCA |= (response[20] & 0x80) == 0x80; - switch(pfi.DiskCategory) { + switch(pfi.DiskCategory) + { // UMD - case DiskCategory.UMD: pfi.MediaAttribute = (ushort)((response[21] << 8) + response[22]); + case DiskCategory.UMD: + pfi.MediaAttribute = (ushort)((response[21] << 8) + response[22]); break; // DVD-RAM case DiskCategory.DVDRAM: @@ -1231,7 +1242,8 @@ namespace DiscImageChef.Decoders.DVD pfi.PFIUsedInADIP = response[35]; } - switch(pfi.DiskCategory) { + switch(pfi.DiskCategory) + { // DVD+RW case DiskCategory.DVDPRW when pfi.PartVersion == 2: pfi.TopFirstPulseDuration = response[55]; @@ -1270,9 +1282,11 @@ namespace DiscImageChef.Decoders.DVD break; } - switch(pfi.DiskCategory) { + switch(pfi.DiskCategory) + { // DVD+R DL - case DiskCategory.DVDPRDL: pfi.LayerStructure = (DVDLayerStructure)((response[34] & 0xC0) >> 6); + case DiskCategory.DVDPRDL: + pfi.LayerStructure = (DVDLayerStructure)((response[34] & 0xC0) >> 6); break; // DVD+RW DL case DiskCategory.DVDPRWDL: @@ -1351,10 +1365,13 @@ namespace DiscImageChef.Decoders.DVD { case DiskCategory.DVDROM: sb.AppendFormat(categorySentence, sizeString, "DVD-ROM", decoded.PartVersion).AppendLine(); - switch(decoded.DiscSize) { - case DVDSize.OneTwenty when decoded.PartVersion == 1: sb.AppendLine("Disc claims conformation to ECMA-267"); + switch(decoded.DiscSize) + { + case DVDSize.OneTwenty when decoded.PartVersion == 1: + sb.AppendLine("Disc claims conformation to ECMA-267"); break; - case DVDSize.Eighty when decoded.PartVersion == 1: sb.AppendLine("Disc claims conformation to ECMA-268"); + case DVDSize.Eighty when decoded.PartVersion == 1: + sb.AppendLine("Disc claims conformation to ECMA-268"); break; } @@ -1583,8 +1600,10 @@ namespace DiscImageChef.Decoders.DVD if(decoded.BCA) sb.AppendLine("Disc has a burst cutting area"); - switch(decoded.DiskCategory) { - case DiskCategory.UMD: sb.AppendFormat("Media attribute is {0}", decoded.MediaAttribute).AppendLine(); + switch(decoded.DiskCategory) + { + case DiskCategory.UMD: + sb.AppendFormat("Media attribute is {0}", decoded.MediaAttribute).AppendLine(); break; case DiskCategory.DVDRAM: switch(decoded.DiscType) @@ -1611,7 +1630,8 @@ namespace DiscImageChef.Decoders.DVD case DiskCategory.DVDRW when decoded.PartVersion < 3: sb.AppendFormat("Current Border-Out first sector is PSN {0:X}h", decoded.CurrentBorderOutSector) .AppendLine(); - sb.AppendFormat("Next Border-In first sector is PSN {0:X}h", decoded.NextBorderInSector).AppendLine(); + sb.AppendFormat("Next Border-In first sector is PSN {0:X}h", decoded.NextBorderInSector) + .AppendLine(); break; case DiskCategory.DVDPR: case DiskCategory.DVDPRW: @@ -1628,10 +1648,9 @@ namespace DiscImageChef.Decoders.DVD if((decoded.DiskCategory != DiskCategory.DVDR || decoded.PartVersion < 6) && (decoded.DiskCategory != DiskCategory.DVDRW || decoded.PartVersion < 3)) return sb.ToString(); - sb.AppendFormat("Current RMD in extra Border zone starts at PSN {0:X}h", - decoded.CurrentRMDExtraBorderPSN).AppendLine(); - sb.AppendFormat("PFI in extra Border zone starts at PSN {0:X}h", decoded.PFIExtraBorderPSN) + sb.AppendFormat("Current RMD in extra Border zone starts at PSN {0:X}h", decoded.CurrentRMDExtraBorderPSN) .AppendLine(); + sb.AppendFormat("PFI in extra Border zone starts at PSN {0:X}h", decoded.PFIExtraBorderPSN).AppendLine(); if(!decoded.PreRecordedControlDataInv) sb.AppendLine("Control Data Zone is pre-recorded"); if(decoded.PreRecordedLeadIn) sb.AppendLine("Lead-In is pre-recorded"); if(decoded.PreRecordedLeadOut) sb.AppendLine("Lead-Out is pre-recorded"); diff --git a/DVD/PRI.cs b/DVD/PRI.cs index 7bd281a..5fee93d 100644 --- a/DVD/PRI.cs +++ b/DVD/PRI.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct PreRecordedInformation { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// Pre-recorded Information in Lead-in for writable media + /// Bytes 4 to end + /// Pre-recorded Information in Lead-in for writable media /// public byte[] PRI; } diff --git a/DVD/RMD.cs b/DVD/RMD.cs index c57f89f..c450467 100644 --- a/DVD/RMD.cs +++ b/DVD/RMD.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,23 +58,23 @@ namespace DiscImageChef.Decoders.DVD public struct LastBorderOutRMD { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// RMD in last recorded Border-out + /// Bytes 4 to end + /// RMD in last recorded Border-out /// public byte[] RMD; } @@ -82,38 +82,38 @@ namespace DiscImageChef.Decoders.DVD public struct HDMediumStatus { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bits 7 to 1 - /// Reserved + /// Byte 4, bits 7 to 1 + /// Reserved /// public byte Reserved3; /// - /// Byte 4, bit 0 - /// Test Zone has been extended + /// Byte 4, bit 0 + /// Test Zone has been extended /// public bool ExtendedTestZone; /// - /// Byte 5 - /// Number of remaining RMDs in RDZ + /// Byte 5 + /// Number of remaining RMDs in RDZ /// public byte RemainingRMDs; /// - /// Bytes 6 to 7 - /// Number of remaining RMDs in current RMZ + /// Bytes 6 to 7 + /// Number of remaining RMDs in current RMZ /// public ushort CurrentRemainingRMDs; } diff --git a/DVD/Spare.cs b/DVD/Spare.cs index 2db3529..d650317 100644 --- a/DVD/Spare.cs +++ b/DVD/Spare.cs @@ -36,19 +36,19 @@ using System.Text; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -59,33 +59,33 @@ namespace DiscImageChef.Decoders.DVD public struct SpareAreaInformation { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// Data length + /// Bytes 4 to 7 + /// Data length /// public uint UnusedPrimaryBlocks; /// - /// Bytes 8 to 11 - /// Data length + /// Bytes 8 to 11 + /// Data length /// public uint UnusedSupplementaryBlocks; /// - /// Bytes 12 to 15 - /// Data length + /// Bytes 12 to 15 + /// Data length /// public uint AllocatedSupplementaryBlocks; } diff --git a/DVD/UDI.cs b/DVD/UDI.cs index 9e20b5f..2c15762 100644 --- a/DVD/UDI.cs +++ b/DVD/UDI.cs @@ -35,20 +35,20 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.DVD { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g - /// ECMA 365 + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g + /// ECMA 365 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -58,63 +58,63 @@ namespace DiscImageChef.Decoders.DVD public struct UniqueDiscIdentifier { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 - /// Reserved + /// Byte 4 + /// Reserved /// public byte Reserved3; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved4; /// - /// Bytes 6 to 7 - /// Random number + /// Bytes 6 to 7 + /// Random number /// public ushort RandomNumber; /// - /// Byte 8 to 11 - /// Year + /// Byte 8 to 11 + /// Year /// public uint Year; /// - /// Byte 12 to 13 - /// Month + /// Byte 12 to 13 + /// Month /// public ushort Month; /// - /// Byte 14 to 15 - /// Day + /// Byte 14 to 15 + /// Day /// public ushort Day; /// - /// Byte 16 to 17 - /// Hour + /// Byte 16 to 17 + /// Hour /// public ushort Hour; /// - /// Byte 18 to 19 - /// Minute + /// Byte 18 to 19 + /// Minute /// public ushort Minute; /// - /// Byte 20 to 21 - /// Second + /// Byte 20 to 21 + /// Second /// public ushort Second; } diff --git a/Floppy/Amiga.cs b/Floppy/Amiga.cs index eb9cffc..7a03444 100644 --- a/Floppy/Amiga.cs +++ b/Floppy/Amiga.cs @@ -36,7 +36,7 @@ using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy { /// - /// Methods and structures for Commodore Amiga decoding + /// Methods and structures for Commodore Amiga decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -46,39 +46,39 @@ namespace DiscImageChef.Decoders.Floppy public struct Sector { /// - /// Set to 0x00 + /// Set to 0x00 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] zero; /// - /// Set to 0xA1 + /// Set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] sync; /// - /// Set to 0xFF + /// Set to 0xFF /// public byte amiga; /// - /// Track number + /// Track number /// public byte track; /// - /// Sector number + /// Sector number /// public byte sector; /// - /// Remaining sectors til end of writing + /// Remaining sectors til end of writing /// public byte remaining; /// - /// OS dependent tag + /// OS dependent tag /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] label; /// - /// Checksum from to + /// Checksum from to /// public uint headerChecksum; /// - /// Checksum from + /// Checksum from /// public uint dataChecksum; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)] public byte[] data; diff --git a/Floppy/Apple2.cs b/Floppy/Apple2.cs index ab7b58c..9518645 100644 --- a/Floppy/Apple2.cs +++ b/Floppy/Apple2.cs @@ -41,7 +41,7 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Floppy { /// - /// Methods and structures for Apple ][ floppy decoding + /// Methods and structures for Apple ][ floppy decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -49,99 +49,99 @@ namespace DiscImageChef.Decoders.Floppy public static class Apple2 { /// - /// GCR-encoded Apple ][ GCR floppy track + /// GCR-encoded Apple ][ GCR floppy track /// public class RawTrack { /// - /// Track preamble, set to self-sync 0xFF, between 40 and 95 bytes + /// Track preamble, set to self-sync 0xFF, between 40 and 95 bytes /// public byte[] gap; public RawSector[] sectors; } /// - /// GCR-encoded Apple ][ GCR floppy sector + /// GCR-encoded Apple ][ GCR floppy sector /// public class RawSector { /// - /// Address field + /// Address field /// public RawAddressField addressField; /// - /// Track preamble, set to self-sync 0xFF, between 5 and 10 bytes - /// - public byte[] innerGap; - /// - /// Data field + /// Data field /// public RawDataField dataField; /// - /// Track preamble, set to self-sync 0xFF, between 14 and 24 bytes + /// Track preamble, set to self-sync 0xFF, between 14 and 24 bytes /// public byte[] gap; + /// + /// Track preamble, set to self-sync 0xFF, between 5 and 10 bytes + /// + public byte[] innerGap; } /// - /// GCR-encoded Apple ][ GCR floppy sector address field + /// GCR-encoded Apple ][ GCR floppy sector address field /// public class RawAddressField { /// - /// Always 0xD5, 0xAA, 0x96 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; - /// - /// Volume number encoded as: - /// volume[0] = (decodedVolume >> 1) | 0xAA - /// volume[1] = decodedVolume | 0xAA - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] volume; - /// - /// Track number encoded as: - /// track[0] = (decodedTrack >> 1) | 0xAA - /// track[1] = decodedTrack | 0xAA - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] track; - /// - /// Sector number encoded as: - /// sector[0] = (decodedSector >> 1) | 0xAA - /// sector[1] = decodedSector | 0xAA - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] sector; - /// - /// decodedChecksum = decodedVolume ^ decodedTrack ^ decodedSector - /// checksum[0] = (decodedChecksum >> 1) | 0xAA - /// checksum[1] = decodedChecksum | 0xAA + /// decodedChecksum = decodedVolume ^ decodedTrack ^ decodedSector + /// checksum[0] = (decodedChecksum >> 1) | 0xAA + /// checksum[1] = decodedChecksum | 0xAA /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] checksum; /// - /// Always 0xDE, 0xAA, 0xEB + /// Always 0xDE, 0xAA, 0xEB /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] epilogue; - } - - /// - /// GCR-encoded Apple ][ GCR floppy sector data field - /// - public class RawDataField - { /// - /// Always 0xD5, 0xAA, 0xAD + /// Always 0xD5, 0xAA, 0x96 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; /// - /// Encoded data bytes. - /// 410 bytes for 5to3 (aka DOS 3.2) format - /// 342 bytes for 6to2 (aka DOS 3.3) format + /// Sector number encoded as: + /// sector[0] = (decodedSector >> 1) | 0xAA + /// sector[1] = decodedSector | 0xAA /// - public byte[] data; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] sector; + /// + /// Track number encoded as: + /// track[0] = (decodedTrack >> 1) | 0xAA + /// track[1] = decodedTrack | 0xAA + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] track; + /// + /// Volume number encoded as: + /// volume[0] = (decodedVolume >> 1) | 0xAA + /// volume[1] = decodedVolume | 0xAA + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] volume; + } + + /// + /// GCR-encoded Apple ][ GCR floppy sector data field + /// + public class RawDataField + { public byte checksum; /// - /// Always 0xDE, 0xAA, 0xEB + /// Encoded data bytes. + /// 410 bytes for 5to3 (aka DOS 3.2) format + /// 342 bytes for 6to2 (aka DOS 3.3) format + /// + public byte[] data; + /// + /// Always 0xDE, 0xAA, 0xEB /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] epilogue; + /// + /// Always 0xD5, 0xAA, 0xAD + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; } static readonly byte[] ReadTable5and3 = @@ -217,7 +217,7 @@ namespace DiscImageChef.Decoders.Floppy }; /// - /// Decodes the 5and3 encoded data + /// Decodes the 5and3 encoded data /// /// 5and3 encoded data. public static byte[] Decode5and3(byte[] data) @@ -253,7 +253,7 @@ namespace DiscImageChef.Decoders.Floppy } /// - /// Decodes the 6and2 encoded data + /// Decodes the 6and2 encoded data /// /// 6and2 encoded data. public static byte[] Decode6and2(byte[] data) @@ -549,8 +549,7 @@ namespace DiscImageChef.Decoders.Floppy MemoryStream raw = new MemoryStream(); raw.Write(track.gap, 0, track.gap.Length); - foreach(byte[] rawSector in track.sectors.Select(MarshalSector)) - { raw.Write(rawSector, 0, rawSector.Length); } + foreach(byte[] rawSector in track.sectors.Select(MarshalSector)) raw.Write(rawSector, 0, rawSector.Length); return raw.ToArray(); } @@ -589,7 +588,7 @@ namespace DiscImageChef.Decoders.Floppy if(disk == null) return null; MemoryStream raw = new MemoryStream(); - foreach(byte[] rawTrack in disk.Select(MarshalTrack)) { raw.Write(rawTrack, 0, rawTrack.Length); } + foreach(byte[] rawTrack in disk.Select(MarshalTrack)) raw.Write(rawTrack, 0, rawTrack.Length); return raw.ToArray(); } diff --git a/Floppy/AppleSony.cs b/Floppy/AppleSony.cs index 2652024..2fc370c 100644 --- a/Floppy/AppleSony.cs +++ b/Floppy/AppleSony.cs @@ -43,7 +43,7 @@ namespace DiscImageChef.Decoders.Floppy // Inside Macintosh, Volume II, ISBN 0-201-17732-3 /// - /// Methods and structures for Apple Sony GCR floppy decoding + /// Methods and structures for Apple Sony GCR floppy decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -52,100 +52,100 @@ namespace DiscImageChef.Decoders.Floppy public static class AppleSony { /// - /// GCR-encoded Apple Sony GCR floppy track + /// GCR-encoded Apple Sony GCR floppy track /// public class RawTrack { /// - /// Track preamble, set to self-sync 0xFF, 36 bytes + /// Track preamble, set to self-sync 0xFF, 36 bytes /// public byte[] gap; public RawSector[] sectors; } /// - /// GCR-encoded Apple Sony GCR floppy sector + /// GCR-encoded Apple Sony GCR floppy sector /// public class RawSector { /// - /// Address field + /// Address field /// public RawAddressField addressField; /// - /// Track preamble, set to self-sync 0xFF, 6 bytes - /// - public byte[] innerGap; - /// - /// Data field + /// Data field /// public RawDataField dataField; /// - /// Track preamble, set to self-sync 0xFF, unknown size + /// Track preamble, set to self-sync 0xFF, unknown size /// public byte[] gap; + /// + /// Track preamble, set to self-sync 0xFF, 6 bytes + /// + public byte[] innerGap; } /// - /// GCR-encoded Apple Sony GCR floppy sector address field + /// GCR-encoded Apple Sony GCR floppy sector address field /// public class RawAddressField { /// - /// Always 0xD5, 0xAA, 0x96 - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; - /// - /// Encoded (decodedTrack & 0x3F) - /// - public byte track; - /// - /// Encoded sector number - /// - public byte sector; - /// - /// Encoded side number - /// - public byte side; - /// - /// Disk format - /// - public AppleEncodedFormat format; - /// - /// Checksum + /// Checksum /// public byte checksum; /// - /// Always 0xDE, 0xAA + /// Always 0xDE, 0xAA /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] epilogue; + /// + /// Disk format + /// + public AppleEncodedFormat format; + /// + /// Always 0xD5, 0xAA, 0x96 + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; + /// + /// Encoded sector number + /// + public byte sector; + /// + /// Encoded side number + /// + public byte side; + /// + /// Encoded (decodedTrack & 0x3F) + /// + public byte track; } /// - /// GCR-encoded Apple ][ GCR floppy sector data field + /// GCR-encoded Apple ][ GCR floppy sector data field /// public class RawDataField { /// - /// Always 0xD5, 0xAA, 0xAD - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; - /// - /// Spare, usually - /// - public byte spare; - /// - /// Encoded data bytes. - /// - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 698)] public byte[] data; - /// - /// Checksum + /// Checksum /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public byte[] checksum; /// - /// Always 0xDE, 0xAA + /// Encoded data bytes. + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 698)] public byte[] data; + /// + /// Always 0xDE, 0xAA /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] epilogue; + /// + /// Always 0xD5, 0xAA, 0xAD + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] prologue; + /// + /// Spare, usually + /// + public byte spare; } public static byte[] DecodeSector(RawSector sector) @@ -441,8 +441,7 @@ namespace DiscImageChef.Decoders.Floppy MemoryStream raw = new MemoryStream(); raw.Write(track.gap, 0, track.gap.Length); - foreach(byte[] rawSector in track.sectors.Select(MarshalSector)) - { raw.Write(rawSector, 0, rawSector.Length); } + foreach(byte[] rawSector in track.sectors.Select(MarshalSector)) raw.Write(rawSector, 0, rawSector.Length); return raw.ToArray(); } @@ -481,7 +480,7 @@ namespace DiscImageChef.Decoders.Floppy if(disk == null) return null; MemoryStream raw = new MemoryStream(); - foreach(byte[] rawTrack in disk.Select(MarshalTrack)) { raw.Write(rawTrack, 0, rawTrack.Length); } + foreach(byte[] rawTrack in disk.Select(MarshalTrack)) raw.Write(rawTrack, 0, rawTrack.Length); return raw.ToArray(); } diff --git a/Floppy/Commodore.cs b/Floppy/Commodore.cs index 8c9aa52..ec417a8 100644 --- a/Floppy/Commodore.cs +++ b/Floppy/Commodore.cs @@ -36,7 +36,7 @@ using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy { /// - /// Methods and structures for Commodore GCR floppy decoding + /// Methods and structures for Commodore GCR floppy decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -44,55 +44,55 @@ namespace DiscImageChef.Decoders.Floppy public static class Commodore { /// - /// Decoded Commodore GCR sector header + /// Decoded Commodore GCR sector header /// public struct SectorHeader { /// - /// Always 0x08 + /// Always 0x08 /// public byte id; /// - /// XOR of following fields + /// XOR of following fields /// public byte checksum; /// - /// Sector number + /// Sector number /// public byte sector; /// - /// Track number + /// Track number /// public byte track; /// - /// Format ID, unknown meaning + /// Format ID, unknown meaning /// public ushort format; /// - /// Filled with 0x0F + /// Filled with 0x0F /// public ushort fill; } /// - /// Decoded Commodore GCR sector data + /// Decoded Commodore GCR sector data /// public struct SectorData { /// - /// Always 0x07 + /// Always 0x07 /// public byte id; /// - /// User data + /// User data /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public byte data; /// - /// XOR of + /// XOR of /// public byte checksum; /// - /// Filled with 0x0F + /// Filled with 0x0F /// public ushort fill; } diff --git a/Floppy/Enums.cs b/Floppy/Enums.cs index 1fd6b9a..619064f 100644 --- a/Floppy/Enums.cs +++ b/Floppy/Enums.cs @@ -35,41 +35,41 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.Floppy { /// - /// In-sector code for sector size + /// In-sector code for sector size /// [SuppressMessage("ReSharper", "InconsistentNaming")] public enum IBMSectorSizeCode : byte { /// - /// 128 bytes/sector + /// 128 bytes/sector /// EighthKilo = 0, /// - /// 256 bytes/sector + /// 256 bytes/sector /// QuarterKilo = 1, /// - /// 512 bytes/sector + /// 512 bytes/sector /// HalfKilo = 2, /// - /// 1024 bytes/sector + /// 1024 bytes/sector /// Kilo = 3, /// - /// 2048 bytes/sector + /// 2048 bytes/sector /// TwiceKilo = 4, /// - /// 4096 bytes/sector + /// 4096 bytes/sector /// FriceKilo = 5, /// - /// 8192 bytes/sector + /// 8192 bytes/sector /// TwiceFriceKilo = 6, /// - /// 16384 bytes/sector + /// 16384 bytes/sector /// FricelyFriceKilo = 7 } @@ -87,19 +87,19 @@ namespace DiscImageChef.Decoders.Floppy public enum AppleEncodedFormat : byte { /// - /// Disk is an Apple II 3.5" disk + /// Disk is an Apple II 3.5" disk /// AppleII = 0x96, /// - /// Disk is an Apple Lisa 3.5" disk + /// Disk is an Apple Lisa 3.5" disk /// Lisa = 0x97, /// - /// Disk is an Apple Macintosh single-sided 3.5" disk + /// Disk is an Apple Macintosh single-sided 3.5" disk /// MacSingleSide = 0x9A, /// - /// Disk is an Apple Macintosh double-sided 3.5" disk + /// Disk is an Apple Macintosh double-sided 3.5" disk /// MacDoubleSide = 0xD9 } diff --git a/Floppy/ISO.cs b/Floppy/ISO.cs index 9ee89f5..bd1e30b 100644 --- a/Floppy/ISO.cs +++ b/Floppy/ISO.cs @@ -46,7 +46,7 @@ namespace DiscImageChef.Decoders.Floppy // ECMA-100 /// - /// Methods and structures for ISO floppy decoding (also used by Atari ST and others) + /// Methods and structures for ISO floppy decoding (also used by Atari ST and others) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -54,109 +54,109 @@ namespace DiscImageChef.Decoders.Floppy public static class ISO { /// - /// ISO floppy track, also used by Atari ST and others + /// ISO floppy track, also used by Atari ST and others /// public struct Track { /// - /// Start of track, 32 bytes set to 0x4E + /// Start of track, 32 bytes set to 0x4E /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public byte[] innerGap; /// - /// Track sectors + /// Track sectors /// public Sector[] sectors; /// - /// Undefined size + /// Undefined size /// public byte[] gap; } /// - /// Raw demodulated format for IBM System 34 floppies + /// Raw demodulated format for IBM System 34 floppies /// public struct Sector { /// - /// Sector address mark + /// Sector address mark /// public AddressMark addressMark; /// - /// 22 bytes set to 0x4E, set to 0x22 on Commodore 1581 + /// 22 bytes set to 0x4E, set to 0x22 on Commodore 1581 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)] public byte[] innerGap; /// - /// Sector data block + /// Sector data block /// public DataBlock dataBlock; /// - /// Variable bytes set to 0x4E, ECMA defines 54 + /// Variable bytes set to 0x4E, ECMA defines 54 /// public byte[] outerGap; } /// - /// Sector address mark for IBM System 34 floppies, contains sync word + /// Sector address mark for IBM System 34 floppies, contains sync word /// public struct AddressMark { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xA1 + /// 3 bytes set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] aone; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Track number + /// Track number /// public byte track; /// - /// Side number + /// Side number /// public byte side; /// - /// Sector number + /// Sector number /// public byte sector; /// - /// + /// /// public IBMSectorSizeCode sectorSize; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } /// - /// Sector data block for IBM System 34 floppies + /// Sector data block for IBM System 34 floppies /// public struct DataBlock { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xA1 + /// 3 bytes set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] aone; /// - /// Set to or to + /// Set to or to /// public IBMIdType type; /// - /// User data + /// User data /// public byte[] data; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } diff --git a/Floppy/Perpendicular.cs b/Floppy/Perpendicular.cs index 1499535..5ea3ae6 100644 --- a/Floppy/Perpendicular.cs +++ b/Floppy/Perpendicular.cs @@ -46,7 +46,7 @@ namespace DiscImageChef.Decoders.Floppy // ECMA-100 /// - /// Methods and structures for perpendicular MFM floppy decoding + /// Methods and structures for perpendicular MFM floppy decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -54,137 +54,137 @@ namespace DiscImageChef.Decoders.Floppy public static class Perpendicular { /// - /// Perpendicular floppy track + /// Perpendicular floppy track /// public struct Track { /// - /// Start of track + /// Start of track /// public TrackPreamble trackStart; /// - /// Track sectors + /// Track sectors /// public Sector[] sectors; /// - /// Undefined size + /// Undefined size /// public byte[] gap; } /// - /// Raw demodulated format for perpendicular floppies + /// Raw demodulated format for perpendicular floppies /// public struct Sector { /// - /// Sector address mark + /// Sector address mark /// public AddressMark addressMark; /// - /// 41 bytes set to 0x4E + /// 41 bytes set to 0x4E /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 41)] public byte[] innerGap; /// - /// Sector data block + /// Sector data block /// public DataBlock dataBlock; /// - /// Variable-sized inter-sector gap, ECMA defines 83 bytes + /// Variable-sized inter-sector gap, ECMA defines 83 bytes /// public byte[] outerGap; } /// - /// Start of IBM PC MFM floppy track - /// Used by IBM PC, Apple Macintosh (high-density only), and a lot others + /// Start of IBM PC MFM floppy track + /// Used by IBM PC, Apple Macintosh (high-density only), and a lot others /// public struct TrackPreamble { /// - /// Gap from index pulse, 80 bytes set to 0x4E + /// Gap from index pulse, 80 bytes set to 0x4E /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 80)] public byte[] gap; /// - /// 12 bytes set to 0x00 + /// 12 bytes set to 0x00 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xC2 + /// 3 bytes set to 0xC2 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] ctwo; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Gap until first sector, 50 bytes to 0x4E + /// Gap until first sector, 50 bytes to 0x4E /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)] public byte[] gap1; } /// - /// Sector address mark for IBM System 34 floppies, contains sync word + /// Sector address mark for IBM System 34 floppies, contains sync word /// public struct AddressMark { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xA1 + /// 3 bytes set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] aone; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Track number + /// Track number /// public byte track; /// - /// Side number + /// Side number /// public byte side; /// - /// Sector number + /// Sector number /// public byte sector; /// - /// + /// /// public IBMSectorSizeCode sectorSize; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } /// - /// Sector data block for IBM System 34 floppies + /// Sector data block for IBM System 34 floppies /// public struct DataBlock { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xA1 + /// 3 bytes set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] aone; /// - /// Set to or to + /// Set to or to /// public IBMIdType type; /// - /// User data + /// User data /// public byte[] data; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } diff --git a/Floppy/System34.cs b/Floppy/System34.cs index e2765fb..bc9342b 100644 --- a/Floppy/System34.cs +++ b/Floppy/System34.cs @@ -46,7 +46,7 @@ namespace DiscImageChef.Decoders.Floppy // ECMA-100 /// - /// Methods and structures for IBM System 34 floppy decoding + /// Methods and structures for IBM System 34 floppy decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -54,138 +54,138 @@ namespace DiscImageChef.Decoders.Floppy public static class System34 { /// - /// Track format for IBM System 34 floppy - /// Used by IBM PC, Apple Macintosh (high-density only), and a lot others + /// Track format for IBM System 34 floppy + /// Used by IBM PC, Apple Macintosh (high-density only), and a lot others /// public struct Track { /// - /// Start of track + /// Start of track /// public TrackPreamble trackStart; /// - /// Track sectors + /// Track sectors /// public Sector[] sectors; /// - /// Undefined size + /// Undefined size /// public byte[] gap; } /// - /// Start of IBM PC MFM floppy track - /// Used by IBM PC, Apple Macintosh (high-density only), and a lot others + /// Start of IBM PC MFM floppy track + /// Used by IBM PC, Apple Macintosh (high-density only), and a lot others /// public struct TrackPreamble { /// - /// Gap from index pulse, 80 bytes set to 0x4E + /// Gap from index pulse, 80 bytes set to 0x4E /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 80)] public byte[] gap; /// - /// 12 bytes set to 0x00 + /// 12 bytes set to 0x00 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xC2 + /// 3 bytes set to 0xC2 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] ctwo; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Gap until first sector, 50 bytes to 0x4E + /// Gap until first sector, 50 bytes to 0x4E /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)] public byte[] gap1; } /// - /// Raw demodulated format for IBM System 34 floppies + /// Raw demodulated format for IBM System 34 floppies /// public struct Sector { /// - /// Sector address mark + /// Sector address mark /// public AddressMark addressMark; /// - /// 22 bytes set to 0x4E, set to 0x22 on Commodore 1581 + /// 22 bytes set to 0x4E, set to 0x22 on Commodore 1581 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)] public byte[] innerGap; /// - /// Sector data block + /// Sector data block /// public DataBlock dataBlock; /// - /// Variable bytes set to 0x4E, ECMA defines 54 + /// Variable bytes set to 0x4E, ECMA defines 54 /// public byte[] outerGap; } /// - /// Sector address mark for IBM System 34 floppies, contains sync word + /// Sector address mark for IBM System 34 floppies, contains sync word /// public struct AddressMark { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xA1 + /// 3 bytes set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] aone; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Track number + /// Track number /// public byte track; /// - /// Side number + /// Side number /// public byte side; /// - /// Sector number + /// Sector number /// public byte sector; /// - /// + /// /// public IBMSectorSizeCode sectorSize; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } /// - /// Sector data block for IBM System 34 floppies + /// Sector data block for IBM System 34 floppies /// public struct DataBlock { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// 3 bytes set to 0xA1 + /// 3 bytes set to 0xA1 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] aone; /// - /// Set to or to + /// Set to or to /// public IBMIdType type; /// - /// User data + /// User data /// public byte[] data; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } diff --git a/Floppy/System3740.cs b/Floppy/System3740.cs index fab31ab..41a884c 100644 --- a/Floppy/System3740.cs +++ b/Floppy/System3740.cs @@ -46,7 +46,7 @@ namespace DiscImageChef.Decoders.Floppy // ECMA-100 /// - /// Methods and structures for IBM System 3740 floppy decoding + /// Methods and structures for IBM System 3740 floppy decoding /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -54,124 +54,124 @@ namespace DiscImageChef.Decoders.Floppy public static class System3740 { /// - /// Track format for IBM System 3740 floppy + /// Track format for IBM System 3740 floppy /// public struct Track { /// - /// Start of track + /// Start of track /// public TrackPreamble trackStart; /// - /// Track sectors + /// Track sectors /// public Sector[] sectors; /// - /// Undefined size + /// Undefined size /// public byte[] gap; } /// - /// Start of IBM PC FM floppy track + /// Start of IBM PC FM floppy track /// public struct TrackPreamble { /// - /// Gap from index pulse, 80 bytes set to 0xFF + /// Gap from index pulse, 80 bytes set to 0xFF /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)] public byte[] gap; /// - /// 6 bytes set to 0x00 + /// 6 bytes set to 0x00 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] zero; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Gap until first sector, 26 bytes to 0xFF + /// Gap until first sector, 26 bytes to 0xFF /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 26)] public byte[] gap1; } /// - /// Raw demodulated format for IBM System 3740 floppies + /// Raw demodulated format for IBM System 3740 floppies /// public struct Sector { /// - /// Sector address mark + /// Sector address mark /// public AddressMark addressMark; /// - /// 11 bytes set to 0xFF + /// 11 bytes set to 0xFF /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)] public byte[] innerGap; /// - /// Sector data block + /// Sector data block /// public DataBlock dataBlock; /// - /// Variable bytes set to 0xFF + /// Variable bytes set to 0xFF /// public byte[] outerGap; } /// - /// Sector address mark for IBM System 3740 floppies, contains sync word + /// Sector address mark for IBM System 3740 floppies, contains sync word /// public struct AddressMark { /// - /// 6 bytes set to 0 + /// 6 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] zero; /// - /// Set to + /// Set to /// public IBMIdType type; /// - /// Track number + /// Track number /// public byte track; /// - /// Side number + /// Side number /// public byte side; /// - /// Sector number + /// Sector number /// public byte sector; /// - /// + /// /// public IBMSectorSizeCode sectorSize; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } /// - /// Sector data block for IBM System 3740 floppies + /// Sector data block for IBM System 3740 floppies /// public struct DataBlock { /// - /// 12 bytes set to 0 + /// 12 bytes set to 0 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public byte[] zero; /// - /// Set to or to + /// Set to or to /// public IBMIdType type; /// - /// User data + /// User data /// public byte[] data; /// - /// CRC16 from to end of + /// CRC16 from to end of /// public ushort crc; } diff --git a/LisaTag.cs b/LisaTag.cs index d318860..2a56f01 100644 --- a/LisaTag.cs +++ b/LisaTag.cs @@ -41,7 +41,7 @@ namespace DiscImageChef.Decoders public static class LisaTag { /// - /// LisaOS tag as stored on Apple Profile and FileWare disks (20 bytes) + /// LisaOS tag as stored on Apple Profile and FileWare disks (20 bytes) /// public struct ProfileTag { @@ -56,31 +56,31 @@ namespace DiscImageChef.Decoders /// 0x04, file ID public short FileId; /// - /// 0x06 bit 7, checksum valid? + /// 0x06 bit 7, checksum valid? /// public bool ValidChk; /// - /// 0x06 bits 6 to 0, used bytes in block + /// 0x06 bits 6 to 0, used bytes in block /// public ushort UsedBytes; /// - /// 0x08, 3 bytes, absolute page number + /// 0x08, 3 bytes, absolute page number /// public uint AbsPage; /// - /// 0x0B, checksum of data + /// 0x0B, checksum of data /// public byte Checksum; /// - /// 0x0C, relative page number + /// 0x0C, relative page number /// public ushort RelPage; /// - /// 0x0E, 3 bytes, next block, 0xFFFFFF if it's last block + /// 0x0E, 3 bytes, next block, 0xFFFFFF if it's last block /// public uint NextBlock; /// - /// 0x11, 3 bytes, previous block, 0xFFFFFF if it's first block + /// 0x11, 3 bytes, previous block, 0xFFFFFF if it's first block /// public uint PrevBlock; @@ -91,7 +91,7 @@ namespace DiscImageChef.Decoders } /// - /// LisaOS tag as stored on Priam DataTower disks (24 bytes) + /// LisaOS tag as stored on Priam DataTower disks (24 bytes) /// public struct PriamTag { @@ -106,35 +106,35 @@ namespace DiscImageChef.Decoders /// 0x04, file ID public short FileId; /// - /// 0x06 bit 7, checksum valid? + /// 0x06 bit 7, checksum valid? /// public bool ValidChk; /// - /// 0x06 bits 6 to 0, used bytes in block + /// 0x06 bits 6 to 0, used bytes in block /// public ushort UsedBytes; /// - /// 0x08, 3 bytes, absolute page number + /// 0x08, 3 bytes, absolute page number /// public uint AbsPage; /// - /// 0x0B, checksum of data + /// 0x0B, checksum of data /// public byte Checksum; /// - /// 0x0C, relative page number + /// 0x0C, relative page number /// public ushort RelPage; /// - /// 0x0E, 3 bytes, next block, 0xFFFFFF if it's last block + /// 0x0E, 3 bytes, next block, 0xFFFFFF if it's last block /// public uint NextBlock; /// - /// 0x11, 3 bytes, previous block, 0xFFFFFF if it's first block + /// 0x11, 3 bytes, previous block, 0xFFFFFF if it's first block /// public uint PrevBlock; /// - /// 0x14, disk size + /// 0x14, disk size /// public uint DiskSize; @@ -145,7 +145,7 @@ namespace DiscImageChef.Decoders } /// - /// LisaOS tag as stored on Apple Sony disks (12 bytes) + /// LisaOS tag as stored on Apple Sony disks (12 bytes) /// public struct SonyTag { @@ -160,15 +160,15 @@ namespace DiscImageChef.Decoders /// 0x04, file ID public short FileId; /// - /// 0x06, relative page number + /// 0x06, relative page number /// public ushort RelPage; /// - /// 0x08, 3 bytes, next block, 0x7FF if it's last block, 0x8000 set if block is valid + /// 0x08, 3 bytes, next block, 0x7FF if it's last block, 0x8000 set if block is valid /// public ushort NextBlock; /// - /// 0x0A, 3 bytes, previous block, 0x7FF if it's first block + /// 0x0A, 3 bytes, previous block, 0x7FF if it's first block /// public ushort PrevBlock; diff --git a/PCMCIA/CIS.cs b/PCMCIA/CIS.cs index 5afa75d..9bbf5ae 100644 --- a/PCMCIA/CIS.cs +++ b/PCMCIA/CIS.cs @@ -271,7 +271,8 @@ namespace DiscImageChef.Decoders.PCMCIA else { sb.AppendLine("\tAdditional information:"); - foreach(string info in tuple.AdditionalInformation.Where(info => !string.IsNullOrEmpty(info))) sb.AppendFormat("\t\t{0}", info).AppendLine(); + foreach(string info in tuple.AdditionalInformation.Where(info => !string.IsNullOrEmpty(info))) + sb.AppendFormat("\t\t{0}", info).AppendLine(); } return sb.ToString(); diff --git a/PCMCIA/Enums.cs b/PCMCIA/Enums.cs index 74c0a88..0e67fc5 100644 --- a/PCMCIA/Enums.cs +++ b/PCMCIA/Enums.cs @@ -35,169 +35,169 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.PCMCIA { /// - /// Tuple codes. + /// Tuple codes. /// [SuppressMessage("ReSharper", "InconsistentNaming")] public enum TupleCodes : byte { /// - /// Checksum control + /// Checksum control /// CISTPL_CHECKSUM = 0x10, /// - /// End-of-chain + /// End-of-chain /// CISTPL_END = 0xFF, /// - /// Indirect access PC Card memory + /// Indirect access PC Card memory /// CISTPL_INDIRECT = 0x03, /// - /// Link-target-control + /// Link-target-control /// CISTPL_LINKTARGET = 0x13, /// - /// Longlink to attribute memory + /// Longlink to attribute memory /// CISTPL_LONGLINK_A = 0x11, /// - /// Longlink to common memory + /// Longlink to common memory /// CISTPL_LONGLINK_C = 0x12, /// - /// Longlink to next chain on a Cardbus PC Card + /// Longlink to next chain on a Cardbus PC Card /// CISTPL_LONGLINK_CB = 0x02, /// - /// Longlink to function specific chains + /// Longlink to function specific chains /// CISTPL_LONGLINK_MFC = 0x06, /// - /// No-link to common memory + /// No-link to common memory /// CISTPL_NO_LINK = 0x14, /// - /// Null tuple + /// Null tuple /// CISTPL_NULL = 0x00, /// - /// Alternate language string + /// Alternate language string /// CISTPL_ALTSTR = 0x16, /// - /// Common memory device information + /// Common memory device information /// CISTPL_DEVICE = 0x01, /// - /// Attribute memory device information + /// Attribute memory device information /// CISTPL_DEVICE_A = 0x17, /// - /// Other operating conditions information for attribute memory + /// Other operating conditions information for attribute memory /// CISTPL_DEVICE_OA = 0x1D, /// - /// Other operating conditions information for common memory + /// Other operating conditions information for common memory /// CISTPL_DEVICE_OC = 0x1C, /// - /// Device geometry information for common memory + /// Device geometry information for common memory /// CISTPL_DEVICEGEO = 0x1E, /// - /// Device geometry information for attribute memory + /// Device geometry information for attribute memory /// CISTPL_DEVICEGEO_A = 0x1F, /// - /// Extended common memory device information + /// Extended common memory device information /// CISTPL_EXTDEVIC = 0x09, /// - /// Function extensions + /// Function extensions /// CISTPL_FUNCE = 0x22, /// - /// Function class identification + /// Function class identification /// CISTPL_FUNCID = 0x21, /// - /// JEDEC programming information for attribute memory + /// JEDEC programming information for attribute memory /// CISTPL_JEDEC_A = 0x19, /// - /// JEDEC programming information for common memory + /// JEDEC programming information for common memory /// CISTPL_JEDEC_C = 0x18, /// - /// Manufacturer identification string + /// Manufacturer identification string /// CISTPL_MANFID = 0x20, /// - /// Level 1 version/product information + /// Level 1 version/product information /// CISTPL_VERS_1 = 0x15, /// - /// BAR for a CardBus PC Card + /// BAR for a CardBus PC Card /// CISTPL_BAR = 0x07, /// - /// Configuration-table-entry + /// Configuration-table-entry /// CISTPL_CFTABLE_ENTRY = 0x1B, /// - /// Configuration-table-entry for a CardBus PC Card + /// Configuration-table-entry for a CardBus PC Card /// CISTPL_CFTABLE_ENTRY_CB = 0x05, /// - /// Configuration tuple for a 16-bit PC Card + /// Configuration tuple for a 16-bit PC Card /// CISTPL_CONFIG = 0x1A, /// - /// Configuration tuple for a CardBus PC Card + /// Configuration tuple for a CardBus PC Card /// CISTPL_CONFIG_CB = 0x04, /// - /// Function state save/restore definition + /// Function state save/restore definition /// CISTPL_PWR_MGMNT = 0x08, /// - /// Battery replacement date + /// Battery replacement date /// CISTPL_BATTERY = 0x45, /// - /// Card initialization date + /// Card initialization date /// CISTPL_DATE = 0x44, /// - /// Level 2 version/product information + /// Level 2 version/product information /// CISTPL_VERS_2 = 0x40, /// - /// Byte ordering for disk-like partitions + /// Byte ordering for disk-like partitions /// CISTPL_BYTEORDER = 0x43, /// - /// Data recording format for common memory + /// Data recording format for common memory /// CISTPL_FORMAT = 0x41, /// - /// Data recording format for attribute memory + /// Data recording format for attribute memory /// CISTPL_FORMAT_A = 0x47, /// - /// Partition geometry + /// Partition geometry /// CISTPL_GEOMETRY = 0x42, /// - /// Software interleaving + /// Software interleaving /// CISTPL_SWIL = 0x23, /// - /// Partition organization + /// Partition organization /// CISTPL_ORG = 0x46, /// - /// Special purpose + /// Special purpose /// CISTPL_SPCL = 0x90 } @@ -206,43 +206,43 @@ namespace DiscImageChef.Decoders.PCMCIA public enum DeviceTypeCodes : byte { /// - /// No device, used to designate a hole + /// No device, used to designate a hole /// DTYPE_NULL = 0, /// - /// Masked ROM + /// Masked ROM /// DTYPE_ROM = 1, /// - /// One-type-programmable ROM + /// One-type-programmable ROM /// DTYPE_OTPROM = 2, /// - /// UV-Erasable Programmable ROM + /// UV-Erasable Programmable ROM /// DTYPE_EPROM = 3, /// - /// Electronically-Erasable Programmable ROM + /// Electronically-Erasable Programmable ROM /// DTYPE_EEPROM = 4, /// - /// Flash memory + /// Flash memory /// DTYPE_FLASH = 5, /// - /// Static RAM + /// Static RAM /// DTYPE_SRAM = 6, /// - /// Dynamic RAM + /// Dynamic RAM /// DTYPE_DRAM = 7, /// - /// Function-specific memory address range + /// Function-specific memory address range /// DTYPE_FUNCSPEC = 13, /// - /// Extended type follows + /// Extended type follows /// DTYPE_EXTEND = 14 } @@ -251,27 +251,27 @@ namespace DiscImageChef.Decoders.PCMCIA public enum DeviceSpeedCodes : byte { /// - /// No device + /// No device /// DSPEED_NULL = 0, /// - /// 250 ns + /// 250 ns /// DSPEED_250NS = 1, /// - /// 200 ns + /// 200 ns /// DSPEED_200NS = 2, /// - /// 150 ns + /// 150 ns /// DSPEED_150NS = 3, /// - /// 100 ns + /// 100 ns /// DSPEED_100NS = 4, /// - /// Extended speed follows + /// Extended speed follows /// DSPEED_EXT = 7 } diff --git a/PCMCIA/Types.cs b/PCMCIA/Types.cs index 18767aa..3e7d93d 100644 --- a/PCMCIA/Types.cs +++ b/PCMCIA/Types.cs @@ -35,7 +35,7 @@ using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.PCMCIA { /// - /// Basic classure of a PCMCIA tuple + /// Basic classure of a PCMCIA tuple /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -48,7 +48,7 @@ namespace DiscImageChef.Decoders.PCMCIA } /// - /// Checksum tuple + /// Checksum tuple /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -56,29 +56,29 @@ namespace DiscImageChef.Decoders.PCMCIA public class ChecksumTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Offset to region to be checksummed + /// Offset to region to be checksummed /// public short Offset; /// - /// Length of region to be checksummed + /// Length of region to be checksummed /// public ushort Length; /// - /// Modulo-256 sum of region + /// Modulo-256 sum of region /// public byte Checksum; } /// - /// Indirect Access PC Card Memory + /// Indirect Access PC Card Memory /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -86,17 +86,17 @@ namespace DiscImageChef.Decoders.PCMCIA public class IndirectTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; } /// - /// Link target tuple + /// Link target tuple /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -104,21 +104,21 @@ namespace DiscImageChef.Decoders.PCMCIA public class LinkTargetTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// 'C''I''S' in ASCII + /// 'C''I''S' in ASCII /// public byte[] Tag; } /// - /// 16-bit PC Card Long Link Tuple + /// 16-bit PC Card Long Link Tuple /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -126,15 +126,16 @@ namespace DiscImageChef.Decoders.PCMCIA public class LongLinkTuple { /// - /// or or + /// or or + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Target address + /// Target address /// public uint Address; } @@ -146,17 +147,17 @@ namespace DiscImageChef.Decoders.PCMCIA public class ConfigurationAddress { /// - /// Target address space, 0 = attribute, 1 = common + /// Target address space, 0 = attribute, 1 = common /// public byte TargetAddressSpace; /// - /// Target address + /// Target address /// public uint Address; } /// - /// Multiple function link tuple + /// Multiple function link tuple /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -164,19 +165,19 @@ namespace DiscImageChef.Decoders.PCMCIA public class MultipleFunctionLinkTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// How many functions follow + /// How many functions follow /// public byte NumberFunctions; /// - /// Link to more configuration registers + /// Link to more configuration registers /// public ConfigurationAddress[] Addresses; } @@ -187,11 +188,11 @@ namespace DiscImageChef.Decoders.PCMCIA public class NoLinkTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; } @@ -202,15 +203,16 @@ namespace DiscImageChef.Decoders.PCMCIA public class AlternateStringTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Array of strings. On memory they're preceded by an ISO Escape Code indicating codepage. Here they're stored as Unicode, so no need for it. + /// Array of strings. On memory they're preceded by an ISO Escape Code indicating codepage. Here they're stored as + /// Unicode, so no need for it. /// public string[] Strings; } @@ -222,15 +224,15 @@ namespace DiscImageChef.Decoders.PCMCIA public class ExtendedDeviceSpeed { /// - /// Another extended follows + /// Another extended follows /// public bool Extended; /// - /// Speed mantisa + /// Speed mantisa /// public byte Mantissa; /// - /// Speed exponent + /// Speed exponent /// public byte Exponent; } @@ -241,31 +243,31 @@ namespace DiscImageChef.Decoders.PCMCIA public struct DeviceInfo { /// - /// Device type code + /// Device type code /// public DeviceTypeCodes Type; /// - /// Write protected + /// Write protected /// public bool WPS; /// - /// Speed code + /// Speed code /// public DeviceSpeedCodes Speed; /// - /// Extended speeds + /// Extended speeds /// public ExtendedDeviceSpeed[] ExtendedSpeeds; /// - /// Extended types + /// Extended types /// public byte[] ExtendedTypes; /// - /// Size in units - 1 + /// Size in units - 1 /// public byte Units; /// - /// Code to define units unit + /// Code to define units unit /// public byte SizeCode; } @@ -276,15 +278,15 @@ namespace DiscImageChef.Decoders.PCMCIA public class DeviceTuple { /// - /// or + /// or /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Array of device information bytes + /// Array of device information bytes /// public DeviceInfo[] Infos; } @@ -295,15 +297,15 @@ namespace DiscImageChef.Decoders.PCMCIA public struct OtherConditionInfo { /// - /// True if another other condition info follows + /// True if another other condition info follows /// public bool Extended; /// - /// Vcc used + /// Vcc used /// public byte VccUsed; /// - /// Supports WAIT# signal + /// Supports WAIT# signal /// public bool MWAIT; } @@ -314,19 +316,19 @@ namespace DiscImageChef.Decoders.PCMCIA public class OtherConditionTuple { /// - /// or + /// or /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Array of other condition information bytes + /// Array of other condition information bytes /// public OtherConditionInfo[] OtherConditionInfos; /// - /// Array of device information bytes + /// Array of device information bytes /// public DeviceInfo[] Infos; } @@ -337,31 +339,31 @@ namespace DiscImageChef.Decoders.PCMCIA public struct DeviceGeometry { /// - /// 1 << n-1 bytes, 2 = 16-bit PC Card, 3 = CardBus PC Card + /// 1 << n-1 bytes, 2 = 16-bit PC Card, 3 = CardBus PC Card /// public byte CardInterface; /// - /// Erase block size in 1 << n-1 increments of wide accesses. - /// If n == 4, and == 16, erase block size = 32 * 4 = 128 bytes + /// Erase block size in 1 << n-1 increments of wide accesses. + /// If n == 4, and == 16, erase block size = 32 * 4 = 128 bytes /// public byte EraseBlockSize; /// - /// Read block size in 1 << n-1 increments of wide accesses. - /// If n == 4, and == 16, read block size = 32 * 4 = 128 bytes + /// Read block size in 1 << n-1 increments of wide accesses. + /// If n == 4, and == 16, read block size = 32 * 4 = 128 bytes /// public byte ReadBlockSize; /// - /// Write block size in 1 << n-1 increments of wide accesses. - /// If n == 4, and == 16, write block size = 32 * 4 = 128 bytes + /// Write block size in 1 << n-1 increments of wide accesses. + /// If n == 4, and == 16, write block size = 32 * 4 = 128 bytes /// public byte WriteBlockSize; /// - /// Device partitioning in granularity of 1 << n-1 erase blocks - /// If n == 4, and erase block is 128 bytes, partitions must be aligned to 32 erase block, or 4096 bytes + /// Device partitioning in granularity of 1 << n-1 erase blocks + /// If n == 4, and erase block is 128 bytes, partitions must be aligned to 32 erase block, or 4096 bytes /// public byte Partitions; /// - /// Card employs a multiple of 1 << n-1 times interleaving the entire memory arrays + /// Card employs a multiple of 1 << n-1 times interleaving the entire memory arrays /// public byte Interleaving; } @@ -373,15 +375,15 @@ namespace DiscImageChef.Decoders.PCMCIA public class DeviceGeometryTuple { /// - /// or + /// or /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Array of device geometries + /// Array of device geometries /// public DeviceGeometry[] Geometries; } @@ -392,23 +394,23 @@ namespace DiscImageChef.Decoders.PCMCIA public class FunctionIdentificationTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Function code + /// Function code /// public FunctionCodes Function; /// - /// Device contains boot ROM + /// Device contains boot ROM /// public bool ROM; /// - /// Device wants to be part of power-on-self-test + /// Device wants to be part of power-on-self-test /// public bool POST; } @@ -420,19 +422,19 @@ namespace DiscImageChef.Decoders.PCMCIA public class ManufacturerIdentificationTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Manufacturer ID + /// Manufacturer ID /// public ushort ManufacturerID; /// - /// Card ID + /// Card ID /// public ushort CardID; } @@ -444,31 +446,31 @@ namespace DiscImageChef.Decoders.PCMCIA public class Level1VersionTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Major version of standard compliance + /// Major version of standard compliance /// public byte MajorVersion; /// - /// Minor version of standard compliance + /// Minor version of standard compliance /// public byte MinorVersion; /// - /// Manufacturer string + /// Manufacturer string /// public string Manufacturer; /// - /// Product string + /// Product string /// public string Product; /// - /// Additional information strings + /// Additional information strings /// public string[] AdditionalInformation; } @@ -479,43 +481,43 @@ namespace DiscImageChef.Decoders.PCMCIA public class Level2VersionTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Version of this classure + /// Version of this classure /// public byte StructureVersion; /// - /// Level of compliance + /// Level of compliance /// public byte Compliance; /// - /// Address of first data byte + /// Address of first data byte /// public ushort Address; /// - /// Vendor-specific byte + /// Vendor-specific byte /// public byte VendorSpecific1; /// - /// Vendor-specific byte + /// Vendor-specific byte /// public byte VendorSpecific2; /// - /// Number of copies of CIS present + /// Number of copies of CIS present /// public byte CISCopies; /// - /// Vendor of software that formatted the card + /// Vendor of software that formatted the card /// public string OEM; /// - /// Informational message about the card + /// Informational message about the card /// public string Information; } @@ -526,23 +528,23 @@ namespace DiscImageChef.Decoders.PCMCIA public class GeometryTuple { /// - /// + /// /// public TupleCodes Code; /// - /// Link to next tuple + /// Link to next tuple /// public byte Link; /// - /// Sectors per track + /// Sectors per track /// public byte SectorsPerTrack; /// - /// Tracks per cylinder + /// Tracks per cylinder /// public byte TracksPerCylinder; /// - /// Cylinders + /// Cylinders /// public ushort Cylinders; } diff --git a/SCSI/DiscStructureCapabilities.cs b/SCSI/DiscStructureCapabilities.cs index ef202bb..e545266 100644 --- a/SCSI/DiscStructureCapabilities.cs +++ b/SCSI/DiscStructureCapabilities.cs @@ -44,15 +44,15 @@ namespace DiscImageChef.Decoders.SCSI public struct Capability { /// - /// READ/SEND DISC STRUCTURE format code + /// READ/SEND DISC STRUCTURE format code /// public byte FormatCode; /// - /// Supported in SEND DISC STRUCTURE + /// Supported in SEND DISC STRUCTURE /// public bool SDS; /// - /// Supported in READ DISC STRUCTURE + /// Supported in READ DISC STRUCTURE /// public bool RDS; } diff --git a/SCSI/EVPD.cs b/SCSI/EVPD.cs index 752a1ff..cb0b0c1 100644 --- a/SCSI/EVPD.cs +++ b/SCSI/EVPD.cs @@ -48,7 +48,7 @@ namespace DiscImageChef.Decoders.SCSI public static class EVPD { /// - /// Decodes VPD page 0x00: Supported VPD pages + /// Decodes VPD page 0x00: Supported VPD pages /// /// A byte array containing all supported VPD pages. /// Page 0x00. @@ -66,7 +66,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decides VPD pages 0x01 to 0x7F: ASCII Information + /// Decides VPD pages 0x01 to 0x7F: ASCII Information /// /// An ASCII string with the contents of the page. /// Page 0x01-0x7F. @@ -86,7 +86,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decodes VPD page 0x80: Unit Serial Number + /// Decodes VPD page 0x80: Unit Serial Number /// /// The unit serial number. /// Page 0x80. @@ -105,37 +105,37 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0x81: Implemented operating definition page /// - /// Implemented operating definition page - /// Page code 0x81 + /// Implemented operating definition page + /// Page code 0x81 /// public struct Page_81 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; /// - /// Current operating definition + /// Current operating definition /// public ScsiDefinitions Current; /// - /// Default operating definition + /// Default operating definition /// public ScsiDefinitions Default; /// - /// Support operating definition list + /// Support operating definition list /// public ScsiDefinitions[] Supported; } @@ -217,7 +217,7 @@ namespace DiscImageChef.Decoders.SCSI #endregion EVPD Page 0x81: Implemented operating definition page /// - /// Decodes VPD page 0x82: ASCII implemented operating definition + /// Decodes VPD page 0x82: ASCII implemented operating definition /// /// ASCII implemented operating definition. /// Page 0x82. @@ -238,15 +238,15 @@ namespace DiscImageChef.Decoders.SCSI public enum IdentificationAssociation : byte { /// - /// Identifier field is associated with the addressed logical unit + /// Identifier field is associated with the addressed logical unit /// LogicalUnit = 0, /// - /// Identifier field is associated with the target port + /// Identifier field is associated with the target port /// TargetPort = 1, /// - /// Identifier field is associated with the target device that contains the LUN + /// Identifier field is associated with the target device that contains the LUN /// TargetDevice = 2 } @@ -254,15 +254,15 @@ namespace DiscImageChef.Decoders.SCSI public enum IdentificationCodeSet : byte { /// - /// Identifier is binary + /// Identifier is binary /// Binary = 1, /// - /// Identifier is pure ASCII + /// Identifier is pure ASCII /// ASCII = 2, /// - /// Identifier is in UTF-8 + /// Identifier is in UTF-8 /// UTF8 = 3 } @@ -270,43 +270,43 @@ namespace DiscImageChef.Decoders.SCSI public enum IdentificationTypes : byte { /// - /// No assignment authority was used and there is no guarantee the identifier is unique + /// No assignment authority was used and there is no guarantee the identifier is unique /// NoAuthority = 0, /// - /// Concatenates vendor and product identifier from INQUIRY plus unit serial number from page 80h + /// Concatenates vendor and product identifier from INQUIRY plus unit serial number from page 80h /// Inquiry = 1, /// - /// Identifier is a 64-bit IEEE EUI-64, or extended + /// Identifier is a 64-bit IEEE EUI-64, or extended /// EUI = 2, /// - /// Identifier is compatible with 64-bit FC-PH Name_Identifier + /// Identifier is compatible with 64-bit FC-PH Name_Identifier /// NAA = 3, /// - /// Identifier to relative port in device + /// Identifier to relative port in device /// Relative = 4, /// - /// Identifier to group of target ports in device + /// Identifier to group of target ports in device /// TargetPortGroup = 5, /// - /// Identifier to group of target LUNs in device + /// Identifier to group of target LUNs in device /// LogicalUnitGroup = 6, /// - /// MD5 of device identification values + /// MD5 of device identification values /// MD5 = 7, /// - /// SCSI name string + /// SCSI name string /// SCSI = 8, /// - /// Protocol specific port identifier + /// Protocol specific port identifier /// ProtocolSpecific = 9 } @@ -314,63 +314,63 @@ namespace DiscImageChef.Decoders.SCSI public struct IdentificatonDescriptor { /// - /// Protocol identifier + /// Protocol identifier /// public ProtocolIdentifiers ProtocolIdentifier; /// - /// Defines how the identifier is stored + /// Defines how the identifier is stored /// public IdentificationCodeSet CodeSet; /// - /// Set if protocol identifier is valid + /// Set if protocol identifier is valid /// public bool PIV; /// - /// Identifies which decide the identifier associates with + /// Identifies which decide the identifier associates with /// public IdentificationAssociation Association; /// - /// Defines the type of the identifier + /// Defines the type of the identifier /// public IdentificationTypes Type; /// - /// Length of the identifier + /// Length of the identifier /// public byte Length; /// - /// Identifier as a string if applicable + /// Identifier as a string if applicable /// public string ASCII; /// - /// Binary identifier + /// Binary identifier /// public byte[] Binary; } /// - /// Device identification page - /// Page code 0x83 + /// Device identification page + /// Page code 0x83 /// public struct Page_83 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; /// - /// The descriptors. + /// The descriptors. /// public IdentificatonDescriptor[] Descriptors; } @@ -390,7 +390,6 @@ namespace DiscImageChef.Decoders.SCSI PageLength = (byte)(pageResponse[3] + 4) }; - int position = 4; List descriptors = new List(); @@ -409,12 +408,16 @@ namespace DiscImageChef.Decoders.SCSI if(descriptor.Length + position + 4 >= pageResponse.Length) descriptor.Length = (byte)(pageResponse.Length - position - 4); Array.Copy(pageResponse, position + 4, descriptor.Binary, 0, descriptor.Length); - switch(descriptor.CodeSet) { - case IdentificationCodeSet.ASCII: descriptor.ASCII = StringHandlers.CToString(descriptor.Binary); + switch(descriptor.CodeSet) + { + case IdentificationCodeSet.ASCII: + descriptor.ASCII = StringHandlers.CToString(descriptor.Binary); break; - case IdentificationCodeSet.UTF8: descriptor.ASCII = Encoding.UTF8.GetString(descriptor.Binary); + case IdentificationCodeSet.UTF8: + descriptor.ASCII = Encoding.UTF8.GetString(descriptor.Binary); break; - default: descriptor.ASCII = ""; + default: + descriptor.ASCII = ""; break; } @@ -521,9 +524,11 @@ namespace DiscImageChef.Decoders.SCSI switch(descriptor.Type) { case IdentificationTypes.NoAuthority: - switch(descriptor.CodeSet) { + switch(descriptor.CodeSet) + { case IdentificationCodeSet.ASCII: - case IdentificationCodeSet.UTF8: sb.AppendFormat("\tVendor descriptor contains: {0}", descriptor.ASCII).AppendLine(); + case IdentificationCodeSet.UTF8: + sb.AppendFormat("\tVendor descriptor contains: {0}", descriptor.ASCII).AppendLine(); break; case IdentificationCodeSet.Binary: sb.AppendFormat("\tVendor descriptor contains binary data (hex): {0}", @@ -538,9 +543,11 @@ namespace DiscImageChef.Decoders.SCSI break; case IdentificationTypes.Inquiry: - switch(descriptor.CodeSet) { + switch(descriptor.CodeSet) + { case IdentificationCodeSet.ASCII: - case IdentificationCodeSet.UTF8: sb.AppendFormat("\tInquiry descriptor contains: {0}", descriptor.ASCII).AppendLine(); + case IdentificationCodeSet.UTF8: + sb.AppendFormat("\tInquiry descriptor contains: {0}", descriptor.ASCII).AppendLine(); break; case IdentificationCodeSet.Binary: sb.AppendFormat("\tInquiry descriptor contains binary data (hex): {0}", @@ -720,7 +727,8 @@ namespace DiscImageChef.Decoders.SCSI break; default: - switch(descriptor.CodeSet) { + switch(descriptor.CodeSet) + { case IdentificationCodeSet.ASCII: case IdentificationCodeSet.UTF8: sb.AppendFormat("\tUnknown descriptor type {1} contains: {0}", descriptor.ASCII, @@ -732,9 +740,10 @@ namespace DiscImageChef.Decoders.SCSI (byte)descriptor.Type).AppendLine(); break; default: - sb.AppendFormat("Inquiry descriptor type {2} contains unknown kind {1} of data (hex): {0}", - PrintHex.ByteArrayToHexArrayString(descriptor.Binary, 40), - (byte)descriptor.CodeSet, (byte)descriptor.Type).AppendLine(); + sb + .AppendFormat("Inquiry descriptor type {2} contains unknown kind {1} of data (hex): {0}", + PrintHex.ByteArrayToHexArrayString(descriptor.Binary, 40), + (byte)descriptor.CodeSet, (byte)descriptor.Type).AppendLine(); break; } @@ -750,35 +759,35 @@ namespace DiscImageChef.Decoders.SCSI public struct SoftwareIdentifier { /// - /// EUI-48 identifier + /// EUI-48 identifier /// public byte[] Identifier; } /// - /// Software Interface Identification page - /// Page code 0x84 + /// Software Interface Identification page + /// Page code 0x84 /// public struct Page_84 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; /// - /// The descriptors. + /// The descriptors. /// public SoftwareIdentifier[] Identifiers; } @@ -798,7 +807,6 @@ namespace DiscImageChef.Decoders.SCSI PageLength = (byte)(pageResponse[3] + 4) }; - int position = 4; List identifiers = new List(); @@ -864,47 +872,47 @@ namespace DiscImageChef.Decoders.SCSI public struct NetworkDescriptor { /// - /// Identifies which device the identifier associates with + /// Identifies which device the identifier associates with /// public IdentificationAssociation Association; /// - /// Defines the type of the identifier + /// Defines the type of the identifier /// public NetworkServiceTypes Type; /// - /// Length of the identifier + /// Length of the identifier /// public ushort Length; /// - /// Binary identifier + /// Binary identifier /// public byte[] Address; } /// - /// Device identification page - /// Page code 0x85 + /// Device identification page + /// Page code 0x85 /// public struct Page_85 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public ushort PageLength; /// - /// The descriptors. + /// The descriptors. /// public NetworkDescriptor[] Descriptors; } @@ -924,7 +932,6 @@ namespace DiscImageChef.Decoders.SCSI PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4) }; - int position = 4; List descriptors = new List(); @@ -1035,133 +1042,133 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0x86: Extended INQUIRY data page /// - /// Device identification page - /// Page code 0x86 + /// Device identification page + /// Page code 0x86 /// public struct Page_86 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; /// - /// Indicates how a device server activates microcode + /// Indicates how a device server activates microcode /// public byte ActivateMicrocode; /// - /// Protection types supported by device + /// Protection types supported by device /// public byte SPT; /// - /// Checks logical block guard field + /// Checks logical block guard field /// public bool GRD_CHK; /// - /// Checks logical block application tag + /// Checks logical block application tag /// public bool APP_CHK; /// - /// Checks logical block reference + /// Checks logical block reference /// public bool REF_CHK; /// - /// Supports unit attention condition sense key specific data + /// Supports unit attention condition sense key specific data /// public bool UASK_SUP; /// - /// Supports grouping + /// Supports grouping /// public bool GROUP_SUP; /// - /// Supports priority + /// Supports priority /// public bool PRIOR_SUP; /// - /// Supports head of queue + /// Supports head of queue /// public bool HEADSUP; /// - /// Supports ordered + /// Supports ordered /// public bool ORDSUP; /// - /// Supports simple + /// Supports simple /// public bool SIMPSUP; /// - /// Supports marking a block as uncorrectable + /// Supports marking a block as uncorrectable /// public bool WU_SUP; /// - /// Supports disabling correction on WRITE LONG + /// Supports disabling correction on WRITE LONG /// public bool CRD_SUP; /// - /// Supports a non-volatile cache + /// Supports a non-volatile cache /// public bool NV_SUP; /// - /// Supports a volatile cache + /// Supports a volatile cache /// public bool V_SUP; /// - /// Disable protection information checks + /// Disable protection information checks /// public bool NO_PI_CHK; /// - /// Protection information interval supported + /// Protection information interval supported /// public bool P_I_I_SUP; /// - /// Clears all LUNs unit attention when clearing one + /// Clears all LUNs unit attention when clearing one /// public bool LUICLR; /// - /// Referrals support + /// Referrals support /// public bool R_SUP; /// - /// History snapshots release effects + /// History snapshots release effects /// public bool HSSRELEF; /// - /// Capability based command security + /// Capability based command security /// public bool CBCS; /// - /// Indicates how it handles microcode updating with multiple nexuxes + /// Indicates how it handles microcode updating with multiple nexuxes /// public byte Nexus; /// - /// Time to complete extended self-test + /// Time to complete extended self-test /// public ushort ExtendedTestMinutes; /// - /// Power on activation support + /// Power on activation support /// public bool POA_SUP; /// - /// Hard reset actication + /// Hard reset actication /// public bool HRA_SUP; /// - /// Vendor specific activation + /// Vendor specific activation /// public bool VSA_SUP; /// - /// Maximum length in bytes of sense data + /// Maximum length in bytes of sense data /// public byte MaximumSenseLength; } @@ -1223,7 +1230,8 @@ namespace DiscImageChef.Decoders.SCSI sb.AppendLine("SCSI Extended INQUIRY Data:"); - switch(page.PeripheralDeviceType) { + switch(page.PeripheralDeviceType) + { case PeripheralDeviceTypes.DirectAccess: case PeripheralDeviceTypes.SCSIZonedBlockDevice: switch(page.SPT) @@ -1256,7 +1264,8 @@ namespace DiscImageChef.Decoders.SCSI } break; - case PeripheralDeviceTypes.SequentialAccess when page.SPT == 1: sb.AppendLine("Logical unit supports logical block protection"); + case PeripheralDeviceTypes.SequentialAccess when page.SPT == 1: + sb.AppendLine("Logical unit supports logical block protection"); break; } @@ -1298,49 +1307,49 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0x89: ATA Information page /// - /// ATA Information page - /// Page code 0x89 + /// ATA Information page + /// Page code 0x89 /// public struct Page_89 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public ushort PageLength; /// - /// Contains the SAT vendor identification + /// Contains the SAT vendor identification /// public byte[] VendorIdentification; /// - /// Contains the SAT product identification + /// Contains the SAT product identification /// public byte[] ProductIdentification; /// - /// Contains the SAT revision level + /// Contains the SAT revision level /// public byte[] ProductRevisionLevel; /// - /// Contains the ATA device signature + /// Contains the ATA device signature /// public byte[] Signature; /// - /// Contains the command code used to identify the device + /// Contains the command code used to identify the device /// public byte CommandCode; /// - /// Contains the response to ATA IDENTIFY (PACKET) DEVICE + /// Contains the response to ATA IDENTIFY (PACKET) DEVICE /// public byte[] IdentifyData; } @@ -1436,41 +1445,41 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xC0 (Quantum): Firmware Build Information page /// - /// Firmware Build Information page - /// Page code 0xC0 (Quantum) + /// Firmware Build Information page + /// Page code 0xC0 (Quantum) /// public struct Page_C0_Quantum { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; /// - /// Servo firmware checksum + /// Servo firmware checksum /// public ushort ServoFirmwareChecksum; /// - /// Servo EEPROM checksum + /// Servo EEPROM checksum /// public ushort ServoEEPROMChecksum; /// - /// Read/Write firmware checksum + /// Read/Write firmware checksum /// public uint ReadWriteFirmwareChecksum; /// - /// Read/Write firmware build data + /// Read/Write firmware build data /// public byte[] ReadWriteFirmwareBuildData; } @@ -1527,25 +1536,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Pages 0xC0, 0xC1 (Certance): Drive component revision level pages /// - /// Drive component revision level pages - /// Page codes 0xC0, 0xC1 (Certance) + /// Drive component revision level pages + /// Page codes 0xC0, 0xC1 (Certance) /// public struct Page_C0_C1_Certance { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; public byte[] Component; @@ -1608,25 +1617,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Pages 0xC2, 0xC3, 0xC4, 0xC5, 0xC6 (Certance): Drive component serial number pages /// - /// Drive component serial number pages - /// Page codes 0xC2, 0xC3, 0xC4, 0xC5, 0xC6 (Certance) + /// Drive component serial number pages + /// Page codes 0xC2, 0xC3, 0xC4, 0xC5, 0xC6 (Certance) /// public struct Page_C2_C3_C4_C5_C6_Certance { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; public byte[] SerialNumber; @@ -1700,89 +1709,89 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xDF (Certance): Drive status pages /// - /// Drive status pages - /// Page codes 0xDF (Certance) + /// Drive status pages + /// Page codes 0xDF (Certance) /// public struct Page_DF_Certance { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; /// - /// Command forwarding + /// Command forwarding /// public byte CmdFwd; /// - /// Alerts + /// Alerts /// public bool Alerts; /// - /// Removable prevention + /// Removable prevention /// public bool NoRemov; /// - /// Unit reservation + /// Unit reservation /// public bool UnitRsvd; /// - /// Needs cleaning + /// Needs cleaning /// public bool Clean; /// - /// Tape threaded + /// Tape threaded /// public bool Threaded; /// - /// Commands await forwarding + /// Commands await forwarding /// public bool Lun1Cmd; /// - /// Autoload mode + /// Autoload mode /// public byte AutoloadMode; /// - /// Cartridge type + /// Cartridge type /// public byte CartridgeType; /// - /// Cartridge format + /// Cartridge format /// public byte CartridgeFormat; /// - /// Cartridge capacity in 10e9 bytes + /// Cartridge capacity in 10e9 bytes /// public ushort CartridgeCapacity; /// - /// Port A transport type + /// Port A transport type /// public byte PortATransportType; /// - /// Port A SCSI ID + /// Port A SCSI ID /// public byte PortASelectionID; /// - /// Total number of head-tape contact time + /// Total number of head-tape contact time /// public uint OperatingHours; /// - /// ID that reserved the device + /// ID that reserved the device /// public ulong InitiatorID; /// - /// Cartridge serial number + /// Cartridge serial number /// public byte[] CartridgeSerialNumber; } @@ -1813,8 +1822,9 @@ namespace DiscImageChef.Decoders.SCSI CartridgeCapacity = (ushort)((pageResponse[10] << 8) + pageResponse[11] + 4), PortATransportType = pageResponse[12], PortASelectionID = pageResponse[15], - OperatingHours = (uint)((pageResponse[20] << 24) + (pageResponse[21] << 16) + (pageResponse[22] << 8) + - pageResponse[23]), + OperatingHours = + (uint)((pageResponse[20] << 24) + (pageResponse[21] << 16) + (pageResponse[22] << 8) + + pageResponse[23]), CartridgeSerialNumber = new byte[32] }; @@ -1954,25 +1964,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xC0 (IBM): Drive Component Revision Levels page /// - /// Drive Component Revision Levels page - /// Page code 0xC0 (IBM) + /// Drive Component Revision Levels page + /// Page code 0xC0 (IBM) /// public struct Page_C0_IBM { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; public byte[] CodeName; @@ -1996,8 +2006,6 @@ namespace DiscImageChef.Decoders.SCSI Date = new byte[8] }; - - Array.Copy(pageResponse, 4, decoded.CodeName, 0, 12); Array.Copy(pageResponse, 23, decoded.Date, 0, 8); @@ -2027,25 +2035,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xC1 (IBM): Drive Serial Numbers page /// - /// Drive Serial Numbers page - /// Page code 0xC1 (IBM) + /// Drive Serial Numbers page + /// Page code 0xC1 (IBM) /// public struct Page_C1_IBM { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; public byte[] ManufacturingSerial; @@ -2100,25 +2108,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xB0: Sequential-access device capabilities page /// - /// Sequential-access device capabilities page - /// Page code 0xB0 + /// Sequential-access device capabilities page + /// Page code 0xB0 /// public struct Page_B0 { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public ushort PageLength; public bool TSMC; @@ -2228,25 +2236,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Pages 0xC0 to 0xC5 (HP): Drive component revision level pages /// - /// Drive component revision level pages - /// Page codes 0xC0 to 0xC5 (HP) + /// Drive component revision level pages + /// Page codes 0xC0 to 0xC5 (HP) /// public struct Page_C0_to_C5_HP { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; public byte[] Component; @@ -2291,7 +2299,8 @@ namespace DiscImageChef.Decoders.SCSI if(pageResponse[4] != pageResponse[3] - 1) return null; List array = new List(); - const string fwRegExStr = @"Firmware Rev\s+=\s+(?\d+\.\d+)\s+Build date\s+=\s+(?(\w|\d|\s*.)*)\s*$"; + const string fwRegExStr = + @"Firmware Rev\s+=\s+(?\d+\.\d+)\s+Build date\s+=\s+(?(\w|\d|\s*.)*)\s*$"; const string fwcRegExStr = @"FW_CONF\s+=\s+(?0x[0-9A-Fa-f]{8})\s*$"; const string servoRegExStr = @"Servo\s+Rev\s+=\s+(?\d+\.\d+)\s*$"; Regex fwRegEx = new Regex(fwRegExStr); @@ -2314,8 +2323,7 @@ namespace DiscImageChef.Decoders.SCSI decoded.Version = Encoding.ASCII.GetBytes(fwMatch.Groups["fw"].Value); decoded.Date = Encoding.ASCII.GetBytes(fwMatch.Groups["date"].Value); } - else if(fwcMatch.Success) - decoded.Variant = Encoding.ASCII.GetBytes(fwMatch.Groups["value"].Value); + else if(fwcMatch.Success) decoded.Variant = Encoding.ASCII.GetBytes(fwMatch.Groups["value"].Value); else if(servoMatch.Success) { decoded.Component = Encoding.ASCII.GetBytes("Servo"); @@ -2380,25 +2388,25 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xC0 (Seagate): Firmware numbers page /// - /// Firmware numbers page - /// Page code 0xC0 (Seagate) + /// Firmware numbers page + /// Page code 0xC0 (Seagate) /// public struct Page_C0_Seagate { /// - /// The peripheral qualifier. + /// The peripheral qualifier. /// public PeripheralQualifiers PeripheralQualifier; /// - /// The type of the peripheral device. + /// The type of the peripheral device. /// public PeripheralDeviceTypes PeripheralDeviceType; /// - /// The page code. + /// The page code. /// public byte PageCode; /// - /// The length of the page. + /// The length of the page. /// public byte PageLength; public byte[] ControllerFirmware; @@ -2425,8 +2433,6 @@ namespace DiscImageChef.Decoders.SCSI ServoFirmware = new byte[4] }; - - Array.Copy(pageResponse, 4, decoded.ControllerFirmware, 0, 4); Array.Copy(pageResponse, 8, decoded.BootFirmware, 0, 4); Array.Copy(pageResponse, 12, decoded.ServoFirmware, 0, 4); diff --git a/SCSI/Enums.cs b/SCSI/Enums.cs index e2b7b24..86af10a 100644 --- a/SCSI/Enums.cs +++ b/SCSI/Enums.cs @@ -37,23 +37,23 @@ namespace DiscImageChef.Decoders.SCSI public enum PeripheralQualifiers : byte { /// - /// Peripheral qualifier: Device is connected and supported + /// Peripheral qualifier: Device is connected and supported /// Supported = 0x00, /// - /// Peripheral qualifier: Device is supported but not connected + /// Peripheral qualifier: Device is supported but not connected /// Unconnected = 0x01, /// - /// Peripheral qualifier: Reserved value + /// Peripheral qualifier: Reserved value /// Reserved = 0x02, /// - /// Peripheral qualifier: Device is connected but unsupported + /// Peripheral qualifier: Device is connected but unsupported /// Unsupported = 0x03, /// - /// Peripheral qualifier: Vendor values: 0x04, 0x05, 0x06 and 0x07 + /// Peripheral qualifier: Vendor values: 0x04, 0x05, 0x06 and 0x07 /// VendorMask = 0x04 } @@ -62,95 +62,95 @@ namespace DiscImageChef.Decoders.SCSI public enum PeripheralDeviceTypes : byte { /// - /// Direct-access device + /// Direct-access device /// DirectAccess = 0x00, /// - /// Sequential-access device + /// Sequential-access device /// SequentialAccess = 0x01, /// - /// Printer device + /// Printer device /// PrinterDevice = 0x02, /// - /// Processor device + /// Processor device /// ProcessorDevice = 0x03, /// - /// Write-once device + /// Write-once device /// WriteOnceDevice = 0x04, /// - /// CD-ROM/DVD/etc device + /// CD-ROM/DVD/etc device /// MultiMediaDevice = 0x05, /// - /// Scanner device + /// Scanner device /// ScannerDevice = 0x06, /// - /// Optical memory device + /// Optical memory device /// OpticalDevice = 0x07, /// - /// Medium change device + /// Medium change device /// MediumChangerDevice = 0x08, /// - /// Communications device + /// Communications device /// CommsDevice = 0x09, /// - /// Graphics arts pre-press device (defined in ASC IT8) + /// Graphics arts pre-press device (defined in ASC IT8) /// PrePressDevice1 = 0x0A, /// - /// Graphics arts pre-press device (defined in ASC IT8) + /// Graphics arts pre-press device (defined in ASC IT8) /// PrePressDevice2 = 0x0B, /// - /// Array controller device + /// Array controller device /// ArrayControllerDevice = 0x0C, /// - /// Enclosure services device + /// Enclosure services device /// EnclosureServiceDevice = 0x0D, /// - /// Simplified direct-access device + /// Simplified direct-access device /// SimplifiedDevice = 0x0E, /// - /// Optical card reader/writer device + /// Optical card reader/writer device /// OCRWDevice = 0x0F, /// - /// Bridging Expanders + /// Bridging Expanders /// BridgingExpander = 0x10, /// - /// Object-based Storage Device + /// Object-based Storage Device /// ObjectDevice = 0x11, /// - /// Automation/Drive Interface + /// Automation/Drive Interface /// ADCDevice = 0x12, /// - /// Security Manager Device + /// Security Manager Device /// SCSISecurityManagerDevice = 0x13, /// - /// Host managed zoned block device + /// Host managed zoned block device /// SCSIZonedBlockDevice = 0x14, /// - /// Well known logical unit + /// Well known logical unit /// WellKnownDevice = 0x1E, /// - /// Unknown or no device type + /// Unknown or no device type /// UnknownDevice = 0x1F } @@ -159,31 +159,31 @@ namespace DiscImageChef.Decoders.SCSI public enum ANSIVersions : byte { /// - /// Device does not claim conformance to any ANSI version + /// Device does not claim conformance to any ANSI version /// ANSINoVersion = 0x00, /// - /// Device complies with ANSI X3.131:1986 + /// Device complies with ANSI X3.131:1986 /// ANSI1986Version = 0x01, /// - /// Device complies with ANSI X3.131:1994 + /// Device complies with ANSI X3.131:1994 /// ANSI1994Version = 0x02, /// - /// Device complies with ANSI X3.301:1997 + /// Device complies with ANSI X3.301:1997 /// ANSI1997Version = 0x03, /// - /// Device complies with ANSI X3.351:2001 + /// Device complies with ANSI X3.351:2001 /// ANSI2001Version = 0x04, /// - /// Device complies with ANSI X3.408:2005. + /// Device complies with ANSI X3.408:2005. /// ANSI2005Version = 0x05, /// - /// Device complies with SPC-4 + /// Device complies with SPC-4 /// ANSI2008Version = 0x06 } @@ -192,11 +192,11 @@ namespace DiscImageChef.Decoders.SCSI public enum ECMAVersions : byte { /// - /// Device does not claim conformance to any ECMA version + /// Device does not claim conformance to any ECMA version /// ECMANoVersion = 0x00, /// - /// Device complies with a ECMA-111 standard + /// Device complies with a ECMA-111 standard /// ECMA111 = 0x01 } @@ -205,11 +205,11 @@ namespace DiscImageChef.Decoders.SCSI public enum ISOVersions : byte { /// - /// Device does not claim conformance to any ISO/IEC version + /// Device does not claim conformance to any ISO/IEC version /// ISONoVersion = 0x00, /// - /// Device complies with ISO/IEC 9316:1995 + /// Device complies with ISO/IEC 9316:1995 /// ISO1995Version = 0x02 } @@ -218,19 +218,19 @@ namespace DiscImageChef.Decoders.SCSI public enum SPIClocking : byte { /// - /// Supports only ST + /// Supports only ST /// ST = 0x00, /// - /// Supports only DT + /// Supports only DT /// DT = 0x01, /// - /// Reserved value + /// Reserved value /// Reserved = 0x02, /// - /// Supports ST and DT + /// Supports ST and DT /// STandDT = 0x03 } @@ -239,19 +239,19 @@ namespace DiscImageChef.Decoders.SCSI public enum TGPSValues : byte { /// - /// Assymetrical access not supported + /// Assymetrical access not supported /// NotSupported = 0x00, /// - /// Only implicit assymetrical access is supported + /// Only implicit assymetrical access is supported /// OnlyImplicit = 0x01, /// - /// Only explicit assymetrical access is supported + /// Only explicit assymetrical access is supported /// OnlyExplicit = 0x02, /// - /// Both implicit and explicit assymetrical access are supported + /// Both implicit and explicit assymetrical access are supported /// Both = 0x03 } @@ -260,55 +260,55 @@ namespace DiscImageChef.Decoders.SCSI public enum ProtocolIdentifiers : byte { /// - /// Fibre Channel + /// Fibre Channel /// FibreChannel = 0, /// - /// Parallel SCSI + /// Parallel SCSI /// SCSI = 1, /// - /// SSA + /// SSA /// SSA = 2, /// - /// IEEE-1394 + /// IEEE-1394 /// Firewire = 3, /// - /// SCSI Remote Direct Memory Access Protocol + /// SCSI Remote Direct Memory Access Protocol /// RDMAP = 4, /// - /// Internet SCSI + /// Internet SCSI /// iSCSI = 5, /// - /// Serial SCSI + /// Serial SCSI /// SAS = 6, /// - /// Automation/Drive Interface Transport Protocol + /// Automation/Drive Interface Transport Protocol /// ADT = 7, /// - /// AT Attachment Interface (ATA/ATAPI) + /// AT Attachment Interface (ATA/ATAPI) /// ATA = 8, /// - /// USB Attached SCSI + /// USB Attached SCSI /// UAS = 9, /// - /// SCSI over PCI Express + /// SCSI over PCI Express /// SCSIe = 10, /// - /// PCI Express + /// PCI Express /// PCIe = 11, /// - /// No specific protocol + /// No specific protocol /// NoProtocol = 15 } diff --git a/SCSI/Inquiry.cs b/SCSI/Inquiry.cs index 4beb2b6..be526ae 100644 --- a/SCSI/Inquiry.cs +++ b/SCSI/Inquiry.cs @@ -39,15 +39,15 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.SCSI { /// - /// Information from the following standards: - /// T9/375-D revision 10l - /// T10/995-D revision 10 - /// T10/1236-D revision 20 - /// T10/1416-D revision 23 - /// T10/1731-D revision 16 - /// T10/502 revision 05 - /// RFC 7144 - /// ECMA-111 + /// Information from the following standards: + /// T9/375-D revision 10l + /// T10/995-D revision 10 + /// T10/1236-D revision 20 + /// T10/1416-D revision 23 + /// T10/1731-D revision 16 + /// T10/502 revision 05 + /// RFC 7144 + /// ECMA-111 /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -227,7 +227,8 @@ namespace DiscImageChef.Decoders.SCSI else descriptorsNo = (SCSIInquiryResponse.Length - 58) / 2; decoded.VersionDescriptors = new ushort[descriptorsNo]; - for(int i = 0; i < descriptorsNo; i++) decoded.VersionDescriptors[i] = BitConverter.ToUInt16(SCSIInquiryResponse, 58 + i * 2); + for(int i = 0; i < descriptorsNo; i++) + decoded.VersionDescriptors[i] = BitConverter.ToUInt16(SCSIInquiryResponse, 58 + i * 2); } if(SCSIInquiryResponse.Length >= 75 && SCSIInquiryResponse.Length < 96) @@ -2084,237 +2085,237 @@ namespace DiscImageChef.Decoders.SCSI public struct SCSIInquiry { /// - /// Peripheral qualifier - /// Byte 0, bits 7 to 5 + /// Peripheral qualifier + /// Byte 0, bits 7 to 5 /// public byte PeripheralQualifier; /// - /// Peripheral device type - /// Byte 0, bits 4 to 0 + /// Peripheral device type + /// Byte 0, bits 4 to 0 /// public byte PeripheralDeviceType; /// - /// Removable device - /// Byte 1, bit 7 + /// Removable device + /// Byte 1, bit 7 /// public bool RMB; /// - /// SCSI-1 vendor-specific qualification codes - /// Byte 1, bits 6 to 0 + /// SCSI-1 vendor-specific qualification codes + /// Byte 1, bits 6 to 0 /// public byte DeviceTypeModifier; /// - /// ISO/IEC SCSI Standard Version - /// Byte 2, bits 7 to 6, mask = 0xC0, >> 6 + /// ISO/IEC SCSI Standard Version + /// Byte 2, bits 7 to 6, mask = 0xC0, >> 6 /// public byte ISOVersion; /// - /// ECMA SCSI Standard Version - /// Byte 2, bits 5 to 3, mask = 0x38, >> 3 + /// ECMA SCSI Standard Version + /// Byte 2, bits 5 to 3, mask = 0x38, >> 3 /// public byte ECMAVersion; /// - /// ANSI SCSI Standard Version - /// Byte 2, bits 2 to 0, mask = 0x07 + /// ANSI SCSI Standard Version + /// Byte 2, bits 2 to 0, mask = 0x07 /// public byte ANSIVersion; /// - /// Asynchronous Event Reporting Capability supported - /// Byte 3, bit 7 + /// Asynchronous Event Reporting Capability supported + /// Byte 3, bit 7 /// public bool AERC; /// - /// Device supports TERMINATE TASK command - /// Byte 3, bit 6 + /// Device supports TERMINATE TASK command + /// Byte 3, bit 6 /// public bool TrmTsk; /// - /// Supports setting Normal ACA - /// Byte 3, bit 5 + /// Supports setting Normal ACA + /// Byte 3, bit 5 /// public bool NormACA; /// - /// Supports LUN hierarchical addressing - /// Byte 3, bit 4 + /// Supports LUN hierarchical addressing + /// Byte 3, bit 4 /// public bool HiSup; /// - /// Responde data format - /// Byte 3, bit 3 to 0 + /// Responde data format + /// Byte 3, bit 3 to 0 /// public byte ResponseDataFormat; /// - /// Lenght of total INQUIRY response minus 4 - /// Byte 4 + /// Lenght of total INQUIRY response minus 4 + /// Byte 4 /// public byte AdditionalLength; /// - /// Device contains an embedded storage array controller - /// Byte 5, bit 7 + /// Device contains an embedded storage array controller + /// Byte 5, bit 7 /// public bool SCCS; /// - /// Device contains an Access Control Coordinator - /// Byte 5, bit 6 + /// Device contains an Access Control Coordinator + /// Byte 5, bit 6 /// public bool ACC; /// - /// Supports asymetrical logical unit access - /// Byte 5, bits 5 to 4 + /// Supports asymetrical logical unit access + /// Byte 5, bits 5 to 4 /// public byte TPGS; /// - /// Supports third-party copy commands - /// Byte 5, bit 3 + /// Supports third-party copy commands + /// Byte 5, bit 3 /// public bool ThreePC; /// - /// Reserved - /// Byte 5, bits 2 to 1 + /// Reserved + /// Byte 5, bits 2 to 1 /// public byte Reserved2; /// - /// Supports protection information - /// Byte 5, bit 0 + /// Supports protection information + /// Byte 5, bit 0 /// public bool Protect; /// - /// Supports basic queueing - /// Byte 6, bit 7 + /// Supports basic queueing + /// Byte 6, bit 7 /// public bool BQue; /// - /// Device contains an embedded enclosure services component - /// Byte 6, bit 6 + /// Device contains an embedded enclosure services component + /// Byte 6, bit 6 /// public bool EncServ; /// - /// Vendor-specific - /// Byte 6, bit 5 + /// Vendor-specific + /// Byte 6, bit 5 /// public bool VS1; /// - /// Multi-port device - /// Byte 6, bit 4 + /// Multi-port device + /// Byte 6, bit 4 /// public bool MultiP; /// - /// Device contains or is attached to a medium changer - /// Byte 6, bit 3 + /// Device contains or is attached to a medium changer + /// Byte 6, bit 3 /// public bool MChngr; /// - /// Device supports request and acknowledge handshakes - /// Byte 6, bit 2 + /// Device supports request and acknowledge handshakes + /// Byte 6, bit 2 /// public bool ACKREQQ; /// - /// Supports 32-bit wide SCSI addresses - /// Byte 6, bit 1 + /// Supports 32-bit wide SCSI addresses + /// Byte 6, bit 1 /// public bool Addr32; /// - /// Supports 16-bit wide SCSI addresses - /// Byte 6, bit 0 + /// Supports 16-bit wide SCSI addresses + /// Byte 6, bit 0 /// public bool Addr16; /// - /// Device supports relative addressing - /// Byte 7, bit 7 + /// Device supports relative addressing + /// Byte 7, bit 7 /// public bool RelAddr; /// - /// Supports 32-bit wide data transfers - /// Byte 7, bit 6 + /// Supports 32-bit wide data transfers + /// Byte 7, bit 6 /// public bool WBus32; /// - /// Supports 16-bit wide data transfers - /// Byte 7, bit 5 + /// Supports 16-bit wide data transfers + /// Byte 7, bit 5 /// public bool WBus16; /// - /// Supports synchronous data transfer - /// Byte 7, bit 4 + /// Supports synchronous data transfer + /// Byte 7, bit 4 /// public bool Sync; /// - /// Supports linked commands - /// Byte 7, bit 3 + /// Supports linked commands + /// Byte 7, bit 3 /// public bool Linked; /// - /// Supports CONTINUE TASK and TARGET TRANSFER DISABLE commands - /// Byte 7, bit 2 + /// Supports CONTINUE TASK and TARGET TRANSFER DISABLE commands + /// Byte 7, bit 2 /// public bool TranDis; /// - /// Supports TCQ queue - /// Byte 7, bit 1 + /// Supports TCQ queue + /// Byte 7, bit 1 /// public bool CmdQue; /// - /// Indicates that the devices responds to RESET with soft reset - /// Byte 7, bit 0 + /// Indicates that the devices responds to RESET with soft reset + /// Byte 7, bit 0 /// public bool SftRe; /// - /// Vendor identification - /// Bytes 8 to 15 + /// Vendor identification + /// Bytes 8 to 15 /// public byte[] VendorIdentification; /// - /// Product identification - /// Bytes 16 to 31 + /// Product identification + /// Bytes 16 to 31 /// public byte[] ProductIdentification; /// - /// Product revision level - /// Bytes 32 to 35 + /// Product revision level + /// Bytes 32 to 35 /// public byte[] ProductRevisionLevel; /// - /// Vendor-specific data - /// Bytes 36 to 55 + /// Vendor-specific data + /// Bytes 36 to 55 /// public byte[] VendorSpecific; /// - /// Byte 56, bits 7 to 4 + /// Byte 56, bits 7 to 4 /// public byte Reserved3; /// - /// Supported SPI clocking - /// Byte 56, bits 3 to 2 + /// Supported SPI clocking + /// Byte 56, bits 3 to 2 /// public byte Clocking; /// - /// Device supports Quick Arbitration and Selection - /// Byte 56, bit 1 + /// Device supports Quick Arbitration and Selection + /// Byte 56, bit 1 /// public bool QAS; /// - /// Supports information unit transfers - /// Byte 56, bit 0 + /// Supports information unit transfers + /// Byte 56, bit 0 /// public bool IUS; /// - /// Reserved - /// Byte 57 + /// Reserved + /// Byte 57 /// public byte Reserved4; /// - /// Array of version descriptors - /// Bytes 58 to 73 + /// Array of version descriptors + /// Bytes 58 to 73 /// public ushort[] VersionDescriptors; /// - /// Reserved - /// Bytes 74 to 95 + /// Reserved + /// Bytes 74 to 95 /// public byte[] Reserved5; /// - /// Reserved - /// Bytes 96 to end + /// Reserved + /// Bytes 96 to end /// public byte[] VendorSpecific2; @@ -2322,191 +2323,191 @@ namespace DiscImageChef.Decoders.SCSI #region Quantum vendor unique inquiry data structure /// - /// Means that the INQUIRY response contains 56 bytes or more, so this data has been filled + /// Means that the INQUIRY response contains 56 bytes or more, so this data has been filled /// public bool QuantumPresent; /// - /// The product family. - /// Byte 36, bits 7 to 5 + /// The product family. + /// Byte 36, bits 7 to 5 /// public byte Qt_ProductFamily; /// - /// The released firmware. - /// Byte 36, bits 4 to 0 + /// The released firmware. + /// Byte 36, bits 4 to 0 /// public byte Qt_ReleasedFirmware; /// - /// The firmware major version. - /// Byte 37 + /// The firmware major version. + /// Byte 37 /// public byte Qt_FirmwareMajorVersion; /// - /// The firmware minor version. - /// Byte 38 + /// The firmware minor version. + /// Byte 38 /// public byte Qt_FirmwareMinorVersion; /// - /// The EEPROM format major version. - /// Byte 39 + /// The EEPROM format major version. + /// Byte 39 /// public byte Qt_EEPROMFormatMajorVersion; /// - /// The EEPROM format minor version. - /// Byte 40 + /// The EEPROM format minor version. + /// Byte 40 /// public byte Qt_EEPROMFormatMinorVersion; /// - /// The firmware personality. - /// Byte 41 + /// The firmware personality. + /// Byte 41 /// public byte Qt_FirmwarePersonality; /// - /// The firmware sub personality. - /// Byte 42 + /// The firmware sub personality. + /// Byte 42 /// public byte Qt_FirmwareSubPersonality; /// - /// The tape directory format version. - /// Byte 43 + /// The tape directory format version. + /// Byte 43 /// public byte Qt_TapeDirectoryFormatVersion; /// - /// The controller hardware version. - /// Byte 44 + /// The controller hardware version. + /// Byte 44 /// public byte Qt_ControllerHardwareVersion; /// - /// The drive EEPROM version. - /// Byte 45 + /// The drive EEPROM version. + /// Byte 45 /// public byte Qt_DriveEEPROMVersion; /// - /// The drive hardware version. - /// Byte 46 + /// The drive hardware version. + /// Byte 46 /// public byte Qt_DriveHardwareVersion; /// - /// The media loader firmware version. - /// Byte 47 + /// The media loader firmware version. + /// Byte 47 /// public byte Qt_MediaLoaderFirmwareVersion; /// - /// The media loader hardware version. - /// Byte 48 + /// The media loader hardware version. + /// Byte 48 /// public byte Qt_MediaLoaderHardwareVersion; /// - /// The media loader mechanical version. - /// Byte 49 + /// The media loader mechanical version. + /// Byte 49 /// public byte Qt_MediaLoaderMechanicalVersion; /// - /// Is a media loader present? - /// Byte 50 + /// Is a media loader present? + /// Byte 50 /// public bool Qt_MediaLoaderPresent; /// - /// Is a library present? - /// Byte 51 + /// Is a library present? + /// Byte 51 /// public bool Qt_LibraryPresent; /// - /// The module revision. - /// Bytes 52 to 55 + /// The module revision. + /// Bytes 52 to 55 /// public byte[] Qt_ModuleRevision; #endregion Quantum vendor unique inquiry data structure #region IBM vendor unique inquiry data structure /// - /// Means that the INQUIRY response contains 56 bytes or more, so this data has been filled + /// Means that the INQUIRY response contains 56 bytes or more, so this data has been filled /// public bool IBMPresent; /// - /// Drive is not capable of automation - /// Byte 36 bit 0 + /// Drive is not capable of automation + /// Byte 36 bit 0 /// public bool IBM_AutDis; /// - /// If not zero, limit in MB/s = Max * (this / 256) - /// Byte 37 + /// If not zero, limit in MB/s = Max * (this / 256) + /// Byte 37 /// public byte IBM_PerformanceLimit; /// - /// Byte 41 + /// Byte 41 /// public byte IBM_OEMSpecific; #endregion IBM vendor unique inquiry data structure #region HP vendor unique inquiry data structure /// - /// Means that the INQUIRY response contains 49 bytes or more, so this data has been filled + /// Means that the INQUIRY response contains 49 bytes or more, so this data has been filled /// public bool HPPresent; /// - /// WORM version - /// Byte 40 bits 7 to 1 + /// WORM version + /// Byte 40 bits 7 to 1 /// public byte HP_WORMVersion; /// - /// WORM supported - /// Byte 40 bit 0 + /// WORM supported + /// Byte 40 bit 0 /// public bool HP_WORM; /// - /// Bytes 43 to 48 + /// Bytes 43 to 48 /// public byte[] HP_OBDR; #endregion HP vendor unique inquiry data structure #region Seagate vendor unique inquiry data structure /// - /// Means that bytes 36 to 43 are filled + /// Means that bytes 36 to 43 are filled /// public bool SeagatePresent; /// - /// Drive Serial Number - /// Bytes 36 to 43 + /// Drive Serial Number + /// Bytes 36 to 43 /// public byte[] Seagate_DriveSerialNumber; /// - /// Means that bytes 96 to 143 are filled + /// Means that bytes 96 to 143 are filled /// public bool Seagate2Present; /// - /// Contains Seagate copyright notice - /// Bytes 96 to 143 + /// Contains Seagate copyright notice + /// Bytes 96 to 143 /// public byte[] Seagate_Copyright; /// - /// Means that bytes 144 to 147 are filled + /// Means that bytes 144 to 147 are filled /// public bool Seagate3Present; /// - /// Reserved Seagate field - /// Bytes 144 to 147 + /// Reserved Seagate field + /// Bytes 144 to 147 /// public byte[] Seagate_ServoPROMPartNo; #endregion Seagate vendor unique inquiry data structure #region Kreon vendor unique inquiry data structure /// - /// Means that firmware is Kreon + /// Means that firmware is Kreon /// public bool KreonPresent; /// - /// Kreon identifier - /// Bytes 36 to 40 + /// Kreon identifier + /// Bytes 36 to 40 /// public byte[] KreonIdentifier; /// - /// Kreon just a 0x20 - /// Bytes 41 + /// Kreon just a 0x20 + /// Bytes 41 /// public byte KreonSpace; /// - /// Kreon version string - /// Bytes 42 to 46 + /// Kreon version string + /// Bytes 42 to 46 /// public byte[] KreonVersion; #endregion Kreon vendor unique inquiry data structure diff --git a/SCSI/MMC/AACS.cs b/SCSI/MMC/AACS.cs index f5c7dfa..d1820d7 100644 --- a/SCSI/MMC/AACS.cs +++ b/SCSI/MMC/AACS.cs @@ -37,19 +37,19 @@ using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,23 +60,23 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSVolumeIdentifier { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// AACS volume identifier data + /// Bytes 4 to end + /// AACS volume identifier data /// public byte[] VolumeIdentifier; } @@ -84,23 +84,23 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSMediaSerialNumber { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// AACS media serial number + /// Bytes 4 to end + /// AACS media serial number /// public byte[] MediaSerialNumber; } @@ -108,23 +108,23 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSMediaIdentifier { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// AACS media identifier data + /// Bytes 4 to end + /// AACS media identifier data /// public byte[] MediaIdentifier; } @@ -132,23 +132,23 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSMediaKeyBlock { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved; /// - /// Byte 3 - /// Number of MKB packs available to transfer + /// Byte 3 + /// Number of MKB packs available to transfer /// public byte TotalPacks; /// - /// Bytes 4 to end - /// AACS media key block packs + /// Bytes 4 to end + /// AACS media key block packs /// public byte[] MediaKeyBlockPacks; } @@ -156,23 +156,23 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSDataKeys { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to end - /// AACS data keys + /// Bytes 4 to end + /// AACS data keys /// public byte[] DataKeys; } @@ -180,24 +180,24 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSLBAExtentsResponse { /// - /// Bytes 0 to 1 - /// Data Length + /// Bytes 0 to 1 + /// Data Length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved; /// - /// Byte 3 - /// Number of LBA extents the drive can store. - /// if(MaxLBAExtents == 0 && DataLength > 2), 256 extents can be stored + /// Byte 3 + /// Number of LBA extents the drive can store. + /// if(MaxLBAExtents == 0 && DataLength > 2), 256 extents can be stored /// public byte MaxLBAExtents; /// - /// Bytes 4 to end - /// LBA Extents + /// Bytes 4 to end + /// LBA Extents /// public AACSLBAExtent[] Extents; } @@ -205,18 +205,18 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct AACSLBAExtent { /// - /// Bytes 0 to 7 - /// Reserved + /// Bytes 0 to 7 + /// Reserved /// public byte[] Reserved; /// - /// Bytes 8 to 11 - /// Start LBA of extent + /// Bytes 8 to 11 + /// Start LBA of extent /// public uint StartLBA; /// - /// Bytes 12 to 15 - /// Extent length + /// Bytes 12 to 15 + /// Extent length /// public uint LBACount; } diff --git a/SCSI/MMC/CPRM.cs b/SCSI/MMC/CPRM.cs index a07b3d0..e7b7f68 100644 --- a/SCSI/MMC/CPRM.cs +++ b/SCSI/MMC/CPRM.cs @@ -37,19 +37,19 @@ using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,23 +60,23 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct CPRMMediaKeyBlock { /// - /// Bytes 0 to 1 - /// Data Length + /// Bytes 0 to 1 + /// Data Length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved; /// - /// Byte 3 - /// Number of MKB packs available to transfer + /// Byte 3 + /// Number of MKB packs available to transfer /// public byte TotalPacks; /// - /// Byte 4 - /// MKB Packs + /// Byte 4 + /// MKB Packs /// public byte[] MKBPackData; } diff --git a/SCSI/MMC/DiscInformation.cs b/SCSI/MMC/DiscInformation.cs index 6de866f..cb2dcdd 100644 --- a/SCSI/MMC/DiscInformation.cs +++ b/SCSI/MMC/DiscInformation.cs @@ -37,19 +37,19 @@ using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,123 +60,123 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct StandardDiscInformation { /// - /// Bytes 0 to 1 - /// 32 + OPCTablesNumber*8 + /// Bytes 0 to 1 + /// 32 + OPCTablesNumber*8 /// public ushort DataLength; /// - /// Byte 2, bits 7 to 5 - /// 000b + /// Byte 2, bits 7 to 5 + /// 000b /// public byte DataType; /// - /// Byte 2, bit 4 - /// If set, disc is erasable + /// Byte 2, bit 4 + /// If set, disc is erasable /// public bool Erasable; /// - /// Byte 2, bits 3 to 2 - /// Status of last session + /// Byte 2, bits 3 to 2 + /// Status of last session /// public byte LastSessionStatus; /// - /// Byte 2, bits 1 to 0 - /// Status of disc + /// Byte 2, bits 1 to 0 + /// Status of disc /// public byte DiscStatus; /// - /// Byte 3 - /// Number of logical track that contains LBA 0 + /// Byte 3 + /// Number of logical track that contains LBA 0 /// public byte FirstTrackNumber; /// - /// Byte 9 (MSB) and byte 4 (LSB) - /// Number of sessions + /// Byte 9 (MSB) and byte 4 (LSB) + /// Number of sessions /// public ushort Sessions; /// - /// Byte 10 (MSB) and byte 5 (LSB) - /// Number of first track in last session + /// Byte 10 (MSB) and byte 5 (LSB) + /// Number of first track in last session /// public ushort FirstTrackLastSession; /// - /// Byte 11 (MSB) and byte 6 (LSB) - /// Number of last track in last session + /// Byte 11 (MSB) and byte 6 (LSB) + /// Number of last track in last session /// public ushort LastTrackLastSession; /// - /// Byte 7, bit 7 - /// If set, DiscIdentification is valid + /// Byte 7, bit 7 + /// If set, DiscIdentification is valid /// public bool DID_V; /// - /// Byte 7, bit 6 - /// If set, DiscBarcode is valid + /// Byte 7, bit 6 + /// If set, DiscBarcode is valid /// public bool DBC_V; /// - /// Byte 7, bit 5 - /// If set, disc is unrestricted + /// Byte 7, bit 5 + /// If set, disc is unrestricted /// public bool URU; /// - /// Byte 7, bit 4 - /// If set DiscApplicationCode is valid + /// Byte 7, bit 4 + /// If set DiscApplicationCode is valid /// public bool DAC_V; /// - /// Byte 7, bit 3 - /// Reserved + /// Byte 7, bit 3 + /// Reserved /// public bool Reserved; /// - /// Byte 7, bit 2 - /// Copy of dirty bit from MRW status + /// Byte 7, bit 2 + /// Copy of dirty bit from MRW status /// public bool Dbit; /// - /// Byte 7, bits 1 to 0 - /// Background format status + /// Byte 7, bits 1 to 0 + /// Background format status /// public byte BGFormatStatus; /// - /// Byte 8 - /// Disc type code + /// Byte 8 + /// Disc type code /// public byte DiscType; /// - /// Bytes 12 to 15 - /// Disc identification number from PMA + /// Bytes 12 to 15 + /// Disc identification number from PMA /// public uint DiscIdentification; /// - /// Bytes 16 to 19 - /// Last Session Lead-in Start Address (MSF for CD, LBA for others) + /// Bytes 16 to 19 + /// Last Session Lead-in Start Address (MSF for CD, LBA for others) /// public uint LastSessionLeadInStartLBA; /// - /// Bytes 20 to 23 - /// Last Possible Lead-out Start Address (MSF for CD, LBA for others) + /// Bytes 20 to 23 + /// Last Possible Lead-out Start Address (MSF for CD, LBA for others) /// public uint LastPossibleLeadOutStartLBA; /// - /// Bytes 24 to 31 - /// Disc barcode + /// Bytes 24 to 31 + /// Disc barcode /// public ulong DiscBarcode; /// - /// Byte 32 - /// Disc application code + /// Byte 32 + /// Disc application code /// public byte DiscApplicationCode; /// - /// Byte 33 - /// How many OPC tables are + /// Byte 33 + /// How many OPC tables are /// public byte OPCTablesNumber; /// - /// Bytes 34 to end - /// OPC tables (8 bytes each) + /// Bytes 34 to end + /// OPC tables (8 bytes each) /// public OPCTable[] OPCTables; } @@ -184,13 +184,13 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct OPCTable { /// - /// Bytes 0 to 1 - /// kilobytes/sec this OPC table applies to + /// Bytes 0 to 1 + /// kilobytes/sec this OPC table applies to /// public ushort Speed; /// - /// Bytes 2 to 7 - /// OPC values + /// Bytes 2 to 7 + /// OPC values /// public byte[] OPCValues; } @@ -198,43 +198,43 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct TrackResourcesInformation { /// - /// Bytes 0 to 1 - /// 10 + /// Bytes 0 to 1 + /// 10 /// public ushort DataLength; /// - /// Byte 2, bits 7 to 5 - /// 001b + /// Byte 2, bits 7 to 5 + /// 001b /// public byte DataType; /// - /// Byte 2, bits 4 to 0 - /// Reserved + /// Byte 2, bits 4 to 0 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 5 - /// Maximum possible number of the tracks on the disc + /// Bytes 4 to 5 + /// Maximum possible number of the tracks on the disc /// public ushort MaxTracks; /// - /// Bytes 6 to 7 - /// Number of the assigned tracks on the disc + /// Bytes 6 to 7 + /// Number of the assigned tracks on the disc /// public ushort AssignedTracks; /// - /// Bytes 8 to 9 - /// Maximum possible number of appendable tracks on the disc + /// Bytes 8 to 9 + /// Maximum possible number of appendable tracks on the disc /// public ushort MaxAppendableTracks; /// - /// Bytes 10 to 11 - /// Current number of appendable tracks on the disc + /// Bytes 10 to 11 + /// Current number of appendable tracks on the disc /// public ushort AppendableTracks; } @@ -242,38 +242,38 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct POWResourcesInformation { /// - /// Bytes 0 to 1 - /// 14 + /// Bytes 0 to 1 + /// 14 /// public ushort DataLength; /// - /// Byte 2, bits 7 to 5 - /// 010b + /// Byte 2, bits 7 to 5 + /// 010b /// public byte DataType; /// - /// Byte 2, bits 4 to 0 - /// Reserved + /// Byte 2, bits 4 to 0 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// Remaining POW replacements + /// Bytes 4 to 7 + /// Remaining POW replacements /// public uint RemainingPOWReplacements; /// - /// Bytes 8 to 11 - /// Remaining POW reallocation map entries + /// Bytes 8 to 11 + /// Remaining POW reallocation map entries /// public uint RemainingPOWReallocation; /// - /// Bytes 12 to 15 - /// Number of remaining POW updates + /// Bytes 12 to 15 + /// Number of remaining POW updates /// public uint RemainingPOWUpdates; } @@ -415,8 +415,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC sb.AppendFormat("Last track in last session is track {0}", decoded.LastTrackLastSession).AppendLine(); sb.AppendFormat("Last session Lead-In address is {0} (as LBA) or {1:X2}:{2:X2}:{3:X2}", decoded.LastSessionLeadInStartLBA, (decoded.LastSessionLeadInStartLBA & 0xFF0000) >> 16, - (decoded.LastSessionLeadInStartLBA & 0xFF00) >> 8, - decoded.LastSessionLeadInStartLBA & 0xFF).AppendLine(); + (decoded.LastSessionLeadInStartLBA & 0xFF00) >> 8, decoded.LastSessionLeadInStartLBA & 0xFF) + .AppendLine(); sb.AppendFormat("Last possible Lead-Out address is {0} (as LBA) or {1:X2}:{2:X2}:{3:X2}", decoded.LastPossibleLeadOutStartLBA, (decoded.LastPossibleLeadOutStartLBA & 0xFF0000) >> 16, (decoded.LastPossibleLeadOutStartLBA & 0xFF00) >> 8, diff --git a/SCSI/MMC/Enums.cs b/SCSI/MMC/Enums.cs index 94c5448..2c64d2c 100644 --- a/SCSI/MMC/Enums.cs +++ b/SCSI/MMC/Enums.cs @@ -79,7 +79,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC public enum DiscTypeCodes : byte { /// - /// Also valid for CD-DA, DVD and BD + /// Also valid for CD-DA, DVD and BD /// CDROM = 0x00, CDi = 0x10, diff --git a/SCSI/MMC/Features.cs b/SCSI/MMC/Features.cs index db3c515..8011b60 100644 --- a/SCSI/MMC/Features.cs +++ b/SCSI/MMC/Features.cs @@ -40,410 +40,410 @@ using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC { /// - /// MMC Feature enumeration + /// MMC Feature enumeration /// [SuppressMessage("ReSharper", "InconsistentNaming")] public enum FeatureNumber : ushort { /// - /// Lists all profiles + /// Lists all profiles /// ProfileList = 0x0000, /// - /// Mandatory behaviour + /// Mandatory behaviour /// Core = 0x0001, /// - /// Operational changes + /// Operational changes /// Morphing = 0x0002, /// - /// Removable medium + /// Removable medium /// Removable = 0x0003, /// - /// Ability to control write protection status + /// Ability to control write protection status /// WriteProtect = 0x0004, /// - /// Ability to read sectors with random addressing + /// Ability to read sectors with random addressing /// RandomRead = 0x0010, /// - /// Reads on OSTA Multi-Read + /// Reads on OSTA Multi-Read /// MultiRead = 0x001D, /// - /// Able to read CD structures + /// Able to read CD structures /// CDRead = 0x001E, /// - /// Able to read DVD structures + /// Able to read DVD structures /// DVDRead = 0x001F, /// - /// Ability to write sectors with random addressing + /// Ability to write sectors with random addressing /// RandomWrite = 0x0020, /// - /// Ability to sequentially write + /// Ability to sequentially write /// IncrementalWrite = 0x0021, /// - /// Support for media that requires erase before write + /// Support for media that requires erase before write /// SectorErasable = 0x0022, /// - /// Supports formatting media + /// Supports formatting media /// Formattable = 0x0023, /// - /// Ability to provide defect-free space + /// Ability to provide defect-free space /// HardwareDefectMgmt = 0x0024, /// - /// Supports for write-once media in random order + /// Supports for write-once media in random order /// WriteOnce = 0x0025, /// - /// Supports for media that shall be written from blocking boundaries + /// Supports for media that shall be written from blocking boundaries /// RestrictedOverwrite = 0x0026, /// - /// Supports high speed CD-RW + /// Supports high speed CD-RW /// CDRWCAV = 0x0027, /// - /// Read and optionally write MRW + /// Read and optionally write MRW /// MRW = 0x0028, /// - /// Ability to control RECOVERED ERROR reporting + /// Ability to control RECOVERED ERROR reporting /// EnDefectReport = 0x0029, /// - /// Ability to recognize, read and optionally write DVD+RW + /// Ability to recognize, read and optionally write DVD+RW /// DVDRWPlus = 0x002A, /// - /// Ability to read DVD+R + /// Ability to read DVD+R /// DVDRPlus = 0x002B, RigidOverWrite = 0x002C, /// - /// Ability to write CD in Track-at-Once + /// Ability to write CD in Track-at-Once /// CDTAO = 0x002D, /// - /// Ability to write CD in Session-at-Once or RAW + /// Ability to write CD in Session-at-Once or RAW /// CDMastering = 0x002E, /// - /// Ability to write DVD structures + /// Ability to write DVD structures /// DVDRWrite = 0x002F, /// - /// Ability to read DDCD + /// Ability to read DDCD /// DDCD = 0x0030, /// - /// Ability to write DDCD-R + /// Ability to write DDCD-R /// DDCDR = 0x0031, /// - /// Ability to write DDCD-RW + /// Ability to write DDCD-RW /// DDCDRW = 0x0032, /// - /// Ability to record in layer jump mode + /// Ability to record in layer jump mode /// LayerJump = 0x0033, /// - /// Ability to perform Layer Jump recording on Rigid Restricted Overwrite + /// Ability to perform Layer Jump recording on Rigid Restricted Overwrite /// LJRigid = 0x0034, /// - /// Ability to stop the long immediate operation + /// Ability to stop the long immediate operation /// StopLong = 0x0035, /// - /// Ability to report CD-RW media sub-types supported for write + /// Ability to report CD-RW media sub-types supported for write /// CDRWMediaWrite = 0x0037, /// - /// Logical block overwrite service on BD-R formatted as SRM+POW + /// Logical block overwrite service on BD-R formatted as SRM+POW /// BDRPOW = 0x0038, /// - /// Ability to read DVD+RW DL + /// Ability to read DVD+RW DL /// DVDRWDLPlus = 0x003A, /// - /// Ability to read DVD+R DL + /// Ability to read DVD+R DL /// DVDRDLPlus = 0x003B, /// - /// Ability to read BD discs + /// Ability to read BD discs /// BDRead = 0x0040, /// - /// Ability to write BD discs + /// Ability to write BD discs /// BDWrite = 0x0041, /// - /// Timely, Safe Recording + /// Timely, Safe Recording /// TSR = 0x0042, /// - /// Ability to read HD DVD + /// Ability to read HD DVD /// HDDVDRead = 0x0050, /// - /// Ability to write HD DVD + /// Ability to write HD DVD /// HDDVDWrite = 0x0051, /// - /// Ability to write HD DVD-RW fragmented + /// Ability to write HD DVD-RW fragmented /// HDDVDRWFragment = 0x0052, /// - /// Supports some Hybrid Discs + /// Supports some Hybrid Discs /// Hybrid = 0x0080, /// - /// Host and device directed power management + /// Host and device directed power management /// PowerMgmt = 0x0100, /// - /// Supports S.M.A.R.T. + /// Supports S.M.A.R.T. /// SMART = 0x0101, /// - /// Single machanism multiple disc changer + /// Single machanism multiple disc changer /// Changer = 0x0102, /// - /// Ability to play CD audio to an analogue output + /// Ability to play CD audio to an analogue output /// CDAudioExt = 0x0103, /// - /// Ability to accept new microcode + /// Ability to accept new microcode /// MicrocodeUpgrade = 0x0104, /// - /// Ability to respond to all commands within a specific time + /// Ability to respond to all commands within a specific time /// Timeout = 0x0105, /// - /// Supports DVD CSS/CPPM + /// Supports DVD CSS/CPPM /// CSS = 0x0106, /// - /// Ability to read and write using host requested performance parameters + /// Ability to read and write using host requested performance parameters /// RTS = 0x0107, /// - /// Drive has a unique identifier + /// Drive has a unique identifier /// DriveSerial = 0x0108, /// - /// Ability to return unique Media Serial Number + /// Ability to return unique Media Serial Number /// MediaSerial = 0x0109, /// - /// Ability to read and/or write DCBs + /// Ability to read and/or write DCBs /// DCBs = 0x010A, /// - /// Supports DVD CPRM + /// Supports DVD CPRM /// CPRM = 0x010B, /// - /// Firmware creation date report + /// Firmware creation date report /// FirmwareInfo = 0x010C, /// - /// Ability to decode and optionally encode AACS + /// Ability to decode and optionally encode AACS /// AACS = 0x010D, /// - /// Ability to perform DVD CSS managed recording + /// Ability to perform DVD CSS managed recording /// CSSManagedRec = 0x010E, /// - /// Ability to decode and optionally encode VCPS + /// Ability to decode and optionally encode VCPS /// VCPS = 0x0110, /// - /// Supports SecurDisc + /// Supports SecurDisc /// SecurDisc = 0x0113, /// - /// TCG Optical Security Subsystem Class + /// TCG Optical Security Subsystem Class /// OSSC = 0x0142 } /// - /// MMC Profile enumeration + /// MMC Profile enumeration /// [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ProfileNumber : ushort { /// - /// Not to use + /// Not to use /// Reserved = 0x0000, /// - /// Non-removable disk profile + /// Non-removable disk profile /// NonRemovable = 0x0001, /// - /// Rewritable with removable media + /// Rewritable with removable media /// Removable = 0x0002, /// - /// Magneto-Optical with sector erase + /// Magneto-Optical with sector erase /// MOErasable = 0x0003, /// - /// Optical write once + /// Optical write once /// OpticalWORM = 0x0004, /// - /// Advance Storage - Magneto-Optical + /// Advance Storage - Magneto-Optical /// ASMO = 0x0005, /// - /// Read-only Compact Disc + /// Read-only Compact Disc /// CDROM = 0x0008, /// - /// Write-once Compact Disc + /// Write-once Compact Disc /// CDR = 0x0009, /// - /// Re-writable Compact Disc + /// Re-writable Compact Disc /// CDRW = 0x000A, /// - /// Read-only DVD + /// Read-only DVD /// DVDROM = 0x0010, /// - /// Write-once sequentially recorded DVD-R + /// Write-once sequentially recorded DVD-R /// DVDRSeq = 0x0011, /// - /// DVD-RAM + /// DVD-RAM /// DVDRAM = 0x0012, /// - /// Restricted overwrite DVD-RW + /// Restricted overwrite DVD-RW /// DVDRWRes = 0x0013, /// - /// Sequential recording DVD-RW + /// Sequential recording DVD-RW /// DVDRWSeq = 0x0014, /// - /// Sequential recording DVD-R DL + /// Sequential recording DVD-R DL /// DVDRDLSeq = 0x0015, /// - /// Layer jump recording DVD-R DL + /// Layer jump recording DVD-R DL /// DVDRDLJump = 0x0016, /// - /// DVD-RW DL + /// DVD-RW DL /// DVDRWDL = 0x0017, /// - /// DVD-Download + /// DVD-Download /// DVDDownload = 0x0018, /// - /// DVD+RW + /// DVD+RW /// DVDRWPlus = 0x001A, /// - /// DVD+R + /// DVD+R /// DVDRPlus = 0x001B, /// - /// DDCD-ROM + /// DDCD-ROM /// DDCDROM = 0x0020, /// - /// DDCD-R + /// DDCD-R /// DDCDR = 0x0021, /// - /// DDCD-RW + /// DDCD-RW /// DDCDRW = 0x0022, /// - /// DVD+RW DL + /// DVD+RW DL /// DVDRWDLPlus = 0x002A, /// - /// DVD+R DL + /// DVD+R DL /// DVDRDLPlus = 0x002B, /// - /// BD-ROM + /// BD-ROM /// BDROM = 0x0040, /// - /// BD-R SRM + /// BD-R SRM /// BDRSeq = 0x0041, /// - /// BD-R RRM + /// BD-R RRM /// BDRRdm = 0x0042, /// - /// BD-RE + /// BD-RE /// BDRE = 0x0043, /// - /// HD DVD-ROM + /// HD DVD-ROM /// HDDVDROM = 0x0050, /// - /// HD DVD-R + /// HD DVD-R /// HDDVDR = 0x0051, /// - /// HD DVD-RAM + /// HD DVD-RAM /// HDDVDRAM = 0x0052, /// - /// HD DVD-RW + /// HD DVD-RW /// HDDVDRW = 0x0053, /// - /// HD DVD-R DL + /// HD DVD-R DL /// HDDVDRDL = 0x0058, /// - /// HD DVD-RW DL + /// HD DVD-RW DL /// HDDVDRWDL = 0x005A, /// - /// HDBurn CD-ROM + /// HDBurn CD-ROM /// HDBURNROM = 0x0080, /// - /// HDBurn CD-R + /// HDBurn CD-R /// HDBURNR = 0x0081, /// - /// HDBurn CD-RW + /// HDBurn CD-RW /// HDBURNRW = 0x0082, /// - /// Drive does not conform to any profiles + /// Drive does not conform to any profiles /// Unconforming = 0xFFFF } @@ -452,43 +452,43 @@ namespace DiscImageChef.Decoders.SCSI.MMC public enum PhysicalInterfaces : uint { /// - /// Unspecified physical interface + /// Unspecified physical interface /// Unspecified = 0, /// - /// SCSI + /// SCSI /// SCSI = 1, /// - /// ATAPI + /// ATAPI /// ATAPI = 2, /// - /// IEEE-1394/1995 + /// IEEE-1394/1995 /// IEEE1394 = 3, /// - /// IEEE-1394A + /// IEEE-1394A /// IEEE1394A = 4, /// - /// Fibre Channel + /// Fibre Channel /// FC = 5, /// - /// IEEE-1394B + /// IEEE-1394B /// IEEE1394B = 6, /// - /// Serial ATAPI + /// Serial ATAPI /// SerialATAPI = 7, /// - /// USB + /// USB /// USB = 8, /// - /// Vendor unique + /// Vendor unique /// Vendor = 0xFFFF } @@ -503,7 +503,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC } /// - /// Profile List Feature (0000h) + /// Profile List Feature (0000h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -511,25 +511,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0000 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// All supported profiles + /// All supported profiles /// public Profile[] Profiles; } /// - /// Core Feature (0001h) + /// Core Feature (0001h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -537,33 +537,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0001 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Currently in-use physical interface standard + /// Currently in-use physical interface standard /// public PhysicalInterfaces PhysicalInterfaceStandard; /// - /// Supports EVPD, Page Code and 16-bit Allocation Length as defined in SPC-3 + /// Supports EVPD, Page Code and 16-bit Allocation Length as defined in SPC-3 /// public bool INQ2; /// - /// Supports Device Busy Event + /// Supports Device Busy Event /// public bool DBE; } /// - /// Morphing Feature (0002h) + /// Morphing Feature (0002h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -571,30 +571,30 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0002 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports Operational Change Request/Nofitication Class Events - /// of GET EVENT/STATUS NOTIFICATION + /// Supports Operational Change Request/Nofitication Class Events + /// of GET EVENT/STATUS NOTIFICATION /// public bool OCEvent; /// - /// Supports asynchronous GET EVENT/STATUS NOTIFICATION + /// Supports asynchronous GET EVENT/STATUS NOTIFICATION /// public bool Async; } /// - /// Removable Medium Feature (0003h) + /// Removable Medium Feature (0003h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -602,45 +602,45 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0003 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Mechanism type + /// Mechanism type /// public byte LoadingMechanismType; /// - /// Drive is able to load the medium + /// Drive is able to load the medium /// public bool Load; /// - /// Device can eject medium + /// Device can eject medium /// public bool Eject; /// - /// Device starts in medium ejection/insertion allow + /// Device starts in medium ejection/insertion allow /// public bool PreventJumper; /// - /// Reports Device Busy Class events during medium loading/unloading + /// Reports Device Busy Class events during medium loading/unloading /// public bool DBML; /// - /// Medium is currently locked + /// Medium is currently locked /// public bool Lock; } /// - /// Write Protect Feature (0004h) + /// Write Protect Feature (0004h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -648,37 +648,37 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0004 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Drive can read/write Disc Write Protect PAC on BD-R/-RE media + /// Drive can read/write Disc Write Protect PAC on BD-R/-RE media /// public bool DWP; /// - /// Supports reading/writing Write Inhibit DCB on DVD+RW media. + /// Supports reading/writing Write Inhibit DCB on DVD+RW media. /// public bool WDCB; /// - /// Supports PWP status + /// Supports PWP status /// public bool SPWP; /// - /// Supports SWPP bit of mode page 1Dh + /// Supports SWPP bit of mode page 1Dh /// public bool SSWPP; } /// - /// Random Readable Feature (0010h) + /// Random Readable Feature (0010h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -686,33 +686,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0010 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Bytes per logical block + /// Bytes per logical block /// public uint LogicalBlockSize; /// - /// Number of logical blocks per device readable unit + /// Number of logical blocks per device readable unit /// public ushort Blocking; /// - /// Read/Write Error Recovery page is present + /// Read/Write Error Recovery page is present /// public bool PP; } /// - /// Multi-Read Feature (001Dh) + /// Multi-Read Feature (001Dh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -720,21 +720,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_001D { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// CD Read Feature (001Eh) + /// CD Read Feature (001Eh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -742,33 +742,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_001E { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports DAP bit in READ CD and READ CD MSF + /// Supports DAP bit in READ CD and READ CD MSF /// public bool DAP; /// - /// Supports C2 Error Pointers + /// Supports C2 Error Pointers /// public bool C2; /// - /// Can read CD-Text with READ TOC/PMA/ATIP + /// Can read CD-Text with READ TOC/PMA/ATIP /// public bool CDText; } /// - /// DVD Read Feature (001Fh) + /// DVD Read Feature (001Fh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -776,33 +776,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_001F { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Compliant with DVD Multi Drive Read-only specifications + /// Compliant with DVD Multi Drive Read-only specifications /// public bool MULTI110; /// - /// Supports reading all DVD-RW DL + /// Supports reading all DVD-RW DL /// public bool DualRW; /// - /// Supports reading all DVD-R DL including remapping + /// Supports reading all DVD-R DL including remapping /// public bool DualR; } /// - /// Random Writable Feature (0020h) + /// Random Writable Feature (0020h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -810,37 +810,37 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0020 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Last logical block address + /// Last logical block address /// public uint LastLBA; /// - /// Bytes per logical block + /// Bytes per logical block /// public uint LogicalBlockSize; /// - /// Number of logical blocks per device readable unit + /// Number of logical blocks per device readable unit /// public ushort Blocking; /// - /// Read/Write Error Recovery page is present + /// Read/Write Error Recovery page is present /// public bool PP; } /// - /// Incremental Streaming Writable Feature (0021h) + /// Incremental Streaming Writable Feature (0021h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -848,41 +848,41 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0021 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Bitmask of supported data types + /// Bitmask of supported data types /// public ushort DataTypeSupported; /// - /// Can report Track Resources Information of READ DISC INFORMATION + /// Can report Track Resources Information of READ DISC INFORMATION /// public bool TRIO; /// - /// Supports Address Mode in RESERVE TRACK + /// Supports Address Mode in RESERVE TRACK /// public bool ARSV; /// - /// Zero loss linking + /// Zero loss linking /// public bool BUF; /// - /// Logical blocks per link + /// Logical blocks per link /// public byte[] LinkSizes; } /// - /// Sector Erasable Feature (0022h) + /// Sector Erasable Feature (0022h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -890,21 +890,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0022 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// Formattable Feature (0023h) + /// Formattable Feature (0023h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -912,45 +912,45 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0023 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports formatting BD-RE without spare area + /// Supports formatting BD-RE without spare area /// public bool RENoSA; /// - /// Supports expansion of the spare area on BD-RE + /// Supports expansion of the spare area on BD-RE /// public bool Expand; /// - /// Supports FORMAT type 30h sub-type 11b + /// Supports FORMAT type 30h sub-type 11b /// public bool QCert; /// - /// Supports FORMAT type 30h sub-type 10b + /// Supports FORMAT type 30h sub-type 10b /// public bool Cert; /// - /// Supports FORMAT type 18h + /// Supports FORMAT type 18h /// public bool FRF; /// - /// Supports FORMAT type 00h/32h sub-type 10b on BD-R + /// Supports FORMAT type 00h/32h sub-type 10b on BD-R /// public bool RRM; } /// - /// Hardware Defect Management Feature (0024h) + /// Hardware Defect Management Feature (0024h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -958,25 +958,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0024 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports READ DISC STRUCTURE with Format Code 0Ah (Spare Area Information) + /// Supports READ DISC STRUCTURE with Format Code 0Ah (Spare Area Information) /// public bool SSA; } /// - /// Write Once Feature (0025h) + /// Write Once Feature (0025h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -984,33 +984,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0025 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Bytes per logical block + /// Bytes per logical block /// public uint LogicalBlockSize; /// - /// Number of logical blocks per device readable unit + /// Number of logical blocks per device readable unit /// public ushort Blocking; /// - /// Read/Write Error Recovery page is present + /// Read/Write Error Recovery page is present /// public bool PP; } /// - /// Restricted Overwrite Feature (0026h) + /// Restricted Overwrite Feature (0026h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1018,21 +1018,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0026 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// CD-RW CAV Write Feature (0027h) + /// CD-RW CAV Write Feature (0027h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1040,21 +1040,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0027 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// MRW Feature (0028h) + /// MRW Feature (0028h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1062,33 +1062,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0028 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can read DVD+MRW discs + /// Can read DVD+MRW discs /// public bool DVDPRead; /// - /// Can write DVD+MRW discs + /// Can write DVD+MRW discs /// public bool DVDPWrite; /// - /// Can format and write to CD-MRW discs + /// Can format and write to CD-MRW discs /// public bool Write; } /// - /// Enhanced Defect Reporting Feature (0029h) + /// Enhanced Defect Reporting Feature (0029h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1096,33 +1096,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0029 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports DRT-DM + /// Supports DRT-DM /// public bool DRTDM; /// - /// Maximum number of DBI cache zones device can handle separately + /// Maximum number of DBI cache zones device can handle separately /// public byte DBICacheZones; /// - /// Number of entries in worst case to case DBI overflow + /// Number of entries in worst case to case DBI overflow /// public ushort Entries; } /// - /// DVD+RW Feature (002Ah) + /// DVD+RW Feature (002Ah) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1130,33 +1130,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_002A { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can format DVD+RW discs + /// Can format DVD+RW discs /// public bool Write; /// - /// FORMAT UNIT supports quick start formatting + /// FORMAT UNIT supports quick start formatting /// public bool QuickStart; /// - /// Drive only supports read compatibility stop + /// Drive only supports read compatibility stop /// public bool CloseOnly; } /// - /// DVD+R Feature (002Bh) + /// DVD+R Feature (002Bh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1164,25 +1164,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_002B { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can write DVD+R + /// Can write DVD+R /// public bool Write; } /// - /// Rigid Restricted Overwrite Feature (002Ch) + /// Rigid Restricted Overwrite Feature (002Ch) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1190,37 +1190,37 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_002C { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can generate Defect Status Data during formatting + /// Can generate Defect Status Data during formatting /// public bool DSDG; /// - /// Can read Defect Status Data recorded on medium + /// Can read Defect Status Data recorded on medium /// public bool DSDR; /// - /// Supports writing on an intermediate state Session and quick formatting + /// Supports writing on an intermediate state Session and quick formatting /// public bool Intermediate; /// - /// Supports BLANK command types 00h and 01h + /// Supports BLANK command types 00h and 01h /// public bool Blank; } /// - /// CD Track at Once Feature (002Dh) + /// CD Track at Once Feature (002Dh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1228,49 +1228,49 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_002D { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports zero loss linking + /// Supports zero loss linking /// public bool BUF; /// - /// Supports writing R-W subchannels in raw mode + /// Supports writing R-W subchannels in raw mode /// public bool RWRaw; /// - /// Supports writing R-W subchannels in packed mode + /// Supports writing R-W subchannels in packed mode /// public bool RWPack; /// - /// Can perform test writes + /// Can perform test writes /// public bool TestWrite; /// - /// Supports overwriting a TAO track with another + /// Supports overwriting a TAO track with another /// public bool CDRW; /// - /// Can write R-W subchannels with user provided data + /// Can write R-W subchannels with user provided data /// public bool RWSubchannel; /// - /// Bitmask of supported data types + /// Bitmask of supported data types /// public ushort DataTypeSupported; } /// - /// CD Mastering (Session at Once) Feature (002Eh) + /// CD Mastering (Session at Once) Feature (002Eh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1278,53 +1278,53 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_002E { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports zero loss linking + /// Supports zero loss linking /// public bool BUF; /// - /// Can write in Session at Once + /// Can write in Session at Once /// public bool SAO; /// - /// Can write multi-session in RAW + /// Can write multi-session in RAW /// public bool RAWMS; /// - /// Can write in RAW + /// Can write in RAW /// public bool RAW; /// - /// Can perform test writes + /// Can perform test writes /// public bool TestWrite; /// - /// Can overwrite previously recorded data + /// Can overwrite previously recorded data /// public bool CDRW; /// - /// Can write R-W subchannels with user provided data + /// Can write R-W subchannels with user provided data /// public bool RW; /// - /// Maximum length of a Cue Sheet for Session at Once + /// Maximum length of a Cue Sheet for Session at Once /// public uint MaxCueSheet; } /// - /// DVD-R/-RW Write Feature (002Fh) + /// DVD-R/-RW Write Feature (002Fh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1332,37 +1332,37 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_002F { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Buffer Under-run protection + /// Buffer Under-run protection /// public bool BUF; /// - /// Supports writing DVD-R DL + /// Supports writing DVD-R DL /// public bool RDL; /// - /// Test write + /// Test write /// public bool TestWrite; /// - /// Can write and erase DVD-RW + /// Can write and erase DVD-RW /// public bool DVDRW; } /// - /// Double Density CD Read Feature (0030h) + /// Double Density CD Read Feature (0030h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1370,21 +1370,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0030 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// Double Density CD-R Write Feature (0031h) + /// Double Density CD-R Write Feature (0031h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1392,25 +1392,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0031 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Test write + /// Test write /// public bool TestWrite; } /// - /// Double Density CD-RW Write Feature (0032h) + /// Double Density CD-RW Write Feature (0032h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1418,29 +1418,29 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0032 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports quick formatting + /// Supports quick formatting /// public bool Intermediate; /// - /// Supports BLANK command + /// Supports BLANK command /// public bool Blank; } /// - /// Layer Jump Recording Feature (0033h) + /// Layer Jump Recording Feature (0033h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1448,22 +1448,22 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0033 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; public byte[] LinkSizes; } /// - /// Stop Long Operation Feature (0035h) + /// Stop Long Operation Feature (0035h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1471,21 +1471,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0035 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// CD-RW Media Write Support Feature (0037h) + /// CD-RW Media Write Support Feature (0037h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1493,25 +1493,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0037 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Bitmask of supported CD-RW media sub-types + /// Bitmask of supported CD-RW media sub-types /// public byte SubtypeSupport; } /// - /// BD-R Pseudo-Overwrite (POW) Feature (0038h) + /// BD-R Pseudo-Overwrite (POW) Feature (0038h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1519,21 +1519,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0038 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// DVD+RW Dual Layer Feature (003Ah) + /// DVD+RW Dual Layer Feature (003Ah) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1541,33 +1541,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_003A { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can format DVD+RW DL discs + /// Can format DVD+RW DL discs /// public bool Write; /// - /// FORMAT UNIT supports quick start formatting + /// FORMAT UNIT supports quick start formatting /// public bool QuickStart; /// - /// Drive only supports read compatibility stop + /// Drive only supports read compatibility stop /// public bool CloseOnly; } /// - /// DVD+R Dual Layer Feature (003Bh) + /// DVD+R Dual Layer Feature (003Bh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1575,33 +1575,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_003B { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can format DVD+R DL discs + /// Can format DVD+R DL discs /// public bool Write; /// - /// FORMAT UNIT supports quick start formatting + /// FORMAT UNIT supports quick start formatting /// public bool QuickStart; /// - /// Drive only supports read compatibility stop + /// Drive only supports read compatibility stop /// public bool CloseOnly; } /// - /// BD Read Feature (0040h) + /// BD Read Feature (0040h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1609,53 +1609,53 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0040 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can read BCA + /// Can read BCA /// public bool BCA; /// - /// Supports reading BD-RE Ver.2 + /// Supports reading BD-RE Ver.2 /// public bool RE2; /// - /// Supports reading BD-RE Ver.1 + /// Supports reading BD-RE Ver.1 /// public bool RE1; /// - /// Obsolete + /// Obsolete /// public bool OldRE; /// - /// Supports reading BD-R Ver.1 + /// Supports reading BD-R Ver.1 /// public bool R; /// - /// Obsolete + /// Obsolete /// public bool OldR; /// - /// Supports reading BD-ROM Ver.1 + /// Supports reading BD-ROM Ver.1 /// public bool ROM; /// - /// Obsolete + /// Obsolete /// public bool OldROM; } /// - /// BD Write Feature (0041h) + /// BD Write Feature (0041h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1663,45 +1663,45 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0041 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports verify not required + /// Supports verify not required /// public bool SVNR; /// - /// Supports writing BD-RE Ver.2 + /// Supports writing BD-RE Ver.2 /// public bool RE2; /// - /// Supports writing BD-RE Ver.1 + /// Supports writing BD-RE Ver.1 /// public bool RE1; /// - /// Obsolete + /// Obsolete /// public bool OldRE; /// - /// Supports writing BD-R Ver.1 + /// Supports writing BD-R Ver.1 /// public bool R; /// - /// Obsolete + /// Obsolete /// public bool OldR; } /// - /// TSR Feature (0042h) + /// TSR Feature (0042h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1709,21 +1709,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0042 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// HD DVD Read Feature (0050h) + /// HD DVD Read Feature (0050h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1731,29 +1731,29 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0050 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can read HD DVD-R + /// Can read HD DVD-R /// public bool HDDVDR; /// - /// Can read HD DVD-RAM + /// Can read HD DVD-RAM /// public bool HDDVDRAM; } /// - /// HD DVD Write Feature (0051h) + /// HD DVD Write Feature (0051h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1761,29 +1761,29 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0051 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Can write HD DVD-R + /// Can write HD DVD-R /// public bool HDDVDR; /// - /// Can write HD DVD-RAM + /// Can write HD DVD-RAM /// public bool HDDVDRAM; } /// - /// Hybrid Disc Feature (0080h) + /// Hybrid Disc Feature (0080h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1791,25 +1791,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0080 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Reset immunity + /// Reset immunity /// public bool RI; } /// - /// Power Management Feature (0100h) + /// Power Management Feature (0100h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1817,21 +1817,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0100 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// S.M.A.R.T. Feature (0101h) + /// S.M.A.R.T. Feature (0101h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1839,25 +1839,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0101 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Mode Page 1Ch is present + /// Mode Page 1Ch is present /// public bool PP; } /// - /// Embedded Changer Feature (0102h) + /// Embedded Changer Feature (0102h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1865,33 +1865,33 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0102 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Side change capable + /// Side change capable /// public bool SCC; /// - /// Supports Disc Present + /// Supports Disc Present /// public bool SDP; /// - /// Number of slots - 1 + /// Number of slots - 1 /// public byte HighestSlotNumber; } /// - /// CD Audio External Play Feature (0103h) + /// CD Audio External Play Feature (0103h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1899,37 +1899,37 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0103 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports SCAN command + /// Supports SCAN command /// public bool Scan; /// - /// Separate Channel Mute + /// Separate Channel Mute /// public bool SCM; /// - /// Separate Volume + /// Separate Volume /// public bool SV; /// - /// Number of volume levels + /// Number of volume levels /// public ushort VolumeLevels; } /// - /// Microcode Upgrade Feature (0104h) + /// Microcode Upgrade Feature (0104h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1937,25 +1937,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0104 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports validating 5-bit mode field of READ BUFFER and WRITE BUFFER commands. + /// Supports validating 5-bit mode field of READ BUFFER and WRITE BUFFER commands. /// public bool M5; } /// - /// Time-Out Feature (0105h) + /// Time-Out Feature (0105h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1963,29 +1963,29 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0105 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports G3Enable bit and Group3 Timeout field in Mode Page 1Dh + /// Supports G3Enable bit and Group3 Timeout field in Mode Page 1Dh /// public bool Group3; /// - /// Indicates a unit of block length, in sectors, corresponding to increase a unit of Group 3 time unit + /// Indicates a unit of block length, in sectors, corresponding to increase a unit of Group 3 time unit /// public ushort UnitLength; } /// - /// DVD-CSS Feature (0106h) + /// DVD-CSS Feature (0106h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -1993,25 +1993,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0106 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// CSS version + /// CSS version /// public byte CSSVersion; } /// - /// Real Time Streaming Feature (0107h) + /// Real Time Streaming Feature (0107h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2019,45 +2019,45 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0107 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports Set Minimum Performance bit in SET STREAMING + /// Supports Set Minimum Performance bit in SET STREAMING /// public bool SMP; /// - /// Supports READ BUFFER CAPACITY with block bit set + /// Supports READ BUFFER CAPACITY with block bit set /// public bool RBCB; /// - /// Supports SET CD SPEED + /// Supports SET CD SPEED /// public bool SCS; /// - /// Has Mode Page 2Ah with Speed Performance Descriptors + /// Has Mode Page 2Ah with Speed Performance Descriptors /// public bool MP2A; /// - /// Supports type 03h of GET PERFORMANCE + /// Supports type 03h of GET PERFORMANCE /// public bool WSPD; /// - /// Supports stream recording + /// Supports stream recording /// public bool SW; } /// - /// Drive serial number (0108h) + /// Drive serial number (0108h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2065,25 +2065,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0108 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Drive serial number + /// Drive serial number /// public string Serial; } /// - /// Media Serial Number Feature (0109h) + /// Media Serial Number Feature (0109h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2091,21 +2091,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0109 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// Disc Control Blocks Feature (010Ah) + /// Disc Control Blocks Feature (010Ah) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2113,22 +2113,22 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_010A { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; public uint[] DCBs; } /// - /// DVD CPRM Feature (010Bh) + /// DVD CPRM Feature (010Bh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2136,25 +2136,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_010B { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// CPRM version + /// CPRM version /// public byte CPRMVersion; } /// - /// Firmware Information Feature (010Ch) + /// Firmware Information Feature (010Ch) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2162,15 +2162,15 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_010C { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; public ushort Century; @@ -2183,7 +2183,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC } /// - /// AACS Feature (010Dh) + /// AACS Feature (010Dh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2191,53 +2191,53 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_010D { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Drive supports reading drive certificate + /// Drive supports reading drive certificate /// public bool RDC; /// - /// Drive can read media key block of CPRM + /// Drive can read media key block of CPRM /// public bool RMC; /// - /// Drive can write bus encrypted blocks + /// Drive can write bus encrypted blocks /// public bool WBE; /// - /// Drive supports bus encryption + /// Drive supports bus encryption /// public bool BEC; /// - /// Drive supports generating the binding nonce + /// Drive supports generating the binding nonce /// public bool BNG; /// - /// Blocks required to store the binding nonce for the media + /// Blocks required to store the binding nonce for the media /// public byte BindNonceBlocks; /// - /// Maximum number of AGIDs supported concurrently + /// Maximum number of AGIDs supported concurrently /// public byte AGIDs; /// - /// AACS version + /// AACS version /// public byte AACSVersion; } /// - /// DVD CSS Managed Recording Feature (010Eh) + /// DVD CSS Managed Recording Feature (010Eh) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2245,25 +2245,25 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_010E { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Maximum number of Scramble Extent information entries in a single SEND DISC STRUCTURE + /// Maximum number of Scramble Extent information entries in a single SEND DISC STRUCTURE /// public byte MaxScrambleExtent; } /// - /// SecurDisc Feature (0113h) + /// SecurDisc Feature (0113h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2271,21 +2271,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0113 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } /// - /// OSSC Feature (0142h) + /// OSSC Feature (0142h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2293,34 +2293,34 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0142 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; /// - /// Supports PSA updates on write-once media + /// Supports PSA updates on write-once media /// public bool PSAU; /// - /// Supports linked OSPBs + /// Supports linked OSPBs /// public bool LOSPB; /// - /// Restricted to recording only OSSC disc format + /// Restricted to recording only OSSC disc format /// public bool ME; public ushort[] Profiles; } /// - /// VCPS Feature (0110h) + /// VCPS Feature (0110h) /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -2328,15 +2328,15 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct Feature_0110 { /// - /// Feature version + /// Feature version /// public byte Version; /// - /// Feature is persistent + /// Feature is persistent /// public bool Persistent; /// - /// Feature is currently in use + /// Feature is currently in use /// public bool Current; } @@ -5344,25 +5344,6 @@ namespace DiscImageChef.Decoders.SCSI.MMC return Prettify_0142(Decode_0142(feature)); } - [SuppressMessage("ReSharper", "InconsistentNaming")] - [SuppressMessage("ReSharper", "MemberCanBeInternal")] - [SuppressMessage("ReSharper", "NotAccessedField.Global")] - public struct FeatureDescriptor - { - public ushort Code; - public byte[] Data; - } - - [SuppressMessage("ReSharper", "InconsistentNaming")] - [SuppressMessage("ReSharper", "MemberCanBeInternal")] - [SuppressMessage("ReSharper", "NotAccessedField.Global")] - public struct SeparatedFeatures - { - public uint DataLength; - public ushort CurrentProfile; - public FeatureDescriptor[] Descriptors; - } - public static SeparatedFeatures Separate(byte[] response) { SeparatedFeatures dec = new SeparatedFeatures @@ -5391,5 +5372,24 @@ namespace DiscImageChef.Decoders.SCSI.MMC return dec; } + + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] + public struct FeatureDescriptor + { + public ushort Code; + public byte[] Data; + } + + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] + public struct SeparatedFeatures + { + public uint DataLength; + public ushort CurrentProfile; + public FeatureDescriptor[] Descriptors; + } } } \ No newline at end of file diff --git a/SCSI/MMC/Hybrid.cs b/SCSI/MMC/Hybrid.cs index 633e54f..2756e9e 100644 --- a/SCSI/MMC/Hybrid.cs +++ b/SCSI/MMC/Hybrid.cs @@ -37,19 +37,19 @@ using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,48 +60,48 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct RecognizedFormatLayers { /// - /// Bytes 0 to 1 - /// Data Length + /// Bytes 0 to 1 + /// Data Length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4 - /// Number of format layers in hybrid disc identified by drive + /// Byte 4 + /// Number of format layers in hybrid disc identified by drive /// public byte NumberOfLayers; /// - /// Byte 5, bits 7 to 6 - /// Reserved + /// Byte 5, bits 7 to 6 + /// Reserved /// public byte Reserved3; /// - /// Byte 5, bits 5 to 4 - /// Layer no. used when disc is inserted + /// Byte 5, bits 5 to 4 + /// Layer no. used when disc is inserted /// public byte DefaultFormatLayer; /// - /// Byte 5, bits 3 to 2 - /// Reserved + /// Byte 5, bits 3 to 2 + /// Reserved /// public byte Reserved4; /// - /// Byte 5, bits 1 to 0 - /// Layer no. currently in use + /// Byte 5, bits 1 to 0 + /// Layer no. currently in use /// public byte OnlineFormatLayer; /// - /// Bytes 6 to end - /// Recognized format layers + /// Bytes 6 to end + /// Recognized format layers /// public ushort[] FormatLayers; } @@ -127,7 +127,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC decoded.FormatLayers = new ushort[(FormatLayersResponse.Length - 6) / 2]; - for(int i = 0; i < (FormatLayersResponse.Length - 6) / 2; i++) decoded.FormatLayers[i] = BigEndianBitConverter.ToUInt16(FormatLayersResponse, i * 2 + 6); + for(int i = 0; i < (FormatLayersResponse.Length - 6) / 2; i++) + decoded.FormatLayers[i] = BigEndianBitConverter.ToUInt16(FormatLayersResponse, i * 2 + 6); return decoded; } diff --git a/SCSI/MMC/WriteProtect.cs b/SCSI/MMC/WriteProtect.cs index 0ac4b2f..1ad0fed 100644 --- a/SCSI/MMC/WriteProtect.cs +++ b/SCSI/MMC/WriteProtect.cs @@ -37,19 +37,19 @@ using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC { /// - /// Information from the following standards: - /// ANSI X3.304-1997 - /// T10/1048-D revision 9.0 - /// T10/1048-D revision 10a - /// T10/1228-D revision 7.0c - /// T10/1228-D revision 11a - /// T10/1363-D revision 10g - /// T10/1545-D revision 1d - /// T10/1545-D revision 5 - /// T10/1545-D revision 5a - /// T10/1675-D revision 2c - /// T10/1675-D revision 4 - /// T10/1836-D revision 2g + /// Information from the following standards: + /// ANSI X3.304-1997 + /// T10/1048-D revision 9.0 + /// T10/1048-D revision 10a + /// T10/1228-D revision 7.0c + /// T10/1228-D revision 11a + /// T10/1363-D revision 10g + /// T10/1545-D revision 1d + /// T10/1545-D revision 5 + /// T10/1545-D revision 5a + /// T10/1675-D revision 2c + /// T10/1675-D revision 4 + /// T10/1836-D revision 2g /// [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "MemberCanBeInternal")] @@ -60,58 +60,58 @@ namespace DiscImageChef.Decoders.SCSI.MMC public struct WriteProtectionStatus { /// - /// Bytes 0 to 1 - /// Data Length + /// Bytes 0 to 1 + /// Data Length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Byte 4, bits 7 to 4 - /// Reserved + /// Byte 4, bits 7 to 4 + /// Reserved /// public byte Reserved3; /// - /// Byte 4, bit 3 - /// Writing inhibited by media specific reason + /// Byte 4, bit 3 + /// Writing inhibited by media specific reason /// public bool MSWI; /// - /// Byte 4, bit 2 - /// Cartridge sets write protection + /// Byte 4, bit 2 + /// Cartridge sets write protection /// public bool CWP; /// - /// Byte 4, bit 1 - /// Media surface sets write protection + /// Byte 4, bit 1 + /// Media surface sets write protection /// public bool PWP; /// - /// Byte 4, bit 0 - /// Software write protection until power down + /// Byte 4, bit 0 + /// Software write protection until power down /// public bool SWPP; /// - /// Byte 5 - /// Reserved + /// Byte 5 + /// Reserved /// public byte Reserved4; /// - /// Byte 6 - /// Reserved + /// Byte 6 + /// Reserved /// public byte Reserved5; /// - /// Byte 7 - /// Reserved + /// Byte 7 + /// Reserved /// public byte Reserved6; } diff --git a/SCSI/Modes/00_SFF.cs b/SCSI/Modes/00_SFF.cs index 0610196..d03542e 100644 --- a/SCSI/Modes/00_SFF.cs +++ b/SCSI/Modes/00_SFF.cs @@ -42,30 +42,30 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x00: Drive Operation Mode page /// - /// Drive Operation Mode page - /// Page code 0x00 - /// 4 bytes in INF-8070 + /// Drive Operation Mode page + /// Page code 0x00 + /// 4 bytes in INF-8070 /// public struct ModePage_00_SFF { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Select LUN Mode + /// Select LUN Mode /// public bool SLM; /// - /// Select LUN for rewritable + /// Select LUN for rewritable /// public bool SLR; /// - /// Disable verify for WRITE + /// Disable verify for WRITE /// public bool DVW; /// - /// Disable deferred error + /// Disable deferred error /// public bool DDE; } diff --git a/SCSI/Modes/01.cs b/SCSI/Modes/01.cs index af79ce5..4b84e6f 100644 --- a/SCSI/Modes/01.cs +++ b/SCSI/Modes/01.cs @@ -42,75 +42,75 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x01: Read-write error recovery page /// - /// Disconnect-reconnect page - /// Page code 0x01 - /// 12 bytes in SCSI-2, SBC-1, SBC-2 + /// Disconnect-reconnect page + /// Page code 0x01 + /// 12 bytes in SCSI-2, SBC-1, SBC-2 /// public struct ModePage_01 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Automatic Write Reallocation Enabled + /// Automatic Write Reallocation Enabled /// public bool AWRE; /// - /// Automatic Read Reallocation Enabled + /// Automatic Read Reallocation Enabled /// public bool ARRE; /// - /// Transfer block + /// Transfer block /// public bool TB; /// - /// Read continuous + /// Read continuous /// public bool RC; /// - /// Enable early recovery + /// Enable early recovery /// public bool EER; /// - /// Post error reporting + /// Post error reporting /// public bool PER; /// - /// Disable transfer on error + /// Disable transfer on error /// public bool DTE; /// - /// Disable correction + /// Disable correction /// public bool DCR; /// - /// How many times to retry a read operation + /// How many times to retry a read operation /// public byte ReadRetryCount; /// - /// How many bits of largest data burst error is maximum to apply error correction on it + /// How many bits of largest data burst error is maximum to apply error correction on it /// public byte CorrectionSpan; /// - /// Offset to move the heads + /// Offset to move the heads /// public sbyte HeadOffsetCount; /// - /// Incremental position to which the recovered data strobe shall be adjusted + /// Incremental position to which the recovered data strobe shall be adjusted /// public sbyte DataStrobeOffsetCount; /// - /// How many times to retry a write operation + /// How many times to retry a write operation /// public byte WriteRetryCount; /// - /// Maximum time in ms to use in data error recovery procedures + /// Maximum time in ms to use in data error recovery procedures /// public ushort RecoveryTimeLimit; /// - /// Logical block provisioning error reporting is enabled + /// Logical block provisioning error reporting is enabled /// public bool LBPERE; } @@ -189,37 +189,38 @@ namespace DiscImageChef.Decoders.SCSI return sb.ToString(); } #endregion Mode Page 0x01: Read-write error recovery page - public static byte[] EncodeModePage_01(ModePage_01 page) - { - byte[] pg = new byte[8]; - pg[0] = 0x01; - pg[1] = 6; + public static byte[] EncodeModePage_01(ModePage_01 page) + { + byte[] pg = new byte[8]; - if(page.PS) pg[0] += 0x80; - if(page.AWRE) pg[2] += 0x80; - if(page.ARRE) pg[2] += 0x40; - if(page.TB) pg[2] += 0x20; - if(page.RC) pg[2] += 0x10; - if(page.EER) pg[2] += 0x08; - if(page.PER) pg[2] += 0x04; - if(page.DTE) pg[2] += 0x02; - if(page.DCR) pg[2] += 0x01; + pg[0] = 0x01; + pg[1] = 6; - pg[3] = page.ReadRetryCount; - pg[4] = page.CorrectionSpan; - pg[5] = (byte)page.HeadOffsetCount; - pg[6] = (byte)page.DataStrobeOffsetCount; + if(page.PS) pg[0] += 0x80; + if(page.AWRE) pg[2] += 0x80; + if(page.ARRE) pg[2] += 0x40; + if(page.TB) pg[2] += 0x20; + if(page.RC) pg[2] += 0x10; + if(page.EER) pg[2] += 0x08; + if(page.PER) pg[2] += 0x04; + if(page.DTE) pg[2] += 0x02; + if(page.DCR) pg[2] += 0x01; - // This is from a newer version of SCSI unknown what happen for drives expecting an 8 byte page - /* - pg[8] = page.WriteRetryCount; - if (page.LBPERE) - pg[7] += 0x80; - pg[10] = (byte)((page.RecoveryTimeLimit & 0xFF00) << 8); - pg[11] = (byte)(page.RecoveryTimeLimit & 0xFF);*/ + pg[3] = page.ReadRetryCount; + pg[4] = page.CorrectionSpan; + pg[5] = (byte)page.HeadOffsetCount; + pg[6] = (byte)page.DataStrobeOffsetCount; - return pg; - } + // This is from a newer version of SCSI unknown what happen for drives expecting an 8 byte page + /* + pg[8] = page.WriteRetryCount; + if (page.LBPERE) + pg[7] += 0x80; + pg[10] = (byte)((page.RecoveryTimeLimit & 0xFF00) << 8); + pg[11] = (byte)(page.RecoveryTimeLimit & 0xFF);*/ + + return pg; + } } } \ No newline at end of file diff --git a/SCSI/Modes/01_MMC.cs b/SCSI/Modes/01_MMC.cs index 8aa632a..fc750aa 100644 --- a/SCSI/Modes/01_MMC.cs +++ b/SCSI/Modes/01_MMC.cs @@ -42,31 +42,31 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x01: Read error recovery page for MultiMedia Devices /// - /// Read error recovery page for MultiMedia Devices - /// Page code 0x01 - /// 8 bytes in SCSI-2, MMC-1 - /// 12 bytes in MMC-2, MMC-3 + /// Read error recovery page for MultiMedia Devices + /// Page code 0x01 + /// 8 bytes in SCSI-2, MMC-1 + /// 12 bytes in MMC-2, MMC-3 /// public struct ModePage_01_MMC { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Error recovery parameter + /// Error recovery parameter /// public byte Parameter; /// - /// How many times to retry a read operation + /// How many times to retry a read operation /// public byte ReadRetryCount; /// - /// How many times to retry a write operation + /// How many times to retry a write operation /// public byte WriteRetryCount; /// - /// Maximum time in ms to use in data error recovery procedures + /// Maximum time in ms to use in data error recovery procedures /// public ushort RecoveryTimeLimit; } @@ -195,24 +195,25 @@ namespace DiscImageChef.Decoders.SCSI return sb.ToString(); } #endregion Mode Page 0x01: Read error recovery page for MultiMedia Devices - public static byte[] EncodeModePage_01_MMC(ModePage_01_MMC page) - { - byte[] pg = new byte[12]; - pg[0] = 0x01; - pg[1] = 10; + public static byte[] EncodeModePage_01_MMC(ModePage_01_MMC page) + { + byte[] pg = new byte[12]; - if(page.PS) pg[0] += 0x80; - pg[2] = page.Parameter; - pg[3] = page.ReadRetryCount; + pg[0] = 0x01; + pg[1] = 10; - // This is from a newer version of SCSI unknown what happen for drives expecting an 8 byte page + if(page.PS) pg[0] += 0x80; + pg[2] = page.Parameter; + pg[3] = page.ReadRetryCount; - pg[8] = page.WriteRetryCount; - pg[10] = (byte)((page.RecoveryTimeLimit & 0xFF00) << 8); - pg[11] = (byte)(page.RecoveryTimeLimit & 0xFF); + // This is from a newer version of SCSI unknown what happen for drives expecting an 8 byte page - return pg; - } + pg[8] = page.WriteRetryCount; + pg[10] = (byte)((page.RecoveryTimeLimit & 0xFF00) << 8); + pg[11] = (byte)(page.RecoveryTimeLimit & 0xFF); + + return pg; + } } } \ No newline at end of file diff --git a/SCSI/Modes/02.cs b/SCSI/Modes/02.cs index ae05812..84e2d73 100644 --- a/SCSI/Modes/02.cs +++ b/SCSI/Modes/02.cs @@ -42,59 +42,60 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x02: Disconnect-reconnect page /// - /// Disconnect-reconnect page - /// Page code 0x02 - /// 16 bytes in SCSI-2, SPC-1, SPC-2, SPC-3, SPC-4, SPC-5 + /// Disconnect-reconnect page + /// Page code 0x02 + /// 16 bytes in SCSI-2, SPC-1, SPC-2, SPC-3, SPC-4, SPC-5 /// public struct ModePage_02 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// How full should be the buffer prior to attempting a reselection + /// How full should be the buffer prior to attempting a reselection /// public byte BufferFullRatio; /// - /// How empty should be the buffer prior to attempting a reselection + /// How empty should be the buffer prior to attempting a reselection /// public byte BufferEmptyRatio; /// - /// Max. time in 100 µs increments that the target is permitted to assert BSY without a REQ/ACK + /// Max. time in 100 µs increments that the target is permitted to assert BSY without a REQ/ACK /// public ushort BusInactivityLimit; /// - /// Min. time in 100 µs increments to wait after releasing the bus before attempting reselection + /// Min. time in 100 µs increments to wait after releasing the bus before attempting reselection /// public ushort DisconnectTimeLimit; /// - /// Max. time in 100 µs increments allowed to use the bus before disconnecting, if granted the privilege and not restricted by + /// Max. time in 100 µs increments allowed to use the bus before disconnecting, if granted the privilege and not + /// restricted by /// public ushort ConnectTimeLimit; /// - /// Maximum amount of data before disconnecting in 512 bytes increments + /// Maximum amount of data before disconnecting in 512 bytes increments /// public ushort MaxBurstSize; /// - /// Data transfer disconnect control + /// Data transfer disconnect control /// public byte DTDC; /// - /// Target shall not transfer data for a command during the same interconnect tenancy + /// Target shall not transfer data for a command during the same interconnect tenancy /// public bool DIMM; /// - /// Wether to use fair or unfair arbitration when requesting an interconnect tenancy + /// Wether to use fair or unfair arbitration when requesting an interconnect tenancy /// public byte FairArbitration; /// - /// Max. ammount of data in 512 bytes increments that may be transferred for a command along with the command + /// Max. ammount of data in 512 bytes increments that may be transferred for a command along with the command /// public ushort FirstBurstSize; /// - /// Target is allowed to re-order the data transfer + /// Target is allowed to re-order the data transfer /// public bool EMDP; } diff --git a/SCSI/Modes/03.cs b/SCSI/Modes/03.cs index bb241ce..3e1636a 100644 --- a/SCSI/Modes/03.cs +++ b/SCSI/Modes/03.cs @@ -42,67 +42,67 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x03: Format device page /// - /// Disconnect-reconnect page - /// Page code 0x03 - /// 24 bytes in SCSI-2, SBC-1 + /// Disconnect-reconnect page + /// Page code 0x03 + /// 24 bytes in SCSI-2, SBC-1 /// public struct ModePage_03 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Tracks per zone to use in dividing the capacity for the purpose of allocating alternate sectors + /// Tracks per zone to use in dividing the capacity for the purpose of allocating alternate sectors /// public ushort TracksPerZone; /// - /// Number of sectors per zone that shall be reserved for defect handling + /// Number of sectors per zone that shall be reserved for defect handling /// public ushort AltSectorsPerZone; /// - /// Number of tracks per zone that shall be reserved for defect handling + /// Number of tracks per zone that shall be reserved for defect handling /// public ushort AltTracksPerZone; /// - /// Number of tracks per LUN that shall be reserved for defect handling + /// Number of tracks per LUN that shall be reserved for defect handling /// public ushort AltTracksPerLun; /// - /// Number of physical sectors per track + /// Number of physical sectors per track /// public ushort SectorsPerTrack; /// - /// Bytes per physical sector + /// Bytes per physical sector /// public ushort BytesPerSector; /// - /// Interleave value, target dependent + /// Interleave value, target dependent /// public ushort Interleave; /// - /// Sectors between last block of one track and first block of the next + /// Sectors between last block of one track and first block of the next /// public ushort TrackSkew; /// - /// Sectors between last block of a cylinder and first block of the next one + /// Sectors between last block of a cylinder and first block of the next one /// public ushort CylinderSkew; /// - /// Soft-sectored + /// Soft-sectored /// public bool SSEC; /// - /// Hard-sectored + /// Hard-sectored /// public bool HSEC; /// - /// Removable + /// Removable /// public bool RMB; /// - /// If set, address are allocated progressively in a surface before going to the next. - /// Otherwise, it goes by cylinders + /// If set, address are allocated progressively in a surface before going to the next. + /// Otherwise, it goes by cylinders /// public bool SURF; } diff --git a/SCSI/Modes/04.cs b/SCSI/Modes/04.cs index 6a654b7..60bec2d 100644 --- a/SCSI/Modes/04.cs +++ b/SCSI/Modes/04.cs @@ -42,50 +42,50 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x04: Rigid disk drive geometry page /// - /// Disconnect-reconnect page - /// Page code 0x04 - /// 24 bytes in SCSI-2, SBC-1 + /// Disconnect-reconnect page + /// Page code 0x04 + /// 24 bytes in SCSI-2, SBC-1 /// public struct ModePage_04 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Cylinders used for data storage + /// Cylinders used for data storage /// public uint Cylinders; /// - /// Heads for reading and/or writing + /// Heads for reading and/or writing /// public byte Heads; /// - /// Cylinder where write precompensation starts + /// Cylinder where write precompensation starts /// public uint WritePrecompCylinder; /// - /// Cylinder where write current reduction starts + /// Cylinder where write current reduction starts /// public uint WriteReduceCylinder; /// - /// Step rate in 100 ns units + /// Step rate in 100 ns units /// public ushort DriveStepRate; /// - /// Cylinder where the heads park + /// Cylinder where the heads park /// public int LandingCylinder; /// - /// Rotational position locking + /// Rotational position locking /// public byte RPL; /// - /// Rotational skew to apply when synchronized + /// Rotational skew to apply when synchronized /// public byte RotationalOffset; /// - /// Medium speed in rpm + /// Medium speed in rpm /// public ushort MediumRotationRate; } diff --git a/SCSI/Modes/05.cs b/SCSI/Modes/05.cs index f81a9d9..3e7badb 100644 --- a/SCSI/Modes/05.cs +++ b/SCSI/Modes/05.cs @@ -42,115 +42,115 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x05: Flexible disk page /// - /// Disconnect-reconnect page - /// Page code 0x05 - /// 32 bytes in SCSI-2, SBC-1 + /// Disconnect-reconnect page + /// Page code 0x05 + /// 32 bytes in SCSI-2, SBC-1 /// public struct ModePage_05 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Data rate of peripheral device on kbit/s + /// Data rate of peripheral device on kbit/s /// public ushort TransferRate; /// - /// Heads for reading and/or writing + /// Heads for reading and/or writing /// public byte Heads; /// - /// Sectors per revolution per head + /// Sectors per revolution per head /// public byte SectorsPerTrack; /// - /// Bytes of data per sector + /// Bytes of data per sector /// public ushort BytesPerSector; /// - /// Cylinders used for data storage + /// Cylinders used for data storage /// public ushort Cylinders; /// - /// Cylinder where write precompensation starts + /// Cylinder where write precompensation starts /// public ushort WritePrecompCylinder; /// - /// Cylinder where write current reduction starts + /// Cylinder where write current reduction starts /// public ushort WriteReduceCylinder; /// - /// Step rate in 100 μs units + /// Step rate in 100 μs units /// public ushort DriveStepRate; /// - /// Width of step pulse in μs + /// Width of step pulse in μs /// public byte DriveStepPulse; /// - /// Head settle time in 100 μs units + /// Head settle time in 100 μs units /// public ushort HeadSettleDelay; /// - /// If is true, specified in 1/10s of a - /// second the time waiting for read status before aborting medium - /// access. Otherwise, indicates time to way before medimum access - /// after motor on signal is asserted. + /// If is true, specified in 1/10s of a + /// second the time waiting for read status before aborting medium + /// access. Otherwise, indicates time to way before medimum access + /// after motor on signal is asserted. /// public byte MotorOnDelay; /// - /// Time in 1/10s of a second to wait before releasing the motor on - /// signal after an idle condition. 0xFF means to never release the - /// signal + /// Time in 1/10s of a second to wait before releasing the motor on + /// signal after an idle condition. 0xFF means to never release the + /// signal /// public byte MotorOffDelay; /// - /// Specifies if a signal indicates that the medium is ready to be accessed + /// Specifies if a signal indicates that the medium is ready to be accessed /// public bool TRDY; /// - /// If true sectors start with one. Otherwise, they start with zero. + /// If true sectors start with one. Otherwise, they start with zero. /// public bool SSN; /// - /// If true specifies that motor on shall remain released. + /// If true specifies that motor on shall remain released. /// public bool MO; /// - /// Number of additional step pulses per cylinder. + /// Number of additional step pulses per cylinder. /// public byte SPC; /// - /// Write compensation value + /// Write compensation value /// public byte WriteCompensation; /// - /// Head loading time in ms. + /// Head loading time in ms. /// public byte HeadLoadDelay; /// - /// Head unloading time in ms. + /// Head unloading time in ms. /// public byte HeadUnloadDelay; /// - /// Description of shugart's bus pin 34 usage + /// Description of shugart's bus pin 34 usage /// public byte Pin34; /// - /// Description of shugart's bus pin 2 usage + /// Description of shugart's bus pin 2 usage /// public byte Pin2; /// - /// Description of shugart's bus pin 4 usage + /// Description of shugart's bus pin 4 usage /// public byte Pin4; /// - /// Description of shugart's bus pin 1 usage + /// Description of shugart's bus pin 1 usage /// public byte Pin1; /// - /// Medium speed in rpm + /// Medium speed in rpm /// public ushort MediumRotationRate; } diff --git a/SCSI/Modes/06.cs b/SCSI/Modes/06.cs index 51f443f..2de55c0 100644 --- a/SCSI/Modes/06.cs +++ b/SCSI/Modes/06.cs @@ -40,61 +40,61 @@ namespace DiscImageChef.Decoders.SCSI [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { - #region Mode Page 0x06: Optical memory page - /// - /// Optical memory page - /// Page code 0x06 - /// 4 bytes in SCSI-2 - /// - public struct ModePage_06 - { + #region Mode Page 0x06: Optical memory page /// - /// Parameters can be saved + /// Optical memory page + /// Page code 0x06 + /// 4 bytes in SCSI-2 /// - public bool PS; - /// - /// Report updated block read - /// - public bool RUBR; - } + public struct ModePage_06 + { + /// + /// Parameters can be saved + /// + public bool PS; + /// + /// Report updated block read + /// + public bool RUBR; + } - public static ModePage_06? DecodeModePage_06(byte[] pageResponse) - { - if((pageResponse?[0] & 0x40) == 0x40) return null; + public static ModePage_06? DecodeModePage_06(byte[] pageResponse) + { + if((pageResponse?[0] & 0x40) == 0x40) return null; - if((pageResponse?[0] & 0x3F) != 0x06) return null; + if((pageResponse?[0] & 0x3F) != 0x06) return null; - if(pageResponse[1] + 2 != pageResponse.Length) return null; + if(pageResponse[1] + 2 != pageResponse.Length) return null; - if(pageResponse.Length < 4) return null; + if(pageResponse.Length < 4) return null; - ModePage_06 decoded = new ModePage_06(); + ModePage_06 decoded = new ModePage_06(); - decoded.PS |= (pageResponse[0] & 0x80) == 0x80; - decoded.RUBR |= (pageResponse[2] & 0x01) == 0x01; + decoded.PS |= (pageResponse[0] & 0x80) == 0x80; + decoded.RUBR |= (pageResponse[2] & 0x01) == 0x01; - return decoded; - } + return decoded; + } - public static string PrettifyModePage_06(byte[] pageResponse) - { - return PrettifyModePage_06(DecodeModePage_06(pageResponse)); - } + public static string PrettifyModePage_06(byte[] pageResponse) + { + return PrettifyModePage_06(DecodeModePage_06(pageResponse)); + } - public static string PrettifyModePage_06(ModePage_06? modePage) - { - if(!modePage.HasValue) return null; + public static string PrettifyModePage_06(ModePage_06? modePage) + { + if(!modePage.HasValue) return null; - ModePage_06 page = modePage.Value; - StringBuilder sb = new StringBuilder(); + ModePage_06 page = modePage.Value; + StringBuilder sb = new StringBuilder(); - sb.AppendLine("SCSI optical memory:"); + sb.AppendLine("SCSI optical memory:"); - if(page.PS) sb.AppendLine("\tParameters can be saved"); - if(page.RUBR) sb.AppendLine("\tOn reading an updated block drive will return RECOVERED ERROR"); + if(page.PS) sb.AppendLine("\tParameters can be saved"); + if(page.RUBR) sb.AppendLine("\tOn reading an updated block drive will return RECOVERED ERROR"); - return sb.ToString(); - } - #endregion Mode Page 0x06: Optical memory page + return sb.ToString(); + } + #endregion Mode Page 0x06: Optical memory page } } \ No newline at end of file diff --git a/SCSI/Modes/07.cs b/SCSI/Modes/07.cs index cf0c172..7ca4d38 100644 --- a/SCSI/Modes/07.cs +++ b/SCSI/Modes/07.cs @@ -43,42 +43,42 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x07: Verify error recovery page /// - /// Disconnect-reconnect page - /// Page code 0x07 - /// 12 bytes in SCSI-2, SBC-1, SBC-2 + /// Disconnect-reconnect page + /// Page code 0x07 + /// 12 bytes in SCSI-2, SBC-1, SBC-2 /// public struct ModePage_07 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Enable early recovery + /// Enable early recovery /// public bool EER; /// - /// Post error reporting + /// Post error reporting /// public bool PER; /// - /// Disable transfer on error + /// Disable transfer on error /// public bool DTE; /// - /// Disable correction + /// Disable correction /// public bool DCR; /// - /// How many times to retry a verify operation + /// How many times to retry a verify operation /// public byte VerifyRetryCount; /// - /// How many bits of largest data burst error is maximum to apply error correction on it + /// How many bits of largest data burst error is maximum to apply error correction on it /// public byte CorrectionSpan; /// - /// Maximum time in ms to use in data error recovery procedures + /// Maximum time in ms to use in data error recovery procedures /// public ushort RecoveryTimeLimit; } diff --git a/SCSI/Modes/07_MMC.cs b/SCSI/Modes/07_MMC.cs index 48bc929..8a3e802 100644 --- a/SCSI/Modes/07_MMC.cs +++ b/SCSI/Modes/07_MMC.cs @@ -42,22 +42,22 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x07: Verify error recovery page for MultiMedia Devices /// - /// Verify error recovery page for MultiMedia Devices - /// Page code 0x07 - /// 8 bytes in SCSI-2, MMC-1 + /// Verify error recovery page for MultiMedia Devices + /// Page code 0x07 + /// 8 bytes in SCSI-2, MMC-1 /// public struct ModePage_07_MMC { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Error recovery parameter + /// Error recovery parameter /// public byte Parameter; /// - /// How many times to retry a verify operation + /// How many times to retry a verify operation /// public byte VerifyRetryCount; } diff --git a/SCSI/Modes/08.cs b/SCSI/Modes/08.cs index 3141c59..84d5afc 100644 --- a/SCSI/Modes/08.cs +++ b/SCSI/Modes/08.cs @@ -42,96 +42,96 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x08: Caching page /// - /// Disconnect-reconnect page - /// Page code 0x08 - /// 12 bytes in SCSI-2 - /// 20 bytes in SBC-1, SBC-2, SBC-3 + /// Disconnect-reconnect page + /// Page code 0x08 + /// 12 bytes in SCSI-2 + /// 20 bytes in SBC-1, SBC-2, SBC-3 /// public struct ModePage_08 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// true if write cache is enabled + /// true if write cache is enabled /// public bool WCE; /// - /// Multiplication factor + /// Multiplication factor /// public bool MF; /// - /// true if read cache is enabled + /// true if read cache is enabled /// public bool RCD; /// - /// Advices on reading-cache retention priority + /// Advices on reading-cache retention priority /// public byte DemandReadRetentionPrio; /// - /// Advices on writing-cache retention priority + /// Advices on writing-cache retention priority /// public byte WriteRetentionPriority; /// - /// If requested read blocks are more than this, no pre-fetch is done + /// If requested read blocks are more than this, no pre-fetch is done /// public ushort DisablePreFetch; /// - /// Minimum pre-fetch + /// Minimum pre-fetch /// public ushort MinimumPreFetch; /// - /// Maximum pre-fetch + /// Maximum pre-fetch /// public ushort MaximumPreFetch; /// - /// Upper limit on maximum pre-fetch value + /// Upper limit on maximum pre-fetch value /// public ushort MaximumPreFetchCeiling; /// - /// Manual cache controlling + /// Manual cache controlling /// public bool IC; /// - /// Abort pre-fetch + /// Abort pre-fetch /// public bool ABPF; /// - /// Caching analysis permitted + /// Caching analysis permitted /// public bool CAP; /// - /// Pre-fetch over discontinuities + /// Pre-fetch over discontinuities /// public bool Disc; /// - /// is to be used to control caching segmentation + /// is to be used to control caching segmentation /// public bool Size; /// - /// Force sequential write + /// Force sequential write /// public bool FSW; /// - /// Logical block cache segment size + /// Logical block cache segment size /// public bool LBCSS; /// - /// Disable read-ahead + /// Disable read-ahead /// public bool DRA; /// - /// How many segments should the cache be divided upon + /// How many segments should the cache be divided upon /// public byte CacheSegments; /// - /// How many bytes should the cache be divided upon + /// How many bytes should the cache be divided upon /// public ushort CacheSegmentSize; /// - /// How many bytes should be used as a buffer when all other cached data cannot be evicted + /// How many bytes should be used as a buffer when all other cached data cannot be evicted /// public uint NonCacheSegmentSize; diff --git a/SCSI/Modes/0A.cs b/SCSI/Modes/0A.cs index 6eec37c..1c3064f 100644 --- a/SCSI/Modes/0A.cs +++ b/SCSI/Modes/0A.cs @@ -42,123 +42,125 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x0A: Control mode page /// - /// Control mode page - /// Page code 0x0A - /// 8 bytes in SCSI-2 - /// 12 bytes in SPC-1, SPC-2, SPC-3, SPC-4, SPC-5 + /// Control mode page + /// Page code 0x0A + /// 8 bytes in SCSI-2 + /// 12 bytes in SPC-1, SPC-2, SPC-3, SPC-4, SPC-5 /// public struct ModePage_0A { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// If set, target shall report log exception conditions + /// If set, target shall report log exception conditions /// public bool RLEC; /// - /// Queue algorithm modifier + /// Queue algorithm modifier /// public byte QueueAlgorithm; /// - /// If set all remaining suspended I/O processes shall be aborted after the contingent allegiance condition or extended contingent allegiance condition + /// If set all remaining suspended I/O processes shall be aborted after the contingent allegiance condition or extended + /// contingent allegiance condition /// public byte QErr; /// - /// Tagged queuing is disabled + /// Tagged queuing is disabled /// public bool DQue; /// - /// Extended Contingent Allegiance is enabled + /// Extended Contingent Allegiance is enabled /// public bool EECA; /// - /// Target may issue an asynchronous event notification upon completing its initialization + /// Target may issue an asynchronous event notification upon completing its initialization /// public bool RAENP; /// - /// Target may issue an asynchronous event notification instead of a unit attention condition + /// Target may issue an asynchronous event notification instead of a unit attention condition /// public bool UAAENP; /// - /// Target may issue an asynchronous event notification instead of a deferred error + /// Target may issue an asynchronous event notification instead of a deferred error /// public bool EAENP; /// - /// Minimum time in ms after initialization before attempting asynchronous event notifications + /// Minimum time in ms after initialization before attempting asynchronous event notifications /// public ushort ReadyAENHoldOffPeriod; /// - /// Global logging target save disabled + /// Global logging target save disabled /// public bool GLTSD; /// - /// CHECK CONDITION should be reported rather than a long busy condition + /// CHECK CONDITION should be reported rather than a long busy condition /// public bool RAC; /// - /// Software write protect is active + /// Software write protect is active /// public bool SWP; /// - /// Maximum time in 100 ms units allowed to remain busy. 0xFFFF == unlimited. + /// Maximum time in 100 ms units allowed to remain busy. 0xFFFF == unlimited. /// public ushort BusyTimeoutPeriod; /// - /// Task set type + /// Task set type /// public byte TST; /// - /// Tasks aborted by other initiator's actions should be terminated with TASK ABORTED + /// Tasks aborted by other initiator's actions should be terminated with TASK ABORTED /// public bool TAS; /// - /// Action to be taken when a medium is inserted + /// Action to be taken when a medium is inserted /// public byte AutoloadMode; /// - /// Time in seconds to complete an extended self-test + /// Time in seconds to complete an extended self-test /// public byte ExtendedSelfTestCompletionTime; /// - /// All tasks received in nexus with ACA ACTIVE is set and an ACA condition is established shall terminate + /// All tasks received in nexus with ACA ACTIVE is set and an ACA condition is established shall terminate /// public bool TMF_ONLY; /// - /// Device shall return descriptor format sense data when returning sense data in the same transactions as a CHECK CONDITION + /// Device shall return descriptor format sense data when returning sense data in the same transactions as a CHECK + /// CONDITION /// public bool D_SENSE; /// - /// Unit attention interlocks control + /// Unit attention interlocks control /// public byte UA_INTLCK_CTRL; /// - /// LOGICAL BLOCK APPLICATION TAG should not be modified + /// LOGICAL BLOCK APPLICATION TAG should not be modified /// public bool ATO; /// - /// Protector information checking is disabled + /// Protector information checking is disabled /// public bool DPICZ; /// - /// No unit attention on release + /// No unit attention on release /// public bool NUAR; /// - /// Application Tag mode page is enabled + /// Application Tag mode page is enabled /// public bool ATMPE; /// - /// Abort any write command without protection information + /// Abort any write command without protection information /// public bool RWWP; /// - /// Supportes block lengths and protection information + /// Supportes block lengths and protection information /// public bool SBLP; } @@ -355,40 +357,40 @@ namespace DiscImageChef.Decoders.SCSI #region Mode Page 0x0A subpage 0x01: Control Extension mode page /// - /// Control Extension mode page - /// Page code 0x0A - /// Subpage code 0x01 - /// 32 bytes in SPC-3, SPC-4, SPC-5 + /// Control Extension mode page + /// Page code 0x0A + /// Subpage code 0x01 + /// 32 bytes in SPC-3, SPC-4, SPC-5 /// public struct ModePage_0A_S01 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Timestamp outside this standard + /// Timestamp outside this standard /// public bool TCMOS; /// - /// SCSI precedence + /// SCSI precedence /// public bool SCSIP; /// - /// Implicit Asymmetric Logical Unit Access Enabled + /// Implicit Asymmetric Logical Unit Access Enabled /// public bool IALUAE; /// - /// Initial task priority + /// Initial task priority /// public byte InitialPriority; /// - /// Device life control disabled + /// Device life control disabled /// public bool DLC; /// - /// Maximum size of SENSE data in bytes + /// Maximum size of SENSE data in bytes /// public byte MaximumSenseLength; } @@ -455,5 +457,5 @@ namespace DiscImageChef.Decoders.SCSI return sb.ToString(); } #endregion Mode Page 0x0A subpage 0x01: Control Extension mode page - } + } } \ No newline at end of file diff --git a/SCSI/Modes/0B.cs b/SCSI/Modes/0B.cs index 63f6a75..0673c67 100644 --- a/SCSI/Modes/0B.cs +++ b/SCSI/Modes/0B.cs @@ -42,14 +42,14 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x0B: Medium types supported page /// - /// Disconnect-reconnect page - /// Page code 0x0B - /// 8 bytes in SCSI-2 + /// Disconnect-reconnect page + /// Page code 0x0B + /// 8 bytes in SCSI-2 /// public struct ModePage_0B { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public MediumTypes MediumType1; diff --git a/SCSI/Modes/0C.cs b/SCSI/Modes/0C.cs index 37e50bc..8393117 100644 --- a/SCSI/Modes/0C.cs +++ b/SCSI/Modes/0C.cs @@ -34,8 +34,8 @@ namespace DiscImageChef.Decoders.SCSI { public static partial class Modes { - #region Mode Page 0x0C: Notch page - // TODO: Implement this page - #endregion Mode Page 0x0C: Notch page + #region Mode Page 0x0C: Notch page + // TODO: Implement this page + #endregion Mode Page 0x0C: Notch page } } \ No newline at end of file diff --git a/SCSI/Modes/0D.cs b/SCSI/Modes/0D.cs index 3dc0fe3..9a52ead 100644 --- a/SCSI/Modes/0D.cs +++ b/SCSI/Modes/0D.cs @@ -42,26 +42,26 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x0D: CD-ROM parameteres page /// - /// CD-ROM parameteres page - /// Page code 0x0D - /// 8 bytes in SCSI-2, MMC-1, MMC-2, MMC-3 + /// CD-ROM parameteres page + /// Page code 0x0D + /// 8 bytes in SCSI-2, MMC-1, MMC-2, MMC-3 /// public struct ModePage_0D { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Time the drive shall remain in hold track state after seek or read + /// Time the drive shall remain in hold track state after seek or read /// public byte InactivityTimerMultiplier; /// - /// Seconds per Minute + /// Seconds per Minute /// public ushort SecondsPerMinute; /// - /// Frames per Second + /// Frames per Second /// public ushort FramesPerSecond; } diff --git a/SCSI/Modes/0E.cs b/SCSI/Modes/0E.cs index 0a21ad7..404a571 100644 --- a/SCSI/Modes/0E.cs +++ b/SCSI/Modes/0E.cs @@ -42,66 +42,66 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x0E: CD-ROM audio control parameters page /// - /// CD-ROM audio control parameters - /// Page code 0x0E - /// 16 bytes in SCSI-2, MMC-1, MMC-2, MMC-3 + /// CD-ROM audio control parameters + /// Page code 0x0E + /// 16 bytes in SCSI-2, MMC-1, MMC-2, MMC-3 /// public struct ModePage_0E { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Return status as soon as playback operation starts + /// Return status as soon as playback operation starts /// public bool Immed; /// - /// Stop on track crossing + /// Stop on track crossing /// public bool SOTC; /// - /// Indicates is valid + /// Indicates is valid /// public bool APRVal; /// - /// Multiplier for + /// Multiplier for /// public byte LBAFormat; /// - /// LBAs per second of audio + /// LBAs per second of audio /// public ushort BlocksPerSecondOfAudio; /// - /// Channels output on this port + /// Channels output on this port /// public byte OutputPort0ChannelSelection; /// - /// Volume level for this port + /// Volume level for this port /// public byte OutputPort0Volume; /// - /// Channels output on this port + /// Channels output on this port /// public byte OutputPort1ChannelSelection; /// - /// Volume level for this port + /// Volume level for this port /// public byte OutputPort1Volume; /// - /// Channels output on this port + /// Channels output on this port /// public byte OutputPort2ChannelSelection; /// - /// Volume level for this port + /// Volume level for this port /// public byte OutputPort2Volume; /// - /// Channels output on this port + /// Channels output on this port /// public byte OutputPort3ChannelSelection; /// - /// Volume level for this port + /// Volume level for this port /// public byte OutputPort3Volume; } diff --git a/SCSI/Modes/0F.cs b/SCSI/Modes/0F.cs index aa1d5cb..b46f4ca 100644 --- a/SCSI/Modes/0F.cs +++ b/SCSI/Modes/0F.cs @@ -42,38 +42,38 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x0F: Data compression page /// - /// Data compression page - /// Page code 0x0F - /// 16 bytes in SSC-1, SSC-2, SSC-3 + /// Data compression page + /// Page code 0x0F + /// 16 bytes in SSC-1, SSC-2, SSC-3 /// public struct ModePage_0F { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Data compression enabled + /// Data compression enabled /// public bool DCE; /// - /// Data compression capable + /// Data compression capable /// public bool DCC; /// - /// Data decompression enabled + /// Data decompression enabled /// public bool DDE; /// - /// Report exception on decompression + /// Report exception on decompression /// public byte RED; /// - /// Compression algorithm + /// Compression algorithm /// public uint CompressionAlgo; /// - /// Decompression algorithm + /// Decompression algorithm /// public uint DecompressionAlgo; } diff --git a/SCSI/Modes/10.cs b/SCSI/Modes/10.cs index 84bbc11..d082104 100644 --- a/SCSI/Modes/10.cs +++ b/SCSI/Modes/10.cs @@ -42,34 +42,34 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x10: XOR control mode page /// - /// XOR control mode page - /// Page code 0x10 - /// 24 bytes in SBC-1, SBC-2 + /// XOR control mode page + /// Page code 0x10 + /// 24 bytes in SBC-1, SBC-2 /// public struct ModePage_10 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Disables XOR operations + /// Disables XOR operations /// public bool XORDIS; /// - /// Maximum transfer length in blocks for a XOR command + /// Maximum transfer length in blocks for a XOR command /// public uint MaxXorWrite; /// - /// Maximum regenerate length in blocks + /// Maximum regenerate length in blocks /// public uint MaxRegenSize; /// - /// Maximum transfer length in blocks for READ during a rebuild + /// Maximum transfer length in blocks for READ during a rebuild /// public uint MaxRebuildRead; /// - /// Minimum time in ms between READs during a rebuild + /// Minimum time in ms between READs during a rebuild /// public ushort RebuildDelay; } diff --git a/SCSI/Modes/10_SSC.cs b/SCSI/Modes/10_SSC.cs index b730188..4b1f132 100644 --- a/SCSI/Modes/10_SSC.cs +++ b/SCSI/Modes/10_SSC.cs @@ -40,113 +40,113 @@ namespace DiscImageChef.Decoders.SCSI [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { - #region Mode Page 0x10: Device configuration page + #region Mode Page 0x10: Device configuration page /// - /// Device configuration page - /// Page code 0x10 - /// 16 bytes in SCSI-2, SSC-1, SSC-2, SSC-3 + /// Device configuration page + /// Page code 0x10 + /// 16 bytes in SCSI-2, SSC-1, SSC-2, SSC-3 /// public struct ModePage_10_SSC { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Used in mode select to change partition to one specified in + /// Used in mode select to change partition to one specified in /// public bool CAP; /// - /// Used in mode select to change format to one specified in + /// Used in mode select to change format to one specified in /// public bool CAF; /// - /// Active format, vendor-specific + /// Active format, vendor-specific /// public byte ActiveFormat; /// - /// Current logical partition + /// Current logical partition /// public byte ActivePartition; /// - /// How full the buffer shall be before writing to medium + /// How full the buffer shall be before writing to medium /// public byte WriteBufferFullRatio; /// - /// How empty the buffer shall be before reading more data from the medium + /// How empty the buffer shall be before reading more data from the medium /// public byte ReadBufferEmptyRatio; /// - /// Delay in 100 ms before buffered data is forcefully written to the medium even before buffer is full + /// Delay in 100 ms before buffered data is forcefully written to the medium even before buffer is full /// public ushort WriteDelayTime; /// - /// Drive supports recovering data from buffer + /// Drive supports recovering data from buffer /// public bool DBR; /// - /// Medium has block IDs + /// Medium has block IDs /// public bool BIS; /// - /// Drive recognizes and reports setmarks + /// Drive recognizes and reports setmarks /// public bool RSmk; /// - /// Drive selects best speed + /// Drive selects best speed /// public bool AVC; /// - /// If drive should stop pre-reading on filemarks + /// If drive should stop pre-reading on filemarks /// public byte SOCF; /// - /// If set, recovered buffer data is LIFO, otherwise, FIFO + /// If set, recovered buffer data is LIFO, otherwise, FIFO /// public bool RBO; /// - /// Report early warnings + /// Report early warnings /// public bool REW; /// - /// Inter-block gap + /// Inter-block gap /// public byte GapSize; /// - /// End-of-Data format + /// End-of-Data format /// public byte EODDefined; /// - /// EOD generation enabled + /// EOD generation enabled /// public bool EEG; /// - /// Synchronize data to medium on early warning + /// Synchronize data to medium on early warning /// public bool SEW; /// - /// Bytes to reduce buffer size on early warning + /// Bytes to reduce buffer size on early warning /// public uint BufferSizeEarlyWarning; /// - /// Selected data compression algorithm + /// Selected data compression algorithm /// public byte SelectedCompression; /// - /// Soft write protect + /// Soft write protect /// public bool SWP; /// - /// Associated write protect + /// Associated write protect /// public bool ASOCWP; /// - /// Persistent write protect + /// Persistent write protect /// public bool PERSWP; /// - /// Permanent write protect + /// Permanent write protect /// public bool PRMWP; @@ -155,11 +155,11 @@ namespace DiscImageChef.Decoders.SCSI public byte RewindOnReset; /// - /// How drive shall respond to detection of compromised WORM medium integrity + /// How drive shall respond to detection of compromised WORM medium integrity /// public byte WTRE; /// - /// Respond to commands only if a reservation exists + /// Respond to commands only if a reservation exists /// public bool OIR; } diff --git a/SCSI/Modes/11.cs b/SCSI/Modes/11.cs index a918b29..bec32a9 100644 --- a/SCSI/Modes/11.cs +++ b/SCSI/Modes/11.cs @@ -45,19 +45,19 @@ namespace DiscImageChef.Decoders.SCSI public enum PartitionSizeUnitOfMeasures : byte { /// - /// Partition size is measures in bytes + /// Partition size is measures in bytes /// Bytes = 0, /// - /// Partition size is measures in Kilobytes + /// Partition size is measures in Kilobytes /// Kilobytes = 1, /// - /// Partition size is measures in Megabytes + /// Partition size is measures in Megabytes /// Megabytes = 2, /// - /// Partition size is 10eUNITS bytes + /// Partition size is 10eUNITS bytes /// Exponential = 3 } @@ -65,67 +65,67 @@ namespace DiscImageChef.Decoders.SCSI public enum MediumFormatRecognitionValues : byte { /// - /// Logical unit is incapable of format or partition recognition + /// Logical unit is incapable of format or partition recognition /// Incapable = 0, /// - /// Logical unit is capable of format recognition only + /// Logical unit is capable of format recognition only /// FormatCapable = 1, /// - /// Logical unit is capable of partition recognition only + /// Logical unit is capable of partition recognition only /// PartitionCapable = 2, /// - /// Logical unit is capable of both format and partition recognition + /// Logical unit is capable of both format and partition recognition /// Capable = 3 } /// - /// Medium partition page(1) - /// Page code 0x11 + /// Medium partition page(1) + /// Page code 0x11 /// public struct ModePage_11 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Maximum number of additional partitions supported + /// Maximum number of additional partitions supported /// public byte MaxAdditionalPartitions; /// - /// Number of additional partitions to be defined for a volume + /// Number of additional partitions to be defined for a volume /// public byte AdditionalPartitionsDefined; /// - /// Device defines partitions based on its fixed definition + /// Device defines partitions based on its fixed definition /// public bool FDP; /// - /// Device should divide medium according to the additional partitions defined field using sizes defined by device + /// Device should divide medium according to the additional partitions defined field using sizes defined by device /// public bool SDP; /// - /// Initiator defines number and size of partitions + /// Initiator defines number and size of partitions /// public bool IDP; /// - /// Defines the unit on which the partition sizes are defined + /// Defines the unit on which the partition sizes are defined /// public PartitionSizeUnitOfMeasures PSUM; public bool POFM; public bool CLEAR; public bool ADDP; /// - /// Defines the capabilities for the unit to recognize media partitions and format + /// Defines the capabilities for the unit to recognize media partitions and format /// public MediumFormatRecognitionValues MediumFormatRecognition; public byte PartitionUnits; /// - /// Array of partition sizes in units defined above + /// Array of partition sizes in units defined above /// public ushort[] PartitionSizes; } @@ -196,8 +196,7 @@ namespace DiscImageChef.Decoders.SCSI sb.AppendLine("\tDevice shall erase all partitions on MODE SELECT for partitioning"); else if(!page.CLEAR) sb.AppendLine("\tDevice shall not erase any partition on MODE SELECT for partitioning"); - else - sb.AppendLine("\tDevice shall erase all partitions differing on size on MODE SELECT for partitioning"); + else sb.AppendLine("\tDevice shall erase all partitions differing on size on MODE SELECT for partitioning"); string measure; diff --git a/SCSI/Modes/12_13_14.cs b/SCSI/Modes/12_13_14.cs index 25183d8..c9a2bd3 100644 --- a/SCSI/Modes/12_13_14.cs +++ b/SCSI/Modes/12_13_14.cs @@ -42,17 +42,17 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Pages 0x12, 0x13, 0x14: Medium partition page (2-4) /// - /// Medium partition page (2-4) - /// Page codes 0x12, 0x13 and 0x14 + /// Medium partition page (2-4) + /// Page codes 0x12, 0x13 and 0x14 /// public struct ModePage_12_13_14 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Array of partition sizes in units defined in mode page 11 + /// Array of partition sizes in units defined in mode page 11 /// public ushort[] PartitionSizes; } diff --git a/SCSI/Modes/1A.cs b/SCSI/Modes/1A.cs index 796ccfe..a50bc5d 100644 --- a/SCSI/Modes/1A.cs +++ b/SCSI/Modes/1A.cs @@ -42,60 +42,60 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x1A: Power condition page /// - /// Power condition page - /// Page code 0x1A - /// 12 bytes in SPC-1, SPC-2, SPC-3, SPC-4 - /// 40 bytes in SPC-5 + /// Power condition page + /// Page code 0x1A + /// 12 bytes in SPC-1, SPC-2, SPC-3, SPC-4 + /// 40 bytes in SPC-5 /// public struct ModePage_1A { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Idle timer activated + /// Idle timer activated /// public bool Idle; /// - /// Standby timer activated + /// Standby timer activated /// public bool Standby; /// - /// Idle timer + /// Idle timer /// public uint IdleTimer; /// - /// Standby timer + /// Standby timer /// public uint StandbyTimer; /// - /// Interactions between background functions and power management + /// Interactions between background functions and power management /// public byte PM_BG_Precedence; /// - /// Standby timer Y activated + /// Standby timer Y activated /// public bool Standby_Y; /// - /// Idle timer B activated + /// Idle timer B activated /// public bool Idle_B; /// - /// Idle timer C activated + /// Idle timer C activated /// public bool Idle_C; /// - /// Idle timer B + /// Idle timer B /// public uint IdleTimer_B; /// - /// Idle timer C + /// Idle timer C /// public uint IdleTimer_C; /// - /// Standby timer Y + /// Standby timer Y /// public uint StandbyTimer_Y; public byte CCF_Idle; @@ -200,23 +200,23 @@ namespace DiscImageChef.Decoders.SCSI #region Mode Page 0x1A subpage 0x01: Power Consumption mode page /// - /// Power Consumption mode page - /// Page code 0x1A - /// Subpage code 0x01 - /// 16 bytes in SPC-5 + /// Power Consumption mode page + /// Page code 0x1A + /// Subpage code 0x01 + /// 16 bytes in SPC-5 /// public struct ModePage_1A_S01 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Active power level + /// Active power level /// public byte ActiveLevel; /// - /// Power Consumption VPD identifier in use + /// Power Consumption VPD identifier in use /// public byte PowerConsumptionIdentifier; } diff --git a/SCSI/Modes/1B.cs b/SCSI/Modes/1B.cs index 75f1a46..5eace4e 100644 --- a/SCSI/Modes/1B.cs +++ b/SCSI/Modes/1B.cs @@ -42,34 +42,34 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x1B: Removable Block Access Capabilities page /// - /// Removable Block Access Capabilities page - /// Page code 0x1B - /// 12 bytes in INF-8070 + /// Removable Block Access Capabilities page + /// Page code 0x1B + /// 12 bytes in INF-8070 /// public struct ModePage_1B { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Supports reporting progress of format + /// Supports reporting progress of format /// public bool SRFP; /// - /// Non-CD Optical Device + /// Non-CD Optical Device /// public bool NCD; /// - /// Phase change dual device supporting a CD and a Non-CD Optical devices + /// Phase change dual device supporting a CD and a Non-CD Optical devices /// public bool SML; /// - /// Total number of LUNs + /// Total number of LUNs /// public byte TLUN; /// - /// System Floppy Type device + /// System Floppy Type device /// public bool SFLP; } diff --git a/SCSI/Modes/1C.cs b/SCSI/Modes/1C.cs index 5ef6239..b8def2b 100644 --- a/SCSI/Modes/1C.cs +++ b/SCSI/Modes/1C.cs @@ -42,56 +42,56 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x1C: Informational exceptions control page /// - /// Informational exceptions control page - /// Page code 0x1C - /// 12 bytes in SPC-1, SPC-2, SPC-3, SPC-4 + /// Informational exceptions control page + /// Page code 0x1C + /// 12 bytes in SPC-1, SPC-2, SPC-3, SPC-4 /// public struct ModePage_1C { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Informational exception operations should not affect performance + /// Informational exception operations should not affect performance /// public bool Perf; /// - /// Disable informational exception operations + /// Disable informational exception operations /// public bool DExcpt; /// - /// Create a test device failure at next interval time + /// Create a test device failure at next interval time /// public bool Test; /// - /// Log informational exception conditions + /// Log informational exception conditions /// public bool LogErr; /// - /// Method of reporting informational exceptions + /// Method of reporting informational exceptions /// public byte MRIE; /// - /// 100 ms period to report an informational exception condition + /// 100 ms period to report an informational exception condition /// public uint IntervalTimer; /// - /// How many times to report informational exceptions + /// How many times to report informational exceptions /// public uint ReportCount; /// - /// Enable background functions + /// Enable background functions /// public bool EBF; /// - /// Warning reporting enabled + /// Warning reporting enabled /// public bool EWasc; /// - /// Enable reporting of background self-test errors + /// Enable reporting of background self-test errors /// public bool EBACKERR; } @@ -204,47 +204,47 @@ namespace DiscImageChef.Decoders.SCSI #region Mode Page 0x1C subpage 0x01: Background Control mode page /// - /// Background Control mode page - /// Page code 0x1A - /// Subpage code 0x01 - /// 16 bytes in SPC-5 + /// Background Control mode page + /// Page code 0x1A + /// Subpage code 0x01 + /// 16 bytes in SPC-5 /// public struct ModePage_1C_S01 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Suspend on log full + /// Suspend on log full /// public bool S_L_Full; /// - /// Log only when intervention required + /// Log only when intervention required /// public bool LOWIR; /// - /// Enable background medium scan + /// Enable background medium scan /// public bool En_Bms; /// - /// Enable background pre-scan + /// Enable background pre-scan /// public bool En_Ps; /// - /// Time in hours between background medium scans + /// Time in hours between background medium scans /// public ushort BackgroundScanInterval; /// - /// Maximum time in hours for a background pre-scan to complete + /// Maximum time in hours for a background pre-scan to complete /// public ushort BackgroundPrescanTimeLimit; /// - /// Minimum time in ms being idle before resuming a background scan + /// Minimum time in ms being idle before resuming a background scan /// public ushort MinIdleBeforeBgScan; /// - /// Maximum time in ms to start processing commands while performing a background scan + /// Maximum time in ms to start processing commands while performing a background scan /// public ushort MaxTimeSuspendBgScan; } diff --git a/SCSI/Modes/1C_SFF.cs b/SCSI/Modes/1C_SFF.cs index 5ac84b2..c943ca9 100644 --- a/SCSI/Modes/1C_SFF.cs +++ b/SCSI/Modes/1C_SFF.cs @@ -42,26 +42,26 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x1C: Timer & Protect page /// - /// Timer & Protect page - /// Page code 0x1C - /// 8 bytes in INF-8070 + /// Timer & Protect page + /// Page code 0x1C + /// 8 bytes in INF-8070 /// public struct ModePage_1C_SFF { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Time the device shall remain in the current state after seek, read or write operation + /// Time the device shall remain in the current state after seek, read or write operation /// public byte InactivityTimeMultiplier; /// - /// Disabled until power cycle + /// Disabled until power cycle /// public bool DISP; /// - /// Software Write Protect until Power-down + /// Software Write Protect until Power-down /// public bool SWPP; } diff --git a/SCSI/Modes/1D.cs b/SCSI/Modes/1D.cs index d2b87b7..4ddd997 100644 --- a/SCSI/Modes/1D.cs +++ b/SCSI/Modes/1D.cs @@ -44,7 +44,7 @@ namespace DiscImageChef.Decoders.SCSI public struct ModePage_1D { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public bool WORMM; diff --git a/SCSI/Modes/21_Certance.cs b/SCSI/Modes/21_Certance.cs index 695d190..f9ba75d 100644 --- a/SCSI/Modes/21_Certance.cs +++ b/SCSI/Modes/21_Certance.cs @@ -44,7 +44,7 @@ namespace DiscImageChef.Decoders.SCSI public struct Certance_ModePage_21 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public byte OperatingSystemsSupport; diff --git a/SCSI/Modes/22_Certance.cs b/SCSI/Modes/22_Certance.cs index ea02cf2..db1f056 100644 --- a/SCSI/Modes/22_Certance.cs +++ b/SCSI/Modes/22_Certance.cs @@ -45,7 +45,7 @@ namespace DiscImageChef.Decoders.SCSI public struct Certance_ModePage_22 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public byte BaudRate; diff --git a/SCSI/Modes/24_IBM.cs b/SCSI/Modes/24_IBM.cs index f57a35a..0f7f8c8 100644 --- a/SCSI/Modes/24_IBM.cs +++ b/SCSI/Modes/24_IBM.cs @@ -44,7 +44,7 @@ namespace DiscImageChef.Decoders.SCSI public struct IBM_ModePage_24 { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public byte ModeControl; diff --git a/SCSI/Modes/2A.cs b/SCSI/Modes/2A.cs index 7c32372..0758a29 100644 --- a/SCSI/Modes/2A.cs +++ b/SCSI/Modes/2A.cs @@ -44,106 +44,106 @@ namespace DiscImageChef.Decoders.SCSI { #region Mode Page 0x2A: CD-ROM capabilities page /// - /// CD-ROM capabilities page - /// Page code 0x2A - /// 16 bytes in OB-U0077C - /// 20 bytes in SFF-8020i - /// 22 bytes in MMC-1 - /// 26 bytes in MMC-2 - /// Variable bytes in MMC-3 + /// CD-ROM capabilities page + /// Page code 0x2A + /// 16 bytes in OB-U0077C + /// 20 bytes in SFF-8020i + /// 22 bytes in MMC-1 + /// 26 bytes in MMC-2 + /// Variable bytes in MMC-3 /// public struct ModePage_2A { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// Drive supports multi-session and/or Photo-CD + /// Drive supports multi-session and/or Photo-CD /// public bool MultiSession; /// - /// Drive is capable of reading sectors in Mode 2 Form 2 format + /// Drive is capable of reading sectors in Mode 2 Form 2 format /// public bool Mode2Form2; /// - /// Drive is capable of reading sectors in Mode 2 Form 1 format + /// Drive is capable of reading sectors in Mode 2 Form 1 format /// public bool Mode2Form1; /// - /// Drive is capable of playing audio + /// Drive is capable of playing audio /// public bool AudioPlay; /// - /// Drive can return the ISRC + /// Drive can return the ISRC /// public bool ISRC; /// - /// Drive can return the media catalogue number + /// Drive can return the media catalogue number /// public bool UPC; /// - /// Drive can return C2 pointers + /// Drive can return C2 pointers /// public bool C2Pointer; /// - /// Drive can read, deinterlave and correct R-W subchannels + /// Drive can read, deinterlave and correct R-W subchannels /// public bool DeinterlaveSubchannel; /// - /// Drive can read interleaved and uncorrected R-W subchannels + /// Drive can read interleaved and uncorrected R-W subchannels /// public bool Subchannel; /// - /// Drive can continue from a loss of streaming on audio reading + /// Drive can continue from a loss of streaming on audio reading /// public bool AccurateCDDA; /// - /// Audio can be read as digital data + /// Audio can be read as digital data /// public bool CDDACommand; /// - /// Loading Mechanism Type + /// Loading Mechanism Type /// public byte LoadingMechanism; /// - /// Drive can eject discs + /// Drive can eject discs /// public bool Eject; /// - /// Drive's optional prevent jumper status + /// Drive's optional prevent jumper status /// public bool PreventJumper; /// - /// Current lock status + /// Current lock status /// public bool LockState; /// - /// Drive can lock media + /// Drive can lock media /// public bool Lock; /// - /// Each channel can be muted independently + /// Each channel can be muted independently /// public bool SeparateChannelMute; /// - /// Each channel's volume can be controlled independently + /// Each channel's volume can be controlled independently /// public bool SeparateChannelVolume; /// - /// Maximum drive speed in Kbytes/second + /// Maximum drive speed in Kbytes/second /// public ushort MaximumSpeed; /// - /// Supported volume levels + /// Supported volume levels /// public ushort SupportedVolumeLevels; /// - /// Buffer size in Kbytes + /// Buffer size in Kbytes /// public ushort BufferSize; /// - /// Current drive speed in Kbytes/second + /// Current drive speed in Kbytes/second /// public ushort CurrentSpeed; @@ -283,13 +283,11 @@ namespace DiscImageChef.Decoders.SCSI decoded.WriteSpeedPerformanceDescriptors = new ModePage_2A_WriteDescriptor[descriptors]; for(int i = 0; i < descriptors; i++) - { 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; } @@ -355,11 +353,9 @@ namespace DiscImageChef.Decoders.SCSI : "\tDrive is not locked, media can be ejected and inserted"); } else - { 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"); if(page.SeparateChannelMute) sb.AppendLine("\tEach channel can be muted independently"); @@ -414,9 +410,11 @@ namespace DiscImageChef.Decoders.SCSI } if(page.WriteSpeedPerformanceDescriptors != null) - foreach(ModePage_2A_WriteDescriptor descriptor in page.WriteSpeedPerformanceDescriptors.Where(descriptor => descriptor.WriteSpeed > 0)) if(descriptor.RotationControl == 0) - sb.AppendFormat("\tDrive supports writing at {0} Kbyte/sec. in CLV mode", - descriptor.WriteSpeed).AppendLine(); + foreach(ModePage_2A_WriteDescriptor descriptor in + page.WriteSpeedPerformanceDescriptors.Where(descriptor => descriptor.WriteSpeed > 0)) + if(descriptor.RotationControl == 0) + sb.AppendFormat("\tDrive supports writing at {0} Kbyte/sec. in CLV mode", descriptor.WriteSpeed) + .AppendLine(); else if(descriptor.RotationControl == 1) sb.AppendFormat("\tDrive supports writing at is {0} Kbyte/sec. in pure CAV mode", descriptor.WriteSpeed).AppendLine(); diff --git a/SCSI/Modes/2F_IBM.cs b/SCSI/Modes/2F_IBM.cs index 7116c8f..a34128d 100644 --- a/SCSI/Modes/2F_IBM.cs +++ b/SCSI/Modes/2F_IBM.cs @@ -45,7 +45,7 @@ namespace DiscImageChef.Decoders.SCSI public struct IBM_ModePage_2F { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public byte FenceBehaviour; diff --git a/SCSI/Modes/30_Apple.cs b/SCSI/Modes/30_Apple.cs index 802eb6d..207c933 100644 --- a/SCSI/Modes/30_Apple.cs +++ b/SCSI/Modes/30_Apple.cs @@ -41,28 +41,28 @@ namespace DiscImageChef.Decoders.SCSI [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { - #region Apple Mode Page 0x30: Apple OEM String - static readonly byte[] AppleOEMString = - { - 0x41, 0x50, 0x50, 0x4C, 0x45, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x55, 0x54, 0x45, 0x52, 0x2C, 0x20, 0x49, 0x4E, - 0x43, 0x2E - }; + #region Apple Mode Page 0x30: Apple OEM String + static readonly byte[] AppleOEMString = + { + 0x41, 0x50, 0x50, 0x4C, 0x45, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x55, 0x54, 0x45, 0x52, 0x2C, 0x20, 0x49, 0x4E, + 0x43, 0x2E + }; - public static bool IsAppleModePage_30(byte[] pageResponse) - { - if((pageResponse?[0] & 0x40) == 0x40) return false; + public static bool IsAppleModePage_30(byte[] pageResponse) + { + if((pageResponse?[0] & 0x40) == 0x40) return false; - if((pageResponse?[0] & 0x3F) != 0x30) return false; + if((pageResponse?[0] & 0x3F) != 0x30) return false; - if(pageResponse[1] + 2 != pageResponse.Length) return false; + if(pageResponse[1] + 2 != pageResponse.Length) return false; - if(pageResponse.Length != 30) return false; + if(pageResponse.Length != 30) return false; - byte[] str = new byte[20]; - Array.Copy(pageResponse, 10, str, 0, 20); + byte[] str = new byte[20]; + Array.Copy(pageResponse, 10, str, 0, 20); - return AppleOEMString.SequenceEqual(str); - } - #endregion Apple Mode Page 0x30: Apple OEM String + return AppleOEMString.SequenceEqual(str); + } + #endregion Apple Mode Page 0x30: Apple OEM String } } \ No newline at end of file diff --git a/SCSI/Modes/3B_HP.cs b/SCSI/Modes/3B_HP.cs index 1a5ffc3..0ea4b41 100644 --- a/SCSI/Modes/3B_HP.cs +++ b/SCSI/Modes/3B_HP.cs @@ -45,7 +45,7 @@ namespace DiscImageChef.Decoders.SCSI public struct HP_ModePage_3B { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public byte MSN; diff --git a/SCSI/Modes/3C_HP.cs b/SCSI/Modes/3C_HP.cs index 99d98b5..b140715 100644 --- a/SCSI/Modes/3C_HP.cs +++ b/SCSI/Modes/3C_HP.cs @@ -45,7 +45,7 @@ namespace DiscImageChef.Decoders.SCSI public struct HP_ModePage_3C { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public bool LT; diff --git a/SCSI/Modes/3D_HP.cs b/SCSI/Modes/3D_HP.cs index 0372257..7239a3a 100644 --- a/SCSI/Modes/3D_HP.cs +++ b/SCSI/Modes/3D_HP.cs @@ -44,7 +44,7 @@ namespace DiscImageChef.Decoders.SCSI public struct HP_ModePage_3D { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; public byte ResetBehaviour; diff --git a/SCSI/Modes/3D_IBM.cs b/SCSI/Modes/3D_IBM.cs index a1dce04..417401b 100644 --- a/SCSI/Modes/3D_IBM.cs +++ b/SCSI/Modes/3D_IBM.cs @@ -40,54 +40,54 @@ namespace DiscImageChef.Decoders.SCSI [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { - #region IBM Mode Page 0x3D: Behaviour Configuration Mode page - public struct IBM_ModePage_3D - { - /// - /// Parameters can be saved - /// - public bool PS; - public ushort NumberOfWraps; - } + #region IBM Mode Page 0x3D: Behaviour Configuration Mode page + public struct IBM_ModePage_3D + { + /// + /// Parameters can be saved + /// + public bool PS; + public ushort NumberOfWraps; + } - public static IBM_ModePage_3D? DecodeIBMModePage_3D(byte[] pageResponse) - { - if((pageResponse?[0] & 0x40) == 0x40) return null; + public static IBM_ModePage_3D? DecodeIBMModePage_3D(byte[] pageResponse) + { + if((pageResponse?[0] & 0x40) == 0x40) return null; - if((pageResponse?[0] & 0x3F) != 0x3D) return null; + if((pageResponse?[0] & 0x3F) != 0x3D) return null; - if(pageResponse[1] + 2 != pageResponse.Length) return null; + if(pageResponse[1] + 2 != pageResponse.Length) return null; - if(pageResponse.Length != 5) return null; + if(pageResponse.Length != 5) return null; - IBM_ModePage_3D decoded = new IBM_ModePage_3D(); + IBM_ModePage_3D decoded = new IBM_ModePage_3D(); - decoded.PS |= (pageResponse[0] & 0x80) == 0x80; - decoded.NumberOfWraps = (ushort)((pageResponse[3] << 8) + pageResponse[4]); + decoded.PS |= (pageResponse[0] & 0x80) == 0x80; + decoded.NumberOfWraps = (ushort)((pageResponse[3] << 8) + pageResponse[4]); - return decoded; - } + return decoded; + } - public static string PrettifyIBMModePage_3D(byte[] pageResponse) - { - return PrettifyIBMModePage_3D(DecodeIBMModePage_3D(pageResponse)); - } + public static string PrettifyIBMModePage_3D(byte[] pageResponse) + { + return PrettifyIBMModePage_3D(DecodeIBMModePage_3D(pageResponse)); + } - public static string PrettifyIBMModePage_3D(IBM_ModePage_3D? modePage) - { - if(!modePage.HasValue) return null; + public static string PrettifyIBMModePage_3D(IBM_ModePage_3D? modePage) + { + if(!modePage.HasValue) return null; - IBM_ModePage_3D page = modePage.Value; - StringBuilder sb = new StringBuilder(); + IBM_ModePage_3D page = modePage.Value; + StringBuilder sb = new StringBuilder(); - sb.AppendLine("IBM LEOT Mode Page:"); + sb.AppendLine("IBM LEOT Mode Page:"); - if(page.PS) sb.AppendLine("\tParameters can be saved"); + if(page.PS) sb.AppendLine("\tParameters can be saved"); - sb.AppendFormat("\t{0} wraps", page.NumberOfWraps).AppendLine(); + sb.AppendFormat("\t{0} wraps", page.NumberOfWraps).AppendLine(); - return sb.ToString(); - } - #endregion IBM Mode Page 0x3D: Behaviour Configuration Mode page + return sb.ToString(); + } + #endregion IBM Mode Page 0x3D: Behaviour Configuration Mode page } } \ No newline at end of file diff --git a/SCSI/Modes/3E_Fujitsu.cs b/SCSI/Modes/3E_Fujitsu.cs index 90db565..430cb7b 100644 --- a/SCSI/Modes/3E_Fujitsu.cs +++ b/SCSI/Modes/3E_Fujitsu.cs @@ -46,15 +46,15 @@ namespace DiscImageChef.Decoders.SCSI public enum Fujitsu_VerifyModes : byte { /// - /// Always verify after writing + /// Always verify after writing /// Always = 0, /// - /// Never verify after writing + /// Never verify after writing /// Never = 1, /// - /// Verify after writing depending on condition + /// Verify after writing depending on condition /// Depends = 2, Reserved = 4 @@ -63,25 +63,25 @@ namespace DiscImageChef.Decoders.SCSI public struct Fujitsu_ModePage_3E { /// - /// Parameters can be saved + /// Parameters can be saved /// public bool PS; /// - /// If set, AV data support mode is applied + /// If set, AV data support mode is applied /// public bool audioVisualMode; /// - /// If set the test write operation is restricted + /// If set the test write operation is restricted /// public bool streamingMode; public byte Reserved1; /// - /// Verify mode for WRITE commands + /// Verify mode for WRITE commands /// public Fujitsu_VerifyModes verifyMode; public byte Reserved2; /// - /// Device type provided in response to INQUIRY + /// Device type provided in response to INQUIRY /// public PeripheralDeviceTypes devType; public byte[] Reserved3; diff --git a/SCSI/Modes/3E_HP.cs b/SCSI/Modes/3E_HP.cs index 3b6bad1..7692759 100644 --- a/SCSI/Modes/3E_HP.cs +++ b/SCSI/Modes/3E_HP.cs @@ -40,57 +40,59 @@ namespace DiscImageChef.Decoders.SCSI [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { - #region HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page - public struct HP_ModePage_3E - { - /// - /// Parameters can be saved - /// - public bool PS; - public bool NonAuto; - public bool CDmode; - } + #region HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page + public struct HP_ModePage_3E + { + /// + /// Parameters can be saved + /// + public bool PS; + public bool NonAuto; + public bool CDmode; + } - public static HP_ModePage_3E? DecodeHPModePage_3E(byte[] pageResponse) - { - if((pageResponse?[0] & 0x40) == 0x40) return null; + public static HP_ModePage_3E? DecodeHPModePage_3E(byte[] pageResponse) + { + if((pageResponse?[0] & 0x40) == 0x40) return null; - if((pageResponse?[0] & 0x3F) != 0x3E) return null; + if((pageResponse?[0] & 0x3F) != 0x3E) return null; - if(pageResponse[1] + 2 != pageResponse.Length) return null; + if(pageResponse[1] + 2 != pageResponse.Length) return null; - if(pageResponse.Length != 4) return null; + if(pageResponse.Length != 4) return null; - HP_ModePage_3E decoded = new HP_ModePage_3E(); + HP_ModePage_3E decoded = new HP_ModePage_3E(); - decoded.PS |= (pageResponse[0] & 0x80) == 0x80; - decoded.NonAuto |= (pageResponse[2] & 0x02) == 0x02; - decoded.CDmode |= (pageResponse[2] & 0x01) == 0x01; + decoded.PS |= (pageResponse[0] & 0x80) == 0x80; + decoded.NonAuto |= (pageResponse[2] & 0x02) == 0x02; + decoded.CDmode |= (pageResponse[2] & 0x01) == 0x01; - return decoded; - } + return decoded; + } - public static string PrettifyHPModePage_3E(byte[] pageResponse) - { - return PrettifyHPModePage_3E(DecodeHPModePage_3E(pageResponse)); - } + public static string PrettifyHPModePage_3E(byte[] pageResponse) + { + return PrettifyHPModePage_3E(DecodeHPModePage_3E(pageResponse)); + } - public static string PrettifyHPModePage_3E(HP_ModePage_3E? modePage) - { - if(!modePage.HasValue) return null; + public static string PrettifyHPModePage_3E(HP_ModePage_3E? modePage) + { + if(!modePage.HasValue) return null; - HP_ModePage_3E page = modePage.Value; - StringBuilder sb = new StringBuilder(); + HP_ModePage_3E page = modePage.Value; + StringBuilder sb = new StringBuilder(); - sb.AppendLine("HP CD-ROM Emulation/Disaster Recovery Mode Page:"); + sb.AppendLine("HP CD-ROM Emulation/Disaster Recovery Mode Page:"); - if(page.PS) sb.AppendLine("\tParameters can be saved"); + if(page.PS) sb.AppendLine("\tParameters can be saved"); - 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"); + 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(); - } - #endregion HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page + return sb.ToString(); + } + #endregion HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page } } \ No newline at end of file diff --git a/SCSI/Modes/Headers.cs b/SCSI/Modes/Headers.cs index aa65b94..0a475a9 100644 --- a/SCSI/Modes/Headers.cs +++ b/SCSI/Modes/Headers.cs @@ -146,13 +146,12 @@ namespace DiscImageChef.Decoders.SCSI else sb.AppendFormat("\t{0} blocks have {1} and are {2} bytes each", descriptor.Blocks, density, descriptor.BlockLength).AppendLine(); + else if(descriptor.Blocks == 0) + sb.AppendFormat("\tAll remaining blocks are {0} bytes each", descriptor.BlockLength) + .AppendLine(); else - if(descriptor.Blocks == 0) - sb.AppendFormat("\tAll remaining blocks are {0} bytes each", descriptor.BlockLength) - .AppendLine(); - else - sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, - descriptor.BlockLength).AppendLine(); + sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, + descriptor.BlockLength).AppendLine(); } break; @@ -1421,28 +1420,23 @@ namespace DiscImageChef.Decoders.SCSI else sb.AppendFormat("\tAll remaining blocks conform to {0} and are {1} bytes each", density, descriptor.BlockLength).AppendLine(); + else if(descriptor.BlockLength == 0) + sb.AppendFormat("\t{0} blocks conform to {1} and have a variable length", + descriptor.Blocks, density).AppendLine(); else - if(descriptor.BlockLength == 0) - sb.AppendFormat("\t{0} blocks conform to {1} and have a variable length", - descriptor.Blocks, density).AppendLine(); - else - sb.AppendFormat("\t{0} blocks conform to {1} and are {2} bytes each", - descriptor.Blocks, density, descriptor.BlockLength) - .AppendLine(); + sb.AppendFormat("\t{0} blocks conform to {1} and are {2} bytes each", + descriptor.Blocks, density, descriptor.BlockLength).AppendLine(); + else if(descriptor.Blocks == 0) + if(descriptor.BlockLength == 0) + sb.AppendFormat("\tAll remaining blocks have a variable length").AppendLine(); + else + sb.AppendFormat("\tAll remaining blocks are {0} bytes each", descriptor.BlockLength) + .AppendLine(); + else if(descriptor.BlockLength == 0) + sb.AppendFormat("\t{0} blocks have a variable length", descriptor.Blocks).AppendLine(); else - if(descriptor.Blocks == 0) - if(descriptor.BlockLength == 0) - sb.AppendFormat("\tAll remaining blocks have a variable length").AppendLine(); - else - sb.AppendFormat("\tAll remaining blocks are {0} bytes each", - descriptor.BlockLength).AppendLine(); - else - if(descriptor.BlockLength == 0) - sb.AppendFormat("\t{0} blocks have a variable length", descriptor.Blocks) - .AppendLine(); - else - sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, - descriptor.BlockLength).AppendLine(); + sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, + descriptor.BlockLength).AppendLine(); } break; @@ -1563,28 +1557,23 @@ namespace DiscImageChef.Decoders.SCSI else sb.AppendFormat("\tAll remaining blocks are {0} and are {1} bytes each", density, descriptor.BlockLength).AppendLine(); + else if(descriptor.BlockLength == 0) + sb.AppendFormat("\t{0} blocks are {1} and have a variable length", + descriptor.Blocks, density).AppendLine(); else - if(descriptor.BlockLength == 0) - sb.AppendFormat("\t{0} blocks are {1} and have a variable length", - descriptor.Blocks, density).AppendLine(); - else - sb.AppendFormat("\t{0} blocks are {1} and are {2} bytes each", - descriptor.Blocks, density, descriptor.BlockLength) - .AppendLine(); + sb.AppendFormat("\t{0} blocks are {1} and are {2} bytes each", descriptor.Blocks, + density, descriptor.BlockLength).AppendLine(); + else if(descriptor.Blocks == 0) + if(descriptor.BlockLength == 0) + sb.AppendFormat("\tAll remaining blocks have a variable length").AppendLine(); + else + sb.AppendFormat("\tAll remaining blocks are {0} bytes each", descriptor.BlockLength) + .AppendLine(); + else if(descriptor.BlockLength == 0) + sb.AppendFormat("\t{0} blocks have a variable length", descriptor.Blocks).AppendLine(); else - if(descriptor.Blocks == 0) - if(descriptor.BlockLength == 0) - sb.AppendFormat("\tAll remaining blocks have a variable length").AppendLine(); - else - sb.AppendFormat("\tAll remaining blocks are {0} bytes each", - descriptor.BlockLength).AppendLine(); - else - if(descriptor.BlockLength == 0) - sb.AppendFormat("\t{0} blocks have a variable length", descriptor.Blocks) - .AppendLine(); - else - sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, - descriptor.BlockLength).AppendLine(); + sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, + descriptor.BlockLength).AppendLine(); } break; @@ -1758,13 +1747,12 @@ namespace DiscImageChef.Decoders.SCSI else sb.AppendFormat("\t{0} blocks have {1} and are {2} bytes each", descriptor.Blocks, density, descriptor.BlockLength).AppendLine(); + else if(descriptor.Blocks == 0) + sb.AppendFormat("\tAll remaining blocks are {0} bytes each", descriptor.BlockLength) + .AppendLine(); else - if(descriptor.Blocks == 0) - sb.AppendFormat("\tAll remaining blocks are {0} bytes each", descriptor.BlockLength) - .AppendLine(); - else - sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, - descriptor.BlockLength).AppendLine(); + sb.AppendFormat("\t{0} blocks are {1} bytes each", descriptor.Blocks, + descriptor.BlockLength).AppendLine(); } break; diff --git a/SCSI/Modes/Mode10.cs b/SCSI/Modes/Mode10.cs index 0ad5137..c1dd64c 100644 --- a/SCSI/Modes/Mode10.cs +++ b/SCSI/Modes/Mode10.cs @@ -103,7 +103,8 @@ namespace DiscImageChef.Decoders.SCSI } } - switch(deviceType) { + switch(deviceType) + { case PeripheralDeviceTypes.DirectAccess: case PeripheralDeviceTypes.MultiMediaDevice: header.WriteProtected = (modeResponse[3] & 0x80) == 0x80; @@ -114,7 +115,8 @@ namespace DiscImageChef.Decoders.SCSI header.Speed = (byte)(modeResponse[3] & 0x0F); header.BufferedMode = (byte)((modeResponse[3] & 0x70) >> 4); break; - case PeripheralDeviceTypes.PrinterDevice: header.BufferedMode = (byte)((modeResponse[3] & 0x70) >> 4); + case PeripheralDeviceTypes.PrinterDevice: + header.BufferedMode = (byte)((modeResponse[3] & 0x70) >> 4); break; case PeripheralDeviceTypes.OpticalDevice: header.WriteProtected = (modeResponse[3] & 0x80) == 0x80; @@ -200,17 +202,21 @@ namespace DiscImageChef.Decoders.SCSI return decoded; } - public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType, bool longLBA = false) + public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType, + bool longLBA = false) { byte[] hdr; if(header.BlockDescriptors != null) - hdr = longLBA ? new byte[8 + header.BlockDescriptors.Length * 16] : 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; - switch(deviceType) { + switch(deviceType) + { case PeripheralDeviceTypes.DirectAccess: case PeripheralDeviceTypes.MultiMediaDevice: if(header.WriteProtected) hdr[3] += 0x80; @@ -221,7 +227,8 @@ namespace DiscImageChef.Decoders.SCSI hdr[3] += (byte)(header.Speed & 0x0F); hdr[3] += (byte)((header.BufferedMode << 4) & 0x70); break; - case PeripheralDeviceTypes.PrinterDevice: hdr[3] += (byte)((header.BufferedMode << 4) & 0x70); + case PeripheralDeviceTypes.PrinterDevice: + hdr[3] += (byte)((header.BufferedMode << 4) & 0x70); break; case PeripheralDeviceTypes.OpticalDevice: if(header.WriteProtected) hdr[3] += 0x80; diff --git a/SCSI/Modes/Mode6.cs b/SCSI/Modes/Mode6.cs index 387ed3f..1a229ca 100644 --- a/SCSI/Modes/Mode6.cs +++ b/SCSI/Modes/Mode6.cs @@ -64,7 +64,8 @@ namespace DiscImageChef.Decoders.SCSI } } - switch(deviceType) { + switch(deviceType) + { case PeripheralDeviceTypes.DirectAccess: case PeripheralDeviceTypes.MultiMediaDevice: header.WriteProtected = (modeResponse[2] & 0x80) == 0x80; @@ -75,7 +76,8 @@ namespace DiscImageChef.Decoders.SCSI header.Speed = (byte)(modeResponse[2] & 0x0F); header.BufferedMode = (byte)((modeResponse[2] & 0x70) >> 4); break; - case PeripheralDeviceTypes.PrinterDevice: header.BufferedMode = (byte)((modeResponse[2] & 0x70) >> 4); + case PeripheralDeviceTypes.PrinterDevice: + header.BufferedMode = (byte)((modeResponse[2] & 0x70) >> 4); break; case PeripheralDeviceTypes.OpticalDevice: header.WriteProtected = (modeResponse[2] & 0x80) == 0x80; @@ -160,11 +162,14 @@ namespace DiscImageChef.Decoders.SCSI public static byte[] EncodeModeHeader6(ModeHeader header, PeripheralDeviceTypes deviceType) { - byte[] hdr = header.BlockDescriptors != null ? new byte[4 + header.BlockDescriptors.Length * 8] : new byte[4]; + byte[] hdr = header.BlockDescriptors != null + ? new byte[4 + header.BlockDescriptors.Length * 8] + : new byte[4]; hdr[1] = (byte)header.MediumType; - switch(deviceType) { + switch(deviceType) + { case PeripheralDeviceTypes.DirectAccess: case PeripheralDeviceTypes.MultiMediaDevice: if(header.WriteProtected) hdr[2] += 0x80; @@ -175,7 +180,8 @@ namespace DiscImageChef.Decoders.SCSI hdr[2] += (byte)(header.Speed & 0x0F); hdr[2] += (byte)((header.BufferedMode << 4) & 0x70); break; - case PeripheralDeviceTypes.PrinterDevice: hdr[2] += (byte)((header.BufferedMode << 4) & 0x70); + case PeripheralDeviceTypes.PrinterDevice: + hdr[2] += (byte)((header.BufferedMode << 4) & 0x70); break; case PeripheralDeviceTypes.OpticalDevice: if(header.WriteProtected) hdr[2] += 0x80; diff --git a/SCSI/SSC/BlockLimits.cs b/SCSI/SSC/BlockLimits.cs index b712ec1..8ea7209 100644 --- a/SCSI/SSC/BlockLimits.cs +++ b/SCSI/SSC/BlockLimits.cs @@ -44,15 +44,15 @@ namespace DiscImageChef.Decoders.SCSI.SSC public struct BlockLimitsData { /// - /// All blocks size must be multiple of 2^ + /// All blocks size must be multiple of 2^ /// public byte granularity; /// - /// Maximum block length in bytes + /// Maximum block length in bytes /// public uint maxBlockLen; /// - /// Minimum block length in bytes + /// Minimum block length in bytes /// public ushort minBlockLen; } @@ -86,8 +86,7 @@ namespace DiscImageChef.Decoders.SCSI.SSC if(decoded.Value.granularity > 0) sb.AppendFormat("Device's needs a block size granularity of 2^{0} ({1}) bytes", - decoded.Value.granularity, Math.Pow(2, decoded.Value.granularity)) - .AppendLine(); + decoded.Value.granularity, Math.Pow(2, decoded.Value.granularity)).AppendLine(); } return sb.ToString(); diff --git a/SCSI/SSC/DensitySupport.cs b/SCSI/SSC/DensitySupport.cs index ce03cd8..3933a7a 100644 --- a/SCSI/SSC/DensitySupport.cs +++ b/SCSI/SSC/DensitySupport.cs @@ -167,8 +167,7 @@ namespace DiscImageChef.Decoders.SCSI.SSC if(descriptor.duplicate) sb.AppendLine("\tThis descriptor is duplicated"); if(descriptor.defaultDensity) sb.AppendLine("\tThis is the default density on the drive"); sb.AppendFormat("\tDensity has {0} bits per mm, with {1} tracks in a {2} mm width tape", - descriptor.bpmm, descriptor.tracks, descriptor.width / (double)10) - .AppendLine(); + descriptor.bpmm, descriptor.tracks, descriptor.width / (double)10).AppendLine(); sb.AppendFormat("\tDensity maximum capacity is {0} megabytes", descriptor.capacity).AppendLine(); sb.AppendFormat("\tDensity description: {0}", descriptor.description).AppendLine(); sb.AppendLine(); @@ -258,8 +257,8 @@ namespace DiscImageChef.Decoders.SCSI.SSC sb.AppendLine(); } - sb.AppendFormat("\tMedium has a nominal length of {0} m in a {1} mm width tape", - descriptor.length, descriptor.width / (double)10).AppendLine(); + sb.AppendFormat("\tMedium has a nominal length of {0} m in a {1} mm width tape", descriptor.length, + descriptor.width / (double)10).AppendLine(); sb.AppendFormat("\tMedium description: {0}", descriptor.description).AppendLine(); sb.AppendLine(); } diff --git a/SCSI/Sense.cs b/SCSI/Sense.cs index fe174ab..63f0044 100644 --- a/SCSI/Sense.cs +++ b/SCSI/Sense.cs @@ -55,23 +55,23 @@ namespace DiscImageChef.Decoders.SCSI public struct StandardSense { /// - /// If set, is valid + /// If set, is valid /// public bool AddressValid; /// - /// Error class, 0 to 6 + /// Error class, 0 to 6 /// public byte ErrorClass; /// - /// Error type + /// Error type /// public byte ErrorType; /// - /// Private usage + /// Private usage /// public byte Private; /// - /// LBA where error happened + /// LBA where error happened /// public uint LBA; } @@ -79,67 +79,67 @@ namespace DiscImageChef.Decoders.SCSI public enum SenseKeys : byte { /// - /// No information to be reported, but bits should be checked + /// No information to be reported, but bits should be checked /// NoSense = 0, /// - /// Target performed some recovery to successfully complete last command + /// Target performed some recovery to successfully complete last command /// RecoveredError = 1, /// - /// Target is not ready + /// Target is not ready /// NotReady = 2, /// - /// Non-recoverable medium error occurred + /// Non-recoverable medium error occurred /// MediumError = 3, /// - /// Non-recoverable hardware error occurred + /// Non-recoverable hardware error occurred /// HardwareError = 4, /// - /// Target has received an illegal request + /// Target has received an illegal request /// IllegalRequest = 5, /// - /// Target requires initiator attention + /// Target requires initiator attention /// UnitAttention = 6, /// - /// A protected command has been denied + /// A protected command has been denied /// DataProtect = 7, /// - /// A blank block has been tried to read or a non-rewritable one to write + /// A blank block has been tried to read or a non-rewritable one to write /// BlankCheck = 8, /// - /// For private/vendor usage + /// For private/vendor usage /// PrivateUse = 9, /// - /// COPY command aborted + /// COPY command aborted /// CopyAborted = 0xA, /// - /// Command aborted + /// Command aborted /// AbortedCommand = 0xB, /// - /// SEARCH command has been satisfied + /// SEARCH command has been satisfied /// Equal = 0xC, /// - /// End-of-medium reached with data remaining in buffer + /// End-of-medium reached with data remaining in buffer /// VolumeOverflow = 0xD, /// - /// COMPARE failed + /// COMPARE failed /// Miscompare = 0xE, /// - /// Complated + /// Complated /// Completed = 0xF } @@ -152,52 +152,52 @@ namespace DiscImageChef.Decoders.SCSI public struct FixedSense { /// - /// If set, is valid + /// If set, is valid /// public bool InformationValid; /// - /// Contains number of current segment descriptor + /// Contains number of current segment descriptor /// public byte SegmentNumber; /// - /// If set indicates current command has read a filemark or a setmark + /// If set indicates current command has read a filemark or a setmark /// public bool Filemark; /// - /// If set indicates device has arrived end-of-medium + /// If set indicates device has arrived end-of-medium /// public bool EOM; /// - /// Means the requested logical block length did not match the logical block length on the medium + /// Means the requested logical block length did not match the logical block length on the medium /// public bool ILI; /// - /// Contains the sense key + /// Contains the sense key /// public SenseKeys SenseKey; /// - /// Additional information + /// Additional information /// public uint Information; /// - /// Additional sense length + /// Additional sense length /// public byte AdditionalLength; /// - /// Command specific information field + /// Command specific information field /// public uint CommandSpecific; /// - /// Additional sense code + /// Additional sense code /// public byte ASC; /// - /// Additional sense code qualifier + /// Additional sense code qualifier /// public byte ASCQ; public byte FieldReplaceable; /// - /// If set, is valid + /// If set, is valid /// public bool SKSV; public uint SenseKeySpecific; @@ -210,20 +210,20 @@ namespace DiscImageChef.Decoders.SCSI public struct DescriptorSense { /// - /// Contains the sense key + /// Contains the sense key /// public SenseKeys SenseKey; /// - /// Additional sense code + /// Additional sense code /// public byte ASC; /// - /// Additional sense code qualifier + /// Additional sense code qualifier /// public byte ASCQ; public bool Overflow; /// - /// The descriptors, indexed by type + /// The descriptors, indexed by type /// public Dictionary Descriptors; } @@ -243,7 +243,7 @@ namespace DiscImageChef.Decoders.SCSI public static class Sense { /// - /// Gets the SCSI SENSE type to help chosing the correct decoding function + /// Gets the SCSI SENSE type to help chosing the correct decoding function /// /// The type. /// Sense bytes. @@ -425,8 +425,8 @@ namespace DiscImageChef.Decoders.SCSI if((decoded.SenseKeySpecific & 0x200000) == 0x200000) sb.AppendFormat("Invalid value in bit {0} in field {1} of CDB", - (decoded.SenseKeySpecific & 0x70000) >> 16, - decoded.SenseKeySpecific & 0xFFFF).AppendLine(); + (decoded.SenseKeySpecific & 0x70000) >> 16, decoded.SenseKeySpecific & 0xFFFF) + .AppendLine(); else sb.AppendFormat("Invalid value in field {0} of CDB", decoded.SenseKeySpecific & 0xFFFF) .AppendLine(); @@ -471,7 +471,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decodes the information sense data descriptor + /// Decodes the information sense data descriptor /// /// The information value /// Descriptor. @@ -494,7 +494,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decodes the command-specific information sense data descriptor + /// Decodes the command-specific information sense data descriptor /// /// The command-specific information sense data descriptor. /// Descriptor. @@ -517,7 +517,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decodes the sense key specific sense data descriptor + /// Decodes the sense key specific sense data descriptor /// /// The sense key specific sense data descriptor. /// Descriptor. @@ -531,7 +531,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decodes the field replaceable unit sense data descriptor + /// Decodes the field replaceable unit sense data descriptor /// /// The field replaceable unit sense data descriptor. /// Descriptor. @@ -543,7 +543,7 @@ namespace DiscImageChef.Decoders.SCSI } /// - /// Decodes the another progress indication sense data descriptor + /// Decodes the another progress indication sense data descriptor /// /// The another progress indication sense data descriptor. /// Descriptor. diff --git a/SCSI/Types.cs b/SCSI/Types.cs index 32fcddd..b6c7623 100644 --- a/SCSI/Types.cs +++ b/SCSI/Types.cs @@ -41,548 +41,553 @@ namespace DiscImageChef.Decoders.SCSI #region Medium Types defined in ECMA-111 for Direct-Access devices /// - /// ECMA-54: 200 mm Flexible Disk Cartridge using Two-Frequency Recording at 13262 ftprad on One Side + /// ECMA-54: 200 mm Flexible Disk Cartridge using Two-Frequency Recording at 13262 ftprad on One Side /// ECMA54 = 0x09, /// - /// ECMA-59 & ANSI X3.121-1984: 200 mm Flexible Disk Cartridge using Two-Frequency Recording at 13262 ftprad on Both Sides + /// ECMA-59 & ANSI X3.121-1984: 200 mm Flexible Disk Cartridge using Two-Frequency Recording at 13262 ftprad on + /// Both Sides /// ECMA59 = 0x0A, /// - /// ECMA-69: 200 mm Flexible Disk Cartridge using MFM Recording at 13262 ftprad on Both Sides + /// ECMA-69: 200 mm Flexible Disk Cartridge using MFM Recording at 13262 ftprad on Both Sides /// ECMA69 = 0x0B, /// - /// ECMA-66: 130 mm Flexible Disk Cartridge using Two-Frequency Recording at 7958 ftprad on One Side + /// ECMA-66: 130 mm Flexible Disk Cartridge using Two-Frequency Recording at 7958 ftprad on One Side /// ECMA66 = 0x0E, /// - /// ECMA-70 & ANSI X3.125-1985: 130 mm Flexible Disk Cartridge using MFM Recording at 7958 ftprad on Both Sides; 1,9 Tracks per mm + /// ECMA-70 & ANSI X3.125-1985: 130 mm Flexible Disk Cartridge using MFM Recording at 7958 ftprad on Both Sides; + /// 1,9 Tracks per mm /// ECMA70 = 0x12, /// - /// ECMA-78 & ANSI X3.126-1986: 130 mm Flexible Disk Cartridge using MFM Recording at 7958 ftprad on Both Sides; 3,8 Tracks per mm + /// ECMA-78 & ANSI X3.126-1986: 130 mm Flexible Disk Cartridge using MFM Recording at 7958 ftprad on Both Sides; + /// 3,8 Tracks per mm /// ECMA78 = 0x16, /// - /// ECMA-99 & ISO 8630-1985: 130 mm Flexible Disk Cartridge using MFM Recording at 13262 ftprad on Both Sides; 3,8 Tracks per mm + /// ECMA-99 & ISO 8630-1985: 130 mm Flexible Disk Cartridge using MFM Recording at 13262 ftprad on Both Sides; 3,8 + /// Tracks per mm /// ECMA99 = 0x1A, /// - /// ECMA-100 & ANSI X3.137: 90 mm Flexible Disk Cartridge using MFM Recording at 7859 ftprad on Both Sides; 5,3 Tracks per mm + /// ECMA-100 & ANSI X3.137: 90 mm Flexible Disk Cartridge using MFM Recording at 7859 ftprad on Both Sides; 5,3 + /// Tracks per mm /// ECMA100 = 0x1E, #endregion Medium Types defined in ECMA-111 for Direct-Access devices #region Medium Types defined in SCSI-2 for Direct-Access devices /// - /// Unspecified single sided flexible disk + /// Unspecified single sided flexible disk /// Unspecified_SS = 0x01, /// - /// Unspecified double sided flexible disk + /// Unspecified double sided flexible disk /// Unspecified_DS = 0x02, /// - /// ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 1 side + /// ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 1 side /// X3_73 = 0x05, /// - /// ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 2 sides + /// ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 2 sides /// X3_73_DS = 0x06, /// - /// ANSI X3.80-1980: 130 mm, 3979 ftprad, 1,9 Tracks per mm, 1 side + /// ANSI X3.80-1980: 130 mm, 3979 ftprad, 1,9 Tracks per mm, 1 side /// X3_82 = 0x0D, /// - /// 6,3 mm tape with 12 tracks at 394 ftpmm + /// 6,3 mm tape with 12 tracks at 394 ftpmm /// Tape12 = 0x40, /// - /// 6,3 mm tape with 24 tracks at 394 ftpmm + /// 6,3 mm tape with 24 tracks at 394 ftpmm /// Tape24 = 0x44, #endregion Medium Types defined in SCSI-2 for Direct-Access devices #region Medium Types defined in SCSI-3 SBC-1 for Optical devices /// - /// Read-only medium + /// Read-only medium /// ReadOnly = 0x01, /// - /// Write-once Read-many medium + /// Write-once Read-many medium /// WORM = 0x02, /// - /// Erasable medium + /// Erasable medium /// Erasable = 0x03, /// - /// Combination of read-only and write-once medium + /// Combination of read-only and write-once medium /// RO_WORM = 0x04, /// - /// Combination of read-only and erasable medium + /// Combination of read-only and erasable medium /// RO_RW = 0x05, /// - /// Combination of write-once and erasable medium + /// Combination of write-once and erasable medium /// WORM_RW = 0x06, #endregion Medium Types defined in SCSI-3 SBC-1 for Optical devices #region Medium Types defined in SCSI-2 for MultiMedia devices /// - /// 120 mm CD-ROM + /// 120 mm CD-ROM /// CDROM = 0x01, /// - /// 120 mm Compact Disc Digital Audio + /// 120 mm Compact Disc Digital Audio /// CDDA = 0x02, /// - /// 120 mm Compact Disc with data and audio + /// 120 mm Compact Disc with data and audio /// MixedCD = 0x03, /// - /// 80 mm CD-ROM + /// 80 mm CD-ROM /// CDROM_80 = 0x05, /// - /// 80 mm Compact Disc Digital Audio + /// 80 mm Compact Disc Digital Audio /// CDDA_80 = 0x06, /// - /// 80 mm Compact Disc with data and audio + /// 80 mm Compact Disc with data and audio /// MixedCD_80 = 0x07, #endregion Medium Types defined in SCSI-2 for MultiMedia devices #region Medium Types defined in SFF-8020i /// - /// Unknown medium type + /// Unknown medium type /// Unknown_CD = 0x00, /// - /// 120 mm Hybrid disc (Photo CD) + /// 120 mm Hybrid disc (Photo CD) /// HybridCD = 0x04, /// - /// Unknown size CD-R + /// Unknown size CD-R /// Unknown_CDR = 0x10, /// - /// 120 mm CD-R with data only + /// 120 mm CD-R with data only /// CDR = 0x11, /// - /// 120 mm CD-R with audio only + /// 120 mm CD-R with audio only /// CDR_DA = 0x12, /// - /// 120 mm CD-R with data and audio + /// 120 mm CD-R with data and audio /// CDR_Mixed = 0x13, /// - /// 120 mm Hybrid CD-R (Photo CD) + /// 120 mm Hybrid CD-R (Photo CD) /// HybridCDR = 0x14, /// - /// 80 mm CD-R with data only + /// 80 mm CD-R with data only /// CDR_80 = 0x15, /// - /// 80 mm CD-R with audio only + /// 80 mm CD-R with audio only /// CDR_DA_80 = 0x16, /// - /// 80 mm CD-R with data and audio + /// 80 mm CD-R with data and audio /// CDR_Mixed_80 = 0x17, /// - /// 80 mm Hybrid CD-R (Photo CD) + /// 80 mm Hybrid CD-R (Photo CD) /// HybridCDR_80 = 0x18, /// - /// Unknown size CD-RW + /// Unknown size CD-RW /// Unknown_CDRW = 0x20, /// - /// 120 mm CD-RW with data only + /// 120 mm CD-RW with data only /// CDRW = 0x21, /// - /// 120 mm CD-RW with audio only + /// 120 mm CD-RW with audio only /// CDRW_DA = 0x22, /// - /// 120 mm CD-RW with data and audio + /// 120 mm CD-RW with data and audio /// CDRW_Mixed = 0x23, /// - /// 120 mm Hybrid CD-RW (Photo CD) + /// 120 mm Hybrid CD-RW (Photo CD) /// HybridCDRW = 0x24, /// - /// 80 mm CD-RW with data only + /// 80 mm CD-RW with data only /// CDRW_80 = 0x25, /// - /// 80 mm CD-RW with audio only + /// 80 mm CD-RW with audio only /// CDRW_DA_80 = 0x26, /// - /// 80 mm CD-RW with data and audio + /// 80 mm CD-RW with data and audio /// CDRW_Mixed_80 = 0x27, /// - /// 80 mm Hybrid CD-RW (Photo CD) + /// 80 mm Hybrid CD-RW (Photo CD) /// HybridCDRW_80 = 0x28, /// - /// Unknown size HD disc + /// Unknown size HD disc /// Unknown_HD = 0x30, /// - /// 120 mm HD disc + /// 120 mm HD disc /// HD = 0x31, /// - /// 80 mm HD disc + /// 80 mm HD disc /// HD_80 = 0x35, /// - /// No disc inserted, tray closed or caddy inserted + /// No disc inserted, tray closed or caddy inserted /// NoDisc = 0x70, /// - /// Tray open or no caddy inserted + /// Tray open or no caddy inserted /// TrayOpen = 0x71, /// - /// Tray closed or caddy inserted but medium error + /// Tray closed or caddy inserted but medium error /// MediumError = 0x72, #endregion Medium Types defined in SFF-8020i #region Medium Types defined in USB Mass Storage Class - UFI Command Specification /// - /// 3.5-inch, 135 tpi, 12362 bits/radian, double-sided MFM (aka 1.25Mb) + /// 3.5-inch, 135 tpi, 12362 bits/radian, double-sided MFM (aka 1.25Mb) /// Type3Floppy = 0x93, /// - /// 3.5-inch, 135 tpi, 15916 bits/radian, double-sided MFM (aka 1.44Mb) + /// 3.5-inch, 135 tpi, 15916 bits/radian, double-sided MFM (aka 1.44Mb) /// HDFloppy = 0x94, #endregion Medium Types defined in USB Mass Storage Class - UFI Command Specification #region Medium Types defined in INF-8070 /// - /// Unknown type block device + /// Unknown type block device /// UnknownBlockDevice = 0x40, /// - /// Read-only block device + /// Read-only block device /// ReadOnlyBlockDevice = 0x41, /// - /// Read/Write block device + /// Read/Write block device /// ReadWriteBlockDevice = 0x42, #endregion Medium Types defined in INF-8070 #region Medium Types found in vendor documents /// - /// LTO WORM as reported by HP drives + /// LTO WORM as reported by HP drives /// LTOWORM = 0x01, /// - /// LTO cleaning cartridge as reported by Certance/Seagate drives + /// LTO cleaning cartridge as reported by Certance/Seagate drives /// LTOCleaning = 0x01, /// - /// Direct-overwrite magneto-optical + /// Direct-overwrite magneto-optical /// DOW = 0x07, /// - /// LTO Ultrium + /// LTO Ultrium /// LTO = 0x18, /// - /// LTO Ultrium-2 + /// LTO Ultrium-2 /// LTO2 = 0x28, /// - /// DC-2900SL + /// DC-2900SL /// DC2900SL = 0x31, /// - /// MLR-1 + /// MLR-1 /// MLR1 = 0x33, /// - /// DDS-3 + /// DDS-3 /// DDS3 = 0x33, /// - /// DC-9200 + /// DC-9200 /// DC9200 = 0x34, /// - /// DDS-4 + /// DDS-4 /// DDS4 = 0x34, /// - /// DAT-72 + /// DAT-72 /// DAT72 = 0x35, /// - /// LTO Ultrium-3 + /// LTO Ultrium-3 /// LTO3 = 0x38, /// - /// LTO Ultrium-3 WORM + /// LTO Ultrium-3 WORM /// LTO3WORM = 0x3C, /// - /// DDS cleaning cartridge + /// DDS cleaning cartridge /// DDSCleaning = 0x3F, /// - /// DC-9250 + /// DC-9250 /// DC9250 = 0x40, /// - /// SLR-32 + /// SLR-32 /// SLR32 = 0x43, /// - /// MLR-1SL + /// MLR-1SL /// MLR1SL = 0x44, /// - /// SLRtape-50 + /// SLRtape-50 /// SLRtape50 = 0x47, /// - /// LTO Ultrium-4 + /// LTO Ultrium-4 /// LTO4 = 0x48, /// - /// LTO Ultrium-4 WORM + /// LTO Ultrium-4 WORM /// LTO4WORM = 0x4C, /// - /// SLRtape-50SL + /// SLRtape-50SL /// SLRtape50SL = 0x50, /// - /// SLR-32SL + /// SLR-32SL /// SLR32SL = 0x54, /// - /// SLR-5 + /// SLR-5 /// SLR5 = 0x55, /// - /// SLR-5SL + /// SLR-5SL /// SLR5SL = 0x56, /// - /// LTO Ultrium-5 + /// LTO Ultrium-5 /// LTO5 = 0x58, /// - /// LTO Ultrium-5 WORM + /// LTO Ultrium-5 WORM /// LTO5WORM = 0x5C, /// - /// SLRtape-7 + /// SLRtape-7 /// SLRtape7 = 0x63, /// - /// SLRtape-7SL + /// SLRtape-7SL /// SLRtape7SL = 0x64, /// - /// SLRtape-24 + /// SLRtape-24 /// SLRtape24 = 0x65, /// - /// SLRtape-24SL + /// SLRtape-24SL /// SLRtape24SL = 0x66, /// - /// LTO Ultrium-6 + /// LTO Ultrium-6 /// LTO6 = 0x68, /// - /// LTO Ultrium-6 WORM + /// LTO Ultrium-6 WORM /// LTO6WORM = 0x6C, /// - /// SLRtape-140 + /// SLRtape-140 /// SLRtape140 = 0x70, /// - /// SLRtape-40 + /// SLRtape-40 /// SLRtape40 = 0x73, /// - /// SLRtape-60 + /// SLRtape-60 /// SLRtape60 = 0x74, /// - /// SLRtape-75 + /// SLRtape-75 /// SLRtape75 = 0x74, /// - /// SLRtape-100 + /// SLRtape-100 /// SLRtape100 = 0x75, /// - /// SLR-40 or SLR-60 or SLR-100 + /// SLR-40 or SLR-60 or SLR-100 /// SLR40_60_100 = 0x76, /// - /// LTO Ultrium-7 + /// LTO Ultrium-7 /// LTO7 = 0x78, /// - /// LTO Ultrium-7 WORM + /// LTO Ultrium-7 WORM /// LTO7WORM = 0x7C, /// - /// HP LTO emulating a CD + /// HP LTO emulating a CD /// LTOCD = 0x80, /// - /// Exatape 15m + /// Exatape 15m /// Exatape15m = 0x81, /// - /// IBM MagStar + /// IBM MagStar /// MagStar = 0x81, /// - /// VXA + /// VXA /// VXA = 0x81, /// - /// CompactTape I + /// CompactTape I /// CT1 = 0x82, /// - /// Exatape 28m + /// Exatape 28m /// Exatape28m = 0x82, /// - /// CompactTape II + /// CompactTape II /// CT2 = 0x82, /// - /// VXA-2 + /// VXA-2 /// VXA2 = 0x82, /// - /// VXA-3 + /// VXA-3 /// VXA3 = 0x82, /// - /// Exatape 54m + /// Exatape 54m /// Exatape54m = 0x83, /// - /// DLTtape III + /// DLTtape III /// DLTtapeIII = 0x83, /// - /// Exatape 80m + /// Exatape 80m /// Exatape80m = 0x84, /// - /// DLTtape IIIxt + /// DLTtape IIIxt /// DLTtapeIIIxt = 0x84, /// - /// Exatape 106m + /// Exatape 106m /// Exatape106m = 0x85, /// - /// DLTtape IV + /// DLTtape IV /// DLTtapeIV = 0x85, /// - /// Travan 5 + /// Travan 5 /// Travan5 = 0x85, /// - /// Exatape 106m XL + /// Exatape 106m XL /// Exatape106mXL = 0x86, /// - /// SuperDLT I + /// SuperDLT I /// SDLT1 = 0x86, /// - /// SuperDLT II + /// SuperDLT II /// SDLT2 = 0x87, /// - /// VStape I + /// VStape I /// VStapeI = 0x90, /// - /// DLTtape S4 + /// DLTtape S4 /// DLTtapeS4 = 0x91, /// - /// Travan 7 + /// Travan 7 /// Travan7 = 0x95, /// - /// Exatape 22m + /// Exatape 22m /// Exatape22m = 0xC1, /// - /// Exatape 40m + /// Exatape 40m /// Exatape40m = 0xC2, /// - /// Exatape 76m + /// Exatape 76m /// Exatape76m = 0xC3, /// - /// Exatape 112m + /// Exatape 112m /// Exatape112m = 0xC4, /// - /// Exatape 22m AME + /// Exatape 22m AME /// Exatape22mAME = 0xD1, /// - /// Exatape 170m + /// Exatape 170m /// Exatape170m = 0xD2, /// - /// Exatape 125m + /// Exatape 125m /// Exatape125m = 0xD3, /// - /// Exatape 45m + /// Exatape 45m /// Exatape45m = 0xD4, /// - /// Exatape 225m + /// Exatape 225m /// Exatape225m = 0xD5, /// - /// Exatape 150m + /// Exatape 150m /// Exatape150m = 0xD6, /// - /// Exatape 75m + /// Exatape 75m /// Exatape75m = 0xD7, #endregion Medium Types found in vendor documents @@ -595,442 +600,443 @@ namespace DiscImageChef.Decoders.SCSI #region Density Types defined in ECMA-111 for Direct-Access devices /// - /// 7958 flux transitions per radian + /// 7958 flux transitions per radian /// Flux7958 = 0x01, /// - /// 13262 flux transitions per radian + /// 13262 flux transitions per radian /// Flux13262 = 0x02, /// - /// 15916 flux transitions per radian + /// 15916 flux transitions per radian /// Flux15916 = 0x03, #endregion Density Types defined in ECMA-111 for Direct-Access devices #region Density Types defined in ECMA-111 for Sequential-Access devices /// - /// ECMA-62 & ANSI X3.22-1983: 12,7 mm 9-Track Magnetic Tape, 32 ftpmm, NRZI, 32 cpmm + /// ECMA-62 & ANSI X3.22-1983: 12,7 mm 9-Track Magnetic Tape, 32 ftpmm, NRZI, 32 cpmm /// ECMA62 = 0x01, /// - /// ECMA-62 & ANSI X3.39-1986: 12,7 mm 9-Track Magnetic Tape, 126 ftpmm, Phase Encoding, 63 cpmm + /// ECMA-62 & ANSI X3.39-1986: 12,7 mm 9-Track Magnetic Tape, 126 ftpmm, Phase Encoding, 63 cpmm /// ECMA62_Phase = 0x02, /// - /// ECMA-62 & ANSI X3.54-1986: 12,7 mm 9-Track Magnetic Tape, 356 ftpmm, NRZI, 245 cpmm GCR + /// ECMA-62 & ANSI X3.54-1986: 12,7 mm 9-Track Magnetic Tape, 356 ftpmm, NRZI, 245 cpmm GCR /// ECMA62_GCR = 0x03, /// - /// ECMA-79 & ANSI X3.116-1986: 6,30 mm Magnetic Tape Cartridge using MFM Recording at 252 ftpmm + /// ECMA-79 & ANSI X3.116-1986: 6,30 mm Magnetic Tape Cartridge using MFM Recording at 252 ftpmm /// ECMA79 = 0x07, /// - /// Draft ECMA & ANSI X3B5/87-099: 12,7 mm Magnetic Tape Cartridge using IFM Recording on 18 Tracks at 1944 ftpmm, GCR (IBM 3480, 3490, 3490E) + /// Draft ECMA & ANSI X3B5/87-099: 12,7 mm Magnetic Tape Cartridge using IFM Recording on 18 Tracks at 1944 ftpmm, + /// GCR (IBM 3480, 3490, 3490E) /// IBM3480 = 0x09, /// - /// ECMA-46 & ANSI X3.56-1986: 6,30 mm Magnetic Tape Cartridge, Phase Encoding, 63 bpmm + /// ECMA-46 & ANSI X3.56-1986: 6,30 mm Magnetic Tape Cartridge, Phase Encoding, 63 bpmm /// ECMA46 = 0x0B, /// - /// ECMA-98: 6,30 mm Magnetic Tape Cartridge, NRZI Recording, 394 ftpmm + /// ECMA-98: 6,30 mm Magnetic Tape Cartridge, NRZI Recording, 394 ftpmm /// ECMA98 = 0x0E, #endregion Density Types defined in ECMA-111 for Sequential-Access devices #region Density Types defined in SCSI-2 for Sequential-Access devices /// - /// ANXI X3.136-1986: 6,35 mm 4 or 9-Track Magnetic Tape Cartridge, 315 bpmm, GCR (QIC-24) + /// ANXI X3.136-1986: 6,35 mm 4 or 9-Track Magnetic Tape Cartridge, 315 bpmm, GCR (QIC-24) /// X3_136 = 0x05, /// - /// ANXI X3.157-1987: 12,7 mm 9-Track Magnetic Tape, 126 bpmm, Phase Encoding + /// ANXI X3.157-1987: 12,7 mm 9-Track Magnetic Tape, 126 bpmm, Phase Encoding /// X3_157 = 0x06, /// - /// ANXI X3.158-1987: 3,81 mm 4-Track Magnetic Tape Cassette, 315 bpmm, GCR + /// ANXI X3.158-1987: 3,81 mm 4-Track Magnetic Tape Cassette, 315 bpmm, GCR /// X3_158 = 0x08, /// - /// ANXI X3B5/86-199: 12,7 mm 22-Track Magnetic Tape Cartridge, 262 bpmm, MFM + /// ANXI X3B5/86-199: 12,7 mm 22-Track Magnetic Tape Cartridge, 262 bpmm, MFM /// X3B5_86 = 0x0A, /// - /// HI-TC1: 12,7 mm 24-Track Magnetic Tape Cartridge, 500 bpmm, GCR + /// HI-TC1: 12,7 mm 24-Track Magnetic Tape Cartridge, 500 bpmm, GCR /// HiTC1 = 0x0C, /// - /// HI-TC2: 12,7 mm 24-Track Magnetic Tape Cartridge, 999 bpmm, GCR + /// HI-TC2: 12,7 mm 24-Track Magnetic Tape Cartridge, 999 bpmm, GCR /// HiTC2 = 0x0D, /// - /// QIC-120: 6,3 mm 15-Track Magnetic Tape Cartridge, 394 bpmm, GCR + /// QIC-120: 6,3 mm 15-Track Magnetic Tape Cartridge, 394 bpmm, GCR /// QIC120 = 0x0F, /// - /// QIC-150: 6,3 mm 18-Track Magnetic Tape Cartridge, 394 bpmm, GCR + /// QIC-150: 6,3 mm 18-Track Magnetic Tape Cartridge, 394 bpmm, GCR /// QIC150 = 0x10, /// - /// QIC-320: 6,3 mm 26-Track Magnetic Tape Cartridge, 630 bpmm, GCR + /// QIC-320: 6,3 mm 26-Track Magnetic Tape Cartridge, 630 bpmm, GCR /// QIC320 = 0x11, /// - /// QIC-1350: 6,3 mm 30-Track Magnetic Tape Cartridge, 2034 bpmm, RLL + /// QIC-1350: 6,3 mm 30-Track Magnetic Tape Cartridge, 2034 bpmm, RLL /// QIC1350 = 0x12, /// - /// ANXI X3B5/88-185A: 3,81 mm Magnetic Tape Cassette, 2400 bpmm, DDS + /// ANXI X3B5/88-185A: 3,81 mm Magnetic Tape Cassette, 2400 bpmm, DDS /// X3B5_88 = 0x13, /// - /// ANXI X3.202-1991: 8 mm Magnetic Tape Cassette, 1703 bpmm, RLL + /// ANXI X3.202-1991: 8 mm Magnetic Tape Cassette, 1703 bpmm, RLL /// X3_202 = 0x14, /// - /// ECMA TC17: 8 mm Magnetic Tape Cassette, 1789 bpmm, RLL + /// ECMA TC17: 8 mm Magnetic Tape Cassette, 1789 bpmm, RLL /// ECMA_TC17 = 0x15, /// - /// ANXI X3.193-1990: 12,7 mm 48-Track Magnetic Tape Cartridge, 394 bpmm, MFM + /// ANXI X3.193-1990: 12,7 mm 48-Track Magnetic Tape Cartridge, 394 bpmm, MFM /// X3_193 = 0x16, /// - /// ANXI X3B5/97-174: 12,7 mm 48-Track Magnetic Tape Cartridge, 1673 bpmm, MFM + /// ANXI X3B5/97-174: 12,7 mm 48-Track Magnetic Tape Cartridge, 1673 bpmm, MFM /// X3B5_91 = 0x17, #endregion Density Types defined in SCSI-2 for Sequential-Access devices #region Density Types defined in SCSI-2 for MultiMedia devices /// - /// User data only + /// User data only /// User = 0x01, /// - /// User data plus auxiliary data field + /// User data plus auxiliary data field /// UserAuxiliary = 0x02, /// - /// 4-byt tag field, user data plus auxiliary data + /// 4-byt tag field, user data plus auxiliary data /// UserAuxiliaryTag = 0x03, /// - /// Audio information only + /// Audio information only /// Audio = 0x04, #endregion Density Types defined in SCSI-2 for MultiMedia devices #region Density Types defined in SCSI-2 for Optical devices /// - /// ISO/IEC 10090: 86 mm Read/Write single-sided optical disc with 12500 tracks + /// ISO/IEC 10090: 86 mm Read/Write single-sided optical disc with 12500 tracks /// ISO10090 = 0x01, /// - /// 89 mm Read/Write double-sided optical disc with 12500 tracks + /// 89 mm Read/Write double-sided optical disc with 12500 tracks /// D581 = 0x02, /// - /// ANSI X3.212: 130 mm Read/Write double-sided optical disc with 18750 tracks + /// ANSI X3.212: 130 mm Read/Write double-sided optical disc with 18750 tracks /// X3_212 = 0x03, /// - /// ANSI X3.191: 130 mm Write-Once double-sided optical disc with 30000 tracks + /// ANSI X3.191: 130 mm Write-Once double-sided optical disc with 30000 tracks /// X3_191 = 0x04, /// - /// ANSI X3.214: 130 mm Write-Once double-sided optical disc with 20000 tracks + /// ANSI X3.214: 130 mm Write-Once double-sided optical disc with 20000 tracks /// X3_214 = 0x05, /// - /// ANSI X3.211: 130 mm Write-Once double-sided optical disc with 18750 tracks + /// ANSI X3.211: 130 mm Write-Once double-sided optical disc with 18750 tracks /// X3_211 = 0x06, /// - /// 200 mm optical disc + /// 200 mm optical disc /// D407 = 0x07, /// - /// ISO/IEC 13614: 300 mm double-sided optical disc + /// ISO/IEC 13614: 300 mm double-sided optical disc /// ISO13614 = 0x08, /// - /// ANSI X3.200: 356 mm double-sided optical disc with 56350 tracks + /// ANSI X3.200: 356 mm double-sided optical disc with 56350 tracks /// X3_200 = 0x09, #endregion Density Types defined in SCSI-2 for Optical devices #region Density Types found in vendor documents /// - /// QIC-11 + /// QIC-11 /// QIC11 = 0x04, /// - /// CompactTape I + /// CompactTape I /// CT1 = 0x0A, /// - /// Exabyte 8200 format + /// Exabyte 8200 format /// Ex8200 = 0x14, /// - /// Exabyte 8500 format + /// Exabyte 8500 format /// Ex8500 = 0x15, /// - /// CompactTape II + /// CompactTape II /// CT2 = 0x16, /// - /// DLTtape III 42500 bpi + /// DLTtape III 42500 bpi /// DLT3_42k = 0x17, /// - /// DLTtape III 56 track + /// DLTtape III 56 track /// DLT3_56t = 0x18, /// - /// DLTtape III 62500 bpi + /// DLTtape III 62500 bpi /// DLT3_62k = 0x19, /// - /// DLTtape IV + /// DLTtape IV /// DLT4 = 0x1A, /// - /// DLTtape IV 85937 bpi + /// DLTtape IV 85937 bpi /// DLT4_85k = 0x1B, /// - /// DDS-2 + /// DDS-2 /// DDS2 = 0x24, /// - /// DDS-3 + /// DDS-3 /// DDS3 = 0x25, /// - /// DDS-4 + /// DDS-4 /// DDS4 = 0x26, /// - /// Exabyte Mammoth + /// Exabyte Mammoth /// Mammoth = 0x27, /// - /// IBM 3490 & 3490E + /// IBM 3490 & 3490E /// IBM3490E = 0x28, /// - /// Exabyte Mammoth-2 + /// Exabyte Mammoth-2 /// Mammoth2 = 0x28, /// - /// IBM 3590 + /// IBM 3590 /// IBM3590 = 0x29, /// - /// IBM 3590E + /// IBM 3590E /// IBM3590E = 0x2A, /// - /// AIT-1 + /// AIT-1 /// AIT1 = 0x30, /// - /// AIT-2 + /// AIT-2 /// AIT2 = 0x31, /// - /// AIT-3 + /// AIT-3 /// AIT3 = 0x32, /// - /// DLTtape IV 123090 bpi + /// DLTtape IV 123090 bpi /// DLT4_123k = 0x40, /// - /// Ultrium-1 + /// Ultrium-1 /// LTO1 = 0x40, /// - /// Super AIT-1 + /// Super AIT-1 /// SAIT1 = 0x40, /// - /// DLTtape IV 85937 bpi + /// DLTtape IV 85937 bpi /// DLT4_98k = 0x41, /// - /// Ultrium-2 as reported by the Certance drive + /// Ultrium-2 as reported by the Certance drive /// LTO2Old = 0x41, /// - /// Ultrium-2 + /// Ultrium-2 /// LTO2 = 0x42, /// - /// T9840 + /// T9840 /// T9840 = 0x42, /// - /// T9940 + /// T9940 /// T9940 = 0x43, /// - /// Ultrium- + /// Ultrium- /// LTO3 = 0x44, /// - /// T9840C + /// T9840C /// T9840C = 0x45, /// - /// Travan 5 + /// Travan 5 /// Travan5 = 0x46, /// - /// Ultrium-4 + /// Ultrium-4 /// LTO4 = 0x46, /// - /// T9840D + /// T9840D /// T9840D = 0x46, /// - /// DAT-72 + /// DAT-72 /// DAT72 = 0x47, /// - /// Super DLTtape I 133000 bpi + /// Super DLTtape I 133000 bpi /// SDLT1_133k = 0x48, /// - /// Super DLTtape I + /// Super DLTtape I /// SDLT1 = 0x49, /// - /// T10000A + /// T10000A /// T10000A = 0x4A, /// - /// Super DLTtape II + /// Super DLTtape II /// SDLT2 = 0x4A, /// - /// DLTtape S4 + /// DLTtape S4 /// DLTS4 = 0x4B, /// - /// T10000B + /// T10000B /// T10000B = 0x4B, /// - /// T10000C + /// T10000C /// T10000C = 0x4C, /// - /// T10000D + /// T10000D /// T10000D = 0x4D, /// - /// VStape I + /// VStape I /// VStape1 = 0x40, /// - /// Ultrium-5 + /// Ultrium-5 /// LTO5 = 0x58, /// - /// Ultrium-6 + /// Ultrium-6 /// LTO6 = 0x5A, /// - /// Ultrium-7 + /// Ultrium-7 /// LTO7 = 0x5C, /// - /// DLTtape III 62500 bpi secondary code + /// DLTtape III 62500 bpi secondary code /// DLT3_62kAlt = 0x80, /// - /// VXA-1 + /// VXA-1 /// VXA1 = 0x80, /// - /// DLTtape III compressed + /// DLTtape III compressed /// DLT3c = 0x81, /// - /// VXA-2 + /// VXA-2 /// VXA2 = 0x81, /// - /// DLTtape IV secondary code + /// DLTtape IV secondary code /// DLT4Alt = 0x82, /// - /// VXA-3 + /// VXA-3 /// VXA3 = 0x82, /// - /// DLTtape IV compressed + /// DLTtape IV compressed /// DLT4c = 0x83, /// - /// DLTtape IV 85937 bpi secondary code + /// DLTtape IV 85937 bpi secondary code /// DLT4_85kAlt = 0x84, /// - /// DLTtape IV 85937 bpi compressed + /// DLTtape IV 85937 bpi compressed /// DLT4c_85k = 0x85, /// - /// DLTtape IV 123090 bpi secondary code + /// DLTtape IV 123090 bpi secondary code /// DLT4_123kAlt = 0x86, /// - /// DLTtape IV 123090 bpi compressed + /// DLTtape IV 123090 bpi compressed /// DLT4c_123k = 0x87, /// - /// DLTtape IV 98250 bpi secondary code + /// DLTtape IV 98250 bpi secondary code /// DLT4_98kAlt = 0x88, /// - /// DLTtape IV 98250 bpi compressed + /// DLTtape IV 98250 bpi compressed /// DLT4c_98k = 0x89, /// - /// Exabyte compressed 8200 format + /// Exabyte compressed 8200 format /// Ex8500c = 0x8C, /// - /// Exabyte compressed 8500 format + /// Exabyte compressed 8500 format /// Ex8200c = 0x90, /// - /// Super DLTtape I secondary code + /// Super DLTtape I secondary code /// SDLT1Alt = 0x90, /// - /// Super DLTtape I compressed + /// Super DLTtape I compressed /// SDLT1c = 0x91, /// - /// Super DLTtape I 133000 bpi secondary code + /// Super DLTtape I 133000 bpi secondary code /// SDLT1_133kAlt = 0x92, /// - /// Super DLTtape I 133000 bpi compressed + /// Super DLTtape I 133000 bpi compressed /// SDLT1c_133k = 0x93, /// - /// VStape I secondary code + /// VStape I secondary code /// VStape1Alt = 0x98, /// - /// VStape I compressed + /// VStape I compressed /// VStape1c = 0x99, #endregion Density Types found in vendor documents diff --git a/Sega/CD.cs b/Sega/CD.cs index fc6f753..57b3af0 100644 --- a/Sega/CD.cs +++ b/Sega/CD.cs @@ -189,8 +189,10 @@ namespace DiscImageChef.Decoders.Sega provider); } #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch { // ignored - } + catch + { + // ignored + } #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body } diff --git a/Xbox/DMI.cs b/Xbox/DMI.cs index 59121ed..07bd14c 100644 --- a/Xbox/DMI.cs +++ b/Xbox/DMI.cs @@ -74,36 +74,36 @@ namespace DiscImageChef.Decoders.Xbox public struct XboxDMI { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// 0x01 in XGD + /// Bytes 4 to 7 + /// 0x01 in XGD /// public uint Version; /// - /// Bytes 12 to 16 - /// Catalogue number in XX-XXXXX-X + /// Bytes 12 to 16 + /// Catalogue number in XX-XXXXX-X /// public string CatalogNumber; /// - /// Bytes 20 to 27 - /// DMI timestamp + /// Bytes 20 to 27 + /// DMI timestamp /// public long Timestamp; } @@ -111,42 +111,42 @@ namespace DiscImageChef.Decoders.Xbox public struct Xbox360DMI { /// - /// Bytes 0 to 1 - /// Data length + /// Bytes 0 to 1 + /// Data length /// public ushort DataLength; /// - /// Byte 2 - /// Reserved + /// Byte 2 + /// Reserved /// public byte Reserved1; /// - /// Byte 3 - /// Reserved + /// Byte 3 + /// Reserved /// public byte Reserved2; /// - /// Bytes 4 to 7 - /// 0x02 in XGD2 and XGD3 + /// Bytes 4 to 7 + /// 0x02 in XGD2 and XGD3 /// public uint Version; /// - /// Bytes 20 to 27 - /// DMI timestamp + /// Bytes 20 to 27 + /// DMI timestamp /// public long Timestamp; /// - /// Bytes 36 to 51 - /// Media ID in hex XXXXXXXXXXXX-XXXXXXXX + /// Bytes 36 to 51 + /// Media ID in hex XXXXXXXXXXXX-XXXXXXXX /// public byte[] MediaID; /// - /// Bytes 68 to 83 - /// Catalogue number in XX-XXXX-XX-XXY-XXX, Y not always exists + /// Bytes 68 to 83 + /// Catalogue number in XX-XXXX-XX-XXY-XXX, Y not always exists /// public string CatalogNumber; } @@ -235,7 +235,8 @@ namespace DiscImageChef.Decoders.Xbox sb.Append("-"); - switch(decoded.CatalogNumber.Length) { + switch(decoded.CatalogNumber.Length) + { case 13: for(int i = 8; i < 10; i++) sb.AppendFormat("{0}", decoded.CatalogNumber[i]); diff --git a/Xbox/SS.cs b/Xbox/SS.cs index c66a38a..dd77bfb 100644 --- a/Xbox/SS.cs +++ b/Xbox/SS.cs @@ -46,148 +46,148 @@ namespace DiscImageChef.Decoders.Xbox public struct SecuritySector { /// - /// Byte 0, bits 7 to 4 - /// Disk category field + /// Byte 0, bits 7 to 4 + /// Disk category field /// public DiskCategory DiskCategory; /// - /// Byte 0, bits 3 to 0 - /// Media version + /// Byte 0, bits 3 to 0 + /// Media version /// public byte PartVersion; /// - /// Byte 1, bits 7 to 4 - /// 120mm if 0, 80mm if 1. If UMD (60mm) 0 also. Reserved rest of values + /// Byte 1, bits 7 to 4 + /// 120mm if 0, 80mm if 1. If UMD (60mm) 0 also. Reserved rest of values /// public DVDSize DiscSize; /// - /// Byte 1, bits 3 to 0 - /// Maximum data rate + /// Byte 1, bits 3 to 0 + /// Maximum data rate /// public MaximumRateField MaximumRate; /// - /// Byte 2, bit 7 - /// Reserved + /// Byte 2, bit 7 + /// Reserved /// public bool Reserved3; /// - /// Byte 2, bits 6 to 5 - /// Number of layers + /// Byte 2, bits 6 to 5 + /// Number of layers /// public byte Layers; /// - /// Byte 2, bit 4 - /// Track path + /// Byte 2, bit 4 + /// Track path /// public bool TrackPath; /// - /// Byte 2, bits 3 to 0 - /// Layer type + /// Byte 2, bits 3 to 0 + /// Layer type /// public LayerTypeFieldMask LayerType; /// - /// Byte 3, bits 7 to 4 - /// Linear density field + /// Byte 3, bits 7 to 4 + /// Linear density field /// public LinearDensityField LinearDensity; /// - /// Byte 3, bits 3 to 0 - /// Track density field + /// Byte 3, bits 3 to 0 + /// Track density field /// public TrackDensityField TrackDensity; /// - /// Bytes 4 to 7 - /// PSN where Data Area starts + /// Bytes 4 to 7 + /// PSN where Data Area starts /// public uint DataAreaStartPSN; /// - /// Bytes 8 to 11 - /// PSN where Data Area ends + /// Bytes 8 to 11 + /// PSN where Data Area ends /// public uint DataAreaEndPSN; /// - /// Bytes 12 to 15 - /// PSN where Data Area ends in Layer 0 + /// Bytes 12 to 15 + /// PSN where Data Area ends in Layer 0 /// public uint Layer0EndPSN; /// - /// Byte 27 - /// Always 0x06 on XGD3 + /// Byte 27 + /// Always 0x06 on XGD3 /// public byte Unknown1; /// - /// Bytes 256 to 283 - /// Unknown, XGD2 and XGD3 + /// Bytes 256 to 283 + /// Unknown, XGD2 and XGD3 /// public byte[] Unknown2; /// - /// Bytes 284 to 719 - /// Unknown, XGD3 + /// Bytes 284 to 719 + /// Unknown, XGD3 /// public byte[] Unknown3; /// - /// Bytes 720 to 723 - /// Unknown + /// Bytes 720 to 723 + /// Unknown /// public byte[] Unknown4; /// - /// Bytes 724 to 767 - /// Unknown, XGD3 + /// Bytes 724 to 767 + /// Unknown, XGD3 /// public byte[] Unknown5; /// - /// Byte 768 - /// Version of challenge table + /// Byte 768 + /// Version of challenge table /// public byte ChallengeTableVersion; /// - /// Byte 769 - /// Number of challenge entries + /// Byte 769 + /// Number of challenge entries /// public byte NoChallengeEntries; /// - /// Bytes 770 to 1022 - /// Unknown + /// Bytes 770 to 1022 + /// Unknown /// public ChallengeEntry[] ChallengeEntries; /// - /// Byte 1023 - /// Unknown + /// Byte 1023 + /// Unknown /// public byte Unknown6; /// - /// Bytes 1052 to 1099 - /// Unknown, XGD1 only + /// Bytes 1052 to 1099 + /// Unknown, XGD1 only /// public byte[] Unknown7; /// - /// Bytes 1120 to 1135 - /// Unknown, XGD2 and XGD3 + /// Bytes 1120 to 1135 + /// Unknown, XGD2 and XGD3 /// public byte[] Unknown8; /// - /// Bytes 1180 to 1195 - /// Unknown + /// Bytes 1180 to 1195 + /// Unknown /// public byte[] Unknown9; /// - /// Bytes 1208 to 1511 - /// Unknown + /// Bytes 1208 to 1511 + /// Unknown /// public byte[] Unknown10; /// - /// Bytes 1528 to 1632 + /// Bytes 1528 to 1632 /// public byte[] Unknown11; /// - /// Bytes 1633 to 1839 - /// Security extents, 23 entries of 9 bytes + /// Bytes 1633 to 1839 + /// Security extents, 23 entries of 9 bytes /// public SecuritySectorExtent[] Extents; /// - /// Bytes 1840 to 2047 - /// Copy of the security extents, 23 entries of 9 bytes + /// Bytes 1840 to 2047 + /// Copy of the security extents, 23 entries of 9 bytes /// public SecuritySectorExtent[] ExtentsCopy; } @@ -195,18 +195,18 @@ namespace DiscImageChef.Decoders.Xbox public struct SecuritySectorExtent { /// - /// Bytes 0 to 2 - /// Unknown + /// Bytes 0 to 2 + /// Unknown /// public uint Unknown; /// - /// Bytes 3 to 5 - /// Start PSN of this security extent + /// Bytes 3 to 5 + /// Start PSN of this security extent /// public uint StartPSN; /// - /// Bytes 6 to 8 - /// End PSN of this security extent + /// Bytes 6 to 8 + /// End PSN of this security extent /// public uint EndPSN; } @@ -265,9 +265,8 @@ namespace DiscImageChef.Decoders.Xbox Array.Copy(response, 724, ss.Unknown5, 0, 43); for(int i = 0; i < 23; i++) - { ss.ChallengeEntries[i] = new ChallengeEntry - { + { Level = response[770 + i * 11 + 0], ChallengeId = response[770 + i * 11 + 1], ChallengeValue = @@ -277,7 +276,6 @@ namespace DiscImageChef.Decoders.Xbox ResponseValue = (uint)((response[770 + i * 11 + 7] << 24) + (response[770 + i * 11 + 8] << 16) + (response[770 + i * 11 + 9] << 8) + response[770 + i * 11 + 10]) }; - } Array.Copy(response, 1052, ss.Unknown7, 0, 48); Array.Copy(response, 1120, ss.Unknown8, 0, 16); @@ -285,9 +283,8 @@ namespace DiscImageChef.Decoders.Xbox Array.Copy(response, 1208, ss.Unknown10, 0, 303); Array.Copy(response, 1528, ss.Unknown11, 0, 104); for(int i = 0; i < 23; i++) - { ss.Extents[i] = new SecuritySectorExtent - { + { Unknown = (uint)((response[1633 + i * 9 + 0] << 16) + (response[1633 + i * 9 + 1] << 8) + response[1633 + i * 9 + 2]), @@ -297,12 +294,10 @@ namespace DiscImageChef.Decoders.Xbox EndPSN = (uint)((response[1633 + i * 9 + 6] << 16) + (response[1633 + i * 9 + 7] << 8) + response[1633 + i * 9 + 8]) }; - } for(int i = 0; i < 23; i++) - { ss.ExtentsCopy[i] = new SecuritySectorExtent - { + { Unknown = (uint)((response[1840 + i * 9 + 0] << 16) + (response[1840 + i * 9 + 1] << 8) + response[1840 + i * 9 + 2]), @@ -312,7 +307,6 @@ namespace DiscImageChef.Decoders.Xbox EndPSN = (uint)((response[1840 + i * 9 + 6] << 16) + (response[1840 + i * 9 + 7] << 8) + response[1840 + i * 9 + 8]) }; - } return ss; }