示例#1
0
        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());
        }
示例#2
0
        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);
        }