public static string PrettifyIBMModePage_24(IBM_ModePage_24?modePage) { if (!modePage.HasValue) { return(null); } IBM_ModePage_24 page = modePage.Value; StringBuilder sb = new StringBuilder(); sb.AppendLine("IBM Vendor-Specific Control Mode Page:"); if (page.PS) { sb.AppendLine("\tParameters can be saved"); } sb.AppendFormat("\tVendor-specific mode control: {0}", page.ModeControl); sb.AppendFormat("\tVendor-specific velocity setting: {0}", page.VelocitySetting); if (!page.EncryptionCapable) { return(sb.ToString()); } sb.AppendLine("\tDrive supports encryption"); if (page.EncryptionEnabled) { sb.AppendLine("\tDrive has encryption enabled"); } return(sb.ToString()); }
public static IBM_ModePage_24?DecodeIBMModePage_24(byte[] pageResponse) { if ((pageResponse?[0] &0x40) == 0x40) { return(null); } if ((pageResponse?[0] &0x3F) != 0x24) { return(null); } if (pageResponse[1] + 2 != pageResponse.Length) { return(null); } if (pageResponse.Length != 8) { return(null); } IBM_ModePage_24 decoded = new IBM_ModePage_24(); decoded.PS |= (pageResponse[0] & 0x80) == 0x80; decoded.ModeControl = pageResponse[2]; decoded.VelocitySetting = pageResponse[3]; decoded.EncryptionEnabled |= (pageResponse[7] & 0x08) == 0x08; decoded.EncryptionCapable |= (pageResponse[7] & 0x01) == 0x01; return(decoded); }