Expand getting drive capabilities. We now have 3 masks where we had
only one before.
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -33,6 +33,69 @@
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#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
|
||||
main(int argc, const char *argv[])
|
||||
{
|
||||
@@ -41,36 +104,22 @@ main(int argc, const char *argv[])
|
||||
|
||||
if (NULL != 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));
|
||||
|
||||
if (default_device) {
|
||||
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap(cdio);
|
||||
if (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) {
|
||||
printf("Error in getting drive properties\n");
|
||||
} 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");
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
free(default_device);
|
||||
cdio_destroy(cdio);
|
||||
printf("\n");
|
||||
|
||||
} else {
|
||||
printf("Problem in trying to find a driver.\n\n");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* -*- 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) 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
|
||||
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.
|
||||
@@ -235,7 +238,10 @@ extern "C" {
|
||||
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.
|
||||
*/
|
||||
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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -100,6 +100,9 @@
|
||||
in p. We interpret this and return a bit mask set according to the
|
||||
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__ */
|
||||
|
||||
@@ -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) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -272,60 +272,80 @@ extern "C" {
|
||||
typedef int cdio_fs_anal_t;
|
||||
|
||||
/*! 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()
|
||||
|
||||
Most are copied from the GNU/Linux the uniform CD-ROM driver header
|
||||
linux/cdrom.h> NOTE: Setting a bit here means the presence of
|
||||
a capability.
|
||||
NOTE: Setting a bit here means the presence of a capability.
|
||||
*/
|
||||
|
||||
#define CDIO_DRIVE_CAP_CLOSE_TRAY 0x00001 /**< caddy systems can't
|
||||
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_ERROR 0x40000 /**< Error */
|
||||
#define CDIO_DRIVE_CAP_UNKNOWN 0x80000 /**< Dunno. It can be on if we
|
||||
have only partial information
|
||||
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... */
|
||||
#define CDIO_DRIVE_CAP_CD_WRITER \
|
||||
(CDIO_DRIVE_CAP_CD_R|CDIO_DRIVE_CAP_CD_RW)
|
||||
#define CDIO_DRIVE_CAP_WRITE_CD ( \
|
||||
CDIO_DRIVE_CAP_WRITE_CD_R \
|
||||
| CDIO_DRIVE_CAP_WRITE_CD_RW \
|
||||
)
|
||||
/**< Has some sort of CD writer ability */
|
||||
|
||||
#define CDIO_DRIVE_CAP_CD \
|
||||
(CDIO_DRIVE_CAP_CD_AUDIO|CDIO_DRIVE_CAP_CD_WRITER)
|
||||
/**< Has some sort of CD ability */
|
||||
|
||||
#define CDIO_DRIVE_CAP_DVD_WRITER \
|
||||
(CDIO_DRIVE_CAP_DVD_R|CDIO_DRIVE_CAP_DVD_RAM)
|
||||
/**< Masks derived from above... */
|
||||
#define CDIO_DRIVE_CAP_WRITE_DVD ( \
|
||||
| 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_WRITE \
|
||||
(CDIO_DRIVE_CAP_WRITE_CD | CDIO_DRIVE_CAP_WRITE_DVD)
|
||||
/**< Has some sort of DVD or CD writing ability */
|
||||
|
||||
/*!
|
||||
track flags
|
||||
Q Sub-channel Control Field (4.2.3.3)
|
||||
|
||||
@@ -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) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -27,7 +27,7 @@
|
||||
# include "config.h"
|
||||
#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>
|
||||
|
||||
@@ -930,17 +930,63 @@ _get_mcn_linux (const void *env) {
|
||||
string when done with it.
|
||||
|
||||
*/
|
||||
static cdio_drive_cap_t
|
||||
_get_drive_cap_linux (const void *env) {
|
||||
static void
|
||||
_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;
|
||||
int32_t i_drivetype;
|
||||
|
||||
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 */
|
||||
return (cdio_drive_cap_t) i_drivetype;
|
||||
*p_read_cap = 0;
|
||||
*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;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
@@ -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) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#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
|
||||
#include <glob.h>
|
||||
@@ -142,7 +142,7 @@ _cdio_init (_img_private_t *env)
|
||||
*/
|
||||
|
||||
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)
|
||||
{
|
||||
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.
|
||||
*/
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -207,7 +207,7 @@ _cdio_read_mode1_sector (void *env, void *data, lsn_t lsn,
|
||||
Returns 0 if no error.
|
||||
*/
|
||||
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)
|
||||
{
|
||||
_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;
|
||||
|
||||
for (i = 0; i < nblocks; i++) {
|
||||
if ( (retval = _cdio_read_mode1_sector (env,
|
||||
if ( (retval = _read_mode1_sector_solaris (env,
|
||||
((char *)data) + (blocksize * i),
|
||||
lsn + i, b_form2)) )
|
||||
return retval;
|
||||
@@ -229,7 +229,7 @@ _cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn,
|
||||
Returns 0 if no error.
|
||||
*/
|
||||
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)
|
||||
{
|
||||
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.
|
||||
*/
|
||||
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)
|
||||
{
|
||||
_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;
|
||||
|
||||
for (i = 0; i < nblocks; i++) {
|
||||
if ( (retval = _cdio_read_mode2_sector (env,
|
||||
if ( (retval = _read_mode2_sector_solaris (env,
|
||||
((char *)data) + (blocksize * i),
|
||||
lsn + i, b_form2)) )
|
||||
return retval;
|
||||
@@ -497,7 +497,7 @@ _get_cdtext_solaris (void *user_data, track_t i_track)
|
||||
also free obj.
|
||||
*/
|
||||
static int
|
||||
_cdio_eject_media (void *user_data) {
|
||||
_eject_media_solaris (void *user_data) {
|
||||
|
||||
_img_private_t *env = user_data;
|
||||
int ret;
|
||||
@@ -536,7 +536,7 @@ _cdio_malloc_and_zero(size_t size) {
|
||||
Return the value associated with the key "arg".
|
||||
*/
|
||||
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;
|
||||
|
||||
@@ -593,13 +593,15 @@ cdio_get_default_device_solaris(void)
|
||||
string when done with it.
|
||||
|
||||
*/
|
||||
static cdio_drive_cap_t
|
||||
_cdio_get_drive_cap_solaris (const void *user_data)
|
||||
static void
|
||||
_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;
|
||||
int status;
|
||||
struct uscsi_cmd my_cmd;
|
||||
int32_t i_drivetype = 0;
|
||||
uint8_t buf[192] = { 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. */
|
||||
break;
|
||||
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;
|
||||
default: ;
|
||||
}
|
||||
@@ -665,7 +667,7 @@ _cdio_get_drive_cap_solaris (const void *user_data)
|
||||
|
||||
*/
|
||||
static char *
|
||||
_cdio_get_mcn_solaris (const void *user_data)
|
||||
_get_mcn_solaris (const void *user_data)
|
||||
{
|
||||
const _img_private_t *env = user_data;
|
||||
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;
|
||||
|
||||
cdio_funcs _funcs = {
|
||||
.eject_media = _cdio_eject_media,
|
||||
.eject_media = _eject_media_solaris,
|
||||
.free = cdio_generic_free,
|
||||
.get_arg = _cdio_get_arg,
|
||||
.get_arg = _get_arg_solaris,
|
||||
.get_cdtext = _get_cdtext_solaris,
|
||||
.get_devices = cdio_get_devices_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_mcn = _cdio_get_mcn_solaris,
|
||||
.get_mcn = _get_mcn_solaris,
|
||||
.get_num_tracks = _cdio_get_num_tracks,
|
||||
.get_track_format = _cdio_get_track_format,
|
||||
.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,
|
||||
.lseek = cdio_generic_lseek,
|
||||
.read = cdio_generic_read,
|
||||
.read_audio_sectors = _cdio_read_audio_sectors,
|
||||
.read_mode1_sector = _cdio_read_mode1_sector,
|
||||
.read_mode1_sectors = _cdio_read_mode1_sectors,
|
||||
.read_mode2_sector = _cdio_read_mode2_sector,
|
||||
.read_mode2_sectors = _cdio_read_mode2_sectors,
|
||||
.read_audio_sectors = _read_audio_sectors_solaris,
|
||||
.read_mode1_sector = _read_mode1_sector_solaris,
|
||||
.read_mode1_sectors = _read_mode1_sectors_solaris,
|
||||
.read_mode2_sector = _read_mode2_sector_solaris,
|
||||
.read_mode2_sectors = _read_mode2_sectors_solaris,
|
||||
.stat_size = _cdio_stat_size,
|
||||
.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;
|
||||
|
||||
if (NULL == psz_orig_source) {
|
||||
psz_source=cdio_get_default_device_solaris();
|
||||
psz_source=_get_default_device_solaris();
|
||||
if (NULL == psz_source) return NULL;
|
||||
_set_arg_solaris(_data, "source", psz_source);
|
||||
free(psz_source);
|
||||
|
||||
36
lib/cdio.c
36
lib/cdio.c
@@ -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) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -39,7 +39,7 @@
|
||||
#include <cdio/logging.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] =
|
||||
@@ -427,19 +427,22 @@ cdio_get_devices_with_cap (char* search_devices[],
|
||||
string when done with it.
|
||||
|
||||
*/
|
||||
cdio_drive_cap_t
|
||||
cdio_get_drive_cap (const CdIo *cdio)
|
||||
void
|
||||
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 =
|
||||
CDIO_DRIVE_CAP_UNKNOWN | CDIO_DRIVE_CAP_CD_AUDIO; /* A safe guess. */
|
||||
/* 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;
|
||||
|
||||
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.
|
||||
|
||||
@@ -447,18 +450,23 @@ cdio_get_drive_cap (const CdIo *cdio)
|
||||
string when done with it.
|
||||
|
||||
*/
|
||||
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)
|
||||
{
|
||||
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,
|
||||
device, NULL);
|
||||
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);
|
||||
}
|
||||
return i_drivetype;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -87,8 +87,10 @@ extern "C" {
|
||||
|
||||
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
|
||||
there is none or we don't have the ability to get it.
|
||||
|
||||
@@ -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) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -26,7 +26,7 @@
|
||||
(*.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 "cdio_assert.h"
|
||||
@@ -838,23 +838,6 @@ cdio_get_default_device_bincue(void)
|
||||
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.
|
||||
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_devices = cdio_get_devices_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_mcn = _get_mcn_image,
|
||||
.get_num_tracks = _get_num_tracks_image,
|
||||
|
||||
@@ -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>
|
||||
toc reading routine adapted from cuetools
|
||||
@@ -25,7 +25,7 @@
|
||||
(*.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 "cdio_assert.h"
|
||||
@@ -878,23 +878,6 @@ cdio_get_default_device_cdrdao(void)
|
||||
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.
|
||||
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_devices = cdio_get_devices_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_mcn = _get_mcn_image,
|
||||
.get_num_tracks = _get_num_tracks_image,
|
||||
|
||||
@@ -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) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -45,7 +45,7 @@
|
||||
#include "_cdio_stdio.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 */
|
||||
@@ -1088,23 +1088,6 @@ cdio_get_default_device_nrg(void)
|
||||
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.
|
||||
CDIO_INVALID_TRACK is returned on error.
|
||||
@@ -1206,7 +1189,7 @@ cdio_open_nrg (const char *psz_source)
|
||||
.get_cdtext = _get_cdtext_image,
|
||||
.get_devices = cdio_get_devices_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_mcn = _get_mcn_image,
|
||||
.get_num_tracks = _get_num_tracks_image,
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -217,4 +217,29 @@ _set_arg_image (void *user_data, const char key[], const char value[])
|
||||
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__ */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* 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>
|
||||
|
||||
@@ -31,25 +31,27 @@
|
||||
in p. We interpret this and return a bit mask set according to the
|
||||
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)
|
||||
{
|
||||
cdio_drive_cap_t i_drivetype=0;
|
||||
/* Reader */
|
||||
if (p[2] & 0x02) i_drivetype |= CDIO_DRIVE_CAP_CD_RW;
|
||||
if (p[2] & 0x08) i_drivetype |= CDIO_DRIVE_CAP_DVD;
|
||||
if (p[5] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_CD_AUDIO;
|
||||
if (p[2] & 0x02) *p_read_cap |= CDIO_DRIVE_CAP_READ_CD_RW;
|
||||
if (p[2] & 0x08) *p_read_cap |= CDIO_DRIVE_CAP_READ_DVD_ROM;
|
||||
if (p[5] & 0x01) *p_read_cap |= CDIO_DRIVE_CAP_READ_AUDIO;
|
||||
|
||||
/* Writer */
|
||||
if (p[3] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_CD_R;
|
||||
if (p[3] & 0x10) i_drivetype |= CDIO_DRIVE_CAP_DVD_R;
|
||||
if (p[3] & 0x20) i_drivetype |= CDIO_DRIVE_CAP_DVD_RAM;
|
||||
if (p[3] & 0x01) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_CD_R;
|
||||
if (p[3] & 0x10) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_DVD_R;
|
||||
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] & 0x08) i_drivetype |= CDIO_DRIVE_CAP_OPEN_TRAY;
|
||||
if (p[6] & 0x01) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_LOCK;
|
||||
if (p[6] & 0x08) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_OPEN_TRAY;
|
||||
if (p[6] >> 5 != 0)
|
||||
i_drivetype |= CDIO_DRIVE_CAP_CLOSE_TRAY;
|
||||
return i_drivetype;
|
||||
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -229,10 +229,14 @@ main(int argc, const char *argv[])
|
||||
cd_drives = cdio_get_devices(DRIVER_DEVICE);
|
||||
if (NULL != cd_drives)
|
||||
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);
|
||||
print_drive_capabilities(i_drive_cap);
|
||||
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
@@ -241,11 +245,15 @@ main(int argc, const char *argv[])
|
||||
cd_drives = NULL;
|
||||
} else {
|
||||
/* 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);
|
||||
print_drive_capabilities(i_drive_cap);
|
||||
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -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) 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);
|
||||
print_drive_capabilities(i_drive_cap);
|
||||
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(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) {
|
||||
|
||||
70
src/util.c
70
src/util.c
@@ -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>
|
||||
|
||||
@@ -87,52 +87,60 @@ fillout_device_name(const char *device_name)
|
||||
}
|
||||
|
||||
/* Prints out drive capabilities */
|
||||
void
|
||||
print_drive_capabilities(cdio_drive_cap_t i_drive_cap)
|
||||
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_drive_cap) {
|
||||
printf("Error in getting drive properties\n");
|
||||
if (CDIO_DRIVE_CAP_ERROR == i_misc_cap) {
|
||||
printf("Error in getting drive hardware properties\n");
|
||||
} else {
|
||||
printf("Hardware : %s\n",
|
||||
i_drive_cap & CDIO_DRIVE_CAP_FILE
|
||||
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_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"),
|
||||
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"),
|
||||
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"),
|
||||
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"),
|
||||
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"),
|
||||
i_drive_cap & CDIO_DRIVE_CAP_MEDIA_CHANGED ? "Yes" : "No");
|
||||
printf(_("Can read Media Cat. No. : %s\n"),
|
||||
i_drive_cap & CDIO_DRIVE_CAP_MCN ? "Yes" : "No");
|
||||
printf(_("Can read sessions > 1 . : %s\n"),
|
||||
i_drive_cap & CDIO_DRIVE_CAP_MULTI_SESSION ? "Yes" : "No");
|
||||
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_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");
|
||||
|
||||
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_drive_cap & CDIO_DRIVE_CAP_CD_AUDIO ? "Yes" : "No");
|
||||
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_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");
|
||||
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");
|
||||
}
|
||||
|
||||
printf(_("Digital Versital Disc : %s\n"),
|
||||
i_drive_cap & CDIO_DRIVE_CAP_DVD ? "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_drive_cap & CDIO_DRIVE_CAP_DVD_R ? "Yes" : "No");
|
||||
i_write_cap & CDIO_DRIVE_CAP_READ_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");
|
||||
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_RAM ? "Yes" : "No");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -101,6 +101,9 @@ void print_version (char *program_name, const char *version,
|
||||
char *fillout_device_name(const char *device_name);
|
||||
|
||||
/* 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 */
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
Media Catalog Number (MCN): 0000010271955
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
Media Catalog Number (MCN): 0000010271955
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
@@ -9,16 +9,17 @@ Can select juke-box disc: No
|
||||
|
||||
Can set drive speed : No
|
||||
Can detect if CD changed : No
|
||||
Can read Media Cat. No. : Yes
|
||||
Can read sessions > 1 . : No
|
||||
Can read multiple sessions : No
|
||||
Can hard reset device : No
|
||||
|
||||
Compact Disc : Yes
|
||||
Reading....
|
||||
Can play audio : Yes
|
||||
Can read CD-RW : No
|
||||
Can write CD-R : No
|
||||
Can read CD-R : Yes
|
||||
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-RAM : No
|
||||
__________________________________
|
||||
|
||||
Reference in New Issue
Block a user