Expand getting drive capabilities. We now have 3 masks where we had

only one before.
This commit is contained in:
rocky
2004-07-17 22:16:46 +00:00
parent c4cd69693c
commit e84c6316b0
33 changed files with 679 additions and 528 deletions

View File

@@ -1,5 +1,5 @@
/* /*
$Id: sample2.c,v 1.9 2004/07/13 12:28:18 rocky Exp $ $Id: sample2.c,v 1.10 2004/07/17 22:16:46 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -33,6 +33,69 @@
#include <sys/types.h> #include <sys/types.h>
#endif #endif
#include <cdio/cdio.h> #include <cdio/cdio.h>
#define _(x) x
/* Prints out drive capabilities */
static void
print_drive_capabilities(cdio_drive_read_cap_t i_read_cap,
cdio_drive_write_cap_t i_write_cap,
cdio_drive_misc_cap_t i_misc_cap)
{
if (CDIO_DRIVE_CAP_ERROR == i_misc_cap) {
printf("Error in getting drive hardware properties\n");
} else {
printf(_("Hardware : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_FILE
? "Disk Image" : "CD-ROM or DVD");
printf(_("Can open tray : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_OPEN_TRAY ? "Yes" : "No");
printf(_("Can close tray : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_CLOSE_TRAY ? "Yes" : "No");
printf(_("Can disable manual eject : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_LOCK ? "Yes" : "No");
printf(_("Can select juke-box disc : %s\n\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_DISC ? "Yes" : "No");
printf(_("Can set drive speed : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_SPEED ? "Yes" : "No");
printf(_("Can detect if CD changed : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED ? "Yes" : "No");
printf(_("Can read multiple sessions : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_MULTI_SESSION ? "Yes" : "No");
printf(_("Can hard reset device : %s\n\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_RESET ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_ERROR == i_read_cap) {
printf("Error in getting drive reading properties\n");
} else {
printf("Reading....\n");
printf(_(" Can play audio : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_AUDIO ? "Yes" : "No");
printf(_(" Can read CD-R : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_R ? "Yes" : "No");
printf(_(" Can read CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can read DVD-ROM : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_DVD_ROM ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_ERROR == i_write_cap) {
printf("Error in getting drive writing properties\n");
} else {
printf("\nWriting....\n");
printf(_(" Can write CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can write DVD-R : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_R ? "Yes" : "No");
printf(_(" Can write DVD-RAM : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_RAM ? "Yes" : "No");
}
}
int int
main(int argc, const char *argv[]) main(int argc, const char *argv[])
{ {
@@ -41,36 +104,22 @@ main(int argc, const char *argv[])
if (NULL != cdio) { if (NULL != cdio) {
char *default_device = cdio_get_default_device(cdio); char *default_device = cdio_get_default_device(cdio);
cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
printf("The driver selected is %s\n", cdio_get_driver_name(cdio)); printf("The driver selected is %s\n", cdio_get_driver_name(cdio));
if (default_device) { if (default_device)
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap(cdio);
printf("The default device for this driver is %s\n", default_device); printf("The default device for this driver is %s\n", default_device);
printf("drive capability in hex: %x\n", (unsigned int) i_drive_cap);
if (CDIO_DRIVE_CAP_ERROR == i_drive_cap) { cdio_get_drive_cap(cdio, &i_read_cap, &i_write_cap, &i_misc_cap);
printf("Error in getting drive properties\n"); print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
} else if (CDIO_DRIVE_CAP_UNKNOWN == i_drive_cap) {
printf("Can't determine drive properties\n");
} else if (CDIO_DRIVE_CAP_FILE == i_drive_cap) {
printf("Disc-image file\n");
} else {
if (i_drive_cap & CDIO_DRIVE_CAP_CD_R)
printf("Drive can read CD-ROM\n");
if (i_drive_cap & CDIO_DRIVE_CAP_CD_RW)
printf("Drive can write CD-ROM\n");
if (i_drive_cap & CDIO_DRIVE_CAP_DVD)
printf("Drive can read DVD\n");
if (i_drive_cap & CDIO_DRIVE_CAP_DVD_R)
printf("Drive can write DVD-R\n");
if (i_drive_cap & CDIO_DRIVE_CAP_DVD_RAM)
printf("Drive can write DVD-RAM\n");
}
}
free(default_device); free(default_device);
cdio_destroy(cdio); cdio_destroy(cdio);
printf("\n"); printf("\n");
} else { } else {
printf("Problem in trying to find a driver.\n\n"); printf("Problem in trying to find a driver.\n\n");
} }

View File

@@ -1,5 +1,5 @@
/* -*- c -*- /* -*- c -*-
$Id: cdio.h,v 1.57 2004/07/17 02:18:27 rocky Exp $ $Id: cdio.h,v 1.58 2004/07/17 22:16:46 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -224,7 +224,10 @@ extern "C" {
there is no media in it and it is possible for this routine to return there is no media in it and it is possible for this routine to return
NULL even though there may be a hardware CD-ROM. NULL even though there may be a hardware CD-ROM.
*/ */
cdio_drive_cap_t cdio_get_drive_cap (const CdIo *obj); void cdio_get_drive_cap (const CdIo *obj,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*! /*!
Get the drive capabilities for a specified device. Get the drive capabilities for a specified device.
@@ -235,7 +238,10 @@ extern "C" {
there is no media in it and it is possible for this routine to return there is no media in it and it is possible for this routine to return
NULL even though there may be a hardware CD-ROM. NULL even though there may be a hardware CD-ROM.
*/ */
cdio_drive_cap_t cdio_get_drive_cap_dev (const char *device); void cdio_get_drive_cap_dev (const char *device,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*! /*!
Get the media catalog number (MCN) from the CD. Get the media catalog number (MCN) from the CD.

View File

@@ -1,5 +1,5 @@
/* /*
$Id: scsi_mmc.h,v 1.7 2004/07/08 06:29:45 rocky Exp $ $Id: scsi_mmc.h,v 1.8 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -100,6 +100,9 @@
in p. We interpret this and return a bit mask set according to the in p. We interpret this and return a bit mask set according to the
capabilities. capabilities.
*/ */
cdio_drive_cap_t cdio_get_drive_cap_mmc(const uint8_t *p); void cdio_get_drive_cap_mmc(const uint8_t *p,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
#endif /* __SCSI_MMC_H__ */ #endif /* __SCSI_MMC_H__ */

View File

@@ -1,5 +1,5 @@
/* /*
$Id: types.h,v 1.18 2004/06/27 15:29:21 rocky Exp $ $Id: types.h,v 1.19 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -272,59 +272,79 @@ extern "C" {
typedef int cdio_fs_anal_t; typedef int cdio_fs_anal_t;
/*! The type of an drive capability bit mask. See below for values*/ /*! The type of an drive capability bit mask. See below for values*/
typedef uint32_t cdio_drive_cap_t; typedef uint32_t cdio_drive_read_cap_t;
typedef uint32_t cdio_drive_write_cap_t;
typedef uint32_t cdio_drive_misc_cap_t;
/*! /*!
\brief Drive types returned by cdio_get_drive_cap() \brief Drive types returned by cdio_get_drive_cap()
Most are copied from the GNU/Linux the uniform CD-ROM driver header NOTE: Setting a bit here means the presence of a capability.
linux/cdrom.h> NOTE: Setting a bit here means the presence of
a capability.
*/ */
#define CDIO_DRIVE_CAP_CLOSE_TRAY 0x00001 /**< caddy systems can't #define CDIO_DRIVE_CAP_ERROR 0x40000 /**< Error */
close... */
#define CDIO_DRIVE_CAP_OPEN_TRAY 0x00002 /**< but can eject. */
#define CDIO_DRIVE_CAP_LOCK 0x00004 /**< disable manual eject */
#define CDIO_DRIVE_CAP_SELECT_SPEED 0x00008 /**< programmable speed */
#define CDIO_DRIVE_CAP_SELECT_DISC 0x00010 /**< select disc from juke-box */
#define CDIO_DRIVE_CAP_MULTI_SESSION 0x00020 /**< read sessions>1 */
#define CDIO_DRIVE_CAP_MCN 0x00040 /**< Medium Catalog Number */
#define CDIO_DRIVE_CAP_MEDIA_CHANGED 0x00080 /**< media changed */
#define CDIO_DRIVE_CAP_CD_AUDIO 0x00100 /**< drive can play CD audio */
#define CDIO_DRIVE_CAP_RESET 0x00200 /**< hard reset device */
#define CDIO_DRIVE_CAP_IOCTLS 0x00400 /**< driver has non-standard
ioctls */
#define CDIO_DRIVE_CAP_DRIVE_STATUS 0x00800 /**< driver implements drive
status */
#define CDIO_DRIVE_CAP_GENERIC_PACKET 0x01000 /**< driver implements generic
packets */
#define CDIO_DRIVE_CAP_CD_R 0x02000 /**< drive can write CD-R */
#define CDIO_DRIVE_CAP_CD_RW 0x04000 /**< drive can read CD-RW */
#define CDIO_DRIVE_CAP_DVD 0x08000 /**< drive can read DVD */
#define CDIO_DRIVE_CAP_DVD_R 0x10000 /**< drive can write DVD-R */
#define CDIO_DRIVE_CAP_DVD_RAM 0x20000 /**< drive can write DVD-RAM */
/**< These are not taken by GNU/Linux cdrom.h (yet) */
#define CDIO_DRIVE_CAP_ERROR 0x00000 /**< Error */
#define CDIO_DRIVE_CAP_FILE 0x40000 /**< drive is really a file, i.e
a CD file image */
#define CDIO_DRIVE_CAP_UNKNOWN 0x80000 /**< Dunno. It can be on if we #define CDIO_DRIVE_CAP_UNKNOWN 0x80000 /**< Dunno. It can be on if we
have only partial information have only partial information
or are not completely certain or are not completely certain
*/ */
#define CDIO_DRIVE_CAP_MISC_CLOSE_TRAY 0x00001 /**< caddy systems can't
close... */
#define CDIO_DRIVE_CAP_MISC_OPEN_TRAY 0x00002 /**< but can eject. */
#define CDIO_DRIVE_CAP_MISC_LOCK 0x00004 /**< disable manual eject */
#define CDIO_DRIVE_CAP_MISC_SELECT_SPEED 0x00008 /**< programmable speed */
#define CDIO_DRIVE_CAP_MISC_SELECT_DISC 0x00010 /**< select disc from
juke-box */
#define CDIO_DRIVE_CAP_MISC_MULTI_SESSION 0x00020 /**< read sessions>1 */
#define CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED 0x00080 /**< media changed */
#define CDIO_DRIVE_CAP_MISC_RESET 0x00100 /**< hard reset device */
#define CDIO_DRIVE_CAP_MISC_FILE 0x20000 /**< drive is really a file,
i.e a CD file image */
/*! Reading masks.. */
#define CDIO_DRIVE_CAP_READ_AUDIO 0x00001 /**< drive can play CD audio */
#define CDIO_DRIVE_CAP_READ_CD_G 0x00002 /**< drive can read CD G */
#define CDIO_DRIVE_CAP_READ_CD_R 0x00004 /**< drive can read CD-R */
#define CDIO_DRIVE_CAP_READ_CD_RW 0x00008 /**< drive can read CD-RW */
#define CDIO_DRIVE_CAP_READ_DVD_R 0x00010 /**< drive can read DVD-R */
#define CDIO_DRIVE_CAP_READ_DVD_PR 0x00020 /**< drive can read DVD+R */
#define CDIO_DRIVE_CAP_READ_DVD_RAM 0x00040 /**< drive can read DVD-RAM */
#define CDIO_DRIVE_CAP_READ_DVD_ROM 0x00080 /**< drive can read DVD-ROM */
#define CDIO_DRIVE_CAP_READ_DVD_RW 0x00100 /**< drive can read DVD-RW */
#define CDIO_DRIVE_CAP_READ_DVD_RPW 0x00200 /**< drive can read DVD+RW */
#define CDIO_DRIVE_CAP_READ_C2_ERRS 0x00400 /**< has C2 error correction */
/*! Writing masks.. */
#define CDIO_DRIVE_CAP_WRITE_CD_R 0x00001 /**< drive can write CD-R */
#define CDIO_DRIVE_CAP_WRITE_CD_RW 0x00002 /**< drive can write CD-R */
#define CDIO_DRIVE_CAP_WRITE_DVD_R 0x00004 /**< drive can write DVD-R */
#define CDIO_DRIVE_CAP_WRITE_DVD_PR 0x00008 /**< drive can write DVD+R */
#define CDIO_DRIVE_CAP_WRITE_DVD_RAM 0x00010 /**< drive can write DVD-RAM */
#define CDIO_DRIVE_CAP_WRITE_DVD_RW 0x00020 /**< drive can write DVD-RAM */
#define CDIO_DRIVE_CAP_WRITE_DVD_RPW 0x00040 /**< drive can write DVD-RAM */
#define CDIO_DRIVE_CAP_WRITE_MT_RAIN 0x00080 /**< Mount Rainier */
#define CDIO_DRIVE_CAP_WRITE_BUF_UN 0x00100 /**< buffer underrun protect'n */
/**< Masks derived from above... */ /**< Masks derived from above... */
#define CDIO_DRIVE_CAP_CD_WRITER \ #define CDIO_DRIVE_CAP_WRITE_CD ( \
(CDIO_DRIVE_CAP_CD_R|CDIO_DRIVE_CAP_CD_RW) CDIO_DRIVE_CAP_WRITE_CD_R \
| CDIO_DRIVE_CAP_WRITE_CD_RW \
)
/**< Has some sort of CD writer ability */ /**< Has some sort of CD writer ability */
#define CDIO_DRIVE_CAP_CD \ /**< Masks derived from above... */
(CDIO_DRIVE_CAP_CD_AUDIO|CDIO_DRIVE_CAP_CD_WRITER) #define CDIO_DRIVE_CAP_WRITE_DVD ( \
/**< Has some sort of CD ability */ | CDIO_DRIVE_CAP_WRITE_DVD_R \
| CDIO_DRIVE_CAP_WRITE_DVD_PR \
| CDIO_DRIVE_CAP_WRITE_DVD_RAM \
| CDIO_DRIVE_CAP_WRITE_DVD_RW \
| CDIO_DRIVE_CAP_WRITE_DVD_RPW \
)
/**< Has some sort of DVD writer ability */
#define CDIO_DRIVE_CAP_DVD_WRITER \ #define CDIO_DRIVE_CAP_WRITE \
(CDIO_DRIVE_CAP_DVD_R|CDIO_DRIVE_CAP_DVD_RAM) (CDIO_DRIVE_CAP_WRITE_CD | CDIO_DRIVE_CAP_WRITE_DVD)
/**< Has some sort of DVD writer ability */ /**< Has some sort of DVD or CD writing ability */
/*! /*!
track flags track flags

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_linux.c,v 1.67 2004/07/17 08:59:44 rocky Exp $ $Id: _cdio_linux.c,v 1.68 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h" # include "config.h"
#endif #endif
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.67 2004/07/17 08:59:44 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.68 2004/07/17 22:16:47 rocky Exp $";
#include <string.h> #include <string.h>
@@ -930,17 +930,63 @@ _get_mcn_linux (const void *env) {
string when done with it. string when done with it.
*/ */
static cdio_drive_cap_t static void
_get_drive_cap_linux (const void *env) { _get_drive_cap_linux (const void *env,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
const _img_private_t *_obj = env; const _img_private_t *_obj = env;
int32_t i_drivetype; int32_t i_drivetype;
i_drivetype = ioctl (_obj->gen.fd, CDROM_GET_CAPABILITY, CDSL_CURRENT); i_drivetype = ioctl (_obj->gen.fd, CDROM_GET_CAPABILITY, CDSL_CURRENT);
if (i_drivetype < 0) return CDIO_DRIVE_CAP_ERROR; if (i_drivetype < 0) {
*p_read_cap = CDIO_DRIVE_CAP_ERROR;
*p_write_cap = CDIO_DRIVE_CAP_ERROR;
*p_misc_cap = CDIO_DRIVE_CAP_ERROR;
return;
}
/* If >= 0 we can safely cast as cdio_drive_cap_t and return */ *p_read_cap = 0;
return (cdio_drive_cap_t) i_drivetype; *p_write_cap = 0;
*p_misc_cap = 0;
/* Reader */
if (i_drivetype & CDC_PLAY_AUDIO)
*p_read_cap |= CDIO_DRIVE_CAP_READ_AUDIO;
if (i_drivetype & CDC_CD_R)
*p_read_cap |= CDIO_DRIVE_CAP_READ_CD_R;
if (i_drivetype & CDC_CD_RW)
*p_read_cap |= CDIO_DRIVE_CAP_READ_CD_RW;
if (i_drivetype & CDC_DVD)
*p_read_cap |= CDIO_DRIVE_CAP_READ_DVD_ROM;
/* Writer */
if (i_drivetype & CDC_CD_RW)
*p_read_cap |= CDIO_DRIVE_CAP_WRITE_CD_RW;
if (i_drivetype & CDC_DVD_R)
*p_read_cap |= CDIO_DRIVE_CAP_WRITE_DVD_R;
if (i_drivetype & CDC_DVD_RAM)
*p_read_cap |= CDIO_DRIVE_CAP_WRITE_DVD_RAM;
/* Misc */
if (i_drivetype & CDC_CLOSE_TRAY)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
if (i_drivetype & CDC_OPEN_TRAY)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_OPEN_TRAY;
if (i_drivetype & CDC_LOCK)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_LOCK;
if (i_drivetype & CDC_SELECT_SPEED)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_SELECT_SPEED;
if (i_drivetype & CDC_SELECT_DISC)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_SELECT_DISC;
if (i_drivetype & CDC_MULTI_SESSION)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_MULTI_SESSION;
if (i_drivetype & CDC_MEDIA_CHANGED)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED;
if (i_drivetype & CDC_RESET)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_RESET;
} }
/*! /*!

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_sunos.c,v 1.52 2004/07/17 15:43:57 rocky Exp $ $Id: _cdio_sunos.c,v 1.53 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -38,7 +38,7 @@
#ifdef HAVE_SOLARIS_CDROM #ifdef HAVE_SOLARIS_CDROM
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.52 2004/07/17 15:43:57 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.53 2004/07/17 22:16:47 rocky Exp $";
#ifdef HAVE_GLOB_H #ifdef HAVE_GLOB_H
#include <glob.h> #include <glob.h>
@@ -142,7 +142,7 @@ _cdio_init (_img_private_t *env)
*/ */
static int static int
_cdio_read_audio_sectors (void *user_data, void *data, lsn_t lsn, _read_audio_sectors_solaris (void *user_data, void *data, lsn_t lsn,
unsigned int nblocks) unsigned int nblocks)
{ {
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, }; char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
@@ -189,7 +189,7 @@ _cdio_read_audio_sectors (void *user_data, void *data, lsn_t lsn,
from lsn. Returns 0 if no error. from lsn. Returns 0 if no error.
*/ */
static int static int
_cdio_read_mode1_sector (void *env, void *data, lsn_t lsn, _read_mode1_sector_solaris (void *env, void *data, lsn_t lsn,
bool b_form2) bool b_form2)
{ {
@@ -207,7 +207,7 @@ _cdio_read_mode1_sector (void *env, void *data, lsn_t lsn,
Returns 0 if no error. Returns 0 if no error.
*/ */
static int static int
_cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn, _read_mode1_sectors_solaris (void *user_data, void *data, lsn_t lsn,
bool b_form2, unsigned int nblocks) bool b_form2, unsigned int nblocks)
{ {
_img_private_t *env = user_data; _img_private_t *env = user_data;
@@ -216,7 +216,7 @@ _cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn,
unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE; unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE;
for (i = 0; i < nblocks; i++) { for (i = 0; i < nblocks; i++) {
if ( (retval = _cdio_read_mode1_sector (env, if ( (retval = _read_mode1_sector_solaris (env,
((char *)data) + (blocksize * i), ((char *)data) + (blocksize * i),
lsn + i, b_form2)) ) lsn + i, b_form2)) )
return retval; return retval;
@@ -229,7 +229,7 @@ _cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn,
Returns 0 if no error. Returns 0 if no error.
*/ */
static int static int
_cdio_read_mode2_sector (void *user_data, void *data, lsn_t lsn, _read_mode2_sector_solaris (void *user_data, void *data, lsn_t lsn,
bool b_form2) bool b_form2)
{ {
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, }; char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
@@ -288,7 +288,7 @@ _cdio_read_mode2_sector (void *user_data, void *data, lsn_t lsn,
Returns 0 if no error. Returns 0 if no error.
*/ */
static int static int
_cdio_read_mode2_sectors (void *user_data, void *data, lsn_t lsn, _read_mode2_sectors_solaris (void *user_data, void *data, lsn_t lsn,
bool b_form2, unsigned int nblocks) bool b_form2, unsigned int nblocks)
{ {
_img_private_t *env = user_data; _img_private_t *env = user_data;
@@ -297,7 +297,7 @@ _cdio_read_mode2_sectors (void *user_data, void *data, lsn_t lsn,
unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE; unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE;
for (i = 0; i < nblocks; i++) { for (i = 0; i < nblocks; i++) {
if ( (retval = _cdio_read_mode2_sector (env, if ( (retval = _read_mode2_sector_solaris (env,
((char *)data) + (blocksize * i), ((char *)data) + (blocksize * i),
lsn + i, b_form2)) ) lsn + i, b_form2)) )
return retval; return retval;
@@ -497,7 +497,7 @@ _get_cdtext_solaris (void *user_data, track_t i_track)
also free obj. also free obj.
*/ */
static int static int
_cdio_eject_media (void *user_data) { _eject_media_solaris (void *user_data) {
_img_private_t *env = user_data; _img_private_t *env = user_data;
int ret; int ret;
@@ -536,7 +536,7 @@ _cdio_malloc_and_zero(size_t size) {
Return the value associated with the key "arg". Return the value associated with the key "arg".
*/ */
static const char * static const char *
_cdio_get_arg (void *user_data, const char key[]) _get_arg_solaris (void *user_data, const char key[])
{ {
_img_private_t *env = user_data; _img_private_t *env = user_data;
@@ -593,13 +593,15 @@ cdio_get_default_device_solaris(void)
string when done with it. string when done with it.
*/ */
static cdio_drive_cap_t static void
_cdio_get_drive_cap_solaris (const void *user_data) _get_drive_cap_solaris (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{ {
const _img_private_t *env = user_data; const _img_private_t *env = user_data;
int status; int status;
struct uscsi_cmd my_cmd; struct uscsi_cmd my_cmd;
int32_t i_drivetype = 0;
uint8_t buf[192] = { 0, }; uint8_t buf[192] = { 0, };
unsigned char my_rq_buf[26] = {0, }; unsigned char my_rq_buf[26] = {0, };
@@ -643,7 +645,7 @@ _cdio_get_drive_cap_solaris (const void *user_data)
/* Don't handle these yet. */ /* Don't handle these yet. */
break; break;
case CDIO_MMC_CAPABILITIES_PAGE: case CDIO_MMC_CAPABILITIES_PAGE:
i_drivetype |= cdio_get_drive_cap_mmc(p); cdio_get_drive_cap_mmc(p, p_read_cap, p_write_cap, p_misc_cap);
break; break;
default: ; default: ;
} }
@@ -665,7 +667,7 @@ _cdio_get_drive_cap_solaris (const void *user_data)
*/ */
static char * static char *
_cdio_get_mcn_solaris (const void *user_data) _get_mcn_solaris (const void *user_data)
{ {
const _img_private_t *env = user_data; const _img_private_t *env = user_data;
struct uscsi_cmd my_cmd; struct uscsi_cmd my_cmd;
@@ -885,15 +887,15 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
char *psz_source; char *psz_source;
cdio_funcs _funcs = { cdio_funcs _funcs = {
.eject_media = _cdio_eject_media, .eject_media = _eject_media_solaris,
.free = cdio_generic_free, .free = cdio_generic_free,
.get_arg = _cdio_get_arg, .get_arg = _get_arg_solaris,
.get_cdtext = _get_cdtext_solaris, .get_cdtext = _get_cdtext_solaris,
.get_devices = cdio_get_devices_solaris, .get_devices = cdio_get_devices_solaris,
.get_default_device = cdio_get_default_device_solaris, .get_default_device = cdio_get_default_device_solaris,
.get_drive_cap = _cdio_get_drive_cap_solaris, .get_drive_cap = _get_drive_cap_solaris,
.get_first_track_num= _cdio_get_first_track_num, .get_first_track_num= _cdio_get_first_track_num,
.get_mcn = _cdio_get_mcn_solaris, .get_mcn = _get_mcn_solaris,
.get_num_tracks = _cdio_get_num_tracks, .get_num_tracks = _cdio_get_num_tracks,
.get_track_format = _cdio_get_track_format, .get_track_format = _cdio_get_track_format,
.get_track_green = _cdio_get_track_green, .get_track_green = _cdio_get_track_green,
@@ -901,11 +903,11 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
.get_track_msf = _cdio_get_track_msf, .get_track_msf = _cdio_get_track_msf,
.lseek = cdio_generic_lseek, .lseek = cdio_generic_lseek,
.read = cdio_generic_read, .read = cdio_generic_read,
.read_audio_sectors = _cdio_read_audio_sectors, .read_audio_sectors = _read_audio_sectors_solaris,
.read_mode1_sector = _cdio_read_mode1_sector, .read_mode1_sector = _read_mode1_sector_solaris,
.read_mode1_sectors = _cdio_read_mode1_sectors, .read_mode1_sectors = _read_mode1_sectors_solaris,
.read_mode2_sector = _cdio_read_mode2_sector, .read_mode2_sector = _read_mode2_sector_solaris,
.read_mode2_sectors = _cdio_read_mode2_sectors, .read_mode2_sectors = _read_mode2_sectors_solaris,
.stat_size = _cdio_stat_size, .stat_size = _cdio_stat_size,
.set_arg = _set_arg_solaris .set_arg = _set_arg_solaris
}; };
@@ -918,7 +920,7 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
_data->b_cdtext_init = false; _data->b_cdtext_init = false;
if (NULL == psz_orig_source) { if (NULL == psz_orig_source) {
psz_source=cdio_get_default_device_solaris(); psz_source=_get_default_device_solaris();
if (NULL == psz_source) return NULL; if (NULL == psz_source) return NULL;
_set_arg_solaris(_data, "source", psz_source); _set_arg_solaris(_data, "source", psz_source);
free(psz_source); free(psz_source);

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cdio.c,v 1.61 2004/07/17 02:18:28 rocky Exp $ $Id: cdio.c,v 1.62 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -39,7 +39,7 @@
#include <cdio/logging.h> #include <cdio/logging.h>
#include "cdio_private.h" #include "cdio_private.h"
static const char _rcsid[] = "$Id: cdio.c,v 1.61 2004/07/17 02:18:28 rocky Exp $"; static const char _rcsid[] = "$Id: cdio.c,v 1.62 2004/07/17 22:16:47 rocky Exp $";
const char *track_format2str[6] = const char *track_format2str[6] =
@@ -427,19 +427,22 @@ cdio_get_devices_with_cap (char* search_devices[],
string when done with it. string when done with it.
*/ */
cdio_drive_cap_t void
cdio_get_drive_cap (const CdIo *cdio) cdio_get_drive_cap (const CdIo *cdio,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{ {
cdio_drive_cap_t i_drivetype = /* This seems like a safe bet. */
CDIO_DRIVE_CAP_UNKNOWN | CDIO_DRIVE_CAP_CD_AUDIO; /* A safe guess. */ *p_read_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_write_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_misc_cap = CDIO_DRIVE_CAP_UNKNOWN;
if (cdio && cdio->op.get_drive_cap) { if (cdio && cdio->op.get_drive_cap) {
i_drivetype=cdio->op.get_drive_cap(cdio->env); cdio->op.get_drive_cap(cdio->env, p_read_cap, p_write_cap, p_misc_cap);
} }
return i_drivetype;
} }
/*! /*!
Return the the kind of drive capabilities of device. Return the the kind of drive capabilities of device.
@@ -447,18 +450,23 @@ cdio_get_drive_cap (const CdIo *cdio)
string when done with it. string when done with it.
*/ */
cdio_drive_cap_t void
cdio_get_drive_cap_dev (const char *device) cdio_get_drive_cap_dev (const char *device,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{ {
cdio_drive_cap_t i_drivetype = CDIO_DRIVE_CAP_UNKNOWN; /* This seems like a safe bet. */
*p_read_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_write_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_misc_cap = CDIO_DRIVE_CAP_UNKNOWN;
CdIo *cdio=scan_for_driver(CDIO_MIN_DRIVER, CDIO_MAX_DRIVER, CdIo *cdio=scan_for_driver(CDIO_MIN_DRIVER, CDIO_MAX_DRIVER,
device, NULL); device, NULL);
if (cdio) { if (cdio) {
i_drivetype=cdio_get_drive_cap(cdio); cdio_get_drive_cap(cdio, p_read_cap, p_write_cap, p_misc_cap);
cdio_destroy(cdio); cdio_destroy(cdio);
} }
return i_drivetype;
} }

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cdio_private.h,v 1.29 2004/07/17 02:18:28 rocky Exp $ $Id: cdio_private.h,v 1.30 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -87,8 +87,10 @@ extern "C" {
See cd_types.h for a list of bitmasks for the drive type; See cd_types.h for a list of bitmasks for the drive type;
*/ */
cdio_drive_cap_t (*get_drive_cap) (const void *env); void (*get_drive_cap) (const void *env,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*! /*!
Return the media catalog number MCN from the CD or NULL if Return the media catalog number MCN from the CD or NULL if
there is none or we don't have the ability to get it. there is none or we don't have the ability to get it.

View File

@@ -1,5 +1,5 @@
/* /*
$Id: bincue.c,v 1.34 2004/07/17 02:18:28 rocky Exp $ $Id: bincue.c,v 1.35 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -26,7 +26,7 @@
(*.cue). (*.cue).
*/ */
static const char _rcsid[] = "$Id: bincue.c,v 1.34 2004/07/17 02:18:28 rocky Exp $"; static const char _rcsid[] = "$Id: bincue.c,v 1.35 2004/07/17 22:16:47 rocky Exp $";
#include "image.h" #include "image.h"
#include "cdio_assert.h" #include "cdio_assert.h"
@@ -838,23 +838,6 @@ cdio_get_default_device_bincue(void)
return drive; return drive;
} }
/*!
Return the the kind of drive capabilities of device.
Note: string is malloc'd so caller should free() then returned
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_bincue (const void *user_data) {
/* There may be more in the future but these we can handle now.
Also, we know we can't handle
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, SELECT_DISC
*/
return CDIO_DRIVE_CAP_FILE | CDIO_DRIVE_CAP_MCN | CDIO_DRIVE_CAP_CD_AUDIO ;
}
/*! /*!
Return the number of tracks in the current medium. Return the number of tracks in the current medium.
CDIO_INVALID_TRACK is returned on error. CDIO_INVALID_TRACK is returned on error.
@@ -1029,7 +1012,7 @@ cdio_open_cue (const char *psz_cue_name)
.get_cdtext = _get_cdtext_image, .get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_bincue, .get_devices = cdio_get_devices_bincue,
.get_default_device = cdio_get_default_device_bincue, .get_default_device = cdio_get_default_device_bincue,
.get_drive_cap = _get_drive_cap_bincue, .get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image, .get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image, .get_mcn = _get_mcn_image,
.get_num_tracks = _get_num_tracks_image, .get_num_tracks = _get_num_tracks_image,

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cdrdao.c,v 1.19 2004/07/11 14:25:07 rocky Exp $ $Id: cdrdao.c,v 1.20 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
toc reading routine adapted from cuetools toc reading routine adapted from cuetools
@@ -25,7 +25,7 @@
(*.cue). (*.cue).
*/ */
static const char _rcsid[] = "$Id: cdrdao.c,v 1.19 2004/07/11 14:25:07 rocky Exp $"; static const char _rcsid[] = "$Id: cdrdao.c,v 1.20 2004/07/17 22:16:47 rocky Exp $";
#include "image.h" #include "image.h"
#include "cdio_assert.h" #include "cdio_assert.h"
@@ -878,23 +878,6 @@ cdio_get_default_device_cdrdao(void)
return drive; return drive;
} }
/*!
Return the the kind of drive capabilities of device.
Note: string is malloc'd so caller should free() then returned
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_cdrdao (const void *user_data) {
/* There may be more in the future but these we can handle now.
Also, we know we can't handle
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, SELECT_DISC
*/
return CDIO_DRIVE_CAP_FILE | CDIO_DRIVE_CAP_MCN | CDIO_DRIVE_CAP_CD_AUDIO ;
}
/*! /*!
Return the number of tracks in the current medium. Return the number of tracks in the current medium.
CDIO_INVALID_TRACK is returned on error. CDIO_INVALID_TRACK is returned on error.
@@ -1008,7 +991,7 @@ cdio_open_cdrdao (const char *psz_cue_name)
.get_cdtext = _get_cdtext_image, .get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_cdrdao, .get_devices = cdio_get_devices_cdrdao,
.get_default_device = cdio_get_default_device_cdrdao, .get_default_device = cdio_get_default_device_cdrdao,
.get_drive_cap = _get_drive_cap_cdrdao, .get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image, .get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image, .get_mcn = _get_mcn_image,
.get_num_tracks = _get_num_tracks_image, .get_num_tracks = _get_num_tracks_image,

View File

@@ -1,5 +1,5 @@
/* /*
$Id: nrg.c,v 1.31 2004/07/11 14:25:07 rocky Exp $ $Id: nrg.c,v 1.32 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
@@ -45,7 +45,7 @@
#include "_cdio_stdio.h" #include "_cdio_stdio.h"
#include "nrg.h" #include "nrg.h"
static const char _rcsid[] = "$Id: nrg.c,v 1.31 2004/07/11 14:25:07 rocky Exp $"; static const char _rcsid[] = "$Id: nrg.c,v 1.32 2004/07/17 22:16:47 rocky Exp $";
/* reader */ /* reader */
@@ -1088,23 +1088,6 @@ cdio_get_default_device_nrg(void)
return drive; return drive;
} }
/*!
Return the the kind of drive capabilities of device.
Note: string is malloc'd so caller should free() then returned
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_nrg (const void *user_data) {
/* There may be more in the future but these we can handle now.
Also, we know we can't handle
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, SELECT_DISC
*/
return CDIO_DRIVE_CAP_FILE | CDIO_DRIVE_CAP_MCN | CDIO_DRIVE_CAP_CD_AUDIO ;
}
/*! /*!
Return the number of tracks in the current medium. Return the number of tracks in the current medium.
CDIO_INVALID_TRACK is returned on error. CDIO_INVALID_TRACK is returned on error.
@@ -1206,7 +1189,7 @@ cdio_open_nrg (const char *psz_source)
.get_cdtext = _get_cdtext_image, .get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_nrg, .get_devices = cdio_get_devices_nrg,
.get_default_device = cdio_get_default_device_nrg, .get_default_device = cdio_get_default_device_nrg,
.get_drive_cap = _get_drive_cap_nrg, .get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image, .get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image, .get_mcn = _get_mcn_image,
.get_num_tracks = _get_num_tracks_image, .get_num_tracks = _get_num_tracks_image,

View File

@@ -1,5 +1,5 @@
/* /*
$Id: image_common.h,v 1.12 2004/07/17 02:18:28 rocky Exp $ $Id: image_common.h,v 1.13 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -217,4 +217,29 @@ _set_arg_image (void *user_data, const char key[], const char value[])
return 0; return 0;
} }
/*!
Return the the kind of drive capabilities of device.
*/
static void
_get_drive_cap_image (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
*p_read_cap = CDIO_DRIVE_CAP_READ_AUDIO
| CDIO_DRIVE_CAP_READ_CD_G
| CDIO_DRIVE_CAP_READ_CD_R
| CDIO_DRIVE_CAP_READ_CD_RW
;
*p_write_cap = 0;
/* In the future we may want to simulate
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, etc.
*/
*p_misc_cap = CDIO_DRIVE_CAP_MISC_FILE;
}
#endif /* __CDIO_IMAGE_COMMON_H__ */ #endif /* __CDIO_IMAGE_COMMON_H__ */

View File

@@ -1,6 +1,6 @@
/* Common MMC routines. /* Common MMC routines.
$Id: scsi_mmc.c,v 1.3 2004/06/28 00:39:21 rocky Exp $ $Id: scsi_mmc.c,v 1.4 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -31,25 +31,27 @@
in p. We interpret this and return a bit mask set according to the in p. We interpret this and return a bit mask set according to the
capabilities. capabilities.
*/ */
cdio_drive_cap_t void
cdio_get_drive_cap_mmc(const uint8_t *p) cdio_get_drive_cap_mmc(const uint8_t *p,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{ {
cdio_drive_cap_t i_drivetype=0;
/* Reader */ /* Reader */
if (p[2] & 0x02) i_drivetype |= CDIO_DRIVE_CAP_CD_RW; if (p[2] & 0x02) *p_read_cap |= CDIO_DRIVE_CAP_READ_CD_RW;
if (p[2] & 0x08) i_drivetype |= CDIO_DRIVE_CAP_DVD; if (p[2] & 0x08) *p_read_cap |= CDIO_DRIVE_CAP_READ_DVD_ROM;
if (p[5] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_CD_AUDIO; if (p[5] & 0x01) *p_read_cap |= CDIO_DRIVE_CAP_READ_AUDIO;
/* Writer */ /* Writer */
if (p[3] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_CD_R; if (p[3] & 0x01) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_CD_R;
if (p[3] & 0x10) i_drivetype |= CDIO_DRIVE_CAP_DVD_R; if (p[3] & 0x10) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_DVD_R;
if (p[3] & 0x20) i_drivetype |= CDIO_DRIVE_CAP_DVD_RAM; if (p[3] & 0x20) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_DVD_RAM;
if (p[4] & 0x40) i_drivetype |= CDIO_DRIVE_CAP_MULTI_SESSION; /* Misc */
if (p[4] & 0x40) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_MULTI_SESSION;
if (p[6] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_LOCK; if (p[6] & 0x01) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_LOCK;
if (p[6] & 0x08) i_drivetype |= CDIO_DRIVE_CAP_OPEN_TRAY; if (p[6] & 0x08) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_OPEN_TRAY;
if (p[6] >> 5 != 0) if (p[6] >> 5 != 0)
i_drivetype |= CDIO_DRIVE_CAP_CLOSE_TRAY; *p_misc_cap |= CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
return i_drivetype;
} }

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cd-drive.c,v 1.2 2004/04/25 03:52:37 rocky Exp $ $Id: cd-drive.c,v 1.3 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -229,10 +229,14 @@ main(int argc, const char *argv[])
cd_drives = cdio_get_devices(DRIVER_DEVICE); cd_drives = cdio_get_devices(DRIVER_DEVICE);
if (NULL != cd_drives) if (NULL != cd_drives)
for( cd = cd_drives; *cd != NULL; cd++ ) { for( cd = cd_drives; *cd != NULL; cd++ ) {
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap_dev(*cd); cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
cdio_get_drive_cap_dev(*cd, &i_read_cap, &i_write_cap, &i_misc_cap);
printf("Drive %s\n", *cd); printf("Drive %s\n", *cd);
print_drive_capabilities(i_drive_cap); print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
printf("\n"); printf("\n");
} }
@@ -241,11 +245,15 @@ main(int argc, const char *argv[])
cd_drives = NULL; cd_drives = NULL;
} else { } else {
/* Print CD-drive info for given source */ /* Print CD-drive info for given source */
cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap_dev(source_name); cdio_get_drive_cap_dev(source_name, &i_read_cap, &i_write_cap,
&i_misc_cap);
printf("Drive %s\n", source_name); printf("Drive %s\n", source_name);
print_drive_capabilities(i_drive_cap); print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
printf("\n"); printf("\n");
} }

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cd-info.c,v 1.72 2004/07/17 02:18:28 rocky Exp $ $Id: cd-info.c,v 1.73 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org> Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
@@ -966,8 +966,12 @@ main(int argc, const char *argv[])
} }
{ {
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap(cdio); cdio_drive_read_cap_t i_read_cap;
print_drive_capabilities(i_drive_cap); cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
cdio_get_drive_cap(cdio, &i_read_cap, &i_write_cap, &i_misc_cap);
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
} }
if (opts.list_drives) { if (opts.list_drives) {

View File

@@ -1,5 +1,5 @@
/* /*
$Id: util.c,v 1.9 2004/06/27 16:37:34 rocky Exp $ $Id: util.c,v 1.10 2004/07/17 22:16:48 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -87,52 +87,60 @@ fillout_device_name(const char *device_name)
} }
/* Prints out drive capabilities */ /* Prints out drive capabilities */
void void print_drive_capabilities(cdio_drive_read_cap_t i_read_cap,
print_drive_capabilities(cdio_drive_cap_t i_drive_cap) cdio_drive_write_cap_t i_write_cap,
cdio_drive_misc_cap_t i_misc_cap)
{ {
if (CDIO_DRIVE_CAP_ERROR == i_drive_cap) { if (CDIO_DRIVE_CAP_ERROR == i_misc_cap) {
printf("Error in getting drive properties\n"); printf("Error in getting drive hardware properties\n");
} else { } else {
printf("Hardware : %s\n", printf(_("Hardware : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_FILE i_misc_cap & CDIO_DRIVE_CAP_MISC_FILE
? "Disk Image" : "CD-ROM or DVD"); ? "Disk Image" : "CD-ROM or DVD");
printf(_("Can open tray : %s\n"), printf(_("Can open tray : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_OPEN_TRAY ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_OPEN_TRAY ? "Yes" : "No");
printf(_("Can close tray : %s\n"), printf(_("Can close tray : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CLOSE_TRAY ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_CLOSE_TRAY ? "Yes" : "No");
printf(_("Can disable manual eject: %s\n"), printf(_("Can disable manual eject : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_LOCK ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_LOCK ? "Yes" : "No");
printf(_("Can select juke-box disc: %s\n\n"), printf(_("Can select juke-box disc : %s\n\n"),
i_drive_cap & CDIO_DRIVE_CAP_SELECT_DISC ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_DISC ? "Yes" : "No");
printf(_("Can set drive speed : %s\n"), printf(_("Can set drive speed : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_SELECT_SPEED ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_SPEED ? "Yes" : "No");
printf(_("Can detect if CD changed: %s\n"), printf(_("Can detect if CD changed : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_MEDIA_CHANGED ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED ? "Yes" : "No");
printf(_("Can read Media Cat. No. : %s\n"), printf(_("Can read multiple sessions : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_MCN ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_MULTI_SESSION ? "Yes" : "No");
printf(_("Can read sessions > 1 . : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_MULTI_SESSION ? "Yes" : "No");
printf(_("Can hard reset device : %s\n\n"), printf(_("Can hard reset device : %s\n\n"),
i_drive_cap & CDIO_DRIVE_CAP_RESET ? "Yes" : "No"); i_misc_cap & CDIO_DRIVE_CAP_MISC_RESET ? "Yes" : "No");
printf(_("Compact Disc : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD ? "Yes" : "No");
printf(_(" Can play audio : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD_AUDIO ? "Yes" : "No");
printf(_(" Can read CD-RW : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD_RW ? "Yes" : "No");
printf(_(" Can write CD-R : %s\n\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD_R ? "Yes" : "No");
printf(_("Digital Versital Disc : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_DVD ? "Yes" : "No");
printf(_(" Can write DVD-R : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_DVD_R ? "Yes" : "No");
printf(_(" Can write DVD-RAM : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_DVD_RAM ? "Yes" : "No");
} }
if (CDIO_DRIVE_CAP_UNKNOWN == i_drive_cap) {
printf("Not completely sure about drive properties\n\n");
if (CDIO_DRIVE_CAP_ERROR == i_read_cap) {
printf("Error in getting drive reading properties\n");
} else {
printf("Reading....\n");
printf(_(" Can play audio : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_AUDIO ? "Yes" : "No");
printf(_(" Can read CD-R : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_R ? "Yes" : "No");
printf(_(" Can read CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can read DVD-ROM : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_DVD_ROM ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_ERROR == i_write_cap) {
printf("Error in getting drive writing properties\n");
} else {
printf("\nWriting....\n");
printf(_(" Can write CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can write DVD-R : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_R ? "Yes" : "No");
printf(_(" Can write DVD-RAM : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_RAM ? "Yes" : "No");
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
$Id: util.h,v 1.4 2004/05/04 02:06:48 rocky Exp $ $Id: util.h,v 1.5 2004/07/17 22:16:48 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -101,6 +101,9 @@ void print_version (char *program_name, const char *version,
char *fillout_device_name(const char *device_name); char *fillout_device_name(const char *device_name);
/* Prints out drive capabilities */ /* Prints out drive capabilities */
void print_drive_capabilities(cdio_drive_cap_t i_drive_cap); void print_drive_capabilities(cdio_drive_read_cap_t p_read_cap,
cdio_drive_write_cap_t p_write_cap,
cdio_drive_misc_cap_t p_misc_cap);
#endif /* UTIL_H */ #endif /* UTIL_H */

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
Media Catalog Number (MCN): 0000010271955 Media Catalog Number (MCN): 0000010271955

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
Media Catalog Number (MCN): 0000010271955 Media Catalog Number (MCN): 0000010271955

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________

View File

@@ -4,21 +4,22 @@ PARTICULAR PURPOSE.
Hardware : Disk Image Hardware : Disk Image
Can open tray : No Can open tray : No
Can close tray : No Can close tray : No
Can disable manual eject: No Can disable manual eject : No
Can select juke-box disc: No Can select juke-box disc : No
Can set drive speed : No Can set drive speed : No
Can detect if CD changed: No Can detect if CD changed : No
Can read Media Cat. No. : Yes Can read multiple sessions : No
Can read sessions > 1 . : No
Can hard reset device : No Can hard reset device : No
Compact Disc : Yes Reading....
Can play audio : Yes Can play audio : Yes
Can read CD-RW : No Can read CD-R : Yes
Can write CD-R : No Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No Writing....
Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________