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 typedef enum {
00045 CDIO_DRIVE_CAP_ERROR = 0x40000,
00046 CDIO_DRIVE_CAP_UNKNOWN = 0x80000,
00050 CDIO_DRIVE_CAP_MISC_CLOSE_TRAY = 0x00001,
00052 CDIO_DRIVE_CAP_MISC_EJECT = 0x00002,
00053 CDIO_DRIVE_CAP_MISC_LOCK = 0x00004,
00054 CDIO_DRIVE_CAP_MISC_SELECT_SPEED = 0x00008,
00055 CDIO_DRIVE_CAP_MISC_SELECT_DISC = 0x00010,
00057 CDIO_DRIVE_CAP_MISC_MULTI_SESSION= 0x00020,
00058 CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED= 0x00080,
00059 CDIO_DRIVE_CAP_MISC_RESET = 0x00100,
00060 CDIO_DRIVE_CAP_MISC_FILE = 0x20000
00062 } cdio_drive_cap_misc_t;
00063
00065 typedef enum {
00066 CDIO_DRIVE_CAP_READ_AUDIO = 0x00001,
00067 CDIO_DRIVE_CAP_READ_CD_DA = 0x00002,
00068 CDIO_DRIVE_CAP_READ_CD_G = 0x00004,
00069 CDIO_DRIVE_CAP_READ_CD_R = 0x00008,
00070 CDIO_DRIVE_CAP_READ_CD_RW = 0x00010,
00071 CDIO_DRIVE_CAP_READ_DVD_R = 0x00020,
00072 CDIO_DRIVE_CAP_READ_DVD_PR = 0x00040,
00073 CDIO_DRIVE_CAP_READ_DVD_RAM = 0x00080,
00074 CDIO_DRIVE_CAP_READ_DVD_ROM = 0x00100,
00075 CDIO_DRIVE_CAP_READ_DVD_RW = 0x00200,
00076 CDIO_DRIVE_CAP_READ_DVD_RPW = 0x00400,
00077 CDIO_DRIVE_CAP_READ_C2_ERRS = 0x00800,
00078 CDIO_DRIVE_CAP_READ_MODE2_FORM1 = 0x01000,
00079 CDIO_DRIVE_CAP_READ_MODE2_FORM2 = 0x02000,
00080 CDIO_DRIVE_CAP_READ_MCN = 0x04000,
00081 CDIO_DRIVE_CAP_READ_ISRC = 0x08000
00082 } cdio_drive_cap_read_t;
00083
00085 typedef enum {
00086 CDIO_DRIVE_CAP_WRITE_CD_R = 0x00001,
00087 CDIO_DRIVE_CAP_WRITE_CD_RW = 0x00002,
00088 CDIO_DRIVE_CAP_WRITE_DVD_R = 0x00004,
00089 CDIO_DRIVE_CAP_WRITE_DVD_PR = 0x00008,
00090 CDIO_DRIVE_CAP_WRITE_DVD_RAM = 0x00010,
00091 CDIO_DRIVE_CAP_WRITE_DVD_RW = 0x00020,
00092 CDIO_DRIVE_CAP_WRITE_DVD_RPW = 0x00040,
00093 CDIO_DRIVE_CAP_WRITE_MT_RAINIER = 0x00080,
00094 CDIO_DRIVE_CAP_WRITE_BURN_PROOF = 0x00100,
00095 CDIO_DRIVE_CAP_WRITE_CD =
00096 (CDIO_DRIVE_CAP_WRITE_CD_R | CDIO_DRIVE_CAP_WRITE_CD_RW),
00099 CDIO_DRIVE_CAP_WRITE_DVD =
00100 (CDIO_DRIVE_CAP_WRITE_DVD_R | CDIO_DRIVE_CAP_WRITE_DVD_PR
00101 | CDIO_DRIVE_CAP_WRITE_DVD_RAM | CDIO_DRIVE_CAP_WRITE_DVD_RW
00102 | CDIO_DRIVE_CAP_WRITE_DVD_RPW ),
00105 CDIO_DRIVE_CAP_WRITE =
00106 (CDIO_DRIVE_CAP_WRITE_CD | CDIO_DRIVE_CAP_WRITE_DVD)
00108 } cdio_drive_cap_write_t;
00109
00111 typedef enum {
00112 CDIO_MMC_HW_VENDOR_LEN = 8,
00113 CDIO_MMC_HW_MODEL_LEN = 16,
00114 CDIO_MMC_HW_REVISION_LEN = 4
00115 } cdio_mmc_hw_len_t;
00116
00117
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
00127
00129 typedef enum {
00130 CDIO_SRC_IS_DISK_IMAGE_MASK = 0x0001,
00131 CDIO_SRC_IS_DEVICE_MASK = 0x0002,
00132 CDIO_SRC_IS_SCSI_MASK = 0x0004,
00133 CDIO_SRC_IS_NATIVE_MASK = 0x0008
00134 } cdio_src_category_mask_t;
00135
00136
00152 typedef enum {
00153 DRIVER_UNKNOWN,
00155 DRIVER_AIX,
00156 DRIVER_BSDI,
00157 DRIVER_FREEBSD,
00158 DRIVER_LINUX,
00159 DRIVER_SOLARIS,
00160 DRIVER_OSX,
00161 DRIVER_WIN32,
00163 DRIVER_CDRDAO,
00166 DRIVER_BINCUE,
00169 DRIVER_NRG,
00170 DRIVER_DEVICE
00171 } driver_id_t;
00172
00178 extern const driver_id_t cdio_os_driver;
00179
00180
00185 #define CDIO_MIN_DRIVER DRIVER_AIX
00186 #define CDIO_MIN_DEVICE_DRIVER CDIO_MIN_DRIVER
00187 #define CDIO_MAX_DRIVER DRIVER_NRG
00188 #define CDIO_MAX_DEVICE_DRIVER DRIVER_WIN32
00189
00201 typedef enum {
00202 DRIVER_OP_SUCCESS = 0,
00206 DRIVER_OP_ERROR = -1,
00207 DRIVER_OP_UNSUPPORTED = -2,
00212 DRIVER_OP_UNINIT = -3,
00216 DRIVER_OP_NOT_PERMITTED = -4,
00220 DRIVER_OP_BAD_PARAMETER = -5,
00221 DRIVER_OP_BAD_POINTER = -6,
00222 DRIVER_OP_NO_DRIVER = -7,
00224 } driver_return_code_t;
00225
00235 driver_return_code_t cdio_close_tray (const char *psz_drive,
00236 driver_id_t *p_driver_id);
00237
00242 const char *cdio_driver_errmsg(driver_return_code_t drc);
00243
00250 driver_return_code_t cdio_eject_media (CdIo_t **p_cdio);
00251
00258 driver_return_code_t cdio_eject_media_drive (const char *psz_drive);
00259
00270 void cdio_free_device_list (char * device_list[]);
00271
00285 char * cdio_get_default_device (const CdIo_t *p_cdio);
00286
00294 char * cdio_get_default_device_driver ( driver_id_t *p_driver_id);
00295
00307 char ** cdio_get_devices (driver_id_t driver_id);
00308
00345 char ** cdio_get_devices_with_cap ( char *ppsz_search_devices[],
00346 cdio_fs_anal_t capabilities, bool b_any);
00347
00354 char ** cdio_get_devices_with_cap_ret ( char* ppsz_search_devices[],
00355 cdio_fs_anal_t capabilities,
00356 bool b_any,
00357 driver_id_t *p_driver_id);
00358
00366 char ** cdio_get_devices_ret ( driver_id_t *p_driver_id);
00367
00380 void cdio_get_drive_cap (const CdIo_t *p_cdio,
00381 cdio_drive_read_cap_t *p_read_cap,
00382 cdio_drive_write_cap_t *p_write_cap,
00383 cdio_drive_misc_cap_t *p_misc_cap);
00384
00394 void cdio_get_drive_cap_dev (const char *device,
00395 cdio_drive_read_cap_t *p_read_cap,
00396 cdio_drive_write_cap_t *p_write_cap,
00397 cdio_drive_misc_cap_t *p_misc_cap);
00398
00405 const char * cdio_get_driver_name (const CdIo_t *p_cdio);
00406
00414 driver_id_t cdio_get_driver_id (const CdIo_t *p_cdio);
00415
00420 bool cdio_get_hwinfo ( const CdIo_t *p_cdio,
00421 cdio_hwinfo_t *p_hw_info );
00422
00423
00430 driver_return_code_t cdio_get_last_session (CdIo_t *p_cdio,
00431 lsn_t *i_last_session);
00432
00439 int cdio_get_media_changed(CdIo_t *p_cdio);
00440
00442 bool_3way_t cdio_have_atapi (CdIo_t *p_cdio);
00443
00445 bool cdio_have_aix (void);
00446
00448 bool cdio_have_bsdi (void);
00449
00451 bool cdio_have_freebsd (void);
00452
00454 bool cdio_have_linux (void);
00455
00457 bool cdio_have_solaris (void);
00458
00460 bool cdio_have_osx (void);
00461
00463 bool cdio_have_win32 (void);
00464
00466 bool cdio_have_nrg (void);
00467
00469 bool cdio_have_bincue (void);
00470
00472 bool cdio_have_cdrdao (void);
00473
00475 bool cdio_have_driver (driver_id_t driver_id);
00476
00477
00478
00479
00480
00481
00482
00483 void cdio_destroy (CdIo_t *p_cdio);
00484
00491 const char *cdio_driver_describe (driver_id_t driver_id);
00492
00502 CdIo_t * cdio_open (const char *psz_source, driver_id_t driver_id);
00503
00514 CdIo_t * cdio_open_am (const char *psz_source,
00515 driver_id_t driver_id, const char *psz_access_mode);
00516
00522 CdIo_t * cdio_open_bincue (const char *psz_cue_name);
00523
00529 CdIo_t * cdio_open_am_bincue (const char *psz_cue_name,
00530 const char *psz_access_mode);
00531
00536 CdIo_t * cdio_open_cdrdao (const char *psz_toc_name);
00537
00542 CdIo_t * cdio_open_am_cdrdao (const char *psz_toc_name,
00543 const char *psz_access_mode);
00544
00550 char * cdio_get_default_device_bincue(void);
00551
00552 char **cdio_get_devices_bincue(void);
00553
00558 char * cdio_get_default_device_cdrdao(void);
00559
00560 char **cdio_get_devices_cdrdao(void);
00561
00568 CdIo_t * cdio_open_cd (const char *device_name);
00569
00576 CdIo_t * cdio_open_am_cd (const char *psz_device,
00577 const char *psz_access_mode);
00578
00584 CdIo_t * cdio_open_cue (const char *cue_name);
00585
00594 CdIo_t * cdio_open_am_aix (const char *psz_source,
00595 const char *psz_access_mode);
00596
00605 CdIo_t * cdio_open_aix (const char *psz_source);
00606
00615 char * cdio_get_default_device_aix(void);
00616
00624 char **cdio_get_devices_aix(void);
00625
00635 CdIo_t * cdio_open_bsdi (const char *psz_source);
00636
00645 CdIo_t * cdio_open_am_bsdi (const char *psz_source,
00646 const char *psz_access_mode);
00647
00656 char * cdio_get_default_device_bsdi(void);
00657
00665 char **cdio_get_devices_bsdi(void);
00666
00674 CdIo_t * cdio_open_freebsd (const char *paz_psz_source);
00675
00683 CdIo_t * cdio_open_am_freebsd (const char *psz_source,
00684 const char *psz_access_mode);
00685
00691 char * cdio_get_default_device_freebsd(void);
00692
00696 char **cdio_get_devices_freebsd(void);
00697
00708 CdIo_t * cdio_open_linux (const char *psz_source);
00709
00716 CdIo_t * cdio_open_am_linux (const char *psz_source,
00717 const char *access_mode);
00718
00731 char * cdio_get_default_device_linux(void);
00732
00736 char **cdio_get_devices_linux(void);
00737
00744 CdIo_t * cdio_open_solaris (const char *psz_source);
00745
00752 CdIo_t * cdio_open_am_solaris (const char *psz_source,
00753 const char *psz_access_mode);
00754
00767 char * cdio_get_default_device_solaris(void);
00768
00772 char **cdio_get_devices_solaris(void);
00773
00785 CdIo_t * cdio_open_osx (const char *psz_source);
00786
00794 CdIo_t * cdio_open_am_osx (const char *psz_source,
00795 const char *psz_access_mode);
00796
00805 char * cdio_get_default_device_osx(void);
00806
00810 char **cdio_get_devices_osx(void);
00811
00819 CdIo_t * cdio_open_win32 (const char *psz_source);
00820
00826 CdIo_t * cdio_open_am_win32 (const char *psz_source,
00827 const char *psz_access_mode);
00828
00839 char * cdio_get_default_device_win32(void);
00840
00841 char **cdio_get_devices_win32(void);
00842
00848 CdIo_t * cdio_open_nrg (const char *psz_source);
00849
00855 CdIo_t * cdio_open_am_nrg (const char *psz_source,
00856 const char *psz_access_mode);
00857
00865 char * cdio_get_default_device_nrg(void);
00866
00867 char **cdio_get_devices_nrg(void);
00868
00877 char *cdio_is_binfile(const char *bin_name);
00878
00885 char *cdio_is_cuefile(const char *cue_name);
00886
00894 bool cdio_is_nrg(const char *psz_nrg);
00895
00903 bool cdio_is_tocfile(const char *psz_toc);
00904
00914 bool cdio_is_device(const char *psz_source, driver_id_t driver_id);
00915
00919 driver_return_code_t cdio_set_blocksize ( const CdIo_t *p_cdio,
00920 int i_blocksize );
00921
00936 driver_return_code_t cdio_set_speed ( const CdIo_t *p_cdio,
00937 int i_drive_speed );
00938
00947 const char * cdio_get_arg (const CdIo_t *p_cdio, const char key[]);
00948
00956 driver_return_code_t cdio_set_arg (CdIo_t *p_cdio, const char key[],
00957 const char value[]);
00958
00962 bool cdio_init(void);
00963
00964 #ifdef __cplusplus
00965 }
00966 #endif
00967
00973 extern cdio_drive_cap_misc_t debug_cdio_drive_cap_misc;
00974 extern cdio_drive_cap_read_t debug_cdio_drive_cap_read_t;
00975 extern cdio_drive_cap_write_t debug_drive_cap_write_t;
00976 extern cdio_mmc_hw_len_t debug_cdio_mmc_hw_len;
00977 extern cdio_src_category_mask_t debug_cdio_src_category_mask;
00978
00979 #endif