device.h

Go to the documentation of this file.
00001 /* -*- c -*-
00002     $Id: device.h,v 1.23 2005/03/21 09:19:06 rocky Exp $
00003 
00004     Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
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 #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                                         /*in/out*/ 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 (/*in/out*/ 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 (/*in*/ char *ppsz_search_devices[],
00307                                      cdio_fs_anal_t capabilities, bool b_any);
00308 
00315   char ** cdio_get_devices_with_cap_ret (/*in*/ char* ppsz_search_devices[],
00316                                          cdio_fs_anal_t capabilities, 
00317                                          bool b_any,
00318                                          /*out*/ driver_id_t *p_driver_id);
00319 
00327   char ** cdio_get_devices_ret (/*in/out*/ 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                          /* out*/ cdio_hwinfo_t *p_hw_info );
00383 
00384 
00391   driver_return_code_t cdio_get_last_session (CdIo_t *p_cdio,
00392                                               /*out*/ 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     Free any resources associated with p_cdio. Call this when done using p_cdio
00440     and using CD reading/control operations.
00441 
00442     @param p_cdio the CD object to eliminated.
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 /* __cplusplus */
00913 
00914 #endif /* __CDIO_DEVICE_H__ */

Generated on Sun Sep 23 08:22:07 2007 for libcdio by  doxygen 1.4.7