|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
23: /*
24: * The NEXTSTEP Software License Agreement specifies the terms
25: * and conditions for redistribution.
26: */
27:
28: #ifndef _SYS_CDIO_H_
29: #define _SYS_CDIO_H_
30:
31: /* Shared between kernel & process */
32:
33: struct cd_toc_entry {
34: u_char nothing1;
35: u_char control:4;
36: u_char addr_type:4;
37: u_char track;
38: u_char nothing2;
39: u_char addr[4];
40: };
41:
42: struct cd_sub_channel_header {
43: u_char nothing1;
44: u_char audio_status;
45: #define CD_AS_AUDIO_INVALID 0x00
46: #define CD_AS_PLAY_IN_PROGRESS 0x11
47: #define CD_AS_PLAY_PAUSED 0x12
48: #define CD_AS_PLAY_COMPLETED 0x13
49: #define CD_AS_PLAY_ERROR 0x14
50: #define CD_AS_NO_STATUS 0x15
51: u_char data_len[2];
52: };
53:
54: struct cd_sub_channel_position_data {
55: u_char data_format;
56: u_char control:4;
57: u_char addr_type:4;
58: u_char track_number;
59: u_char index_number;
60: u_char absaddr[4];
61: u_char reladdr[4];
62: };
63:
64: struct cd_sub_channel_media_catalog {
65: u_char data_format;
66: u_char nothing1;
67: u_char nothing2;
68: u_char nothing3;
69: u_char :7;
70: u_char mc_valid:1;
71: u_char mc_number[15];
72: };
73:
74: struct cd_sub_channel_track_info {
75: u_char data_format;
76: u_char nothing1;
77: u_char track_number;
78: u_char nothing2;
79: u_char :7;
80: u_char ti_valid:1;
81: u_char ti_number[15];
82: };
83:
84: struct cd_sub_channel_info {
85: struct cd_sub_channel_header header;
86: union {
87: struct cd_sub_channel_position_data position;
88: struct cd_sub_channel_media_catalog media_catalog;
89: struct cd_sub_channel_track_info track_info;
90: } what;
91: };
92:
93: /*
94: * Ioctls for the CD drive
95: */
96: struct ioc_play_track {
97: u_char start_track;
98: u_char start_index;
99: u_char end_track;
100: u_char end_index;
101: };
102:
103: #define CDIOCPLAYTRACKS _IOW('c', 1, struct ioc_play_track)
104: struct ioc_play_blocks {
105: int blk;
106: int len;
107: };
108: #define CDIOCPLAYBLOCKS _IOW('c', 2, struct ioc_play_blocks)
109:
110: struct ioc_read_subchannel {
111: u_char address_format;
112: #define CD_LBA_FORMAT 1
113: #define CD_MSF_FORMAT 2
114: u_char data_format;
115: #define CD_SUBQ_DATA 0
116: #define CD_CURRENT_POSITION 1
117: #define CD_MEDIA_CATALOG 2
118: #define CD_TRACK_INFO 3
119: u_char track;
120: int data_len;
121: struct cd_sub_channel_info *data;
122: };
123: #define CDIOCREADSUBCHANNEL _IOWR('c', 3, struct ioc_read_subchannel )
124:
125: struct ioc_toc_header {
126: u_short len;
127: u_char starting_track;
128: u_char ending_track;
129: };
130:
131: #define CDIOREADTOCHEADER _IOR('c', 4, struct ioc_toc_header)
132:
133: struct ioc_read_toc_entry {
134: u_char address_format;
135: u_char starting_track;
136: u_short data_len;
137: struct cd_toc_entry *data;
138: };
139: #define CDIOREADTOCENTRYS _IOWR('c', 5, struct ioc_read_toc_entry)
140:
141: struct ioc_patch {
142: u_char patch[4]; /* one for each channel */
143: };
144: #define CDIOCSETPATCH _IOW('c', 9, struct ioc_patch)
145:
146: struct ioc_vol {
147: u_char vol[4]; /* one for each channel */
148: };
149: #define CDIOCGETVOL _IOR('c', 10, struct ioc_vol)
150: #define CDIOCSETVOL _IOW('c', 11, struct ioc_vol)
151: #define CDIOCSETMONO _IO('c', 12)
152: #define CDIOCSETSTEREO _IO('c', 13)
153: #define CDIOCSETMUTE _IO('c', 14)
154: #define CDIOCSETLEFT _IO('c', 15)
155: #define CDIOCSETRIGHT _IO('c', 16)
156: #define CDIOCSETDEBUG _IO('c', 17)
157: #define CDIOCCLRDEBUG _IO('c', 18)
158: #define CDIOCPAUSE _IO('c', 19)
159: #define CDIOCRESUME _IO('c', 20)
160: #define CDIOCRESET _IO('c', 21)
161: #define CDIOCSTART _IO('c', 22)
162: #define CDIOCSTOP _IO('c', 23)
163: #define CDIOCEJECT _IO('c', 24)
164: #define CDIOCALLOW _IO('c', 25)
165: #define CDIOCPREVENT _IO('c', 26)
166:
167: struct ioc_play_msf {
168: u_char start_m;
169: u_char start_s;
170: u_char start_f;
171: u_char end_m;
172: u_char end_s;
173: u_char end_f;
174: };
175: #define CDIOCPLAYMSF _IOW('c', 25, struct ioc_play_msf)
176:
177: #endif /* !_SYS_CDIO_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.