device.h

Go to the documentation of this file.
00001 /* -*- c -*-
00002     $Id: device_8h-source.html,v 1.9 2006/10/27 11:16:41 rocky Exp $
00003 
00004     Copyright (C) 2005, 2006 Rocky Bernstein <rocky@cpan.org>
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 */
00020 
00026 #ifndef __CDIO_DEVICE_H__
00027 #define __CDIO_DEVICE_H__
00028 
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif /* __cplusplus */
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                                         /*in/out*/ 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 (/*in/out*/ 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 (/*in*/ char *ppsz_search_devices[],
00346                                      cdio_fs_anal_t capabilities, bool b_any);
00347 
00354   char ** cdio_get_devices_with_cap_ret (/*in*/ char* ppsz_search_devices[],
00355                                          cdio_fs_anal_t capabilities, 
00356                                          bool b_any,
00357                                          /*out*/ driver_id_t *p_driver_id);
00358 
00366   char ** cdio_get_devices_ret (/*in/out*/ 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                          /*out*/ cdio_hwinfo_t *p_hw_info );
00422 
00423 
00430   driver_return_code_t cdio_get_last_session (CdIo_t *p_cdio,
00431                                               /*out*/ 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     Free any resources associated with p_cdio. Call this when done using p_cdio
00479     and using CD reading/control operations.
00480 
00481     @param p_cdio the CD object to eliminated.
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 /* __cplusplus */
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 /* __CDIO_DEVICE_H__ */

Generated on Fri Oct 27 06:38:08 2006 for libcdio by  doxygen 1.4.6