Improved emulation of mode page 2A

This commit is contained in:
Thomas Schmitt 2014-03-01 10:16:03 +00:00
parent 174c22aeb7
commit 6e5c50bde4
4 changed files with 18 additions and 9 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2014.02.19.111017"
#define Cdrskin_timestamP "2014.03.01.101537"

View File

@ -1222,6 +1222,7 @@ static int drive_getcaps(struct burn_drive *d, struct burn_drive_info *out)
{
struct burn_scsi_inquiry_data *id;
int i, profile;
struct burn_feature_descr *feat;
/* ts A61007 : now prevented in enumerate_common() */
#if 0
@ -1275,6 +1276,13 @@ static int drive_getcaps(struct burn_drive *d, struct burn_drive_info *out)
else if (profile == 0x12)
out->write_dvdram = out->read_dvdram = 1;
}
/* Test Write bit of CD TAO, CD Mastering, DVD-R/-RW Write */
for (i = 0x002D; i <= 0x002F; i++)
if (burn_drive_has_feature(d, i, &feat, 0))
if (feat->data_lenght > 0)
out->write_simulate |=
!!(feat->data[0] & 4);
}
out->drive = d;

View File

@ -594,10 +594,10 @@ struct burn_drive_info
to inquire a device file address. ^^^^^ ALWAYS ^^^^^^^*/
char location[17];
/* DEPRECATION:
Start of information from mode page 2Ah which is declared
obsolete by MMC-5. Do not rely on this, if you can get a
meaningful reply from burn_drive_get_all_profiles()
/* NOTE: The capability to write particular media types is also
announced by their profile number being in the list returned
by burn_drive_get_all_profile(). This is the only way to
inquire types DVD-RW, DVD+R, DVD+R DL, DVD+RW, BD-R, BD-RE.
*/
/** Can the drive read DVD-RAM discs */
unsigned int read_dvdram:1;
@ -622,13 +622,12 @@ struct burn_drive_info
/** Can the drive simulate a write */
unsigned int write_simulate:1;
/** Can the drive report C2 errors */
/** DEPRECATED: Can the drive report C2 errors */
unsigned int c2_errors:1;
/** The size of the drive's buffer (in kilobytes) */
/** DEPRECATED: The size of the drive's buffer (in kilobytes) */
int buffer_size;
/* End of DEPRECATION */
/**
* The supported block types in tao mode.
@ -1646,7 +1645,7 @@ void burn_disc_erase(struct burn_drive *drive, int fast);
/** Format media for use with libburn. This currently applies to DVD-RW
in state "Sequential Recording" (profile 0014h) which get formatted to
state "Restricted Overwrite" (profile 0013h). DVD+RW can be "de-iced"
by setting bit2 of flag. DVD-RAM and BD-RE may get formatted initially
by setting bit4 of flag. DVD-RAM and BD-RE may get formatted initially
or re-formatted to adjust their Defect Managment.
This function usually returns while the drive is still in the process
of formatting. The formatting is done, when burn_drive_get_status()

View File

@ -151,6 +151,8 @@ struct burn_feature_descr {
*/
unsigned char data_lenght;
/* Additional bytes after the first 4 bytes of the descriptor */
unsigned char *data;
struct burn_feature_descr *next;