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