mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Rename namespace.
This commit is contained in:
344
ATA/Identify.cs
344
ATA/Identify.cs
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user