libcdio  2.1.0
device.h
Go to the documentation of this file.
1 /* -*- c -*-
2 
3  Copyright (C) 2005-2006, 2008-2013 Rocky Bernstein <rocky@gnu.org>
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
25 #ifndef CDIO_DEVICE_H_
26 #define CDIO_DEVICE_H_
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* __cplusplus */
31 
32 #include <cdio/types.h>
33 #include <cdio/cdio.h>
34 
36  typedef uint32_t cdio_drive_read_cap_t;
37  typedef uint32_t cdio_drive_write_cap_t;
38  typedef uint32_t cdio_drive_misc_cap_t;
39 
46  typedef enum {
48  CDIO_DRIVE_CAP_UNKNOWN = 0x80000,
62  CDIO_DRIVE_CAP_MISC_FILE = 0x20000
65 
67  typedef enum {
83  CDIO_DRIVE_CAP_READ_ISRC = 0x08000
85 
87  typedef enum {
111 
113  typedef enum {
118 
119 
122  typedef struct cdio_hwinfo
123  {
128 
129 
131  typedef enum {
135  CDIO_SRC_IS_NATIVE_MASK = 0x0008
137 
138 
151  typedef enum {
160  DRIVER_WIN32,
162  DRIVER_CDRDAO,
165  DRIVER_BINCUE,
171 
176  extern const driver_id_t cdio_drivers[];
177 
182  extern const driver_id_t cdio_device_drivers[];
183 
190  extern const driver_id_t cdio_os_driver;
191 
192 
205  typedef enum {
206  DRIVER_OP_SUCCESS = 0,
212  DRIVER_OP_UNSUPPORTED = -2,
217  DRIVER_OP_UNINIT = -3,
227  DRIVER_OP_NO_DRIVER = -7,
232 
243  driver_return_code_t cdio_close_tray (const char *psz_drive,
244  /*in/out*/ driver_id_t *p_driver_id);
245 
252 
260 
268 
279  void cdio_free_device_list (char * device_list[]);
280 
295  char * cdio_get_default_device (const CdIo_t *p_cdio);
296 
304  char * cdio_get_default_device_driver (/*in/out*/ driver_id_t *p_driver_id);
305 
317  char ** cdio_get_devices (driver_id_t driver_id);
318 
355  char ** cdio_get_devices_with_cap (/*in*/ char *ppsz_search_devices[],
356  cdio_fs_anal_t capabilities, bool b_any);
357 
364  char ** cdio_get_devices_with_cap_ret (/*in*/ char* ppsz_search_devices[],
365  cdio_fs_anal_t capabilities,
366  bool b_any,
367  /*out*/ driver_id_t *p_driver_id);
368 
377  char ** cdio_get_devices_ret (/*in/out*/ driver_id_t *p_driver_id);
378 
391  void cdio_get_drive_cap (const CdIo_t *p_cdio,
392  cdio_drive_read_cap_t *p_read_cap,
393  cdio_drive_write_cap_t *p_write_cap,
394  cdio_drive_misc_cap_t *p_misc_cap);
395 
405  void cdio_get_drive_cap_dev (const char *device,
406  cdio_drive_read_cap_t *p_read_cap,
407  cdio_drive_write_cap_t *p_write_cap,
408  cdio_drive_misc_cap_t *p_misc_cap);
409 
418  const char * cdio_get_driver_name (const CdIo_t *p_cdio);
419 
423  const char * cdio_get_driver_name_from_id (driver_id_t driver_id);
424 
425 
436 
441  bool cdio_get_hwinfo ( const CdIo_t *p_cdio,
442  /*out*/ cdio_hwinfo_t *p_hw_info );
443 
444 
453  /*out*/ lsn_t *i_last_session);
454 
464 
467 
469  bool cdio_have_driver (driver_id_t driver_id);
470 
477  void cdio_destroy (CdIo_t *p_cdio);
478 
485  const char *cdio_driver_describe (driver_id_t driver_id);
486 
497  CdIo_t * cdio_open (const char *psz_source, driver_id_t driver_id);
498 
511  CdIo_t * cdio_open_am (const char *psz_source,
512  driver_id_t driver_id, const char *psz_access_mode);
513 
520  CdIo_t * cdio_open_bincue (const char *psz_cue_name);
521 
528  CdIo_t * cdio_open_am_bincue (const char *psz_cue_name,
529  const char *psz_access_mode);
530 
536  CdIo_t * cdio_open_cdrdao (const char *psz_toc_name);
537 
543  CdIo_t * cdio_open_am_cdrdao (const char *psz_toc_name,
544  const char *psz_access_mode);
545 
553 
555 
562 
564 
572  CdIo_t * cdio_open_cd (const char *device_name);
573 
581  CdIo_t * cdio_open_am_cd (const char *psz_device,
582  const char *psz_access_mode);
583 
590  CdIo_t * cdio_open_cue (const char *cue_name);
591 
601  CdIo_t * cdio_open_am_aix (const char *psz_source,
602  const char *psz_access_mode);
603 
613  CdIo_t * cdio_open_aix (const char *psz_source);
614 
625 
634  char **cdio_get_devices_aix(void);
635 
644  CdIo_t * cdio_open_freebsd (const char *paz_psz_source);
645 
654  CdIo_t * cdio_open_am_freebsd (const char *psz_source,
655  const char *psz_access_mode);
656 
664 
670 
682  CdIo_t * cdio_open_linux (const char *psz_source);
683 
691  CdIo_t * cdio_open_am_linux (const char *psz_source,
692  const char *access_mode);
693 
708 
714 
722  CdIo_t * cdio_open_solaris (const char *psz_source);
723 
731  CdIo_t * cdio_open_am_solaris (const char *psz_source,
732  const char *psz_access_mode);
733 
748 
754 
767  CdIo_t * cdio_open_osx (const char *psz_source);
768 
777  CdIo_t * cdio_open_am_osx (const char *psz_source,
778  const char *psz_access_mode);
779 
790 
795  char **cdio_get_devices_osx(void);
796 
805  CdIo_t * cdio_open_win32 (const char *psz_source);
806 
813  CdIo_t * cdio_open_am_win32 (const char *psz_source,
814  const char *psz_access_mode);
815 
828 
830 
837  CdIo_t * cdio_open_nrg (const char *psz_source);
838 
845  CdIo_t * cdio_open_am_nrg (const char *psz_source,
846  const char *psz_access_mode);
847 
857 
858  char **cdio_get_devices_nrg(void);
859 
868  char *cdio_is_binfile(const char *bin_name);
869 
876  char *cdio_is_cuefile(const char *cue_name);
877 
885  bool cdio_is_nrg(const char *psz_nrg);
886 
894  bool cdio_is_tocfile(const char *psz_toc);
895 
905  bool cdio_is_device(const char *psz_source, driver_id_t driver_id);
906 
911  int i_blocksize );
912 
930  int i_drive_speed );
931 
939  const char * cdio_get_arg (const CdIo_t *p_cdio, const char key[]);
940 
948  driver_return_code_t cdio_set_arg (CdIo_t *p_cdio, const char key[],
949  const char value[]);
950 
954  bool cdio_init(void);
955 
956 #ifdef __cplusplus
957 }
958 #endif /* __cplusplus */
959 
970 
971 #endif /* CDIO_DEVICE_H_ */
The top-level header for libcdio: the CD Input and Control library. Applications include this for any...
struct _CdIo CdIo_t
Definition: cdio.h:47
CdIo_t * cdio_open(const char *psz_source, driver_id_t driver_id)
CdIo_t * cdio_open_am_osx(const char *psz_source, const char *psz_access_mode)
driver_return_code_t cdio_set_blocksize(const CdIo_t *p_cdio, int i_blocksize)
CdIo_t * cdio_open_aix(const char *psz_source)
bool cdio_is_tocfile(const char *psz_toc)
CdIo_t * cdio_open_am_cdrdao(const char *psz_toc_name, const char *psz_access_mode)
driver_return_code_t cdio_eject_media_drive(const char *psz_drive)
char * cdio_get_default_device(const CdIo_t *p_cdio)
CdIo_t * cdio_open_win32(const char *psz_source)
char ** cdio_get_devices_solaris(void)
cdio_mmc_hw_len_t debug_cdio_mmc_hw_len
driver_return_code_t cdio_set_speed(const CdIo_t *p_cdio, int i_drive_speed)
char * cdio_get_default_device_bincue(void)
const driver_id_t cdio_os_driver
CdIo_t * cdio_open_am_win32(const char *psz_source, const char *psz_access_mode)
char ** cdio_get_devices_aix(void)
CdIo_t * cdio_open_nrg(const char *psz_source)
char * cdio_is_binfile(const char *bin_name)
const char * cdio_get_driver_name_from_id(driver_id_t driver_id)
cdio_drive_cap_misc_t
Drive capability bits returned by cdio_get_drive_cap() NOTE: Setting a bit here means the presence of...
Definition: device.h:46
@ CDIO_DRIVE_CAP_UNKNOWN
Definition: device.h:48
@ CDIO_DRIVE_CAP_MISC_LOCK
Definition: device.h:55
@ CDIO_DRIVE_CAP_MISC_MULTI_SESSION
Definition: device.h:59
@ CDIO_DRIVE_CAP_MISC_SELECT_DISC
Definition: device.h:57
@ CDIO_DRIVE_CAP_MISC_RESET
Definition: device.h:61
@ CDIO_DRIVE_CAP_MISC_CLOSE_TRAY
Definition: device.h:52
@ CDIO_DRIVE_CAP_MISC_SELECT_SPEED
Definition: device.h:56
@ CDIO_DRIVE_CAP_MISC_EJECT
Definition: device.h:54
@ CDIO_DRIVE_CAP_ERROR
Definition: device.h:47
@ CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED
Definition: device.h:60
@ CDIO_DRIVE_CAP_MISC_FILE
Definition: device.h:62
char ** cdio_get_devices_win32(void)
char * cdio_get_default_device_freebsd(void)
uint32_t cdio_drive_misc_cap_t
Definition: device.h:38
CdIo_t * cdio_open_am_freebsd(const char *psz_source, const char *psz_access_mode)
driver_return_code_t cdio_get_last_session(CdIo_t *p_cdio, lsn_t *i_last_session)
cdio_src_category_mask_t debug_cdio_src_category_mask
void cdio_get_drive_cap(const CdIo_t *p_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_write_t debug_drive_cap_write_t
driver_return_code_t cdio_set_arg(CdIo_t *p_cdio, const char key[], const char value[])
cdio_drive_cap_read_t debug_cdio_drive_cap_read_t
CdIo_t * cdio_open_cd(const char *device_name)
cdio_drive_cap_misc_t debug_cdio_drive_cap_misc
CdIo_t * cdio_open_solaris(const char *psz_source)
CdIo_t * cdio_open_am_cd(const char *psz_device, const char *psz_access_mode)
const driver_id_t cdio_device_drivers[]
CdIo_t * cdio_open_osx(const char *psz_source)
cdio_mmc_hw_len_t
Definition: device.h:113
@ CDIO_MMC_HW_MODEL_LEN
Definition: device.h:115
@ CDIO_MMC_HW_REVISION_LEN
Definition: device.h:116
@ CDIO_MMC_HW_VENDOR_LEN
Definition: device.h:114
char ** cdio_get_devices_cdrdao(void)
void cdio_free_device_list(char *device_list[])
const char * cdio_get_arg(const CdIo_t *p_cdio, const char key[])
char * cdio_get_default_device_driver(driver_id_t *p_driver_id)
char ** cdio_get_devices_nrg(void)
char ** cdio_get_devices_linux(void)
int cdio_get_media_changed(CdIo_t *p_cdio)
char ** cdio_get_devices_bincue(void)
CdIo_t * cdio_open_am_nrg(const char *psz_source, const char *psz_access_mode)
const char * cdio_get_driver_name(const CdIo_t *p_cdio)
char * cdio_get_default_device_solaris(void)
CdIo_t * cdio_open_am_aix(const char *psz_source, const char *psz_access_mode)
char ** cdio_get_devices_with_cap_ret(char *ppsz_search_devices[], cdio_fs_anal_t capabilities, bool b_any, driver_id_t *p_driver_id)
const char * cdio_driver_errmsg(driver_return_code_t drc)
cdio_drive_cap_write_t
Definition: device.h:87
@ CDIO_DRIVE_CAP_WRITE_BURN_PROOF
Definition: device.h:96
@ CDIO_DRIVE_CAP_WRITE_MT_RAINIER
Definition: device.h:95
@ CDIO_DRIVE_CAP_WRITE_DVD_RW
Definition: device.h:93
@ CDIO_DRIVE_CAP_WRITE_CD_R
Definition: device.h:88
@ CDIO_DRIVE_CAP_WRITE_DVD
Definition: device.h:101
@ CDIO_DRIVE_CAP_WRITE_DVD_R
Definition: device.h:90
@ CDIO_DRIVE_CAP_WRITE
Definition: device.h:107
@ CDIO_DRIVE_CAP_WRITE_CD
Definition: device.h:97
@ CDIO_DRIVE_CAP_WRITE_CD_RW
Definition: device.h:89
@ CDIO_DRIVE_CAP_WRITE_DVD_PR
Definition: device.h:91
@ CDIO_DRIVE_CAP_WRITE_DVD_RAM
Definition: device.h:92
@ CDIO_DRIVE_CAP_WRITE_DVD_RPW
Definition: device.h:94
CdIo_t * cdio_open_am_bincue(const char *psz_cue_name, const char *psz_access_mode)
driver_id_t cdio_get_driver_id(const CdIo_t *p_cdio)
char * cdio_get_default_device_nrg(void)
driver_return_code_t
Definition: device.h:205
@ DRIVER_OP_ERROR
Definition: device.h:211
@ DRIVER_OP_UNINIT
Definition: device.h:217
@ DRIVER_OP_UNSUPPORTED
Definition: device.h:212
@ DRIVER_OP_NOT_PERMITTED
Definition: device.h:221
@ DRIVER_OP_BAD_POINTER
Definition: device.h:226
@ DRIVER_OP_MMC_SENSE_DATA
Definition: device.h:229
@ DRIVER_OP_NO_DRIVER
Definition: device.h:227
@ DRIVER_OP_BAD_PARAMETER
Definition: device.h:225
@ DRIVER_OP_SUCCESS
Definition: device.h:206
CdIo_t * cdio_open_linux(const char *psz_source)
char * cdio_get_default_device_cdrdao(void)
char ** cdio_get_devices_osx(void)
const driver_id_t cdio_drivers[]
char * cdio_get_default_device_win32(void)
char ** cdio_get_devices_with_cap(char *ppsz_search_devices[], cdio_fs_anal_t capabilities, bool b_any)
driver_return_code_t cdio_close_tray(const char *psz_drive, driver_id_t *p_driver_id)
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)
char ** cdio_get_devices(driver_id_t driver_id)
bool cdio_have_driver(driver_id_t driver_id)
uint32_t cdio_drive_write_cap_t
Definition: device.h:37
char ** cdio_get_devices_ret(driver_id_t *p_driver_id)
bool cdio_init(void)
struct cdio_hwinfo cdio_hwinfo_t
Structure to return CD vendor, model, and revision-level strings obtained via the INQUIRY command
CdIo_t * cdio_open_am_solaris(const char *psz_source, const char *psz_access_mode)
CdIo_t * cdio_open_freebsd(const char *paz_psz_source)
driver_return_code_t cdio_eject_media(CdIo_t **p_cdio)
uint32_t cdio_drive_read_cap_t
Definition: device.h:36
char * cdio_is_cuefile(const char *cue_name)
bool cdio_is_nrg(const char *psz_nrg)
CdIo_t * cdio_open_am_linux(const char *psz_source, const char *access_mode)
CdIo_t * cdio_open_am(const char *psz_source, driver_id_t driver_id, const char *psz_access_mode)
char ** cdio_get_devices_freebsd(void)
const char * cdio_driver_describe(driver_id_t driver_id)
cdio_src_category_mask_t
Definition: device.h:131
@ CDIO_SRC_IS_SCSI_MASK
Definition: device.h:134
@ CDIO_SRC_IS_NATIVE_MASK
Definition: device.h:135
@ CDIO_SRC_IS_DEVICE_MASK
Definition: device.h:133
@ CDIO_SRC_IS_DISK_IMAGE_MASK
Definition: device.h:132
CdIo_t * cdio_open_cdrdao(const char *psz_toc_name)
CdIo_t * cdio_open_cue(const char *cue_name)
bool cdio_get_hwinfo(const CdIo_t *p_cdio, cdio_hwinfo_t *p_hw_info)
bool_3way_t cdio_have_atapi(CdIo_t *p_cdio)
cdio_drive_cap_read_t
Definition: device.h:67
@ CDIO_DRIVE_CAP_READ_DVD_RAM
Definition: device.h:75
@ CDIO_DRIVE_CAP_READ_CD_R
Definition: device.h:71
@ CDIO_DRIVE_CAP_READ_MODE2_FORM1
Definition: device.h:80
@ CDIO_DRIVE_CAP_READ_DVD_ROM
Definition: device.h:76
@ CDIO_DRIVE_CAP_READ_DVD_RPW
Definition: device.h:78
@ CDIO_DRIVE_CAP_READ_DVD_R
Definition: device.h:73
@ CDIO_DRIVE_CAP_READ_ISRC
Definition: device.h:83
@ CDIO_DRIVE_CAP_READ_AUDIO
Definition: device.h:68
@ CDIO_DRIVE_CAP_READ_C2_ERRS
Definition: device.h:79
@ CDIO_DRIVE_CAP_READ_CD_G
Definition: device.h:70
@ CDIO_DRIVE_CAP_READ_DVD_PR
Definition: device.h:74
@ CDIO_DRIVE_CAP_READ_CD_RW
Definition: device.h:72
@ CDIO_DRIVE_CAP_READ_MODE2_FORM2
Definition: device.h:81
@ CDIO_DRIVE_CAP_READ_MCN
Definition: device.h:82
@ CDIO_DRIVE_CAP_READ_DVD_RW
Definition: device.h:77
@ CDIO_DRIVE_CAP_READ_CD_DA
Definition: device.h:69
driver_id_t
Definition: device.h:151
@ DRIVER_UNKNOWN
Definition: device.h:152
@ DRIVER_LINUX
Definition: device.h:157
@ DRIVER_AIX
Definition: device.h:154
@ DRIVER_OSX
Definition: device.h:159
@ DRIVER_NRG
Definition: device.h:168
@ DRIVER_BINCUE
Definition: device.h:165
@ DRIVER_CDRDAO
Definition: device.h:162
@ DRIVER_DEVICE
Definition: device.h:169
@ DRIVER_SOLARIS
Definition: device.h:158
@ DRIVER_WIN32
Definition: device.h:160
@ DRIVER_FREEBSD
Definition: device.h:155
@ DRIVER_NETBSD
Definition: device.h:156
CdIo_t * cdio_open_bincue(const char *psz_cue_name)
char * cdio_get_default_device_aix(void)
char * cdio_get_default_device_linux(void)
bool cdio_is_device(const char *psz_source, driver_id_t driver_id)
void cdio_destroy(CdIo_t *p_cdio)
char * cdio_get_default_device_osx(void)
Structure to return CD vendor, model, and revision-level strings obtained via the INQUIRY command
Definition: device.h:123
char psz_vendor[CDIO_MMC_HW_VENDOR_LEN+1]
Definition: device.h:124
char psz_revision[CDIO_MMC_HW_REVISION_LEN+1]
Definition: device.h:126
char psz_model[CDIO_MMC_HW_MODEL_LEN+1]
Definition: device.h:125
Common type definitions used pervasively in libcdio.
bool_3way_t
Definition: types.h:236
int cdio_fs_anal_t
Definition: types.h:322
int32_t lsn_t
Definition: types.h:266

Generated for libcdio by doxygen 1.9.1