00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00026 #ifndef __CDIO_DEVICE_H__
00027 #define __CDIO_DEVICE_H__
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00034 typedef uint32_t cdio_drive_read_cap_t;
00035 typedef uint32_t cdio_drive_write_cap_t;
00036 typedef uint32_t cdio_drive_misc_cap_t;
00037
00044 #define CDIO_DRIVE_CAP_ERROR 0x40000
00045 #define CDIO_DRIVE_CAP_UNKNOWN 0x80000
00050 #define CDIO_DRIVE_CAP_MISC_CLOSE_TRAY 0x00001
00052 #define CDIO_DRIVE_CAP_MISC_EJECT 0x00002
00053 #define CDIO_DRIVE_CAP_MISC_LOCK 0x00004
00054 #define CDIO_DRIVE_CAP_MISC_SELECT_SPEED 0x00008
00055 #define CDIO_DRIVE_CAP_MISC_SELECT_DISC 0x00010
00057 #define CDIO_DRIVE_CAP_MISC_MULTI_SESSION 0x00020
00058 #define CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED 0x00080
00059 #define CDIO_DRIVE_CAP_MISC_RESET 0x00100
00060 #define CDIO_DRIVE_CAP_MISC_FILE 0x20000
00064 #define CDIO_DRIVE_CAP_READ_AUDIO 0x00001
00065 #define CDIO_DRIVE_CAP_READ_CD_DA 0x00002
00066 #define CDIO_DRIVE_CAP_READ_CD_G 0x00004
00067 #define CDIO_DRIVE_CAP_READ_CD_R 0x00008
00068 #define CDIO_DRIVE_CAP_READ_CD_RW 0x00010
00069 #define CDIO_DRIVE_CAP_READ_DVD_R 0x00020
00070 #define CDIO_DRIVE_CAP_READ_DVD_PR 0x00040
00071 #define CDIO_DRIVE_CAP_READ_DVD_RAM 0x00080
00072 #define CDIO_DRIVE_CAP_READ_DVD_ROM 0x00100
00073 #define CDIO_DRIVE_CAP_READ_DVD_RW 0x00200
00074 #define CDIO_DRIVE_CAP_READ_DVD_RPW 0x00400
00075 #define CDIO_DRIVE_CAP_READ_C2_ERRS 0x00800
00076 #define CDIO_DRIVE_CAP_READ_MODE2_FORM1 0x01000
00077 #define CDIO_DRIVE_CAP_READ_MODE2_FORM2 0x02000
00078 #define CDIO_DRIVE_CAP_READ_MCN 0x04000
00079 #define CDIO_DRIVE_CAP_READ_ISRC 0x08000
00082 #define CDIO_DRIVE_CAP_WRITE_CD_R 0x00001
00083 #define CDIO_DRIVE_CAP_WRITE_CD_RW 0x00002
00084 #define CDIO_DRIVE_CAP_WRITE_DVD_R 0x00004
00085 #define CDIO_DRIVE_CAP_WRITE_DVD_PR 0x00008
00086 #define CDIO_DRIVE_CAP_WRITE_DVD_RAM 0x00010
00087 #define CDIO_DRIVE_CAP_WRITE_DVD_RW 0x00020
00088 #define CDIO_DRIVE_CAP_WRITE_DVD_RPW 0x00040
00089 #define CDIO_DRIVE_CAP_WRITE_MT_RAINIER 0x00080
00090 #define CDIO_DRIVE_CAP_WRITE_BURN_PROOF 0x00100
00093 #define CDIO_DRIVE_CAP_WRITE_CD ( \
00094 CDIO_DRIVE_CAP_WRITE_CD_R \
00095 | CDIO_DRIVE_CAP_WRITE_CD_RW \
00096 )
00097
00100 #define CDIO_DRIVE_CAP_WRITE_DVD ( \
00101 | CDIO_DRIVE_CAP_WRITE_DVD_R \
00102 | CDIO_DRIVE_CAP_WRITE_DVD_PR \
00103 | CDIO_DRIVE_CAP_WRITE_DVD_RAM \
00104 | CDIO_DRIVE_CAP_WRITE_DVD_RW \
00105 | CDIO_DRIVE_CAP_WRITE_DVD_RPW \
00106 )
00107
00109 #define CDIO_DRIVE_CAP_WRITE \
00110 (CDIO_DRIVE_CAP_WRITE_CD | CDIO_DRIVE_CAP_WRITE_DVD)
00111
00114 #define CDIO_MMC_HW_VENDOR_LEN 8
00115 #define CDIO_MMC_HW_MODEL_LEN 16
00116 #define CDIO_MMC_HW_REVISION_LEN 4
00120 typedef struct cdio_hwinfo
00121 {
00122 char psz_vendor [CDIO_MMC_HW_VENDOR_LEN+1];
00123 char psz_model [CDIO_MMC_HW_MODEL_LEN+1];
00124 char psz_revision[CDIO_MMC_HW_REVISION_LEN+1];
00125 } cdio_hwinfo_t;
00126
00129 #define CDIO_SRC_IS_DISK_IMAGE_MASK 0x0001
00130 #define CDIO_SRC_IS_DEVICE_MASK 0x0002
00131 #define CDIO_SRC_IS_SCSI_MASK 0x0004
00132 #define CDIO_SRC_IS_NATIVE_MASK 0x0008
00133
00147 typedef enum {
00148 DRIVER_UNKNOWN,
00150 DRIVER_AIX,
00151 DRIVER_BSDI,
00152 DRIVER_FREEBSD,
00153 DRIVER_LINUX,
00154 DRIVER_SOLARIS,
00155 DRIVER_OSX,
00156 DRIVER_WIN32,
00158 DRIVER_CDRDAO,
00161 DRIVER_BINCUE,
00164 DRIVER_NRG,
00165 DRIVER_DEVICE
00166 } driver_id_t;
00167
00173 extern const driver_id_t cdio_os_driver;
00174
00175
00180 #define CDIO_MIN_DRIVER DRIVER_AIX
00181 #define CDIO_MIN_DEVICE_DRIVER CDIO_MIN_DRIVER
00182 #define CDIO_MAX_DRIVER DRIVER_NRG
00183 #define CDIO_MAX_DEVICE_DRIVER DRIVER_WIN32
00184
00196 typedef enum {
00197 DRIVER_OP_SUCCESS = 0,
00201 DRIVER_OP_ERROR = -1,
00202 DRIVER_OP_UNSUPPORTED = -2,
00207 DRIVER_OP_UNINIT = -3,
00211 DRIVER_OP_NOT_PERMITTED = -4,
00215 DRIVER_OP_BAD_PARAMETER = -5,
00216 DRIVER_OP_BAD_POINTER = -6,
00217 DRIVER_OP_NO_DRIVER = -7,
00219 } driver_return_code_t;
00220
00229 driver_return_code_t cdio_close_tray (const char *psz_drive,
00230 driver_id_t *p_driver_id);
00231
00238 driver_return_code_t cdio_eject_media (CdIo_t **p_cdio);
00239
00250 void cdio_free_device_list (char * device_list[]);
00251
00265 char * cdio_get_default_device (const CdIo_t *p_cdio);
00266
00274 char * cdio_get_default_device_driver ( driver_id_t *p_driver_id);
00275
00287 char ** cdio_get_devices (driver_id_t driver_id);
00288
00306 char ** cdio_get_devices_with_cap ( char *ppsz_search_devices[],
00307 cdio_fs_anal_t capabilities, bool b_any);
00308
00315 char ** cdio_get_devices_with_cap_ret ( char* ppsz_search_devices[],
00316 cdio_fs_anal_t capabilities,
00317 bool b_any,
00318 driver_id_t *p_driver_id);
00319
00327 char ** cdio_get_devices_ret ( driver_id_t *p_driver_id);
00328
00341 void cdio_get_drive_cap (const CdIo_t *p_cdio,
00342 cdio_drive_read_cap_t *p_read_cap,
00343 cdio_drive_write_cap_t *p_write_cap,
00344 cdio_drive_misc_cap_t *p_misc_cap);
00345
00355 void cdio_get_drive_cap_dev (const char *device,
00356 cdio_drive_read_cap_t *p_read_cap,
00357 cdio_drive_write_cap_t *p_write_cap,
00358 cdio_drive_misc_cap_t *p_misc_cap);
00359
00366 const char * cdio_get_driver_name (const CdIo_t *p_cdio);
00367
00375 driver_id_t cdio_get_driver_id (const CdIo_t *p_cdio);
00376
00381 bool cdio_get_hwinfo ( const CdIo_t *p_cdio,
00382 cdio_hwinfo_t *p_hw_info );
00383
00384
00391 driver_return_code_t cdio_get_last_session (CdIo_t *p_cdio,
00392 lsn_t *i_last_session);
00393
00400 int cdio_get_media_changed(CdIo_t *p_cdio);
00401
00403 bool_3way_t cdio_have_atapi (CdIo_t *p_cdio);
00404
00406 bool cdio_have_aix (void);
00407
00409 bool cdio_have_bsdi (void);
00410
00412 bool cdio_have_freebsd (void);
00413
00415 bool cdio_have_linux (void);
00416
00418 bool cdio_have_solaris (void);
00419
00421 bool cdio_have_osx (void);
00422
00424 bool cdio_have_win32 (void);
00425
00427 bool cdio_have_nrg (void);
00428
00430 bool cdio_have_bincue (void);
00431
00433 bool cdio_have_cdrdao (void);
00434
00436 bool cdio_have_driver (driver_id_t driver_id);
00437
00438
00439
00440
00441
00442
00443
00444 void cdio_destroy (CdIo_t *p_cdio);
00445
00452 const char *cdio_driver_describe (driver_id_t driver_id);
00453
00462 CdIo_t * cdio_open (const char *psz_source, driver_id_t driver_id);
00463
00472 CdIo_t * cdio_open_am (const char *psz_source,
00473 driver_id_t driver_id, const char *psz_access_mode);
00474
00480 CdIo_t * cdio_open_bincue (const char *psz_cue_name);
00481
00487 CdIo_t * cdio_open_am_bincue (const char *psz_cue_name,
00488 const char *psz_access_mode);
00489
00494 CdIo_t * cdio_open_cdrdao (const char *psz_toc_name);
00495
00500 CdIo_t * cdio_open_am_cdrdao (const char *psz_toc_name,
00501 const char *psz_access_mode);
00502
00508 char * cdio_get_default_device_bincue(void);
00509
00510 char **cdio_get_devices_bincue(void);
00511
00516 char * cdio_get_default_device_cdrdao(void);
00517
00518 char **cdio_get_devices_cdrdao(void);
00519
00526 CdIo_t * cdio_open_cd (const char *device_name);
00527
00534 CdIo_t * cdio_open_am_cd (const char *psz_device,
00535 const char *psz_access_mode);
00536
00542 CdIo_t * cdio_open_cue (const char *cue_name);
00543
00552 CdIo_t * cdio_open_am_aix (const char *psz_source,
00553 const char *psz_access_mode);
00554
00563 CdIo_t * cdio_open_aix (const char *psz_source);
00564
00573 char * cdio_get_default_device_aix(void);
00574
00582 char **cdio_get_devices_aix(void);
00583
00593 CdIo_t * cdio_open_bsdi (const char *psz_source);
00594
00603 CdIo_t * cdio_open_am_bsdi (const char *psz_source,
00604 const char *psz_access_mode);
00605
00614 char * cdio_get_default_device_bsdi(void);
00615
00623 char **cdio_get_devices_bsdi(void);
00624
00632 CdIo_t * cdio_open_freebsd (const char *paz_psz_source);
00633
00641 CdIo_t * cdio_open_am_freebsd (const char *psz_source,
00642 const char *psz_access_mode);
00643
00649 char * cdio_get_default_device_freebsd(void);
00650
00654 char **cdio_get_devices_freebsd(void);
00655
00666 CdIo_t * cdio_open_linux (const char *psz_source);
00667
00674 CdIo_t * cdio_open_am_linux (const char *psz_source,
00675 const char *access_mode);
00676
00689 char * cdio_get_default_device_linux(void);
00690
00694 char **cdio_get_devices_linux(void);
00695
00702 CdIo_t * cdio_open_solaris (const char *psz_source);
00703
00710 CdIo_t * cdio_open_am_solaris (const char *psz_source,
00711 const char *psz_access_mode);
00712
00725 char * cdio_get_default_device_solaris(void);
00726
00730 char **cdio_get_devices_solaris(void);
00731
00743 CdIo_t * cdio_open_osx (const char *psz_source);
00744
00752 CdIo_t * cdio_open_am_osx (const char *psz_source,
00753 const char *psz_access_mode);
00754
00763 char * cdio_get_default_device_osx(void);
00764
00768 char **cdio_get_devices_osx(void);
00769
00777 CdIo_t * cdio_open_win32 (const char *psz_source);
00778
00784 CdIo_t * cdio_open_am_win32 (const char *psz_source,
00785 const char *psz_access_mode);
00786
00797 char * cdio_get_default_device_win32(void);
00798
00799 char **cdio_get_devices_win32(void);
00800
00806 CdIo_t * cdio_open_nrg (const char *psz_source);
00807
00813 CdIo_t * cdio_open_am_nrg (const char *psz_source,
00814 const char *psz_access_mode);
00815
00823 char * cdio_get_default_device_nrg(void);
00824
00825 char **cdio_get_devices_nrg(void);
00826
00835 char *cdio_is_binfile(const char *bin_name);
00836
00843 char *cdio_is_cuefile(const char *cue_name);
00844
00852 bool cdio_is_nrg(const char *psz_nrg);
00853
00861 bool cdio_is_tocfile(const char *psz_toc);
00862
00872 bool cdio_is_device(const char *psz_source, driver_id_t driver_id);
00873
00877 driver_return_code_t cdio_set_blocksize ( const CdIo_t *p_cdio,
00878 int i_blocksize );
00879
00883 driver_return_code_t cdio_set_speed ( const CdIo_t *p_cdio, int i_speed );
00884
00893 const char * cdio_get_arg (const CdIo_t *p_cdio, const char key[]);
00894
00902 driver_return_code_t cdio_set_arg (CdIo_t *p_cdio, const char key[],
00903 const char value[]);
00904
00908 bool cdio_init(void);
00909
00910 #ifdef __cplusplus
00911 }
00912 #endif
00913
00914 #endif