2017-12-18 19:11:03 +00:00
|
|
|
/***************************************************************************
|
|
|
|
|
The Disc Image Chef
|
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Filename : cdrom_mode.h
|
|
|
|
|
Author(s) : Natalia Portillo
|
|
|
|
|
|
|
|
|
|
Component : DiscImageChef.Device.Report
|
|
|
|
|
|
|
|
|
|
--[ Description ] ----------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Contains definitions for CD-ROM MODE PAGE (2Ah).
|
|
|
|
|
|
|
|
|
|
--[ License ] --------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as
|
|
|
|
|
published by the Free Software Foundation, either version 3 of the
|
|
|
|
|
License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------------
|
2017-12-19 03:50:57 +00:00
|
|
|
Copyright © 2011-2018 Natalia Portillo
|
2017-12-18 19:11:03 +00:00
|
|
|
****************************************************************************/
|
2017-12-18 06:17:18 +00:00
|
|
|
|
|
|
|
|
#ifndef DISCIMAGECHEF_DEVICE_REPORT_CDROM_MODE_H
|
|
|
|
|
#define DISCIMAGECHEF_DEVICE_REPORT_CDROM_MODE_H
|
|
|
|
|
|
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
2017-12-18 18:28:33 +00:00
|
|
|
uint8_t Reserved1;
|
|
|
|
|
uint8_t RotationControl : 3;
|
|
|
|
|
uint8_t Reserved2 : 5;
|
2017-12-18 06:17:18 +00:00
|
|
|
uint16_t WriteSpeed;
|
|
|
|
|
} ModePage_2A_WriteDescriptor;
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
2017-12-18 18:28:33 +00:00
|
|
|
uint8_t PageCode : 6;
|
|
|
|
|
uint8_t Reserved1 : 1;
|
|
|
|
|
/* Parameters can be saved */
|
|
|
|
|
uint8_t PS : 1;
|
|
|
|
|
uint8_t PageLength;
|
|
|
|
|
uint8_t ReadCDR : 1;
|
|
|
|
|
uint8_t ReadCDRW : 1;
|
|
|
|
|
uint8_t Method2 : 1;
|
|
|
|
|
uint8_t ReadDVDROM : 1;
|
|
|
|
|
uint8_t ReadDVDR : 1;
|
|
|
|
|
uint8_t ReadDVDRAM : 1;
|
|
|
|
|
uint8_t Reserved2 : 2;
|
|
|
|
|
uint8_t WriteCDR : 1;
|
|
|
|
|
uint8_t WriteCDRW : 1;
|
|
|
|
|
uint8_t TestWrite : 1;
|
|
|
|
|
uint8_t Reserved3 : 1;
|
|
|
|
|
uint8_t WriteDVDR : 1;
|
|
|
|
|
uint8_t WriteDVDRAM : 1;
|
|
|
|
|
uint8_t Reserved4 : 2;
|
|
|
|
|
/* Drive is capable of playing audio */
|
|
|
|
|
uint8_t AudioPlay : 1;
|
|
|
|
|
uint8_t Composite : 1;
|
|
|
|
|
uint8_t DigitalPort1 : 1;
|
|
|
|
|
uint8_t DigitalPort2 : 1;
|
|
|
|
|
/* Drive is capable of reading sectors in Mode 2 Form 1 format */
|
|
|
|
|
uint8_t Mode2Form1 : 1;
|
|
|
|
|
/* Drive is capable of reading sectors in Mode 2 Form 2 format */
|
|
|
|
|
uint8_t Mode2Form2 : 1;
|
2017-12-18 06:17:18 +00:00
|
|
|
/* Drive supports multi-session and/or Photo-CD */
|
2017-12-18 18:28:33 +00:00
|
|
|
uint8_t MultiSession : 1;
|
|
|
|
|
uint8_t BUF : 1;
|
|
|
|
|
/* Audio can be read as digital data */
|
|
|
|
|
uint8_t CDDACommand : 1;
|
|
|
|
|
/* Drive can continue from a loss of streaming on audio reading */
|
|
|
|
|
uint8_t AccurateCDDA : 1;
|
|
|
|
|
/* Drive can read interleaved and uncorrected R-W subchannels */
|
|
|
|
|
uint8_t Subchannel : 1;
|
|
|
|
|
/* Drive can read, deinterlave and correct R-W subchannels */
|
|
|
|
|
uint8_t DeinterlaveSubchannel : 1;
|
|
|
|
|
/* Drive can return C2 pointers */
|
|
|
|
|
uint8_t C2Pointer : 1;
|
|
|
|
|
/* Drive can return the media catalogue number */
|
|
|
|
|
uint8_t UPC : 1;
|
|
|
|
|
/* Drive can return the ISRC */
|
|
|
|
|
uint8_t ISRC : 1;
|
|
|
|
|
uint8_t ReadBarcode : 1;
|
2017-12-18 06:17:18 +00:00
|
|
|
/* Drive can lock media */
|
2017-12-18 18:28:33 +00:00
|
|
|
uint8_t Lock : 1;
|
|
|
|
|
/* Current lock status */
|
|
|
|
|
uint8_t LockState : 1;
|
|
|
|
|
/* Drive's optional prevent jumper status */
|
|
|
|
|
uint8_t PreventJumper : 1;
|
|
|
|
|
/* Drive can eject discs */
|
|
|
|
|
uint8_t Eject : 1;
|
|
|
|
|
uint8_t Reserved5 : 1;
|
2017-12-18 06:17:18 +00:00
|
|
|
/* Loading Mechanism Type */
|
2017-12-18 18:28:33 +00:00
|
|
|
uint8_t LoadingMechanism : 3;
|
2017-12-18 06:17:18 +00:00
|
|
|
/* Each channel's volume can be controlled independently */
|
2017-12-18 18:28:33 +00:00
|
|
|
uint8_t SeparateChannelVolume : 1;
|
|
|
|
|
/* Each channel can be muted independently */
|
|
|
|
|
uint8_t SeparateChannelMute : 1;
|
|
|
|
|
uint8_t SDP : 1;
|
|
|
|
|
uint8_t SSS : 1;
|
|
|
|
|
uint8_t SCC : 1;
|
|
|
|
|
uint8_t LeadInPW : 1;
|
|
|
|
|
uint8_t Reserved6 : 2;
|
|
|
|
|
/* Maximum drive speed in Kbytes/second */
|
|
|
|
|
uint16_t MaximumSpeed;
|
|
|
|
|
/* Supported volume levels */
|
|
|
|
|
uint16_t SupportedVolumeLevels;
|
|
|
|
|
/* Buffer size in Kbytes */
|
|
|
|
|
uint16_t BufferSize;
|
|
|
|
|
/* Current drive speed in Kbytes/second */
|
|
|
|
|
uint16_t CurrentSpeed;
|
|
|
|
|
uint8_t Reserved7;
|
|
|
|
|
uint8_t Reserved8 : 1;
|
|
|
|
|
uint8_t BCK : 1;
|
|
|
|
|
uint8_t RCK : 1;
|
|
|
|
|
uint8_t LSBF : 1;
|
|
|
|
|
uint8_t Length : 2;
|
|
|
|
|
uint8_t Reserved9 : 2;
|
|
|
|
|
uint16_t MaxWriteSpeed;
|
|
|
|
|
uint16_t CurrentWriteSpeed;
|
|
|
|
|
uint16_t CMRSupported;
|
|
|
|
|
uint8_t Reserved10[3];
|
|
|
|
|
uint8_t RotationControlSelected : 2;
|
|
|
|
|
uint8_t Reserved11 : 6;
|
|
|
|
|
uint16_t CurrentWriteSpeedSelected;
|
|
|
|
|
uint16_t LogicalWriteSpeedDescriptors;
|
2017-12-18 06:17:18 +00:00
|
|
|
ModePage_2A_WriteDescriptor WriteSpeedPerformanceDescriptors[56];
|
|
|
|
|
} ModePage_2A;
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
#endif //DISCIMAGECHEF_DEVICE_REPORT_CDROM_MODE_H
|