From f8a3f770a3b4d936c43fdf9267fa18ef36cdb54b Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 24 Oct 2015 00:03:54 +0100 Subject: [PATCH] Added information from ANSI X3T9.3 No. 185 (SASI) --- DiscImageChef.Devices/ChangeLog | 5 ++ DiscImageChef.Devices/Enums.cs | 137 ++++++++++++++++++++++++++------ 2 files changed, 116 insertions(+), 26 deletions(-) diff --git a/DiscImageChef.Devices/ChangeLog b/DiscImageChef.Devices/ChangeLog index b87d2b35..ce4b2bd8 100644 --- a/DiscImageChef.Devices/ChangeLog +++ b/DiscImageChef.Devices/ChangeLog @@ -1,3 +1,8 @@ +2015-10-24 Natalia Portillo + + * Enums.cs: + Added information from ANSI X3T9.3 No. 185 (SASI) + 2015-10-23 Natalia Portillo * Enums.cs: diff --git a/DiscImageChef.Devices/Enums.cs b/DiscImageChef.Devices/Enums.cs index 92fbf550..673e1ddd 100644 --- a/DiscImageChef.Devices/Enums.cs +++ b/DiscImageChef.Devices/Enums.cs @@ -914,6 +914,7 @@ namespace DiscImageChef.Devices /// Commands 0x00 to 0x1F are 6-byte /// Commands 0x20 to 0x3F are 10-byte /// Commands 0x40 to 0x5F are 8-byte + /// Commands 0xA0 to 0xBF are 12-byte /// #region SASI Commands public enum SasiCommands : byte @@ -981,6 +982,10 @@ namespace DiscImageChef.Devices /// Seek = 0x0B, /// + /// Found on a vendor source code + /// + InitDriveCharacteristics = 0x0C, + /// /// Unknown /// SASI rev. 0a /// @@ -999,12 +1004,17 @@ namespace DiscImageChef.Devices /// Reserves the device for use by the iniator. /// SASI rev. 0a /// - ReserveUnit = 0x12, + ReserveUnitOld = 0x12, + /// + /// Gets information about a device + /// ANSI X3T9.3 No. 185 (SASI) + /// + Inquiry = 0x12, /// /// Release the device from the reservation. /// SASI rev. 0a /// - ReleaseUnit = 0x13, + ReleaseUnitOld = 0x13, /// /// Unknown /// SASI rev. 0a @@ -1014,7 +1024,7 @@ namespace DiscImageChef.Devices /// Writes and verifies blocks to the device. /// SASI rev. 0c /// - WriteVerify = 0x14, + WriteAndVerifyOld = 0x14, /// /// Unknown /// SASI rev. 0a @@ -1024,7 +1034,7 @@ namespace DiscImageChef.Devices /// Verifies blocks. /// SASI rev. 0c /// - Verify = 0x15, + VerifyOld = 0x15, /// /// Unknown /// SASI rev. 0a @@ -1034,27 +1044,37 @@ namespace DiscImageChef.Devices /// Gets the number of blocks in device. /// SASI rev. 0c /// - ReadCapacity = 0x16, + ReadCapacityOld = 0x16, + /// + /// Reserves the device for use by the iniator. + /// ANSI X3T9.3 No. 185 (SASI) + /// + ReserveUnit = 0x16, + /// + /// Release the device from the reservation. + /// ANSI X3T9.3 No. 185 (SASI) + /// + ReleaseUnit = 0x17, /// /// Searches data on blocks /// SASI rev. 0a /// - SearchDataEqual = 0x17, + SearchDataEqualOld = 0x17, /// /// Searches data on blocks using major than or equal comparison /// SASI rev. 0a /// - SearchDataHigh = 0x18, + SearchDataHighOld = 0x18, /// /// Searches data on blocks using minor than or equal comparison /// SASI rev. 0a /// - SearchDataLow = 0x19, + SearchDataLowOld = 0x19, /// /// Reads analysis data from a device /// SASI rev. 0a /// - ReadDiagnostic = 0x1A, + ReadDiagnosticOld = 0x1A, /// /// Unknown /// SASI rev. 0a @@ -1064,12 +1084,22 @@ namespace DiscImageChef.Devices /// Requests a device to run a diagnostic /// SASI rev. 0c /// - WriteDiagnostic = 0x1B, + WriteDiagnosticOld = 0x1B, + /// + /// Requests the data after completion of a + /// ANSI X3T9.3 No. 185 (SASI) + /// + ReadDiagnostic = 0x1C, + /// + /// Requests the device to perform diagnostics + /// ANSI X3T9.3 No. 185 (SASI) + /// + WriteDiagnostic = 0x1D, /// /// Gets information about a device /// SASI rev. 0c /// - Inquiry = 0x1F, + InquiryOld = 0x1F, #endregion SASI Class 0 commands #region SASI Class 1 commands @@ -1093,12 +1123,48 @@ namespace DiscImageChef.Devices /// SASI rev. 0a /// Unknown /// - SetBlockLimitsOld = 0x26, + SetBlockLimitsOlder = 0x26, /// /// Sets write or read limits from a specified block /// SASI rev. 0c /// - SetBlockLimits = 0x28, + SetBlockLimitsOld = 0x28, + /// + /// Reads blocks from device + /// ANSI X3T9.3 No. 185 (SASI) + /// + ExtendedAddressRead = 0x28, + /// + /// Writes blocks to the device + /// ANSI X3T9.3 No. 185 (SASI) + /// + ExtendedAddressWrite = 0x2A, + /// + /// Writes blocks to the device and then verifies them + /// ANSI X3T9.3 No. 185 (SASI) + /// + WriteAndVerify = 0x2E, + /// + /// Verifies blocks on the device + /// ANSI X3T9.3 No. 185 (SASI) + /// + Verify = 0x2F, + /// + /// Searches data on blocks + /// ANSI X3T9.3 No. 185 (SASI) + /// + SearchDataEqual = 0x31, + /// + /// Searches data on blocks using major than or equal comparison + /// ANSI X3T9.3 No. 185 (SASI) + /// + SearchDataHigh = 0x30, + /// + /// Searches data on blocks using minor than or equal comparison + /// ANSI X3T9.3 No. 185 (SASI) + /// + SearchDataLow = 0x32, + #endregion SASI Class 1 commands #region SASI Class 2 commands @@ -1242,6 +1308,21 @@ namespace DiscImageChef.Devices WriteControl = 0x66, #endregion SASI Class 3 commands + #region SASI Class 5 commands + + /// + /// Gets the number of blocks in device. + /// ANSI X3T9.3 No. 185 (SASI) + /// + ReadCapacity = 0xA5, + /// + /// Sets write or read limits from a specified block + /// ANSI X3T9.3 No. 185 (SASI) + /// + SetBlockLimits = 0xA9, + + #endregion SASI Class 5 commands + #region SASI Class 6 commands /// @@ -1279,7 +1360,11 @@ namespace DiscImageChef.Devices /// /// SASI rev. 0a /// - DriveDiagnostic = 0xE3 + DriveDiagnostic = 0xE3, + /// + /// Found on a vendor source code + /// + ControllerDiagnostic = 0xE4, #endregion SASI Class 7 commands } @@ -1332,7 +1417,7 @@ namespace DiscImageChef.Devices /// Requests information about the device /// ECMA-111 (SCSI-1) /// - Inquiry = 0x12, + Inquiry = SasiCommands.Inquiry, /// /// Manages device statistics /// SCSI-2 X3T9.2/375R rev. 10l @@ -1412,12 +1497,12 @@ namespace DiscImageChef.Devices /// Requests the data after completion of a /// ECMA-111 (SCSI-1) /// - ReceiveDiagnostic = 0x1C, + ReceiveDiagnostic = SasiCommands.ReadDiagnostic, /// /// Releases a previously reserved LUN or extents /// ECMA-111 (SCSI-1) /// - Release = 0x17, + Release = SasiCommands.ReleaseUnit, /// /// Releases a previously reserved LUN or extents /// SPC-1 rev. 10 @@ -1437,7 +1522,7 @@ namespace DiscImageChef.Devices /// Reserves a LUN or extent /// ECMA-111 (SCSI-1) /// - Reserve = 0x16, + Reserve = SasiCommands.ReserveUnit, /// /// Reserves a LUN or extent /// SPC-1 rev. 10 @@ -1457,7 +1542,7 @@ namespace DiscImageChef.Devices /// Requests the device to perform diagnostics /// ECMA-111 (SCSI-1) /// - SendDiagnostic = 0x1D, + SendDiagnostic = SasiCommands.WriteDiagnostic, /// /// Extended commands /// SPC-4 @@ -1535,7 +1620,7 @@ namespace DiscImageChef.Devices /// Reads blocks from device /// ECMA-111 (SCSI-1) /// - Read10 = 0x28, + Read10 = SasiCommands.ExtendedAddressRead, /// /// Reads blocks from device /// SBC-2 rev. 4 @@ -1580,17 +1665,17 @@ namespace DiscImageChef.Devices /// Searches data on blocks /// ECMA-111 (SCSI-1) /// - SearchDataEqual = 0x31, + SearchDataEqual = SasiCommands.SearchDataEqual, /// /// Searches data on blocks using major than or equal comparison /// ECMA-111 (SCSI-1) /// - SearchDataHigh = 0x30, + SearchDataHigh = SasiCommands.SearchDataHigh, /// /// Searches data on blocks using minor than or equal comparison /// ECMA-111 (SCSI-1) /// - SearchDataLow = 0x32, + SearchDataLow = SasiCommands.SearchDataLow, /// /// Requests the device to seek to a specified blocks /// ECMA-111 (SCSI-1) @@ -1631,7 +1716,7 @@ namespace DiscImageChef.Devices /// Verifies blocks on the device /// ECMA-111 (SCSI-1) /// - Verify10 = 0x2F, + Verify10 = SasiCommands.Verify, /// /// Verifies blocks on the device /// SBC-2 rev. 4 @@ -1646,7 +1731,7 @@ namespace DiscImageChef.Devices /// Writes blocks to the device /// ECMA-111 (SCSI-1) /// - Write10 = 0x2A, + Write10 = SasiCommands.ExtendedAddressWrite, /// /// Writes blocks to the device /// SBC-2 rev. 4 @@ -1656,7 +1741,7 @@ namespace DiscImageChef.Devices /// Writes blocks to the device and then verifies them /// ECMA-111 (SCSI-1) /// - WriteAndVerify = 0x2E, + WriteAndVerify = SasiCommands.WriteAndVerify, /// /// Writes blocks to the device and then verifies them /// SBC-2 rev. 4