From dddb7da787009dedb78f8671f274b4f76b321e37 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 1 Nov 2015 04:02:09 +0000 Subject: [PATCH] Added structures from MMC-5. --- DiscImageChef.Decoders/ChangeLog | 5 + DiscImageChef.Decoders/SCSI/MMC/Features.cs | 396 +++++++++++++++++++- 2 files changed, 398 insertions(+), 3 deletions(-) diff --git a/DiscImageChef.Decoders/ChangeLog b/DiscImageChef.Decoders/ChangeLog index 425abc72b..8254e5e19 100644 --- a/DiscImageChef.Decoders/ChangeLog +++ b/DiscImageChef.Decoders/ChangeLog @@ -1,3 +1,8 @@ +2015-11-01 Natalia Portillo + + * SCSI/MMC/Features.cs: + Added structures from MMC-5. + 2015-11-01 Natalia Portillo * SCSI/MMC/Features.cs: diff --git a/DiscImageChef.Decoders/SCSI/MMC/Features.cs b/DiscImageChef.Decoders/SCSI/MMC/Features.cs index f3fdd12e5..5bec37d81 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/Features.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/Features.cs @@ -530,6 +530,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// public PhysicalInterfaces PhysicalInterfaceStandard; /// + /// Supports EVPD, Page Code and 16-bit Allocation Length as defined in SPC-3 + /// + public bool INQ2; + /// /// Supports Device Busy Event /// public bool DBE; @@ -727,6 +731,14 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// Feature is currently in use /// public bool Current; + /// + /// Compliant with DVD Multi Drive Read-only specifications + /// + public bool MULTI110; + /// + /// Supports reading all DVD-R DL including remapping + /// + public bool DualR; } /// @@ -786,6 +798,14 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// public ushort DataTypeSupported; /// + /// Can report Track Resources Information of READ DISC INFORMATION + /// + public bool TRIO; + /// + /// Supports Address Mode in RESERVE TRACK + /// + public bool ARSV; + /// /// Zero loss linking /// public bool BUF; @@ -831,6 +851,26 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// Feature is currently in use /// public bool Current; + /// + /// Supports formatting BD-RE without spare area + /// + public bool RENoSA; + /// + /// Supports expansion of the spare area on BD-RE + /// + public bool Expand; + /// + /// Supports FORMAT type 30h sub-type 11b + /// + public bool QCert; + /// + /// Supports FORMAT type 30h sub-type 10b + /// + public bool Cert; + /// + /// Supports FORMAT type 00h/32h sub-type 10b on BD-R + /// + public bool RRM; } /// @@ -943,7 +983,15 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// public bool Current; /// - /// Can format and write to MRW discs + /// Can read DVD+MRW discs + /// + public bool DVDPRead; + /// + /// Can write DVD+MRW discs + /// + public bool DVDPWrite; + /// + /// Can format and write to CD-MRW discs /// public bool Write; } @@ -1188,6 +1236,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// public bool BUF; /// + /// Supports writing DVD-R DL + /// + public bool RDL; + /// /// Test write /// public bool TestWrite; @@ -1266,6 +1318,26 @@ namespace DiscImageChef.Decoders.SCSI.MMC public bool Blank; } + /// + /// Layer Jump Recording Feature (0033h) + /// + public struct Feature_0033 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + public byte[] LinkSizes; + } + /// /// CD-RW Media Write Support Feature (0037h) /// @@ -1289,6 +1361,266 @@ namespace DiscImageChef.Decoders.SCSI.MMC public byte SubtypeSupport; } + /// + /// BD-R Pseudo-Overwrite (POW) Feature (0038h) + /// + public struct Feature_0038 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// DVD+RW Dual Layer Feature (003Ah) + /// + public struct Feature_003A + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Can format DVD+RW DL discs + /// + public bool Write; + /// + /// FORMAT UNIT supports quick start formatting + /// + public bool QuickStart; + /// + /// Drive only supports read compatibility stop + /// + public bool CloseOnly; + } + + /// + /// DVD+R Dual Layer Feature (003Bh) + /// + public struct Feature_003B + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Can format DVD+R DL discs + /// + public bool Write; + /// + /// FORMAT UNIT supports quick start formatting + /// + public bool QuickStart; + /// + /// Drive only supports read compatibility stop + /// + public bool CloseOnly; + } + + /// + /// BD Read Feature (0040h) + /// + public struct Feature_0040 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + public byte Class0BDREMSB; + public byte Class0BDRELSB; + public byte Class1BDREMSB; + public byte Class1BDRELSB; + public byte Class2BDREMSB; + public byte Class2BDRELSB; + public byte Class3BDREMSB; + public byte Class3BDRELSB; + public byte Class0BDRMSB; + public byte Class0BDRLSB; + public byte Class1BDRMSB; + public byte Class1BDRLSB; + public byte Class2BDRMSB; + public byte Class2BDRLSB; + public byte Class3BDRMSB; + public byte Class3BDRLSB; + public byte Class0BDROMMSB; + public byte Class0BDROMLSB; + public byte Class1BDROMMSB; + public byte Class1BDROMLSB; + public byte Class2BDROMMSB; + public byte Class2BDROMLSB; + public byte Class3BDROMMSB; + public byte Class3BDROMLSB; + } + + /// + /// BD Write Feature (0041h) + /// + public struct Feature_0041 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Supports verify not required + /// + public bool SVNR; + public byte Class0BDREMSB; + public byte Class0BDRELSB; + public byte Class1BDREMSB; + public byte Class1BDRELSB; + public byte Class2BDREMSB; + public byte Class2BDRELSB; + public byte Class3BDREMSB; + public byte Class3BDRELSB; + public byte Class0BDRMSB; + public byte Class0BDRLSB; + public byte Class1BDRMSB; + public byte Class1BDRLSB; + public byte Class2BDRMSB; + public byte Class2BDRLSB; + public byte Class3BDRMSB; + public byte Class3BDRLSB; + } + + /// + /// TSR Feature (0042h) + /// + public struct Feature_0042 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + + /// + /// HD DVD Read Feature (0050h) + /// + public struct Feature_0050 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Can read HD DVD-R + /// + public bool HDDVDR; + /// + /// Can read HD DVD-RAM + /// + public bool HDDVDRAM; + } + + + /// + /// HD DVD Write Feature (0051h) + /// + public struct Feature_0051 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Can write HD DVD-R + /// + public bool HDDVDR; + /// + /// Can write HD DVD-RAM + /// + public bool HDDVDRAM; + } + + /// + /// Hybrid Disc Feature (0080h) + /// + public struct Feature_0080 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Reset immunity + /// + public bool RI; + } + /// /// Power Management Feature (0100h) /// @@ -1414,6 +1746,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// Feature is currently in use /// public bool Current; + /// + /// Supports validating 5-bit mode field of READ BUFFER and WRITE BUFFER commands. + /// + public bool M5; } /// @@ -1506,7 +1842,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC } /// - /// Logical Unit serial number (0108h) + /// Drive serial number (0108h) /// public struct Feature_0108 { @@ -1523,7 +1859,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// public bool Current; /// - /// LUN serial number + /// Drive serial number /// public string Serial; } @@ -1616,6 +1952,60 @@ namespace DiscImageChef.Decoders.SCSI.MMC public ushort Second; } + /// + /// AACS Feature (010Dh) + /// + public struct Feature_010D + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + /// + /// Drive supports generating the binding nonce + /// + public bool BNG; + /// + /// Blocks required to store the binding nonce for the media + /// + public bool BindNonceBlocks; + /// + /// Maximum number of AGIDs supported concurrently + /// + public byte AGIDs; + /// + /// AACS version + /// + public byte AACSVersion; + } + + /// + /// VCPS Feature (0110h) + /// + public struct Feature_0110 + { + /// + /// Feature version + /// + public byte Version; + /// + /// Feature is persistent + /// + public bool Persistent; + /// + /// Feature is currently in use + /// + public bool Current; + } + public static class Features { }