General refactor and cleanup.

This commit is contained in:
2024-05-01 04:05:22 +01:00
parent 185a8c3fd5
commit e46d21bde6
922 changed files with 36437 additions and 29485 deletions

View File

@@ -114,7 +114,7 @@ public static class Identify
MustBeClear = 0x8000,
/// <summary>MUST be set</summary>
MustBeSet = 0x4000,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
@@ -128,7 +128,7 @@ public static class Identify
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Indicates a device specific minimum standby timer value</summary>
SpecificStandbyTimer = 0x0001
}
@@ -153,9 +153,9 @@ public static class Identify
SanitizeCommands = 0x0008,
/// <summary>SANITIZE ANTIFREEZE LOCK EXT is supported</summary>
SanitizeAntifreeze = 0x0004,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Multiple logical sector setting is valid</summary>
MultipleValid = 0x0001
}
@@ -298,12 +298,12 @@ public static class Identify
MustBeClear = 0x8000,
/// <summary>MUST be set</summary>
MustBeSet = 0x4000,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
Reserved10 = 0x0400,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>DSN feature set is supported</summary>
DSN = 0x0200,
/// <summary>Accessible Max Address Configuration is supported</summary>
@@ -376,7 +376,7 @@ public static class Identify
[Flags]
public enum DataSetMgmtBit : ushort
{
#pragma warning disable 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
@@ -392,7 +392,7 @@ public static class Identify
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>TRIM is supported</summary>
Trim = 0x0001
}
@@ -496,12 +496,12 @@ public static class Identify
[Flags]
public enum MajorVersionBit : ushort
{
#pragma warning disable 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
Reserved12 = 0x1000,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>ACS-4</summary>
ACS4 = 0x0800,
/// <summary>ACS-3</summary>
@@ -524,9 +524,9 @@ public static class Identify
Ata2 = 0x0004,
/// <summary>ATA-1</summary>
Ata1 = 0x0002,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved00 = 0x0001
#pragma warning restore 1591
#pragma warning restore 1591
}
#endregion
@@ -553,12 +553,12 @@ public static class Identify
PowerReceipt = 0x0200,
/// <summary>Supports NCQ</summary>
NCQ = 0x0100,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved07 = 0x0080,
Reserved06 = 0x0040,
Reserved05 = 0x0020,
Reserved04 = 0x0010,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Supports SATA Gen. 3 Signaling Speed (6.0Gb/s)</summary>
Gen3Speed = 0x0008,
/// <summary>Supports SATA Gen. 2 Signaling Speed (3.0Gb/s)</summary>
@@ -577,7 +577,7 @@ public static class Identify
[Flags]
public enum SATACapabilitiesBit2 : ushort
{
#pragma warning disable 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
@@ -587,7 +587,7 @@ public static class Identify
Reserved09 = 0x0200,
Reserved08 = 0x0100,
Reserved07 = 0x0080,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Supports RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED</summary>
FPDMAQ = 0x0040,
/// <summary>Supports NCQ Queue Management</summary>
@@ -616,7 +616,7 @@ public static class Identify
[Flags]
public enum SATAFeaturesBit : ushort
{
#pragma warning disable 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
@@ -625,7 +625,7 @@ public static class Identify
Reserved10 = 0x0400,
Reserved09 = 0x0200,
Reserved08 = 0x0100,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Supports NCQ autosense</summary>
NCQAutoSense = 0x0080,
/// <summary>Automatic Partial to Slumber transitions are enabled</summary>
@@ -656,7 +656,7 @@ public static class Identify
[Flags]
public enum SCTCommandTransportBit : ushort
{
#pragma warning disable 1591
#pragma warning disable 1591
Vendor15 = 0x8000,
Vendor14 = 0x4000,
Vendor13 = 0x2000,
@@ -667,7 +667,7 @@ public static class Identify
Reserved08 = 0x0100,
Reserved07 = 0x0080,
Reserved06 = 0x0040,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>SCT Command Transport Data Tables supported</summary>
DataTables = 0x0020,
/// <summary>SCT Command Transport Features Control supported</summary>
@@ -690,7 +690,7 @@ public static class Identify
[Flags]
public enum SecurityStatusBit : ushort
{
#pragma warning disable 1591
#pragma warning disable 1591
Reserved15 = 0x8000,
Reserved14 = 0x4000,
Reserved13 = 0x2000,
@@ -698,13 +698,13 @@ public static class Identify
Reserved11 = 0x0800,
Reserved10 = 0x0400,
Reserved09 = 0x0200,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Maximum security level</summary>
Maximum = 0x0100,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved07 = 0x0080,
Reserved06 = 0x0040,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Supports enhanced security erase</summary>
Enhanced = 0x0020,
/// <summary>Security count expired</summary>
@@ -744,7 +744,7 @@ public static class Identify
[Flags]
public enum TransferMode : byte
{
#pragma warning disable 1591
#pragma warning disable 1591
Mode7 = 0x80,
Mode6 = 0x40,
Mode5 = 0x20,
@@ -753,7 +753,7 @@ public static class Identify
Mode2 = 0x04,
Mode1 = 0x02,
Mode0 = 0x01
#pragma warning restore 1591
#pragma warning restore 1591
}
#endregion
@@ -768,7 +768,7 @@ public static class Identify
Clear = 0x8000,
/// <summary>MUST be set</summary>
Set = 0x4000,
#pragma warning disable 1591
#pragma warning disable 1591
Reserved13 = 0x2000,
Reserved12 = 0x1000,
Reserved11 = 0x0800,
@@ -782,7 +782,7 @@ public static class Identify
Reserved03 = 0x0008,
Reserved02 = 0x0004,
Reserved01 = 0x0002,
#pragma warning restore 1591
#pragma warning restore 1591
/// <summary>Trusted Computing feature set is supported</summary>
TrustedComputing = 0x0001
}
@@ -796,8 +796,7 @@ public static class Identify
/// <returns>Decoded IDENTIFY DEVICE</returns>
public static IdentifyDevice? Decode(byte[] IdentifyDeviceResponse)
{
if(IdentifyDeviceResponse == null)
return null;
if(IdentifyDeviceResponse == null) return null;
if(IdentifyDeviceResponse.Length != 512)
{
@@ -827,8 +826,7 @@ public static class Identify
/// <returns>Raw IDENTIFY DEVICE response</returns>
public static byte[] Encode(IdentifyDevice? identify)
{
if(identify is null)
return null;
if(identify is null) return null;
IdentifyDevice ataId = identify.Value;
@@ -893,11 +891,9 @@ public static class Identify
{
var buf = new byte[length];
for(var i = 0; i < length; i++)
buf[i] = 0x20;
for(var i = 0; i < length; i++) buf[i] = 0x20;
if(str is null)
return buf;
if(str is null) return buf;
byte[] bytes = Encoding.ASCII.GetBytes(str);

View File

@@ -271,8 +271,7 @@ public struct Inquiry
public static Inquiry? Decode(byte[] SCSIInquiryResponse)
{
if(SCSIInquiryResponse == null)
return null;
if(SCSIInquiryResponse == null) return null;
if(SCSIInquiryResponse.Length < 36 && SCSIInquiryResponse.Length != 5)
{
@@ -287,9 +286,10 @@ public struct Inquiry
SCSIInquiryResponse.Length != SCSIInquiryResponse[4])
{
AaruConsole.DebugWriteLine(MODULE_NAME,
Localization.
INQUIRY_response_length_0_bytes_is_different_than_specified_in_length_field,
SCSIInquiryResponse.Length, SCSIInquiryResponse[4] + 4);
Localization
.INQUIRY_response_length_0_bytes_is_different_than_specified_in_length_field,
SCSIInquiryResponse.Length,
SCSIInquiryResponse[4] + 4);
return null;
}
@@ -324,8 +324,7 @@ public struct Inquiry
decoded.ResponseDataFormat = (byte)(SCSIInquiryResponse[3] & 0x07);
}
if(SCSIInquiryResponse.Length >= 5)
decoded.AdditionalLength = SCSIInquiryResponse[4];
if(SCSIInquiryResponse.Length >= 5) decoded.AdditionalLength = SCSIInquiryResponse[4];
if(SCSIInquiryResponse.Length >= 6)
{
@@ -465,8 +464,7 @@ public struct Inquiry
decoded.IUS = Convert.ToBoolean(SCSIInquiryResponse[56] & 0x01);
}
if(SCSIInquiryResponse.Length >= 58)
decoded.Reserved4 = SCSIInquiryResponse[57];
if(SCSIInquiryResponse.Length >= 58) decoded.Reserved4 = SCSIInquiryResponse[57];
if(SCSIInquiryResponse.Length >= 60)
{
@@ -511,8 +509,7 @@ public struct Inquiry
Array.Copy(SCSIInquiryResponse, 96, decoded.Seagate_Copyright, 0, 48);
}
if(SCSIInquiryResponse.Length < 148)
return decoded;
if(SCSIInquiryResponse.Length < 148) return decoded;
// Seagate 2
decoded.Seagate3Present = true;
@@ -527,8 +524,7 @@ public struct Inquiry
/// <returns>Raw SCSI INQUIRY response</returns>
public static byte[] Encode(Inquiry? inq)
{
if(inq is null)
return null;
if(inq is null) return null;
Inquiry decoded = inq.Value;
@@ -538,8 +534,7 @@ public struct Inquiry
buffer[0] = (byte)(decoded.PeripheralQualifier << 5);
buffer[0] += decoded.PeripheralDeviceType;
if(decoded.RMB)
buffer[1] = 0x80;
if(decoded.RMB) buffer[1] = 0x80;
buffer[1] += decoded.DeviceTypeModifier;
@@ -547,17 +542,13 @@ public struct Inquiry
buffer[2] += (byte)(decoded.ECMAVersion << 3);
buffer[2] += decoded.ANSIVersion;
if(decoded.AERC)
buffer[3] = 0x80;
if(decoded.AERC) buffer[3] = 0x80;
if(decoded.TrmTsk)
buffer[3] += 0x40;
if(decoded.TrmTsk) buffer[3] += 0x40;
if(decoded.NormACA)
buffer[3] += 0x20;
if(decoded.NormACA) buffer[3] += 0x20;
if(decoded.HiSup)
buffer[3] += 0x10;
if(decoded.HiSup) buffer[3] += 0x10;
buffer[3] += decoded.ResponseDataFormat;
@@ -576,21 +567,17 @@ public struct Inquiry
{
length = 6;
if(decoded.SCCS)
buffer[5] = 0x80;
if(decoded.SCCS) buffer[5] = 0x80;
if(decoded.ACC)
buffer[5] += 0x40;
if(decoded.ACC) buffer[5] += 0x40;
buffer[5] += (byte)(decoded.TPGS << 4);
if(decoded.ThreePC)
buffer[5] += 0x08;
if(decoded.ThreePC) buffer[5] += 0x08;
buffer[5] += (byte)(decoded.Reserved2 << 1);
if(decoded.Protect)
buffer[5] += 0x01;
if(decoded.Protect) buffer[5] += 0x01;
}
if(decoded.BQue ||
@@ -604,29 +591,21 @@ public struct Inquiry
{
length = 7;
if(decoded.BQue)
buffer[6] = 0x80;
if(decoded.BQue) buffer[6] = 0x80;
if(decoded.EncServ)
buffer[6] += 0x40;
if(decoded.EncServ) buffer[6] += 0x40;
if(decoded.VS1)
buffer[6] += 0x20;
if(decoded.VS1) buffer[6] += 0x20;
if(decoded.MultiP)
buffer[6] += 0x10;
if(decoded.MultiP) buffer[6] += 0x10;
if(decoded.MChngr)
buffer[6] += 0x08;
if(decoded.MChngr) buffer[6] += 0x08;
if(decoded.ACKREQQ)
buffer[6] += 0x04;
if(decoded.ACKREQQ) buffer[6] += 0x04;
if(decoded.Addr32)
buffer[6] += 0x02;
if(decoded.Addr32) buffer[6] += 0x02;
if(decoded.Addr16)
buffer[6] += 0x01;
if(decoded.Addr16) buffer[6] += 0x01;
}
if(decoded.RelAddr ||
@@ -641,36 +620,31 @@ public struct Inquiry
{
length = 8;
if(decoded.RelAddr)
buffer[7] = 0x80;
if(decoded.RelAddr) buffer[7] = 0x80;
if(decoded.WBus32)
buffer[7] += 0x40;
if(decoded.WBus32) buffer[7] += 0x40;
if(decoded.WBus16)
buffer[7] += 0x20;
if(decoded.WBus16) buffer[7] += 0x20;
if(decoded.Sync)
buffer[7] += 0x10;
if(decoded.Sync) buffer[7] += 0x10;
if(decoded.Linked)
buffer[7] += 0x08;
if(decoded.Linked) buffer[7] += 0x08;
if(decoded.TranDis)
buffer[7] += 0x04;
if(decoded.TranDis) buffer[7] += 0x04;
if(decoded.CmdQue)
buffer[7] += 0x02;
if(decoded.CmdQue) buffer[7] += 0x02;
if(decoded.SftRe)
buffer[7] += 0x01;
if(decoded.SftRe) buffer[7] += 0x01;
}
if(decoded.VendorIdentification != null)
{
length = 16;
Array.Copy(decoded.VendorIdentification, 0, buffer, 8,
Array.Copy(decoded.VendorIdentification,
0,
buffer,
8,
decoded.VendorIdentification.Length >= 8 ? 8 : decoded.VendorIdentification.Length);
}
@@ -678,7 +652,10 @@ public struct Inquiry
{
length = 32;
Array.Copy(decoded.ProductIdentification, 0, buffer, 16,
Array.Copy(decoded.ProductIdentification,
0,
buffer,
16,
decoded.ProductIdentification.Length >= 16 ? 16 : decoded.ProductIdentification.Length);
}
@@ -686,7 +663,10 @@ public struct Inquiry
{
length = 36;
Array.Copy(decoded.ProductRevisionLevel, 0, buffer, 32,
Array.Copy(decoded.ProductRevisionLevel,
0,
buffer,
32,
decoded.ProductRevisionLevel.Length >= 4 ? 4 : decoded.ProductRevisionLevel.Length);
}
@@ -708,8 +688,7 @@ public struct Inquiry
{
length = 49;
if(decoded.HP_WORM)
buffer[40] = 0x01;
if(decoded.HP_WORM) buffer[40] = 0x01;
buffer[40] += (byte)(decoded.HP_WORMVersion << 1);
Array.Copy(decoded.HP_OBDR, 0, buffer, 43, 6);
@@ -720,8 +699,7 @@ public struct Inquiry
length = 56;
Array.Copy(HiMDSignatureContents, 0, buffer, 36, 8);
if(decoded.HiMDSpecific != null)
Array.Copy(decoded.HiMDSpecific, 0, buffer, 44, 12);
if(decoded.HiMDSpecific != null) Array.Copy(decoded.HiMDSpecific, 0, buffer, 44, 12);
}
if(decoded is { VendorSpecific: not null, IsHiMD: false })
@@ -736,11 +714,9 @@ public struct Inquiry
buffer[56] = (byte)(decoded.Reserved3 << 4);
buffer[56] += (byte)(decoded.Clocking << 2);
if(decoded.QAS)
buffer[56] += 0x02;
if(decoded.QAS) buffer[56] += 0x02;
if(decoded.IUS)
buffer[56] += 0x01;
if(decoded.IUS) buffer[56] += 0x01;
}
if(decoded.Reserved4 != 0)

View File

@@ -215,6 +215,7 @@ public class ModePage_2A
/// <summary>Database ID</summary>
[JsonIgnore]
[Key]
// ReSharper disable once UnusedMember.Global
public int Id { get; set; }
@@ -223,17 +224,13 @@ public class ModePage_2A
/// <returns>Decoded page 2Ah</returns>
public static ModePage_2A Decode(byte[] pageResponse)
{
if((pageResponse?[0] & 0x40) == 0x40)
return null;
if((pageResponse?[0] & 0x40) == 0x40) return null;
if((pageResponse?[0] & 0x3F) != 0x2A)
return null;
if((pageResponse?[0] & 0x3F) != 0x2A) return null;
if(pageResponse[1] + 2 != pageResponse.Length)
return null;
if(pageResponse[1] + 2 != pageResponse.Length) return null;
if(pageResponse.Length < 16)
return null;
if(pageResponse.Length < 16) return null;
var decoded = new ModePage_2A();
@@ -266,8 +263,7 @@ public class ModePage_2A
decoded.BufferSize = (ushort)((pageResponse[12] << 8) + pageResponse[13]);
decoded.CurrentSpeed = (ushort)((pageResponse[14] << 8) + pageResponse[15]);
if(pageResponse.Length < 20)
return decoded;
if(pageResponse.Length < 20) return decoded;
decoded.Method2 |= (pageResponse[2] & 0x04) == 0x04;
decoded.ReadCDRW |= (pageResponse[2] & 0x02) == 0x02;
@@ -288,8 +284,7 @@ public class ModePage_2A
decoded.RCK |= (pageResponse[17] & 0x04) == 0x04;
decoded.BCK |= (pageResponse[17] & 0x02) == 0x02;
if(pageResponse.Length < 22)
return decoded;
if(pageResponse.Length < 22) return decoded;
decoded.TestWrite |= (pageResponse[3] & 0x04) == 0x04;
decoded.MaxWriteSpeed = (ushort)((pageResponse[18] << 8) + pageResponse[19]);
@@ -297,8 +292,7 @@ public class ModePage_2A
decoded.ReadBarcode |= (pageResponse[5] & 0x80) == 0x80;
if(pageResponse.Length < 26)
return decoded;
if(pageResponse.Length < 26) return decoded;
decoded.ReadDVDRAM |= (pageResponse[2] & 0x20) == 0x20;
decoded.ReadDVDR |= (pageResponse[2] & 0x10) == 0x10;
@@ -312,8 +306,7 @@ public class ModePage_2A
decoded.CMRSupported = (ushort)((pageResponse[22] << 8) + pageResponse[23]);
if(pageResponse.Length < 32)
return decoded;
if(pageResponse.Length < 32) return decoded;
decoded.BUF |= (pageResponse[4] & 0x80) == 0x80;
decoded.RotationControlSelected = (byte)(pageResponse[27] & 0x03);
@@ -344,61 +337,43 @@ public class ModePage_2A
pageResponse[0] = 0x2A;
if(decoded.PS)
pageResponse[0] += 0x80;
if(decoded.PS) pageResponse[0] += 0x80;
if(decoded.AudioPlay)
pageResponse[4] += 0x01;
if(decoded.AudioPlay) pageResponse[4] += 0x01;
if(decoded.Mode2Form1)
pageResponse[4] += 0x10;
if(decoded.Mode2Form1) pageResponse[4] += 0x10;
if(decoded.Mode2Form2)
pageResponse[4] += 0x20;
if(decoded.Mode2Form2) pageResponse[4] += 0x20;
if(decoded.MultiSession)
pageResponse[4] += 0x40;
if(decoded.MultiSession) pageResponse[4] += 0x40;
if(decoded.CDDACommand)
pageResponse[5] += 0x01;
if(decoded.CDDACommand) pageResponse[5] += 0x01;
if(decoded.AccurateCDDA)
pageResponse[5] += 0x02;
if(decoded.AccurateCDDA) pageResponse[5] += 0x02;
if(decoded.Subchannel)
pageResponse[5] += 0x04;
if(decoded.Subchannel) pageResponse[5] += 0x04;
if(decoded.DeinterlaveSubchannel)
pageResponse[5] += 0x08;
if(decoded.DeinterlaveSubchannel) pageResponse[5] += 0x08;
if(decoded.C2Pointer)
pageResponse[5] += 0x10;
if(decoded.C2Pointer) pageResponse[5] += 0x10;
if(decoded.UPC)
pageResponse[5] += 0x20;
if(decoded.UPC) pageResponse[5] += 0x20;
if(decoded.ISRC)
pageResponse[5] += 0x40;
if(decoded.ISRC) pageResponse[5] += 0x40;
decoded.LoadingMechanism = (byte)((pageResponse[6] & 0xE0) >> 5);
if(decoded.Lock)
pageResponse[6] += 0x01;
if(decoded.Lock) pageResponse[6] += 0x01;
if(decoded.LockState)
pageResponse[6] += 0x02;
if(decoded.LockState) pageResponse[6] += 0x02;
if(decoded.PreventJumper)
pageResponse[6] += 0x04;
if(decoded.PreventJumper) pageResponse[6] += 0x04;
if(decoded.Eject)
pageResponse[6] += 0x08;
if(decoded.Eject) pageResponse[6] += 0x08;
if(decoded.SeparateChannelVolume)
pageResponse[7] += 0x01;
if(decoded.SeparateChannelVolume) pageResponse[7] += 0x01;
if(decoded.SeparateChannelMute)
pageResponse[7] += 0x02;
if(decoded.SeparateChannelMute) pageResponse[7] += 0x02;
decoded.MaximumSpeed = (ushort)((pageResponse[8] << 8) + pageResponse[9]);
decoded.SupportedVolumeLevels = (ushort)((pageResponse[10] << 8) + pageResponse[11]);
@@ -422,62 +397,47 @@ public class ModePage_2A
{
length = 20;
if(decoded.Method2)
pageResponse[2] += 0x04;
if(decoded.Method2) pageResponse[2] += 0x04;
if(decoded.ReadCDRW)
pageResponse[2] += 0x02;
if(decoded.ReadCDRW) pageResponse[2] += 0x02;
if(decoded.ReadCDR)
pageResponse[2] += 0x01;
if(decoded.ReadCDR) pageResponse[2] += 0x01;
if(decoded.WriteCDRW)
pageResponse[3] += 0x02;
if(decoded.WriteCDRW) pageResponse[3] += 0x02;
if(decoded.WriteCDR)
pageResponse[3] += 0x01;
if(decoded.WriteCDR) pageResponse[3] += 0x01;
if(decoded.Composite)
pageResponse[4] += 0x02;
if(decoded.Composite) pageResponse[4] += 0x02;
if(decoded.DigitalPort1)
pageResponse[4] += 0x04;
if(decoded.DigitalPort1) pageResponse[4] += 0x04;
if(decoded.DigitalPort2)
pageResponse[4] += 0x08;
if(decoded.DigitalPort2) pageResponse[4] += 0x08;
if(decoded.SDP)
pageResponse[7] += 0x04;
if(decoded.SDP) pageResponse[7] += 0x04;
if(decoded.SSS)
pageResponse[7] += 0x08;
if(decoded.SSS) pageResponse[7] += 0x08;
pageResponse[17] = (byte)(decoded.Length << 4);
if(decoded.LSBF)
pageResponse[17] += 0x08;
if(decoded.LSBF) pageResponse[17] += 0x08;
if(decoded.RCK)
pageResponse[17] += 0x04;
if(decoded.RCK) pageResponse[17] += 0x04;
if(decoded.BCK)
pageResponse[17] += 0x02;
if(decoded.BCK) pageResponse[17] += 0x02;
}
if(decoded.TestWrite || decoded.MaxWriteSpeed > 0 || decoded.CurrentWriteSpeed > 0 || decoded.ReadBarcode)
{
length = 22;
if(decoded.TestWrite)
pageResponse[3] += 0x04;
if(decoded.TestWrite) pageResponse[3] += 0x04;
pageResponse[18] = (byte)((decoded.MaxWriteSpeed & 0xFF00) >> 8);
pageResponse[19] = (byte)(decoded.MaxWriteSpeed & 0xFF);
pageResponse[20] = (byte)((decoded.CurrentWriteSpeed & 0xFF00) >> 8);
pageResponse[21] = (byte)(decoded.CurrentWriteSpeed & 0xFF);
if(decoded.ReadBarcode)
pageResponse[5] += 0x80;
if(decoded.ReadBarcode) pageResponse[5] += 0x80;
}
if(decoded.ReadDVDRAM ||
@@ -492,26 +452,19 @@ public class ModePage_2A
{
length = 26;
if(decoded.ReadDVDRAM)
pageResponse[2] += 0x20;
if(decoded.ReadDVDRAM) pageResponse[2] += 0x20;
if(decoded.ReadDVDR)
pageResponse[2] += 0x10;
if(decoded.ReadDVDR) pageResponse[2] += 0x10;
if(decoded.ReadDVDROM)
pageResponse[2] += 0x08;
if(decoded.ReadDVDROM) pageResponse[2] += 0x08;
if(decoded.WriteDVDRAM)
pageResponse[3] += 0x20;
if(decoded.WriteDVDRAM) pageResponse[3] += 0x20;
if(decoded.WriteDVDR)
pageResponse[3] += 0x10;
if(decoded.WriteDVDR) pageResponse[3] += 0x10;
if(decoded.LeadInPW)
pageResponse[3] += 0x20;
if(decoded.LeadInPW) pageResponse[3] += 0x20;
if(decoded.SCC)
pageResponse[3] += 0x10;
if(decoded.SCC) pageResponse[3] += 0x10;
pageResponse[22] = (byte)((decoded.CMRSupported & 0xFF00) >> 8);
pageResponse[23] = (byte)(decoded.CMRSupported & 0xFF);
@@ -521,8 +474,7 @@ public class ModePage_2A
{
length = 32;
if(decoded.BUF)
pageResponse[4] += 0x80;
if(decoded.BUF) pageResponse[4] += 0x80;
pageResponse[27] += decoded.RotationControlSelected;
pageResponse[28] = (byte)((decoded.CurrentWriteSpeedSelected & 0xFF00) >> 8);