Rename namespace.

This commit is contained in:
2020-02-27 00:33:24 +00:00
parent 3632331c45
commit 7d9781a33e
117 changed files with 269 additions and 365 deletions

View File

@@ -33,9 +33,9 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using DiscImageChef.CommonTypes.Structs.Devices.SCSI;
using Aaru.CommonTypes.Structs.Devices.SCSI;
namespace DiscImageChef.Decoders.ATA
namespace Aaru.Decoders.ATA
{
/// <summary>
/// Information from following standards: T10-791D rev. 4c (ATA) T10-948D rev. 4c (ATA-2) T13-1153D rev. 18
@@ -70,8 +70,7 @@ namespace DiscImageChef.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
@@ -121,17 +120,13 @@ namespace DiscImageChef.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.
UltraFastIDE);
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);
ata2 |= ATAID.ExtendedIdentify.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.ExtendedIdentifyBit.
Words64to70Valid);
ata2 |= ATAID.ExtendedIdentify.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.ExtendedIdentifyBit.
Words64to70Valid);
if(!ata1 &&
!ata2 &&
@@ -661,81 +656,65 @@ namespace DiscImageChef.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.");
}
}
@@ -992,8 +971,7 @@ namespace DiscImageChef.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))
@@ -1006,15 +984,13 @@ namespace DiscImageChef.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)
@@ -1029,8 +1005,7 @@ namespace DiscImageChef.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");
}
@@ -1303,44 +1278,35 @@ namespace DiscImageChef.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");
}
}
@@ -1348,29 +1314,24 @@ namespace DiscImageChef.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");
}
@@ -1521,8 +1482,7 @@ namespace DiscImageChef.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");
}
@@ -1530,8 +1490,7 @@ namespace DiscImageChef.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");
}
@@ -1561,8 +1520,7 @@ namespace DiscImageChef.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");
}
@@ -1570,8 +1528,7 @@ namespace DiscImageChef.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");
}
@@ -1600,38 +1557,32 @@ namespace DiscImageChef.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");
if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.CommandSetBit2.
AddressOffsetReservedAreaBoot))
if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.
AddressOffsetReservedAreaBoot))
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");
if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.CommandSetBit2.
RemovableNotification))
if(ATAID.EnabledCommandSet2.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit2.
RemovableNotification))
sb.Append(" and enabled");
}
@@ -1647,8 +1598,7 @@ namespace DiscImageChef.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");
}
@@ -1656,8 +1606,7 @@ namespace DiscImageChef.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");
}
@@ -1665,8 +1614,7 @@ namespace DiscImageChef.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");
}
}
@@ -1679,8 +1627,7 @@ namespace DiscImageChef.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) &&
@@ -1690,8 +1637,7 @@ namespace DiscImageChef.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");
}
@@ -1699,8 +1645,7 @@ namespace DiscImageChef.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");
}
@@ -1708,8 +1653,7 @@ namespace DiscImageChef.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");
}
@@ -1726,8 +1670,7 @@ namespace DiscImageChef.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");
}
@@ -1735,8 +1678,7 @@ namespace DiscImageChef.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");
}
@@ -1752,8 +1694,7 @@ namespace DiscImageChef.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");
}
@@ -1769,8 +1710,7 @@ namespace DiscImageChef.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");
}
}
@@ -1798,8 +1738,7 @@ namespace DiscImageChef.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");
}
@@ -1807,8 +1746,7 @@ namespace DiscImageChef.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");
}
@@ -1816,19 +1754,16 @@ namespace DiscImageChef.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");
if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.CommandSetBit4.
SegmentedDownloadMicrocode))
if(ATAID.EnabledCommandSet4.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.CommandSetBit4.
SegmentedDownloadMicrocode))
sb.Append(" and enabled");
}
@@ -1836,8 +1771,7 @@ namespace DiscImageChef.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");
}
@@ -1845,8 +1779,7 @@ namespace DiscImageChef.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");
}
@@ -1934,49 +1867,41 @@ namespace DiscImageChef.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");
if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.SATAFeaturesBit.
NonZeroBufferOffset))
if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.
NonZeroBufferOffset))
sb.Append(" and enabled");
}
@@ -1984,19 +1909,16 @@ namespace DiscImageChef.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");
if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.SATAFeaturesBit.
InitPowerMgmt))
if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.
InitPowerMgmt))
sb.Append(" and enabled");
}
@@ -2004,44 +1926,37 @@ namespace DiscImageChef.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");
}
if(!atapi)
if(ATAID.SATAFeatures.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.SATAFeaturesBit.
HardwareFeatureControl))
if(ATAID.SATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.
HardwareFeatureControl))
{
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");
if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.SATAFeaturesBit.
SettingsPreserve))
if(ATAID.EnabledSATAFeatures.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SATAFeaturesBit.
SettingsPreserve))
sb.Append(" and enabled");
}
@@ -2049,8 +1964,7 @@ namespace DiscImageChef.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");
}
}
@@ -2079,20 +1993,16 @@ namespace DiscImageChef.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
@@ -2122,32 +2032,26 @@ namespace DiscImageChef.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):");
if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.SCTCommandTransportBit.
LongSectorAccess))
if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.
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.
ErrorRecoveryControl))
if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.
ErrorRecoveryControl))
sb.AppendLine("SCT Error Recovery Control is supported");
if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.
Structs.Devices.ATA.Identify.SCTCommandTransportBit.
FeaturesControl))
if(ATAID.SCTCommandTransport.HasFlag(CommonTypes.Structs.Devices.ATA.Identify.SCTCommandTransportBit.
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");
}