diff --git a/ATA/Identify.cs b/ATA/Identify.cs index 22e307692..9f850b00c 100644 --- a/ATA/Identify.cs +++ b/ATA/Identify.cs @@ -70,7 +70,8 @@ namespace Aaru.Decoders.ATA CommonTypes.Structs.Devices.ATA.Identify.IdentifyDevice ATAID = IdentifyDeviceResponse.Value; - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.NonMagnetic)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.NonMagnetic)) if((ushort)ATAID.GeneralConfiguration != 0x848A) atapi = true; else @@ -120,8 +121,10 @@ namespace Aaru.Decoders.ATA { // Obsolete in ATA-2, if present, device supports ATA-1 ata1 |= - ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.FastIDE) || - ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.SlowIDE) || + ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.FastIDE) || + ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.SlowIDE) || ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. UltraFastIDE); @@ -656,65 +659,81 @@ namespace Aaru.Decoders.ATA else if(!cfa) { if(minatalevel >= 5) - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - IncompleteResponse)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + IncompleteResponse)) sb.AppendLine("Incomplete identify response"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.NonMagnetic)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.NonMagnetic)) sb.AppendLine("Device uses non-magnetic media"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.Removable)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.Removable)) sb.AppendLine("Device is removable"); if(minatalevel <= 5) - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.Fixed)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.Fixed)) sb.AppendLine("Device is fixed"); if(ata1) { - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.SlowIDE)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.SlowIDE)) sb.AppendLine("Device transfer rate is <= 5 Mb/s"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.FastIDE)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.FastIDE)) sb.AppendLine("Device transfer rate is > 5 Mb/s but <= 10 Mb/s"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - UltraFastIDE)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + UltraFastIDE)) sb.AppendLine("Device transfer rate is > 10 Mb/s"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - SoftSector)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + SoftSector)) sb.AppendLine("Device is soft sectored"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - HardSector)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + HardSector)) sb.AppendLine("Device is hard sectored"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit.NotMFM)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit.NotMFM)) sb.AppendLine("Device is not MFM encoded"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - FormatGapReq)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + FormatGapReq)) sb.AppendLine("Format speed tolerance gap is required"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - TrackOffset)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + TrackOffset)) sb.AppendLine("Track offset option is available"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - DataStrobeOffset)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + DataStrobeOffset)) sb.AppendLine("Data strobe offset option is available"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - RotationalSpeedTolerance)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + RotationalSpeedTolerance)) sb.AppendLine("Rotational speed tolerance is higher than 0,5%"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - SpindleControl)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + SpindleControl)) sb.AppendLine("Spindle motor control is implemented"); - if(ATAID.GeneralConfiguration.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.GeneralConfigurationBit. - HighHeadSwitch)) + if(ATAID.GeneralConfiguration.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.GeneralConfigurationBit. + HighHeadSwitch)) sb.AppendLine("Head switch time is bigger than 15 µs."); } } @@ -971,7 +990,8 @@ namespace Aaru.Decoders.ATA if(ATAID.Capabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit2.MustBeSet) && !ATAID.Capabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit2.MustBeClear)) - if(ATAID.Capabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit2.SpecificStandbyTimer)) + if(ATAID.Capabilities2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CapabilitiesBit2.SpecificStandbyTimer)) sb.AppendLine().Append("Device indicates a specific minimum standby timer value"); if(ATAID.Capabilities3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit3.MultipleValid)) @@ -984,13 +1004,15 @@ namespace Aaru.Decoders.ATA ATAID.MultipleMaxSectors); } - if(ATAID.Capabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit.PhysicalAlignment1) || + if(ATAID.Capabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CapabilitiesBit.PhysicalAlignment1) || ATAID.Capabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit.PhysicalAlignment0)) sb.AppendLine().AppendFormat("Long Physical Alignment setting is {0}", (ushort)ATAID.Capabilities & 0x03); if(ata1) - if(ATAID.TrustedComputing.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.TrustedComputingBit.TrustedComputing)) + if(ATAID.TrustedComputing.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.TrustedComputingBit.TrustedComputing)) sb.AppendLine().Append("Device supports doubleword I/O"); if(atapi) @@ -1005,7 +1027,8 @@ namespace Aaru.Decoders.ATA ) sb.AppendLine().Append("ATAPI device supports overlapped operations"); - if(ATAID.Capabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit.RequiresATASoftReset)) + if(ATAID.Capabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CapabilitiesBit.RequiresATASoftReset)) sb.AppendLine().Append("ATAPI device requires ATA software reset"); } @@ -1278,35 +1301,44 @@ namespace Aaru.Decoders.ATA { if(!ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.Clear)) { - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.Gen1Speed)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.Gen1Speed)) sb.AppendLine().Append("SATA 1.5Gb/s is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.Gen2Speed)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.Gen2Speed)) sb.AppendLine().Append("SATA 3.0Gb/s is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.Gen3Speed)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.Gen3Speed)) sb.AppendLine().Append("SATA 6.0Gb/s is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.PowerReceipt)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.PowerReceipt)) sb.AppendLine().Append("Receipt of host initiated power management requests is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.PHYEventCounter)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.PHYEventCounter)) sb.AppendLine().Append("PHY Event counters are supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.HostSlumbTrans)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.HostSlumbTrans)) sb.AppendLine().Append("Supports host automatic partial to slumber transitions is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.DevSlumbTrans)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.DevSlumbTrans)) sb.AppendLine().Append("Supports device automatic partial to slumber transitions is supported"); if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.NCQ)) { sb.AppendLine().Append("NCQ is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.NCQPriority)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.NCQPriority)) sb.AppendLine().Append("NCQ priority is supported"); - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.UnloadNCQ)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.UnloadNCQ)) sb.AppendLine().Append("Unload is supported with outstanding NCQ commands"); } } @@ -1314,24 +1346,29 @@ namespace Aaru.Decoders.ATA if(!ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2.Clear) ) { - if(!ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.Clear) && + if(!ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.Clear) && ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.NCQ)) { - if(ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2.NCQMgmt)) + if(ATAID.SATACapabilities2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit2.NCQMgmt)) sb.AppendLine().Append("NCQ queue management is supported"); - if(ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2.NCQStream)) + if(ATAID.SATACapabilities2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit2.NCQStream)) sb.AppendLine().Append("NCQ streaming is supported"); } if(atapi) { - if(ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2. - HostEnvDetect)) + if(ATAID.SATACapabilities2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit2. + HostEnvDetect)) sb.AppendLine().Append("ATAPI device supports host environment detection"); - if(ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2. - DevAttSlimline)) + if(ATAID.SATACapabilities2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit2. + DevAttSlimline)) sb.AppendLine().Append("ATAPI device supports attention on slimline connected devices"); } @@ -1482,7 +1519,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Power management is supported"); - if(ATAID.EnabledCommandSet.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit.PowerManagement)) + if(ATAID.EnabledCommandSet.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit.PowerManagement)) sb.Append(" and enabled"); } @@ -1490,7 +1528,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Removable media feature set is supported"); - if(ATAID.EnabledCommandSet.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit.RemovableMedia)) + if(ATAID.EnabledCommandSet.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit.RemovableMedia)) sb.Append(" and enabled"); } @@ -1520,7 +1559,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("FLUSH CACHE is supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.FlushCache)) + if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.FlushCache)) sb.Append(" and enabled"); } @@ -1528,7 +1568,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("FLUSH CACHE EXT is supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.FlushCacheExt)) + if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.FlushCacheExt)) sb.Append(" and enabled"); } @@ -1557,7 +1598,8 @@ namespace Aaru.Decoders.ATA sb.Append(" and enabled"); } - if(ATAID.CommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.AddressOffsetReservedAreaBoot)) + if(ATAID.CommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.AddressOffsetReservedAreaBoot)) { sb.AppendLine().Append("Address Offset Reserved Area Boot is supported"); @@ -1566,18 +1608,21 @@ namespace Aaru.Decoders.ATA sb.Append(" and enabled"); } - if(ATAID.CommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.SetFeaturesRequired)) + if(ATAID.CommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.SetFeaturesRequired)) sb.AppendLine().Append("SET FEATURES is required before spin-up"); if(ATAID.CommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.PowerUpInStandby)) { sb.AppendLine().Append("Power-up in standby is supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.PowerUpInStandby)) + if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.PowerUpInStandby)) sb.Append(" and enabled"); } - if(ATAID.CommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.RemovableNotification)) + if(ATAID.CommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.RemovableNotification)) { sb.AppendLine().Append("Removable Media Status Notification is supported"); @@ -1598,7 +1643,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("CompactFlash feature set is supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.CompactFlash)) + if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.CompactFlash)) sb.Append(" and enabled"); } @@ -1606,7 +1652,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("READ DMA QUEUED and WRITE DMA QUEUED are supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.RWQueuedDMA)) + if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.RWQueuedDMA)) sb.Append(" and enabled"); } @@ -1614,7 +1661,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("DOWNLOAD MICROCODE is supported"); - if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.DownloadMicrocode)) + if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit2.DownloadMicrocode)) sb.Append(" and enabled"); } } @@ -1627,7 +1675,8 @@ namespace Aaru.Decoders.ATA sb.Append(" and enabled"); } - if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.Supported)) + if(ATAID.SCTCommandTransport.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SCTCommandTransportBit.Supported)) sb.AppendLine().Append("S.M.A.R.T. Command Transport is supported"); if(ATAID.CommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.MustBeSet) && @@ -1637,7 +1686,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("S.M.A.R.T. self-testing is supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.SMARTSelfTest)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.SMARTSelfTest)) sb.Append(" and enabled"); } @@ -1645,7 +1695,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("S.M.A.R.T. error logging is supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.SMARTLog)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.SMARTLog)) sb.Append(" and enabled"); } @@ -1653,7 +1704,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("IDLE IMMEDIATE with UNLOAD FEATURE is supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.IdleImmediate)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.IdleImmediate)) sb.Append(" and enabled"); } @@ -1670,7 +1722,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("WRITE DMA QUEUED FUA EXT is supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.FUAWriteQ)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.FUAWriteQ)) sb.Append(" and enabled"); } @@ -1678,7 +1731,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.FUAWrite)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.FUAWrite)) sb.Append(" and enabled"); } @@ -1694,7 +1748,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Streaming feature set is supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.Streaming)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.Streaming)) sb.Append(" and enabled"); } @@ -1710,7 +1765,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Media Serial is supported"); - if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit3.MediaSerial)) + if(ATAID.EnabledCommandSet3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit3.MediaSerial)) sb.Append(" and valid"); } } @@ -1738,7 +1794,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Extended Power Conditions are supported"); - if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.ExtPowerCond)) + if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit4.ExtPowerCond)) sb.Append(" and enabled"); } @@ -1746,7 +1803,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Extended Status Reporting is supported"); - if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.ExtStatusReport)) + if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit4.ExtStatusReport)) sb.Append(" and enabled"); } @@ -1754,11 +1812,13 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Free-fall control feature set is supported"); - if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.FreeFallControl)) + if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit4.FreeFallControl)) sb.Append(" and enabled"); } - if(ATAID.CommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.SegmentedDownloadMicrocode)) + if(ATAID.CommandSet4.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit4.SegmentedDownloadMicrocode)) { sb.AppendLine().Append("Segmented feature in DOWNLOAD MICROCODE is supported"); @@ -1771,7 +1831,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("READ/WRITE DMA EXT GPL are supported"); - if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.RWDMAExtGpl)) + if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit4.RWDMAExtGpl)) sb.Append(" and enabled"); } @@ -1779,7 +1840,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("WRITE UNCORRECTABLE is supported"); - if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.WriteUnc)) + if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CommandSetBit4.WriteUnc)) sb.Append(" and enabled"); } @@ -1867,36 +1929,43 @@ namespace Aaru.Decoders.ATA sb.AppendLine().Append("Sanitize feature set is supported"); sb.AppendLine(). - Append(ATAID.Capabilities3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit3.SanitizeCommands) + Append(ATAID.Capabilities3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CapabilitiesBit3.SanitizeCommands) ? "Sanitize commands are specified by ACS-3 or higher" : "Sanitize commands are specified by ACS-2"); - if(ATAID.Capabilities3.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CapabilitiesBit3.SanitizeAntifreeze)) + if(ATAID.Capabilities3.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.CapabilitiesBit3.SanitizeAntifreeze)) sb.AppendLine().Append("SANITIZE ANTIFREEZE LOCK EXT is supported"); } if(!ata1 && maxatalevel >= 8) if(ATAID.TrustedComputing.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.TrustedComputingBit.Set) && - !ATAID.TrustedComputing.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.TrustedComputingBit.Clear) && - ATAID.TrustedComputing.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.TrustedComputingBit.TrustedComputing)) + !ATAID.TrustedComputing.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.TrustedComputingBit.Clear) && + ATAID.TrustedComputing.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.TrustedComputingBit.TrustedComputing)) sb.AppendLine().Append("Trusted Computing feature set is supported"); if((ATAID.TransportMajorVersion & 0xF000) >> 12 == 0x1 || (ATAID.TransportMajorVersion & 0xF000) >> 12 == 0xE) { if(!ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.Clear)) - if(ATAID.SATACapabilities.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit.ReadLogDMAExt)) + if(ATAID.SATACapabilities.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit.ReadLogDMAExt)) sb.AppendLine().Append("READ LOG DMA EXT is supported"); if(!ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2.Clear) ) - if(ATAID.SATACapabilities2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATACapabilitiesBit2.FPDMAQ)) + if(ATAID.SATACapabilities2.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATACapabilitiesBit2.FPDMAQ)) sb.AppendLine().Append("RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED are supported"); if(!ATAID.SATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.Clear)) { - if(ATAID.SATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.NonZeroBufferOffset)) + if(ATAID.SATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.NonZeroBufferOffset)) { sb.AppendLine().Append("Non-zero buffer offsets are supported"); @@ -1909,11 +1978,13 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("DMA Setup auto-activation is supported"); - if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.DMASetup)) + if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.DMASetup)) sb.Append(" and enabled"); } - if(ATAID.SATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.InitPowerMgmt)) + if(ATAID.SATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.InitPowerMgmt)) { sb.AppendLine().Append("Device-initiated power management is supported"); @@ -1926,7 +1997,8 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("In-order data delivery is supported"); - if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.InOrderData)) + if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.InOrderData)) sb.Append(" and enabled"); } @@ -1936,22 +2008,26 @@ namespace Aaru.Decoders.ATA { sb.AppendLine().Append("Hardware Feature Control is supported"); - if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit. - HardwareFeatureControl)) + if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit. + HardwareFeatureControl)) sb.Append(" and enabled"); } if(atapi) - if(ATAID.SATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.AsyncNotification)) + if(ATAID.SATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.AsyncNotification)) { sb.AppendLine().Append("Asynchronous notification is supported"); - if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit. - AsyncNotification)) + if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit. + AsyncNotification)) sb.Append(" and enabled"); } - if(ATAID.SATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.SettingsPreserve)) + if(ATAID.SATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.SettingsPreserve)) { sb.AppendLine().Append("Software Settings Preservation is supported"); @@ -1964,7 +2040,8 @@ namespace Aaru.Decoders.ATA ) sb.AppendLine().Append("NCQ Autosense is supported"); - if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.EnabledSlumber)) + if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SATAFeaturesBit.EnabledSlumber)) sb.AppendLine().Append("Automatic Partial to Slumber transitions are enabled"); } } @@ -1993,16 +2070,20 @@ namespace Aaru.Decoders.ATA { sb.AppendLine("Security is enabled"); - sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SecurityStatusBit.Locked) + sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SecurityStatusBit.Locked) ? "Security is locked" : "Security is not locked"); - sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SecurityStatusBit.Frozen) + sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SecurityStatusBit.Frozen) ? "Security is frozen" : "Security is not frozen"); - sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SecurityStatusBit.Expired) + sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SecurityStatusBit.Expired) ? "Security count has expired" : "Security count has notexpired"); - sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SecurityStatusBit.Maximum) + sb.AppendLine(ATAID.SecurityStatus.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SecurityStatusBit.Maximum) ? "Security level is maximum" : "Security level is high"); } else @@ -2032,7 +2113,8 @@ namespace Aaru.Decoders.ATA sb.AppendFormat("Streaming performance granularity is {0}", ATAID.StreamPerformanceGranularity); } - if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.Supported)) + if(ATAID.SCTCommandTransport.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SCTCommandTransportBit.Supported)) { sb.AppendLine().AppendLine("S.M.A.R.T. Command Transport (SCT):"); @@ -2040,7 +2122,8 @@ namespace Aaru.Decoders.ATA LongSectorAccess)) sb.AppendLine("SCT Long Sector Address is supported"); - if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.WriteSame)) + if(ATAID.SCTCommandTransport.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SCTCommandTransportBit.WriteSame)) sb.AppendLine("SCT Write Same is supported"); if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit. @@ -2051,7 +2134,8 @@ namespace Aaru.Decoders.ATA FeaturesControl)) sb.AppendLine("SCT Features Control is supported"); - if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.DataTables)) + if(ATAID.SCTCommandTransport.HasFlag(CommonTypes. + Structs.Devices.ATA.Identify.SCTCommandTransportBit.DataTables)) sb.AppendLine("SCT Data Tables are supported"); } diff --git a/Blu-ray/BCA.cs b/Blu-ray/BCA.cs index 3612f1277..18a5d7912 100644 --- a/Blu-ray/BCA.cs +++ b/Blu-ray/BCA.cs @@ -68,7 +68,7 @@ namespace Aaru.Decoders.Bluray if(BCAResponse.Length != 68) { AaruConsole.DebugWriteLine("BD BCA decoder", "Found incorrect Blu-ray BCA size ({0} bytes)", - BCAResponse.Length); + BCAResponse.Length); return null; } diff --git a/Blu-ray/Cartridge.cs b/Blu-ray/Cartridge.cs index cda37e503..3ea25f78b 100644 --- a/Blu-ray/Cartridge.cs +++ b/Blu-ray/Cartridge.cs @@ -83,8 +83,8 @@ namespace Aaru.Decoders.Bluray if(CSResponse.Length != 8) { AaruConsole.DebugWriteLine("BD Cartridge Status decoder", - "Found incorrect Blu-ray Cartridge Status size ({0} bytes)", - CSResponse.Length); + "Found incorrect Blu-ray Cartridge Status size ({0} bytes)", + CSResponse.Length); return null; } diff --git a/Blu-ray/DDS.cs b/Blu-ray/DDS.cs index e023a3664..04577f8df 100644 --- a/Blu-ray/DDS.cs +++ b/Blu-ray/DDS.cs @@ -123,7 +123,7 @@ namespace Aaru.Decoders.Bluray if(decoded.Signature != DDSIdentifier) { AaruConsole.DebugWriteLine("BD DDS decoder", "Found incorrect DDS signature (0x{0:X4})", - decoded.Signature); + decoded.Signature); return null; } diff --git a/Blu-ray/DI.cs b/Blu-ray/DI.cs index a163191f9..aa58c88a1 100644 --- a/Blu-ray/DI.cs +++ b/Blu-ray/DI.cs @@ -50,23 +50,28 @@ namespace Aaru.Decoders.Bluray public enum BluSize : byte { /// 120mm - OneTwenty = 0, /// 80mm + OneTwenty = 0, + /// 80mm Eighty = 1 } public enum ChannelLength : byte { /// 74.5nm channel or 25Gb/layer - Seventy = 1, /// 69.0nm channel or 27Gb/layer + Seventy = 1, + /// 69.0nm channel or 27Gb/layer Sixty = 2 } public enum HybridLayer : byte { /// No hybrid layer - None = 0, /// -ROM layer - ReadOnly = 1, /// -R layer - Recordable = 2, /// -RW layer + None = 0, + /// -ROM layer + ReadOnly = 1, + /// -R layer + Recordable = 2, + /// -RW layer Rewritable = 3 } @@ -88,8 +93,8 @@ namespace Aaru.Decoders.Bluray if(DIResponse.Length != 4100) { AaruConsole.DebugWriteLine("BD Disc Information decoder", - "Found incorrect Blu-ray Disc Information size ({0} bytes)", - DIResponse.Length); + "Found incorrect Blu-ray Disc Information size ({0} bytes)", + DIResponse.Length); return null; } @@ -178,8 +183,8 @@ namespace Aaru.Decoders.Bluray default: { AaruConsole.DebugWriteLine("BD Disc Information decoder", - "Found unknown disc type identifier \"{0}\"", - Encoding.ASCII.GetString(unit.DiscTypeIdentifier)); + "Found unknown disc type identifier \"{0}\"", + Encoding.ASCII.GetString(unit.DiscTypeIdentifier)); break; } diff --git a/Blu-ray/Spare.cs b/Blu-ray/Spare.cs index 6a15d55eb..0050a73d8 100644 --- a/Blu-ray/Spare.cs +++ b/Blu-ray/Spare.cs @@ -71,8 +71,8 @@ namespace Aaru.Decoders.Bluray if(SAIResponse.Length != 16) { AaruConsole.DebugWriteLine("BD Spare Area Information decoder", - "Found incorrect Blu-ray Spare Area Information size ({0} bytes)", - SAIResponse.Length); + "Found incorrect Blu-ray Spare Area Information size ({0} bytes)", + SAIResponse.Length); return null; } diff --git a/CD/ATIP.cs b/CD/ATIP.cs index 3cfc116db..9cffe6fc7 100644 --- a/CD/ATIP.cs +++ b/CD/ATIP.cs @@ -57,8 +57,8 @@ namespace Aaru.Decoders.CD CDATIPResponse.Length != 28) { AaruConsole.DebugWriteLine("CD ATIP decoder", - "Expected CD ATIP size (32 bytes) is not received size ({0} bytes), not decoding", - CDATIPResponse.Length); + "Expected CD ATIP size (32 bytes) is not received size ({0} bytes), not decoding", + CDATIPResponse.Length); return null; } @@ -322,169 +322,169 @@ namespace Aaru.Decoders.CD case 15: switch(frm) { - case 00: return"TDK Corporation"; - case 10: return"Ritek Co."; - case 20: return"Mitsubishi Chemical Corporation"; - case 30: return"NAN-YA Plastics Corporation"; + case 00: return "TDK Corporation"; + case 10: return "Ritek Co."; + case 20: return "Mitsubishi Chemical Corporation"; + case 30: return "NAN-YA Plastics Corporation"; } break; case 16: switch(frm) { - case 20: return"Shenzen SG&Gast Digital Optical Discs"; - case 30: return"Grand Advance Technology Ltd."; + case 20: return "Shenzen SG&Gast Digital Optical Discs"; + case 30: return "Grand Advance Technology Ltd."; } break; case 17: if(frm == 00) - return"Moser Baer India Limited"; + return "Moser Baer India Limited"; break; case 18: switch(frm) { - case 10: return"Wealth Fair Investment Ltd."; - case 60: return"Taroko International Co. Ltd."; + case 10: return "Wealth Fair Investment Ltd."; + case 60: return "Taroko International Co. Ltd."; } break; case 20: if(frm == 10) - return"CDA Datenträger Albrechts GmbH"; + return "CDA Datenträger Albrechts GmbH"; break; case 21: switch(frm) { - case 10: return"Grupo Condor S.L."; - case 30: return"Bestdisc Technology Corporation"; - case 40: return"Optical Disc Manufacturing Equipment"; - case 50: return"Sound Sound Multi-Media Development Ltd."; + case 10: return "Grupo Condor S.L."; + case 30: return "Bestdisc Technology Corporation"; + case 40: return "Optical Disc Manufacturing Equipment"; + case 50: return "Sound Sound Multi-Media Development Ltd."; } break; case 22: switch(frm) { - case 00: return"Woongjin Media Corp."; - case 10: return"Seantram Technology Inc."; - case 20: return"Advanced Digital Media"; - case 30: return"EXIMPO"; - case 40: return"CIS Technology Inc."; - case 50: return"Hong Kong Digital Technology Co., Ltd."; - case 60: return"Acer Media Technology, Inc."; + case 00: return "Woongjin Media Corp."; + case 10: return "Seantram Technology Inc."; + case 20: return "Advanced Digital Media"; + case 30: return "EXIMPO"; + case 40: return "CIS Technology Inc."; + case 50: return "Hong Kong Digital Technology Co., Ltd."; + case 60: return "Acer Media Technology, Inc."; } break; case 23: 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."; - case 30: return"Audio Distributors Co., Ltd."; - case 40: return"Victor Company of Japan, Ltd."; - case 50: return"Optrom Inc."; - case 60: return"Customer Pressing Oosterhout"; + case 00: return "Matsushita Electric Industrial Co., Ltd."; + case 10: return "Doremi Media Co., Ltd."; + case 20: return "Nacar Media s.r.l."; + case 30: return "Audio Distributors Co., Ltd."; + case 40: return "Victor Company of Japan, Ltd."; + case 50: return "Optrom Inc."; + case 60: return "Customer Pressing Oosterhout"; } break; case 24: switch(frm) { - case 00: return"Taiyo Yuden Company Ltd."; - case 10: return"SONY Corporation"; - case 20: return"Computer Support Italy s.r.l."; - case 30: return"Unitech Japan Inc."; - case 40: return"kdg mediatech AG"; - case 50: return"Guann Yinn Co., Ltd."; - case 60: return"Harmonic Hall Optical Disc Ltd."; + case 00: return "Taiyo Yuden Company Ltd."; + case 10: return "SONY Corporation"; + case 20: return "Computer Support Italy s.r.l."; + case 30: return "Unitech Japan Inc."; + case 40: return "kdg mediatech AG"; + case 50: return "Guann Yinn Co., Ltd."; + case 60: return "Harmonic Hall Optical Disc Ltd."; } break; case 25: switch(frm) { - case 00: return"MPO"; - case 20: return"Hitachi Maxell, Ltd."; - case 30: return"Infodisc Technology Co. Ltd."; - case 40: return"Vivastar AG"; - case 50: return"AMS Technology Inc."; - case 60: return"Xcitec Inc."; + case 00: return "MPO"; + case 20: return "Hitachi Maxell, Ltd."; + case 30: return "Infodisc Technology Co. Ltd."; + case 40: return "Vivastar AG"; + case 50: return "AMS Technology Inc."; + case 60: return "Xcitec Inc."; } break; case 26: switch(frm) { - case 00: return"Fornet International Pte Ltd."; - case 10: return"POSTECH Corporation"; - case 20: return"SKC Co., Ltd."; - case 30: return"Optical Disc Corporation"; - case 40: return"FUJI Photo Film Co., Ltd."; - case 50: return"Lead Data Inc."; - case 60: return"CMC Magnetics Corporation"; + case 00: return "Fornet International Pte Ltd."; + case 10: return "POSTECH Corporation"; + case 20: return "SKC Co., Ltd."; + case 30: return "Optical Disc Corporation"; + case 40: return "FUJI Photo Film Co., Ltd."; + case 50: return "Lead Data Inc."; + case 60: return "CMC Magnetics Corporation"; } break; case 27: switch(frm) { - case 00: return"Digital Storage Technology Co., Ltd."; - case 10: return"Plasmon Data systems Ltd."; - case 20: return"Princo Corporation"; - case 30: return"Pioneer Video Corporation"; - case 40: return"Kodak Japan Ltd."; - case 50: return"Mitsui Chemicals, Inc."; - case 60: return"Ricoh Company Ltd."; + case 00: return "Digital Storage Technology Co., Ltd."; + case 10: return "Plasmon Data systems Ltd."; + case 20: return "Princo Corporation"; + case 30: return "Pioneer Video Corporation"; + case 40: return "Kodak Japan Ltd."; + case 50: return "Mitsui Chemicals, Inc."; + case 60: return "Ricoh Company Ltd."; } break; case 28: switch(frm) { - case 00: return"Opti.Me.S. S.p.A."; - case 10: return"Gigastore Corporation"; - case 20: return"Multi Media Masters & Machinary SA"; - case 30: return"Auvistar Industry Co., Ltd."; - case 40: return"King Pro Mediatek Inc."; - case 50: return"Delphi Technology Inc."; - case 60: return"Friendly CD-Tek Co."; + case 00: return "Opti.Me.S. S.p.A."; + case 10: return "Gigastore Corporation"; + case 20: return "Multi Media Masters & Machinary SA"; + case 30: return "Auvistar Industry Co., Ltd."; + case 40: return "King Pro Mediatek Inc."; + case 50: return "Delphi Technology Inc."; + case 60: return "Friendly CD-Tek Co."; } break; case 29: switch(frm) { - case 00: return"Taeil Media Co., Ltd."; - case 10: return"Vanguard Disc Inc."; - case 20: return"Unidisc Technology Co., Ltd."; - case 30: return"Hile Optical Disc Technology Corp."; - case 40: return"Viva Magnetics Ltd."; - case 50: return"General Magnetics Ltd."; + case 00: return "Taeil Media Co., Ltd."; + case 10: return "Vanguard Disc Inc."; + case 20: return "Unidisc Technology Co., Ltd."; + case 30: return "Hile Optical Disc Technology Corp."; + case 40: return "Viva Magnetics Ltd."; + case 50: return "General Magnetics Ltd."; } break; case 30: if(frm == 10) - return"CDA Datenträger Albrechts GmbH"; + return "CDA Datenträger Albrechts GmbH"; break; case 31: switch(frm) { - case 00: return"Ritek Co."; - case 30: return"Grand Advance Technology Ltd."; + case 00: return "Ritek Co."; + case 30: return "Grand Advance Technology Ltd."; } break; case 32: switch(frm) { - case 00: return"TDK Corporation"; - case 10: return"Prodisc Technology Inc."; + case 00: return "TDK Corporation"; + case 10: return "Prodisc Technology Inc."; } break; @@ -492,97 +492,97 @@ namespace Aaru.Decoders.CD switch(frm) { case 20: - case 22: return"Mitsubishi Chemical Corporation"; + case 22: return "Mitsubishi Chemical Corporation"; } break; case 42: if(frm == 20) - return"Advanced Digital Media"; + return "Advanced Digital Media"; break; case 45: switch(frm) { - case 00: return"Fornet International Pte Ltd."; - case 10: return"Unitech Japan Inc."; - case 20: return"Acer Media Technology, Inc."; - case 40: return"CIS Technology Inc."; - case 50: return"Guann Yinn Co., Ltd."; - case 60: return"Xcitec Inc."; + case 00: return "Fornet International Pte Ltd."; + case 10: return "Unitech Japan Inc."; + case 20: return "Acer Media Technology, Inc."; + case 40: return "CIS Technology Inc."; + case 50: return "Guann Yinn Co., Ltd."; + case 60: return "Xcitec Inc."; } break; case 46: 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"; - case 30: return"Computer Support Italy s.r.l."; - case 40: return"FUJI Photo Film Co., Ltd."; - case 50: return"Auvistar Industry Co., Ltd."; - case 60: return"CMC Magnetics Corporation"; + case 00: return "Taiyo Yuden Company Ltd."; + case 10: return "Hong Kong Digital Technology Co., Ltd."; + case 20: return "Multi Media Masters & Machinary SA"; + case 30: return "Computer Support Italy s.r.l."; + case 40: return "FUJI Photo Film Co., Ltd."; + case 50: return "Auvistar Industry Co., Ltd."; + case 60: return "CMC Magnetics Corporation"; } break; case 47: switch(frm) { - case 10: return"Hitachi Maxell, Ltd."; - case 20: return"Princo Corporation"; - case 40: return"POSTECH Corporation"; - case 50: return"Ritek Co."; - case 60: return"Prodisc Technology Inc."; + case 10: return "Hitachi Maxell, Ltd."; + case 20: return "Princo Corporation"; + case 40: return "POSTECH Corporation"; + case 50: return "Ritek Co."; + case 60: return "Prodisc Technology Inc."; } break; case 48: switch(frm) { - case 00: return"Ricoh Company Ltd."; - case 10: return"Kodak Japan Ltd."; - case 20: return"Plasmon Data systems Ltd."; - case 30: return"Pioneer Video Corporation"; - case 40: return"Digital Storage Technology Co., Ltd."; - case 50: return"Mitsui Chemicals, Inc."; - case 60: return"Lead Data Inc."; + case 00: return "Ricoh Company Ltd."; + case 10: return "Kodak Japan Ltd."; + case 20: return "Plasmon Data systems Ltd."; + case 30: return "Pioneer Video Corporation"; + case 40: return "Digital Storage Technology Co., Ltd."; + case 50: return "Mitsui Chemicals, Inc."; + case 60: return "Lead Data Inc."; } break; case 49: switch(frm) { - case 00: return"TDK Corporation"; - case 10: return"Gigastore Corporation"; - case 20: return"King Pro Mediatek Inc."; - case 30: return"Opti.Me.S. S.p.A."; - case 40: return"Victor Company of Japan, Ltd."; - case 60: return"Matsushita Electric Industrial Co., Ltd."; + case 00: return "TDK Corporation"; + case 10: return "Gigastore Corporation"; + case 20: return "King Pro Mediatek Inc."; + case 30: return "Opti.Me.S. S.p.A."; + case 40: return "Victor Company of Japan, Ltd."; + case 60: return "Matsushita Electric Industrial Co., Ltd."; } break; case 50: switch(frm) { - case 10: return"Vanguard Disc Inc."; - case 20: return"Mitsubishi Chemical Corporation"; - case 30: return"CDA Datenträger Albrechts GmbH"; + case 10: return "Vanguard Disc Inc."; + case 20: return "Mitsubishi Chemical Corporation"; + case 30: return "CDA Datenträger Albrechts GmbH"; } break; case 51: switch(frm) { - case 10: return"Grand Advance Technology Ltd."; - case 20: return"Infodisc Technology Co. Ltd."; - case 50: return"Hile Optical Disc Technology Corp."; + case 10: return "Grand Advance Technology Ltd."; + case 20: return "Infodisc Technology Co. Ltd."; + case 50: return "Hile Optical Disc Technology Corp."; } break; } - return""; + return ""; } public struct CDATIP diff --git a/CD/CDTextOnLeadIn.cs b/CD/CDTextOnLeadIn.cs index edb2ce085..4baead95c 100644 --- a/CD/CDTextOnLeadIn.cs +++ b/CD/CDTextOnLeadIn.cs @@ -49,21 +49,36 @@ namespace Aaru.Decoders.CD public enum PackTypeIndicator : byte { /// Title of the track (or album if track == 0) - Title = 0x80, /// Performer - Performer = 0x81, /// Songwriter - Songwriter = 0x82, /// Composer - Composer = 0x83, /// Arranger - Arranger = 0x84, /// Message from the content provider or artist - Message = 0x85, /// Disc identification information - DiscIdentification = 0x86, /// Genre identification - GenreIdentification = 0x87, /// Table of content information - TOCInformation = 0x88, /// Second table of content information - SecondTOCInformation = 0x89, /// Reserved - Reserved1 = 0x8A, /// Reserved - Reserved2 = 0x8B, /// Reserved - Reserved3 = 0x8C, /// Reserved for content provider only - ReservedForContentProvider = 0x8D, /// UPC of album or ISRC of track - UPCorISRC = 0x8E, /// Size information of the block + Title = 0x80, + /// Performer + Performer = 0x81, + /// Songwriter + Songwriter = 0x82, + /// Composer + Composer = 0x83, + /// Arranger + Arranger = 0x84, + /// Message from the content provider or artist + Message = 0x85, + /// Disc identification information + DiscIdentification = 0x86, + /// Genre identification + GenreIdentification = 0x87, + /// Table of content information + TOCInformation = 0x88, + /// Second table of content information + SecondTOCInformation = 0x89, + /// Reserved + Reserved1 = 0x8A, + /// Reserved + Reserved2 = 0x8B, + /// Reserved + Reserved3 = 0x8C, + /// Reserved for content provider only + ReservedForContentProvider = 0x8D, + /// UPC of album or ISRC of track + UPCorISRC = 0x8E, + /// Size information of the block BlockSizeInformation = 0x8F } @@ -86,23 +101,23 @@ namespace Aaru.Decoders.CD if(decoded.DataLength + 2 != CDTextResponse.Length) { AaruConsole.DebugWriteLine("CD-TEXT decoder", - "Expected CD-TEXT size ({0} bytes) is not received size ({1} bytes), not decoding", - decoded.DataLength + 2, CDTextResponse.Length); + "Expected CD-TEXT size ({0} bytes) is not received size ({1} bytes), not decoding", + decoded.DataLength + 2, CDTextResponse.Length); return null; } for(int i = 0; i < (decoded.DataLength - 2) / 18; i++) { - decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + i * 18 + 4]; - decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + i * 18 + 4]; - decoded.DataPacks[i].HeaderID3 = CDTextResponse[2 + i * 18 + 4]; - decoded.DataPacks[i].DBCC = Convert.ToBoolean(CDTextResponse[3 + i * 18 + 4] & 0x80); - decoded.DataPacks[i].BlockNumber = (byte)((CDTextResponse[3 + i * 18 + 4] & 0x70) >> 4); - decoded.DataPacks[i].CharacterPosition = (byte)(CDTextResponse[3 + i * 18 + 4] & 0x0F); + decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + (i * 18) + 4]; + decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + (i * 18) + 4]; + decoded.DataPacks[i].HeaderID3 = CDTextResponse[2 + (i * 18) + 4]; + decoded.DataPacks[i].DBCC = Convert.ToBoolean(CDTextResponse[3 + (i * 18) + 4] & 0x80); + decoded.DataPacks[i].BlockNumber = (byte)((CDTextResponse[3 + (i * 18) + 4] & 0x70) >> 4); + decoded.DataPacks[i].CharacterPosition = (byte)(CDTextResponse[3 + (i * 18) + 4] & 0x0F); decoded.DataPacks[i].TextDataField = new byte[12]; - Array.Copy(CDTextResponse, 4 + i * 18 + 4, decoded.DataPacks[i].TextDataField, 0, 12); - decoded.DataPacks[i].CRC = BigEndianBitConverter.ToUInt16(CDTextResponse, 16 + i * 18 + 4); + Array.Copy(CDTextResponse, 4 + (i * 18) + 4, decoded.DataPacks[i].TextDataField, 0, 12); + decoded.DataPacks[i].CRC = BigEndianBitConverter.ToUInt16(CDTextResponse, 16 + (i * 18) + 4); } return decoded; diff --git a/CD/Enums.cs b/CD/Enums.cs index 130eb2fba..ec5b8430d 100644 --- a/CD/Enums.cs +++ b/CD/Enums.cs @@ -38,24 +38,36 @@ namespace Aaru.Decoders.CD public enum TocAdr : byte { /// Q Sub-channel mode information not supplied - NoInformation = 0x00, /// Q Sub-channel encodes current position data - CurrentPosition = 0x01, /// Q Sub-channel encodes the media catalog number - MediaCatalogNumber = 0x02, /// Q Sub-channel encodes the ISRC - ISRC = 0x03, /// 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 + NoInformation = 0x00, + /// Q Sub-channel encodes current position data + CurrentPosition = 0x01, + /// Q Sub-channel encodes the media catalog number + MediaCatalogNumber = 0x02, + /// Q Sub-channel encodes the ISRC + ISRC = 0x03, + /// 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 VideoTrackPointer = 0x04 } public enum TocControl : byte { /// Stereo audio, no pre-emphasis - TwoChanNoPreEmph = 0x00, /// Stereo audio with pre-emphasis - TwoChanPreEmph = 0x01, /// If mask applied, track can be copied - CopyPermissionMask = 0x02, /// Data track, recorded uninterrumpted - DataTrack = 0x04, /// Data track, recorded incrementally - DataTrackIncremental = 0x05, /// Quadraphonic audio, no pre-emphasis - FourChanNoPreEmph = 0x08, /// Quadraphonic audio with pre-emphasis - FourChanPreEmph = 0x09, /// Reserved mask + TwoChanNoPreEmph = 0x00, + /// Stereo audio with pre-emphasis + TwoChanPreEmph = 0x01, + /// If mask applied, track can be copied + CopyPermissionMask = 0x02, + /// Data track, recorded uninterrumpted + DataTrack = 0x04, + /// Data track, recorded incrementally + DataTrackIncremental = 0x05, + /// Quadraphonic audio, no pre-emphasis + FourChanNoPreEmph = 0x08, + /// Quadraphonic audio with pre-emphasis + FourChanPreEmph = 0x09, + /// Reserved mask ReservedMask = 0x0C } } \ No newline at end of file diff --git a/CD/FullTOC.cs b/CD/FullTOC.cs index 4388db323..8ced7a407 100644 --- a/CD/FullTOC.cs +++ b/CD/FullTOC.cs @@ -69,28 +69,28 @@ namespace Aaru.Decoders.CD if(decoded.DataLength + 2 != CDFullTOCResponse.Length) { AaruConsole.DebugWriteLine("CD full TOC decoder", - "Expected CDFullTOC size ({0} bytes) is not received size ({1} bytes), not decoding", - decoded.DataLength + 2, CDFullTOCResponse.Length); + "Expected CDFullTOC size ({0} bytes) is not received size ({1} bytes), not decoding", + decoded.DataLength + 2, CDFullTOCResponse.Length); return null; } for(int i = 0; i < (decoded.DataLength - 2) / 11; i++) { - decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + i * 11 + 4]; - decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + i * 11 + 4] & 0xF0) >> 4); - decoded.TrackDescriptors[i].CONTROL = (byte)(CDFullTOCResponse[1 + i * 11 + 4] & 0x0F); - decoded.TrackDescriptors[i].TNO = CDFullTOCResponse[2 + i * 11 + 4]; - decoded.TrackDescriptors[i].POINT = CDFullTOCResponse[3 + i * 11 + 4]; - decoded.TrackDescriptors[i].Min = CDFullTOCResponse[4 + i * 11 + 4]; - decoded.TrackDescriptors[i].Sec = CDFullTOCResponse[5 + i * 11 + 4]; - decoded.TrackDescriptors[i].Frame = CDFullTOCResponse[6 + i * 11 + 4]; - decoded.TrackDescriptors[i].Zero = CDFullTOCResponse[7 + i * 11 + 4]; - decoded.TrackDescriptors[i].HOUR = (byte)((CDFullTOCResponse[7 + i * 11 + 4] & 0xF0) >> 4); - decoded.TrackDescriptors[i].PHOUR = (byte)(CDFullTOCResponse[7 + i * 11 + 4] & 0x0F); - decoded.TrackDescriptors[i].PMIN = CDFullTOCResponse[8 + i * 11 + 4]; - decoded.TrackDescriptors[i].PSEC = CDFullTOCResponse[9 + i * 11 + 4]; - decoded.TrackDescriptors[i].PFRAME = CDFullTOCResponse[10 + i * 11 + 4]; + decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + (i * 11) + 4]; + decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + (i * 11) + 4] & 0xF0) >> 4); + decoded.TrackDescriptors[i].CONTROL = (byte)(CDFullTOCResponse[1 + (i * 11) + 4] & 0x0F); + decoded.TrackDescriptors[i].TNO = CDFullTOCResponse[2 + (i * 11) + 4]; + decoded.TrackDescriptors[i].POINT = CDFullTOCResponse[3 + (i * 11) + 4]; + decoded.TrackDescriptors[i].Min = CDFullTOCResponse[4 + (i * 11) + 4]; + decoded.TrackDescriptors[i].Sec = CDFullTOCResponse[5 + (i * 11) + 4]; + decoded.TrackDescriptors[i].Frame = CDFullTOCResponse[6 + (i * 11) + 4]; + decoded.TrackDescriptors[i].Zero = CDFullTOCResponse[7 + (i * 11) + 4]; + decoded.TrackDescriptors[i].HOUR = (byte)((CDFullTOCResponse[7 + (i * 11) + 4] & 0xF0) >> 4); + decoded.TrackDescriptors[i].PHOUR = (byte)(CDFullTOCResponse[7 + (i * 11) + 4] & 0x0F); + decoded.TrackDescriptors[i].PMIN = CDFullTOCResponse[8 + (i * 11) + 4]; + decoded.TrackDescriptors[i].PSEC = CDFullTOCResponse[9 + (i * 11) + 4]; + decoded.TrackDescriptors[i].PFRAME = CDFullTOCResponse[10 + (i * 11) + 4]; } return decoded; @@ -111,8 +111,8 @@ namespace Aaru.Decoders.CD sb.AppendFormat("Last complete session number: {0}", response.LastCompleteSession).AppendLine(); foreach(TrackDataDescriptor descriptor in response.TrackDescriptors) - if((descriptor.CONTROL & 0x08) == 0x08 || - descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6 || + if((descriptor.CONTROL & 0x08) == 0x08 || + (descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6) || descriptor.TNO != 0) { sb.AppendLine("Unknown TOC entry format, printing values as-is"); diff --git a/CD/PMA.cs b/CD/PMA.cs index b931d5a21..816516e31 100644 --- a/CD/PMA.cs +++ b/CD/PMA.cs @@ -61,27 +61,27 @@ namespace Aaru.Decoders.CD if(decoded.DataLength + 2 != CDPMAResponse.Length) { AaruConsole.DebugWriteLine("CD PMA decoder", - "Expected CDPMA size ({0} bytes) is not received size ({1} bytes), not decoding", - decoded.DataLength + 2, CDPMAResponse.Length); + "Expected CDPMA size ({0} bytes) is not received size ({1} bytes), not decoding", + decoded.DataLength + 2, CDPMAResponse.Length); return null; } for(int i = 0; i < (decoded.DataLength - 2) / 11; i++) { - decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + i * 11 + 4]; - decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + i * 11 + 4] & 0xF0) >> 4); - decoded.PMADescriptors[i].CONTROL = (byte)(CDPMAResponse[1 + i * 11 + 4] & 0x0F); - decoded.PMADescriptors[i].TNO = CDPMAResponse[2 + i * 11 + 4]; - decoded.PMADescriptors[i].POINT = CDPMAResponse[3 + i * 11 + 4]; - decoded.PMADescriptors[i].Min = CDPMAResponse[4 + i * 11 + 4]; - decoded.PMADescriptors[i].Sec = CDPMAResponse[5 + i * 11 + 4]; - decoded.PMADescriptors[i].Frame = CDPMAResponse[6 + i * 11 + 4]; - decoded.PMADescriptors[i].HOUR = (byte)((CDPMAResponse[7 + i * 11 + 4] & 0xF0) >> 4); - decoded.PMADescriptors[i].PHOUR = (byte)(CDPMAResponse[7 + i * 11 + 4] & 0x0F); - decoded.PMADescriptors[i].PMIN = CDPMAResponse[8 + i * 11 + 4]; - decoded.PMADescriptors[i].PSEC = CDPMAResponse[9 + i * 11 + 4]; - decoded.PMADescriptors[i].PFRAME = CDPMAResponse[10 + i * 11 + 4]; + decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + (i * 11) + 4]; + decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + (i * 11) + 4] & 0xF0) >> 4); + decoded.PMADescriptors[i].CONTROL = (byte)(CDPMAResponse[1 + (i * 11) + 4] & 0x0F); + decoded.PMADescriptors[i].TNO = CDPMAResponse[2 + (i * 11) + 4]; + decoded.PMADescriptors[i].POINT = CDPMAResponse[3 + (i * 11) + 4]; + decoded.PMADescriptors[i].Min = CDPMAResponse[4 + (i * 11) + 4]; + decoded.PMADescriptors[i].Sec = CDPMAResponse[5 + (i * 11) + 4]; + decoded.PMADescriptors[i].Frame = CDPMAResponse[6 + (i * 11) + 4]; + decoded.PMADescriptors[i].HOUR = (byte)((CDPMAResponse[7 + (i * 11) + 4] & 0xF0) >> 4); + decoded.PMADescriptors[i].PHOUR = (byte)(CDPMAResponse[7 + (i * 11) + 4] & 0x0F); + decoded.PMADescriptors[i].PMIN = CDPMAResponse[8 + (i * 11) + 4]; + decoded.PMADescriptors[i].PSEC = CDPMAResponse[9 + (i * 11) + 4]; + decoded.PMADescriptors[i].PFRAME = CDPMAResponse[10 + (i * 11) + 4]; } return decoded; diff --git a/CD/Session.cs b/CD/Session.cs index ad5babd85..8cd7d590b 100644 --- a/CD/Session.cs +++ b/CD/Session.cs @@ -61,22 +61,22 @@ namespace Aaru.Decoders.CD if(decoded.DataLength + 2 != CDSessionInfoResponse.Length) { AaruConsole.DebugWriteLine("CD Session Info decoder", - "Expected CDSessionInfo size ({0} bytes) is not received size ({1} bytes), not decoding", - decoded.DataLength + 2, CDSessionInfoResponse.Length); + "Expected CDSessionInfo size ({0} bytes) is not received size ({1} bytes), not decoding", + decoded.DataLength + 2, CDSessionInfoResponse.Length); return null; } for(int i = 0; i < (decoded.DataLength - 2) / 8; i++) { - decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + i * 8 + 4]; - decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + i * 8 + 4] & 0xF0) >> 4); - decoded.TrackDescriptors[i].CONTROL = (byte)(CDSessionInfoResponse[1 + i * 8 + 4] & 0x0F); - decoded.TrackDescriptors[i].TrackNumber = CDSessionInfoResponse[2 + i * 8 + 4]; - decoded.TrackDescriptors[i].Reserved2 = CDSessionInfoResponse[3 + i * 8 + 4]; + decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + (i * 8) + 4]; + decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + (i * 8) + 4] & 0xF0) >> 4); + decoded.TrackDescriptors[i].CONTROL = (byte)(CDSessionInfoResponse[1 + (i * 8) + 4] & 0x0F); + decoded.TrackDescriptors[i].TrackNumber = CDSessionInfoResponse[2 + (i * 8) + 4]; + decoded.TrackDescriptors[i].Reserved2 = CDSessionInfoResponse[3 + (i * 8) + 4]; decoded.TrackDescriptors[i].TrackStartAddress = - BigEndianBitConverter.ToUInt32(CDSessionInfoResponse, 4 + i * 8 + 4); + BigEndianBitConverter.ToUInt32(CDSessionInfoResponse, 4 + (i * 8) + 4); } return decoded; diff --git a/CD/TOC.cs b/CD/TOC.cs index 7abbdd2ae..4a6fffbb2 100644 --- a/CD/TOC.cs +++ b/CD/TOC.cs @@ -62,22 +62,22 @@ namespace Aaru.Decoders.CD if(decoded.DataLength + 2 != CDTOCResponse.Length) { AaruConsole.DebugWriteLine("CD TOC decoder", - "Expected CDTOC size ({0} bytes) is not received size ({1} bytes), not decoding", - decoded.DataLength + 2, CDTOCResponse.Length); + "Expected CDTOC size ({0} bytes) is not received size ({1} bytes), not decoding", + decoded.DataLength + 2, CDTOCResponse.Length); return null; } for(int i = 0; i < (decoded.DataLength - 2) / 8; i++) { - decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + i * 8 + 4]; - decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + i * 8 + 4] & 0xF0) >> 4); - decoded.TrackDescriptors[i].CONTROL = (byte)(CDTOCResponse[1 + i * 8 + 4] & 0x0F); - decoded.TrackDescriptors[i].TrackNumber = CDTOCResponse[2 + i * 8 + 4]; - decoded.TrackDescriptors[i].Reserved2 = CDTOCResponse[3 + i * 8 + 4]; + decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + (i * 8) + 4]; + decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + (i * 8) + 4] & 0xF0) >> 4); + decoded.TrackDescriptors[i].CONTROL = (byte)(CDTOCResponse[1 + (i * 8) + 4] & 0x0F); + decoded.TrackDescriptors[i].TrackNumber = CDTOCResponse[2 + (i * 8) + 4]; + decoded.TrackDescriptors[i].Reserved2 = CDTOCResponse[3 + (i * 8) + 4]; decoded.TrackDescriptors[i].TrackStartAddress = - BigEndianBitConverter.ToUInt32(CDTOCResponse, 4 + i * 8 + 4); + BigEndianBitConverter.ToUInt32(CDTOCResponse, 4 + (i * 8) + 4); } return decoded; diff --git a/DVD/DDS.cs b/DVD/DDS.cs index bf43bff67..e2a6465d5 100644 --- a/DVD/DDS.cs +++ b/DVD/DDS.cs @@ -69,11 +69,9 @@ namespace Aaru.Decoders.DVD dds.UserCertification |= (response[7] & 0x02) == 0x02; dds.ManufacturerCertification |= (response[7] & 0x01) == 0x01; - dds.UpdateCount = - (uint)((response[8] << 24) + (response[9] << 16) + (response[10] << 8) + response[11]); + dds.UpdateCount = (uint)((response[8] << 24) + (response[9] << 16) + (response[10] << 8) + response[11]); - dds.Groups = - (ushort)((response[12] << 8) + response[13]); + dds.Groups = (ushort)((response[12] << 8) + response[13]); // ECMA-272 if(dds.Groups == 24) @@ -110,8 +108,8 @@ namespace Aaru.Decoders.DVD dds.StartLSNForZone = new uint[dds.Zones]; for(int i = 0; i < dds.Zones; i++) - dds.StartLSNForZone[i] = (uint)((response[260 + i * 4 + 1] << 16) + - (response[260 + i * 4 + 2] << 8) + response[260 + i * 4 + 3]); + dds.StartLSNForZone[i] = (uint)((response[260 + (i * 4) + 1] << 16) + + (response[260 + (i * 4) + 2] << 8) + response[260 + (i * 4) + 3]); } return dds; diff --git a/DVD/Enums.cs b/DVD/Enums.cs index e312402df..f5e5b46c5 100644 --- a/DVD/Enums.cs +++ b/DVD/Enums.cs @@ -39,19 +39,32 @@ namespace Aaru.Decoders.DVD public enum DiskCategory : byte { /// DVD-ROM. Version 1 is ECMA-267 and ECMA-268. - DVDROM = 0, /// 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. - DVDR = 2, /// DVD-RW. Version 2 is ECMA-338. Version 3 is ECMA-384. - DVDRW = 3, /// HD DVD-ROM - HDDVDROM = 4, /// HD DVD-RAM - HDDVDRAM = 5, /// HD DVD-R - HDDVDR = 6, /// HD DVD-RW - HDDVDRW = 7, /// 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. - DVDPRW = 9, /// DVD+R. Version 1 is ECMA-349. - DVDPR = 10, /// DVD+RW DL. Version 1 is ECMA-374. - DVDPRWDL = 13, /// 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. + DVDROM = 0, + /// 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. + DVDR = 2, + /// DVD-RW. Version 2 is ECMA-338. Version 3 is ECMA-384. + DVDRW = 3, + /// HD DVD-ROM + HDDVDROM = 4, + /// HD DVD-RAM + HDDVDRAM = 5, + /// HD DVD-R + HDDVDR = 6, + /// HD DVD-RW + HDDVDRW = 7, + /// 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. + DVDPRW = 9, + /// DVD+R. Version 1 is ECMA-349. + DVDPR = 10, + /// DVD+RW DL. Version 1 is ECMA-374. + DVDPRWDL = 13, + /// 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. Nintendo = 15 } @@ -59,10 +72,14 @@ namespace Aaru.Decoders.DVD public enum MaximumRateField : byte { /// 2.52 Mbps - TwoMbps = 0x00, /// 5.04 Mbps - FiveMbps = 0x01, /// 10.08 Mbps - TenMbps = 0x02, /// 20.16 Mbps - TwentyMbps = 0x03, /// 30.24 Mbps + TwoMbps = 0x00, + /// 5.04 Mbps + FiveMbps = 0x01, + /// 10.08 Mbps + TenMbps = 0x02, + /// 20.16 Mbps + TwentyMbps = 0x03, + /// 30.24 Mbps ThirtyMbps = 0x04, Unspecified = 0x0F } @@ -77,12 +94,18 @@ namespace Aaru.Decoders.DVD public enum LinearDensityField : byte { /// 0.267 μm/bit - TwoSix = 0x00, /// 0.293 μm/bit - TwoNine = 0x01, /// 0.409 to 0.435 μm/bit - FourZero = 0x02, /// 0.280 to 0.291 μm/bit - TwoEight = 0x04, /// 0.153 μm/bit - OneFive = 0x05, /// 0.130 to 0.140 μm/bit - OneThree = 0x06, /// 0.353 μm/bit + TwoSix = 0x00, + /// 0.293 μm/bit + TwoNine = 0x01, + /// 0.409 to 0.435 μm/bit + FourZero = 0x02, + /// 0.280 to 0.291 μm/bit + TwoEight = 0x04, + /// 0.153 μm/bit + OneFive = 0x05, + /// 0.130 to 0.140 μm/bit + OneThree = 0x06, + /// 0.353 μm/bit ThreeFive = 0x08 } @@ -90,10 +113,14 @@ namespace Aaru.Decoders.DVD public enum TrackDensityField : byte { /// 0.74 μm/track - Seven = 0x00, /// 0.80 μm/track - Eight = 0x01, /// 0.615 μm/track - Six = 0x02, /// 0.40 μm/track - Four = 0x03, /// 0.34 μm/track + Seven = 0x00, + /// 0.80 μm/track + Eight = 0x01, + /// 0.615 μm/track + Six = 0x02, + /// 0.40 μm/track + Four = 0x03, + /// 0.34 μm/track Three = 0x04 } @@ -101,9 +128,12 @@ namespace Aaru.Decoders.DVD public enum CopyrightType : byte { /// There is no copy protection - NoProtection = 0x00, /// Copy protection is CSS/CPPM - CSS = 0x01, /// Copy protection is CPRM - CPRM = 0x02, /// Copy protection is AACS + NoProtection = 0x00, + /// Copy protection is CSS/CPPM + CSS = 0x01, + /// Copy protection is CPRM + CPRM = 0x02, + /// Copy protection is AACS AACS = 0x10 } @@ -111,7 +141,8 @@ namespace Aaru.Decoders.DVD public enum WPDiscTypes : byte { /// Should not write without a cartridge - DoNotWrite = 0x00, /// Can write without a cartridge + DoNotWrite = 0x00, + /// Can write without a cartridge CanWrite = 0x01, Reserved1 = 0x02, Reserved2 = 0x03 } @@ -119,7 +150,8 @@ namespace Aaru.Decoders.DVD public enum DVDSize { /// 120 mm - OneTwenty = 0, /// 80 mm + OneTwenty = 0, + /// 80 mm Eighty = 1 } @@ -127,7 +159,8 @@ namespace Aaru.Decoders.DVD public enum DVDRAMDiscType { /// Shall not be recorded without a case - Cased = 0, /// May be recorded without a case or within one + Cased = 0, + /// May be recorded without a case or within one Uncased = 1 } diff --git a/DVD/PFI.cs b/DVD/PFI.cs index a5deb8f50..d08379c4c 100644 --- a/DVD/PFI.cs +++ b/DVD/PFI.cs @@ -99,8 +99,7 @@ namespace Aaru.Decoders.DVD pfi.DataAreaEndPSN = (uint)((response[12] << 24) + (response[13] << 16) + (response[14] << 8) + response[15]); - pfi.Layer0EndPSN = - (uint)((response[16] << 24) + (response[17] << 16) + (response[18] << 8) + response[19]); + pfi.Layer0EndPSN = (uint)((response[16] << 24) + (response[17] << 16) + (response[18] << 8) + response[19]); pfi.BCA |= (response[20] & 0x80) == 0x80; diff --git a/Floppy/Apple2.cs b/Floppy/Apple2.cs index be5f2bf58..1bea904ee 100644 --- a/Floppy/Apple2.cs +++ b/Floppy/Apple2.cs @@ -168,16 +168,16 @@ namespace Aaru.Decoders.Floppy for(int i = 0; i < 51; i++) { - byte b1 = buffer[51 * 3 - i]; - byte b2 = buffer[51 * 2 - i]; - byte b3 = buffer[51 - i]; + byte b1 = buffer[(51 * 3) - i]; + byte b2 = buffer[(51 * 2) - i]; + byte b3 = buffer[51 - i]; byte b4 = (byte)((((b1 & 2) << 1) | (b2 & 2) | ((b3 & 2) >> 1)) & 0xFF); byte b5 = (byte)((((b1 & 1) << 2) | ((b2 & 1) << 1) | (b3 & 1)) & 0xFF); - output[250 - 5 * i] = (byte)(((buffer[i + 51 * 3 + 1] << 3) | ((b1 >> 2) & 0x7)) & 0xFF); - output[251 - 5 * i] = (byte)(((buffer[i + 51 * 4 + 1] << 3) | ((b2 >> 2) & 0x7)) & 0xFF); - output[252 - 5 * i] = (byte)(((buffer[i + 51 * 5 + 1] << 3) | ((b3 >> 2) & 0x7)) & 0xFF); - output[253 - 5 * i] = (byte)(((buffer[i + 51 * 6 + 1] << 3) | b4) & 0xFF); - output[254 - 5 * i] = (byte)(((buffer[i + 51 * 7 + 1] << 3) | b5) & 0xFF); + output[250 - (5 * i)] = (byte)(((buffer[i + (51 * 3) + 1] << 3) | ((b1 >> 2) & 0x7)) & 0xFF); + output[251 - (5 * i)] = (byte)(((buffer[i + (51 * 4) + 1] << 3) | ((b2 >> 2) & 0x7)) & 0xFF); + output[252 - (5 * i)] = (byte)(((buffer[i + (51 * 5) + 1] << 3) | ((b3 >> 2) & 0x7)) & 0xFF); + output[253 - (5 * i)] = (byte)(((buffer[i + (51 * 6) + 1] << 3) | b4) & 0xFF); + output[254 - (5 * i)] = (byte)(((buffer[i + (51 * 7) + 1] << 3) | b5) & 0xFF); } output[255] = (byte)(((buffer[409] << 3) | (buffer[0] & 0x7)) & 0xFF); @@ -220,8 +220,8 @@ namespace Aaru.Decoders.Floppy } else { - output[i] |= (byte)(((buffer[i - 86 * 2] & 0x10) >> 3) & 0xFF); - output[i] |= (byte)(((buffer[i - 86 * 2] & 0x20) >> 5) & 0xFF); + output[i] |= (byte)(((buffer[i - (86 * 2)] & 0x10) >> 3) & 0xFF); + output[i] |= (byte)(((buffer[i - (86 * 2)] & 0x20) >> 5) & 0xFF); } } @@ -306,24 +306,24 @@ namespace Aaru.Decoders.Floppy }; AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Volume {0}", - (((sector.addressField.volume[0] & 0x55) << 1) | - (sector.addressField.volume[1] & 0x55)) & 0xFF); + (((sector.addressField.volume[0] & 0x55) << 1) | + (sector.addressField.volume[1] & 0x55)) & 0xFF); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Track {0}", - (((sector.addressField.track[0] & 0x55) << 1) | - (sector.addressField.track[1] & 0x55)) & 0xFF); + (((sector.addressField.track[0] & 0x55) << 1) | + (sector.addressField.track[1] & 0x55)) & 0xFF); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Sector {0}", - (((sector.addressField.sector[0] & 0x55) << 1) | - (sector.addressField.sector[1] & 0x55)) & 0xFF); + (((sector.addressField.sector[0] & 0x55) << 1) | + (sector.addressField.sector[1] & 0x55)) & 0xFF); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Checksum {0}", - (((sector.addressField.checksum[0] & 0x55) << 1) | - (sector.addressField.checksum[1] & 0x55)) & 0xFF); + (((sector.addressField.checksum[0] & 0x55) << 1) | + (sector.addressField.checksum[1] & 0x55)) & 0xFF); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Epilogue {0:X2}{1:X2}{2:X2}", - sector.addressField.epilogue[0], sector.addressField.epilogue[1], - sector.addressField.epilogue[2]); + sector.addressField.epilogue[0], sector.addressField.epilogue[1], + sector.addressField.epilogue[2]); position += 14; int syncCount = 0; @@ -351,7 +351,7 @@ namespace Aaru.Decoders.Floppy sector.dataField = new RawDataField(); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Inner gap has {0} bytes", - sector.innerGap.Length); + sector.innerGap.Length); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Prologue found at {0}", position); sector.dataField.prologue = new byte[3]; @@ -377,7 +377,7 @@ namespace Aaru.Decoders.Floppy sector.dataField.data = gaps.ToArray(); AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Data has {0} bytes", - sector.dataField.data.Length); + sector.dataField.data.Length); sector.dataField.checksum = data[position]; sector.dataField.epilogue = new byte[3]; @@ -519,10 +519,10 @@ namespace Aaru.Decoders.Floppy } AaruConsole.DebugWriteLine("Apple ][ GCR Decoder", "Adding sector {0} of track {1}", - (((sector.addressField.sector[0] & 0x55) << 1) | - (sector.addressField.sector[1] & 0x55)) & 0xFF, - (((sector.addressField.track[0] & 0x55) << 1) | - (sector.addressField.track[1] & 0x55)) & 0xFF); + (((sector.addressField.sector[0] & 0x55) << 1) | + (sector.addressField.sector[1] & 0x55)) & 0xFF, + (((sector.addressField.track[0] & 0x55) << 1) | + (sector.addressField.track[1] & 0x55)) & 0xFF); sectors.Add(sector); } diff --git a/Floppy/Enums.cs b/Floppy/Enums.cs index 0243438e3..927b1a959 100644 --- a/Floppy/Enums.cs +++ b/Floppy/Enums.cs @@ -39,13 +39,20 @@ namespace Aaru.Decoders.Floppy public enum IBMSectorSizeCode : byte { /// 128 bytes/sector - EighthKilo = 0, /// 256 bytes/sector - QuarterKilo = 1, /// 512 bytes/sector - HalfKilo = 2, /// 1024 bytes/sector - Kilo = 3, /// 2048 bytes/sector - TwiceKilo = 4, /// 4096 bytes/sector - FriceKilo = 5, /// 8192 bytes/sector - TwiceFriceKilo = 6, /// 16384 bytes/sector + EighthKilo = 0, + /// 256 bytes/sector + QuarterKilo = 1, + /// 512 bytes/sector + HalfKilo = 2, + /// 1024 bytes/sector + Kilo = 3, + /// 2048 bytes/sector + TwiceKilo = 4, + /// 4096 bytes/sector + FriceKilo = 5, + /// 8192 bytes/sector + TwiceFriceKilo = 6, + /// 16384 bytes/sector FricelyFriceKilo = 7 } @@ -60,9 +67,12 @@ namespace Aaru.Decoders.Floppy public enum AppleEncodedFormat : byte { /// Disk is an Apple II 3.5" disk - AppleII = 0x96, /// Disk is an Apple Lisa 3.5" disk - Lisa = 0x97, /// Disk is an Apple Macintosh single-sided 3.5" disk - MacSingleSide = 0x9A, /// Disk is an Apple Macintosh double-sided 3.5" disk + AppleII = 0x96, + /// Disk is an Apple Lisa 3.5" disk + Lisa = 0x97, + /// Disk is an Apple Macintosh single-sided 3.5" disk + MacSingleSide = 0x9A, + /// Disk is an Apple Macintosh double-sided 3.5" disk MacDoubleSide = 0xD9 } } \ No newline at end of file diff --git a/MMC/ExtendedCSD.cs b/MMC/ExtendedCSD.cs index c9ca50dfb..84cb6a906 100644 --- a/MMC/ExtendedCSD.cs +++ b/MMC/ExtendedCSD.cs @@ -221,8 +221,8 @@ namespace Aaru.Decoders.MMC if(response.Length != 512) return null; - GCHandle handle = GCHandle.Alloc(response, GCHandleType.Pinned); - var csd = (ExtendedCSD)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(ExtendedCSD)); + var handle = GCHandle.Alloc(response, GCHandleType.Pinned); + var csd = (ExtendedCSD)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(ExtendedCSD)); handle.Free(); return csd; @@ -473,7 +473,7 @@ namespace Aaru.Decoders.MMC sb.AppendFormat("\tDevice has a {0} KiB boot partition", csd.BootPartitionSize * 128).AppendLine(); if((csd.AccessSize & 0x0F) > 0) - sb.AppendFormat("\tDevice has a page size of {0} KiB", (csd.AccessSize & 0x0F) * 512.0 / 1024.0). + sb.AppendFormat("\tDevice has a page size of {0} KiB", ((csd.AccessSize & 0x0F) * 512.0) / 1024.0). AppendLine(); if(csd.HighCapacityEraseUnitSize > 0) diff --git a/MMC/VendorString.cs b/MMC/VendorString.cs index c8670457b..784e5d06b 100644 --- a/MMC/VendorString.cs +++ b/MMC/VendorString.cs @@ -38,9 +38,9 @@ namespace Aaru.Decoders.MMC { switch(mmcVendorId) { - case 0x15: return"Samsung"; - case 0x2C: return"extreMEmory"; - default: return$"Unknown manufacturer ID 0x{mmcVendorId:X2}"; + case 0x15: return "Samsung"; + case 0x2C: return "extreMEmory"; + default: return $"Unknown manufacturer ID 0x{mmcVendorId:X2}"; } } } diff --git a/PCMCIA/Enums.cs b/PCMCIA/Enums.cs index c0488a68f..138dfae0b 100644 --- a/PCMCIA/Enums.cs +++ b/PCMCIA/Enums.cs @@ -39,45 +39,84 @@ namespace Aaru.Decoders.PCMCIA public enum TupleCodes : byte { /// Checksum control - CISTPL_CHECKSUM = 0x10, /// End-of-chain - CISTPL_END = 0xFF, /// Indirect access PC Card memory - CISTPL_INDIRECT = 0x03, /// Link-target-control - CISTPL_LINKTARGET = 0x13, /// Longlink to attribute memory - CISTPL_LONGLINK_A = 0x11, /// Longlink to common memory - CISTPL_LONGLINK_C = 0x12, /// Longlink to next chain on a Cardbus PC Card - CISTPL_LONGLINK_CB = 0x02, /// Longlink to function specific chains - CISTPL_LONGLINK_MFC = 0x06, /// No-link to common memory - CISTPL_NO_LINK = 0x14, /// Null tuple - CISTPL_NULL = 0x00, /// Alternate language string - CISTPL_ALTSTR = 0x16, /// Common memory device information - CISTPL_DEVICE = 0x01, /// Attribute memory device information - CISTPL_DEVICE_A = 0x17, /// Other operating conditions information for attribute memory - CISTPL_DEVICE_OA = 0x1D, /// Other operating conditions information for common memory - CISTPL_DEVICE_OC = 0x1C, /// Device geometry information for common memory - CISTPL_DEVICEGEO = 0x1E, /// Device geometry information for attribute memory - CISTPL_DEVICEGEO_A = 0x1F, /// Extended common memory device information - CISTPL_EXTDEVIC = 0x09, /// Function extensions - CISTPL_FUNCE = 0x22, /// Function class identification - CISTPL_FUNCID = 0x21, /// JEDEC programming information for attribute memory - CISTPL_JEDEC_A = 0x19, /// JEDEC programming information for common memory - CISTPL_JEDEC_C = 0x18, /// Manufacturer identification string - CISTPL_MANFID = 0x20, /// Level 1 version/product information - CISTPL_VERS_1 = 0x15, /// BAR for a CardBus PC Card - CISTPL_BAR = 0x07, /// Configuration-table-entry - CISTPL_CFTABLE_ENTRY = 0x1B, /// Configuration-table-entry for a CardBus PC Card - CISTPL_CFTABLE_ENTRY_CB = 0x05, /// Configuration tuple for a 16-bit PC Card - CISTPL_CONFIG = 0x1A, /// Configuration tuple for a CardBus PC Card - CISTPL_CONFIG_CB = 0x04, /// Function state save/restore definition - CISTPL_PWR_MGMNT = 0x08, /// Battery replacement date - CISTPL_BATTERY = 0x45, /// Card initialization date - CISTPL_DATE = 0x44, /// Level 2 version/product information - CISTPL_VERS_2 = 0x40, /// Byte ordering for disk-like partitions - CISTPL_BYTEORDER = 0x43, /// Data recording format for common memory - CISTPL_FORMAT = 0x41, /// Data recording format for attribute memory - CISTPL_FORMAT_A = 0x47, /// Partition geometry - CISTPL_GEOMETRY = 0x42, /// Software interleaving - CISTPL_SWIL = 0x23, /// Partition organization - CISTPL_ORG = 0x46, /// Special purpose + CISTPL_CHECKSUM = 0x10, + /// End-of-chain + CISTPL_END = 0xFF, + /// Indirect access PC Card memory + CISTPL_INDIRECT = 0x03, + /// Link-target-control + CISTPL_LINKTARGET = 0x13, + /// Longlink to attribute memory + CISTPL_LONGLINK_A = 0x11, + /// Longlink to common memory + CISTPL_LONGLINK_C = 0x12, + /// Longlink to next chain on a Cardbus PC Card + CISTPL_LONGLINK_CB = 0x02, + /// Longlink to function specific chains + CISTPL_LONGLINK_MFC = 0x06, + /// No-link to common memory + CISTPL_NO_LINK = 0x14, + /// Null tuple + CISTPL_NULL = 0x00, + /// Alternate language string + CISTPL_ALTSTR = 0x16, + /// Common memory device information + CISTPL_DEVICE = 0x01, + /// Attribute memory device information + CISTPL_DEVICE_A = 0x17, + /// Other operating conditions information for attribute memory + CISTPL_DEVICE_OA = 0x1D, + /// Other operating conditions information for common memory + CISTPL_DEVICE_OC = 0x1C, + /// Device geometry information for common memory + CISTPL_DEVICEGEO = 0x1E, + /// Device geometry information for attribute memory + CISTPL_DEVICEGEO_A = 0x1F, + /// Extended common memory device information + CISTPL_EXTDEVIC = 0x09, + /// Function extensions + CISTPL_FUNCE = 0x22, + /// Function class identification + CISTPL_FUNCID = 0x21, + /// JEDEC programming information for attribute memory + CISTPL_JEDEC_A = 0x19, + /// JEDEC programming information for common memory + CISTPL_JEDEC_C = 0x18, + /// Manufacturer identification string + CISTPL_MANFID = 0x20, + /// Level 1 version/product information + CISTPL_VERS_1 = 0x15, + /// BAR for a CardBus PC Card + CISTPL_BAR = 0x07, + /// Configuration-table-entry + CISTPL_CFTABLE_ENTRY = 0x1B, + /// Configuration-table-entry for a CardBus PC Card + CISTPL_CFTABLE_ENTRY_CB = 0x05, + /// Configuration tuple for a 16-bit PC Card + CISTPL_CONFIG = 0x1A, + /// Configuration tuple for a CardBus PC Card + CISTPL_CONFIG_CB = 0x04, + /// Function state save/restore definition + CISTPL_PWR_MGMNT = 0x08, + /// Battery replacement date + CISTPL_BATTERY = 0x45, + /// Card initialization date + CISTPL_DATE = 0x44, + /// Level 2 version/product information + CISTPL_VERS_2 = 0x40, + /// Byte ordering for disk-like partitions + CISTPL_BYTEORDER = 0x43, + /// Data recording format for common memory + CISTPL_FORMAT = 0x41, + /// Data recording format for attribute memory + CISTPL_FORMAT_A = 0x47, + /// Partition geometry + CISTPL_GEOMETRY = 0x42, + /// Software interleaving + CISTPL_SWIL = 0x23, + /// Partition organization + CISTPL_ORG = 0x46, + /// Special purpose CISTPL_SPCL = 0x90 } @@ -85,15 +124,24 @@ namespace Aaru.Decoders.PCMCIA public enum DeviceTypeCodes : byte { /// No device, used to designate a hole - DTYPE_NULL = 0, /// Masked ROM - DTYPE_ROM = 1, /// One-type-programmable ROM - DTYPE_OTPROM = 2, /// UV-Erasable Programmable ROM - DTYPE_EPROM = 3, /// Electronically-Erasable Programmable ROM - DTYPE_EEPROM = 4, /// Flash memory - DTYPE_FLASH = 5, /// Static RAM - DTYPE_SRAM = 6, /// Dynamic RAM - DTYPE_DRAM = 7, /// Function-specific memory address range - DTYPE_FUNCSPEC = 13, /// Extended type follows + DTYPE_NULL = 0, + /// Masked ROM + DTYPE_ROM = 1, + /// One-type-programmable ROM + DTYPE_OTPROM = 2, + /// UV-Erasable Programmable ROM + DTYPE_EPROM = 3, + /// Electronically-Erasable Programmable ROM + DTYPE_EEPROM = 4, + /// Flash memory + DTYPE_FLASH = 5, + /// Static RAM + DTYPE_SRAM = 6, + /// Dynamic RAM + DTYPE_DRAM = 7, + /// Function-specific memory address range + DTYPE_FUNCSPEC = 13, + /// Extended type follows DTYPE_EXTEND = 14 } @@ -101,11 +149,16 @@ namespace Aaru.Decoders.PCMCIA public enum DeviceSpeedCodes : byte { /// No device - DSPEED_NULL = 0, /// 250 ns - DSPEED_250NS = 1, /// 200 ns - DSPEED_200NS = 2, /// 150 ns - DSPEED_150NS = 3, /// 100 ns - DSPEED_100NS = 4, /// Extended speed follows + DSPEED_NULL = 0, + /// 250 ns + DSPEED_250NS = 1, + /// 200 ns + DSPEED_200NS = 2, + /// 150 ns + DSPEED_150NS = 3, + /// 100 ns + DSPEED_100NS = 4, + /// Extended speed follows DSPEED_EXT = 7 } diff --git a/PCMCIA/VendorCode.cs b/PCMCIA/VendorCode.cs index 01077f948..0b9084560 100644 --- a/PCMCIA/VendorCode.cs +++ b/PCMCIA/VendorCode.cs @@ -42,321 +42,321 @@ namespace Aaru.Decoders.PCMCIA switch(id) { #region JEDEC - case 0x01: return"AMD"; - case 0x02: return"AMI"; - case 0x83: return"Fairchild"; - case 0x04: return"Fujitsu"; - case 0x85: return"GTE"; - case 0x86: return"Harris"; - case 0x07: return"Hitachi"; - case 0x08: return"Inmos"; - case 0x89: return"Intel"; - case 0x8A: return"I.T.T."; - case 0x0B: return"Intersil"; - case 0x8C: return"Monolithic Memories"; - case 0x0D: return"Mostek"; - case 0x0E: return"Freescale"; - case 0x8F: return"National"; - case 0x10: return"NEC"; - case 0x91: return"RCA"; - case 0x92: return"Raytheon"; - case 0x13: return"Conexant"; - case 0x94: return"Seeq"; - case 0x15: return"NXP"; - case 0x16: return"Synertek"; - case 0x97: return"Texas Instruments"; - case 0x98: return"Toshiba"; - case 0x19: return"Xicor"; - case 0x1A: return"Zilog"; - case 0x9B: return"Eurotechnique"; - case 0x1C: return"Mitsubishi2"; - case 0x9D: return"Lucent"; - case 0x9E: return"Exel"; - case 0x1F: return"Atmel"; - case 0x20: return"SGS/Thomson"; - case 0xA1: return"Lattice Semiconductor"; - case 0xA2: return"NCR"; - case 0x23: return"Wafer Scale Integration"; - case 0xA4: return"International Business Machines"; - case 0x25: return"Tristar"; - case 0x26: return"Visic"; - case 0xA7: return"International CMOS Technology"; - case 0xA8: return"SSSI"; - case 0x29: return"Microchip Technology"; - case 0x2A: return"Ricoh"; - case 0xAB: return"VLSI"; - case 0x2C: return"Micron Technology"; - case 0xAD: return"Hynix Semiconductor"; - case 0xAE: return"OKI Semiconductor"; - case 0x2F: return"ACTEL"; - case 0xB0: return"Sharp"; - case 0x31: return"Catalyst"; - case 0x32: return"Panasonic"; - case 0xB3: return"IDT"; - case 0x34: return"Cypress"; - case 0xB5: return"Digital Equipment Corporation"; - case 0xB6: return"LSI Logic"; - case 0x37: return"Zarlink"; - case 0x38: return"UTMC"; - case 0xB9: return"Thinking Machine"; - case 0xBA: return"Thomson CSF"; - case 0x3B: return"Integrated CMOS"; - case 0xBC: return"Honeywell"; - case 0x3D: return"Tektronix"; - case 0x3E: return"Oracle Corporation"; - case 0xBF: return"Silicon Storage Technology"; - case 0x40: return"ProMos"; - case 0xC1: return"Infineon"; - case 0xC2: return"Macronix"; - case 0x43: return"Xerox"; - case 0xC4: return"Plus Logic"; - case 0x45: return"SanDisk Corporation"; - case 0x46: return"Elan Circuit Technology"; - case 0xC7: return"European Silicon"; - case 0xC8: return"Apple"; - case 0x49: return"Xilinx"; - case 0x4A: return"Compaq"; - case 0xCB: return"Protocol Engines"; - case 0x4C: return"SCI"; - case 0xCD: return"Seiko Instruments"; - case 0xCE: return"Samsung"; - case 0x4F: return"I3 Design System"; - case 0xD0: return"Klic"; - case 0x51: return"Crosspoint Solutions"; - case 0x52: return"Alliance Semiconductor"; - case 0xD3: return"Tandem"; - case 0x54: return"Hewlett-Packard"; - case 0xD5: return"Integrated Silicon Solutions"; - case 0xD6: return"Brooktree"; - case 0x57: return"New Media"; - case 0x58: return"MHS Electronic"; - case 0xD9: return"Performance Semiconductors"; - case 0xDA: return"Winbond Electronic"; - case 0x5B: return"Kawasaki Steel"; - case 0x5D: return"TECMAR"; - case 0x5E: return"Exar"; - case 0xDF: return"PCMCIA"; - case 0xE0: return"LG Semiconductor"; - case 0x61: return"Northern Telecom"; - case 0x62: return"Sanyo2"; - case 0xE3: return"Array Microsystems"; - case 0x64: return"Crystal Semiconductor"; - case 0xE5: return"Analog Devices"; - case 0xE6: return"PMC-Sierra"; - case 0x67: return"Asparix"; - case 0x68: return"Convex Computer"; - case 0xE9: return"Nimbus Technology"; - case 0x6B: return"Transwitch"; - case 0xEC: return"Micronas"; - case 0x6D: return"Canon"; - case 0x6E: return"Altera"; - case 0xEF: return"NEXCOM"; - case 0x70: return"Qualcomm"; - case 0xF1: return"Sony"; - case 0xF2: return"Cray Research"; - case 0x73: return"AMS"; - case 0xF4: return"Vitesse"; - case 0x75: return"Aster Electronics"; - case 0x76: return"Bay Networks"; - case 0xF7: return"Zentrum"; - case 0xF8: return"TRW"; - case 0x79: return"Thesys"; - case 0x7A: return"Solbourne Computer"; - case 0xFB: return"Allied-Signal"; - case 0x7C: return"Dialog Semiconductor"; - case 0xFD: return"Media Vision"; - case 0xFE: return"Numonyx Corporation"; - case 0x7F01: return"Cirrus Logic"; - case 0x7F02: return"National Instruments"; - case 0x7F04: return"Alcatel Mietec"; - case 0x7F07: return"JTAG Technologies"; - case 0x7F08: return"Loral"; - case 0x7F0B: return"Bestlink Systems"; - case 0x7F0D: return"GENNUM"; - case 0x7F0E: return"VideoLogic"; - case 0x7F10: return"Chip Express"; - case 0x7F13: return"TCSI"; - case 0x7F15: return"Hughes Aircraft"; - case 0x7F16: return"Lanstar Semiconductor"; - case 0x7F19: return"Music Semi"; - case 0x7F1A: return"Ericsson Components"; - case 0x7F1C: return"Eon Silicon Devices"; - case 0x7F1F: return"Integ.Memories Tech."; - case 0x7F20: return"Corollary Inc."; - case 0x7F23: return"EIV(Switzerland)"; - case 0x7F25: return"Zarlink(formerly Mitel)"; - case 0x7F26: return"Clearpoint"; - case 0x7F29: return"Vanguard"; - case 0x7F2A: return"Hagiwara Sys-Com"; - case 0x7F2C: return"Celestica"; - case 0x7F2F: return"Rohm Company Ltd."; - case 0x7F31: return"Libit Signal Processing"; - case 0x7F32: return"Enhanced Memories Inc."; - case 0x7F34: return"Adaptec Inc."; - case 0x7F37: return"AMIC Technology"; - case 0x7F38: return"Adobe Systems"; - case 0x7F3B: return"Newport Digital"; - case 0x7F3D: return"T Square"; - case 0x7F3E: return"Seiko Epson"; - case 0x7F40: return"Viking Components"; - case 0x7F43: return"Suwa Electronics"; - case 0x7F45: return"Micron CMS"; - case 0x7F46: return"American Computer &Digital Components Inc"; - case 0x7F49: return"CPU Design"; - case 0x7F4A: return"Price Point"; - case 0x7F4C: return"Tellabs"; - case 0x7F4F: return"Transcend Information"; - case 0x7F51: return"CKD Corporation Ltd."; - case 0x7F52: return"Capital Instruments, Inc."; - case 0x7F54: return"Linvex Technology"; - case 0x7F57: return"Dynamem, Inc."; - case 0x7F58: return"NERA ASA"; - case 0x7F5B: return"Acorn Computers"; - case 0x7F5D: return"Oak Technology, Inc."; - case 0x7F5E: return"Itec Memory"; - case 0x7F61: return"Wintec Industries"; - case 0x7F62: return"Super PC Memory"; - case 0x7F64: return"Galvantech"; - case 0x7F67: return"GateField"; - case 0x7F68: return"Integrated Memory System"; - case 0x7F6B: return"Goldenram"; - case 0x7F6D: return"Cimaron Communications"; - case 0x7F6E: return"Nippon Steel Semi.Corp."; - case 0x7F70: return"AMCC"; - case 0x7F73: return"Digital Microwave"; - case 0x7F75: return"MIMOS Semiconductor"; - case 0x7F76: return"Advanced Fibre"; - case 0x7F79: return"Acbel Polytech Inc."; - case 0x7F7A: return"Apacer Technology"; - case 0x7F7C: return"FOXCONN"; - case 0x7F83: return"ILC Data Device"; - case 0x7F85: return"Micro Linear"; - case 0x7F86: return"Univ.Of NC"; - case 0x7F89: return"Nchip"; - case 0x7F8A: return"Galileo Tech"; - case 0x7F8C: return"Graychip"; - case 0x7F8F: return"Robert Bosch"; - case 0x7F91: return"DATARAM"; - case 0x7F92: return"United Microelec Corp."; - case 0x7F94: return"Smart Modular"; - case 0x7F97: return"Qlogic"; - case 0x7F98: return"Kingston"; - case 0x7F9B: return"SpaSE"; - case 0x7F9D: return"Programmable Micro Corp"; - case 0x7F9E: return"DoD"; - case 0x7FA1: return"Dallas Semiconductor"; - case 0x7FA2: return"Omnivision"; - case 0x7FA4: return"Novatel Wireless"; - case 0x7FA7: return"Cabletron"; - case 0x7FA8: return"Silicon Technology"; - case 0x7FAB: return"Vantis"; - case 0x7FAD: return"Century"; - case 0x7FAE: return"Hal Computers"; - case 0x7FB0: return"Juniper Networks"; - case 0x7FB3: return"Tundra Semiconductor"; - case 0x7FB5: return"LightSpeed Semi."; - case 0x7FB6: return"ZSP Corp."; - case 0x7FB9: return"Dynachip"; - case 0x7FBA: return"PNY Electronics"; - case 0x7FBC: return"MMC Networks"; - case 0x7FBF: return"Broadcom"; - case 0x7FC1: return"V3 Semiconductor"; - case 0x7FC2: return"Flextronics(formerly Orbit)"; - case 0x7FC4: return"Transmeta"; - case 0x7FC7: return"Enhance 3000 Inc"; - case 0x7FC8: return"Tower Semiconductor"; - case 0x7FCB: return"Maxim Integrated Product"; - case 0x7FCD: return"Centaur Technology"; - case 0x7FCE: return"Unigen Corporation"; - case 0x7FD0: return"Memory Card Technology"; - case 0x7FD3: return"Aica Kogyo, Ltd."; - case 0x7FD5: return"MSC Vertriebs GmbH"; - case 0x7FD6: return"AKM Company, Ltd."; - case 0x7FD9: return"GSI Technology"; - case 0x7FDA: return"Dane-Elec (C Memory)"; - case 0x7FDC: return"Lara Technology"; - case 0x7FDF: return"Tanisys Technology"; - case 0x7FE0: return"Truevision"; - case 0x7FE3: return"MGV Memory"; - case 0x7FE5: return"Gadzoox Networks"; - case 0x7FE6: return"Multi Dimensional Cons."; - case 0x7FE9: return"Triscend"; - case 0x7FEA: return"XaQti"; - case 0x7FEC: return"Clear Logic"; - case 0x7FEF: return"Advantage Memory"; - case 0x7FF1: return"LeCroy"; - case 0x7FF2: return"Yamaha Corporation"; - case 0x7FF4: return"NetLogic Microsystems"; - case 0x7FF7: return"BF Goodrich Data."; - case 0x7FF8: return"Epigram"; - case 0x7FFB: return"Admor Memory"; - case 0x7FFD: return"Quadratics Superconductor"; - case 0x7FFE: return"3COM"; + case 0x01: return "AMD"; + case 0x02: return "AMI"; + case 0x83: return "Fairchild"; + case 0x04: return "Fujitsu"; + case 0x85: return "GTE"; + case 0x86: return "Harris"; + case 0x07: return "Hitachi"; + case 0x08: return "Inmos"; + case 0x89: return "Intel"; + case 0x8A: return "I.T.T."; + case 0x0B: return "Intersil"; + case 0x8C: return "Monolithic Memories"; + case 0x0D: return "Mostek"; + case 0x0E: return "Freescale"; + case 0x8F: return "National"; + case 0x10: return "NEC"; + case 0x91: return "RCA"; + case 0x92: return "Raytheon"; + case 0x13: return "Conexant"; + case 0x94: return "Seeq"; + case 0x15: return "NXP"; + case 0x16: return "Synertek"; + case 0x97: return "Texas Instruments"; + case 0x98: return "Toshiba"; + case 0x19: return "Xicor"; + case 0x1A: return "Zilog"; + case 0x9B: return "Eurotechnique"; + case 0x1C: return "Mitsubishi2"; + case 0x9D: return "Lucent"; + case 0x9E: return "Exel"; + case 0x1F: return "Atmel"; + case 0x20: return "SGS/Thomson"; + case 0xA1: return "Lattice Semiconductor"; + case 0xA2: return "NCR"; + case 0x23: return "Wafer Scale Integration"; + case 0xA4: return "International Business Machines"; + case 0x25: return "Tristar"; + case 0x26: return "Visic"; + case 0xA7: return "International CMOS Technology"; + case 0xA8: return "SSSI"; + case 0x29: return "Microchip Technology"; + case 0x2A: return "Ricoh"; + case 0xAB: return "VLSI"; + case 0x2C: return "Micron Technology"; + case 0xAD: return "Hynix Semiconductor"; + case 0xAE: return "OKI Semiconductor"; + case 0x2F: return "ACTEL"; + case 0xB0: return "Sharp"; + case 0x31: return "Catalyst"; + case 0x32: return "Panasonic"; + case 0xB3: return "IDT"; + case 0x34: return "Cypress"; + case 0xB5: return "Digital Equipment Corporation"; + case 0xB6: return "LSI Logic"; + case 0x37: return "Zarlink"; + case 0x38: return "UTMC"; + case 0xB9: return "Thinking Machine"; + case 0xBA: return "Thomson CSF"; + case 0x3B: return "Integrated CMOS"; + case 0xBC: return "Honeywell"; + case 0x3D: return "Tektronix"; + case 0x3E: return "Oracle Corporation"; + case 0xBF: return "Silicon Storage Technology"; + case 0x40: return "ProMos"; + case 0xC1: return "Infineon"; + case 0xC2: return "Macronix"; + case 0x43: return "Xerox"; + case 0xC4: return "Plus Logic"; + case 0x45: return "SanDisk Corporation"; + case 0x46: return "Elan Circuit Technology"; + case 0xC7: return "European Silicon"; + case 0xC8: return "Apple"; + case 0x49: return "Xilinx"; + case 0x4A: return "Compaq"; + case 0xCB: return "Protocol Engines"; + case 0x4C: return "SCI"; + case 0xCD: return "Seiko Instruments"; + case 0xCE: return "Samsung"; + case 0x4F: return "I3 Design System"; + case 0xD0: return "Klic"; + case 0x51: return "Crosspoint Solutions"; + case 0x52: return "Alliance Semiconductor"; + case 0xD3: return "Tandem"; + case 0x54: return "Hewlett-Packard"; + case 0xD5: return "Integrated Silicon Solutions"; + case 0xD6: return "Brooktree"; + case 0x57: return "New Media"; + case 0x58: return "MHS Electronic"; + case 0xD9: return "Performance Semiconductors"; + case 0xDA: return "Winbond Electronic"; + case 0x5B: return "Kawasaki Steel"; + case 0x5D: return "TECMAR"; + case 0x5E: return "Exar"; + case 0xDF: return "PCMCIA"; + case 0xE0: return "LG Semiconductor"; + case 0x61: return "Northern Telecom"; + case 0x62: return "Sanyo2"; + case 0xE3: return "Array Microsystems"; + case 0x64: return "Crystal Semiconductor"; + case 0xE5: return "Analog Devices"; + case 0xE6: return "PMC-Sierra"; + case 0x67: return "Asparix"; + case 0x68: return "Convex Computer"; + case 0xE9: return "Nimbus Technology"; + case 0x6B: return "Transwitch"; + case 0xEC: return "Micronas"; + case 0x6D: return "Canon"; + case 0x6E: return "Altera"; + case 0xEF: return "NEXCOM"; + case 0x70: return "Qualcomm"; + case 0xF1: return "Sony"; + case 0xF2: return "Cray Research"; + case 0x73: return "AMS"; + case 0xF4: return "Vitesse"; + case 0x75: return "Aster Electronics"; + case 0x76: return "Bay Networks"; + case 0xF7: return "Zentrum"; + case 0xF8: return "TRW"; + case 0x79: return "Thesys"; + case 0x7A: return "Solbourne Computer"; + case 0xFB: return "Allied-Signal"; + case 0x7C: return "Dialog Semiconductor"; + case 0xFD: return "Media Vision"; + case 0xFE: return "Numonyx Corporation"; + case 0x7F01: return "Cirrus Logic"; + case 0x7F02: return "National Instruments"; + case 0x7F04: return "Alcatel Mietec"; + case 0x7F07: return "JTAG Technologies"; + case 0x7F08: return "Loral"; + case 0x7F0B: return "Bestlink Systems"; + case 0x7F0D: return "GENNUM"; + case 0x7F0E: return "VideoLogic"; + case 0x7F10: return "Chip Express"; + case 0x7F13: return "TCSI"; + case 0x7F15: return "Hughes Aircraft"; + case 0x7F16: return "Lanstar Semiconductor"; + case 0x7F19: return "Music Semi"; + case 0x7F1A: return "Ericsson Components"; + case 0x7F1C: return "Eon Silicon Devices"; + case 0x7F1F: return "Integ.Memories Tech."; + case 0x7F20: return "Corollary Inc."; + case 0x7F23: return "EIV(Switzerland)"; + case 0x7F25: return "Zarlink(formerly Mitel)"; + case 0x7F26: return "Clearpoint"; + case 0x7F29: return "Vanguard"; + case 0x7F2A: return "Hagiwara Sys-Com"; + case 0x7F2C: return "Celestica"; + case 0x7F2F: return "Rohm Company Ltd."; + case 0x7F31: return "Libit Signal Processing"; + case 0x7F32: return "Enhanced Memories Inc."; + case 0x7F34: return "Adaptec Inc."; + case 0x7F37: return "AMIC Technology"; + case 0x7F38: return "Adobe Systems"; + case 0x7F3B: return "Newport Digital"; + case 0x7F3D: return "T Square"; + case 0x7F3E: return "Seiko Epson"; + case 0x7F40: return "Viking Components"; + case 0x7F43: return "Suwa Electronics"; + case 0x7F45: return "Micron CMS"; + case 0x7F46: return "American Computer &Digital Components Inc"; + case 0x7F49: return "CPU Design"; + case 0x7F4A: return "Price Point"; + case 0x7F4C: return "Tellabs"; + case 0x7F4F: return "Transcend Information"; + case 0x7F51: return "CKD Corporation Ltd."; + case 0x7F52: return "Capital Instruments, Inc."; + case 0x7F54: return "Linvex Technology"; + case 0x7F57: return "Dynamem, Inc."; + case 0x7F58: return "NERA ASA"; + case 0x7F5B: return "Acorn Computers"; + case 0x7F5D: return "Oak Technology, Inc."; + case 0x7F5E: return "Itec Memory"; + case 0x7F61: return "Wintec Industries"; + case 0x7F62: return "Super PC Memory"; + case 0x7F64: return "Galvantech"; + case 0x7F67: return "GateField"; + case 0x7F68: return "Integrated Memory System"; + case 0x7F6B: return "Goldenram"; + case 0x7F6D: return "Cimaron Communications"; + case 0x7F6E: return "Nippon Steel Semi.Corp."; + case 0x7F70: return "AMCC"; + case 0x7F73: return "Digital Microwave"; + case 0x7F75: return "MIMOS Semiconductor"; + case 0x7F76: return "Advanced Fibre"; + case 0x7F79: return "Acbel Polytech Inc."; + case 0x7F7A: return "Apacer Technology"; + case 0x7F7C: return "FOXCONN"; + case 0x7F83: return "ILC Data Device"; + case 0x7F85: return "Micro Linear"; + case 0x7F86: return "Univ.Of NC"; + case 0x7F89: return "Nchip"; + case 0x7F8A: return "Galileo Tech"; + case 0x7F8C: return "Graychip"; + case 0x7F8F: return "Robert Bosch"; + case 0x7F91: return "DATARAM"; + case 0x7F92: return "United Microelec Corp."; + case 0x7F94: return "Smart Modular"; + case 0x7F97: return "Qlogic"; + case 0x7F98: return "Kingston"; + case 0x7F9B: return "SpaSE"; + case 0x7F9D: return "Programmable Micro Corp"; + case 0x7F9E: return "DoD"; + case 0x7FA1: return "Dallas Semiconductor"; + case 0x7FA2: return "Omnivision"; + case 0x7FA4: return "Novatel Wireless"; + case 0x7FA7: return "Cabletron"; + case 0x7FA8: return "Silicon Technology"; + case 0x7FAB: return "Vantis"; + case 0x7FAD: return "Century"; + case 0x7FAE: return "Hal Computers"; + case 0x7FB0: return "Juniper Networks"; + case 0x7FB3: return "Tundra Semiconductor"; + case 0x7FB5: return "LightSpeed Semi."; + case 0x7FB6: return "ZSP Corp."; + case 0x7FB9: return "Dynachip"; + case 0x7FBA: return "PNY Electronics"; + case 0x7FBC: return "MMC Networks"; + case 0x7FBF: return "Broadcom"; + case 0x7FC1: return "V3 Semiconductor"; + case 0x7FC2: return "Flextronics(formerly Orbit)"; + case 0x7FC4: return "Transmeta"; + case 0x7FC7: return "Enhance 3000 Inc"; + case 0x7FC8: return "Tower Semiconductor"; + case 0x7FCB: return "Maxim Integrated Product"; + case 0x7FCD: return "Centaur Technology"; + case 0x7FCE: return "Unigen Corporation"; + case 0x7FD0: return "Memory Card Technology"; + case 0x7FD3: return "Aica Kogyo, Ltd."; + case 0x7FD5: return "MSC Vertriebs GmbH"; + case 0x7FD6: return "AKM Company, Ltd."; + case 0x7FD9: return "GSI Technology"; + case 0x7FDA: return "Dane-Elec (C Memory)"; + case 0x7FDC: return "Lara Technology"; + case 0x7FDF: return "Tanisys Technology"; + case 0x7FE0: return "Truevision"; + case 0x7FE3: return "MGV Memory"; + case 0x7FE5: return "Gadzoox Networks"; + case 0x7FE6: return "Multi Dimensional Cons."; + case 0x7FE9: return "Triscend"; + case 0x7FEA: return "XaQti"; + case 0x7FEC: return "Clear Logic"; + case 0x7FEF: return "Advantage Memory"; + case 0x7FF1: return "LeCroy"; + case 0x7FF2: return "Yamaha Corporation"; + case 0x7FF4: return "NetLogic Microsystems"; + case 0x7FF7: return "BF Goodrich Data."; + case 0x7FF8: return "Epigram"; + case 0x7FFB: return "Admor Memory"; + case 0x7FFD: return "Quadratics Superconductor"; + case 0x7FFE: return "3COM"; #endregion JEDEC - case 0x0100: return"Digital Equipment Corporation"; - case 0x0101: return"3Com Corporation"; - case 0x0102: return"Megahertz Corporation"; - case 0x0104: return"Socket Communications"; - case 0x0105: return"TDK Corporation"; - case 0x0108: return"Standard Microsystems Corporation"; - case 0x0109: return"Motorola Corporation"; - case 0x010b: return"National Instruments"; - case 0x0115: return"US Robotics Corporation"; - case 0x0121: return"Olicom"; - case 0x0126: return"Proxim"; - case 0x0128: return"Megahertz Corporation"; - case 0x012F: return"Adaptec Corporation"; - case 0x0137: return"Quatech"; - case 0x0138: return"Compaq"; - case 0x0140: return"Ositech"; - case 0x0143: return"D-Link"; - case 0x0149: return"Netgear"; - case 0x014D: return"Simple Technology"; - case 0x0156: return"Lucent Technologies"; - case 0x015F: return"Aironet Wireless Communications"; - case 0x016B: return"Ericsson"; - case 0x016C: return"Psion"; - case 0x0183: return"Compaq"; - case 0x0186: return"Kingston"; - case 0x0192: return"Sierra Wireless"; - case 0x0194: return"Dayna Corporation"; - case 0x01a6: return"Raytheon"; - case 0x01BF: return"Belkin"; - case 0x01EB: return"Bay Networks"; - case 0x0200: return"Farallon Communications"; - case 0x021B: return"Telecom Device"; - case 0x023D: return"Nokia Communications"; - case 0x0250: return"Samsung"; - case 0x0264: return"Anycom"; - case 0x0268: return"Alvarion Ltd."; - case 0x026C: return"Symbol"; - case 0x026F: return"BUFFALO"; - case 0x0274: return"The Linksys Group"; - case 0x0288: return"NEC Infrontia"; - case 0x028A: return"I-O DATA"; - case 0x02AA: return"Asustek Computer"; - case 0x02AC: return"Siemens"; - case 0x02D2: return"Microsoft Corporation"; - case 0x02DF: return"AmbiCom Inc"; - case 0x0a02: return"BreezeCOM"; - case 0x10CD: return"NewMedia"; - case 0x1668: return"ACTIONTEC"; - case 0x3401: return"Lasat Communications A/S"; - case 0x4E01: return"Lexar Media"; - case 0x5241: return"Archos"; - case 0x890F: return"Dual"; - case 0x8A01: return"Compex Corporation"; - case 0xC001: return"Contec"; - case 0xC00B: return"MACNICA"; - case 0xC00C: return"Roland"; - case 0xC00F: return"Corega K.K."; - case 0xC012: return"Hagiwara SYS-COM"; - case 0xC015: return"RATOC System Inc."; - case 0xC020: return"NextCom K.K."; - case 0xC250: return"EMTAC Technology Corporation"; - case 0xD601: return"Elsa"; - default: return$"Unknown vendor id 0x{id:X4}"; + case 0x0100: return "Digital Equipment Corporation"; + case 0x0101: return "3Com Corporation"; + case 0x0102: return "Megahertz Corporation"; + case 0x0104: return "Socket Communications"; + case 0x0105: return "TDK Corporation"; + case 0x0108: return "Standard Microsystems Corporation"; + case 0x0109: return "Motorola Corporation"; + case 0x010b: return "National Instruments"; + case 0x0115: return "US Robotics Corporation"; + case 0x0121: return "Olicom"; + case 0x0126: return "Proxim"; + case 0x0128: return "Megahertz Corporation"; + case 0x012F: return "Adaptec Corporation"; + case 0x0137: return "Quatech"; + case 0x0138: return "Compaq"; + case 0x0140: return "Ositech"; + case 0x0143: return "D-Link"; + case 0x0149: return "Netgear"; + case 0x014D: return "Simple Technology"; + case 0x0156: return "Lucent Technologies"; + case 0x015F: return "Aironet Wireless Communications"; + case 0x016B: return "Ericsson"; + case 0x016C: return "Psion"; + case 0x0183: return "Compaq"; + case 0x0186: return "Kingston"; + case 0x0192: return "Sierra Wireless"; + case 0x0194: return "Dayna Corporation"; + case 0x01a6: return "Raytheon"; + case 0x01BF: return "Belkin"; + case 0x01EB: return "Bay Networks"; + case 0x0200: return "Farallon Communications"; + case 0x021B: return "Telecom Device"; + case 0x023D: return "Nokia Communications"; + case 0x0250: return "Samsung"; + case 0x0264: return "Anycom"; + case 0x0268: return "Alvarion Ltd."; + case 0x026C: return "Symbol"; + case 0x026F: return "BUFFALO"; + case 0x0274: return "The Linksys Group"; + case 0x0288: return "NEC Infrontia"; + case 0x028A: return "I-O DATA"; + case 0x02AA: return "Asustek Computer"; + case 0x02AC: return "Siemens"; + case 0x02D2: return "Microsoft Corporation"; + case 0x02DF: return "AmbiCom Inc"; + case 0x0a02: return "BreezeCOM"; + case 0x10CD: return "NewMedia"; + case 0x1668: return "ACTIONTEC"; + case 0x3401: return "Lasat Communications A/S"; + case 0x4E01: return "Lexar Media"; + case 0x5241: return "Archos"; + case 0x890F: return "Dual"; + case 0x8A01: return "Compex Corporation"; + case 0xC001: return "Contec"; + case 0xC00B: return "MACNICA"; + case 0xC00C: return "Roland"; + case 0xC00F: return "Corega K.K."; + case 0xC012: return "Hagiwara SYS-COM"; + case 0xC015: return "RATOC System Inc."; + case 0xC020: return "NextCom K.K."; + case 0xC250: return "EMTAC Technology Corporation"; + case 0xD601: return "Elsa"; + default: return $"Unknown vendor id 0x{id:X4}"; } } } diff --git a/SCSI/EVPD.cs b/SCSI/EVPD.cs index 7a3c1728f..df2bae22a 100644 --- a/SCSI/EVPD.cs +++ b/SCSI/EVPD.cs @@ -252,12 +252,12 @@ namespace Aaru.Decoders.SCSI { switch(definition) { - case ScsiDefinitions.Current: return""; - case ScsiDefinitions.CCS: return"CCS"; - case ScsiDefinitions.SCSI1: return"SCSI-1"; - case ScsiDefinitions.SCSI2: return"SCSI-2"; - case ScsiDefinitions.SCSI3: return"SCSI-3"; - default: return$"Unknown definition code {(byte)definition}"; + case ScsiDefinitions.Current: return ""; + case ScsiDefinitions.CCS: return "CCS"; + case ScsiDefinitions.SCSI1: return "SCSI-1"; + case ScsiDefinitions.SCSI2: return "SCSI-2"; + case ScsiDefinitions.SCSI3: return "SCSI-3"; + default: return $"Unknown definition code {(byte)definition}"; } } diff --git a/SCSI/MMC/AACS.cs b/SCSI/MMC/AACS.cs index ca2486202..ad2839d02 100644 --- a/SCSI/MMC/AACS.cs +++ b/SCSI/MMC/AACS.cs @@ -295,9 +295,9 @@ namespace Aaru.Decoders.SCSI.MMC for(int i = 0; i < (AACSLBAExtsResponse.Length - 4) / 16; i++) { decoded.Extents[i].Reserved = new byte[8]; - Array.Copy(AACSLBAExtsResponse, 0 + i * 16 + 4, decoded.Extents[i].Reserved, 0, 8); - decoded.Extents[i].StartLBA = BigEndianBitConverter.ToUInt32(AACSLBAExtsResponse, 8 + i * 16 + 4); - decoded.Extents[i].LBACount = BigEndianBitConverter.ToUInt32(AACSLBAExtsResponse, 12 + i * 16 + 4); + Array.Copy(AACSLBAExtsResponse, 0 + (i * 16) + 4, decoded.Extents[i].Reserved, 0, 8); + decoded.Extents[i].StartLBA = BigEndianBitConverter.ToUInt32(AACSLBAExtsResponse, 8 + (i * 16) + 4); + decoded.Extents[i].LBACount = BigEndianBitConverter.ToUInt32(AACSLBAExtsResponse, 12 + (i * 16) + 4); } return decoded; diff --git a/SCSI/MMC/DiscInformation.cs b/SCSI/MMC/DiscInformation.cs index d041bc960..65fc1b8b8 100644 --- a/SCSI/MMC/DiscInformation.cs +++ b/SCSI/MMC/DiscInformation.cs @@ -96,16 +96,17 @@ namespace Aaru.Decoders.SCSI.MMC decoded.OPCTablesNumber = response[33]; if(decoded.OPCTablesNumber <= 0 || - response.Length != decoded.OPCTablesNumber * 8 + 34) + response.Length != (decoded.OPCTablesNumber * 8) + 34) return decoded; decoded.OPCTables = new OPCTable[decoded.OPCTablesNumber]; for(int i = 0; i < decoded.OPCTablesNumber; i++) { - decoded.OPCTables[i].Speed = (ushort)((response[34 + i * 8 + 0] << 16) + response[34 + i * 8 + 1]); + decoded.OPCTables[i].Speed = (ushort)((response[34 + (i * 8) + 0] << 16) + response[34 + (i * 8) + 1]); + decoded.OPCTables[i].OPCValues = new byte[6]; - Array.Copy(response, 34 + i * 8 + 2, decoded.OPCTables[i].OPCValues, 0, 6); + Array.Copy(response, 34 + (i * 8) + 2, decoded.OPCTables[i].OPCValues, 0, 6); } return decoded; diff --git a/SCSI/MMC/Hybrid.cs b/SCSI/MMC/Hybrid.cs index d2274945d..95a54787d 100644 --- a/SCSI/MMC/Hybrid.cs +++ b/SCSI/MMC/Hybrid.cs @@ -64,7 +64,7 @@ namespace Aaru.Decoders.SCSI.MMC }; for(int i = 0; i < (FormatLayersResponse.Length - 6) / 2; i++) - decoded.FormatLayers[i] = BigEndianBitConverter.ToUInt16(FormatLayersResponse, i * 2 + 6); + decoded.FormatLayers[i] = BigEndianBitConverter.ToUInt16(FormatLayersResponse, (i * 2) + 6); return decoded; } @@ -83,7 +83,7 @@ namespace Aaru.Decoders.SCSI.MMC for(int i = 0; i < response.FormatLayers.Length; i++) switch(response.FormatLayers[i]) { - case(ushort)FormatLayerTypeCodes.BDLayer: + case (ushort)FormatLayerTypeCodes.BDLayer: { sb.AppendFormat("Layer {0} is of type Blu-ray", i).AppendLine(); @@ -96,7 +96,7 @@ namespace Aaru.Decoders.SCSI.MMC break; } - case(ushort)FormatLayerTypeCodes.CDLayer: + case (ushort)FormatLayerTypeCodes.CDLayer: { sb.AppendFormat("Layer {0} is of type CD", i).AppendLine(); @@ -109,7 +109,7 @@ namespace Aaru.Decoders.SCSI.MMC break; } - case(ushort)FormatLayerTypeCodes.DVDLayer: + case (ushort)FormatLayerTypeCodes.DVDLayer: { sb.AppendFormat("Layer {0} is of type DVD", i).AppendLine(); @@ -122,7 +122,7 @@ namespace Aaru.Decoders.SCSI.MMC break; } - case(ushort)FormatLayerTypeCodes.HDDVDLayer: + case (ushort)FormatLayerTypeCodes.HDDVDLayer: { sb.AppendFormat("Layer {0} is of type HD DVD", i).AppendLine(); diff --git a/SCSI/Modes/01_MMC.cs b/SCSI/Modes/01_MMC.cs index 2e0bc3006..be90d555b 100644 --- a/SCSI/Modes/01_MMC.cs +++ b/SCSI/Modes/01_MMC.cs @@ -139,8 +139,7 @@ namespace Aaru.Decoders.SCSI string UnrecECCNotAbort = "\tUnrecovered ECC errors will not abort the transfer."; string UnrecCIRCNotAbort = "\tUnrecovered CIRC errors will not abort the transfer."; - string UnrecECCAbortData = - "\tUnrecovered ECC errors will return CHECK CONDITION and the uncorrected data."; + string UnrecECCAbortData = "\tUnrecovered ECC errors will return CHECK CONDITION and the uncorrected data."; string UnrecCIRCAbortData = "\tUnrecovered CIRC errors will return CHECK CONDITION and the uncorrected data."; diff --git a/SCSI/Modes/04.cs b/SCSI/Modes/04.cs index dd44351e7..f0659013b 100644 --- a/SCSI/Modes/04.cs +++ b/SCSI/Modes/04.cs @@ -86,11 +86,9 @@ namespace Aaru.Decoders.SCSI decoded.Heads = pageResponse[5]; decoded.WritePrecompCylinder = (uint)((pageResponse[6] << 16) + (pageResponse[7] << 8) + pageResponse[8]); - decoded.WriteReduceCylinder = - (uint)((pageResponse[9] << 16) + (pageResponse[10] << 8) + pageResponse[11]); + decoded.WriteReduceCylinder = (uint)((pageResponse[9] << 16) + (pageResponse[10] << 8) + pageResponse[11]); - decoded.DriveStepRate = - (ushort)((pageResponse[12] << 8) + pageResponse[13]); + decoded.DriveStepRate = (ushort)((pageResponse[12] << 8) + pageResponse[13]); decoded.LandingCylinder = (pageResponse[14] << 16) + (pageResponse[15] << 8) + pageResponse[16]; decoded.RPL = (byte)(pageResponse[17] & 0x03); diff --git a/SCSI/Modes/07_MMC.cs b/SCSI/Modes/07_MMC.cs index 779ab1fe8..94a8d1b49 100644 --- a/SCSI/Modes/07_MMC.cs +++ b/SCSI/Modes/07_MMC.cs @@ -104,8 +104,7 @@ namespace Aaru.Decoders.SCSI string UnrecECCNotAbort = "\tUnrecovered ECC errors will not abort the transfer."; string UnrecCIRCNotAbort = "\tUnrecovered CIRC errors will not abort the transfer."; - string UnrecECCAbortData = - "\tUnrecovered ECC errors will return CHECK CONDITION and the uncorrected data."; + string UnrecECCAbortData = "\tUnrecovered ECC errors will return CHECK CONDITION and the uncorrected data."; string UnrecCIRCAbortData = "\tUnrecovered CIRC errors will return CHECK CONDITION and the uncorrected data."; diff --git a/SCSI/Modes/11.cs b/SCSI/Modes/11.cs index d3b679381..fe4ef48f0 100644 --- a/SCSI/Modes/11.cs +++ b/SCSI/Modes/11.cs @@ -44,18 +44,24 @@ namespace Aaru.Decoders.SCSI public enum PartitionSizeUnitOfMeasures : byte { /// Partition size is measures in bytes - Bytes = 0, /// Partition size is measures in Kilobytes - Kilobytes = 1, /// Partition size is measures in Megabytes - Megabytes = 2, /// Partition size is 10eUNITS bytes + Bytes = 0, + /// Partition size is measures in Kilobytes + Kilobytes = 1, + /// Partition size is measures in Megabytes + Megabytes = 2, + /// Partition size is 10eUNITS bytes Exponential = 3 } public enum MediumFormatRecognitionValues : byte { /// Logical unit is incapable of format or partition recognition - Incapable = 0, /// Logical unit is capable of format recognition only - FormatCapable = 1, /// Logical unit is capable of partition recognition only - PartitionCapable = 2, /// Logical unit is capable of both format and partition recognition + Incapable = 0, + /// Logical unit is capable of format recognition only + FormatCapable = 1, + /// Logical unit is capable of partition recognition only + PartitionCapable = 2, + /// Logical unit is capable of both format and partition recognition Capable = 3 } diff --git a/SCSI/Modes/1A.cs b/SCSI/Modes/1A.cs index 499ab0977..4dd94bbbc 100644 --- a/SCSI/Modes/1A.cs +++ b/SCSI/Modes/1A.cs @@ -140,8 +140,8 @@ namespace Aaru.Decoders.SCSI if(page.PS) sb.AppendLine("\tParameters can be saved"); - if(page.Standby && page.StandbyTimer > 0 || - page.Standby_Y && page.StandbyTimer_Y > 0) + if((page.Standby && page.StandbyTimer > 0) || + (page.Standby_Y && page.StandbyTimer_Y > 0)) { if(page.Standby && page.StandbyTimer > 0) @@ -154,9 +154,9 @@ namespace Aaru.Decoders.SCSI else sb.AppendLine("\tDrive will not enter standy mode"); - if(page.Idle && page.IdleTimer > 0 || - page.Idle_B && page.IdleTimer_B > 0 || - page.Idle_C && page.IdleTimer_C > 0) + if((page.Idle && page.IdleTimer > 0) || + (page.Idle_B && page.IdleTimer_B > 0) || + (page.Idle_C && page.IdleTimer_C > 0)) { if(page.Idle && page.IdleTimer > 0) diff --git a/SCSI/Modes/Headers.cs b/SCSI/Modes/Headers.cs index d6cfeee78..364c9e97c 100644 --- a/SCSI/Modes/Headers.cs +++ b/SCSI/Modes/Headers.cs @@ -51,7 +51,7 @@ namespace Aaru.Decoders.SCSI return "ECMA-59 & ANSI X3.121-1984: 200 mm Flexible Disk Cartridge using Two-Frequency Recording at 13262 ftprad on Both Sides"; case MediumTypes.ECMA69: - return"ECMA-69: 200 mm Flexible Disk Cartridge using MFM Recording at 13262 ftprad on Both Sides"; + return "ECMA-69: 200 mm Flexible Disk Cartridge using MFM Recording at 13262 ftprad on Both Sides"; case MediumTypes.ECMA66: return "ECMA-66: 130 mm Flexible Disk Cartridge using Two-Frequency Recording at 7958 ftprad on One Side"; @@ -75,16 +75,16 @@ namespace Aaru.Decoders.SCSI case MediumTypes.Unspecified_DS: return "Unspecified double sided flexible disk"; */ - case MediumTypes.X3_73: return"ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 1 side"; - case MediumTypes.X3_73_DS: return"ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 2 sides"; - case MediumTypes.X3_82: return"ANSI X3.80-1980: 130 mm, 3979 ftprad, 1,9 Tracks per mm, 1 side"; + case MediumTypes.X3_73: return "ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 1 side"; + case MediumTypes.X3_73_DS: return "ANSI X3.73-1980: 200 mm, 6631 ftprad, 1,9 Tracks per mm, 2 sides"; + case MediumTypes.X3_82: return "ANSI X3.80-1980: 130 mm, 3979 ftprad, 1,9 Tracks per mm, 1 side"; case MediumTypes.Type3Floppy: - return"3.5-inch, 135 tpi, 12362 bits/radian, double-sided MFM (aka 1.25Mb)"; - case MediumTypes.HDFloppy: return"3.5-inch, 135 tpi, 15916 bits/radian, double-sided MFM (aka 1.44Mb)"; - case MediumTypes.ReadOnly: return"a Read-only optical"; - case MediumTypes.WORM: return"a Write-once Read-many optical"; - case MediumTypes.Erasable: return"a Erasable optical"; - case MediumTypes.RO_WORM: return"a combination of read-only and write-once optical"; + return "3.5-inch, 135 tpi, 12362 bits/radian, double-sided MFM (aka 1.25Mb)"; + case MediumTypes.HDFloppy: return "3.5-inch, 135 tpi, 15916 bits/radian, double-sided MFM (aka 1.44Mb)"; + case MediumTypes.ReadOnly: return "a Read-only optical"; + case MediumTypes.WORM: return "a Write-once Read-many optical"; + case MediumTypes.Erasable: return "a Erasable optical"; + case MediumTypes.RO_WORM: return "a combination of read-only and write-once optical"; // These magneto-opticals were never manufactured /* @@ -94,9 +94,9 @@ namespace Aaru.Decoders.SCSI case MediumTypes.WORM_RW: return "a combination of write-once and erasable optical"; */ - case MediumTypes.DOW: return"a direct-overwrite optical"; - case MediumTypes.HiMD: return"a Sony Hi-MD disc"; - default: return$"Unknown medium type 0x{(byte)type:X2}"; + case MediumTypes.DOW: return "a direct-overwrite optical"; + case MediumTypes.HiMD: return "a Sony Hi-MD disc"; + default: return $"Unknown medium type 0x{(byte)type:X2}"; } } diff --git a/SCSI/Sense.cs b/SCSI/Sense.cs index 1f0c858f8..98e3ac41f 100644 --- a/SCSI/Sense.cs +++ b/SCSI/Sense.cs @@ -64,21 +64,36 @@ namespace Aaru.Decoders.SCSI public enum SenseKeys : byte { /// No information to be reported, but bits should be checked - NoSense = 0, /// Target performed some recovery to successfully complete last command - RecoveredError = 1, /// Target is not ready - NotReady = 2, /// Non-recoverable medium error occurred - MediumError = 3, /// Non-recoverable hardware error occurred - HardwareError = 4, /// Target has received an illegal request - IllegalRequest = 5, /// Target requires initiator attention - UnitAttention = 6, /// A protected command has been denied - DataProtect = 7, /// A blank block has been tried to read or a non-rewritable one to write - BlankCheck = 8, /// For private/vendor usage - PrivateUse = 9, /// COPY command aborted - CopyAborted = 0xA, /// Command aborted - AbortedCommand = 0xB, /// SEARCH command has been satisfied - Equal = 0xC, /// End-of-medium reached with data remaining in buffer - VolumeOverflow = 0xD, /// COMPARE failed - Miscompare = 0xE, /// Complated + NoSense = 0, + /// Target performed some recovery to successfully complete last command + RecoveredError = 1, + /// Target is not ready + NotReady = 2, + /// Non-recoverable medium error occurred + MediumError = 3, + /// Non-recoverable hardware error occurred + HardwareError = 4, + /// Target has received an illegal request + IllegalRequest = 5, + /// Target requires initiator attention + UnitAttention = 6, + /// A protected command has been denied + DataProtect = 7, + /// A blank block has been tried to read or a non-rewritable one to write + BlankCheck = 8, + /// For private/vendor usage + PrivateUse = 9, + /// COPY command aborted + CopyAborted = 0xA, + /// Command aborted + AbortedCommand = 0xB, + /// SEARCH command has been satisfied + Equal = 0xC, + /// End-of-medium reached with data remaining in buffer + VolumeOverflow = 0xD, + /// COMPARE failed + Miscompare = 0xE, + /// Complated Completed = 0xF } @@ -518,22 +533,22 @@ namespace Aaru.Decoders.SCSI { switch(key) { - case SenseKeys.AbortedCommand: return"ABORTED COMMAND"; - case SenseKeys.BlankCheck: return"BLANK CHECK"; - case SenseKeys.CopyAborted: return"COPY ABORTED"; - case SenseKeys.DataProtect: return"DATA PROTECT"; - case SenseKeys.Equal: return"EQUAL"; - case SenseKeys.HardwareError: return"HARDWARE ERROR"; - case SenseKeys.IllegalRequest: return"ILLEGAL REQUEST"; - case SenseKeys.MediumError: return"MEDIUM ERROR"; - case SenseKeys.Miscompare: return"MISCOMPARE"; - case SenseKeys.NoSense: return"NO SENSE"; - case SenseKeys.PrivateUse: return"PRIVATE USE"; - case SenseKeys.RecoveredError: return"RECOVERED ERROR"; - case SenseKeys.Completed: return"COMPLETED"; - case SenseKeys.UnitAttention: return"UNIT ATTENTION"; - case SenseKeys.VolumeOverflow: return"VOLUME OVERFLOW"; - default: return"UNKNOWN"; + case SenseKeys.AbortedCommand: return "ABORTED COMMAND"; + case SenseKeys.BlankCheck: return "BLANK CHECK"; + case SenseKeys.CopyAborted: return "COPY ABORTED"; + case SenseKeys.DataProtect: return "DATA PROTECT"; + case SenseKeys.Equal: return "EQUAL"; + case SenseKeys.HardwareError: return "HARDWARE ERROR"; + case SenseKeys.IllegalRequest: return "ILLEGAL REQUEST"; + case SenseKeys.MediumError: return "MEDIUM ERROR"; + case SenseKeys.Miscompare: return "MISCOMPARE"; + case SenseKeys.NoSense: return "NO SENSE"; + case SenseKeys.PrivateUse: return "PRIVATE USE"; + case SenseKeys.RecoveredError: return "RECOVERED ERROR"; + case SenseKeys.Completed: return "COMPLETED"; + case SenseKeys.UnitAttention: return "UNIT ATTENTION"; + case SenseKeys.VolumeOverflow: return "VOLUME OVERFLOW"; + default: return "UNKNOWN"; } } @@ -545,1370 +560,1370 @@ namespace Aaru.Decoders.SCSI case 0x00: switch(ASCQ) { - case 0x00: return"NO ADDITIONAL SENSE INFORMATION"; - case 0x01: return"FILEMARK DETECTED"; - case 0x02: return"END-OF-PARTITION/MEDIUM DETECTED"; - case 0x03: return"SETMARK DETECTED"; - case 0x04: return"BEGINNING-OF-PARTITION/MEDIUM DETECTED"; - case 0x05: return"END-OF-DATA DETECTED"; - case 0x06: return"I/O PROCESS TERMINATED"; - case 0x07: return"PROGRAMMABLE EARLY WARNING DETECTED"; - case 0x11: return"AUDIO PLAY OPERATION IN PROGRESS"; - case 0x12: return"AUDIO PLAY OPERATION PAUSED"; - case 0x13: return"AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED"; - case 0x14: return"AUDIO PLAY OPERATION STOPPED DUE TO ERROR"; - case 0x15: return"NO CURRENT AUDIO STATUS TO RETURN"; - case 0x16: return"OPERATION IN PROGRESS"; - case 0x17: return"CLEANING REQUESTED"; - case 0x18: return"ERASE OPERATION IN PROGRESS"; - case 0x19: return"LOCATE OPERATION IN PROGRESS"; - case 0x1A: return"REWIND OPERATION IN PROGRESS"; - case 0x1B: return"SET CAPACITY OPERATION IN PROGRESS"; - case 0x1C: return"VERIFY OPERATION IN PROGRESS"; - case 0x1D: return"ATA PASS THROUGH INFORMATION AVAILABLE"; - case 0x1E: return"CONFLICTING SA CREATION REQUEST"; - case 0x1F: return"LOGICAL UNIT TRANSITIONING TO ANOTHER POWER CONDITION"; - case 0x20: return"EXTENDED COPY INFORMATION AVAILABLE"; - case 0x21: return"ATOMIC COMMAND ABORTED DUE TO ACA"; + case 0x00: return "NO ADDITIONAL SENSE INFORMATION"; + case 0x01: return "FILEMARK DETECTED"; + case 0x02: return "END-OF-PARTITION/MEDIUM DETECTED"; + case 0x03: return "SETMARK DETECTED"; + case 0x04: return "BEGINNING-OF-PARTITION/MEDIUM DETECTED"; + case 0x05: return "END-OF-DATA DETECTED"; + case 0x06: return "I/O PROCESS TERMINATED"; + case 0x07: return "PROGRAMMABLE EARLY WARNING DETECTED"; + case 0x11: return "AUDIO PLAY OPERATION IN PROGRESS"; + case 0x12: return "AUDIO PLAY OPERATION PAUSED"; + case 0x13: return "AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED"; + case 0x14: return "AUDIO PLAY OPERATION STOPPED DUE TO ERROR"; + case 0x15: return "NO CURRENT AUDIO STATUS TO RETURN"; + case 0x16: return "OPERATION IN PROGRESS"; + case 0x17: return "CLEANING REQUESTED"; + case 0x18: return "ERASE OPERATION IN PROGRESS"; + case 0x19: return "LOCATE OPERATION IN PROGRESS"; + case 0x1A: return "REWIND OPERATION IN PROGRESS"; + case 0x1B: return "SET CAPACITY OPERATION IN PROGRESS"; + case 0x1C: return "VERIFY OPERATION IN PROGRESS"; + case 0x1D: return "ATA PASS THROUGH INFORMATION AVAILABLE"; + case 0x1E: return "CONFLICTING SA CREATION REQUEST"; + case 0x1F: return "LOGICAL UNIT TRANSITIONING TO ANOTHER POWER CONDITION"; + case 0x20: return "EXTENDED COPY INFORMATION AVAILABLE"; + case 0x21: return "ATOMIC COMMAND ABORTED DUE TO ACA"; } break; case 0x01: switch(ASCQ) { - case 0x00: return"NO INDEX/SECTOR SIGNAL"; + case 0x00: return "NO INDEX/SECTOR SIGNAL"; } break; case 0x02: switch(ASCQ) { - case 0x00: return"NO SEEK COMPLETE"; + case 0x00: return "NO SEEK COMPLETE"; } break; case 0x03: switch(ASCQ) { - case 0x00: return"PERIPHERAL DEVICE WRITE FAULT"; - case 0x01: return"NO WRITE CURRENT"; - case 0x02: return"EXCESSIVE WRITE ERRORS"; + case 0x00: return "PERIPHERAL DEVICE WRITE FAULT"; + case 0x01: return "NO WRITE CURRENT"; + case 0x02: return "EXCESSIVE WRITE ERRORS"; } break; case 0x04: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE"; - case 0x01: return"LOGICAL UNIT IS IN PROCESS OF BECOMING READY"; - case 0x02: return"LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED"; - case 0x03: return"LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED"; - case 0x04: return"LOGICAL UNIT NOT READY, FORMAT IN PROGRESS"; - case 0x05: return"LOGICAL UNIT NOT READY, REBUILD IN PROGRESS"; - case 0x06: return"LOGICAL UNIT NOT READY, RECALCULATION IN PROGRESS"; - case 0x07: return"LOGICAL UNIT NOT READY, OPERATION IN PROGRESS"; - case 0x08: return"LOGICAL UNIT NOT READY, LONG WRITE IN PROGRESS"; - case 0x09: return"LOGICAL UNIT NOT READY, SELF-TEST IN PROGRESS"; - case 0x0A: return"LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC ACCESS STATE TRANSITION"; - case 0x0B: return"LOGICAL UNIT NOT ACCESSIBLE, TARGET IN STANDBY STATE"; - case 0x0C: return"LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN UNAVAILABLE STATE"; - case 0x0D: return"LOGICAL UNIT NOT READY, STRUCTURE CHECK REQUIRED"; - case 0x0E: return"LOGICAL UNIT NOT READY, SECURITY SESSION IN PROGRESS"; - case 0x10: return"LOGICAL UNIT NOT READY, AUXILIARY MEMORY NOT ACCESSIBLE"; - case 0x11: return"LOGICAL UNIT NOT READY, NOTIFY (ENABLE SPINUP) REQUIRED"; - case 0x12: return"LOGICAL UNIT NOT READY, OFFLINE"; - case 0x13: return"LOGICAL UNIT NOT READY, SA CREATION IN PROGRESS"; - case 0x14: return"LOGICAL UNIT NOT READY, SPACE ALLOCATION IN PROGRESS"; - case 0x15: return"LOGICAL UNIT NOT READY, ROBOTICS DISABLED"; - case 0x16: return"LOGICAL UNIT NOT READY, CONFIGURATION REQUIRED"; - case 0x17: return"LOGICAL UNIT NOT READY, CALIBRATION REQUIRED"; - case 0x18: return"LOGICAL UNIT NOT READY, A DOOR IS OPEN"; - case 0x19: return"LOGICAL UNIT NOT READY, OPERATING IN SEQUENTIAL MODE"; - case 0x1A: return"LOGICAL UNIT NOT READY, START STOP UNIT IN PROGRESS"; - case 0x1B: return"LOGICAL UNIT NOT READY, SANITIZE IN PROGRESS"; - case 0x1C: return"LOGICAL UNIT NOT READY, ADDITIONAL POWER USE NOT YET GRANTED"; - case 0x1D: return"LOGICAL UNIT NOT READY, CONFIGURATION IN PROGRESS"; - case 0x1E: return"LOGICAL UNIT NOT READY, MICROCODE ACTIVATION REQUIRED"; - case 0x1F: return"LOGICAL UNIT NOT READY, MICROCODE DOWNLOAD REQUIRED"; - case 0x20: return"LOGICAL UNIT NOT READY, LOGICAL UNIT RESET REQUIRED"; - case 0x21: return"LOGICAL UNIT NOT READY, HARD RESET REQUIRED"; - case 0x22: return"LOGICAL UNIT NOT READY, POWER CYCLE REQUIRED"; + case 0x00: return "LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE"; + case 0x01: return "LOGICAL UNIT IS IN PROCESS OF BECOMING READY"; + case 0x02: return "LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED"; + case 0x03: return "LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED"; + case 0x04: return "LOGICAL UNIT NOT READY, FORMAT IN PROGRESS"; + case 0x05: return "LOGICAL UNIT NOT READY, REBUILD IN PROGRESS"; + case 0x06: return "LOGICAL UNIT NOT READY, RECALCULATION IN PROGRESS"; + case 0x07: return "LOGICAL UNIT NOT READY, OPERATION IN PROGRESS"; + case 0x08: return "LOGICAL UNIT NOT READY, LONG WRITE IN PROGRESS"; + case 0x09: return "LOGICAL UNIT NOT READY, SELF-TEST IN PROGRESS"; + case 0x0A: return "LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC ACCESS STATE TRANSITION"; + case 0x0B: return "LOGICAL UNIT NOT ACCESSIBLE, TARGET IN STANDBY STATE"; + case 0x0C: return "LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN UNAVAILABLE STATE"; + case 0x0D: return "LOGICAL UNIT NOT READY, STRUCTURE CHECK REQUIRED"; + case 0x0E: return "LOGICAL UNIT NOT READY, SECURITY SESSION IN PROGRESS"; + case 0x10: return "LOGICAL UNIT NOT READY, AUXILIARY MEMORY NOT ACCESSIBLE"; + case 0x11: return "LOGICAL UNIT NOT READY, NOTIFY (ENABLE SPINUP) REQUIRED"; + case 0x12: return "LOGICAL UNIT NOT READY, OFFLINE"; + case 0x13: return "LOGICAL UNIT NOT READY, SA CREATION IN PROGRESS"; + case 0x14: return "LOGICAL UNIT NOT READY, SPACE ALLOCATION IN PROGRESS"; + case 0x15: return "LOGICAL UNIT NOT READY, ROBOTICS DISABLED"; + case 0x16: return "LOGICAL UNIT NOT READY, CONFIGURATION REQUIRED"; + case 0x17: return "LOGICAL UNIT NOT READY, CALIBRATION REQUIRED"; + case 0x18: return "LOGICAL UNIT NOT READY, A DOOR IS OPEN"; + case 0x19: return "LOGICAL UNIT NOT READY, OPERATING IN SEQUENTIAL MODE"; + case 0x1A: return "LOGICAL UNIT NOT READY, START STOP UNIT IN PROGRESS"; + case 0x1B: return "LOGICAL UNIT NOT READY, SANITIZE IN PROGRESS"; + case 0x1C: return "LOGICAL UNIT NOT READY, ADDITIONAL POWER USE NOT YET GRANTED"; + case 0x1D: return "LOGICAL UNIT NOT READY, CONFIGURATION IN PROGRESS"; + case 0x1E: return "LOGICAL UNIT NOT READY, MICROCODE ACTIVATION REQUIRED"; + case 0x1F: return "LOGICAL UNIT NOT READY, MICROCODE DOWNLOAD REQUIRED"; + case 0x20: return "LOGICAL UNIT NOT READY, LOGICAL UNIT RESET REQUIRED"; + case 0x21: return "LOGICAL UNIT NOT READY, HARD RESET REQUIRED"; + case 0x22: return "LOGICAL UNIT NOT READY, POWER CYCLE REQUIRED"; } break; case 0x05: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT DOES NOT RESPOND TO SELECTION"; + case 0x00: return "LOGICAL UNIT DOES NOT RESPOND TO SELECTION"; } break; case 0x06: switch(ASCQ) { - case 0x00: return"NO REFERENCE POSITION FOUND"; + case 0x00: return "NO REFERENCE POSITION FOUND"; } break; case 0x07: switch(ASCQ) { - case 0x00: return"MULTIPLE PERIPHERAL DEVICES SELECTED"; + case 0x00: return "MULTIPLE PERIPHERAL DEVICES SELECTED"; } break; case 0x08: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT COMMUNICATION FAILURE"; - case 0x01: return"LOGICAL UNIT COMMUNICATION TIME-OUT"; - case 0x02: return"LOGICAL UNIT COMMUNICATION PARITY ERROR"; - case 0x03: return"LOGICAL UNIT COMMUNICATION CRC ERROR"; - case 0x04: return"UNREACHABLE COPY TARGET"; + case 0x00: return "LOGICAL UNIT COMMUNICATION FAILURE"; + case 0x01: return "LOGICAL UNIT COMMUNICATION TIME-OUT"; + case 0x02: return "LOGICAL UNIT COMMUNICATION PARITY ERROR"; + case 0x03: return "LOGICAL UNIT COMMUNICATION CRC ERROR"; + case 0x04: return "UNREACHABLE COPY TARGET"; } break; case 0x09: switch(ASCQ) { - case 0x00: return"TRACK FLOLLOWING ERROR"; - case 0x01: return"TRACKING SERVO FAILURE"; - case 0x02: return"FOCUS SERVO FAILURE"; - case 0x03: return"SPINDLE SERVO FAILURE"; - case 0x04: return"HEAD SELECT FAULT"; - case 0x05: return"VIBRATION INDUCED TRACKING ERROR"; + case 0x00: return "TRACK FLOLLOWING ERROR"; + case 0x01: return "TRACKING SERVO FAILURE"; + case 0x02: return "FOCUS SERVO FAILURE"; + case 0x03: return "SPINDLE SERVO FAILURE"; + case 0x04: return "HEAD SELECT FAULT"; + case 0x05: return "VIBRATION INDUCED TRACKING ERROR"; } break; case 0x0A: switch(ASCQ) { - case 0x00: return"ERROR LOG OVERFLOW"; + case 0x00: return "ERROR LOG OVERFLOW"; } break; case 0x0B: switch(ASCQ) { - case 0x00: return"WARNING"; - case 0x01: return"WARNING - SPECIFIED TEMPERATURE EXCEEDED"; - case 0x02: return"WARNING - ENCLOSURE DEGRADED"; - case 0x03: return"WARNING - BACKGROUND SELF-TEST FAILED"; - case 0x04: return"WARNING - BACKGROUND PRE-SCAN DETECTED MEDIUM ERROR"; - case 0x05: return"WARNING - BACKGROUND MEDIUM SCAN DETECTED MEDIUM ERROR"; - case 0x06: return"WARNING - NON-VOLATILE CACHE NOW VOLATILE"; - case 0x07: return"WARNING - DEGRADED POWER TO NON-VOLATILE CACHE"; - case 0x08: return"WARNING - POWER LOSS EXPECTED"; - case 0x09: return"WARNING - DEVICE STATISTICS NOTIFICATION ACTIVE"; - case 0x0A: return"WARNING - HIGH CRITICAL TEMPERATURE LIMIT EXCEEDED"; - case 0x0B: return"WARNING - LOW CRITICAL TEMPERATURE LIMIT EXCEEDED"; - case 0x0C: return"WARNING - HIGH OPERATING TEMPERATURE LIMIT EXCEEDED"; - case 0x0D: return"WARNING - LOW OPERATING TEMPERATURE LIMIT EXCEEDED"; - case 0x0E: return"WARNING - HIGH CRITICAL HUMIDITY LIMIT EXCEEDED"; - case 0x0F: return"WARNING - LOW CRITICAL HUMIDITY LIMIT EXCEEDED"; - case 0x10: return"WARNING - HIGH OPERATING HUMIDITY LIMIT EXCEEDED"; - case 0x11: return"WARNING - LOW OPERATING HUMIDITY LIMIT EXCEEDED"; + case 0x00: return "WARNING"; + case 0x01: return "WARNING - SPECIFIED TEMPERATURE EXCEEDED"; + case 0x02: return "WARNING - ENCLOSURE DEGRADED"; + case 0x03: return "WARNING - BACKGROUND SELF-TEST FAILED"; + case 0x04: return "WARNING - BACKGROUND PRE-SCAN DETECTED MEDIUM ERROR"; + case 0x05: return "WARNING - BACKGROUND MEDIUM SCAN DETECTED MEDIUM ERROR"; + case 0x06: return "WARNING - NON-VOLATILE CACHE NOW VOLATILE"; + case 0x07: return "WARNING - DEGRADED POWER TO NON-VOLATILE CACHE"; + case 0x08: return "WARNING - POWER LOSS EXPECTED"; + case 0x09: return "WARNING - DEVICE STATISTICS NOTIFICATION ACTIVE"; + case 0x0A: return "WARNING - HIGH CRITICAL TEMPERATURE LIMIT EXCEEDED"; + case 0x0B: return "WARNING - LOW CRITICAL TEMPERATURE LIMIT EXCEEDED"; + case 0x0C: return "WARNING - HIGH OPERATING TEMPERATURE LIMIT EXCEEDED"; + case 0x0D: return "WARNING - LOW OPERATING TEMPERATURE LIMIT EXCEEDED"; + case 0x0E: return "WARNING - HIGH CRITICAL HUMIDITY LIMIT EXCEEDED"; + case 0x0F: return "WARNING - LOW CRITICAL HUMIDITY LIMIT EXCEEDED"; + case 0x10: return "WARNING - HIGH OPERATING HUMIDITY LIMIT EXCEEDED"; + case 0x11: return "WARNING - LOW OPERATING HUMIDITY LIMIT EXCEEDED"; } break; case 0x0C: switch(ASCQ) { - case 0x00: return"WRITE ERROR"; - case 0x01: return"WRITE ERROR - RECOVERED WITH AUTO REALLOCATION"; - case 0x02: return"WRITE ERROR - AUTO REALLOCATION FAILED"; - case 0x03: return"WRITE ERROR - RECOMMENDED REASSIGNMENT"; - case 0x04: return"COMPRESSION CHECK MISCOMPARE ERROR"; - case 0x05: return"DATA EXPANSION OCCURRED DURING COMPRESSION"; - case 0x06: return"BLOCK NOT COMPRESSIBLE"; - case 0x07: return"WRITE ERROR - RECOVERY NEEDED"; - case 0x08: return"WRITE ERROR - RECOVERY FAILED"; - case 0x09: return"WRITE ERROR - LOSS OF STREAMING"; - case 0x0A: return"WRITE ERROR - PADDING BLOCKS ADDED"; - case 0x0B: return"AUXILIARY MEMORY WRITE ERROR"; - case 0x0C: return"WRITE ERROR - UNEXPECTED UNSOLICITED DATA"; - case 0x0D: return"WRITE ERROR - NOT ENOUGH UNSOLICITED DATA"; - case 0x0E: return"MULTIPLE WRITE ERRORS"; - case 0x0F: return"DEFECTS IN ERROR WINDOW"; - case 0x10: return"INCOMPLETE MULTIPLE ATOMIC WRITE OPERATIONS"; - case 0x11: return"WRITE ERROR - RECOVERY SCAN NEEDED"; - case 0x12: return"WRITE ERROR - INSUFFICIENT ZONE RESOURCES"; + case 0x00: return "WRITE ERROR"; + case 0x01: return "WRITE ERROR - RECOVERED WITH AUTO REALLOCATION"; + case 0x02: return "WRITE ERROR - AUTO REALLOCATION FAILED"; + case 0x03: return "WRITE ERROR - RECOMMENDED REASSIGNMENT"; + case 0x04: return "COMPRESSION CHECK MISCOMPARE ERROR"; + case 0x05: return "DATA EXPANSION OCCURRED DURING COMPRESSION"; + case 0x06: return "BLOCK NOT COMPRESSIBLE"; + case 0x07: return "WRITE ERROR - RECOVERY NEEDED"; + case 0x08: return "WRITE ERROR - RECOVERY FAILED"; + case 0x09: return "WRITE ERROR - LOSS OF STREAMING"; + case 0x0A: return "WRITE ERROR - PADDING BLOCKS ADDED"; + case 0x0B: return "AUXILIARY MEMORY WRITE ERROR"; + case 0x0C: return "WRITE ERROR - UNEXPECTED UNSOLICITED DATA"; + case 0x0D: return "WRITE ERROR - NOT ENOUGH UNSOLICITED DATA"; + case 0x0E: return "MULTIPLE WRITE ERRORS"; + case 0x0F: return "DEFECTS IN ERROR WINDOW"; + case 0x10: return "INCOMPLETE MULTIPLE ATOMIC WRITE OPERATIONS"; + case 0x11: return "WRITE ERROR - RECOVERY SCAN NEEDED"; + case 0x12: return "WRITE ERROR - INSUFFICIENT ZONE RESOURCES"; } break; case 0x0D: switch(ASCQ) { - case 0x00: return"ERROR DETECTED BY THIRD PARTY TEMPORARY INITIATOR"; - case 0x01: return"THIRD PARTY DEVICE FAILURE"; - case 0x02: return"COPY TARGET DEVICE NOT REACHABLE"; - case 0x03: return"INCORRECT COPY TARGET DEVICE TYPE"; - case 0x04: return"COPY TARGET DEVICE DATA UNDERRUN"; - case 0x05: return"COPY TARGET DEVICE DATA OVERRUN"; + case 0x00: return "ERROR DETECTED BY THIRD PARTY TEMPORARY INITIATOR"; + case 0x01: return "THIRD PARTY DEVICE FAILURE"; + case 0x02: return "COPY TARGET DEVICE NOT REACHABLE"; + case 0x03: return "INCORRECT COPY TARGET DEVICE TYPE"; + case 0x04: return "COPY TARGET DEVICE DATA UNDERRUN"; + case 0x05: return "COPY TARGET DEVICE DATA OVERRUN"; } break; case 0x0E: switch(ASCQ) { - case 0x00: return"INVALID INFORMATION UNIT"; - case 0x01: return"INFORMATION UNIT TOO SHORT"; - case 0x02: return"INFORMATION UNIT TOO LONG"; - case 0x03: return"INVALID FIELD IN COMMAND INFORMATION UNIT"; + case 0x00: return "INVALID INFORMATION UNIT"; + case 0x01: return "INFORMATION UNIT TOO SHORT"; + case 0x02: return "INFORMATION UNIT TOO LONG"; + case 0x03: return "INVALID FIELD IN COMMAND INFORMATION UNIT"; } break; case 0x10: switch(ASCQ) { - case 0x00: return"ID CRC OR ECC ERROR"; - case 0x01: return"LOGICAL BLOCK GUARD CHECK FAILED"; - case 0x02: return"LOGICAL BLOCK APPLICATION TAG CHECK FAILED"; - case 0x03: return"LOGICAL BLOCK REFERENCE TAG CHECK FAILED"; - case 0x04: return"LOGICAL BLOCK PROTECTION ERROR ON RECOVER BUFFERED DATA"; - case 0x05: return"LOGICAL BLOCK PROTECTION METHOD ERROR"; + case 0x00: return "ID CRC OR ECC ERROR"; + case 0x01: return "LOGICAL BLOCK GUARD CHECK FAILED"; + case 0x02: return "LOGICAL BLOCK APPLICATION TAG CHECK FAILED"; + case 0x03: return "LOGICAL BLOCK REFERENCE TAG CHECK FAILED"; + case 0x04: return "LOGICAL BLOCK PROTECTION ERROR ON RECOVER BUFFERED DATA"; + case 0x05: return "LOGICAL BLOCK PROTECTION METHOD ERROR"; } break; case 0x11: switch(ASCQ) { - case 0x00: return"UNRECOVERED READ ERROR"; - case 0x01: return"READ RETRIES EXHAUSTED"; - case 0x02: return"ERROR TOO LONG TO CORRECT"; - case 0x03: return"MULTIPLE READ ERRORS"; - case 0x04: return"UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED"; - case 0x05: return"L-EC UNCORRECTABLE ERROR"; - case 0x06: return"CIRC UNRECOVERED ERROR"; - case 0x07: return"DATA RESYNCHRONIZATION ERROR"; - case 0x08: return"INCOMPLETE BLOCK READ"; - case 0x09: return"NO GAP FOUND"; - case 0x0A: return"MISCORRECTED ERROR"; - case 0x0B: return"UNRECOVERED READ ERROR - RECOMMENDED REASSIGNMENT"; - case 0x0C: return"UNRECOVERED READ ERROR - RECOMMENDED REWRITE THE DATA"; - case 0x0D: return"DE-COMPRESSION CRC ERROR"; - case 0x0E: return"CANNOT DECOMPRESS USING DECLARED ALGORITHM"; - case 0x0F: return"ERROR READING UPC/EAN NUMBER"; - case 0x10: return"ERROR READING ISRC NUMBER"; - case 0x11: return"READ ERROR - LOSS OF STREAMING"; - case 0x12: return"AUXILIARY MEMORY READ ERROR"; - case 0x13: return"READ ERROR - FAILED RETRANSMISSITION REQUEST"; - case 0x14: return"READ ERROR - LBA MARKED BAD BY APPLICATION CLIENT"; - case 0x15: return"WRITE AFTER SANITIZE REQUIRED"; + case 0x00: return "UNRECOVERED READ ERROR"; + case 0x01: return "READ RETRIES EXHAUSTED"; + case 0x02: return "ERROR TOO LONG TO CORRECT"; + case 0x03: return "MULTIPLE READ ERRORS"; + case 0x04: return "UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED"; + case 0x05: return "L-EC UNCORRECTABLE ERROR"; + case 0x06: return "CIRC UNRECOVERED ERROR"; + case 0x07: return "DATA RESYNCHRONIZATION ERROR"; + case 0x08: return "INCOMPLETE BLOCK READ"; + case 0x09: return "NO GAP FOUND"; + case 0x0A: return "MISCORRECTED ERROR"; + case 0x0B: return "UNRECOVERED READ ERROR - RECOMMENDED REASSIGNMENT"; + case 0x0C: return "UNRECOVERED READ ERROR - RECOMMENDED REWRITE THE DATA"; + case 0x0D: return "DE-COMPRESSION CRC ERROR"; + case 0x0E: return "CANNOT DECOMPRESS USING DECLARED ALGORITHM"; + case 0x0F: return "ERROR READING UPC/EAN NUMBER"; + case 0x10: return "ERROR READING ISRC NUMBER"; + case 0x11: return "READ ERROR - LOSS OF STREAMING"; + case 0x12: return "AUXILIARY MEMORY READ ERROR"; + case 0x13: return "READ ERROR - FAILED RETRANSMISSITION REQUEST"; + case 0x14: return "READ ERROR - LBA MARKED BAD BY APPLICATION CLIENT"; + case 0x15: return "WRITE AFTER SANITIZE REQUIRED"; } break; case 0x12: switch(ASCQ) { - case 0x00: return"ADDRESS MARK NOT FOUND FOR ID FIELD"; + case 0x00: return "ADDRESS MARK NOT FOUND FOR ID FIELD"; } break; case 0x13: switch(ASCQ) { - case 0x00: return"ADDRESS MARK NOT FOUND FOR DATA FIELD"; + case 0x00: return "ADDRESS MARK NOT FOUND FOR DATA FIELD"; } break; case 0x14: switch(ASCQ) { - case 0x00: return"RECORDED ENTITY NOT FOUND"; - case 0x01: return"RECORD NOT FOUND"; - case 0x02: return"FILEMARK OR SETMARK NOT FOUND"; - case 0x03: return"END-OF-DATA NOT FOUND"; - case 0x04: return"BLOCK SEQUENCE ERROR"; - case 0x05: return"RECORD NOT FOUND - RECOMMENDAD REASSIGNMENT"; - case 0x06: return"RECORD NOT FOUND - DATA AUTO-REALLOCATED"; - case 0x07: return"LOCATE OPERATION FAILURE"; + case 0x00: return "RECORDED ENTITY NOT FOUND"; + case 0x01: return "RECORD NOT FOUND"; + case 0x02: return "FILEMARK OR SETMARK NOT FOUND"; + case 0x03: return "END-OF-DATA NOT FOUND"; + case 0x04: return "BLOCK SEQUENCE ERROR"; + case 0x05: return "RECORD NOT FOUND - RECOMMENDAD REASSIGNMENT"; + case 0x06: return "RECORD NOT FOUND - DATA AUTO-REALLOCATED"; + case 0x07: return "LOCATE OPERATION FAILURE"; } break; case 0x15: switch(ASCQ) { - case 0x00: return"RANDOM POSITIONING ERROR"; - case 0x01: return"MECHANICAL POSITIONING ERROR"; - case 0x02: return"POSITIONING ERROR DETECTED BY READ OF MEDIUM"; + case 0x00: return "RANDOM POSITIONING ERROR"; + case 0x01: return "MECHANICAL POSITIONING ERROR"; + case 0x02: return "POSITIONING ERROR DETECTED BY READ OF MEDIUM"; } break; case 0x16: switch(ASCQ) { - case 0x00: return"DATA SYNCHRONIZATION MARK ERROR"; - case 0x01: return"DATA SYNC ERROR - DATA REWRITTEN"; - case 0x02: return"DATA SYNC ERROR - RECOMMENDED REWRITE"; - case 0x03: return"DATA SYNC ERROR - DATA AUTO-REALLOCATED"; - case 0x04: return"DATA SYNC ERROR - RECOMMENDED REASSIGNMENT"; + case 0x00: return "DATA SYNCHRONIZATION MARK ERROR"; + case 0x01: return "DATA SYNC ERROR - DATA REWRITTEN"; + case 0x02: return "DATA SYNC ERROR - RECOMMENDED REWRITE"; + case 0x03: return "DATA SYNC ERROR - DATA AUTO-REALLOCATED"; + case 0x04: return "DATA SYNC ERROR - RECOMMENDED REASSIGNMENT"; } break; case 0x17: switch(ASCQ) { - case 0x00: return"RECOVERED DATA WITH NO ERROR CORRECTION APPLIED"; - case 0x01: return"RECOVERED DATA WITH RETRIES"; - case 0x02: return"RECOVERED DATA WITH POSITIVE HEAD OFFSET"; - case 0x03: return"RECOVERED DATA WITH NEGATIVE HEAD OFFSET"; - case 0x04: return"RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED"; - case 0x05: return"RECOVERED DATA USING PREVIOUS SECTOR ID"; - case 0x06: return"RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED"; - case 0x07: return"RECOVERED DATA WITHOUT ECC - RECOMMENDED REASSIGNMENT"; - case 0x08: return"RECOVERED DATA WITHOUT ECC - RECOMMENDED REWRITE"; - case 0x09: return"RECOVERED DATA WITHOUT ECC - DATA REWRITTEN"; + case 0x00: return "RECOVERED DATA WITH NO ERROR CORRECTION APPLIED"; + case 0x01: return "RECOVERED DATA WITH RETRIES"; + case 0x02: return "RECOVERED DATA WITH POSITIVE HEAD OFFSET"; + case 0x03: return "RECOVERED DATA WITH NEGATIVE HEAD OFFSET"; + case 0x04: return "RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED"; + case 0x05: return "RECOVERED DATA USING PREVIOUS SECTOR ID"; + case 0x06: return "RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED"; + case 0x07: return "RECOVERED DATA WITHOUT ECC - RECOMMENDED REASSIGNMENT"; + case 0x08: return "RECOVERED DATA WITHOUT ECC - RECOMMENDED REWRITE"; + case 0x09: return "RECOVERED DATA WITHOUT ECC - DATA REWRITTEN"; } break; case 0x18: switch(ASCQ) { - case 0x00: return"RECOVERED DATA WITH ERROR CORRECTION APPLIED"; - case 0x01: return"RECOVERED DATA WITH ERROR CORRECTION & RETRIES APPLIED"; - case 0x02: return"RECOVERED DATA - DATA AUTO-REALLOCATED"; - case 0x03: return"RECOVERED DATA WITH CIRC"; - case 0x04: return"RECOVERED DATA WITH L-EC"; - case 0x05: return"RECOVERED DATA - RECOMMENDED REASSIGNMENT"; - case 0x06: return"RECOVERED DATA - RECOMMENDED REWRITE"; - case 0x07: return"RECOVERED DATA WITH ECC - DATA REWRITTEN"; - case 0x08: return"RECOVERED DATA WITH LINKING"; + case 0x00: return "RECOVERED DATA WITH ERROR CORRECTION APPLIED"; + case 0x01: return "RECOVERED DATA WITH ERROR CORRECTION & RETRIES APPLIED"; + case 0x02: return "RECOVERED DATA - DATA AUTO-REALLOCATED"; + case 0x03: return "RECOVERED DATA WITH CIRC"; + case 0x04: return "RECOVERED DATA WITH L-EC"; + case 0x05: return "RECOVERED DATA - RECOMMENDED REASSIGNMENT"; + case 0x06: return "RECOVERED DATA - RECOMMENDED REWRITE"; + case 0x07: return "RECOVERED DATA WITH ECC - DATA REWRITTEN"; + case 0x08: return "RECOVERED DATA WITH LINKING"; } break; case 0x19: switch(ASCQ) { - case 0x00: return"DEFECT LIST ERROR"; - case 0x01: return"DEFECT LIST NOT AVAILABLE"; - case 0x02: return"DEFECT LIST ERROR IN PRIMARY LIST"; - case 0x03: return"DEFECT LIST ERROR IN GROWN LIST"; + case 0x00: return "DEFECT LIST ERROR"; + case 0x01: return "DEFECT LIST NOT AVAILABLE"; + case 0x02: return "DEFECT LIST ERROR IN PRIMARY LIST"; + case 0x03: return "DEFECT LIST ERROR IN GROWN LIST"; } break; case 0x1A: switch(ASCQ) { - case 0x00: return"PARAMETER LIST LENGTH ERROR"; + case 0x00: return "PARAMETER LIST LENGTH ERROR"; } break; case 0x1B: switch(ASCQ) { - case 0x00: return"SYNCHRONOUS DATA TRANSFER ERROR"; + case 0x00: return "SYNCHRONOUS DATA TRANSFER ERROR"; } break; case 0x1C: switch(ASCQ) { - case 0x00: return"DEFECT LIST NOT FOUND"; - case 0x01: return"PRIMARY DEFECT LIST NOT FOUND"; - case 0x02: return"GROWN DEFECT LIST NOT FOUND"; + case 0x00: return "DEFECT LIST NOT FOUND"; + case 0x01: return "PRIMARY DEFECT LIST NOT FOUND"; + case 0x02: return "GROWN DEFECT LIST NOT FOUND"; } break; case 0x1D: switch(ASCQ) { - case 0x00: return"MISCOMPARE DURING VERIFY OPERATION"; - case 0x01: return"MISCOMPARE VERIFY OF UNMAPPED LBA"; + case 0x00: return "MISCOMPARE DURING VERIFY OPERATION"; + case 0x01: return "MISCOMPARE VERIFY OF UNMAPPED LBA"; } break; case 0x1E: switch(ASCQ) { - case 0x00: return"RECOVERED ID WITH ECC CORRECTION"; + case 0x00: return "RECOVERED ID WITH ECC CORRECTION"; } break; case 0x1F: switch(ASCQ) { - case 0x00: return"PARTIAL DEFECT LIST TRANSFER"; + case 0x00: return "PARTIAL DEFECT LIST TRANSFER"; } break; case 0x20: switch(ASCQ) { - case 0x00: return"INVALID COMMAND OPERATION CODE"; - case 0x01: return"ACCESS DENIED - INITIATOR PENDING-ENROLLED"; - case 0x02: return"ACCESS DENIED - NO ACCESS RIGHTS"; - case 0x03: return"ACCESS DENIED - INVALID MGMT ID KEY"; - case 0x04: return"ILLEGAL COMMAND WHILE IN WRITE CAPABLE STATE"; - case 0x05: return"ILLEGAL COMMAND WHILE IN READ CAPABLE STATE"; - case 0x06: return"ILLEGAL COMMAND WHILE IN EXPLICIT ADDRESS MODE"; - case 0x07: return"ILLEGAL COMMAND WHILE IN IMPLICIT ADDRESS MODE"; - case 0x08: return"ACCESS DENIED - ENROLLMENT CONFLICT"; - case 0x09: return"ACCESS DENIED - INVALID LUN IDENTIFIER"; - case 0x0A: return"ACCESS DENIED - INVALID PROXY TOKEN"; - case 0x0B: return"ACCESS DENIED - ACL LUN CONFLICT"; - case 0x0C: return"ILLEGAL COMMAND WHEN NOT IN APPEND-ONLY MODE"; + case 0x00: return "INVALID COMMAND OPERATION CODE"; + case 0x01: return "ACCESS DENIED - INITIATOR PENDING-ENROLLED"; + case 0x02: return "ACCESS DENIED - NO ACCESS RIGHTS"; + case 0x03: return "ACCESS DENIED - INVALID MGMT ID KEY"; + case 0x04: return "ILLEGAL COMMAND WHILE IN WRITE CAPABLE STATE"; + case 0x05: return "ILLEGAL COMMAND WHILE IN READ CAPABLE STATE"; + case 0x06: return "ILLEGAL COMMAND WHILE IN EXPLICIT ADDRESS MODE"; + case 0x07: return "ILLEGAL COMMAND WHILE IN IMPLICIT ADDRESS MODE"; + case 0x08: return "ACCESS DENIED - ENROLLMENT CONFLICT"; + case 0x09: return "ACCESS DENIED - INVALID LUN IDENTIFIER"; + case 0x0A: return "ACCESS DENIED - INVALID PROXY TOKEN"; + case 0x0B: return "ACCESS DENIED - ACL LUN CONFLICT"; + case 0x0C: return "ILLEGAL COMMAND WHEN NOT IN APPEND-ONLY MODE"; } break; case 0x21: switch(ASCQ) { - case 0x00: return"LOGICAL BLOCK ADDRESS OUT OF RANGE"; - case 0x01: return"INVALID ELEMENT ADDRESS"; - case 0x02: return"INVALID ADDRESS FOR WRITE"; - case 0x03: return"INVALID WRITE CROSSING LAYER JUMP"; - case 0x04: return"UNALIGNED WRITE COMMAND"; - case 0x05: return"WRITE BOUNDARY VIOLATION"; - case 0x06: return"ATTEMPT TO READ INVALID DATA"; - case 0x07: return"READ BOUNDARY VIOLATION"; + case 0x00: return "LOGICAL BLOCK ADDRESS OUT OF RANGE"; + case 0x01: return "INVALID ELEMENT ADDRESS"; + case 0x02: return "INVALID ADDRESS FOR WRITE"; + case 0x03: return "INVALID WRITE CROSSING LAYER JUMP"; + case 0x04: return "UNALIGNED WRITE COMMAND"; + case 0x05: return "WRITE BOUNDARY VIOLATION"; + case 0x06: return "ATTEMPT TO READ INVALID DATA"; + case 0x07: return "READ BOUNDARY VIOLATION"; } break; case 0x22: switch(ASCQ) { - case 0x00: return"ILLEGAL FUNCTION"; + case 0x00: return "ILLEGAL FUNCTION"; } break; case 0x23: switch(ASCQ) { - case 0x00: return"INVALID TOKEN OPERATION, CAUSE NOT REPORTABLE"; - case 0x01: return"INVALID TOKEN OPERATION, UNSUPPORTED TOKEN TYPE"; - case 0x02: return"INVALID TOKEN OPERATION, REMOTE TOKEN USAGE NOT SUPPORTED"; - case 0x03: return"INVALID TOKEN OPERATION, REMOTE ROD TOKEN CREATION NOT SUPPORTED"; - case 0x04: return"INVALID TOKEN OPERATION, TOKEN UNKNOWN"; - case 0x05: return"INVALID TOKEN OPERATION, TOKEN CORRUPT"; - case 0x06: return"INVALID TOKEN OPERATION, TOKEN REVOKED"; - case 0x07: return"INVALID TOKEN OPERATION, TOKEN EXPIRED"; - case 0x08: return"INVALID TOKEN OPERATION, TOKEN CANCELLED"; - case 0x09: return"INVALID TOKEN OPERATION, TOKEN DELETED"; - case 0x0A: return"INVALID TOKEN OPERATION, INVALID TOKEN LENGTH"; + case 0x00: return "INVALID TOKEN OPERATION, CAUSE NOT REPORTABLE"; + case 0x01: return "INVALID TOKEN OPERATION, UNSUPPORTED TOKEN TYPE"; + case 0x02: return "INVALID TOKEN OPERATION, REMOTE TOKEN USAGE NOT SUPPORTED"; + case 0x03: return "INVALID TOKEN OPERATION, REMOTE ROD TOKEN CREATION NOT SUPPORTED"; + case 0x04: return "INVALID TOKEN OPERATION, TOKEN UNKNOWN"; + case 0x05: return "INVALID TOKEN OPERATION, TOKEN CORRUPT"; + case 0x06: return "INVALID TOKEN OPERATION, TOKEN REVOKED"; + case 0x07: return "INVALID TOKEN OPERATION, TOKEN EXPIRED"; + case 0x08: return "INVALID TOKEN OPERATION, TOKEN CANCELLED"; + case 0x09: return "INVALID TOKEN OPERATION, TOKEN DELETED"; + case 0x0A: return "INVALID TOKEN OPERATION, INVALID TOKEN LENGTH"; } break; case 0x24: switch(ASCQ) { - case 0x00: return"ILLEGAL FIELD IN CDB"; - case 0x01: return"CDB DECRYPTION ERROR"; - case 0x02: return"INVALID CDB FIELD WHILE IN EXPLICIT BLOCK ADDRESS MODEL"; - case 0x03: return"INVALID CDB FIELD WHILE IN IMPLICIT BLOCK ADDRESS MODEL"; - case 0x04: return"SECURITY AUDIT VALUE FROZEN"; - case 0x05: return"SECURITY WORKING KEY FROZEN"; - case 0x06: return"NONCE NOT UNIQUE"; - case 0x07: return"NONCE TIMESTAMP OUT OF RANGE"; - case 0x08: return"INVALID XCDB"; + case 0x00: return "ILLEGAL FIELD IN CDB"; + case 0x01: return "CDB DECRYPTION ERROR"; + case 0x02: return "INVALID CDB FIELD WHILE IN EXPLICIT BLOCK ADDRESS MODEL"; + case 0x03: return "INVALID CDB FIELD WHILE IN IMPLICIT BLOCK ADDRESS MODEL"; + case 0x04: return "SECURITY AUDIT VALUE FROZEN"; + case 0x05: return "SECURITY WORKING KEY FROZEN"; + case 0x06: return "NONCE NOT UNIQUE"; + case 0x07: return "NONCE TIMESTAMP OUT OF RANGE"; + case 0x08: return "INVALID XCDB"; } break; case 0x25: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT NOT SUPPORTED"; + case 0x00: return "LOGICAL UNIT NOT SUPPORTED"; } break; case 0x26: switch(ASCQ) { - case 0x00: return"INVALID FIELD IN PARAMETER LIST"; - case 0x01: return"PARAMETER NOT SUPPORTED"; - case 0x02: return"PARAMETER VALUE INVALID"; - case 0x03: return"THRESHOLD PARAMETERS NOT SUPPORTED"; - case 0x04: return"INVALID RELEASE OF PERSISTENT RESERVATION"; - case 0x05: return"DATA DECRYPTION ERROR"; - case 0x06: return"TOO MANY TARGET DESCRIPTORS"; - case 0x07: return"UNSUPPORTED TARGET DESCRIPTOR TYPE CODE"; - case 0x08: return"TOO MANY SEGMENT DESCRIPTORS"; - case 0x09: return"UNSUPPORTED SEGMENT DESCRIPTOR TYPE CODE"; - case 0x0A: return"UNEXPECTED INEXACT SEGMENT"; - case 0x0B: return"INLINE DATA LENGTH EXCEEDED"; - case 0x0C: return"INVALID OPERATION FOR COPY SOURCE OR DESTINATION"; - case 0x0D: return"COPY SEGMENT GRANULARITY VIOLATION"; - case 0x0E: return"INVALID PARAMETER WHILE PORT IS ENABLED"; - case 0x0F: return"INVALID DATA-OUT BUFFER INTEGRITY CHECK VALUE"; - case 0x10: return"DATA DECRYPTION KEY FAIL LIMIT REACHED"; - case 0x11: return"INCOMPLETE KEY-ASSOCIATED DATA SET"; - case 0x12: return"VENDOR SPECIFIC KEY REFERENCE NOT FOUND"; - case 0x13: return"APPLICATION TAG MODE PAGE IS INVALID"; + case 0x00: return "INVALID FIELD IN PARAMETER LIST"; + case 0x01: return "PARAMETER NOT SUPPORTED"; + case 0x02: return "PARAMETER VALUE INVALID"; + case 0x03: return "THRESHOLD PARAMETERS NOT SUPPORTED"; + case 0x04: return "INVALID RELEASE OF PERSISTENT RESERVATION"; + case 0x05: return "DATA DECRYPTION ERROR"; + case 0x06: return "TOO MANY TARGET DESCRIPTORS"; + case 0x07: return "UNSUPPORTED TARGET DESCRIPTOR TYPE CODE"; + case 0x08: return "TOO MANY SEGMENT DESCRIPTORS"; + case 0x09: return "UNSUPPORTED SEGMENT DESCRIPTOR TYPE CODE"; + case 0x0A: return "UNEXPECTED INEXACT SEGMENT"; + case 0x0B: return "INLINE DATA LENGTH EXCEEDED"; + case 0x0C: return "INVALID OPERATION FOR COPY SOURCE OR DESTINATION"; + case 0x0D: return "COPY SEGMENT GRANULARITY VIOLATION"; + case 0x0E: return "INVALID PARAMETER WHILE PORT IS ENABLED"; + case 0x0F: return "INVALID DATA-OUT BUFFER INTEGRITY CHECK VALUE"; + case 0x10: return "DATA DECRYPTION KEY FAIL LIMIT REACHED"; + case 0x11: return "INCOMPLETE KEY-ASSOCIATED DATA SET"; + case 0x12: return "VENDOR SPECIFIC KEY REFERENCE NOT FOUND"; + case 0x13: return "APPLICATION TAG MODE PAGE IS INVALID"; } break; case 0x27: switch(ASCQ) { - case 0x00: return"WRITE PROTECTED"; - case 0x01: return"HARDWARE WRITE PROTECTED"; - case 0x02: return"LOGICAL UNIT SOFTWARE WRITE PROTECTED"; - case 0x03: return"ASSOCIATED WRITE PROTECT"; - case 0x04: return"PERSISTENT WRITE PROTECT"; - case 0x05: return"PERMANENT WRITE PROTECT"; - case 0x06: return"CONDITIONAL WRITE PROTECT"; - case 0x07: return"SPACE ALLOCATION FAILED WRITE PROTECT"; - case 0x08: return"ZONE IS READ ONLY"; + case 0x00: return "WRITE PROTECTED"; + case 0x01: return "HARDWARE WRITE PROTECTED"; + case 0x02: return "LOGICAL UNIT SOFTWARE WRITE PROTECTED"; + case 0x03: return "ASSOCIATED WRITE PROTECT"; + case 0x04: return "PERSISTENT WRITE PROTECT"; + case 0x05: return "PERMANENT WRITE PROTECT"; + case 0x06: return "CONDITIONAL WRITE PROTECT"; + case 0x07: return "SPACE ALLOCATION FAILED WRITE PROTECT"; + case 0x08: return "ZONE IS READ ONLY"; } break; case 0x28: switch(ASCQ) { - case 0x00: return"NOT READY TO READY CHANGE (MEDIUM MAY HAVE CHANGED)"; - case 0x01: return"IMPORT OR EXPORT ELEMENT ACCESSED"; - case 0x02: return"FORMAT-LAYER MAY HAVE CHANGED"; - case 0x03: return"IMPORT/EXPORT ELEMENT ACCESSED, MEDIUM CHANGED"; + case 0x00: return "NOT READY TO READY CHANGE (MEDIUM MAY HAVE CHANGED)"; + case 0x01: return "IMPORT OR EXPORT ELEMENT ACCESSED"; + case 0x02: return "FORMAT-LAYER MAY HAVE CHANGED"; + case 0x03: return "IMPORT/EXPORT ELEMENT ACCESSED, MEDIUM CHANGED"; } break; case 0x29: switch(ASCQ) { - case 0x00: return"POWER ON, RESET, OR BUS DEVICE RESET OCCURRED"; - case 0x01: return"POWER ON OCCURRED"; - case 0x02: return"SCSI BUS RESET OCCURRED"; - case 0x03: return"BUS DEVICE RESET FUNCTION OCCURRED"; - case 0x04: return"DEVICE INTERNAL RESET"; - case 0x05: return"TRANSCEIVER MODE CHANGED TO SINGLE-ENDED"; - case 0x06: return"TRANSCEIVER MODE CHANGED TO LVD"; - case 0x07: return"I_T NEXUS LOSS OCCURRED"; + case 0x00: return "POWER ON, RESET, OR BUS DEVICE RESET OCCURRED"; + case 0x01: return "POWER ON OCCURRED"; + case 0x02: return "SCSI BUS RESET OCCURRED"; + case 0x03: return "BUS DEVICE RESET FUNCTION OCCURRED"; + case 0x04: return "DEVICE INTERNAL RESET"; + case 0x05: return "TRANSCEIVER MODE CHANGED TO SINGLE-ENDED"; + case 0x06: return "TRANSCEIVER MODE CHANGED TO LVD"; + case 0x07: return "I_T NEXUS LOSS OCCURRED"; } break; case 0x2A: switch(ASCQ) { - case 0x00: return"PARAMETERS CHANGED"; - case 0x01: return"MODE PARAMETERS CHANGED"; - case 0x02: return"LOG PARAMETERS CHANGED"; - case 0x03: return"RESERVATIONS PREEMPTED"; - case 0x04: return"RESERVATIONS RELEASED"; - case 0x05: return"REGISTRATIONS PREEMPTED"; - case 0x06: return"ASYMMETRIC ACCESS STATE CHANGED"; - case 0x07: return"IMPLICIT ASYMMETRIC ACCESS STATE TRANSITION FAILED"; - case 0x08: return"PRIORITY CHANGED"; - case 0x09: return"CAPACITY DATA HAS CHANGED"; - case 0x0A: return"ERROR HISTORY I_T NEXUS CLEARED"; - case 0x0B: return"ERROR HISTORY SNAPSHOT RELEASED"; - case 0x0C: return"ERROR RECOVERY ATTRIBUTES HAVE CHANGED"; - case 0x0D: return"DATA ENCRYPTION CAPABILITIES CHANGED"; - case 0x10: return"TIMESTAMP CHANGED"; - case 0x11: return"DATA ENCRYPTION PARAMETERS CHANGED BY ANOTHER I_T NEXUS"; - case 0x12: return"DATA ENCRYPTION PARAMETERS CHANGED BY VENDOR SPECIFIC EVENT"; - case 0x13: return"DATA ENCRYPTION KEY INSTANCE COUNTER HAS CHANGED"; - case 0x14: return"SA CREATION CAPABILITIES DATA HAS CHANGED"; - case 0x15: return"MEDIUM REMOVAL PREVENTION PREEMPTED"; + case 0x00: return "PARAMETERS CHANGED"; + case 0x01: return "MODE PARAMETERS CHANGED"; + case 0x02: return "LOG PARAMETERS CHANGED"; + case 0x03: return "RESERVATIONS PREEMPTED"; + case 0x04: return "RESERVATIONS RELEASED"; + case 0x05: return "REGISTRATIONS PREEMPTED"; + case 0x06: return "ASYMMETRIC ACCESS STATE CHANGED"; + case 0x07: return "IMPLICIT ASYMMETRIC ACCESS STATE TRANSITION FAILED"; + case 0x08: return "PRIORITY CHANGED"; + case 0x09: return "CAPACITY DATA HAS CHANGED"; + case 0x0A: return "ERROR HISTORY I_T NEXUS CLEARED"; + case 0x0B: return "ERROR HISTORY SNAPSHOT RELEASED"; + case 0x0C: return "ERROR RECOVERY ATTRIBUTES HAVE CHANGED"; + case 0x0D: return "DATA ENCRYPTION CAPABILITIES CHANGED"; + case 0x10: return "TIMESTAMP CHANGED"; + case 0x11: return "DATA ENCRYPTION PARAMETERS CHANGED BY ANOTHER I_T NEXUS"; + case 0x12: return "DATA ENCRYPTION PARAMETERS CHANGED BY VENDOR SPECIFIC EVENT"; + case 0x13: return "DATA ENCRYPTION KEY INSTANCE COUNTER HAS CHANGED"; + case 0x14: return "SA CREATION CAPABILITIES DATA HAS CHANGED"; + case 0x15: return "MEDIUM REMOVAL PREVENTION PREEMPTED"; } break; case 0x2B: switch(ASCQ) { - case 0x00: return"COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT"; + case 0x00: return "COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT"; } break; case 0x2C: switch(ASCQ) { - case 0x00: return"COMMAND SEQUENCE ERROR"; - case 0x01: return"TOO MANY WINDOWS SPECIFIED"; - case 0x02: return"INVALID COMBINATION OF WINDOWS SPECIFIED"; - case 0x03: return"CURRENT PROGRAM AREA IS NOT EMPTY"; - case 0x04: return"CURRENT PROGRAM AREA IS EMPTY"; - case 0x05: return"ILLEGAL POWER CONDITION REQUEST"; - case 0x06: return"PERSISTENT PREVENT CONFLICT"; - case 0x07: return"PREVIOUS BUSY STATUS"; - case 0x08: return"PREVIOUS TASK SET FULL STATUS"; - case 0x09: return"PREVIOUS RESERVATION CONFLICT STATUS"; - case 0x0A: return"PARTITION OR COLLECTION CONTAINS USER OBJECTS"; - case 0x0B: return"NOT RESERVED"; - case 0x0C: return"ORWRITE GENERATION DOES NOT MATCH"; - case 0x0D: return"RESET WRITE POINTER NOT ALLOWED"; - case 0x0E: return"ZONE IS OFFLINE"; - case 0x0F: return"STREAM NOT OPEN"; - case 0x10: return"UNWRITTEN DATA IN ZONE"; + case 0x00: return "COMMAND SEQUENCE ERROR"; + case 0x01: return "TOO MANY WINDOWS SPECIFIED"; + case 0x02: return "INVALID COMBINATION OF WINDOWS SPECIFIED"; + case 0x03: return "CURRENT PROGRAM AREA IS NOT EMPTY"; + case 0x04: return "CURRENT PROGRAM AREA IS EMPTY"; + case 0x05: return "ILLEGAL POWER CONDITION REQUEST"; + case 0x06: return "PERSISTENT PREVENT CONFLICT"; + case 0x07: return "PREVIOUS BUSY STATUS"; + case 0x08: return "PREVIOUS TASK SET FULL STATUS"; + case 0x09: return "PREVIOUS RESERVATION CONFLICT STATUS"; + case 0x0A: return "PARTITION OR COLLECTION CONTAINS USER OBJECTS"; + case 0x0B: return "NOT RESERVED"; + case 0x0C: return "ORWRITE GENERATION DOES NOT MATCH"; + case 0x0D: return "RESET WRITE POINTER NOT ALLOWED"; + case 0x0E: return "ZONE IS OFFLINE"; + case 0x0F: return "STREAM NOT OPEN"; + case 0x10: return "UNWRITTEN DATA IN ZONE"; } break; case 0x2D: switch(ASCQ) { - case 0x00: return"OVERWRITE ERROR ON UPDATE IN PLACE"; + case 0x00: return "OVERWRITE ERROR ON UPDATE IN PLACE"; } break; case 0x2E: switch(ASCQ) { - case 0x00: return"INSUFFICIENT TIME FOR OPERATION"; - case 0x01: return"COMMAND TIMEOUT BEFORE PROCESSING"; - case 0x02: return"COMMAND TIMEOUT DURING PROCESSING"; - case 0x03: return"COMMAND TIMEOUT DURING PROCESSING DUE TO ERROR RECOVERY"; + case 0x00: return "INSUFFICIENT TIME FOR OPERATION"; + case 0x01: return "COMMAND TIMEOUT BEFORE PROCESSING"; + case 0x02: return "COMMAND TIMEOUT DURING PROCESSING"; + case 0x03: return "COMMAND TIMEOUT DURING PROCESSING DUE TO ERROR RECOVERY"; } break; case 0x2F: switch(ASCQ) { - case 0x00: return"COMMANDS CLEARED BY ANOTHER INITIATOR"; - case 0x01: return"COMMANDS CLEARED BY POWER LOSS NOTIFICATION"; - case 0x02: return"COMMANDS CLEARED BY DEVICE SERVER"; - case 0x03: return"SOME COMMANDS CLEARED BY QUEUING LAYER EVENT"; + case 0x00: return "COMMANDS CLEARED BY ANOTHER INITIATOR"; + case 0x01: return "COMMANDS CLEARED BY POWER LOSS NOTIFICATION"; + case 0x02: return "COMMANDS CLEARED BY DEVICE SERVER"; + case 0x03: return "SOME COMMANDS CLEARED BY QUEUING LAYER EVENT"; } break; case 0x30: switch(ASCQ) { - case 0x00: return"INCOMPATIBLE MEDIUM INSTALLED"; - case 0x01: return"CANNOT READ MEDIUM - UNKNOWN FORMAT"; - case 0x02: return"CANNOT READ MEDIUM - INCOMPATIBLE FORMAT"; - case 0x03: return"CLEANING CARTRIDGE INSTALLED"; - case 0x04: return"CANNOT WRITE MEDIUM - UNKNOWN FORMAT"; - case 0x05: return"CANNOT WRITE MEDIUM - INCOMPATIBLE FORMAT"; - case 0x06: return"CANNOT FORMAT MEDIUM - INCOMPATIBLE MEDIUM"; - case 0x07: return"CLEANING FAILURE"; - case 0x08: return"CANNOT WRITE - APPLICATION CODE MISMATCH"; - case 0x09: return"CURRENT SESSION NOT FIXATED FOR APPEND"; - case 0x0A: return"CLEANING REQUEST REJECTED"; - case 0x0C: return"WORM MEDIUM - OVERWRITE ATTEMPTED"; - case 0x0D: return"WORM MEDIUM - INTEGRITY CHECK"; - case 0x10: return"MEDIUM NOT FORMATTED"; - case 0x11: return"INCOMPATIBLE VOLUME TYPE"; - case 0x12: return"INCOMPATIBLE VOLUME QUALIFIER"; - case 0x13: return"CLEANING VOLUME EXPIRED"; + case 0x00: return "INCOMPATIBLE MEDIUM INSTALLED"; + case 0x01: return "CANNOT READ MEDIUM - UNKNOWN FORMAT"; + case 0x02: return "CANNOT READ MEDIUM - INCOMPATIBLE FORMAT"; + case 0x03: return "CLEANING CARTRIDGE INSTALLED"; + case 0x04: return "CANNOT WRITE MEDIUM - UNKNOWN FORMAT"; + case 0x05: return "CANNOT WRITE MEDIUM - INCOMPATIBLE FORMAT"; + case 0x06: return "CANNOT FORMAT MEDIUM - INCOMPATIBLE MEDIUM"; + case 0x07: return "CLEANING FAILURE"; + case 0x08: return "CANNOT WRITE - APPLICATION CODE MISMATCH"; + case 0x09: return "CURRENT SESSION NOT FIXATED FOR APPEND"; + case 0x0A: return "CLEANING REQUEST REJECTED"; + case 0x0C: return "WORM MEDIUM - OVERWRITE ATTEMPTED"; + case 0x0D: return "WORM MEDIUM - INTEGRITY CHECK"; + case 0x10: return "MEDIUM NOT FORMATTED"; + case 0x11: return "INCOMPATIBLE VOLUME TYPE"; + case 0x12: return "INCOMPATIBLE VOLUME QUALIFIER"; + case 0x13: return "CLEANING VOLUME EXPIRED"; } break; case 0x31: switch(ASCQ) { - case 0x00: return"MEDIUM FORMAT CORRUPTED"; - case 0x01: return"FORMAT COMMAND FAILED"; - case 0x02: return"ZONED FORMATTING FAILED DUE TO SPARE LINKING"; - case 0x03: return"SANITIZE COMMAND FAILED"; + case 0x00: return "MEDIUM FORMAT CORRUPTED"; + case 0x01: return "FORMAT COMMAND FAILED"; + case 0x02: return "ZONED FORMATTING FAILED DUE TO SPARE LINKING"; + case 0x03: return "SANITIZE COMMAND FAILED"; } break; case 0x32: switch(ASCQ) { - case 0x00: return"NO DEFECT SPARE LOCATION AVAILABLE"; - case 0x01: return"DEFECT LIST UPDATE FAILURE"; + case 0x00: return "NO DEFECT SPARE LOCATION AVAILABLE"; + case 0x01: return "DEFECT LIST UPDATE FAILURE"; } break; case 0x33: switch(ASCQ) { - case 0x00: return"TAPE LENGTH ERROR"; + case 0x00: return "TAPE LENGTH ERROR"; } break; case 0x34: switch(ASCQ) { - case 0x00: return"ENCLOSURE FAILURE"; + case 0x00: return "ENCLOSURE FAILURE"; } break; case 0x35: switch(ASCQ) { - case 0x00: return"ENCLOSURE SERVICES FAILURE"; - case 0x01: return"UNSUPPORTED ENCLOSURE FUNCTION"; - case 0x02: return"ENCLOSURE SERVICES UNAVAILABLE"; - case 0x03: return"ENCLOSURE SERVICES TRANSFER FAILURE"; - case 0x04: return"ENCLOSURE SERVICES TRANSFER REFUSED"; - case 0x05: return"ENCLOSURE SERVICES CHECKSUM ERROR"; + case 0x00: return "ENCLOSURE SERVICES FAILURE"; + case 0x01: return "UNSUPPORTED ENCLOSURE FUNCTION"; + case 0x02: return "ENCLOSURE SERVICES UNAVAILABLE"; + case 0x03: return "ENCLOSURE SERVICES TRANSFER FAILURE"; + case 0x04: return "ENCLOSURE SERVICES TRANSFER REFUSED"; + case 0x05: return "ENCLOSURE SERVICES CHECKSUM ERROR"; } break; case 0x36: switch(ASCQ) { - case 0x00: return"RIBBON, INK, OR TONER FAILURE"; + case 0x00: return "RIBBON, INK, OR TONER FAILURE"; } break; case 0x37: switch(ASCQ) { - case 0x00: return"ROUNDED PARAMETER"; + case 0x00: return "ROUNDED PARAMETER"; } break; case 0x38: switch(ASCQ) { - case 0x00: return"EVENT STATUS NOTIFICATION"; - case 0x02: return"ESN - POWER MANAGEMENT CLASS EVENT"; - case 0x04: return"ESN - MEDIA CLASS EVENT"; - case 0x06: return"ESN - DEVICE BUSY CLASS EVENT"; - case 0x07: return"THIN PROVISIONING SOFT THRESHOLD REACHED"; + case 0x00: return "EVENT STATUS NOTIFICATION"; + case 0x02: return "ESN - POWER MANAGEMENT CLASS EVENT"; + case 0x04: return "ESN - MEDIA CLASS EVENT"; + case 0x06: return "ESN - DEVICE BUSY CLASS EVENT"; + case 0x07: return "THIN PROVISIONING SOFT THRESHOLD REACHED"; } break; case 0x39: switch(ASCQ) { - case 0x00: return"SAVING PARAMETERS NOT SUPPORTED"; + case 0x00: return "SAVING PARAMETERS NOT SUPPORTED"; } break; case 0x3A: switch(ASCQ) { - case 0x00: return"MEDIUM NOT PRESENT"; - case 0x01: return"MEDIUM NOT PRESENT - TRAY CLOSED"; - case 0x02: return"MEDIUM NOT PRESENT - TRAY OPEN"; - case 0x03: return"MEDIUM NOT PRESENT - LOADABLE"; - case 0x04: return"MEDIUM NOT PRESENT - MEDIUM AUXILIARY MEMORY ACCESSIBLE"; + case 0x00: return "MEDIUM NOT PRESENT"; + case 0x01: return "MEDIUM NOT PRESENT - TRAY CLOSED"; + case 0x02: return "MEDIUM NOT PRESENT - TRAY OPEN"; + case 0x03: return "MEDIUM NOT PRESENT - LOADABLE"; + case 0x04: return "MEDIUM NOT PRESENT - MEDIUM AUXILIARY MEMORY ACCESSIBLE"; } break; case 0x3B: switch(ASCQ) { - case 0x00: return"SEQUENTIAL POSITIONING ERROR"; - case 0x01: return"TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM"; - case 0x02: return"TAPE POSITION ERROR AT END-OF-MEDIUM"; - case 0x03: return"TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY"; - case 0x04: return"SLEW FAILURE"; - case 0x05: return"PAPER JAM"; - case 0x06: return"FAILED TO SENSE TOP-OF-FORM"; - case 0x07: return"FAILED TO SENSE BOTTOM-OF-FORM"; - case 0x08: return"REPOSITION ERROR"; - case 0x09: return"READ PAST END OF MEDIUM"; - case 0x0A: return"READ PAST BEGINNING OF MEDIUM"; - case 0x0B: return"POSITION PAST END OF MEDIUM"; - case 0x0C: return"POSITION PAST BEGINNING OF MEDIUM"; - case 0x0D: return"MEDIUM DESTINATION ELEMENT FULL"; - case 0x0E: return"MEDIUM SOURCE ELEMENT EMPTY"; - case 0x0F: return"END OF MEDIUM REACHED"; - case 0x11: return"MEDIUM MAGAZINE NOT ACCESSIBLE"; - case 0x12: return"MEDIUM MAGAZINE REMOVED"; - case 0x13: return"MEDIUM MAGAZINE INSERTED"; - case 0x14: return"MEDIUM MAGAZINE LOCKED"; - case 0x15: return"MEDIUM MAGAZINE UNLOCKED"; - case 0x16: return"MECHANICAL POSITIONING OR CHANGER ERROR"; - case 0x17: return"READ PAST END OF USER OBJECT"; - case 0x18: return"ELEMENT DISABLED"; - case 0x19: return"ELEMENT ENABLED"; - case 0x1A: return"DATA TRANSFER DEVICE REMOVED"; - case 0x1B: return"DATA TRANSFER DEVICE INSERTED"; - case 0x1C: return"TOO MANY LOGICAL OBJECTS ON PARTITION TO SUPPORT OPERATION"; + case 0x00: return "SEQUENTIAL POSITIONING ERROR"; + case 0x01: return "TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM"; + case 0x02: return "TAPE POSITION ERROR AT END-OF-MEDIUM"; + case 0x03: return "TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY"; + case 0x04: return "SLEW FAILURE"; + case 0x05: return "PAPER JAM"; + case 0x06: return "FAILED TO SENSE TOP-OF-FORM"; + case 0x07: return "FAILED TO SENSE BOTTOM-OF-FORM"; + case 0x08: return "REPOSITION ERROR"; + case 0x09: return "READ PAST END OF MEDIUM"; + case 0x0A: return "READ PAST BEGINNING OF MEDIUM"; + case 0x0B: return "POSITION PAST END OF MEDIUM"; + case 0x0C: return "POSITION PAST BEGINNING OF MEDIUM"; + case 0x0D: return "MEDIUM DESTINATION ELEMENT FULL"; + case 0x0E: return "MEDIUM SOURCE ELEMENT EMPTY"; + case 0x0F: return "END OF MEDIUM REACHED"; + case 0x11: return "MEDIUM MAGAZINE NOT ACCESSIBLE"; + case 0x12: return "MEDIUM MAGAZINE REMOVED"; + case 0x13: return "MEDIUM MAGAZINE INSERTED"; + case 0x14: return "MEDIUM MAGAZINE LOCKED"; + case 0x15: return "MEDIUM MAGAZINE UNLOCKED"; + case 0x16: return "MECHANICAL POSITIONING OR CHANGER ERROR"; + case 0x17: return "READ PAST END OF USER OBJECT"; + case 0x18: return "ELEMENT DISABLED"; + case 0x19: return "ELEMENT ENABLED"; + case 0x1A: return "DATA TRANSFER DEVICE REMOVED"; + case 0x1B: return "DATA TRANSFER DEVICE INSERTED"; + case 0x1C: return "TOO MANY LOGICAL OBJECTS ON PARTITION TO SUPPORT OPERATION"; } break; case 0x3D: switch(ASCQ) { - case 0x00: return"INVALID BITS IN IDENTIFY MESSAGE"; + case 0x00: return "INVALID BITS IN IDENTIFY MESSAGE"; } break; case 0x3E: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT HAS NOT SELF-CONFIGURED YET"; - case 0x01: return"LOGICAL UNIT FAILURE"; - case 0x02: return"TIMEOUT ON LOGICAL UNIT"; - case 0x03: return"LOGICAL UNIT FAILED SELF-TEST"; - case 0x04: return"LOGICAL UNIT UNABLE TO UPDATE SELF-TEST LOG"; + case 0x00: return "LOGICAL UNIT HAS NOT SELF-CONFIGURED YET"; + case 0x01: return "LOGICAL UNIT FAILURE"; + case 0x02: return "TIMEOUT ON LOGICAL UNIT"; + case 0x03: return "LOGICAL UNIT FAILED SELF-TEST"; + case 0x04: return "LOGICAL UNIT UNABLE TO UPDATE SELF-TEST LOG"; } break; case 0x3F: switch(ASCQ) { - case 0x00: return"TARGET OPERATING CONDITIONS HAVE CHANGED"; - case 0x01: return"MICROCODE HAS BEEN CHANGED"; - case 0x02: return"CHANGED OPERATING DEFINITION"; - case 0x03: return"INQUIRY DATA HAS CHANGED"; - case 0x04: return"COMPONENT DEVICE ATTACHED"; - case 0x05: return"DEVICE IDENTIFIED CHANGED"; - case 0x06: return"REDUNDANCY GROUP CREATED OR MODIFIED"; - case 0x07: return"REDUNDANCY GROUP DELETED"; - case 0x08: return"SPARE CREATED OR MODIFIED"; - case 0x09: return"SPARE DELETED"; - case 0x0A: return"VOLUME SET CREATED OR MODIFIED"; - case 0x0B: return"VOLUME SET DELETED"; - case 0x0C: return"VOLUME SET DEASSIGNED"; - case 0x0D: return"VOLUME SET REASSIGNED"; - case 0x0E: return"REPORTED LUNS DATA HAS CHANGED"; - case 0x0F: return"ECHO BUFFER OVERWRITTEN"; - case 0x10: return"MEDIUM LOADABLE"; - case 0x11: return"MEDIUM AUXILIARY MEMORY ACCESSIBLE"; - case 0x12: return"iSCSI IP ADDRESS ADDED"; - case 0x13: return"iSCSI IP ADDRESS REMOVED"; - case 0x14: return"iSCSI IP ADDRESS CHANGED"; - case 0x15: return"INSPECT REFERRALS SENSE DESCRIPTORS"; - case 0x16: return"MICROCODE HAS BEEN CHANGED WITHOUT RESET"; - case 0x17: return"ZONE TRANSITION TO FULL"; + case 0x00: return "TARGET OPERATING CONDITIONS HAVE CHANGED"; + case 0x01: return "MICROCODE HAS BEEN CHANGED"; + case 0x02: return "CHANGED OPERATING DEFINITION"; + case 0x03: return "INQUIRY DATA HAS CHANGED"; + case 0x04: return "COMPONENT DEVICE ATTACHED"; + case 0x05: return "DEVICE IDENTIFIED CHANGED"; + case 0x06: return "REDUNDANCY GROUP CREATED OR MODIFIED"; + case 0x07: return "REDUNDANCY GROUP DELETED"; + case 0x08: return "SPARE CREATED OR MODIFIED"; + case 0x09: return "SPARE DELETED"; + case 0x0A: return "VOLUME SET CREATED OR MODIFIED"; + case 0x0B: return "VOLUME SET DELETED"; + case 0x0C: return "VOLUME SET DEASSIGNED"; + case 0x0D: return "VOLUME SET REASSIGNED"; + case 0x0E: return "REPORTED LUNS DATA HAS CHANGED"; + case 0x0F: return "ECHO BUFFER OVERWRITTEN"; + case 0x10: return "MEDIUM LOADABLE"; + case 0x11: return "MEDIUM AUXILIARY MEMORY ACCESSIBLE"; + case 0x12: return "iSCSI IP ADDRESS ADDED"; + case 0x13: return "iSCSI IP ADDRESS REMOVED"; + case 0x14: return "iSCSI IP ADDRESS CHANGED"; + case 0x15: return "INSPECT REFERRALS SENSE DESCRIPTORS"; + case 0x16: return "MICROCODE HAS BEEN CHANGED WITHOUT RESET"; + case 0x17: return "ZONE TRANSITION TO FULL"; } break; case 0x40: switch(ASCQ) { - case 0x00: return"RAM FAILURE"; - default: return$"DIAGNOSTIC FAILURE ON COMPONENT {ASCQ:X2}h"; + case 0x00: return "RAM FAILURE"; + default: return $"DIAGNOSTIC FAILURE ON COMPONENT {ASCQ:X2}h"; } case 0x41: switch(ASCQ) { - case 0x00: return"DATA PATH FAILURE"; + case 0x00: return "DATA PATH FAILURE"; } break; case 0x42: switch(ASCQ) { - case 0x00: return"POWER-ON OR SELF-TEST FAILURE"; + case 0x00: return "POWER-ON OR SELF-TEST FAILURE"; } break; case 0x43: switch(ASCQ) { - case 0x00: return"MESSAGE ERROR"; + case 0x00: return "MESSAGE ERROR"; } break; case 0x44: switch(ASCQ) { - case 0x00: return"INTERNAL TARGET FAILURE"; - case 0x01: return"PERSISTENT RESERVATION INFORMATION LOST"; - case 0x71: return"ATA DEVICE FAILED SET FEATURES"; + case 0x00: return "INTERNAL TARGET FAILURE"; + case 0x01: return "PERSISTENT RESERVATION INFORMATION LOST"; + case 0x71: return "ATA DEVICE FAILED SET FEATURES"; } break; case 0x45: switch(ASCQ) { - case 0x00: return"SELECT OR RESELECT FAILURE"; + case 0x00: return "SELECT OR RESELECT FAILURE"; } break; case 0x46: switch(ASCQ) { - case 0x00: return"UNSUCCESSFUL SOFT RESET"; + case 0x00: return "UNSUCCESSFUL SOFT RESET"; } break; case 0x47: switch(ASCQ) { - case 0x00: return"SCSI PARITY ERROR"; - case 0x01: return"DATA PHASE CRC ERROR DETECTED"; - case 0x02: return"SCSI PARITY ERROR DETECTED DURING ST DATA PHASE"; - case 0x03: return"INFORMATION UNIT iuCRC ERROR DETECTED"; - case 0x04: return"ASYNCHRONOUS INFORMATION PROTECTION ERROR DETECTED"; - case 0x05: return"PROTOCOL SERVICE CRC ERROR"; - case 0x06: return"PHY TEST FUNCTION IN PROGRESS"; - case 0x7F: return"SOME COMMANDS CLEARED BY iSCSI PROTOCOL EVENT"; + case 0x00: return "SCSI PARITY ERROR"; + case 0x01: return "DATA PHASE CRC ERROR DETECTED"; + case 0x02: return "SCSI PARITY ERROR DETECTED DURING ST DATA PHASE"; + case 0x03: return "INFORMATION UNIT iuCRC ERROR DETECTED"; + case 0x04: return "ASYNCHRONOUS INFORMATION PROTECTION ERROR DETECTED"; + case 0x05: return "PROTOCOL SERVICE CRC ERROR"; + case 0x06: return "PHY TEST FUNCTION IN PROGRESS"; + case 0x7F: return "SOME COMMANDS CLEARED BY iSCSI PROTOCOL EVENT"; } break; case 0x48: switch(ASCQ) { - case 0x00: return"INITIATOR DETECTED ERROR MESSAGE RECEIVED"; + case 0x00: return "INITIATOR DETECTED ERROR MESSAGE RECEIVED"; } break; case 0x49: switch(ASCQ) { - case 0x00: return"INVALID MESSAGE ERROR"; + case 0x00: return "INVALID MESSAGE ERROR"; } break; case 0x4A: switch(ASCQ) { - case 0x00: return"COMMAND PHASE ERROR"; + case 0x00: return "COMMAND PHASE ERROR"; } break; case 0x4B: switch(ASCQ) { - case 0x00: return"DATA PHASE ERROR"; - case 0x01: return"INVALID TARGET PORT TRANSFER TAG RECEIVED"; - case 0x02: return"TOO MUCH WRITE DATA"; - case 0x03: return"ACK/NAK TIMEOUT"; - case 0x04: return"NAK RECEIVED"; - case 0x05: return"DATA OFFSET ERROR"; - case 0x06: return"INITIATOR RESPONSE TIMEOUT"; - case 0x07: return"CONNECTION LOST"; - case 0x08: return"DATA-IN BUFFER OVERFLOW - DATA BUFFER SIZE"; - case 0x09: return"DATA-IN BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA"; - case 0x0A: return"DATA-IN BUFFER ERROR"; - case 0x0B: return"DATA-OUT BUFFER OVERFLOW - DATA BUFFER SIZE"; - case 0x0C: return"DATA-OUT BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA"; - case 0x0D: return"DATA-OUT BUFFER ERROR"; - case 0x0E: return"PCIe FABRIC ERROR"; - case 0x0F: return"PCIe COMPLETION TIMEOUT"; - case 0x10: return"PCIe COMPLETION ABORT"; - case 0x11: return"PCIe POISONED TLP RECEIVED"; - case 0x12: return"PCIe ECRC CHECK FAILED"; - case 0x13: return"PCIe UNSUPPORTED REQUEST"; - case 0x14: return"PCIe ACS VIOLATION"; - case 0x15: return"PCIe TLP PREFIX BLOCKED"; + case 0x00: return "DATA PHASE ERROR"; + case 0x01: return "INVALID TARGET PORT TRANSFER TAG RECEIVED"; + case 0x02: return "TOO MUCH WRITE DATA"; + case 0x03: return "ACK/NAK TIMEOUT"; + case 0x04: return "NAK RECEIVED"; + case 0x05: return "DATA OFFSET ERROR"; + case 0x06: return "INITIATOR RESPONSE TIMEOUT"; + case 0x07: return "CONNECTION LOST"; + case 0x08: return "DATA-IN BUFFER OVERFLOW - DATA BUFFER SIZE"; + case 0x09: return "DATA-IN BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA"; + case 0x0A: return "DATA-IN BUFFER ERROR"; + case 0x0B: return "DATA-OUT BUFFER OVERFLOW - DATA BUFFER SIZE"; + case 0x0C: return "DATA-OUT BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA"; + case 0x0D: return "DATA-OUT BUFFER ERROR"; + case 0x0E: return "PCIe FABRIC ERROR"; + case 0x0F: return "PCIe COMPLETION TIMEOUT"; + case 0x10: return "PCIe COMPLETION ABORT"; + case 0x11: return "PCIe POISONED TLP RECEIVED"; + case 0x12: return "PCIe ECRC CHECK FAILED"; + case 0x13: return "PCIe UNSUPPORTED REQUEST"; + case 0x14: return "PCIe ACS VIOLATION"; + case 0x15: return "PCIe TLP PREFIX BLOCKED"; } break; case 0x4C: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT FAILED SELF-CONFIGURATION"; + case 0x00: return "LOGICAL UNIT FAILED SELF-CONFIGURATION"; } break; - case 0x4E: return$"OVERLAPPED COMMANDS ATTEMPTED FOR TASK TAG {ASCQ:X2}h"; + case 0x4E: return $"OVERLAPPED COMMANDS ATTEMPTED FOR TASK TAG {ASCQ:X2}h"; case 0x50: switch(ASCQ) { - case 0x00: return"WRITE APPEND ERROR"; - case 0x01: return"WRITE APPEND POSITION ERROR"; - case 0x02: return"POSITION ERROR RELATED TO TIMING"; + case 0x00: return "WRITE APPEND ERROR"; + case 0x01: return "WRITE APPEND POSITION ERROR"; + case 0x02: return "POSITION ERROR RELATED TO TIMING"; } break; case 0x51: switch(ASCQ) { - case 0x00: return"ERASE FAILURE"; - case 0x01: return"ERASE FAILURE - INCOMPLETE ERASE OPERATION DETECTED"; + case 0x00: return "ERASE FAILURE"; + case 0x01: return "ERASE FAILURE - INCOMPLETE ERASE OPERATION DETECTED"; } break; case 0x52: switch(ASCQ) { - case 0x00: return"CARTRIDGE FAULT"; + case 0x00: return "CARTRIDGE FAULT"; } break; case 0x53: switch(ASCQ) { - case 0x00: return"MEDIA LOAD OR EJECT FAILED"; - case 0x01: return"UNLOAD TAPE FAILURE"; - case 0x02: return"MEDIUM REMOVAL PREVENTED"; - case 0x03: return"MEDIUM REMOVAL PREVENTED BY DATA TRANSFER ELEMENT"; - case 0x04: return"MEDIUM THREAD OR UNTHREAD FAILURE"; - case 0x05: return"VOLUME IDENTIFIER INVALID"; - case 0x06: return"VOLUME IDENTIFIED MISSING"; - case 0x07: return"DUPLICATE VOLUME IDENTIFIER"; - case 0x08: return"ELEMENT STATUS UNKNOWN"; - case 0x09: return"DATA TRANSFER DEVICE ERROR - LOAD FAILED"; - case 0x0A: return"DATA TRANSFER DEVICE ERROR - UNLOAD FAILED"; - case 0x0B: return"DATA TRANSFER DEVICE ERROR - UNLOAD MISSING"; - case 0x0C: return"DATA TRANSFER DEVICE ERROR - EJECT FAILED"; - case 0x0D: return"DATA TRANSFER DEVICE ERROR - LIBRARY COMMUNICATION FAILED"; + case 0x00: return "MEDIA LOAD OR EJECT FAILED"; + case 0x01: return "UNLOAD TAPE FAILURE"; + case 0x02: return "MEDIUM REMOVAL PREVENTED"; + case 0x03: return "MEDIUM REMOVAL PREVENTED BY DATA TRANSFER ELEMENT"; + case 0x04: return "MEDIUM THREAD OR UNTHREAD FAILURE"; + case 0x05: return "VOLUME IDENTIFIER INVALID"; + case 0x06: return "VOLUME IDENTIFIED MISSING"; + case 0x07: return "DUPLICATE VOLUME IDENTIFIER"; + case 0x08: return "ELEMENT STATUS UNKNOWN"; + case 0x09: return "DATA TRANSFER DEVICE ERROR - LOAD FAILED"; + case 0x0A: return "DATA TRANSFER DEVICE ERROR - UNLOAD FAILED"; + case 0x0B: return "DATA TRANSFER DEVICE ERROR - UNLOAD MISSING"; + case 0x0C: return "DATA TRANSFER DEVICE ERROR - EJECT FAILED"; + case 0x0D: return "DATA TRANSFER DEVICE ERROR - LIBRARY COMMUNICATION FAILED"; } break; case 0x54: switch(ASCQ) { - case 0x00: return"SCSI TO HOST SYSTEM INTERFACE FAILURE"; + case 0x00: return "SCSI TO HOST SYSTEM INTERFACE FAILURE"; } break; case 0x55: switch(ASCQ) { - case 0x00: return"SYSTEM RESOURCE FAILURE"; - case 0x01: return"SYSTEM BUFFER FULL"; - case 0x02: return"INSUFFICIENT RESERVATION RESOURCES"; - case 0x03: return"INSUFFICIENT RESOURCES"; - case 0x04: return"INSUFFICIENT REGISTRATION RESOURCES"; - case 0x05: return"INSUFFICIENT ACCESS CONTROL RESOURCES"; - case 0x06: return"AUXILIARY MEMORY OUT OF SPACE"; - case 0x07: return"QUOTA ERROR"; - case 0x08: return"MAXIMUM NUMBER OF SUPPLEMENTAL DECRYPTION KEYS EXCEEDED"; - case 0x09: return"MEDIUM AUXILIARY MEMORY NOT ACCESSIBLE"; - case 0x0A: return"DATA CURRENTLY UNAVAILABLE"; - case 0x0B: return"INSUFFICIENT POWER FOR OPERATION"; - case 0x0C: return"INSUFFICIENT RESOURCES TO CREATE ROD"; - case 0x0D: return"INSUFFICIENT RESOURCES TO CREATE ROD TOKEN"; - case 0x0E: return"INSUFFICIENT ZONE RESOURCES"; - case 0x0F: return"INSUFFICIENT ZONE RESOURCES TO COMPLETE WRITE"; - case 0x10: return"MAXIMUM NUMBER OF STREAMS OPEN"; + case 0x00: return "SYSTEM RESOURCE FAILURE"; + case 0x01: return "SYSTEM BUFFER FULL"; + case 0x02: return "INSUFFICIENT RESERVATION RESOURCES"; + case 0x03: return "INSUFFICIENT RESOURCES"; + case 0x04: return "INSUFFICIENT REGISTRATION RESOURCES"; + case 0x05: return "INSUFFICIENT ACCESS CONTROL RESOURCES"; + case 0x06: return "AUXILIARY MEMORY OUT OF SPACE"; + case 0x07: return "QUOTA ERROR"; + case 0x08: return "MAXIMUM NUMBER OF SUPPLEMENTAL DECRYPTION KEYS EXCEEDED"; + case 0x09: return "MEDIUM AUXILIARY MEMORY NOT ACCESSIBLE"; + case 0x0A: return "DATA CURRENTLY UNAVAILABLE"; + case 0x0B: return "INSUFFICIENT POWER FOR OPERATION"; + case 0x0C: return "INSUFFICIENT RESOURCES TO CREATE ROD"; + case 0x0D: return "INSUFFICIENT RESOURCES TO CREATE ROD TOKEN"; + case 0x0E: return "INSUFFICIENT ZONE RESOURCES"; + case 0x0F: return "INSUFFICIENT ZONE RESOURCES TO COMPLETE WRITE"; + case 0x10: return "MAXIMUM NUMBER OF STREAMS OPEN"; } break; case 0x57: switch(ASCQ) { - case 0x00: return"UNABLE TO RECOVER TABLE-OF-CONTENTS"; + case 0x00: return "UNABLE TO RECOVER TABLE-OF-CONTENTS"; } break; case 0x58: switch(ASCQ) { - case 0x00: return"GENERATION DOES NOT EXIST"; + case 0x00: return "GENERATION DOES NOT EXIST"; } break; case 0x59: switch(ASCQ) { - case 0x00: return"UPDATED BLOCK READ"; + case 0x00: return "UPDATED BLOCK READ"; } break; case 0x5A: switch(ASCQ) { - case 0x00: return"OPERATOR REQUEST OR STATE CHANGE INPUT"; - case 0x01: return"OPERATOR MEDIUM REMOVAL REQUEST"; - case 0x02: return"OPERATOR SELECTED WRITE PROTECT"; - case 0x03: return"OPERATOR SELECTED WRITE PERMIT"; + case 0x00: return "OPERATOR REQUEST OR STATE CHANGE INPUT"; + case 0x01: return "OPERATOR MEDIUM REMOVAL REQUEST"; + case 0x02: return "OPERATOR SELECTED WRITE PROTECT"; + case 0x03: return "OPERATOR SELECTED WRITE PERMIT"; } break; case 0x5B: switch(ASCQ) { - case 0x00: return"LOG EXCEPTION"; - case 0x01: return"THRESHOLD CONDITION MET"; - case 0x02: return"LOG COUNTER AT MAXIMUM"; - case 0x03: return"LOG LIST CODES EXHAUSTED"; + case 0x00: return "LOG EXCEPTION"; + case 0x01: return "THRESHOLD CONDITION MET"; + case 0x02: return "LOG COUNTER AT MAXIMUM"; + case 0x03: return "LOG LIST CODES EXHAUSTED"; } break; case 0x5C: switch(ASCQ) { - case 0x00: return"RPL STATUS CHANGE"; - case 0x01: return"SPINDLES SYNCHRONIZED"; - case 0x02: return"SPINDLES NOT SYNCHRONIZED"; - case 0x03: return"SPARE AREA EXHAUSTION PREDICTION THRESHOLD EXCEEDED"; - case 0x10: return"HARDWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; - case 0x11: return"HARDWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; - case 0x12: return"HARDWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; - case 0x13: return"HARDWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; - case 0x14: return"HARDWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; - case 0x15: return"HARDWARE IMPENDING FAILURE ACCESS TIME TOO HIGH"; - case 0x16: return"HARDWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH"; - case 0x17: return"HARDWARE IMPENDING FAILURE CHANNEL PARAMETRICS"; - case 0x18: return"HARDWARE IMPENDING FAILURE CONTROLLER DETECTED"; - case 0x19: return"HARDWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE"; - case 0x1A: return"HARDWARE IMPENDING FAILURE SEEK TIME PERFORMANCE"; - case 0x1B: return"HARDWARE IMPENDING FAILURE SPIN-UP RETRY COUNT"; - case 0x1C: return"HARDWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; - case 0x20: return"CONTROLLER IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; - case 0x21: return"CONTROLLER IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; - case 0x22: return"CONTROLLER IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; - case 0x23: return"CONTROLLER IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; - case 0x24: return"CONTROLLER IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; - case 0x25: return"CONTROLLER IMPENDING FAILURE ACCESS TIME TOO HIGH"; - case 0x26: return"CONTROLLER IMPENDING FAILURE START UNIT TIMES TOO HIGH"; - case 0x27: return"CONTROLLER IMPENDING FAILURE CHANNEL PARAMETRICS"; - case 0x28: return"CONTROLLER IMPENDING FAILURE CONTROLLER DETECTED"; - case 0x29: return"CONTROLLER IMPENDING FAILURE THROUGHPUT PERFORMANCE"; - case 0x2A: return"CONTROLLER IMPENDING FAILURE SEEK TIME PERFORMANCE"; - case 0x2B: return"CONTROLLER IMPENDING FAILURE SPIN-UP RETRY COUNT"; - case 0x2C: return"CONTROLLER IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; - case 0x30: return"DATA CHANNEL IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; - case 0x31: return"DATA CHANNEL IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; - case 0x32: return"DATA CHANNEL IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; - case 0x33: return"DATA CHANNEL IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; - case 0x34: return"DATA CHANNEL IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; - case 0x35: return"DATA CHANNEL IMPENDING FAILURE ACCESS TIME TOO HIGH"; - case 0x36: return"DATA CHANNEL IMPENDING FAILURE START UNIT TIMES TOO HIGH"; - case 0x37: return"DATA CHANNEL IMPENDING FAILURE CHANNEL PARAMETRICS"; - case 0x38: return"DATA CHANNEL IMPENDING FAILURE DATA CHANNEL DETECTED"; - case 0x39: return"DATA CHANNEL IMPENDING FAILURE THROUGHPUT PERFORMANCE"; - case 0x3A: return"DATA CHANNEL IMPENDING FAILURE SEEK TIME PERFORMANCE"; - case 0x3B: return"DATA CHANNEL IMPENDING FAILURE SPIN-UP RETRY COUNT"; - case 0x3C: return"DATA CHANNEL IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; - case 0x40: return"SERVO IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; - case 0x41: return"SERVO IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; - case 0x42: return"SERVO IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; - case 0x43: return"SERVO IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; - case 0x44: return"SERVO IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; - case 0x45: return"SERVO IMPENDING FAILURE ACCESS TIME TOO HIGH"; - case 0x46: return"SERVO IMPENDING FAILURE START UNIT TIMES TOO HIGH"; - case 0x47: return"SERVO IMPENDING FAILURE CHANNEL PARAMETRICS"; - case 0x48: return"SERVO IMPENDING FAILURE SERVO DETECTED"; - case 0x49: return"SERVO IMPENDING FAILURE THROUGHPUT PERFORMANCE"; - case 0x4A: return"SERVO IMPENDING FAILURE SEEK TIME PERFORMANCE"; - case 0x4B: return"SERVO IMPENDING FAILURE SPIN-UP RETRY COUNT"; - case 0x4C: return"SERVO IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; - case 0x50: return"SPINDLE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; - case 0x51: return"SPINDLE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; - case 0x52: return"SPINDLE IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; - case 0x53: return"SPINDLE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; - case 0x54: return"SPINDLE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; - case 0x55: return"SPINDLE IMPENDING FAILURE ACCESS TIME TOO HIGH"; - case 0x56: return"SPINDLE IMPENDING FAILURE START UNIT TIMES TOO HIGH"; - case 0x57: return"SPINDLE IMPENDING FAILURE CHANNEL PARAMETRICS"; - case 0x58: return"SPINDLE IMPENDING FAILURE SPINDLE DETECTED"; - case 0x59: return"SPINDLE IMPENDING FAILURE THROUGHPUT PERFORMANCE"; - case 0x5A: return"SPINDLE IMPENDING FAILURE SEEK TIME PERFORMANCE"; - case 0x5B: return"SPINDLE IMPENDING FAILURE SPIN-UP RETRY COUNT"; - case 0x5C: return"SPINDLE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; - case 0x60: return"FIRMWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; - case 0x61: return"FIRMWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; - case 0x62: return"FIRMWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; - case 0x63: return"FIRMWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; - case 0x64: return"FIRMWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; - case 0x65: return"FIRMWARE IMPENDING FAILURE ACCESS TIME TOO HIGH"; - case 0x66: return"FIRMWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH"; - case 0x67: return"FIRMWARE IMPENDING FAILURE CHANNEL PARAMETRICS"; - case 0x68: return"FIRMWARE IMPENDING FAILURE FIRMWARE DETECTED"; - case 0x69: return"FIRMWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE"; - case 0x6A: return"FIRMWARE IMPENDING FAILURE SEEK TIME PERFORMANCE"; - case 0x6B: return"FIRMWARE IMPENDING FAILURE SPIN-UP RETRY COUNT"; - case 0x6C: return"FIRMWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; - case 0xFF: return"FAILURE PREDICTION THRESHOLD EXCEEDED (FALSE)"; + case 0x00: return "RPL STATUS CHANGE"; + case 0x01: return "SPINDLES SYNCHRONIZED"; + case 0x02: return "SPINDLES NOT SYNCHRONIZED"; + case 0x03: return "SPARE AREA EXHAUSTION PREDICTION THRESHOLD EXCEEDED"; + case 0x10: return "HARDWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; + case 0x11: return "HARDWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; + case 0x12: return "HARDWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; + case 0x13: return "HARDWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; + case 0x14: return "HARDWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; + case 0x15: return "HARDWARE IMPENDING FAILURE ACCESS TIME TOO HIGH"; + case 0x16: return "HARDWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH"; + case 0x17: return "HARDWARE IMPENDING FAILURE CHANNEL PARAMETRICS"; + case 0x18: return "HARDWARE IMPENDING FAILURE CONTROLLER DETECTED"; + case 0x19: return "HARDWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE"; + case 0x1A: return "HARDWARE IMPENDING FAILURE SEEK TIME PERFORMANCE"; + case 0x1B: return "HARDWARE IMPENDING FAILURE SPIN-UP RETRY COUNT"; + case 0x1C: return "HARDWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; + case 0x20: return "CONTROLLER IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; + case 0x21: return "CONTROLLER IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; + case 0x22: return "CONTROLLER IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; + case 0x23: return "CONTROLLER IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; + case 0x24: return "CONTROLLER IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; + case 0x25: return "CONTROLLER IMPENDING FAILURE ACCESS TIME TOO HIGH"; + case 0x26: return "CONTROLLER IMPENDING FAILURE START UNIT TIMES TOO HIGH"; + case 0x27: return "CONTROLLER IMPENDING FAILURE CHANNEL PARAMETRICS"; + case 0x28: return "CONTROLLER IMPENDING FAILURE CONTROLLER DETECTED"; + case 0x29: return "CONTROLLER IMPENDING FAILURE THROUGHPUT PERFORMANCE"; + case 0x2A: return "CONTROLLER IMPENDING FAILURE SEEK TIME PERFORMANCE"; + case 0x2B: return "CONTROLLER IMPENDING FAILURE SPIN-UP RETRY COUNT"; + case 0x2C: return "CONTROLLER IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; + case 0x30: return "DATA CHANNEL IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; + case 0x31: return "DATA CHANNEL IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; + case 0x32: return "DATA CHANNEL IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; + case 0x33: return "DATA CHANNEL IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; + case 0x34: return "DATA CHANNEL IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; + case 0x35: return "DATA CHANNEL IMPENDING FAILURE ACCESS TIME TOO HIGH"; + case 0x36: return "DATA CHANNEL IMPENDING FAILURE START UNIT TIMES TOO HIGH"; + case 0x37: return "DATA CHANNEL IMPENDING FAILURE CHANNEL PARAMETRICS"; + case 0x38: return "DATA CHANNEL IMPENDING FAILURE DATA CHANNEL DETECTED"; + case 0x39: return "DATA CHANNEL IMPENDING FAILURE THROUGHPUT PERFORMANCE"; + case 0x3A: return "DATA CHANNEL IMPENDING FAILURE SEEK TIME PERFORMANCE"; + case 0x3B: return "DATA CHANNEL IMPENDING FAILURE SPIN-UP RETRY COUNT"; + case 0x3C: return "DATA CHANNEL IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; + case 0x40: return "SERVO IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; + case 0x41: return "SERVO IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; + case 0x42: return "SERVO IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; + case 0x43: return "SERVO IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; + case 0x44: return "SERVO IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; + case 0x45: return "SERVO IMPENDING FAILURE ACCESS TIME TOO HIGH"; + case 0x46: return "SERVO IMPENDING FAILURE START UNIT TIMES TOO HIGH"; + case 0x47: return "SERVO IMPENDING FAILURE CHANNEL PARAMETRICS"; + case 0x48: return "SERVO IMPENDING FAILURE SERVO DETECTED"; + case 0x49: return "SERVO IMPENDING FAILURE THROUGHPUT PERFORMANCE"; + case 0x4A: return "SERVO IMPENDING FAILURE SEEK TIME PERFORMANCE"; + case 0x4B: return "SERVO IMPENDING FAILURE SPIN-UP RETRY COUNT"; + case 0x4C: return "SERVO IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; + case 0x50: return "SPINDLE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; + case 0x51: return "SPINDLE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; + case 0x52: return "SPINDLE IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; + case 0x53: return "SPINDLE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; + case 0x54: return "SPINDLE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; + case 0x55: return "SPINDLE IMPENDING FAILURE ACCESS TIME TOO HIGH"; + case 0x56: return "SPINDLE IMPENDING FAILURE START UNIT TIMES TOO HIGH"; + case 0x57: return "SPINDLE IMPENDING FAILURE CHANNEL PARAMETRICS"; + case 0x58: return "SPINDLE IMPENDING FAILURE SPINDLE DETECTED"; + case 0x59: return "SPINDLE IMPENDING FAILURE THROUGHPUT PERFORMANCE"; + case 0x5A: return "SPINDLE IMPENDING FAILURE SEEK TIME PERFORMANCE"; + case 0x5B: return "SPINDLE IMPENDING FAILURE SPIN-UP RETRY COUNT"; + case 0x5C: return "SPINDLE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; + case 0x60: return "FIRMWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE"; + case 0x61: return "FIRMWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH"; + case 0x62: return "FIRMWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH"; + case 0x63: return "FIRMWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH"; + case 0x64: return "FIRMWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS"; + case 0x65: return "FIRMWARE IMPENDING FAILURE ACCESS TIME TOO HIGH"; + case 0x66: return "FIRMWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH"; + case 0x67: return "FIRMWARE IMPENDING FAILURE CHANNEL PARAMETRICS"; + case 0x68: return "FIRMWARE IMPENDING FAILURE FIRMWARE DETECTED"; + case 0x69: return "FIRMWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE"; + case 0x6A: return "FIRMWARE IMPENDING FAILURE SEEK TIME PERFORMANCE"; + case 0x6B: return "FIRMWARE IMPENDING FAILURE SPIN-UP RETRY COUNT"; + case 0x6C: return "FIRMWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT"; + case 0xFF: return "FAILURE PREDICTION THRESHOLD EXCEEDED (FALSE)"; } break; case 0x5E: switch(ASCQ) { - case 0x00: return"LOW POWER CONDITION ON"; - case 0x01: return"IDLE CONDITION ACTIVATED BY TIMER"; - case 0x02: return"STANDBY CONDITION ACTIVATED BY TIMER"; - case 0x03: return"IDLE CONDITION ACTIVATED BY COMMAND"; - case 0x04: return"STANDBY CONDITION ACTIVATED BY COMMAND"; - case 0x05: return"IDLE_B CONDITION ACTIVATED BY TIMER"; - case 0x06: return"IDLE_B CONDITION ACTIVATED BY COMMAND"; - case 0x07: return"IDLE_C CONDITION ACTIVATED BY TIMER"; - case 0x08: return"IDLE_C CONDITION ACTIVATED BY COMMAND"; - case 0x09: return"STANDBY_Y CONDITION ACTIVATED BY TIMER"; - case 0x0A: return"STANDBY_Y CONDITION ACTIVATED BY COMMAND"; - case 0x41: return"POWER STATE CHANGED TO ACTIVE"; - case 0x42: return"POWER STATE CHANGED TO IDLE"; - case 0x43: return"POWER STATE CHANGED TO STANDBY"; - case 0x45: return"POWER STATE CHANGED TO SLEEP"; - case 0x47: return"POWER STATE CHANGED TO DEVICE CONTROL"; + case 0x00: return "LOW POWER CONDITION ON"; + case 0x01: return "IDLE CONDITION ACTIVATED BY TIMER"; + case 0x02: return "STANDBY CONDITION ACTIVATED BY TIMER"; + case 0x03: return "IDLE CONDITION ACTIVATED BY COMMAND"; + case 0x04: return "STANDBY CONDITION ACTIVATED BY COMMAND"; + case 0x05: return "IDLE_B CONDITION ACTIVATED BY TIMER"; + case 0x06: return "IDLE_B CONDITION ACTIVATED BY COMMAND"; + case 0x07: return "IDLE_C CONDITION ACTIVATED BY TIMER"; + case 0x08: return "IDLE_C CONDITION ACTIVATED BY COMMAND"; + case 0x09: return "STANDBY_Y CONDITION ACTIVATED BY TIMER"; + case 0x0A: return "STANDBY_Y CONDITION ACTIVATED BY COMMAND"; + case 0x41: return "POWER STATE CHANGED TO ACTIVE"; + case 0x42: return "POWER STATE CHANGED TO IDLE"; + case 0x43: return "POWER STATE CHANGED TO STANDBY"; + case 0x45: return "POWER STATE CHANGED TO SLEEP"; + case 0x47: return "POWER STATE CHANGED TO DEVICE CONTROL"; } break; case 0x60: switch(ASCQ) { - case 0x00: return"LAMP FAILURE"; + case 0x00: return "LAMP FAILURE"; } break; case 0x61: switch(ASCQ) { - case 0x00: return"VIDEO ACQUISTION ERROR"; - case 0x01: return"UNABLE TO ACQUIRE VIDEO"; - case 0x02: return"OUT OF FOCUS"; + case 0x00: return "VIDEO ACQUISTION ERROR"; + case 0x01: return "UNABLE TO ACQUIRE VIDEO"; + case 0x02: return "OUT OF FOCUS"; } break; case 0x62: switch(ASCQ) { - case 0x00: return"SCAN HEAD POSITIONING ERROR"; + case 0x00: return "SCAN HEAD POSITIONING ERROR"; } break; case 0x63: switch(ASCQ) { - case 0x00: return"END OF USER AREA ENCOUNTERED ON THIS TRACK"; - case 0x01: return"PACKET DOES NOT FIT IN AVAILABLE SPACE"; + case 0x00: return "END OF USER AREA ENCOUNTERED ON THIS TRACK"; + case 0x01: return "PACKET DOES NOT FIT IN AVAILABLE SPACE"; } break; case 0x64: switch(ASCQ) { - case 0x00: return"ILLEGAL MODE FOR THIS TRACK"; - case 0x01: return"INVALID PACKET SIZE"; + case 0x00: return "ILLEGAL MODE FOR THIS TRACK"; + case 0x01: return "INVALID PACKET SIZE"; } break; case 0x65: switch(ASCQ) { - case 0x00: return"VOLTAGE FAULT"; + case 0x00: return "VOLTAGE FAULT"; } break; case 0x66: switch(ASCQ) { - case 0x00: return"AUTOMATIC DOCUMENT FEEDER COVER UP"; - case 0x01: return"AUTOMATIC DOCUMENT FEEDER LIFT UP"; - case 0x02: return"DOCUMENT JAM IN AUTOMATIC DOCUMENT FEEDER"; - case 0x03: return"DOCUMENT MISS FEED AUTOMATIC IN DOCUMENT FEEDER"; + case 0x00: return "AUTOMATIC DOCUMENT FEEDER COVER UP"; + case 0x01: return "AUTOMATIC DOCUMENT FEEDER LIFT UP"; + case 0x02: return "DOCUMENT JAM IN AUTOMATIC DOCUMENT FEEDER"; + case 0x03: return "DOCUMENT MISS FEED AUTOMATIC IN DOCUMENT FEEDER"; } break; case 0x67: switch(ASCQ) { - case 0x00: return"CONFIGURATION FAILURE"; - case 0x01: return"CONFIGURATION OF INCAPABLE LOGICAL UNITS FAILED"; - case 0x02: return"ADD LOGICAL UNIT FAILED"; - case 0x03: return"MODIFICATION OF LOGICAL UNIT FAILED"; - case 0x04: return"EXCHANGE OF LOGICAL UNIT FAILED"; - case 0x05: return"REMOVE OF LOGICAL UNIT FAILED"; - case 0x06: return"ATTACHMENT OF LOGICAL UNIT FAILED"; - case 0x07: return"CREATION OF LOGICAL UNIT FAILED"; - case 0x08: return"ASSIGN FAILURE OCCURRED"; - case 0x09: return"MULTIPLY ASSIGNED LOGICAL UNIT"; - case 0x0A: return"SET TARGET PORT GROUPS COMMAND FAILED"; - case 0x0B: return"ATA DEVICE FEATURE NOT ENABLED"; + case 0x00: return "CONFIGURATION FAILURE"; + case 0x01: return "CONFIGURATION OF INCAPABLE LOGICAL UNITS FAILED"; + case 0x02: return "ADD LOGICAL UNIT FAILED"; + case 0x03: return "MODIFICATION OF LOGICAL UNIT FAILED"; + case 0x04: return "EXCHANGE OF LOGICAL UNIT FAILED"; + case 0x05: return "REMOVE OF LOGICAL UNIT FAILED"; + case 0x06: return "ATTACHMENT OF LOGICAL UNIT FAILED"; + case 0x07: return "CREATION OF LOGICAL UNIT FAILED"; + case 0x08: return "ASSIGN FAILURE OCCURRED"; + case 0x09: return "MULTIPLY ASSIGNED LOGICAL UNIT"; + case 0x0A: return "SET TARGET PORT GROUPS COMMAND FAILED"; + case 0x0B: return "ATA DEVICE FEATURE NOT ENABLED"; } break; case 0x68: switch(ASCQ) { - case 0x00: return"LOGICAL UNIT NOT CONFIGURED"; - case 0x01: return"SUBSIDIARY LOGICAL UNIT NOT CONFIGURED"; + case 0x00: return "LOGICAL UNIT NOT CONFIGURED"; + case 0x01: return "SUBSIDIARY LOGICAL UNIT NOT CONFIGURED"; } break; case 0x69: switch(ASCQ) { - case 0x00: return"DATA LOSS ON LOGICAL UNIT"; - case 0x01: return"MULTIPLE LOGICAL UNIT FAILURES"; - case 0x02: return"PARITY/DATA MISMATCH"; + case 0x00: return "DATA LOSS ON LOGICAL UNIT"; + case 0x01: return "MULTIPLE LOGICAL UNIT FAILURES"; + case 0x02: return "PARITY/DATA MISMATCH"; } break; case 0x6A: switch(ASCQ) { - case 0x00: return"INFORMATIONAL, REFER TO LOG"; + case 0x00: return "INFORMATIONAL, REFER TO LOG"; } break; case 0x6B: switch(ASCQ) { - case 0x00: return"STATE CHANGE HAS OCCURRED"; - case 0x01: return"REDUNDANCY LEVEL GOT BETTER"; - case 0x02: return"REDUNDANCY LEVEL GOT WORSE"; + case 0x00: return "STATE CHANGE HAS OCCURRED"; + case 0x01: return "REDUNDANCY LEVEL GOT BETTER"; + case 0x02: return "REDUNDANCY LEVEL GOT WORSE"; } break; case 0x6C: switch(ASCQ) { - case 0x00: return"REBUILD FAILURE OCCURRED"; + case 0x00: return "REBUILD FAILURE OCCURRED"; } break; case 0x6D: switch(ASCQ) { - case 0x00: return"RECALCULATE FAILURE OCCURRED"; + case 0x00: return "RECALCULATE FAILURE OCCURRED"; } break; case 0x6E: switch(ASCQ) { - case 0x00: return"COMMAND TO LOGICAL UNIT FAILED"; + case 0x00: return "COMMAND TO LOGICAL UNIT FAILED"; } break; case 0x6F: switch(ASCQ) { - case 0x00: return"COPY PROTECTION KEY EXCHANGE FAILURE - AUTHENTICATION FAILURE"; - case 0x01: return"COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT PRESENT"; - case 0x02: return"COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED"; - case 0x03: return"READ OF SCRAMBLED SECTOR WITHOUT AUTHENTICATION"; - case 0x04: return"MEDIA REGION CODE IS MISMATCHED TO LOGICAL UNIT REGION"; - case 0x05: return"DRIVE REGION MUST BE PERMANENT/REGION RESET COUNT ERROR"; - case 0x06: return"INSUFFICIENT BLOCK COUNT FOR BINDING NONCE RECORDING"; - case 0x07: return"CONFLICT IN BINDING NONCE RECORDING"; + case 0x00: return "COPY PROTECTION KEY EXCHANGE FAILURE - AUTHENTICATION FAILURE"; + case 0x01: return "COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT PRESENT"; + case 0x02: return "COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED"; + case 0x03: return "READ OF SCRAMBLED SECTOR WITHOUT AUTHENTICATION"; + case 0x04: return "MEDIA REGION CODE IS MISMATCHED TO LOGICAL UNIT REGION"; + case 0x05: return "DRIVE REGION MUST BE PERMANENT/REGION RESET COUNT ERROR"; + case 0x06: return "INSUFFICIENT BLOCK COUNT FOR BINDING NONCE RECORDING"; + case 0x07: return "CONFLICT IN BINDING NONCE RECORDING"; } break; - case 0x70: return$"DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF {ASCQ:X2}h"; + case 0x70: return $"DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF {ASCQ:X2}h"; case 0x71: switch(ASCQ) { - case 0x00: return"DECOMPRESSIONG EXCEPTION LONG ALGORITHM ID"; + case 0x00: return "DECOMPRESSIONG EXCEPTION LONG ALGORITHM ID"; } break; case 0x72: switch(ASCQ) { - case 0x00: return"SESSION FIXATION ERROR"; - case 0x01: return"SESSION FIXATION ERROR WRITING LEAD-IN"; - case 0x02: return"SESSION FIXATION ERROR WRITING LEAD-OUT"; - case 0x03: return"SESSION FIXATION ERROR - INCOMPLETE TRACK IN SESSION"; - case 0x04: return"EMPTY OR PARTIALLY WRITTEN RESERVED TRACK"; - case 0x05: return"NO MORE TRACK RESERVATIONS ALLOWED"; - case 0x06: return"RMZ EXTENSION IS NOT ALLOWED"; - case 0x07: return"NO MORE TEST ZONE EXTENSIONS ARE ALLOWED"; + case 0x00: return "SESSION FIXATION ERROR"; + case 0x01: return "SESSION FIXATION ERROR WRITING LEAD-IN"; + case 0x02: return "SESSION FIXATION ERROR WRITING LEAD-OUT"; + case 0x03: return "SESSION FIXATION ERROR - INCOMPLETE TRACK IN SESSION"; + case 0x04: return "EMPTY OR PARTIALLY WRITTEN RESERVED TRACK"; + case 0x05: return "NO MORE TRACK RESERVATIONS ALLOWED"; + case 0x06: return "RMZ EXTENSION IS NOT ALLOWED"; + case 0x07: return "NO MORE TEST ZONE EXTENSIONS ARE ALLOWED"; } break; case 0x73: switch(ASCQ) { - case 0x00: return"CD CONTROL ERROR"; - case 0x01: return"POWER CALIBRATION AREA ALMOST FULL"; - case 0x02: return"POWER CALIBRATION AREA IS FULL"; - case 0x03: return"POWER CALIBRATION AREA ERROR"; - case 0x04: return"PROGRAM MEMORY AREA UPDATE FAILURE"; - case 0x05: return"PROGRAM MEMORY AREA IS FULL"; - case 0x06: return"RMA/PMA IS ALMOST FULL"; - case 0x10: return"CURRENT POWER CALIBRATION AREA ALMOST FULL"; - case 0x11: return"CURRENT POWER CALIBRATION AREA IS FULL"; - case 0x17: return"RDZ IS FULL"; + case 0x00: return "CD CONTROL ERROR"; + case 0x01: return "POWER CALIBRATION AREA ALMOST FULL"; + case 0x02: return "POWER CALIBRATION AREA IS FULL"; + case 0x03: return "POWER CALIBRATION AREA ERROR"; + case 0x04: return "PROGRAM MEMORY AREA UPDATE FAILURE"; + case 0x05: return "PROGRAM MEMORY AREA IS FULL"; + case 0x06: return "RMA/PMA IS ALMOST FULL"; + case 0x10: return "CURRENT POWER CALIBRATION AREA ALMOST FULL"; + case 0x11: return "CURRENT POWER CALIBRATION AREA IS FULL"; + case 0x17: return "RDZ IS FULL"; } break; case 0x74: switch(ASCQ) { - case 0x00: return"SECURITY ERROR"; - case 0x01: return"UNABLE TO DECRYPT DATA"; - case 0x02: return"UNENCRYPTED DATA ENCOUNTERED WHILE DECRYPTING"; - case 0x03: return"INCORRECT DATA ENCRYPTION KEY"; - case 0x04: return"CRYPTOGRAPHIC INTEGRITY VALIDATION FAILED"; - case 0x05: return"ERROR DECRYPTING DATA"; - case 0x06: return"UNKNOWN SIGNATURE VERIFICATION KEY"; - case 0x07: return"ENCRYPTION PARAMETERS NOT USEABLE"; - case 0x08: return"DIGITAL SIGNATURE VALIDATION FAILURE"; - case 0x09: return"ENCRYPTION MODE MISMATCH ON READ"; - case 0x0A: return"ENCRYPTED BLOCK NOT RAW READ ENABLED"; - case 0x0B: return"INCORRECT ENCRYPTION PARAMETERS"; - case 0x0C: return"UNABLE TO DECRYPT PARAMETER LIST"; - case 0x0D: return"ENCRYPTION ALGORITHM DISABLED"; - case 0x10: return"SA CREATION PARAMETER VALUE INVALID"; - case 0x11: return"SA CREATION PARAMETER VALUE REJECTED"; - case 0x12: return"INVALID SA USAGE"; - case 0x21: return"DATA ENCRYPTION CONFIGURATION PREVENTED"; - case 0x30: return"SA CREATION PARAMETER NOT SUPPORTED"; - case 0x40: return"AUTHENTICATION FAILED"; - case 0x61: return"EXTERNAL DATA ENCRYPTION KEY MANAGER ACCESS ERROR"; - case 0x62: return"EXTERNAL DATA ENCRYPTION KEY MANAGER ERROR"; - case 0x63: return"EXTERNAL DATA ENCRYPTION KEY NOT FOUND"; - case 0x64: return"EXTERNAL DATA ENCRYPTION REQUEST NOT AUTHORIZED"; - case 0x6E: return"EXTERNAL DATA ENCRYPTION CONTROL TIMEOUT"; - case 0x6F: return"EXTERNAL DATA ENCRYPTION CONTROL ERROR"; - case 0x71: return"LOGICAL UNIT ACCESS NOT AUTHORIZED"; - case 0x79: return"SECURITY CONFLICT IN TRANSLATED DEVICE"; + case 0x00: return "SECURITY ERROR"; + case 0x01: return "UNABLE TO DECRYPT DATA"; + case 0x02: return "UNENCRYPTED DATA ENCOUNTERED WHILE DECRYPTING"; + case 0x03: return "INCORRECT DATA ENCRYPTION KEY"; + case 0x04: return "CRYPTOGRAPHIC INTEGRITY VALIDATION FAILED"; + case 0x05: return "ERROR DECRYPTING DATA"; + case 0x06: return "UNKNOWN SIGNATURE VERIFICATION KEY"; + case 0x07: return "ENCRYPTION PARAMETERS NOT USEABLE"; + case 0x08: return "DIGITAL SIGNATURE VALIDATION FAILURE"; + case 0x09: return "ENCRYPTION MODE MISMATCH ON READ"; + case 0x0A: return "ENCRYPTED BLOCK NOT RAW READ ENABLED"; + case 0x0B: return "INCORRECT ENCRYPTION PARAMETERS"; + case 0x0C: return "UNABLE TO DECRYPT PARAMETER LIST"; + case 0x0D: return "ENCRYPTION ALGORITHM DISABLED"; + case 0x10: return "SA CREATION PARAMETER VALUE INVALID"; + case 0x11: return "SA CREATION PARAMETER VALUE REJECTED"; + case 0x12: return "INVALID SA USAGE"; + case 0x21: return "DATA ENCRYPTION CONFIGURATION PREVENTED"; + case 0x30: return "SA CREATION PARAMETER NOT SUPPORTED"; + case 0x40: return "AUTHENTICATION FAILED"; + case 0x61: return "EXTERNAL DATA ENCRYPTION KEY MANAGER ACCESS ERROR"; + case 0x62: return "EXTERNAL DATA ENCRYPTION KEY MANAGER ERROR"; + case 0x63: return "EXTERNAL DATA ENCRYPTION KEY NOT FOUND"; + case 0x64: return "EXTERNAL DATA ENCRYPTION REQUEST NOT AUTHORIZED"; + case 0x6E: return "EXTERNAL DATA ENCRYPTION CONTROL TIMEOUT"; + case 0x6F: return "EXTERNAL DATA ENCRYPTION CONTROL ERROR"; + case 0x71: return "LOGICAL UNIT ACCESS NOT AUTHORIZED"; + case 0x79: return "SECURITY CONFLICT IN TRANSLATED DEVICE"; } break; diff --git a/SCSI/VendorString.cs b/SCSI/VendorString.cs index 3ac34a9b5..878d1bb09 100644 --- a/SCSI/VendorString.cs +++ b/SCSI/VendorString.cs @@ -38,805 +38,805 @@ namespace Aaru.Decoders.SCSI { switch(scsiVendorString) { - case"0B4C": return"MOOSIK Ltd."; - case"13FE": return"PHISON"; - case"2AI": return"2AI (Automatisme et Avenir Informatique)"; - case"3M": return"3M Company"; - case"3nhtech": return"3NH Technologies"; - case"3PARdata": return"3PARdata, Inc."; - case"A-Max": return"A-Max Technology Co., Ltd"; - case"ABSOLUTE": return"Absolute Analysis"; - case"ACARD": return"ACARD Technology Corp."; - case"Accusys": return"Accusys INC."; - case"Acer": return"Acer, Inc."; - case"ACL": return"Automated Cartridge Librarys, Inc."; - case"Actifio": return"Actifio"; - case"Acuid": return"Acuid Corporation Ltd."; - case"AcuLab": return"AcuLab, Inc. (Tulsa, OK)"; - case"ADAPTEC": return"Adaptec"; - case"ADIC": return"Advanced Digital Information Corporation"; - case"ADSI": return"Adaptive Data Systems, Inc. (a Western Digital subsidiary)"; - case"ADTX": return"ADTX Co., Ltd."; - case"ADVA": return"ADVA Optical Networking AG"; - case"AEM": return"AEM Performance Electronics"; - case"AERONICS": return"Aeronics, Inc."; - case"AGFA": return"AGFA"; - case"Agilent": return"Agilent Technologies"; - case"AIC": return"Advanced Industrial Computer, Inc."; - case"AIPTEK": return"AIPTEK International Inc."; - case"Alcohol": return"Alcohol Soft"; - case"ALCOR": return"Alcor Micro, Corp."; - case"AMCC": return"Applied Micro Circuits Corporation"; - case"AMCODYNE": return"Amcodyne"; - case"Amgeon": return"Amgeon LLC"; - case"AMI": return"American Megatrends, Inc."; - case"AMPEX": return"Ampex Data Systems"; - case"Amphenol": return"Amphenol"; - case"Amtl": return"Tenlon Technology Co.,Ltd"; - case"ANAMATIC": return"Anamartic Limited (England)"; - case"Ancor": return"Ancor Communications, Inc."; - case"ANCOT": return"ANCOT Corp."; - case"ANDATACO": return"Andataco"; - case"andiamo": return"Andiamo Systems, Inc."; - case"ANOBIT": return"Anobit"; - case"ANRITSU": return"Anritsu Corporation"; - case"ANTONIO": return"Antonio Precise Products Manufactory Ltd."; - case"AoT": return"Art of Technology AG"; - case"APPLE": return"Apple Computer, Inc."; - case"ARCHIVE": return"Archive"; - case"ARDENCE": return"Ardence Inc"; - case"Areca": return"Areca Technology Corporation"; - case"Arena": return"MaxTronic International Co., Ltd."; - case"Argent": return"Argent Data Systems, Inc."; - case"ARIO": return"Ario Data Networks, Inc."; - case"ARISTOS": return"Aristos Logic Corp."; - case"ARK": return"ARK Research Corporation"; - case"ARL:UT@A": return"Applied Research Laboratories : University of Texas at Austin"; - case"ARTECON": return"Artecon Inc."; - case"Artistic": return"Artistic Licence (UK) Ltd"; - case"ARTON": return"Arton Int."; - case"ASACA": return"ASACA Corp."; - case"ASC": return"Advanced Storage Concepts, Inc."; - case"ASPEN": return"Aspen Peripherals"; - case"AST": return"AST Research"; - case"ASTEK": return"Astek Corporation"; - case"ASTK": return"Alcatel STK A/S"; - case"AStor": return"AccelStor, Inc."; - case"ASTUTE": return"Astute Networks, Inc."; - case"AT&T": return"AT&T"; - case"ATA": return"SCSI / ATA Translator Software (Organization Not Specified)"; - case"ATARI": return"Atari Corporation"; - case"ATech": return"ATech electronics"; - case"ATG CYG": return"ATG Cygnet Inc."; - case"ATL": return"Quantum|ATL Products"; - case"ATTO": return"ATTO Technology Inc."; - case"ATTRATEC": return"Attratech Ltd liab. Co"; - case"ATX": return"Alphatronix"; - case"AURASEN": return"Aurasen Limited"; - case"Avago": return"Avago Technologies"; - case"AVC": return"AVC Technology Ltd"; - case"AVIDVIDR": return"AVID Technologies, Inc."; - case"AVR": return"Advanced Vision Research"; - case"AXSTOR": return"AXSTOR"; - case"Axxana": return"Axxana Ltd."; - case"B*BRIDGE": return"Blockbridge Networks LLC"; - case"BALLARD": return"Ballard Synergy Corp."; - case"Barco": return"Barco"; - case"BAROMTEC": return"Barom Technologies Co., Ltd."; - case"Bassett": return"Bassett Electronic Systems Ltd"; - case"BC Hydro": return"BC Hydro"; - case"BDT": return"BDT AG"; - case"BECEEM": return"Beceem Communications, Inc"; - case"BENQ": return"BENQ Corporation."; - case"BERGSWD": return"Berg Software Design"; - case"BEZIER": return"Bezier Systems, Inc."; - case"BHTi": return"Breece Hill Technologies"; - case"biodata": return"Biodata Devices SL"; - case"BIOS": return"BIOS Corporation"; - case"BIR": return"Bio-Imaging Research, Inc."; - case"BiT": return"BiT Microsystems"; - case"BITMICRO": return"BiT Microsystems, Inc."; - case"Blendlgy": return"Blendology Limited"; - case"BLOOMBAS": return"Bloombase Technologies Limited"; - case"BlueArc": return"BlueArc Corporation"; - case"bluecog": return"bluecog"; - case"BME-HVT": return"Broadband Infocommunicatons and Electromagnetic Theory Department"; - case"BNCHMARK": return"Benchmark Tape Systems Corporation"; - case"Bosch": return"Robert Bosch GmbH"; - case"Botman": return"Botmanfamily Electronics"; - case"BoxHill": return"Box Hill Systems Corporation"; - case"BRDGWRKS": return"Bridgeworks Ltd."; - case"BREA": return"BREA Technologies, Inc."; - case"BREECE": return"Breece Hill LLC"; - case"BreqLabs": return"BreqLabs Inc."; - case"Broadcom": return"Broadcom Corporation"; - case"BROCADE": return"Brocade Communications Systems, Incorporated"; - case"BUFFALO": return"BUFFALO INC."; - case"BULL": return"Bull Peripherals Corp."; - case"BUSLOGIC": return"BusLogic Inc."; - case"BVIRTUAL": return"B-Virtual N.V."; - case"CACHEIO": return"CacheIO LLC"; - case"CalComp": return"CalComp, A Lockheed Company"; - case"CALCULEX": return"CALCULEX, Inc."; - case"CALIPER": return"Caliper (California Peripheral Corp.)"; - case"CAMBEX": return"Cambex Corporation"; - case"CAMEOSYS": return"Cameo Systems Inc."; - case"CANDERA": return"Candera Inc."; - case"CAPTION": return"CAPTION BANK"; - case"CAST": return"Advanced Storage Tech"; - case"CATALYST": return"Catalyst Enterprises"; - case"CCDISK": return"iSCSI Cake"; - case"CDC": return"Control Data or MPI"; - case"CDP": return"Columbia Data Products"; - case"Celsia": return"A M Bromley Limited"; - case"CenData": return"Central Data Corporation"; - case"Cereva": return"Cereva Networks Inc."; - case"CERTANCE": return"Certance"; - case"Chantil": return"Chantil Technology"; - case"CHEROKEE": return"Cherokee Data Systems"; - case"CHINON": return"Chinon"; - case"CHRISTMA": return"Christmann Informationstechnik + Medien GmbH & Co KG"; - case"CIE&YED": return"YE Data, C.Itoh Electric Corp."; - case"CIPHER": return"Cipher Data Products"; - case"Ciprico": return"Ciprico, Inc."; - case"CIRRUSL": return"Cirrus Logic Inc."; - case"CISCO": return"Cisco Systems, Inc."; - case"CLEARSKY": return"ClearSky Data, Inc."; - case"CLOVERLF": return"Cloverleaf Communications, Inc"; - case"CLS": return"Celestica"; - case"CMD": return"CMD Technology Inc."; - case"CMTechno": return"CMTech"; - case"CNGR SFW": return"Congruent Software, Inc."; - case"CNSi": return"Chaparral Network Storage, Inc."; - case"CNT": return"Computer Network Technology"; - case"COBY": return"Coby Electronics Corporation, USA"; - case"COGITO": return"Cogito"; - case"COMAY": return"Corerise Electronics"; - case"COMPAQ": return"Compaq Computer Corporation"; - case"COMPELNT": return"Compellent Technologies, Inc."; - case"COMPORT": return"Comport Corp."; - case"COMPSIG": return"Computer Signal Corporation"; - case"COMPTEX": return"Comptex Pty Limited"; - case"CONNER": return"Conner Peripherals"; - case"COPANSYS": return"COPAN SYSTEMS INC"; - case"CORAID": return"Coraid, Inc"; - case"CORE": return"Core International, Inc."; - case"CORERISE": return"Corerise Electronics"; - case"COVOTE": return"Covote GmbH & Co KG"; - case"COWON": return"COWON SYSTEMS, Inc."; - case"CPL": return"Cross Products Ltd"; - case"CPU TECH": return"CPU Technology, Inc."; - case"CREO": return"Creo Products Inc."; - case"CROSFLD": return"Crosfield Electronics"; - case"CROSSRDS": return"Crossroads Systems, Inc."; - case"crosswlk": return"Crosswalk, Inc."; - case"CSCOVRTS": return"Cisco - Veritas"; - case"CSM, INC": return"Computer SM, Inc."; - case"Cunuqui": return"CUNUQUI SLU"; - case"CYBERNET": return"Cybernetics"; - case"Cygnal": return"Dekimo"; - case"CYPRESS": return"Cypress Semiconductor Corp."; - case"D Bit": return"Digby's Bitpile, Inc. DBA D Bit"; - case"DALSEMI": return"Dallas Semiconductor"; - case"DANEELEC": return"Dane-Elec"; - case"DANGER": return"Danger Inc."; - case"DAT-MG": return"DAT Manufacturers Group"; - case"Data Com": return"Data Com Information Systems Pty. Ltd."; - case"DATABOOK": return"Databook, Inc."; - case"DATACOPY": return"Datacopy Corp."; - case"DataCore": return"DataCore Software Corporation"; - case"DataG": return"DataGravity"; - case"DATAPT": return"Datapoint Corp."; - case"DATARAM": return"Dataram Corporation"; - case"DATC": return"Datum Champion Technology Co., Ltd"; - case"DAVIS": return"Daviscomms (S) Pte Ltd"; - case"DCS": return"ShenZhen DCS Group Co.,Ltd"; - case"DDN": return"DataDirect Networks, Inc."; - case"DDRDRIVE": return"DDRdrive LLC"; - case"DE": return"Dimension Engineering LLC"; - case"DEC": return"Digital Equipment Corporation"; - case"DEI": return"Digital Engineering, Inc."; - case"DELL": return"Dell, Inc."; - case"Dell(tm)": return"Dell, Inc"; - case"DELPHI": return"Delphi Data Div. of Sparks Industries, Inc."; - case"DENON": return"Denon/Nippon Columbia"; - case"DenOptix": return"DenOptix, Inc."; - case"DEST": return"DEST Corp."; - case"DFC": return"DavioFranke.com"; - case"DFT": return"Data Fault Tolerance System CO.,LTD."; - case"DGC": return"Data General Corp."; - case"DIGIDATA": return"Digi-Data Corporation"; - case"DigiIntl": return"Digi International"; - case"Digital": return"Digital Equipment Corporation"; - case"DILOG": return"Distributed Logic Corp."; - case"DISC": return"Document Imaging Systems Corp."; - case"DiscSoft": return"Disc Soft Ltd"; - case"DLNET": return"Driveline"; - case"DNS": return"Data and Network Security"; - case"DNUK": return"Digital Networks Uk Ltd"; - case"DotHill": return"Dot Hill Systems Corp."; - case"DP": return"Dell, Inc."; - case"DPT": return"Distributed Processing Technology"; - case"Drewtech": return"Drew Technologies, Inc."; - case"DROBO": return"Data Robotics, Inc."; - case"DSC": return"DigitalStream Corporation"; - case"DSI": return"Data Spectrum, Inc."; - case"DSM": return"Deterner Steuerungs- und Maschinenbau GmbH & Co."; - case"DSNET": return"Cleversafe, Inc."; - case"DT": return"Double-Take Software, INC."; - case"DTC QUME": return"Data Technology Qume"; - case"DXIMAGIN": return"DX Imaging"; - case"E-Motion": return"E-Motion LLC"; - case"EARTHLAB": return"EarthLabs"; - case"EarthLCD": return"Earth Computer Technologies, Inc."; - case"ECCS": return"ECCS, Inc."; - case"ECMA": return"European Computer Manufacturers Association"; - case"EDS": return"Embedded Data Systems"; - case"EIM": return"InfoCore"; - case"ELE Intl": return"ELE International"; - case"ELEGANT": return"Elegant Invention, LLC"; - case"Elektron": return"Elektron Music Machines MAV AB"; - case"elipsan": return"Elipsan UK Ltd."; - case"Elms": return"Elms Systems Corporation"; - case"ELSE": return"ELSE Ltd."; - case"ELSEC": return"Littlemore Scientific"; - case"EMASS": return"EMASS, Inc."; - case"EMC": return"EMC Corp."; - case"EMiT": return"EMiT Conception Eletronique"; - case"EMTEC": return"EMTEC Magnetics"; - case"EMULEX": return"Emulex"; - case"ENERGY-B": return"Energybeam Corporation"; - case"ENGENIO": return"Engenio Information Technologies, Inc."; - case"ENMOTUS": return"Enmotus Inc"; - case"Entacore": return"Entacore"; - case"EPOS": return"EPOS Technologies Ltd."; - case"EPSON": return"Epson"; - case"EQLOGIC": return"EqualLogic"; - case"Eris/RSI": return"RSI Systems, Inc."; - case"ETERNE": return"EterneData Technology Co.,Ltd.(China PRC.)"; - case"EuroLogc": return"Eurologic Systems Limited"; - case"evolve": return"Evolution Technologies, Inc"; - case"EXABYTE": return"Exabyte Corp."; - case"EXATEL": return"Exatelecom Co., Ltd."; - case"EXAVIO": return"Exavio, Inc."; - case"Exsequi": return"Exsequi Ltd"; - case"Exxotest": return"Annecy Electronique"; - case"FAIRHAVN": return"Fairhaven Health, LLC"; - case"FALCON": return"FalconStor, Inc."; - case"FDS": return"Formation Data Systems"; - case"FFEILTD": return"FujiFilm Electonic Imaging Ltd"; - case"Fibxn": return"Fiberxon, Inc."; - case"FID": return"First International Digital, Inc."; - case"FILENET": return"FileNet Corp."; - case"FirmFact": return"Firmware Factory Ltd"; - case"FLYFISH": return"Flyfish Technologies"; - case"FOXCONN": return"Foxconn Technology Group"; - case"FRAMDRV": return"FRAMEDRIVE Corp."; - case"FREECION": return"Nable Communications, Inc."; - case"FRESHDTK": return"FreshDetect GmbH"; - case"FSC": return"Fujitsu Siemens Computers"; - case"FTPL": return"Frontline Technologies Pte Ltd"; - case"FUJI": return"Fuji Electric Co., Ltd. (Japan)"; - case"FUJIFILM": return"Fuji Photo Film, Co., Ltd."; - case"FUJITSU": return"Fujitsu"; - case"FUNAI": return"Funai Electric Co., Ltd."; - case"FUSIONIO": return"Fusion-io Inc."; - case"FUTURED": return"Future Domain Corp."; - case"G&D": return"Giesecke & Devrient GmbH"; - case"G.TRONIC": return"Globaltronic - Electronica e Telecomunicacoes, S.A."; - case"Gadzoox": return"Gadzoox Networks, Inc."; - case"Gammaflx": return"Gammaflux L.P."; - case"GDI": return"Generic Distribution International"; - case"GEMALTO": return"gemalto"; - case"Gen_Dyn": return"General Dynamics"; - case"Generic": return"Generic Technology Co., Ltd."; - case"GENSIG": return"General Signal Networks"; - case"GEO": return"Green Energy Options Ltd"; - case"GIGATAPE": return"GIGATAPE GmbH"; - case"GIGATRND": return"GigaTrend Incorporated"; - case"Global": return"Global Memory Test Consortium"; - case"Gnutek": return"Gnutek Ltd."; - case"Goidelic": return"Goidelic Precision, Inc."; - case"GoldKey": return"GoldKey Security Corporation"; - case"GoldStar": return"LG Electronics Inc."; - case"GOOGLE": return"Google, Inc."; - case"GORDIUS": return"Gordius"; - case"GOULD": return"Gould"; - case"HAGIWARA": return"Hagiwara Sys-Com Co., Ltd."; - case"HAPP3": return"Inventec Multimedia and Telecom co., ltd"; - case"HDS": return"Horizon Data Systems, Inc."; - case"Helldyne": return"Helldyne, Inc"; - case"Heydays": return"Mazo Technology Co., Ltd."; - case"HGST": return"HGST a Western Digital Company"; - case"HI-TECH": return"HI-TECH Software Pty. Ltd."; - case"HITACHI": return"Hitachi America Ltd or Nissei Sangyo America Ltd"; - case"HL-DT-ST": return"Hitachi-LG Data Storage, Inc."; - case"HONEYWEL": return"Honeywell Inc."; - case"Hoptroff": return"HexWax Ltd"; - case"HORIZONT": return"Horizontigo Software"; - case"HP": return"Hewlett Packard"; - case"HPE": return"Hewlett Packard Enterprise"; - case"HPI": return"HP Inc."; - case"HPQ": return"Hewlett Packard"; - case"HUALU": return"CHINA HUALU GROUP CO., LTD"; - case"HUASY": return"Huawei Symantec Technologies Co., Ltd."; - case"HYLINX": return"Hylinx Ltd."; - case"HYUNWON": return"HYUNWON inc"; - case"i-cubed": return"i-cubed ltd."; - case"IBM": return"International Business Machines"; - case"Icefield": return"Icefield Tools Corporation"; - case"Iceweb": return"Iceweb Storage Corp"; - case"ICL": return"ICL"; - case"ICP": return"ICP vortex Computersysteme GmbH"; - case"IDE": return"International Data Engineering, Inc."; - case"IDG": return"Interface Design Group"; - case"IET": return"ISCSI ENTERPRISE TARGET"; - case"IFT": return"Infortrend Technology, Inc."; - case"IGR": return"Intergraph Corp."; - case"IMAGINE": return"Imagine Communications Corp."; - case"IMAGO": return"IMAGO SOFTWARE SL"; - case"IMATION": return"Imation"; - case"IMPLTD": return"Integrated Micro Products Ltd."; - case"IMPRIMIS": return"Imprimis Technology Inc."; - case"INCIPNT": return"Incipient Technologies Inc."; - case"INCITS": return"InterNational Committee for Information Technology"; - case"INDCOMP": return"Industrial Computing Limited"; - case"Indigita": return"Indigita Corporation"; - case"INFOCORE": return"InfoCore"; - case"INITIO": return"Initio Corporation"; - case"INRANGE": return"INRANGE Technologies Corporation"; - case"Insight": return"L-3 Insight Technology Inc"; - case"INSITE": return"Insite Peripherals"; - case"integrix": return"Integrix, Inc."; - case"INTEL": return"Intel Corporation"; - case"Intransa": return"Intransa, Inc."; - case"IOC": return"I/O Concepts, Inc."; - case"iofy": return"iofy Corporation"; - case"IOMEGA": return"Iomega"; - case"IOT": return"IO Turbine, Inc."; - case"iPaper": return"intelliPaper, LLC"; - case"iqstor": return"iQstor Networks, Inc."; - case"iQue": return"iQue"; - case"ISi": return"Information Storage inc."; - case"Isilon": return"Isilon Systems, Inc."; - case"ISO": return"International Standards Organization"; - case"iStor": return"iStor Networks, Inc."; - case"ITC": return"International Tapetronics Corporation"; - case"iTwin": return"iTwin Pte Ltd"; - case"IVIVITY": return"iVivity, Inc."; - case"IVMMLTD": return"InnoVISION Multimedia Ltd."; - case"JABIL001": return"Jabil Circuit"; - case"JETWAY": return"Jetway Information Co., Ltd"; - case"JMR": return"JMR Electronics Inc."; - case"JOFEMAR": return"Jofemar"; - case"JOLLYLOG": return"Jolly Logic"; - case"JPC Inc.": return"JPC Inc."; - case"JSCSI": return"jSCSI Project"; - case"Juniper": return"Juniper Networks"; - case"JVC": return"JVC Information Products Co."; - case"KASHYA": return"Kashya, Inc."; - case"KENNEDY": return"Kennedy Company"; - case"KENWOOD": return"KENWOOD Corporation"; - case"KEWL": return"Shanghai KEWL Imp&Exp Co., Ltd."; - case"Key Tech": return"Key Technologies, Inc"; - case"KMNRIO": return"Kaminario Technologies Ltd."; - case"KODAK": return"Eastman Kodak"; - case"KONAN": return"Konan"; - case"koncepts": return"koncepts International Ltd."; - case"KONICA": return"Konica Japan"; - case"KOVE": return"KOVE"; - case"KSCOM": return"KSCOM Co. Ltd.,"; - case"KUDELSKI": return"Nagravision SA - Kudelski Group"; - case"Kyocera": return"Kyocera Corporation"; - case"Lapida": return"Gonmalo Electronics"; - case"LAPINE": return"Lapine Technology"; - case"LASERDRV": return"LaserDrive Limited"; - case"LASERGR": return"Lasergraphics, Inc."; - case"LeapFrog": return"LeapFrog Enterprises, Inc."; - case"LEFTHAND": return"LeftHand Networks"; - case"Leica": return"Leica Camera AG"; - case"Lexar": return"Lexar Media, Inc."; - case"LEYIO": return"LEYIO"; - case"LG": return"LG Electronics Inc."; - case"LGE": return"LG Electronics Inc."; - case"LIBNOVA": return"LIBNOVA, SL Digital Preservation Systems"; - case"LION": return"Lion Optics Corporation"; - case"LMS": return"Laser Magnetic Storage International Company"; - case"LoupTech": return"Loup Technologies, Inc."; - case"LSI": return"LSI Corp. (was LSI Logic Corp.)"; - case"LSILOGIC": return"LSI Logic Storage Systems, Inc."; - case"LTO-CVE": return"Linear Tape - Open, Compliance Verification Entity"; - case"LUXPRO": return"Luxpro Corporation"; - case"MacroSAN": return"MacroSAN Technologies Co., Ltd."; - case"Malakite": return"Malachite Technologies (New VID is: Sandial)"; - case"MarcBoon": return"marcboon.com"; - case"Marner": return"Marner Storage Technologies, Inc."; - case"MARVELL": return"Marvell Semiconductor, Inc."; - case"Matrix": return"Matrix Orbital Corp."; - case"MATSHITA": return"Matsushita"; - case"MAXELL": return"Hitachi Maxell, Ltd."; - case"MAXIM-IC": return"Maxim Integrated Products"; - case"MaxOptix": return"Maxoptix Corp."; - case"MAXSTRAT": return"Maximum Strategy, Inc."; - case"MAXTOR": return"Maxtor Corp."; - case"MaXXan": return"MaXXan Systems, Inc."; - case"MAYCOM": return"maycom Co., Ltd."; - case"MBEAT": return"K-WON C&C Co.,Ltd"; - case"MCC": return"Measurement Computing Corporation"; - case"McDATA": return"McDATA Corporation"; - case"MCUBE": return"Mcube Technology Co., Ltd."; - case"MDI": return"Micro Design International, Inc."; - case"MEADE": return"Meade Instruments Corporation"; - case"mediamat": return"mediamatic"; - case"MegaElec": return"Mega Electronics Ltd"; - case"MEII": return"Mountain Engineering II, Inc."; - case"MELA": return"Mitsubishi Electronics America"; - case"MELCO": return"Mitsubishi Electric (Japan)"; - case"mellanox": return"Mellanox Technologies Ltd."; - case"MEMOREX": return"Memorex Telex Japan Ltd."; - case"MEMREL": return"Memrel Corporation"; - case"MEMTECH": return"MemTech Technology"; - case"Mendocin": return"Mendocino Software"; - case"MendoCno": return"Mendocino Software"; - case"MERIDATA": return"Oy Meridata Finland Ltd"; - case"METHODEI": return"Methode Electronics India pvt ltd"; - case"METRUM": return"Metrum, Inc."; - case"MHTL": return"Matsunichi Hi-Tech Limited"; - case"MICROBTX": return"Microbotics Inc."; - case"Microchp": return"Microchip Technology, Inc."; - case"MICROLIT": return"Microlite Corporation"; - case"MICRON": return"Micron Technology, Inc."; - case"MICROP": return"Micropolis"; - case"MICROTEK": return"Microtek Storage Corp"; - case"Minitech": return"Minitech (UK) Limited"; - case"Minolta": return"Minolta Corporation"; - case"MINSCRIB": return"Miniscribe"; - case"MiraLink": return"MiraLink Corporation"; - case"Mirifica": return"Mirifica s.r.l."; - case"MITSUMI": return"Mitsumi Electric Co., Ltd."; - case"MKM": return"Mitsubishi Kagaku Media Co., LTD."; - case"Mobii": return"Mobii Systems (Pty.) Ltd."; - case"MOL": return"Petrosoft Sdn. Bhd."; - case"MOSAID": return"Mosaid Technologies Inc."; - case"MOTOROLA": return"Motorola"; - case"MP-400": return"Daiwa Manufacturing Limited"; - case"MPC": return"MPC Corporation"; - case"MPCCORP": return"MPC Computers"; - case"MPEYE": return"Touchstone Technology Co., Ltd"; - case"MPIO": return"DKT Co.,Ltd"; - case"MPM": return"Mitsubishi Paper Mills, Ltd."; - case"MPMan": return"MPMan.com, Inc."; - case"MSFT": return"Microsoft Corporation"; - case"MSI": return"Micro-Star International Corp."; - case"MST": return"Morning Star Technologies, Inc."; - case"MSystems": return"M-Systems Flash Disk Pioneers"; - case"MTI": return"MTI Technology Corporation"; - case"MTNGATE": return"MountainGate Data Systems"; - case"MXI": return"Memory Experts International"; - case"nac": return"nac Image Technology Inc."; - case"NAGRA": return"Nagravision SA - Kudelski Group"; - case"NAI": return"North Atlantic Industries"; - case"NAKAMICH": return"Nakamichi Corporation"; - case"NatInst": return"National Instruments"; - case"NatSemi": return"National Semiconductor Corp."; - case"NCITS": return"InterNational Committee for Information Technology Standards (INCITS)"; - case"NCL": return"NCL America"; - case"NCR": return"NCR Corporation"; - case"NDBTECH": return"NDB Technologie Inc."; - case"Neartek": return"Neartek, Inc."; - case"NEC": return"NEC"; - case"NETAPP": return"NetApp, Inc. (was Network Appliance)"; - case"NetBSD": return"The NetBSD Foundation"; - case"Netcom": return"Netcom Storage"; - case"NETENGIN": return"NetEngine, Inc."; - case"NEWISYS": return"Newisys Data Storage"; - case"Newtech": return"Newtech Co., Ltd."; - case"NEXSAN": return"Nexsan Technologies, Ltd."; - case"NFINIDAT": return"Infinidat Ltd."; - case"NHR": return"NH Research, Inc."; - case"Nike": return"Nike, Inc."; - case"Nimble": return"Nimble Storage"; - case"NISCA": return"NISCA Inc."; - case"NISHAN": return"Nishan Systems Inc."; - case"Nitz": return"Nitz Associates, Inc."; - case"NKK": return"NKK Corp."; - case"NRC": return"Nakamichi Research Corporation"; - case"NSD": return"Nippon Systems Development Co.,Ltd."; - case"NSM": return"NSM Jukebox GmbH"; - case"nStor": return"nStor Technologies, Inc."; - case"NT": return"Northern Telecom"; - case"NUCONNEX": return"NuConnex"; - case"NUSPEED": return"NuSpeed, Inc."; - case"NVIDIA": return"NVIDIA Corporation"; - case"NVMe": return"NVM Express Working Group"; - case"OAI": return"Optical Access International"; - case"OCE": return"Oce Graphics"; - case"ODS": return"ShenZhen DCS Group Co.,Ltd"; - case"OHDEN": return"Ohden Co., Ltd."; - case"OKI": return"OKI Electric Industry Co.,Ltd (Japan)"; - case"Olidata": return"Olidata S.p.A."; - case"OMI": return"Optical Media International"; - case"OMNIFI": return"Rockford Corporation - Omnifi Media"; - case"OMNIS": return"OMNIS Company (FRANCE)"; - case"Ophidian": return"Ophidian Designs"; - case"opslag": return"Tyrone Systems"; - case"Optelec": return"Optelec BV"; - case"Optiarc": return"Sony Optiarc Inc."; - case"OPTIMEM": return"Cipher/Optimem"; - case"OPTOTECH": return"Optotech"; - case"ORACLE": return"Oracle Corporation"; - case"ORANGE": return"Orange Micro, Inc."; - case"ORCA": return"Orca Technology"; - case"Origin": return"Origin Energy"; - case"OSI": return"Optical Storage International"; - case"OSNEXUS": return"OS NEXUS, Inc."; - case"OTL": return"OTL Engineering"; - case"OVERLAND": return"Overland Storage Inc."; - case"pacdigit": return"Pacific Digital Corp"; - case"Packard": return"Parkard Bell"; - case"Panasas": return"Panasas, Inc."; - case"PARALAN": return"Paralan Corporation"; - case"PASCOsci": return"Pasco Scientific"; - case"PATHLGHT": return"Pathlight Technology, Inc."; - case"PCS": return"Pro Charging Systems, LLC"; - case"PerStor": return"Perstor"; - case"PERTEC": return"Pertec Peripherals Corporation"; - case"PFTI": return"Performance Technology Inc."; - case"PFU": return"PFU Limited"; - case"Phigment": return"Phigment Technologies"; - case"PHILIPS": return"Philips Electronics"; - case"PICO": return"Packard Instrument Company"; - case"PIK": return"TECHNILIENT & MCS"; - case"Pillar": return"Pillar Data Systems"; - case"PIONEER": return"Pioneer Electronic Corp."; - case"Pirus": return"Pirus Networks"; - case"PIVOT3": return"Pivot3, Inc."; - case"PLASMON": return"Plasmon Data"; - case"Pliant": return"Pliant Technology, Inc."; - case"PMCSIERA": return"PMC-Sierra"; - case"PME": return"Precision Measurement Engineering"; - case"PNNMed": return"PNN Medical SA"; - case"POKEN": return"Poken SA"; - case"POLYTRON": return"PT. HARTONO ISTANA TEKNOLOGI"; - case"PRAIRIE": return"PrairieTek"; - case"PREPRESS": return"PrePRESS Solutions"; - case"PRESOFT": return"PreSoft Architects"; - case"PRESTON": return"Preston Scientific"; - case"PRIAM": return"Priam"; - case"PRIMAGFX": return"Primagraphics Ltd"; - case"PRIMOS": return"Primos"; - case"PROCOM": return"Procom Technology"; - case"PROLIFIC": return"Prolific Technology Inc."; - case"PROMISE": return"PROMISE TECHNOLOGY, Inc"; - case"PROSTOR": return"ProStor Systems, Inc."; - case"PROSUM": return"PROSUM"; - case"PROWARE": return"Proware Technology Corp."; - case"PTI": return"Peripheral Technology Inc."; - case"PTICO": return"Pacific Technology International"; - case"PURE": return"PURE Storage"; - case"Qi-Hardw": return"Qi Hardware"; - case"QIC": return"Quarter-Inch Cartridge Drive Standards, Inc."; - case"QLogic": return"QLogic Corporation"; - case"QNAP": return"QNAP Systems"; - case"Qsan": return"QSAN Technology, Inc."; - case"QUALSTAR": return"Qualstar"; - case"QUANTEL": return"Quantel Ltd."; - case"QUANTUM": return"Quantum Corp."; - case"QUIX": return"Quix Computerware AG"; - case"R-BYTE": return"R-Byte, Inc."; - case"RACALREC": return"Racal Recorders"; - case"RADITEC": return"Radikal Technologies Deutschland GmbH"; - case"RADSTONE": return"Radstone Technology"; - case"RAIDINC": return"RAID Inc."; - case"RASSYS": return"Rasilient Systems Inc."; - case"RASVIA": return"Rasvia Systems, Inc."; - case"rave-mp": return"Go Video"; - case"RDKMSTG": return"MMS Dipl. Ing. Rolf-Dieter Klein"; - case"RDStor": return"Rorke China"; - case"Readboy": return"Readboy Ltd Co."; - case"Realm": return"Realm Systems"; - case"realtek": return"Realtek Semiconductor Corp."; - case"REDUXIO": return"Reduxio Systems Ltd."; - case"rehanltd": return"Rehan Electronics Ltd"; - case"REKA": return"REKA HEALTH PTE LTD"; - case"RELDATA": return"RELDATA Inc"; - case"RENAGmbH": return"RENA GmbH"; - case"ReThinkM": return"RETHINK MEDICAL, INC"; - case"Revivio": return"Revivio, Inc."; - case"RGBLaser": return"RGB Lasersysteme GmbH"; - case"RGI": return"Raster Graphics, Inc."; - case"RHAPSODY": return"Rhapsody Networks, Inc."; - case"RHS": return"Racal-Heim Systems GmbH"; - case"RICOH": return"Ricoh"; - case"RODIME": return"Rodime"; - case"Rorke": return"RD DATA Technology (ShenZhen) Limited"; - case"Royaltek": return"RoyalTek company Ltd."; - case"RPS": return"RPS"; - case"RTI": return"Reference Technology"; - case"S-D": return"Sauer-Danfoss"; - case"S-flex": return"Storageflex Inc"; - case"S-SYSTEM": return"S-SYSTEM"; - case"S1": return"storONE"; - case"SAMSUNG": return"Samsung Electronics Co., Ltd."; - case"SAN": return"Storage Area Networks, Ltd."; - case"Sandial": return"Sandial Systems, Inc."; - case"SanDisk": return"SanDisk Corporation"; - case"SANKYO": return"Sankyo Seiki"; - case"SANRAD": return"SANRAD Inc."; - case"SANYO": return"SANYO Electric Co., Ltd."; - case"SC.Net": return"StorageConnections.Net"; - case"SCALE": return"Scale Computing, Inc."; - case"SCIENTEK": return"SCIENTEK CORP"; - case"SCInc.": return"Storage Concepts, Inc."; - case"SCREEN": return"Dainippon Screen Mfg. Co., Ltd."; - case"SDI": return"Storage Dimensions, Inc."; - case"SDS": return"Solid Data Systems"; - case"SEAC": return"SeaChange International, Inc."; - case"SEAGATE": return"Seagate"; - case"SEAGRAND": return"SEAGRAND In Japan"; - case"Seanodes": return"Seanodes"; - case"Sec. Key": return"SecureKey Technologies Inc."; - case"SEQUOIA": return"Sequoia Advanced Technologies, Inc."; - case"SGI": return"Silicon Graphics International"; - case"Shannon": return"Shannon Systems Co., Ltd."; - case"Shinko": return"Shinko Electric Co., Ltd."; - case"SIEMENS": return"Siemens"; - case"SigmaTel": return"SigmaTel, Inc."; - case"SII": return"Seiko Instruments Inc."; - case"SIMPLE": return"SimpleTech, Inc."; - case"SIVMSD": return"IMAGO SOFTWARE SL"; - case"SKhynix": return"SK hynix Inc."; - case"SLCNSTOR": return"SiliconStor, Inc."; - case"SLI": return"Sierra Logic, Inc."; - case"SMCI": return"Super Micro Computer, Inc."; - case"SmrtStor": return"Smart Storage Systems"; - case"SMS": return"Scientific Micro Systems/OMTI"; - case"SMSC": return"SMSC Storage, Inc."; - case"SMX": return"Smartronix, Inc."; - case"SNYSIDE": return"Sunnyside Computing Inc."; - case"SoftLock": return"Softlock Digital Security Provider"; - case"SolidFir": return"SolidFire, Inc."; - case"SONIC": return"Sonic Solutions"; - case"SoniqCas": return"SoniqCast"; - case"SONY": return"Sony Corporation Japan"; - case"SOUL": return"Soul Storage Technology (Wuxi) Co., Ltd"; - case"SPD": return"Storage Products Distribution, Inc."; - case"SPECIAL": return"Special Computing Co."; - case"SPECTRA": return"Spectra Logic, a Division of Western Automation Labs, Inc."; - case"SPERRY": return"Sperry"; - case"Spintso": return"Spintso International AB"; - case"STARBORD": return"Starboard Storage Systems, Inc."; - case"STARWIND": return"StarWind Software, Inc."; - case"STEC": return"STEC, Inc."; - case"Sterling": return"Sterling Diagnostic Imaging, Inc."; - case"STK": return"Storage Technology Corporation"; - case"STNWOOD": return"Stonewood Group"; - case"STONEFLY": return"StoneFly Networks, Inc."; - case"STOR": return"StorageNetworks, Inc."; - case"STORAPP": return"StorageApps, Inc."; - case"STORCIUM": return"Intelligent Systems Services Inc."; - case"STORCOMP": return"Storage Computer Corporation"; - case"STORM": return"Storm Technology, Inc."; - case"StorMagc": return"StorMagic"; - case"Stratus": return"Stratus Technologies"; - case"StrmLgc": return"StreamLogic Corp."; - case"SUMITOMO": return"Sumitomo Electric Industries, Ltd."; - case"SUN": return"Sun Microsystems, Inc."; - case"SUNCORP": return"SunCorporation"; - case"suntx": return"Suntx System Co., Ltd"; - case"SUSE": return"SUSE Linux"; - case"Swinxs": return"Swinxs BV"; - case"SYMANTEC": return"Symantec Corporation"; - case"SYMBIOS": return"Symbios Logic Inc."; - case"SYMWAVE": return"Symwave, Inc."; - case"SYNCSORT": return"Syncsort Incorporated"; - case"SYNERWAY": return"Synerway"; - case"SYNOLOGY": return"Synology, Inc."; - case"SyQuest": return"SyQuest Technology, Inc."; - case"SYSGEN": return"Sysgen"; - case"T-MITTON": return"Transmitton England"; - case"T-MOBILE": return"T-Mobile USA, Inc."; - case"T11": return"INCITS Technical Committee T11"; - case"TALARIS": return"Talaris Systems, Inc."; - case"TALLGRAS": return"Tallgrass Technologies"; - case"TANDBERG": return"Tandberg Data A/S"; - case"TANDEM": return"Tandem"; - case"TANDON": return"Tandon"; - case"TCL": return"TCL Shenzhen ASIC MIcro-electronics Ltd"; - case"TDK": return"TDK Corporation"; - case"TEAC": return"TEAC Japan"; - case"TECOLOTE": return"Tecolote Designs"; - case"TEGRA": return"Tegra Varityper"; - case"Teilch": return"Teilch"; - case"Tek": return"Tektronix"; - case"TELLERT": return"Tellert Elektronik GmbH"; - case"TENTIME": return"Laura Technologies, Inc."; - case"TFDATACO": return"TimeForge"; - case"TGEGROUP": return"TGE Group Co.,LTD."; - case"Thecus": return"Thecus Technology Corp."; - case"TI-DSG": return"Texas Instruments"; - case"TiGi": return"TiGi Corporation"; - case"TILDESGN": return"Tildesign bv"; - case"Tite": return"Tite Technology Limited"; - case"TKS Inc.": return"TimeKeeping Systems, Inc."; - case"TLMKS": return"Telemakus LLC"; - case"TMS": return"Texas Memory Systems, Inc."; - case"TMS100": return"TechnoVas"; - case"TOLISGRP": return"The TOLIS Group"; - case"TOSHIBA": return"Toshiba Japan"; - case"TOYOU": return"TOYOU FEIJI ELECTRONICS CO.,LTD."; - case"Tracker": return"Tracker, LLC"; - case"TRIOFLEX": return"Trioflex Oy"; - case"TRIPACE": return"Tripace"; - case"TRLogger": return"TrueLogger Ltd."; - case"TROIKA": return"Troika Networks, Inc."; - case"TRULY": return"TRULY Electronics MFG. LTD."; - case"TRUSTED": return"Trusted Data Corporation"; - case"TSSTcorp": return"Toshiba Samsung Storage Technology Corporation"; - case"TZM": return"TZ Medical"; - case"UD-DVR": return"Bigstone Project."; - case"UDIGITAL": return"United Digital Limited"; - case"UIT": return"United Infomation Technology"; - case"ULTRA": return"UltraStor Corporation"; - case"UNISTOR": return"Unistor Networks, Inc."; - case"UNISYS": return"Unisys"; - case"USCORE": return"Underscore, Inc."; - case"USDC": return"US Design Corp."; - case"Top VASCO": return"Vasco Data Security"; - case"VDS": return"Victor Data Systems Co., Ltd."; - case"VELDANA": return"VELDANA MEDICAL SA"; - case"VENTANA": return"Ventana Medical Systems"; - case"Verari": return"Verari Systems, Inc."; - case"VERBATIM": return"Verbatim Corporation"; - case"Vercet": return"Vercet LLC"; - case"VERITAS": return"VERITAS Software Corporation"; - case"Vexata": return"Vexata Inc"; - case"VEXCEL": return"VEXCEL IMAGING GmbH"; - case"VICOMSL1": return"Vicom Systems, Inc."; - case"VicomSys": return"Vicom Systems, Inc."; - case"VIDEXINC": return"Videx, Inc."; - case"VIOLIN": return"Violin Memory, Inc."; - case"VIRIDENT": return"Virident Systems, Inc."; - case"VITESSE": return"Vitesse Semiconductor Corporation"; - case"VIXEL": return"Vixel Corporation"; - case"VLS": return"Van Lent Systems BV"; - case"VMAX": return"VMAX Technologies Corp."; - case"VMware": return"VMware Inc."; - case"Vobis": return"Vobis Microcomputer AG"; - case"VOLTAIRE": return"Voltaire Ltd."; - case"VRC": return"Vermont Research Corp."; - case"VRugged": return"Vanguard Rugged Storage"; - case"VTGadget": return"Vermont Gadget Company"; - case"Waitec": return"Waitec NV"; - case"WangDAT": return"WangDAT"; - case"WANGTEK": return"Wangtek"; - case"Wasabi": return"Wasabi Systems"; - case"WAVECOM": return"Wavecom"; - case"WD": return"Western Digital Corporation"; - case"WDC": return"Western Digital Corporation"; - case"WDIGTL": return"Western Digital"; - case"WDTI": return"Western Digital Technologies, Inc."; - case"WEARNES": return"Wearnes Technology Corporation"; - case"WeeraRes": return"Weera Research Pte Ltd"; - case"Wildflwr": return"Wildflower Technologies, Inc."; - case"WSC0001": return"Wisecom, Inc."; - case"X3": return"InterNational Committee for Information Technology Standards (INCITS)"; - case"XEBEC": return"Xebec Corporation"; - case"XENSRC": return"XenSource, Inc."; - case"Xerox": return"Xerox Corporation"; - case"XIOtech": return"XIOtech Corporation"; - case"XIRANET": return"Xiranet Communications GmbH"; - case"XIV": return"XIV"; - case"XtremIO": return"XtremIO"; - case"XYRATEX": return"Xyratex"; - case"YINHE": return"NUDT Computer Co."; - case"YIXUN": return"Yixun Electronic Co.,Ltd."; - case"YOTTA": return"YottaYotta, Inc."; - case"Zarva": return"Zarva Digital Technology Co., Ltd."; - case"ZETTA": return"Zetta Systems, Inc."; - case"ZTE": return"ZTE Corporation"; - case"ZVAULT": return"Zetavault"; - default: return scsiVendorString; + case "0B4C": return "MOOSIK Ltd."; + case "13FE": return "PHISON"; + case "2AI": return "2AI (Automatisme et Avenir Informatique)"; + case "3M": return "3M Company"; + case "3nhtech": return "3NH Technologies"; + case "3PARdata": return "3PARdata, Inc."; + case "A-Max": return "A-Max Technology Co., Ltd"; + case "ABSOLUTE": return "Absolute Analysis"; + case "ACARD": return "ACARD Technology Corp."; + case "Accusys": return "Accusys INC."; + case "Acer": return "Acer, Inc."; + case "ACL": return "Automated Cartridge Librarys, Inc."; + case "Actifio": return "Actifio"; + case "Acuid": return "Acuid Corporation Ltd."; + case "AcuLab": return "AcuLab, Inc. (Tulsa, OK)"; + case "ADAPTEC": return "Adaptec"; + case "ADIC": return "Advanced Digital Information Corporation"; + case "ADSI": return "Adaptive Data Systems, Inc. (a Western Digital subsidiary)"; + case "ADTX": return "ADTX Co., Ltd."; + case "ADVA": return "ADVA Optical Networking AG"; + case "AEM": return "AEM Performance Electronics"; + case "AERONICS": return "Aeronics, Inc."; + case "AGFA": return "AGFA"; + case "Agilent": return "Agilent Technologies"; + case "AIC": return "Advanced Industrial Computer, Inc."; + case "AIPTEK": return "AIPTEK International Inc."; + case "Alcohol": return "Alcohol Soft"; + case "ALCOR": return "Alcor Micro, Corp."; + case "AMCC": return "Applied Micro Circuits Corporation"; + case "AMCODYNE": return "Amcodyne"; + case "Amgeon": return "Amgeon LLC"; + case "AMI": return "American Megatrends, Inc."; + case "AMPEX": return "Ampex Data Systems"; + case "Amphenol": return "Amphenol"; + case "Amtl": return "Tenlon Technology Co.,Ltd"; + case "ANAMATIC": return "Anamartic Limited (England)"; + case "Ancor": return "Ancor Communications, Inc."; + case "ANCOT": return "ANCOT Corp."; + case "ANDATACO": return "Andataco"; + case "andiamo": return "Andiamo Systems, Inc."; + case "ANOBIT": return "Anobit"; + case "ANRITSU": return "Anritsu Corporation"; + case "ANTONIO": return "Antonio Precise Products Manufactory Ltd."; + case "AoT": return "Art of Technology AG"; + case "APPLE": return "Apple Computer, Inc."; + case "ARCHIVE": return "Archive"; + case "ARDENCE": return "Ardence Inc"; + case "Areca": return "Areca Technology Corporation"; + case "Arena": return "MaxTronic International Co., Ltd."; + case "Argent": return "Argent Data Systems, Inc."; + case "ARIO": return "Ario Data Networks, Inc."; + case "ARISTOS": return "Aristos Logic Corp."; + case "ARK": return "ARK Research Corporation"; + case "ARL:UT@A": return "Applied Research Laboratories : University of Texas at Austin"; + case "ARTECON": return "Artecon Inc."; + case "Artistic": return "Artistic Licence (UK) Ltd"; + case "ARTON": return "Arton Int."; + case "ASACA": return "ASACA Corp."; + case "ASC": return "Advanced Storage Concepts, Inc."; + case "ASPEN": return "Aspen Peripherals"; + case "AST": return "AST Research"; + case "ASTEK": return "Astek Corporation"; + case "ASTK": return "Alcatel STK A/S"; + case "AStor": return "AccelStor, Inc."; + case "ASTUTE": return "Astute Networks, Inc."; + case "AT&T": return "AT&T"; + case "ATA": return "SCSI / ATA Translator Software (Organization Not Specified)"; + case "ATARI": return "Atari Corporation"; + case "ATech": return "ATech electronics"; + case "ATG CYG": return "ATG Cygnet Inc."; + case "ATL": return "Quantum|ATL Products"; + case "ATTO": return "ATTO Technology Inc."; + case "ATTRATEC": return "Attratech Ltd liab. Co"; + case "ATX": return "Alphatronix"; + case "AURASEN": return "Aurasen Limited"; + case "Avago": return "Avago Technologies"; + case "AVC": return "AVC Technology Ltd"; + case "AVIDVIDR": return "AVID Technologies, Inc."; + case "AVR": return "Advanced Vision Research"; + case "AXSTOR": return "AXSTOR"; + case "Axxana": return "Axxana Ltd."; + case "B*BRIDGE": return "Blockbridge Networks LLC"; + case "BALLARD": return "Ballard Synergy Corp."; + case "Barco": return "Barco"; + case "BAROMTEC": return "Barom Technologies Co., Ltd."; + case "Bassett": return "Bassett Electronic Systems Ltd"; + case "BC Hydro": return "BC Hydro"; + case "BDT": return "BDT AG"; + case "BECEEM": return "Beceem Communications, Inc"; + case "BENQ": return "BENQ Corporation."; + case "BERGSWD": return "Berg Software Design"; + case "BEZIER": return "Bezier Systems, Inc."; + case "BHTi": return "Breece Hill Technologies"; + case "biodata": return "Biodata Devices SL"; + case "BIOS": return "BIOS Corporation"; + case "BIR": return "Bio-Imaging Research, Inc."; + case "BiT": return "BiT Microsystems"; + case "BITMICRO": return "BiT Microsystems, Inc."; + case "Blendlgy": return "Blendology Limited"; + case "BLOOMBAS": return "Bloombase Technologies Limited"; + case "BlueArc": return "BlueArc Corporation"; + case "bluecog": return "bluecog"; + case "BME-HVT": return "Broadband Infocommunicatons and Electromagnetic Theory Department"; + case "BNCHMARK": return "Benchmark Tape Systems Corporation"; + case "Bosch": return "Robert Bosch GmbH"; + case "Botman": return "Botmanfamily Electronics"; + case "BoxHill": return "Box Hill Systems Corporation"; + case "BRDGWRKS": return "Bridgeworks Ltd."; + case "BREA": return "BREA Technologies, Inc."; + case "BREECE": return "Breece Hill LLC"; + case "BreqLabs": return "BreqLabs Inc."; + case "Broadcom": return "Broadcom Corporation"; + case "BROCADE": return "Brocade Communications Systems, Incorporated"; + case "BUFFALO": return "BUFFALO INC."; + case "BULL": return "Bull Peripherals Corp."; + case "BUSLOGIC": return "BusLogic Inc."; + case "BVIRTUAL": return "B-Virtual N.V."; + case "CACHEIO": return "CacheIO LLC"; + case "CalComp": return "CalComp, A Lockheed Company"; + case "CALCULEX": return "CALCULEX, Inc."; + case "CALIPER": return "Caliper (California Peripheral Corp.)"; + case "CAMBEX": return "Cambex Corporation"; + case "CAMEOSYS": return "Cameo Systems Inc."; + case "CANDERA": return "Candera Inc."; + case "CAPTION": return "CAPTION BANK"; + case "CAST": return "Advanced Storage Tech"; + case "CATALYST": return "Catalyst Enterprises"; + case "CCDISK": return "iSCSI Cake"; + case "CDC": return "Control Data or MPI"; + case "CDP": return "Columbia Data Products"; + case "Celsia": return "A M Bromley Limited"; + case "CenData": return "Central Data Corporation"; + case "Cereva": return "Cereva Networks Inc."; + case "CERTANCE": return "Certance"; + case "Chantil": return "Chantil Technology"; + case "CHEROKEE": return "Cherokee Data Systems"; + case "CHINON": return "Chinon"; + case "CHRISTMA": return "Christmann Informationstechnik + Medien GmbH & Co KG"; + case "CIE&YED": return "YE Data, C.Itoh Electric Corp."; + case "CIPHER": return "Cipher Data Products"; + case "Ciprico": return "Ciprico, Inc."; + case "CIRRUSL": return "Cirrus Logic Inc."; + case "CISCO": return "Cisco Systems, Inc."; + case "CLEARSKY": return "ClearSky Data, Inc."; + case "CLOVERLF": return "Cloverleaf Communications, Inc"; + case "CLS": return "Celestica"; + case "CMD": return "CMD Technology Inc."; + case "CMTechno": return "CMTech"; + case "CNGR SFW": return "Congruent Software, Inc."; + case "CNSi": return "Chaparral Network Storage, Inc."; + case "CNT": return "Computer Network Technology"; + case "COBY": return "Coby Electronics Corporation, USA"; + case "COGITO": return "Cogito"; + case "COMAY": return "Corerise Electronics"; + case "COMPAQ": return "Compaq Computer Corporation"; + case "COMPELNT": return "Compellent Technologies, Inc."; + case "COMPORT": return "Comport Corp."; + case "COMPSIG": return "Computer Signal Corporation"; + case "COMPTEX": return "Comptex Pty Limited"; + case "CONNER": return "Conner Peripherals"; + case "COPANSYS": return "COPAN SYSTEMS INC"; + case "CORAID": return "Coraid, Inc"; + case "CORE": return "Core International, Inc."; + case "CORERISE": return "Corerise Electronics"; + case "COVOTE": return "Covote GmbH & Co KG"; + case "COWON": return "COWON SYSTEMS, Inc."; + case "CPL": return "Cross Products Ltd"; + case "CPU TECH": return "CPU Technology, Inc."; + case "CREO": return "Creo Products Inc."; + case "CROSFLD": return "Crosfield Electronics"; + case "CROSSRDS": return "Crossroads Systems, Inc."; + case "crosswlk": return "Crosswalk, Inc."; + case "CSCOVRTS": return "Cisco - Veritas"; + case "CSM, INC": return "Computer SM, Inc."; + case "Cunuqui": return "CUNUQUI SLU"; + case "CYBERNET": return "Cybernetics"; + case "Cygnal": return "Dekimo"; + case "CYPRESS": return "Cypress Semiconductor Corp."; + case "D Bit": return "Digby's Bitpile, Inc. DBA D Bit"; + case "DALSEMI": return "Dallas Semiconductor"; + case "DANEELEC": return "Dane-Elec"; + case "DANGER": return "Danger Inc."; + case "DAT-MG": return "DAT Manufacturers Group"; + case "Data Com": return "Data Com Information Systems Pty. Ltd."; + case "DATABOOK": return "Databook, Inc."; + case "DATACOPY": return "Datacopy Corp."; + case "DataCore": return "DataCore Software Corporation"; + case "DataG": return "DataGravity"; + case "DATAPT": return "Datapoint Corp."; + case "DATARAM": return "Dataram Corporation"; + case "DATC": return "Datum Champion Technology Co., Ltd"; + case "DAVIS": return "Daviscomms (S) Pte Ltd"; + case "DCS": return "ShenZhen DCS Group Co.,Ltd"; + case "DDN": return "DataDirect Networks, Inc."; + case "DDRDRIVE": return "DDRdrive LLC"; + case "DE": return "Dimension Engineering LLC"; + case "DEC": return "Digital Equipment Corporation"; + case "DEI": return "Digital Engineering, Inc."; + case "DELL": return "Dell, Inc."; + case "Dell(tm)": return "Dell, Inc"; + case "DELPHI": return "Delphi Data Div. of Sparks Industries, Inc."; + case "DENON": return "Denon/Nippon Columbia"; + case "DenOptix": return "DenOptix, Inc."; + case "DEST": return "DEST Corp."; + case "DFC": return "DavioFranke.com"; + case "DFT": return "Data Fault Tolerance System CO.,LTD."; + case "DGC": return "Data General Corp."; + case "DIGIDATA": return "Digi-Data Corporation"; + case "DigiIntl": return "Digi International"; + case "Digital": return "Digital Equipment Corporation"; + case "DILOG": return "Distributed Logic Corp."; + case "DISC": return "Document Imaging Systems Corp."; + case "DiscSoft": return "Disc Soft Ltd"; + case "DLNET": return "Driveline"; + case "DNS": return "Data and Network Security"; + case "DNUK": return "Digital Networks Uk Ltd"; + case "DotHill": return "Dot Hill Systems Corp."; + case "DP": return "Dell, Inc."; + case "DPT": return "Distributed Processing Technology"; + case "Drewtech": return "Drew Technologies, Inc."; + case "DROBO": return "Data Robotics, Inc."; + case "DSC": return "DigitalStream Corporation"; + case "DSI": return "Data Spectrum, Inc."; + case "DSM": return "Deterner Steuerungs- und Maschinenbau GmbH & Co."; + case "DSNET": return "Cleversafe, Inc."; + case "DT": return "Double-Take Software, INC."; + case "DTC QUME": return "Data Technology Qume"; + case "DXIMAGIN": return "DX Imaging"; + case "E-Motion": return "E-Motion LLC"; + case "EARTHLAB": return "EarthLabs"; + case "EarthLCD": return "Earth Computer Technologies, Inc."; + case "ECCS": return "ECCS, Inc."; + case "ECMA": return "European Computer Manufacturers Association"; + case "EDS": return "Embedded Data Systems"; + case "EIM": return "InfoCore"; + case "ELE Intl": return "ELE International"; + case "ELEGANT": return "Elegant Invention, LLC"; + case "Elektron": return "Elektron Music Machines MAV AB"; + case "elipsan": return "Elipsan UK Ltd."; + case "Elms": return "Elms Systems Corporation"; + case "ELSE": return "ELSE Ltd."; + case "ELSEC": return "Littlemore Scientific"; + case "EMASS": return "EMASS, Inc."; + case "EMC": return "EMC Corp."; + case "EMiT": return "EMiT Conception Eletronique"; + case "EMTEC": return "EMTEC Magnetics"; + case "EMULEX": return "Emulex"; + case "ENERGY-B": return "Energybeam Corporation"; + case "ENGENIO": return "Engenio Information Technologies, Inc."; + case "ENMOTUS": return "Enmotus Inc"; + case "Entacore": return "Entacore"; + case "EPOS": return "EPOS Technologies Ltd."; + case "EPSON": return "Epson"; + case "EQLOGIC": return "EqualLogic"; + case "Eris/RSI": return "RSI Systems, Inc."; + case "ETERNE": return "EterneData Technology Co.,Ltd.(China PRC.)"; + case "EuroLogc": return "Eurologic Systems Limited"; + case "evolve": return "Evolution Technologies, Inc"; + case "EXABYTE": return "Exabyte Corp."; + case "EXATEL": return "Exatelecom Co., Ltd."; + case "EXAVIO": return "Exavio, Inc."; + case "Exsequi": return "Exsequi Ltd"; + case "Exxotest": return "Annecy Electronique"; + case "FAIRHAVN": return "Fairhaven Health, LLC"; + case "FALCON": return "FalconStor, Inc."; + case "FDS": return "Formation Data Systems"; + case "FFEILTD": return "FujiFilm Electonic Imaging Ltd"; + case "Fibxn": return "Fiberxon, Inc."; + case "FID": return "First International Digital, Inc."; + case "FILENET": return "FileNet Corp."; + case "FirmFact": return "Firmware Factory Ltd"; + case "FLYFISH": return "Flyfish Technologies"; + case "FOXCONN": return "Foxconn Technology Group"; + case "FRAMDRV": return "FRAMEDRIVE Corp."; + case "FREECION": return "Nable Communications, Inc."; + case "FRESHDTK": return "FreshDetect GmbH"; + case "FSC": return "Fujitsu Siemens Computers"; + case "FTPL": return "Frontline Technologies Pte Ltd"; + case "FUJI": return "Fuji Electric Co., Ltd. (Japan)"; + case "FUJIFILM": return "Fuji Photo Film, Co., Ltd."; + case "FUJITSU": return "Fujitsu"; + case "FUNAI": return "Funai Electric Co., Ltd."; + case "FUSIONIO": return "Fusion-io Inc."; + case "FUTURED": return "Future Domain Corp."; + case "G&D": return "Giesecke & Devrient GmbH"; + case "G.TRONIC": return "Globaltronic - Electronica e Telecomunicacoes, S.A."; + case "Gadzoox": return "Gadzoox Networks, Inc."; + case "Gammaflx": return "Gammaflux L.P."; + case "GDI": return "Generic Distribution International"; + case "GEMALTO": return "gemalto"; + case "Gen_Dyn": return "General Dynamics"; + case "Generic": return "Generic Technology Co., Ltd."; + case "GENSIG": return "General Signal Networks"; + case "GEO": return "Green Energy Options Ltd"; + case "GIGATAPE": return "GIGATAPE GmbH"; + case "GIGATRND": return "GigaTrend Incorporated"; + case "Global": return "Global Memory Test Consortium"; + case "Gnutek": return "Gnutek Ltd."; + case "Goidelic": return "Goidelic Precision, Inc."; + case "GoldKey": return "GoldKey Security Corporation"; + case "GoldStar": return "LG Electronics Inc."; + case "GOOGLE": return "Google, Inc."; + case "GORDIUS": return "Gordius"; + case "GOULD": return "Gould"; + case "HAGIWARA": return "Hagiwara Sys-Com Co., Ltd."; + case "HAPP3": return "Inventec Multimedia and Telecom co., ltd"; + case "HDS": return "Horizon Data Systems, Inc."; + case "Helldyne": return "Helldyne, Inc"; + case "Heydays": return "Mazo Technology Co., Ltd."; + case "HGST": return "HGST a Western Digital Company"; + case "HI-TECH": return "HI-TECH Software Pty. Ltd."; + case "HITACHI": return "Hitachi America Ltd or Nissei Sangyo America Ltd"; + case "HL-DT-ST": return "Hitachi-LG Data Storage, Inc."; + case "HONEYWEL": return "Honeywell Inc."; + case "Hoptroff": return "HexWax Ltd"; + case "HORIZONT": return "Horizontigo Software"; + case "HP": return "Hewlett Packard"; + case "HPE": return "Hewlett Packard Enterprise"; + case "HPI": return "HP Inc."; + case "HPQ": return "Hewlett Packard"; + case "HUALU": return "CHINA HUALU GROUP CO., LTD"; + case "HUASY": return "Huawei Symantec Technologies Co., Ltd."; + case "HYLINX": return "Hylinx Ltd."; + case "HYUNWON": return "HYUNWON inc"; + case "i-cubed": return "i-cubed ltd."; + case "IBM": return "International Business Machines"; + case "Icefield": return "Icefield Tools Corporation"; + case "Iceweb": return "Iceweb Storage Corp"; + case "ICL": return "ICL"; + case "ICP": return "ICP vortex Computersysteme GmbH"; + case "IDE": return "International Data Engineering, Inc."; + case "IDG": return "Interface Design Group"; + case "IET": return "ISCSI ENTERPRISE TARGET"; + case "IFT": return "Infortrend Technology, Inc."; + case "IGR": return "Intergraph Corp."; + case "IMAGINE": return "Imagine Communications Corp."; + case "IMAGO": return "IMAGO SOFTWARE SL"; + case "IMATION": return "Imation"; + case "IMPLTD": return "Integrated Micro Products Ltd."; + case "IMPRIMIS": return "Imprimis Technology Inc."; + case "INCIPNT": return "Incipient Technologies Inc."; + case "INCITS": return "InterNational Committee for Information Technology"; + case "INDCOMP": return "Industrial Computing Limited"; + case "Indigita": return "Indigita Corporation"; + case "INFOCORE": return "InfoCore"; + case "INITIO": return "Initio Corporation"; + case "INRANGE": return "INRANGE Technologies Corporation"; + case "Insight": return "L-3 Insight Technology Inc"; + case "INSITE": return "Insite Peripherals"; + case "integrix": return "Integrix, Inc."; + case "INTEL": return "Intel Corporation"; + case "Intransa": return "Intransa, Inc."; + case "IOC": return "I/O Concepts, Inc."; + case "iofy": return "iofy Corporation"; + case "IOMEGA": return "Iomega"; + case "IOT": return "IO Turbine, Inc."; + case "iPaper": return "intelliPaper, LLC"; + case "iqstor": return "iQstor Networks, Inc."; + case "iQue": return "iQue"; + case "ISi": return "Information Storage inc."; + case "Isilon": return "Isilon Systems, Inc."; + case "ISO": return "International Standards Organization"; + case "iStor": return "iStor Networks, Inc."; + case "ITC": return "International Tapetronics Corporation"; + case "iTwin": return "iTwin Pte Ltd"; + case "IVIVITY": return "iVivity, Inc."; + case "IVMMLTD": return "InnoVISION Multimedia Ltd."; + case "JABIL001": return "Jabil Circuit"; + case "JETWAY": return "Jetway Information Co., Ltd"; + case "JMR": return "JMR Electronics Inc."; + case "JOFEMAR": return "Jofemar"; + case "JOLLYLOG": return "Jolly Logic"; + case "JPC Inc.": return "JPC Inc."; + case "JSCSI": return "jSCSI Project"; + case "Juniper": return "Juniper Networks"; + case "JVC": return "JVC Information Products Co."; + case "KASHYA": return "Kashya, Inc."; + case "KENNEDY": return "Kennedy Company"; + case "KENWOOD": return "KENWOOD Corporation"; + case "KEWL": return "Shanghai KEWL Imp&Exp Co., Ltd."; + case "Key Tech": return "Key Technologies, Inc"; + case "KMNRIO": return "Kaminario Technologies Ltd."; + case "KODAK": return "Eastman Kodak"; + case "KONAN": return "Konan"; + case "koncepts": return "koncepts International Ltd."; + case "KONICA": return "Konica Japan"; + case "KOVE": return "KOVE"; + case "KSCOM": return "KSCOM Co. Ltd.,"; + case "KUDELSKI": return "Nagravision SA - Kudelski Group"; + case "Kyocera": return "Kyocera Corporation"; + case "Lapida": return "Gonmalo Electronics"; + case "LAPINE": return "Lapine Technology"; + case "LASERDRV": return "LaserDrive Limited"; + case "LASERGR": return "Lasergraphics, Inc."; + case "LeapFrog": return "LeapFrog Enterprises, Inc."; + case "LEFTHAND": return "LeftHand Networks"; + case "Leica": return "Leica Camera AG"; + case "Lexar": return "Lexar Media, Inc."; + case "LEYIO": return "LEYIO"; + case "LG": return "LG Electronics Inc."; + case "LGE": return "LG Electronics Inc."; + case "LIBNOVA": return "LIBNOVA, SL Digital Preservation Systems"; + case "LION": return "Lion Optics Corporation"; + case "LMS": return "Laser Magnetic Storage International Company"; + case "LoupTech": return "Loup Technologies, Inc."; + case "LSI": return "LSI Corp. (was LSI Logic Corp.)"; + case "LSILOGIC": return "LSI Logic Storage Systems, Inc."; + case "LTO-CVE": return "Linear Tape - Open, Compliance Verification Entity"; + case "LUXPRO": return "Luxpro Corporation"; + case "MacroSAN": return "MacroSAN Technologies Co., Ltd."; + case "Malakite": return "Malachite Technologies (New VID is: Sandial)"; + case "MarcBoon": return "marcboon.com"; + case "Marner": return "Marner Storage Technologies, Inc."; + case "MARVELL": return "Marvell Semiconductor, Inc."; + case "Matrix": return "Matrix Orbital Corp."; + case "MATSHITA": return "Matsushita"; + case "MAXELL": return "Hitachi Maxell, Ltd."; + case "MAXIM-IC": return "Maxim Integrated Products"; + case "MaxOptix": return "Maxoptix Corp."; + case "MAXSTRAT": return "Maximum Strategy, Inc."; + case "MAXTOR": return "Maxtor Corp."; + case "MaXXan": return "MaXXan Systems, Inc."; + case "MAYCOM": return "maycom Co., Ltd."; + case "MBEAT": return "K-WON C&C Co.,Ltd"; + case "MCC": return "Measurement Computing Corporation"; + case "McDATA": return "McDATA Corporation"; + case "MCUBE": return "Mcube Technology Co., Ltd."; + case "MDI": return "Micro Design International, Inc."; + case "MEADE": return "Meade Instruments Corporation"; + case "mediamat": return "mediamatic"; + case "MegaElec": return "Mega Electronics Ltd"; + case "MEII": return "Mountain Engineering II, Inc."; + case "MELA": return "Mitsubishi Electronics America"; + case "MELCO": return "Mitsubishi Electric (Japan)"; + case "mellanox": return "Mellanox Technologies Ltd."; + case "MEMOREX": return "Memorex Telex Japan Ltd."; + case "MEMREL": return "Memrel Corporation"; + case "MEMTECH": return "MemTech Technology"; + case "Mendocin": return "Mendocino Software"; + case "MendoCno": return "Mendocino Software"; + case "MERIDATA": return "Oy Meridata Finland Ltd"; + case "METHODEI": return "Methode Electronics India pvt ltd"; + case "METRUM": return "Metrum, Inc."; + case "MHTL": return "Matsunichi Hi-Tech Limited"; + case "MICROBTX": return "Microbotics Inc."; + case "Microchp": return "Microchip Technology, Inc."; + case "MICROLIT": return "Microlite Corporation"; + case "MICRON": return "Micron Technology, Inc."; + case "MICROP": return "Micropolis"; + case "MICROTEK": return "Microtek Storage Corp"; + case "Minitech": return "Minitech (UK) Limited"; + case "Minolta": return "Minolta Corporation"; + case "MINSCRIB": return "Miniscribe"; + case "MiraLink": return "MiraLink Corporation"; + case "Mirifica": return "Mirifica s.r.l."; + case "MITSUMI": return "Mitsumi Electric Co., Ltd."; + case "MKM": return "Mitsubishi Kagaku Media Co., LTD."; + case "Mobii": return "Mobii Systems (Pty.) Ltd."; + case "MOL": return "Petrosoft Sdn. Bhd."; + case "MOSAID": return "Mosaid Technologies Inc."; + case "MOTOROLA": return "Motorola"; + case "MP-400": return "Daiwa Manufacturing Limited"; + case "MPC": return "MPC Corporation"; + case "MPCCORP": return "MPC Computers"; + case "MPEYE": return "Touchstone Technology Co., Ltd"; + case "MPIO": return "DKT Co.,Ltd"; + case "MPM": return "Mitsubishi Paper Mills, Ltd."; + case "MPMan": return "MPMan.com, Inc."; + case "MSFT": return "Microsoft Corporation"; + case "MSI": return "Micro-Star International Corp."; + case "MST": return "Morning Star Technologies, Inc."; + case "MSystems": return "M-Systems Flash Disk Pioneers"; + case "MTI": return "MTI Technology Corporation"; + case "MTNGATE": return "MountainGate Data Systems"; + case "MXI": return "Memory Experts International"; + case "nac": return "nac Image Technology Inc."; + case "NAGRA": return "Nagravision SA - Kudelski Group"; + case "NAI": return "North Atlantic Industries"; + case "NAKAMICH": return "Nakamichi Corporation"; + case "NatInst": return "National Instruments"; + case "NatSemi": return "National Semiconductor Corp."; + case "NCITS": return "InterNational Committee for Information Technology Standards (INCITS)"; + case "NCL": return "NCL America"; + case "NCR": return "NCR Corporation"; + case "NDBTECH": return "NDB Technologie Inc."; + case "Neartek": return "Neartek, Inc."; + case "NEC": return "NEC"; + case "NETAPP": return "NetApp, Inc. (was Network Appliance)"; + case "NetBSD": return "The NetBSD Foundation"; + case "Netcom": return "Netcom Storage"; + case "NETENGIN": return "NetEngine, Inc."; + case "NEWISYS": return "Newisys Data Storage"; + case "Newtech": return "Newtech Co., Ltd."; + case "NEXSAN": return "Nexsan Technologies, Ltd."; + case "NFINIDAT": return "Infinidat Ltd."; + case "NHR": return "NH Research, Inc."; + case "Nike": return "Nike, Inc."; + case "Nimble": return "Nimble Storage"; + case "NISCA": return "NISCA Inc."; + case "NISHAN": return "Nishan Systems Inc."; + case "Nitz": return "Nitz Associates, Inc."; + case "NKK": return "NKK Corp."; + case "NRC": return "Nakamichi Research Corporation"; + case "NSD": return "Nippon Systems Development Co.,Ltd."; + case "NSM": return "NSM Jukebox GmbH"; + case "nStor": return "nStor Technologies, Inc."; + case "NT": return "Northern Telecom"; + case "NUCONNEX": return "NuConnex"; + case "NUSPEED": return "NuSpeed, Inc."; + case "NVIDIA": return "NVIDIA Corporation"; + case "NVMe": return "NVM Express Working Group"; + case "OAI": return "Optical Access International"; + case "OCE": return "Oce Graphics"; + case "ODS": return "ShenZhen DCS Group Co.,Ltd"; + case "OHDEN": return "Ohden Co., Ltd."; + case "OKI": return "OKI Electric Industry Co.,Ltd (Japan)"; + case "Olidata": return "Olidata S.p.A."; + case "OMI": return "Optical Media International"; + case "OMNIFI": return "Rockford Corporation - Omnifi Media"; + case "OMNIS": return "OMNIS Company (FRANCE)"; + case "Ophidian": return "Ophidian Designs"; + case "opslag": return "Tyrone Systems"; + case "Optelec": return "Optelec BV"; + case "Optiarc": return "Sony Optiarc Inc."; + case "OPTIMEM": return "Cipher/Optimem"; + case "OPTOTECH": return "Optotech"; + case "ORACLE": return "Oracle Corporation"; + case "ORANGE": return "Orange Micro, Inc."; + case "ORCA": return "Orca Technology"; + case "Origin": return "Origin Energy"; + case "OSI": return "Optical Storage International"; + case "OSNEXUS": return "OS NEXUS, Inc."; + case "OTL": return "OTL Engineering"; + case "OVERLAND": return "Overland Storage Inc."; + case "pacdigit": return "Pacific Digital Corp"; + case "Packard": return "Parkard Bell"; + case "Panasas": return "Panasas, Inc."; + case "PARALAN": return "Paralan Corporation"; + case "PASCOsci": return "Pasco Scientific"; + case "PATHLGHT": return "Pathlight Technology, Inc."; + case "PCS": return "Pro Charging Systems, LLC"; + case "PerStor": return "Perstor"; + case "PERTEC": return "Pertec Peripherals Corporation"; + case "PFTI": return "Performance Technology Inc."; + case "PFU": return "PFU Limited"; + case "Phigment": return "Phigment Technologies"; + case "PHILIPS": return "Philips Electronics"; + case "PICO": return "Packard Instrument Company"; + case "PIK": return "TECHNILIENT & MCS"; + case "Pillar": return "Pillar Data Systems"; + case "PIONEER": return "Pioneer Electronic Corp."; + case "Pirus": return "Pirus Networks"; + case "PIVOT3": return "Pivot3, Inc."; + case "PLASMON": return "Plasmon Data"; + case "Pliant": return "Pliant Technology, Inc."; + case "PMCSIERA": return "PMC-Sierra"; + case "PME": return "Precision Measurement Engineering"; + case "PNNMed": return "PNN Medical SA"; + case "POKEN": return "Poken SA"; + case "POLYTRON": return "PT. HARTONO ISTANA TEKNOLOGI"; + case "PRAIRIE": return "PrairieTek"; + case "PREPRESS": return "PrePRESS Solutions"; + case "PRESOFT": return "PreSoft Architects"; + case "PRESTON": return "Preston Scientific"; + case "PRIAM": return "Priam"; + case "PRIMAGFX": return "Primagraphics Ltd"; + case "PRIMOS": return "Primos"; + case "PROCOM": return "Procom Technology"; + case "PROLIFIC": return "Prolific Technology Inc."; + case "PROMISE": return "PROMISE TECHNOLOGY, Inc"; + case "PROSTOR": return "ProStor Systems, Inc."; + case "PROSUM": return "PROSUM"; + case "PROWARE": return "Proware Technology Corp."; + case "PTI": return "Peripheral Technology Inc."; + case "PTICO": return "Pacific Technology International"; + case "PURE": return "PURE Storage"; + case "Qi-Hardw": return "Qi Hardware"; + case "QIC": return "Quarter-Inch Cartridge Drive Standards, Inc."; + case "QLogic": return "QLogic Corporation"; + case "QNAP": return "QNAP Systems"; + case "Qsan": return "QSAN Technology, Inc."; + case "QUALSTAR": return "Qualstar"; + case "QUANTEL": return "Quantel Ltd."; + case "QUANTUM": return "Quantum Corp."; + case "QUIX": return "Quix Computerware AG"; + case "R-BYTE": return "R-Byte, Inc."; + case "RACALREC": return "Racal Recorders"; + case "RADITEC": return "Radikal Technologies Deutschland GmbH"; + case "RADSTONE": return "Radstone Technology"; + case "RAIDINC": return "RAID Inc."; + case "RASSYS": return "Rasilient Systems Inc."; + case "RASVIA": return "Rasvia Systems, Inc."; + case "rave-mp": return "Go Video"; + case "RDKMSTG": return "MMS Dipl. Ing. Rolf-Dieter Klein"; + case "RDStor": return "Rorke China"; + case "Readboy": return "Readboy Ltd Co."; + case "Realm": return "Realm Systems"; + case "realtek": return "Realtek Semiconductor Corp."; + case "REDUXIO": return "Reduxio Systems Ltd."; + case "rehanltd": return "Rehan Electronics Ltd"; + case "REKA": return "REKA HEALTH PTE LTD"; + case "RELDATA": return "RELDATA Inc"; + case "RENAGmbH": return "RENA GmbH"; + case "ReThinkM": return "RETHINK MEDICAL, INC"; + case "Revivio": return "Revivio, Inc."; + case "RGBLaser": return "RGB Lasersysteme GmbH"; + case "RGI": return "Raster Graphics, Inc."; + case "RHAPSODY": return "Rhapsody Networks, Inc."; + case "RHS": return "Racal-Heim Systems GmbH"; + case "RICOH": return "Ricoh"; + case "RODIME": return "Rodime"; + case "Rorke": return "RD DATA Technology (ShenZhen) Limited"; + case "Royaltek": return "RoyalTek company Ltd."; + case "RPS": return "RPS"; + case "RTI": return "Reference Technology"; + case "S-D": return "Sauer-Danfoss"; + case "S-flex": return "Storageflex Inc"; + case "S-SYSTEM": return "S-SYSTEM"; + case "S1": return "storONE"; + case "SAMSUNG": return "Samsung Electronics Co., Ltd."; + case "SAN": return "Storage Area Networks, Ltd."; + case "Sandial": return "Sandial Systems, Inc."; + case "SanDisk": return "SanDisk Corporation"; + case "SANKYO": return "Sankyo Seiki"; + case "SANRAD": return "SANRAD Inc."; + case "SANYO": return "SANYO Electric Co., Ltd."; + case "SC.Net": return "StorageConnections.Net"; + case "SCALE": return "Scale Computing, Inc."; + case "SCIENTEK": return "SCIENTEK CORP"; + case "SCInc.": return "Storage Concepts, Inc."; + case "SCREEN": return "Dainippon Screen Mfg. Co., Ltd."; + case "SDI": return "Storage Dimensions, Inc."; + case "SDS": return "Solid Data Systems"; + case "SEAC": return "SeaChange International, Inc."; + case "SEAGATE": return "Seagate"; + case "SEAGRAND": return "SEAGRAND In Japan"; + case "Seanodes": return "Seanodes"; + case "Sec. Key": return "SecureKey Technologies Inc."; + case "SEQUOIA": return "Sequoia Advanced Technologies, Inc."; + case "SGI": return "Silicon Graphics International"; + case "Shannon": return "Shannon Systems Co., Ltd."; + case "Shinko": return "Shinko Electric Co., Ltd."; + case "SIEMENS": return "Siemens"; + case "SigmaTel": return "SigmaTel, Inc."; + case "SII": return "Seiko Instruments Inc."; + case "SIMPLE": return "SimpleTech, Inc."; + case "SIVMSD": return "IMAGO SOFTWARE SL"; + case "SKhynix": return "SK hynix Inc."; + case "SLCNSTOR": return "SiliconStor, Inc."; + case "SLI": return "Sierra Logic, Inc."; + case "SMCI": return "Super Micro Computer, Inc."; + case "SmrtStor": return "Smart Storage Systems"; + case "SMS": return "Scientific Micro Systems/OMTI"; + case "SMSC": return "SMSC Storage, Inc."; + case "SMX": return "Smartronix, Inc."; + case "SNYSIDE": return "Sunnyside Computing Inc."; + case "SoftLock": return "Softlock Digital Security Provider"; + case "SolidFir": return "SolidFire, Inc."; + case "SONIC": return "Sonic Solutions"; + case "SoniqCas": return "SoniqCast"; + case "SONY": return "Sony Corporation Japan"; + case "SOUL": return "Soul Storage Technology (Wuxi) Co., Ltd"; + case "SPD": return "Storage Products Distribution, Inc."; + case "SPECIAL": return "Special Computing Co."; + case "SPECTRA": return "Spectra Logic, a Division of Western Automation Labs, Inc."; + case "SPERRY": return "Sperry"; + case "Spintso": return "Spintso International AB"; + case "STARBORD": return "Starboard Storage Systems, Inc."; + case "STARWIND": return "StarWind Software, Inc."; + case "STEC": return "STEC, Inc."; + case "Sterling": return "Sterling Diagnostic Imaging, Inc."; + case "STK": return "Storage Technology Corporation"; + case "STNWOOD": return "Stonewood Group"; + case "STONEFLY": return "StoneFly Networks, Inc."; + case "STOR": return "StorageNetworks, Inc."; + case "STORAPP": return "StorageApps, Inc."; + case "STORCIUM": return "Intelligent Systems Services Inc."; + case "STORCOMP": return "Storage Computer Corporation"; + case "STORM": return "Storm Technology, Inc."; + case "StorMagc": return "StorMagic"; + case "Stratus": return "Stratus Technologies"; + case "StrmLgc": return "StreamLogic Corp."; + case "SUMITOMO": return "Sumitomo Electric Industries, Ltd."; + case "SUN": return "Sun Microsystems, Inc."; + case "SUNCORP": return "SunCorporation"; + case "suntx": return "Suntx System Co., Ltd"; + case "SUSE": return "SUSE Linux"; + case "Swinxs": return "Swinxs BV"; + case "SYMANTEC": return "Symantec Corporation"; + case "SYMBIOS": return "Symbios Logic Inc."; + case "SYMWAVE": return "Symwave, Inc."; + case "SYNCSORT": return "Syncsort Incorporated"; + case "SYNERWAY": return "Synerway"; + case "SYNOLOGY": return "Synology, Inc."; + case "SyQuest": return "SyQuest Technology, Inc."; + case "SYSGEN": return "Sysgen"; + case "T-MITTON": return "Transmitton England"; + case "T-MOBILE": return "T-Mobile USA, Inc."; + case "T11": return "INCITS Technical Committee T11"; + case "TALARIS": return "Talaris Systems, Inc."; + case "TALLGRAS": return "Tallgrass Technologies"; + case "TANDBERG": return "Tandberg Data A/S"; + case "TANDEM": return "Tandem"; + case "TANDON": return "Tandon"; + case "TCL": return "TCL Shenzhen ASIC MIcro-electronics Ltd"; + case "TDK": return "TDK Corporation"; + case "TEAC": return "TEAC Japan"; + case "TECOLOTE": return "Tecolote Designs"; + case "TEGRA": return "Tegra Varityper"; + case "Teilch": return "Teilch"; + case "Tek": return "Tektronix"; + case "TELLERT": return "Tellert Elektronik GmbH"; + case "TENTIME": return "Laura Technologies, Inc."; + case "TFDATACO": return "TimeForge"; + case "TGEGROUP": return "TGE Group Co.,LTD."; + case "Thecus": return "Thecus Technology Corp."; + case "TI-DSG": return "Texas Instruments"; + case "TiGi": return "TiGi Corporation"; + case "TILDESGN": return "Tildesign bv"; + case "Tite": return "Tite Technology Limited"; + case "TKS Inc.": return "TimeKeeping Systems, Inc."; + case "TLMKS": return "Telemakus LLC"; + case "TMS": return "Texas Memory Systems, Inc."; + case "TMS100": return "TechnoVas"; + case "TOLISGRP": return "The TOLIS Group"; + case "TOSHIBA": return "Toshiba Japan"; + case "TOYOU": return "TOYOU FEIJI ELECTRONICS CO.,LTD."; + case "Tracker": return "Tracker, LLC"; + case "TRIOFLEX": return "Trioflex Oy"; + case "TRIPACE": return "Tripace"; + case "TRLogger": return "TrueLogger Ltd."; + case "TROIKA": return "Troika Networks, Inc."; + case "TRULY": return "TRULY Electronics MFG. LTD."; + case "TRUSTED": return "Trusted Data Corporation"; + case "TSSTcorp": return "Toshiba Samsung Storage Technology Corporation"; + case "TZM": return "TZ Medical"; + case "UD-DVR": return "Bigstone Project."; + case "UDIGITAL": return "United Digital Limited"; + case "UIT": return "United Infomation Technology"; + case "ULTRA": return "UltraStor Corporation"; + case "UNISTOR": return "Unistor Networks, Inc."; + case "UNISYS": return "Unisys"; + case "USCORE": return "Underscore, Inc."; + case "USDC": return "US Design Corp."; + case "Top VASCO": return "Vasco Data Security"; + case "VDS": return "Victor Data Systems Co., Ltd."; + case "VELDANA": return "VELDANA MEDICAL SA"; + case "VENTANA": return "Ventana Medical Systems"; + case "Verari": return "Verari Systems, Inc."; + case "VERBATIM": return "Verbatim Corporation"; + case "Vercet": return "Vercet LLC"; + case "VERITAS": return "VERITAS Software Corporation"; + case "Vexata": return "Vexata Inc"; + case "VEXCEL": return "VEXCEL IMAGING GmbH"; + case "VICOMSL1": return "Vicom Systems, Inc."; + case "VicomSys": return "Vicom Systems, Inc."; + case "VIDEXINC": return "Videx, Inc."; + case "VIOLIN": return "Violin Memory, Inc."; + case "VIRIDENT": return "Virident Systems, Inc."; + case "VITESSE": return "Vitesse Semiconductor Corporation"; + case "VIXEL": return "Vixel Corporation"; + case "VLS": return "Van Lent Systems BV"; + case "VMAX": return "VMAX Technologies Corp."; + case "VMware": return "VMware Inc."; + case "Vobis": return "Vobis Microcomputer AG"; + case "VOLTAIRE": return "Voltaire Ltd."; + case "VRC": return "Vermont Research Corp."; + case "VRugged": return "Vanguard Rugged Storage"; + case "VTGadget": return "Vermont Gadget Company"; + case "Waitec": return "Waitec NV"; + case "WangDAT": return "WangDAT"; + case "WANGTEK": return "Wangtek"; + case "Wasabi": return "Wasabi Systems"; + case "WAVECOM": return "Wavecom"; + case "WD": return "Western Digital Corporation"; + case "WDC": return "Western Digital Corporation"; + case "WDIGTL": return "Western Digital"; + case "WDTI": return "Western Digital Technologies, Inc."; + case "WEARNES": return "Wearnes Technology Corporation"; + case "WeeraRes": return "Weera Research Pte Ltd"; + case "Wildflwr": return "Wildflower Technologies, Inc."; + case "WSC0001": return "Wisecom, Inc."; + case "X3": return "InterNational Committee for Information Technology Standards (INCITS)"; + case "XEBEC": return "Xebec Corporation"; + case "XENSRC": return "XenSource, Inc."; + case "Xerox": return "Xerox Corporation"; + case "XIOtech": return "XIOtech Corporation"; + case "XIRANET": return "Xiranet Communications GmbH"; + case "XIV": return "XIV"; + case "XtremIO": return "XtremIO"; + case "XYRATEX": return "Xyratex"; + case "YINHE": return "NUDT Computer Co."; + case "YIXUN": return "Yixun Electronic Co.,Ltd."; + case "YOTTA": return "YottaYotta, Inc."; + case "Zarva": return "Zarva Digital Technology Co., Ltd."; + case "ZETTA": return "Zetta Systems, Inc."; + case "ZTE": return "ZTE Corporation"; + case "ZVAULT": return "Zetavault"; + default: return scsiVendorString; } } } diff --git a/SecureDigital/CSD.cs b/SecureDigital/CSD.cs index 548d3006b..eb1f3cff5 100644 --- a/SecureDigital/CSD.cs +++ b/SecureDigital/CSD.cs @@ -126,8 +126,7 @@ namespace Aaru.Decoders.SecureDigital if(csd.Structure == 0) { - csd.Size = - (ushort)(((response[6] & 0x03) << 10) + (response[7] << 2) + ((response[8] & 0xC0) >> 6)); + csd.Size = (ushort)(((response[6] & 0x03) << 10) + (response[7] << 2) + ((response[8] & 0xC0) >> 6)); csd.ReadCurrentAtVddMin = (byte)((response[8] & 0x38) >> 3); csd.ReadCurrentAtVddMax = (byte)(response[8] & 0x07); diff --git a/SecureDigital/VendorString.cs b/SecureDigital/VendorString.cs index 0ec36a159..66ea127d1 100644 --- a/SecureDigital/VendorString.cs +++ b/SecureDigital/VendorString.cs @@ -38,11 +38,11 @@ namespace Aaru.Decoders.SecureDigital { switch(sdVendorId) { - case 0x02: return"Kingston"; - case 0x03: return"Sandisk"; - case 0x27: return"CnMemory"; - case 0xAA: return"QEMU"; - default: return$"Unknown manufacturer ID 0x{sdVendorId:X2}"; + case 0x02: return "Kingston"; + case 0x03: return "Sandisk"; + case 0x27: return "CnMemory"; + case 0xAA: return "QEMU"; + default: return $"Unknown manufacturer ID 0x{sdVendorId:X2}"; } } } diff --git a/Sega/CD.cs b/Sega/CD.cs index 5cd87be28..05eb0428d 100644 --- a/Sega/CD.cs +++ b/Sega/CD.cs @@ -52,64 +52,64 @@ namespace Aaru.Decoders.Sega if(ipbin_sector.Length < 512) return null; - var ipbin = Marshal.ByteArrayToStructureLittleEndian(ipbin_sector); + IPBin ipbin = Marshal.ByteArrayToStructureLittleEndian(ipbin_sector); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.volume_name = \"{0}\"", - Encoding.ASCII.GetString(ipbin.volume_name)); + Encoding.ASCII.GetString(ipbin.volume_name)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.system_name = \"{0}\"", - Encoding.ASCII.GetString(ipbin.system_name)); + Encoding.ASCII.GetString(ipbin.system_name)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.volume_version = \"{0:X}\"", - ipbin.volume_version); + ipbin.volume_version); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.volume_type = 0x{0:X8}", - ipbin.volume_type); + ipbin.volume_type); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.system_version = 0x{0:X8}", - ipbin.system_version); + ipbin.system_version); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.ip_address = 0x{0:X8}", ipbin.ip_address); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.ip_loadsize = {0}", ipbin.ip_loadsize); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.ip_entry_address = 0x{0:X8}", - ipbin.ip_entry_address); + ipbin.ip_entry_address); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.ip_work_ram_size = {0}", - ipbin.ip_work_ram_size); + ipbin.ip_work_ram_size); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.sp_address = 0x{0:X8}", ipbin.sp_address); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.sp_loadsize = {0}", ipbin.sp_loadsize); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.sp_entry_address = 0x{0:X8}", - ipbin.sp_entry_address); + ipbin.sp_entry_address); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.sp_work_ram_size = {0}", - ipbin.sp_work_ram_size); + ipbin.sp_work_ram_size); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.release_date = \"{0}\"", - Encoding.ASCII.GetString(ipbin.release_date)); + Encoding.ASCII.GetString(ipbin.release_date)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.release_date2 = \"{0}\"", - Encoding.ASCII.GetString(ipbin.release_date2)); + Encoding.ASCII.GetString(ipbin.release_date2)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.developer_code = \"{0}\"", - Encoding.ASCII.GetString(ipbin.developer_code)); + Encoding.ASCII.GetString(ipbin.developer_code)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.domestic_title = \"{0}\"", - Encoding.ASCII.GetString(ipbin.domestic_title)); + Encoding.ASCII.GetString(ipbin.domestic_title)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.overseas_title = \"{0}\"", - Encoding.ASCII.GetString(ipbin.overseas_title)); + Encoding.ASCII.GetString(ipbin.overseas_title)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.product_code = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_code)); + Encoding.ASCII.GetString(ipbin.product_code)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.peripherals = \"{0}\"", - Encoding.ASCII.GetString(ipbin.peripherals)); + Encoding.ASCII.GetString(ipbin.peripherals)); AaruConsole.DebugWriteLine("SegaCD IP.BIN Decoder", "segacd_ipbin.region_codes = \"{0}\"", - Encoding.ASCII.GetString(ipbin.region_codes)); + Encoding.ASCII.GetString(ipbin.region_codes)); string id = Encoding.ASCII.GetString(ipbin.SegaHardwareID); @@ -213,51 +213,51 @@ namespace Aaru.Decoders.Sega foreach(byte peripheral in ipbin.peripherals) switch((char)peripheral) { - case'A': + case 'A': IPBinInformation.AppendLine("Game supports analog controller."); break; - case'B': + case 'B': IPBinInformation.AppendLine("Game supports trackball."); break; - case'G': + case 'G': IPBinInformation.AppendLine("Game supports light gun."); break; - case'J': + case 'J': IPBinInformation.AppendLine("Game supports JoyPad."); break; - case'K': + case 'K': IPBinInformation.AppendLine("Game supports keyboard."); break; - case'M': + case 'M': IPBinInformation.AppendLine("Game supports mouse."); break; - case'O': + case 'O': IPBinInformation.AppendLine("Game supports Master System's JoyPad."); break; - case'P': + case 'P': IPBinInformation.AppendLine("Game supports printer interface."); break; - case'R': + case 'R': IPBinInformation.AppendLine("Game supports serial (RS-232C) interface."); break; - case'T': + case 'T': IPBinInformation.AppendLine("Game supports tablet interface."); break; - case'V': + case 'V': IPBinInformation.AppendLine("Game supports paddle controller."); break; - case' ': break; + case ' ': break; default: IPBinInformation.AppendFormat("Game supports unknown peripheral {0}.", peripheral).AppendLine(); @@ -269,19 +269,19 @@ namespace Aaru.Decoders.Sega foreach(byte region in ipbin.region_codes) switch((char)region) { - case'J': + case 'J': IPBinInformation.AppendLine("Japanese NTSC."); break; - case'U': + case 'U': IPBinInformation.AppendLine("USA NTSC."); break; - case'E': + case 'E': IPBinInformation.AppendLine("Europe PAL."); break; - case' ': break; + case ' ': break; default: IPBinInformation.AppendFormat("Game supports unknown region {0}.", region).AppendLine(); diff --git a/Sega/Dreamcast.cs b/Sega/Dreamcast.cs index 642e430cb..5f849c4ec 100644 --- a/Sega/Dreamcast.cs +++ b/Sega/Dreamcast.cs @@ -52,54 +52,55 @@ namespace Aaru.Decoders.Sega if(ipbin_sector.Length < 512) return null; - var ipbin = Marshal.ByteArrayToStructureLittleEndian(ipbin_sector); + IPBin ipbin = Marshal.ByteArrayToStructureLittleEndian(ipbin_sector); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.maker_id = \"{0}\"", - Encoding.ASCII.GetString(ipbin.maker_id)); + Encoding.ASCII.GetString(ipbin.maker_id)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.spare_space1 = \"{0}\"", - (char)ipbin.spare_space1); + (char)ipbin.spare_space1); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.dreamcast_media = \"{0}\"", - Encoding.ASCII.GetString(ipbin.dreamcast_media)); + Encoding.ASCII.GetString(ipbin.dreamcast_media)); - AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.disc_no = {0}", (char)ipbin.disc_no); + AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.disc_no = {0}", + (char)ipbin.disc_no); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.disc_no_separator = \"{0}\"", - (char)ipbin.disc_no_separator); + (char)ipbin.disc_no_separator); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.disc_total_nos = \"{0}\"", - (char)ipbin.disc_total_nos); + (char)ipbin.disc_total_nos); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.spare_space2 = \"{0}\"", - Encoding.ASCII.GetString(ipbin.spare_space2)); + Encoding.ASCII.GetString(ipbin.spare_space2)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.region_codes = \"{0}\"", - Encoding.ASCII.GetString(ipbin.region_codes)); + Encoding.ASCII.GetString(ipbin.region_codes)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.peripherals = \"{0}\"", - Encoding.ASCII.GetString(ipbin.peripherals)); + Encoding.ASCII.GetString(ipbin.peripherals)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.product_no = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_no)); + Encoding.ASCII.GetString(ipbin.product_no)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.product_version = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_version)); + Encoding.ASCII.GetString(ipbin.product_version)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.release_date = \"{0}\"", - Encoding.ASCII.GetString(ipbin.release_date)); + Encoding.ASCII.GetString(ipbin.release_date)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.spare_space3 = \"{0}\"", - (char)ipbin.spare_space3); + (char)ipbin.spare_space3); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.boot_filename = \"{0}\"", - Encoding.ASCII.GetString(ipbin.boot_filename)); + Encoding.ASCII.GetString(ipbin.boot_filename)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.producer = \"{0}\"", - Encoding.ASCII.GetString(ipbin.producer)); + Encoding.ASCII.GetString(ipbin.producer)); AaruConsole.DebugWriteLine("Dreamcast IP.BIN Decoder", "dreamcast_ipbin.product_name = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_name)); + Encoding.ASCII.GetString(ipbin.product_name)); return Encoding.ASCII.GetString(ipbin.SegaHardwareID) == "SEGA SEGAKATANA " ? ipbin : (IPBin?)null; } @@ -141,11 +142,11 @@ namespace Aaru.Decoders.Sega switch(Encoding.ASCII.GetString(ipbin.boot_filename)) { - case"1ST_READ.BIN": + case "1ST_READ.BIN": IPBinInformation.AppendLine("Disc boots natively."); break; - case"0WINCE.BIN ": + case "0WINCE.BIN ": IPBinInformation.AppendLine("Disc boots using Windows CE."); break; @@ -161,19 +162,19 @@ namespace Aaru.Decoders.Sega foreach(byte region in ipbin.region_codes) switch((char)region) { - case'J': + case 'J': IPBinInformation.AppendLine("Japanese NTSC."); break; - case'U': + case 'U': IPBinInformation.AppendLine("North America NTSC."); break; - case'E': + case 'E': IPBinInformation.AppendLine("Europe PAL."); break; - case' ': break; + case ' ': break; default: IPBinInformation.AppendFormat("Game supports unknown region {0}.", region).AppendLine(); diff --git a/Sega/Saturn.cs b/Sega/Saturn.cs index ec93bed1e..b65351316 100644 --- a/Sega/Saturn.cs +++ b/Sega/Saturn.cs @@ -52,45 +52,45 @@ namespace Aaru.Decoders.Sega if(ipbin_sector.Length < 512) return null; - var ipbin = Marshal.ByteArrayToStructureLittleEndian(ipbin_sector); + IPBin ipbin = Marshal.ByteArrayToStructureLittleEndian(ipbin_sector); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.maker_id = \"{0}\"", - Encoding.ASCII.GetString(ipbin.maker_id)); + Encoding.ASCII.GetString(ipbin.maker_id)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.product_no = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_no)); + Encoding.ASCII.GetString(ipbin.product_no)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.product_version = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_version)); + Encoding.ASCII.GetString(ipbin.product_version)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.release_datedate = \"{0}\"", - Encoding.ASCII.GetString(ipbin.release_date)); + Encoding.ASCII.GetString(ipbin.release_date)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.saturn_media = \"{0}\"", - Encoding.ASCII.GetString(ipbin.saturn_media)); + Encoding.ASCII.GetString(ipbin.saturn_media)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.disc_no = {0}", (char)ipbin.disc_no); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.disc_no_separator = \"{0}\"", - (char)ipbin.disc_no_separator); + (char)ipbin.disc_no_separator); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.disc_total_nos = {0}", - (char)ipbin.disc_total_nos); + (char)ipbin.disc_total_nos); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.release_date = \"{0}\"", - Encoding.ASCII.GetString(ipbin.release_date)); + Encoding.ASCII.GetString(ipbin.release_date)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.spare_space1 = \"{0}\"", - Encoding.ASCII.GetString(ipbin.spare_space1)); + Encoding.ASCII.GetString(ipbin.spare_space1)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.region_codes = \"{0}\"", - Encoding.ASCII.GetString(ipbin.region_codes)); + Encoding.ASCII.GetString(ipbin.region_codes)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.peripherals = \"{0}\"", - Encoding.ASCII.GetString(ipbin.peripherals)); + Encoding.ASCII.GetString(ipbin.peripherals)); AaruConsole.DebugWriteLine("Saturn IP.BIN Decoder", "saturn_ipbin.product_name = \"{0}\"", - Encoding.ASCII.GetString(ipbin.product_name)); + Encoding.ASCII.GetString(ipbin.product_name)); return Encoding.ASCII.GetString(ipbin.SegaHardwareID) == "SEGA SEGASATURN " ? ipbin : (IPBin?)null; } @@ -132,31 +132,31 @@ namespace Aaru.Decoders.Sega foreach(byte peripheral in ipbin.peripherals) switch((char)peripheral) { - case'A': + case 'A': IPBinInformation.AppendLine("Game supports analog controller."); break; - case'J': + case 'J': IPBinInformation.AppendLine("Game supports JoyPad."); break; - case'K': + case 'K': IPBinInformation.AppendLine("Game supports keyboard."); break; - case'M': + case 'M': IPBinInformation.AppendLine("Game supports mouse."); break; - case'S': + case 'S': IPBinInformation.AppendLine("Game supports analog steering controller."); break; - case'T': + case 'T': IPBinInformation.AppendLine("Game supports multitap."); break; - case' ': break; + case ' ': break; default: IPBinInformation.AppendFormat("Game supports unknown peripheral {0}.", peripheral).AppendLine(); @@ -168,23 +168,23 @@ namespace Aaru.Decoders.Sega foreach(byte region in ipbin.region_codes) switch((char)region) { - case'J': + case 'J': IPBinInformation.AppendLine("Japanese NTSC."); break; - case'U': + case 'U': IPBinInformation.AppendLine("North America NTSC."); break; - case'E': + case 'E': IPBinInformation.AppendLine("Europe PAL."); break; - case'T': + case 'T': IPBinInformation.AppendLine("Asia NTSC."); break; - case' ': break; + case ' ': break; default: IPBinInformation.AppendFormat("Game supports unknown region {0}.", region).AppendLine(); diff --git a/Xbox/SS.cs b/Xbox/SS.cs index 47de2f970..4bc807d09 100644 --- a/Xbox/SS.cs +++ b/Xbox/SS.cs @@ -90,12 +90,13 @@ namespace Aaru.Decoders.Xbox 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 = (uint)((response[770 + i * 11 + 2] << 24) + (response[770 + i * 11 + 3] << 16) + - (response[770 + i * 11 + 4] << 8) + response[770 + i * 11 + 5]), - ResponseModifier = response[770 + i * 11 + 6], - 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]) + Level = response[770 + (i * 11) + 0], ChallengeId = response[770 + (i * 11) + 1], + ChallengeValue = (uint)((response[770 + (i * 11) + 2] << 24) + + (response[770 + (i * 11) + 3] << 16) + (response[770 + (i * 11) + 4] << 8) + + response[770 + (i * 11) + 5]), + ResponseModifier = response[770 + (i * 11) + 6], + 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); @@ -107,23 +108,23 @@ namespace Aaru.Decoders.Xbox 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]), - StartPSN = (uint)((response[1633 + i * 9 + 3] << 16) + (response[1633 + i * 9 + 4] << 8) + - response[1633 + i * 9 + 5]), - EndPSN = (uint)((response[1633 + i * 9 + 6] << 16) + (response[1633 + i * 9 + 7] << 8) + - response[1633 + i * 9 + 8]) + Unknown = (uint)((response[1633 + (i * 9) + 0] << 16) + (response[1633 + (i * 9) + 1] << 8) + + response[1633 + (i * 9) + 2]), + StartPSN = (uint)((response[1633 + (i * 9) + 3] << 16) + (response[1633 + (i * 9) + 4] << 8) + + response[1633 + (i * 9) + 5]), + 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]), - StartPSN = (uint)((response[1840 + i * 9 + 3] << 16) + (response[1840 + i * 9 + 4] << 8) + - response[1840 + i * 9 + 5]), - EndPSN = (uint)((response[1840 + i * 9 + 6] << 16) + (response[1840 + i * 9 + 7] << 8) + - response[1840 + i * 9 + 8]) + Unknown = (uint)((response[1840 + (i * 9) + 0] << 16) + (response[1840 + (i * 9) + 1] << 8) + + response[1840 + (i * 9) + 2]), + StartPSN = (uint)((response[1840 + (i * 9) + 3] << 16) + (response[1840 + (i * 9) + 4] << 8) + + response[1840 + (i * 9) + 5]), + EndPSN = (uint)((response[1840 + (i * 9) + 6] << 16) + (response[1840 + (i * 9) + 7] << 8) + + response[1840 + (i * 9) + 8]) }; return ss;