General cleanup and refactor.

This commit is contained in:
2022-03-07 07:36:32 +00:00
parent 27900ec144
commit 8d40f3e395
60 changed files with 1034 additions and 1156 deletions

View File

@@ -36,6 +36,12 @@
// Copyright © 2011-2022 Natalia Portillo
// ****************************************************************************/
// ReSharper disable UnusedMember.Global
namespace Aaru.CommonTypes.Structs.Devices.ATA;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
@@ -45,10 +51,6 @@ using Aaru.Console;
using Aaru.Helpers;
using Marshal = Aaru.Helpers.Marshal;
// ReSharper disable UnusedMember.Global
namespace Aaru.CommonTypes.Structs.Devices.ATA;
/// <summary>
/// Information from following standards: T10-791D rev. 4c (ATA) T10-948D rev. 4c (ATA-2) T13-1153D rev. 18
/// (ATA/ATAPI-4) T13-1321D rev. 3 (ATA/ATAPI-5) T13-1410D rev. 3b (ATA/ATAPI-6) T13-1532D rev. 4b (ATA/ATAPI-7)
@@ -108,10 +110,18 @@ public static class Identify
/// <summary>MUST be set</summary>
MustBeSet = 0x4000,
#pragma warning disable 1591
Reserved13 = 0x2000, Reserved12 = 0x1000, Reserved11 = 0x0800,
Reserved10 = 0x0400, Reserved09 = 0x0200, Reserved08 = 0x0100,
Reserved07 = 0x0080, Reserved06 = 0x0040, Reserved05 = 0x0020,
Reserved04 = 0x0010, Reserved03 = 0x0008, Reserved02 = 0x0004,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
/// <summary>Indicates a device specific minimum standby timer value</summary>
@@ -264,7 +274,9 @@ public static class Identify
/// <summary>MUST be set</summary>
MustBeSet = 0x4000,
#pragma warning disable 1591
Reserved13 = 0x2000, Reserved12 = 0x1000, Reserved11 = 0x0800,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
#pragma warning restore 1591
/// <summary>DSN feature set is supported</summary>
@@ -332,11 +344,21 @@ public static class Identify
public enum DataSetMgmtBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100, Reserved07 = 0x0080,
Reserved06 = 0x0040, Reserved05 = 0x0020, Reserved04 = 0x0010,
Reserved03 = 0x0008, Reserved02 = 0x0004, Reserved01 = 0x0002,
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
/// <summary>TRIM is supported</summary>
Trim = 0x0001
@@ -426,7 +448,9 @@ public static class Identify
public enum MajorVersionBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
#pragma warning restore 1591
/// <summary>ACS-4</summary>
@@ -477,7 +501,9 @@ public static class Identify
/// <summary>Supports NCQ</summary>
NCQ = 0x0100,
#pragma warning disable 1591
Reserved07 = 0x0080, Reserved06 = 0x0040, Reserved05 = 0x0020,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
#pragma warning restore 1591
/// <summary>Supports SATA Gen. 3 Signaling Speed (6.0Gb/s)</summary>
@@ -495,9 +521,15 @@ public static class Identify
public enum SATACapabilitiesBit2 : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100, Reserved07 = 0x0080,
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
#pragma warning restore 1591
/// <summary>Supports RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED</summary>
FPDMAQ = 0x0040,
@@ -524,9 +556,14 @@ public static class Identify
public enum SATAFeaturesBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100,
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
#pragma warning restore 1591
/// <summary>Supports NCQ autosense</summary>
NCQAutoSense = 0x0080,
@@ -555,9 +592,15 @@ public static class Identify
public enum SCTCommandTransportBit : ushort
{
#pragma warning disable 1591
Vendor15 = 0x8000, Vendor14 = 0x4000, Vendor13 = 0x2000,
Vendor12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved09 = 0x0200, Reserved08 = 0x0100, Reserved07 = 0x0080,
Vendor15 = 0x8000,
Vendor14 = 0x4000,
Vendor13 = 0x2000,
Vendor12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
#pragma warning restore 1591
/// <summary>SCT Command Transport Data Tables supported</summary>
@@ -579,14 +622,19 @@ public static class Identify
public enum SecurityStatusBit : ushort
{
#pragma warning disable 1591
Reserved15 = 0x8000, Reserved14 = 0x4000, Reserved13 = 0x2000,
Reserved12 = 0x1000, Reserved11 = 0x0800, Reserved10 = 0x0400,
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
#pragma warning restore 1591
/// <summary>Maximum security level</summary>
Maximum = 0x0100,
#pragma warning disable 1591
Reserved07 = 0x0080, Reserved06 = 0x0040,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
#pragma warning restore 1591
/// <summary>Supports enhanced security erase</summary>
Enhanced = 0x0020,
@@ -620,9 +668,14 @@ public static class Identify
public enum TransferMode : byte
{
#pragma warning disable 1591
Mode7 = 0x80, Mode6 = 0x40, Mode5 = 0x20,
Mode4 = 0x10, Mode3 = 0x08, Mode2 = 0x04,
Mode1 = 0x02, Mode0 = 0x01
Mode7 = 0x80,
Mode6 = 0x40,
Mode5 = 0x20,
Mode4 = 0x10,
Mode3 = 0x08,
Mode2 = 0x04,
Mode1 = 0x02,
Mode0 = 0x01
#pragma warning restore 1591
}
@@ -635,10 +688,18 @@ public static class Identify
/// <summary>MUST be set</summary>
Set = 0x4000,
#pragma warning disable 1591
Reserved13 = 0x2000, Reserved12 = 0x1000, Reserved11 = 0x0800,
Reserved10 = 0x0400, Reserved09 = 0x0200, Reserved08 = 0x0100,
Reserved07 = 0x0080, Reserved06 = 0x0040, Reserved05 = 0x0020,
Reserved04 = 0x0010, Reserved03 = 0x0008, Reserved02 = 0x0004,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
/// <summary>Trusted Computing feature set is supported</summary>
@@ -1041,7 +1102,7 @@ public static class Identify
ataId.WWN = DescrambleWWN(ataId.WWN);
ataId.WWNExtension = DescrambleWWN(ataId.WWNExtension);
byte[] buf = new byte[512];
var buf = new byte[512];
IntPtr ptr = System.Runtime.InteropServices.Marshal.AllocHGlobal(512);
System.Runtime.InteropServices.Marshal.StructureToPtr(ataId, ptr, false);
System.Runtime.InteropServices.Marshal.Copy(ptr, buf, 0, 512);
@@ -1066,7 +1127,7 @@ public static class Identify
static ulong DescrambleWWN(ulong WWN)
{
byte[] qwb = BitConverter.GetBytes(WWN);
byte[] qword = new byte[8];
var qword = new byte[8];
qword[7] = qwb[1];
qword[6] = qwb[0];
@@ -1084,7 +1145,7 @@ public static class Identify
{
byte[] outbuf = buffer[offset + length - 1] != 0x00 ? new byte[length + 1] : new byte[length];
for(int i = 0; i < length; i += 2)
for(var i = 0; i < length; i += 2)
{
outbuf[i] = buffer[offset + i + 1];
outbuf[i + 1] = buffer[offset + i];
@@ -1097,9 +1158,9 @@ public static class Identify
static byte[] ScrambleATAString(string str, int length)
{
byte[] buf = new byte[length];
var buf = new byte[length];
for(int i = 0; i < length; i++)
for(var i = 0; i < length; i++)
buf[i] = 0x20;
if(str is null)
@@ -1109,13 +1170,13 @@ public static class Identify
if(bytes.Length % 2 != 0)
{
byte[] tmp = new byte[bytes.Length + 1];
var tmp = new byte[bytes.Length + 1];
tmp[^1] = 0x20;
Array.Copy(bytes, 0, tmp, 0, bytes.Length);
bytes = tmp;
}
for(int i = 0; i < bytes.Length; i += 2)
for(var i = 0; i < bytes.Length; i += 2)
{
buf[i] = bytes[i + 1];
buf[i + 1] = bytes[i];