File indexing completed on 2025-03-23 04:28:10
0001 /* 0002 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef _K3B_DEVICE_TYPES_H_ 0007 #define _K3B_DEVICE_TYPES_H_ 0008 0009 #include <QFlags> 0010 0011 namespace K3b { 0012 namespace Device { 0013 const unsigned short FEATURE_PROFILE_LIST = 0x000; 0014 const unsigned short FEATURE_CORE = 0x001; 0015 const unsigned short FEATURE_MORPHING = 0x002; 0016 const unsigned short FEATURE_REMOVABLE_MEDIA = 0x003; 0017 const unsigned short FEATURE_WRITE_PROTECT = 0x004; 0018 const unsigned short FEATURE_RANDOM_READABLE = 0x010; 0019 const unsigned short FEATURE_MULTI_READ = 0x01D; 0020 const unsigned short FEATURE_CD_READ = 0x01E; 0021 const unsigned short FEATURE_DVD_READ = 0x01F; 0022 const unsigned short FEATURE_RANDOM_WRITABLE = 0x020; 0023 const unsigned short FEATURE_INCREMENTAL_STREAMING_WRITABLE = 0x021; 0024 const unsigned short FEATURE_SECTOR_ERASABLE = 0x022; 0025 const unsigned short FEATURE_FORMATTABLE = 0x023; 0026 const unsigned short FEATURE_DEFECT_MANAGEMENT = 0x024; 0027 const unsigned short FEATURE_WRITE_ONCE = 0x025; 0028 const unsigned short FEATURE_RESTRICTED_OVERWRITE = 0x026; 0029 const unsigned short FEATURE_CD_RW_CAV_WRITE = 0x027; 0030 const unsigned short FEATURE_MRW = 0x028; 0031 const unsigned short FEATURE_ENHANCED_DEFECT_REPORTING = 0x029; 0032 const unsigned short FEATURE_DVD_PLUS_RW = 0x02A; 0033 const unsigned short FEATURE_DVD_PLUS_R = 0x02B; 0034 const unsigned short FEATURE_RIGID_RESTRICTED_OVERWRITE = 0x02C; 0035 const unsigned short FEATURE_CD_TRACK_AT_ONCE = 0x02D; 0036 const unsigned short FEATURE_CD_MASTERING = 0x02E; 0037 const unsigned short FEATURE_DVD_R_RW_WRITE = 0x02F; 0038 const unsigned short FEATURE_DDCD_READ = 0x030; 0039 const unsigned short FEATURE_DDCD_R_WRITE = 0x031; 0040 const unsigned short FEATURE_DDCD_RW_WRITE = 0x032; 0041 const unsigned short FEATURE_LAYER_JUMP_RECORDING = 0x033; 0042 const unsigned short FEATURE_CD_RW_MEDIA_WRITE_SUPPORT = 0x037; 0043 const unsigned short FEATURE_BD_PSEUDO_OVERWRITE = 0x038; 0044 const unsigned short FEATURE_DVD_PLUS_RW_DUAL_LAYER = 0x03A; /**< since MMC5 revision 3 */ 0045 const unsigned short FEATURE_DVD_PLUS_R_DUAL_LAYER = 0x03B; 0046 const unsigned short FEATURE_BD_READ = 0x040; 0047 const unsigned short FEATURE_BD_WRITE = 0x041; 0048 const unsigned short FEATURE_HD_DVD_READ = 0x050; 0049 const unsigned short FEATURE_HD_DVD_WRITE = 0x051; 0050 const unsigned short FEATURE_POWER_MANAGEMENT = 0x100; 0051 const unsigned short FEATURE_EMBEDDED_CHANGER = 0x102; 0052 const unsigned short FEATURE_CD_AUDIO_ANALOG_PLAY = 0x103; 0053 const unsigned short FEATURE_MICROCODE_UPGRADE = 0x104; 0054 const unsigned short FEATURE_TIMEOUT = 0x105; 0055 const unsigned short FEATURE_DVD_CSS = 0x106; 0056 const unsigned short FEATURE_REAL_TIME_STREAMING = 0x107; 0057 const unsigned short FEATURE_LOGICAL_UNIT_SERIAL_NUMBER = 0x108; 0058 const unsigned short FEATURE_DISC_CONTROL_BLOCKS = 0x10A; 0059 const unsigned short FEATURE_DVD_CPRM = 0x10B; 0060 const unsigned short FEATURE_FIRMWARE_DATE = 0x10C; 0061 0062 enum Interface { 0063 SCSI, /**< The device is accessed through the SCSI subsystem. */ 0064 IDE, /**< The device is accessed through the IDE (ATAPI) interface. */ 0065 OTHER /**< Unknown interface (this is not used as the DeviceManager does only handle SCSI and IDE anyway). */ 0066 }; 0067 0068 /** 0069 * Specifies the device type. Device::type() returns a bitwise or 0070 * of device types. 0071 */ 0072 enum DeviceType { 0073 DEVICE_CD_ROM = 0x1, /**< Device reads CD-ROM media (every device in K3b supports this.) */ 0074 DEVICE_CD_R = 0x2, /**< Device writes CD-R media */ 0075 DEVICE_CD_RW = 0x4, /**< Device writes CD-RW media */ 0076 DEVICE_DVD_ROM = 0x8, /**< Device reads DVD-ROM media */ 0077 DEVICE_DVD_RAM = 0x10, /**< Device writes DVD-RAM media */ 0078 DEVICE_DVD_R = 0x20, /**< Device writes DVD-R media */ 0079 DEVICE_DVD_RW = 0x40, /**< Device writes DVD-RW media */ 0080 DEVICE_DVD_R_DL = 0x80, /**< Device writes DVD-R Dual Layer media */ 0081 DEVICE_DVD_PLUS_R = 0x100, /**< Device writes DVD+R media */ 0082 DEVICE_DVD_PLUS_RW = 0x200, /**< Device writes DVD+RW media */ 0083 DEVICE_DVD_PLUS_R_DL = 0x400, /**< Device writes DVD+R Double Layer media */ 0084 DEVICE_HD_DVD_ROM = 0x800, /**< Device reads HD DVD-ROM media */ 0085 DEVICE_HD_DVD_R = 0x1000, /**< Device writes HD DVD-R media */ 0086 DEVICE_HD_DVD_RAM = 0x2000, /**< Device writes HD DVD-RAM media */ 0087 DEVICE_BD_ROM = 0x4000, /**< Device reads BD-ROM media */ 0088 DEVICE_BD_R = 0x8000, /**< Device writes BD-R media */ 0089 DEVICE_BD_RE = 0x10000 /**< Device writes BD-RE media */ 0090 }; 0091 Q_DECLARE_FLAGS( DeviceTypes, DeviceType ) 0092 0093 /** 0094 * The different writing modes. Device::writingModes() returns a bitwise or of writing modes. 0095 */ 0096 enum WritingMode { 0097 WRITINGMODE_SAO = 0x1, /**< Device writes CD or DVD-R media in Session at once (also known as DAO) writing mode */ 0098 WRITINGMODE_SAO_R96P = 0x2, /**< Device writes CD media with packed R-W subchannels Session at once writing mode */ 0099 WRITINGMODE_SAO_R96R = 0x4, /**< Device writes CD media with raw R-W subchannels Session at once writing mode */ 0100 WRITINGMODE_TAO = 0x8, /**< Device writes CD media in Track at once writing mode */ 0101 WRITINGMODE_RAW = 0x10, /**< Device writes CD media in Raw writing mode */ 0102 WRITINGMODE_RAW_R16 = 0x20, /**< Device writes CD media with P/Q subchannels in Raw writing mode */ 0103 WRITINGMODE_RAW_R96P = 0x40, /**< Device writes CD media with packed R-W subchannels Raw writing mode */ 0104 WRITINGMODE_RAW_R96R = 0x80, /**< Device writes CD media with raw R-W subchannels Raw writing mode */ 0105 WRITINGMODE_INCR_SEQ = 0x100, /**< Device writes DVD-R(W) media in incremental sequential writing mode */ 0106 WRITINGMODE_RES_OVWR = 0x200, /**< Device writes DVD-RW media in restricted overwrite mode */ 0107 WRITINGMODE_LAYER_JUMP = 0x400, /**< Device writes DVD-R Dual layer media in Layer Jump writing mode */ 0108 WRITINGMODE_RRM = 0x800, /**< Device writes BD-R media in Random Recording Mode */ 0109 WRITINGMODE_SRM = 0x1000, /**< Device writes BD-R media in Sequential recording mode */ 0110 WRITINGMODE_SRM_POW = 0x2000 /**< Device writes BD-R media in Pseudo overwrite Sequential recording mode */ 0111 }; 0112 Q_DECLARE_FLAGS( WritingModes, WritingMode ) 0113 0114 enum MediaState { 0115 STATE_UNKNOWN = 0x1, /**< Media state is unknown (when an error occurred or the device is unable to determine the media state). */ 0116 STATE_NO_MEDIA = 0x2, /**< No media inserted. */ 0117 STATE_COMPLETE = 0x4, /**< The inserted media is complete. */ 0118 STATE_INCOMPLETE = 0x8, /**< The inserted media is incomplete/appendable. */ 0119 STATE_EMPTY = 0x10, /**< The inserted media is empty. */ 0120 STATE_ALL = STATE_COMPLETE|STATE_INCOMPLETE|STATE_EMPTY 0121 }; 0122 Q_DECLARE_FLAGS( MediaStates, MediaState ) 0123 0124 enum BackGroundFormattingState { 0125 BG_FORMAT_INVALID = 0x0, 0126 BG_FORMAT_NONE = 0x1, 0127 BG_FORMAT_INCOMPLETE = 0x2, 0128 BG_FORMAT_IN_PROGRESS = 0x4, 0129 BG_FORMAT_COMPLETE = 0x8 0130 }; 0131 Q_DECLARE_FLAGS( BackGroundFormattingStates, BackGroundFormattingState ) 0132 0133 /** 0134 * Defines the media types used throughout K3b. 0135 * For all groups of media a flag is defined like MEDIA_REWRITABLE_DVD. 0136 * 0137 * None of the flags is defines as 0 so we can actually include things like 0138 * MEDIA_NONE in flag combinations. This is important when specifying sets 0139 * of supported media or the like. 0140 */ 0141 enum MediaType { 0142 /** Represents an unknown media type (when an error occurred) */ 0143 MEDIA_UNKNOWN = 0x1, 0144 0145 /** No medium is inserted. */ 0146 MEDIA_NONE = 0x2, 0147 0148 /** DVD-ROM media */ 0149 MEDIA_DVD_ROM = 0x4, 0150 0151 MEDIA_DVD_R = 0x8, 0152 0153 MEDIA_DVD_R_SEQ = 0x10, 0154 0155 /** Dual Layer DVD-R media. */ 0156 MEDIA_DVD_R_DL = 0x20, 0157 0158 MEDIA_DVD_R_DL_SEQ = 0x40, 0159 0160 MEDIA_DVD_R_DL_JUMP = 0x80, 0161 0162 MEDIA_DVD_RAM = 0x100, 0163 0164 MEDIA_DVD_RW = 0x200, 0165 0166 /** DVD-RW media formatted in Restricted Overwrite mode. */ 0167 MEDIA_DVD_RW_OVWR = 0x400, 0168 0169 /** DVD-RW media formatted in Incremental Sequential mode. */ 0170 MEDIA_DVD_RW_SEQ = 0x800, 0171 0172 MEDIA_DVD_PLUS_RW = 0x1000, 0173 0174 MEDIA_DVD_PLUS_R = 0x2000, 0175 0176 /** Double Layer DVD+R media. */ 0177 MEDIA_DVD_PLUS_R_DL = 0x4000, 0178 0179 /** Double Layer DVD+RW media. */ 0180 MEDIA_DVD_PLUS_RW_DL = 0x8000, 0181 0182 MEDIA_CD_ROM = 0x10000, 0183 MEDIA_CD_R = 0x20000, 0184 MEDIA_CD_RW = 0x40000, 0185 MEDIA_HD_DVD_ROM = 0x80000, 0186 MEDIA_HD_DVD_R = 0x100000, 0187 MEDIA_HD_DVD_RAM = 0x200000, 0188 0189 /** Read-only Blu-ray Disc (BD) */ 0190 MEDIA_BD_ROM = 0x400000, 0191 0192 /** Writable Blu-ray Disc (BD-R) */ 0193 MEDIA_BD_R = 0x800000, 0194 0195 /** Writable Blu-ray Disc (BD-R) */ 0196 MEDIA_BD_R_SRM = 0x1000000, 0197 0198 /** Writable Blu-ray Disc (BD-R) */ 0199 MEDIA_BD_R_SRM_POW = 0x2000000, 0200 0201 /** Writable Blu-ray Disc (BD-R) */ 0202 MEDIA_BD_R_RRM = 0x4000000, 0203 0204 /** Rewritable Blu-ray Disc (BD-RE) */ 0205 MEDIA_BD_RE = 0x8000000, 0206 0207 /** This is a bitwise or of media types representing all writable CD media.*/ 0208 MEDIA_WRITABLE_CD = MEDIA_CD_R | 0209 MEDIA_CD_RW, 0210 0211 MEDIA_CD_ALL = MEDIA_WRITABLE_CD | 0212 MEDIA_CD_ROM, 0213 0214 MEDIA_REWRITABLE_DVD_SL = MEDIA_DVD_RW | 0215 MEDIA_DVD_RW_OVWR | 0216 MEDIA_DVD_RW_SEQ | 0217 MEDIA_DVD_PLUS_RW, 0218 0219 MEDIA_REWRITABLE_DVD_DL = MEDIA_DVD_PLUS_RW_DL, 0220 0221 MEDIA_REWRITABLE_DVD = MEDIA_REWRITABLE_DVD_SL | 0222 MEDIA_DVD_PLUS_RW_DL, 0223 0224 /** This is a bitwise or of media types representing all writable single layer DVD media. */ 0225 MEDIA_WRITABLE_DVD_SL = MEDIA_REWRITABLE_DVD_SL | 0226 MEDIA_DVD_R | 0227 MEDIA_DVD_R_SEQ | 0228 MEDIA_DVD_RW | 0229 MEDIA_DVD_RW_OVWR | 0230 MEDIA_DVD_RW_SEQ | 0231 MEDIA_DVD_PLUS_RW | 0232 MEDIA_DVD_PLUS_R, 0233 0234 /** This is a bitwise or of media types representing all writable double layer DVD media. */ 0235 MEDIA_WRITABLE_DVD_DL = MEDIA_REWRITABLE_DVD_DL | 0236 MEDIA_DVD_R_DL | 0237 MEDIA_DVD_R_DL_SEQ | 0238 MEDIA_DVD_R_DL_JUMP | 0239 MEDIA_DVD_PLUS_R_DL | 0240 MEDIA_DVD_PLUS_RW_DL, 0241 0242 /** This is a bitwise or of media types representing all writable DVD media. */ 0243 MEDIA_WRITABLE_DVD = MEDIA_WRITABLE_DVD_SL | 0244 MEDIA_WRITABLE_DVD_DL, 0245 0246 MEDIA_REWRITABLE_BD = MEDIA_BD_RE, 0247 0248 /** This is a bitwise or of media types representing all writable BD media. */ 0249 MEDIA_WRITABLE_BD = MEDIA_REWRITABLE_BD | 0250 MEDIA_BD_R | 0251 MEDIA_BD_R_SRM | 0252 MEDIA_BD_R_SRM_POW | 0253 MEDIA_BD_R_RRM, 0254 0255 /** This is a bitwise or of media types representing all writable media. */ 0256 MEDIA_WRITABLE = MEDIA_WRITABLE_CD | 0257 MEDIA_WRITABLE_DVD | 0258 MEDIA_WRITABLE_BD, 0259 0260 MEDIA_REWRITABLE = MEDIA_CD_RW | 0261 MEDIA_REWRITABLE_DVD | 0262 MEDIA_REWRITABLE_BD, 0263 0264 /** This is a bitwise or of media types representing all DVD-R/W media. */ 0265 MEDIA_DVD_MINUS_ALL = MEDIA_DVD_R | 0266 MEDIA_DVD_R_SEQ | 0267 MEDIA_DVD_RW | 0268 MEDIA_DVD_RW_OVWR | 0269 MEDIA_DVD_RW_SEQ | 0270 MEDIA_DVD_R_DL | 0271 MEDIA_DVD_R_DL_SEQ | 0272 MEDIA_DVD_R_DL_JUMP, 0273 0274 /** This is a bitwise or of media types representing all DVD+R/W media. */ 0275 MEDIA_DVD_PLUS_ALL = MEDIA_DVD_PLUS_RW | 0276 MEDIA_DVD_PLUS_R | 0277 MEDIA_DVD_PLUS_R_DL | 0278 MEDIA_DVD_PLUS_RW_DL, 0279 0280 MEDIA_DVD_ALL = MEDIA_WRITABLE_DVD | 0281 MEDIA_DVD_ROM, 0282 0283 MEDIA_BD_ALL = MEDIA_WRITABLE_BD | 0284 MEDIA_BD_ROM, 0285 0286 MEDIA_ALL = MEDIA_CD_ALL | 0287 MEDIA_DVD_ALL | 0288 MEDIA_BD_ALL 0289 }; 0290 Q_DECLARE_FLAGS( MediaTypes, MediaType ) 0291 0292 enum SpeedMultiplicator { 0293 SPEED_FACTOR_CD = 175, 0294 SPEED_FACTOR_CD_MODE1 = 150, 0295 SPEED_FACTOR_DVD = 1385, 0296 SPEED_FACTOR_BD = 4496 // 4495.5 0297 }; 0298 0299 enum CopyrightProtectionSytemType { 0300 COPYRIGHT_PROTECTION_NONE = 0x0, 0301 COPYRIGHT_PROTECTION_CSS = 0x1, 0302 COPYRIGHT_PROTECTION_CPRM = 0x2, 0303 COPYRIGHT_PROTECTION_AACS_HD_DVD = 0x3, 0304 COPYRIGHT_PROTECTION_AACS_BD = 0x10 0305 }; 0306 0307 inline bool isDvdMedia( MediaTypes mediaType ) { 0308 return ( mediaType & MEDIA_DVD_ALL ); 0309 } 0310 0311 inline bool isCdMedia( MediaTypes mediaType ) { 0312 return ( mediaType & MEDIA_CD_ALL ); 0313 } 0314 0315 inline bool isBdMedia( MediaTypes mediaType ) { 0316 return ( mediaType & MEDIA_BD_ALL ); 0317 } 0318 0319 inline bool isRewritableMedia( MediaTypes mediaType ) { 0320 return ( mediaType & MEDIA_REWRITABLE ); 0321 } 0322 } 0323 } 0324 0325 Q_DECLARE_OPERATORS_FOR_FLAGS(K3b::Device::DeviceTypes) 0326 Q_DECLARE_OPERATORS_FOR_FLAGS(K3b::Device::WritingModes) 0327 Q_DECLARE_OPERATORS_FOR_FLAGS(K3b::Device::MediaStates) 0328 Q_DECLARE_OPERATORS_FOR_FLAGS(K3b::Device::BackGroundFormattingStates) 0329 Q_DECLARE_OPERATORS_FOR_FLAGS(K3b::Device::MediaTypes) 0330 0331 #endif