libcdio
0.90
Main Page
Data Structures
Files
File List
Globals
include
cdio
device.h
Go to the documentation of this file.
1
/* -*- c -*-
2
3
Copyright (C) 2005, 2006, 2008, 2009, 2010, 2011, 2012 Rocky Bernstein
4
<rocky@gnu.org>
5
6
This program is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
26
#ifndef CDIO_DEVICE_H_
27
#define CDIO_DEVICE_H_
28
29
#ifdef __cplusplus
30
extern
"C"
{
31
#endif
/* __cplusplus */
32
33
#include <
cdio/types.h
>
34
#include <
cdio/cdio.h
>
35
37
typedef
uint32_t
cdio_drive_read_cap_t
;
38
typedef
uint32_t
cdio_drive_write_cap_t
;
39
typedef
uint32_t
cdio_drive_misc_cap_t
;
40
47
typedef
enum
{
48
CDIO_DRIVE_CAP_ERROR
= 0x40000,
49
CDIO_DRIVE_CAP_UNKNOWN
= 0x80000,
53
CDIO_DRIVE_CAP_MISC_CLOSE_TRAY
= 0x00001,
55
CDIO_DRIVE_CAP_MISC_EJECT
= 0x00002,
56
CDIO_DRIVE_CAP_MISC_LOCK
= 0x00004,
57
CDIO_DRIVE_CAP_MISC_SELECT_SPEED
= 0x00008,
58
CDIO_DRIVE_CAP_MISC_SELECT_DISC
= 0x00010,
60
CDIO_DRIVE_CAP_MISC_MULTI_SESSION
= 0x00020,
61
CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED
= 0x00080,
62
CDIO_DRIVE_CAP_MISC_RESET
= 0x00100,
63
CDIO_DRIVE_CAP_MISC_FILE
= 0x20000
65
}
cdio_drive_cap_misc_t
;
66
68
typedef
enum
{
69
CDIO_DRIVE_CAP_READ_AUDIO
= 0x00001,
70
CDIO_DRIVE_CAP_READ_CD_DA
= 0x00002,
71
CDIO_DRIVE_CAP_READ_CD_G
= 0x00004,
72
CDIO_DRIVE_CAP_READ_CD_R
= 0x00008,
73
CDIO_DRIVE_CAP_READ_CD_RW
= 0x00010,
74
CDIO_DRIVE_CAP_READ_DVD_R
= 0x00020,
75
CDIO_DRIVE_CAP_READ_DVD_PR
= 0x00040,
76
CDIO_DRIVE_CAP_READ_DVD_RAM
= 0x00080,
77
CDIO_DRIVE_CAP_READ_DVD_ROM
= 0x00100,
78
CDIO_DRIVE_CAP_READ_DVD_RW
= 0x00200,
79
CDIO_DRIVE_CAP_READ_DVD_RPW
= 0x00400,
80
CDIO_DRIVE_CAP_READ_C2_ERRS
= 0x00800,
81
CDIO_DRIVE_CAP_READ_MODE2_FORM1
= 0x01000,
82
CDIO_DRIVE_CAP_READ_MODE2_FORM2
= 0x02000,
83
CDIO_DRIVE_CAP_READ_MCN
= 0x04000,
84
CDIO_DRIVE_CAP_READ_ISRC
= 0x08000
85
}
cdio_drive_cap_read_t
;
86
88
typedef
enum
{
89
CDIO_DRIVE_CAP_WRITE_CD_R
= 0x00001,
90
CDIO_DRIVE_CAP_WRITE_CD_RW
= 0x00002,
91
CDIO_DRIVE_CAP_WRITE_DVD_R
= 0x00004,
92
CDIO_DRIVE_CAP_WRITE_DVD_PR
= 0x00008,
93
CDIO_DRIVE_CAP_WRITE_DVD_RAM
= 0x00010,
94
CDIO_DRIVE_CAP_WRITE_DVD_RW
= 0x00020,
95
CDIO_DRIVE_CAP_WRITE_DVD_RPW
= 0x00040,
96
CDIO_DRIVE_CAP_WRITE_MT_RAINIER
= 0x00080,
97
CDIO_DRIVE_CAP_WRITE_BURN_PROOF
= 0x00100,
98
CDIO_DRIVE_CAP_WRITE_CD
=
99
(
CDIO_DRIVE_CAP_WRITE_CD_R
|
CDIO_DRIVE_CAP_WRITE_CD_RW
),
102
CDIO_DRIVE_CAP_WRITE_DVD
=
103
(
CDIO_DRIVE_CAP_WRITE_DVD_R
|
CDIO_DRIVE_CAP_WRITE_DVD_PR
104
|
CDIO_DRIVE_CAP_WRITE_DVD_RAM
|
CDIO_DRIVE_CAP_WRITE_DVD_RW
105
|
CDIO_DRIVE_CAP_WRITE_DVD_RPW
),
108
CDIO_DRIVE_CAP_WRITE
=
109
(
CDIO_DRIVE_CAP_WRITE_CD
|
CDIO_DRIVE_CAP_WRITE_DVD
)
111
}
cdio_drive_cap_write_t
;
112
114
typedef
enum
{
115
CDIO_MMC_HW_VENDOR_LEN
= 8,
116
CDIO_MMC_HW_MODEL_LEN
= 16,
117
CDIO_MMC_HW_REVISION_LEN
= 4
118
}
cdio_mmc_hw_len_t
;
119
120
123
typedef
struct
cdio_hwinfo
124
{
125
char
psz_vendor
[
CDIO_MMC_HW_VENDOR_LEN
+1];
126
char
psz_model
[
CDIO_MMC_HW_MODEL_LEN
+1];
127
char
psz_revision
[
CDIO_MMC_HW_REVISION_LEN
+1];
128
}
cdio_hwinfo_t
;
129
130
132
typedef
enum
{
133
CDIO_SRC_IS_DISK_IMAGE_MASK
= 0x0001,
134
CDIO_SRC_IS_DEVICE_MASK
= 0x0002,
135
CDIO_SRC_IS_SCSI_MASK
= 0x0004,
136
CDIO_SRC_IS_NATIVE_MASK
= 0x0008
137
}
cdio_src_category_mask_t
;
138
139
152
typedef
enum
{
153
DRIVER_UNKNOWN
,
155
DRIVER_AIX
,
156
DRIVER_BSDI
,
157
DRIVER_FREEBSD
,
158
DRIVER_NETBSD
,
159
DRIVER_LINUX
,
160
DRIVER_SOLARIS
,
161
DRIVER_OS2
,
162
DRIVER_OSX
,
163
DRIVER_WIN32
,
165
DRIVER_CDRDAO
,
168
DRIVER_BINCUE
,
171
DRIVER_NRG
,
172
DRIVER_DEVICE
173
}
driver_id_t
;
174
179
extern
const
driver_id_t
cdio_drivers
[];
180
185
extern
const
driver_id_t
cdio_device_drivers
[];
186
193
extern
const
driver_id_t
cdio_os_driver
;
194
195
203
LIBCDIO_DEPRECATED
(
static
const
driver_id_t
CDIO_MIN_DRIVER,
"please use cdio_drivers"
) =
DRIVER_AIX
;
204
LIBCDIO_DEPRECATED
(
static
const
driver_id_t
CDIO_MIN_DEVICE_DRIVER,
"please use cdio_device_drivers"
) =
DRIVER_AIX
;
205
LIBCDIO_DEPRECATED
(
static
const
driver_id_t
CDIO_MAX_DRIVER,
"please use cdio_drivers"
) =
DRIVER_NRG
;
206
LIBCDIO_DEPRECATED
(
static
const
driver_id_t
CDIO_MAX_DEVICE_DRIVER,
"please use cdio_device_drivers"
) =
DRIVER_WIN32
;
207
220
typedef
enum
{
221
DRIVER_OP_SUCCESS
= 0,
226
DRIVER_OP_ERROR
= -1,
227
DRIVER_OP_UNSUPPORTED
= -2,
232
DRIVER_OP_UNINIT
= -3,
236
DRIVER_OP_NOT_PERMITTED
= -4,
240
DRIVER_OP_BAD_PARAMETER
= -5,
241
DRIVER_OP_BAD_POINTER
= -6,
242
DRIVER_OP_NO_DRIVER
= -7,
244
DRIVER_OP_MMC_SENSE_DATA
= -8,
246
}
driver_return_code_t
;
247
257
driver_return_code_t
cdio_close_tray
(
const
char
*psz_drive,
258
/*in/out*/
driver_id_t
*p_driver_id);
259
264
const
char
*
cdio_driver_errmsg
(
driver_return_code_t
drc);
265
272
driver_return_code_t
cdio_eject_media
(
CdIo_t
**p_cdio);
273
280
driver_return_code_t
cdio_eject_media_drive
(
const
char
*psz_drive);
281
292
void
cdio_free_device_list
(
char
* device_list[]);
293
307
char
*
cdio_get_default_device
(
const
CdIo_t
*p_cdio);
308
316
char
*
cdio_get_default_device_driver
(
/*in/out*/
driver_id_t
*p_driver_id);
317
329
char
**
cdio_get_devices
(
driver_id_t
driver_id);
330
367
char
**
cdio_get_devices_with_cap
(
/*in*/
char
*ppsz_search_devices[],
368
cdio_fs_anal_t
capabilities,
bool
b_any);
369
376
char
**
cdio_get_devices_with_cap_ret
(
/*in*/
char
* ppsz_search_devices[],
377
cdio_fs_anal_t
capabilities,
378
bool
b_any,
379
/*out*/
driver_id_t
*p_driver_id);
380
389
char
**
cdio_get_devices_ret
(
/*in/out*/
driver_id_t
*p_driver_id);
390
403
void
cdio_get_drive_cap
(
const
CdIo_t
*p_cdio,
404
cdio_drive_read_cap_t *p_read_cap,
405
cdio_drive_write_cap_t *p_write_cap,
406
cdio_drive_misc_cap_t *p_misc_cap);
407
417
void
cdio_get_drive_cap_dev
(
const
char
*device,
418
cdio_drive_read_cap_t *p_read_cap,
419
cdio_drive_write_cap_t *p_write_cap,
420
cdio_drive_misc_cap_t *p_misc_cap);
421
428
const
char
*
cdio_get_driver_name
(
const
CdIo_t
*p_cdio);
429
437
driver_id_t
cdio_get_driver_id
(
const
CdIo_t
*p_cdio);
438
443
bool
cdio_get_hwinfo
(
const
CdIo_t
*p_cdio,
444
/*out*/
cdio_hwinfo_t
*p_hw_info );
445
446
454
driver_return_code_t
cdio_get_last_session
(
CdIo_t
*p_cdio,
455
/*out*/
lsn_t
*i_last_session);
456
463
int
cdio_get_media_changed
(
CdIo_t
*p_cdio);
464
466
bool_3way_t
cdio_have_atapi
(
CdIo_t
*p_cdio);
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
510
CdIo_t
*
cdio_open_am
(
const
char
*psz_source,
511
driver_id_t
driver_id,
const
char
*psz_access_mode);
512
519
CdIo_t
*
cdio_open_bincue
(
const
char
*psz_cue_name);
520
527
CdIo_t
*
cdio_open_am_bincue
(
const
char
*psz_cue_name,
528
const
char
*psz_access_mode);
529
535
CdIo_t
*
cdio_open_cdrdao
(
const
char
*psz_toc_name);
536
542
CdIo_t
*
cdio_open_am_cdrdao
(
const
char
*psz_toc_name,
543
const
char
*psz_access_mode);
544
551
char
*
cdio_get_default_device_bincue
(
void
);
552
553
char
**
cdio_get_devices_bincue
(
void
);
554
560
char
*
cdio_get_default_device_cdrdao
(
void
);
561
562
char
**
cdio_get_devices_cdrdao
(
void
);
563
571
CdIo_t
*
cdio_open_cd
(
const
char
*device_name);
572
580
CdIo_t
*
cdio_open_am_cd
(
const
char
*psz_device,
581
const
char
*psz_access_mode);
582
589
CdIo_t
*
cdio_open_cue
(
const
char
*cue_name);
590
600
CdIo_t
*
cdio_open_am_aix
(
const
char
*psz_source,
601
const
char
*psz_access_mode);
602
612
CdIo_t
*
cdio_open_aix
(
const
char
*psz_source);
613
623
char
*
cdio_get_default_device_aix
(
void
);
624
633
char
**
cdio_get_devices_aix
(
void
);
634
645
CdIo_t
*
cdio_open_bsdi
(
const
char
*psz_source);
646
656
CdIo_t
*
cdio_open_am_bsdi
(
const
char
*psz_source,
657
const
char
*psz_access_mode);
658
668
char
*
cdio_get_default_device_bsdi
(
void
);
669
678
char
**
cdio_get_devices_bsdi
(
void
);
679
688
CdIo_t
*
cdio_open_freebsd
(
const
char
*paz_psz_source);
689
698
CdIo_t
*
cdio_open_am_freebsd
(
const
char
*psz_source,
699
const
char
*psz_access_mode);
700
707
char
*
cdio_get_default_device_freebsd
(
void
);
708
713
char
**
cdio_get_devices_freebsd
(
void
);
714
726
CdIo_t
*
cdio_open_linux
(
const
char
*psz_source);
727
735
CdIo_t
*
cdio_open_am_linux
(
const
char
*psz_source,
736
const
char
*access_mode);
737
751
char
*
cdio_get_default_device_linux
(
void
);
752
757
char
**
cdio_get_devices_linux
(
void
);
758
766
CdIo_t
*
cdio_open_solaris
(
const
char
*psz_source);
767
775
CdIo_t
*
cdio_open_am_solaris
(
const
char
*psz_source,
776
const
char
*psz_access_mode);
777
791
char
*
cdio_get_default_device_solaris
(
void
);
792
797
char
**
cdio_get_devices_solaris
(
void
);
798
811
CdIo_t
*
cdio_open_osx
(
const
char
*psz_source);
812
821
CdIo_t
*
cdio_open_am_osx
(
const
char
*psz_source,
822
const
char
*psz_access_mode);
823
833
char
*
cdio_get_default_device_osx
(
void
);
834
839
char
**
cdio_get_devices_osx
(
void
);
840
849
CdIo_t
*
cdio_open_win32
(
const
char
*psz_source);
850
857
CdIo_t
*
cdio_open_am_win32
(
const
char
*psz_source,
858
const
char
*psz_access_mode);
859
871
char
*
cdio_get_default_device_win32
(
void
);
872
873
char
**
cdio_get_devices_win32
(
void
);
874
887
CdIo_t
*
cdio_open_os2
(
const
char
*psz_source);
888
897
CdIo_t
*
cdio_open_am_os2
(
const
char
*psz_source,
898
const
char
*psz_access_mode);
899
909
char
*
cdio_get_default_device_os2
(
void
);
910
915
char
**
cdio_get_devices_os2
(
void
);
916
923
CdIo_t
*
cdio_open_nrg
(
const
char
*psz_source);
924
931
CdIo_t
*
cdio_open_am_nrg
(
const
char
*psz_source,
932
const
char
*psz_access_mode);
933
942
char
*
cdio_get_default_device_nrg
(
void
);
943
944
char
**
cdio_get_devices_nrg
(
void
);
945
954
char
*
cdio_is_binfile
(
const
char
*bin_name);
955
962
char
*
cdio_is_cuefile
(
const
char
*cue_name);
963
971
bool
cdio_is_nrg
(
const
char
*psz_nrg);
972
980
bool
cdio_is_tocfile
(
const
char
*psz_toc);
981
991
bool
cdio_is_device
(
const
char
*psz_source,
driver_id_t
driver_id);
992
996
driver_return_code_t
cdio_set_blocksize
(
const
CdIo_t
*p_cdio,
997
int
i_blocksize );
998
1015
driver_return_code_t
cdio_set_speed
(
const
CdIo_t
*p_cdio,
1016
int
i_drive_speed );
1017
1026
const
char
*
cdio_get_arg
(
const
CdIo_t
*p_cdio,
const
char
key[]);
1027
1035
driver_return_code_t
cdio_set_arg
(
CdIo_t
*p_cdio,
const
char
key[],
1036
const
char
value[]);
1037
1041
bool
cdio_init
(
void
);
1042
1043
#ifdef __cplusplus
1044
}
1045
#endif
/* __cplusplus */
1046
1052
extern
cdio_drive_cap_misc_t
debug_cdio_drive_cap_misc
;
1053
extern
cdio_drive_cap_read_t
debug_cdio_drive_cap_read_t
;
1054
extern
cdio_drive_cap_write_t
debug_drive_cap_write_t
;
1055
extern
cdio_mmc_hw_len_t
debug_cdio_mmc_hw_len
;
1056
extern
cdio_src_category_mask_t
debug_cdio_src_category_mask
;
1057
1058
#endif
/* CDIO_DEVICE_H_ */
Generated for libcdio by
1.8.3.1