public static HP_ModePage_3D?DecodeHPModePage_3D(byte[] pageResponse) { if ((pageResponse?[0] &0x40) == 0x40) { return(null); } if ((pageResponse?[0] &0x3F) != 0x3D) { return(null); } if (pageResponse[1] + 2 != pageResponse.Length) { return(null); } if (pageResponse.Length != 4) { return(null); } var decoded = new HP_ModePage_3D(); decoded.PS |= (pageResponse[0] & 0x80) == 0x80; decoded.ResetBehaviour = (byte)(pageResponse[2] & 0x03); return(decoded); }
public static string PrettifyHPModePage_3D(HP_ModePage_3D?modePage) { if (!modePage.HasValue) { return(null); } HP_ModePage_3D page = modePage.Value; StringBuilder sb = new StringBuilder(); sb.AppendLine("HP Extended Reset Mode Page:"); if (page.PS) { sb.AppendLine("\tParameters can be saved"); } switch (page.ResetBehaviour) { case 0: sb.AppendLine("\tNormal reset behaviour"); break; case 1: sb.AppendLine("\tDrive will flush and position itself on a LUN or target reset"); break; case 2: sb.AppendLine("\tDrive will maintain position on a LUN or target reset"); break; } return(sb.ToString()); }