예제 #1
0
        public static Certance_ModePage_22?DecodeCertanceModePage_22(byte[] pageResponse)
        {
            if ((pageResponse?[0] &0x40) == 0x40)
            {
                return(null);
            }

            if ((pageResponse?[0] &0x3F) != 0x22)
            {
                return(null);
            }

            if (pageResponse[1] + 2 != pageResponse.Length)
            {
                return(null);
            }

            if (pageResponse.Length != 16)
            {
                return(null);
            }

            var decoded = new Certance_ModePage_22();

            decoded.PS                       |= (pageResponse[0] & 0x80) == 0x80;
            decoded.BaudRate                  = pageResponse[2];
            decoded.CmdFwd                    = (byte)((pageResponse[3] & 0x18) >> 3);
            decoded.StopBits                 |= (pageResponse[3] & 0x04) == 0x04;
            decoded.CmdFwd                    = (byte)(pageResponse[3] & 0x03);
            decoded.PortATransportType        = pageResponse[4];
            decoded.PortAPresentSelectionID   = pageResponse[7];
            decoded.NextSelectionID           = pageResponse[12];
            decoded.JumperedSelectionID       = pageResponse[13];
            decoded.TargetInitiatedBusControl = pageResponse[14];
            decoded.PortAEnabled             |= (pageResponse[15] & 0x10) == 0x10;
            decoded.PortAEnabledOnPower      |= (pageResponse[15] & 0x04) == 0x04;

            return(decoded);
        }
예제 #2
0
        public static string PrettifyCertanceModePage_22(Certance_ModePage_22?modePage)
        {
            if (!modePage.HasValue)
            {
                return(null);
            }

            Certance_ModePage_22 page = modePage.Value;
            var sb = new StringBuilder();

            sb.AppendLine("Certance Interface Control Mode Page:");

            if (page.PS)
            {
                sb.AppendLine("\tParameters can be saved");
            }

            switch (page.BaudRate)
            {
            case 0:
            case 1:
            case 2:
                sb.AppendLine("\tLibrary interface will operate at 9600 baud on next reset");

                break;

            case 3:
                sb.AppendLine("\tLibrary interface will operate at 19200 baud on next reset");

                break;

            case 4:
                sb.AppendLine("\tLibrary interface will operate at 38400 baud on next reset");

                break;

            case 5:
                sb.AppendLine("\tLibrary interface will operate at 57600 baud on next reset");

                break;

            case 6:
                sb.AppendLine("\tLibrary interface will operate at 115200 baud on next reset");

                break;

            default:
                sb.AppendFormat("\tUnknown library interface baud rate code {0}", page.BaudRate).AppendLine();

                break;
            }

            sb.AppendLine(page.StopBits ? "Library interface transmits 2 stop bits per byte"
                              : "Library interface transmits 1 stop bits per byte");

            switch (page.CmdFwd)
            {
            case 0:
                sb.AppendLine("\tCommand forwarding is disabled");

                break;

            case 1:
                sb.AppendLine("\tCommand forwarding is enabled");

                break;

            default:
                sb.AppendFormat("\tUnknown command forwarding code {0}", page.CmdFwd).AppendLine();

                break;
            }

            switch (page.PortATransportType)
            {
            case 0:
                sb.AppendLine("\tPort A link is down");

                break;

            case 3:
                sb.AppendLine("\tPort A uses Parallel SCSI Ultra-160 interface");

                break;

            default:
                sb.AppendFormat("\tUnknown port A transport type code {0}", page.PortATransportType).AppendLine();

                break;
            }

            if (page.PortATransportType > 0)
            {
                sb.AppendFormat("\tDrive responds to SCSI ID {0}", page.PortAPresentSelectionID).AppendLine();
            }

            sb.AppendFormat("\tDrive will respond to SCSI ID {0} on Port A enabling", page.NextSelectionID).
            AppendLine();

            sb.AppendFormat("\tDrive jumpers choose SCSI ID {0}", page.JumperedSelectionID).AppendLine();

            sb.AppendLine(page.PortAEnabled ? "\tSCSI port is enabled" : "\tSCSI port is disabled");

            sb.AppendLine(page.PortAEnabledOnPower ? "\tSCSI port will be enabled on next power up"
                              : "\tSCSI port will be disabled on next power up");

            return(sb.ToString());
        }