From b41c412caee6e1fb298160f57d573446d623d856 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 14 Oct 2016 02:32:26 +0100 Subject: [PATCH] Added Apple OEM MODE page 30h. --- ChangeLog | 4 ++++ SCSI/Modes.cs | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9e1a7ec..51c67b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-10-14 Natalia Portillo + + * Modes.cs: Added Apple OEM MODE page 30h. + 2016-10-14 Natalia Portillo * EVPD.cs: diff --git a/SCSI/Modes.cs b/SCSI/Modes.cs index 92b012d..7eec05d 100644 --- a/SCSI/Modes.cs +++ b/SCSI/Modes.cs @@ -33,6 +33,7 @@ using System; using System.Text; using System.Collections.Generic; +using System.Linq; namespace DiscImageChef.Decoders.SCSI { @@ -8080,6 +8081,32 @@ namespace DiscImageChef.Decoders.SCSI #endregion HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page + #region Apple Mode Page 0x30: Apple OEM String + static readonly byte[] AppleOEMString = { 0x41, 0x50, 0x50, 0x4C, 0x45, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x55, 0x54, 0x45, 0x52, 0x2C, 0x20, 0x49, 0x4E, 0x43, 0x2E }; + + public static bool IsAppleModePage_30(byte[] pageResponse) + { + if(pageResponse == null) + return false; + + if((pageResponse[0] & 0x40) == 0x40) + return false; + + if((pageResponse[0] & 0x3F) != 0x30) + return false; + + if(pageResponse[1] + 2 != pageResponse.Length) + return false; + + if(pageResponse.Length != 30) + return false; + + byte[] str = new byte[20]; + Array.Copy(pageResponse, 10, str, 0, 20); + + return AppleOEMString.SequenceEqual(str); + } + #endregion Apple Mode Page 0x30: Apple OEM String } }