// /*************************************************************************** // Aaru Data Preservation Suite // ---------------------------------------------------------------------------- // // Filename : Images.cs // Author(s) : Natalia Portillo // // Component : Disc image plugins. // // --[ Description ] ---------------------------------------------------------- // // Defines enumerations to be used by disc image plugins. // // --[ License ] -------------------------------------------------------------- // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // ---------------------------------------------------------------------------- // Copyright © 2011-2021 Natalia Portillo // Copyright © 2020-2021 Rebecca Wallander // ****************************************************************************/ using System; using System.Diagnostics.CodeAnalysis; // ReSharper disable UnusedMember.Global namespace Aaru.CommonTypes.Enums { /// Track (as partitioning element) types. public enum TrackType : byte { /// Audio track Audio = 0, /// Data track (not any of the below defined ones) Data = 1, /// Data track, compact disc mode 1 CdMode1 = 2, /// Data track, compact disc mode 2, formless CdMode2Formless = 3, /// Data track, compact disc mode 2, form 1 CdMode2Form1 = 4, /// Data track, compact disc mode 2, form 2 CdMode2Form2 = 5 } /// Type of subchannel in track public enum TrackSubchannelType : byte { /// Track does not has subchannel dumped, or it's not a CD None = 0, /// Subchannel is packed and error corrected Packed = 1, /// Subchannel is interleaved Raw = 2, /// Subchannel is packed and comes interleaved with main channel in same file PackedInterleaved = 3, /// Subchannel is interleaved and comes interleaved with main channel in same file RawInterleaved = 4, /// Only Q subchannel is stored as 16 bytes Q16 = 5, /// Only Q subchannel is stored as 16 bytes and comes interleaved with main channel in same file Q16Interleaved = 6 } /// Metadata present for each sector (aka, "tag"). public enum SectorTagType { /// Apple's GCR sector tags, 12 bytes AppleSectorTag = 0, /// Sync frame from CD sector, 12 bytes CdSectorSync = 1, /// CD sector header, 4 bytes CdSectorHeader = 2, /// CD mode 2 sector subheader CdSectorSubHeader = 3, /// CD sector EDC, 4 bytes CdSectorEdc = 4, /// CD sector ECC P, 172 bytes CdSectorEccP = 5, /// CD sector ECC Q, 104 bytes CdSectorEccQ = 6, /// CD sector ECC (P and Q), 276 bytes CdSectorEcc = 7, /// CD sector subchannel, 96 bytes CdSectorSubchannel = 8, /// CD track ISRC, string, 12 bytes CdTrackIsrc = 9, /// CD track text, string, 13 bytes CdTrackText = 10, /// CD track flags, 1 byte CdTrackFlags = 11, /// DVD sector copyright information DvdCmi = 12, /// Floppy address mark (contents depend on underlying floppy format) FloppyAddressMark = 13, /// DVD sector title key, 5 bytes DvdTitleKey = 14, /// Decrypted DVD sector title key, 5 bytes DvdTitleKeyDecrypted = 15 } /// Metadata present for each media. [SuppressMessage("ReSharper", "InconsistentNaming")] public enum MediaTagType { /// CD table of contents CD_TOC = 0, /// CD session information CD_SessionInfo = 1, /// CD full table of contents CD_FullTOC = 2, /// CD PMA CD_PMA = 3, /// CD Address-Time-In-Pregroove CD_ATIP = 4, /// CD-Text CD_TEXT = 5, /// CD Media Catalogue Number CD_MCN = 6, /// DVD/HD DVD Physical Format Information DVD_PFI = 7, /// DVD Lead-in Copyright Management Information DVD_CMI = 8, /// DVD disc key DVD_DiscKey = 9, /// DVD/HD DVD Burst Cutting Area DVD_BCA = 10, /// DVD/HD DVD Lead-in Disc Manufacturer Information DVD_DMI = 11, /// Media identifier DVD_MediaIdentifier = 12, /// Media key block DVD_MKB = 13, /// DVD-RAM/HD DVD-RAM DDS information DVDRAM_DDS = 14, /// DVD-RAM/HD DVD-RAM Medium status DVDRAM_MediumStatus = 15, /// DVD-RAM/HD DVD-RAM Spare area information DVDRAM_SpareArea = 16, /// DVD-R/-RW/HD DVD-R RMD in last border-out DVDR_RMD = 17, /// Pre-recorded information from DVD-R/-RW lead-in DVDR_PreRecordedInfo = 18, /// DVD-R/-RW/HD DVD-R media identifier DVDR_MediaIdentifier = 19, /// DVD-R/-RW/HD DVD-R physical format information DVDR_PFI = 20, /// ADIP information DVD_ADIP = 21, /// HD DVD Lead-in copyright protection information HDDVD_CPI = 22, /// HD DVD-R Medium Status HDDVD_MediumStatus = 23, /// DVD+/-R DL Layer capacity DVDDL_LayerCapacity = 24, /// DVD-R DL Middle Zone start address DVDDL_MiddleZoneAddress = 25, /// DVD-R DL Jump Interval Size DVDDL_JumpIntervalSize = 26, /// DVD-R DL Start LBA of the manual layer jump DVDDL_ManualLayerJumpLBA = 27, /// Blu-ray Disc Information BD_DI = 28, /// Blu-ray Burst Cutting Area BD_BCA = 29, /// Blu-ray Disc Definition Structure BD_DDS = 30, /// Blu-ray Cartridge Status BD_CartridgeStatus = 31, /// Blu-ray Status of Spare Area BD_SpareArea = 32, /// AACS volume identifier AACS_VolumeIdentifier = 33, /// AACS pre-recorded media serial number AACS_SerialNumber = 34, /// AACS media identifier AACS_MediaIdentifier = 35, /// Lead-in AACS media key block AACS_MKB = 36, /// AACS data keys AACS_DataKeys = 37, /// LBA extents flagged for bus encryption by AACS AACS_LBAExtents = 38, /// CPRM media key block in Lead-in AACS_CPRM_MKB = 39, /// Recognized layer formats in hybrid discs Hybrid_RecognizedLayers = 40, /// Disc write protection status MMC_WriteProtection = 41, /// Disc standard information MMC_DiscInformation = 42, /// Disc track resources information MMC_TrackResourcesInformation = 43, /// BD-R Pseudo-overwrite information MMC_POWResourcesInformation = 44, /// SCSI INQUIRY response SCSI_INQUIRY = 45, /// SCSI MODE PAGE 2Ah SCSI_MODEPAGE_2A = 46, /// ATA IDENTIFY DEVICE response ATA_IDENTIFY = 47, /// ATA IDENTIFY PACKET DEVICE response ATAPI_IDENTIFY = 48, /// PCMCIA/CardBus Card Information Structure PCMCIA_CIS = 49, /// SecureDigital CID SD_CID = 50, /// SecureDigital CSD SD_CSD = 51, /// SecureDigital SCR SD_SCR = 52, /// SecureDigital OCR SD_OCR = 53, /// MultiMediaCard CID MMC_CID = 54, /// MultiMediaCard CSD MMC_CSD = 55, /// MultiMediaCard OCR MMC_OCR = 56, /// MultiMediaCard Extended CSD MMC_ExtendedCSD = 57, /// Xbox Security Sector Xbox_SecuritySector = 58, /// /// On floppy disks, data in last cylinder usually in a different format that contains duplication or /// manufacturing information /// Floppy_LeadOut = 59, /// DVD Disc Control Blocks DCB = 60, /// Compact Disc First Track Pregap CD_FirstTrackPregap = 61, /// Compact Disc Lead-out CD_LeadOut = 62, /// SCSI MODE SENSE (6) SCSI_MODESENSE_6 = 63, /// SCSI MODE SENSE (10) SCSI_MODESENSE_10 = 64, /// USB descriptors USB_Descriptors = 65, /// XGD unlocked DMI Xbox_DMI = 66, /// XDG unlocked PFI Xbox_PFI = 67, /// Compact Disc Lead-in CD_LeadIn = 68, /// 8 bytes response that seems to define type of MiniDisc MiniDiscType = 69, /// 4 bytes response to vendor command D5h MiniDiscD5 = 70, /// User TOC, contains fragments, track names, and can be from 1 to 3 sectors of 2336 bytes MiniDiscUTOC = 71, /// Not entirely clear kind of TOC that only appears on MD-DATA discs MiniDiscDTOC = 72, /// Decrypted DVD disc key DVD_DiscKey_Decrypted = 73 } /// Enumeration of media types defined in CICM metadata public enum XmlMediaType : byte { /// Purely optical discs OpticalDisc = 0, /// Media that is physically block-based or abstracted like that BlockMedia = 1, /// Media that can be accessed by-byte or by-bit, like chips LinearMedia = 2, /// Media that can only store data when it is modulated to audio AudioMedia = 3 } /// CD flags bitmask [Flags] public enum CdFlags : byte { /// Track is quadraphonic. FourChannel = 0x08, /// Track is non-audio (data). DataTrack = 0x04, /// Track is copy protected. CopyPermitted = 0x02, /// Track has pre-emphasis. PreEmphasis = 0x01 } /// Status of a requested floppy sector [Flags] public enum FloppySectorStatus : byte { /// Both address mark and data checksums are correct. Correct = 0x01, /// Data checksum is incorrect. DataError = 0x02, /// Address mark checksum is incorrect. AddressMarkError = 0x04, /// There is another sector in the same track/head with same sector id. Duplicated = 0x08, /// Sector data section is not magnetized. Demagnetized = 0x10, /// Sector data section has a physically visible hole. Hole = 0x20, /// There is no address mark containing the requested sector id in the track/head. NotFound = 0x40 } public enum FloppyTypes : byte { /// 8" floppy Floppy, /// 5.25" floppy MiniFloppy, /// 3.5" floppy MicroFloppy, /// 3" floppy CompactFloppy, /// 5.25" twiggy FileWare, /// 2.5" quickdisk QuickDisk } public enum FloppyDensities : byte { /// Standard coercivity (about 300Oe as found in 8" and 5.25"-double-density disks). Standard, /// Double density coercivity (about 600Oe as found in 5.25" HD and 3.5" DD disks). Double, /// High density coercivity (about 700Oe as found in 3.5" HD disks). High, /// Extended density coercivity (about 750Oe as found in 3.5" ED disks). Extended } [Flags] public enum OpticalImageCapabilities : ulong { CanStoreAudioTracks = 0x01, CanStoreVideoTracks = 0x02, CanStoreDataTracks = 0x03, CanStorePregaps = 0x04, CanStoreIndexes = 0x08, CanStoreSubchannelRw = 0x10, CanStoreSessions = 0x20, CanStoreIsrc = 0x40, CanStoreCdText = 0x80, CanStoreMcn = 0x100, CanStoreRawData = 0x200, CanStoreNotCdSessions = 0x2000, CanStoreNotCdTracks = 0x4000, // TODO: Implement CanStoreScrambledData = 0x400, CanStoreCookedData = 0x800, CanStoreMultipleTracks = 0x1000 } }