Source to bsd/sys/cdio.h
/*
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 1.1 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
/*
* The NEXTSTEP Software License Agreement specifies the terms
* and conditions for redistribution.
*/
#ifndef _SYS_CDIO_H_
#define _SYS_CDIO_H_
/* Shared between kernel & process */
struct cd_toc_entry {
u_char nothing1;
u_char control:4;
u_char addr_type:4;
u_char track;
u_char nothing2;
u_char addr[4];
};
struct cd_sub_channel_header {
u_char nothing1;
u_char audio_status;
#define CD_AS_AUDIO_INVALID 0x00
#define CD_AS_PLAY_IN_PROGRESS 0x11
#define CD_AS_PLAY_PAUSED 0x12
#define CD_AS_PLAY_COMPLETED 0x13
#define CD_AS_PLAY_ERROR 0x14
#define CD_AS_NO_STATUS 0x15
u_char data_len[2];
};
struct cd_sub_channel_position_data {
u_char data_format;
u_char control:4;
u_char addr_type:4;
u_char track_number;
u_char index_number;
u_char absaddr[4];
u_char reladdr[4];
};
struct cd_sub_channel_media_catalog {
u_char data_format;
u_char nothing1;
u_char nothing2;
u_char nothing3;
u_char :7;
u_char mc_valid:1;
u_char mc_number[15];
};
struct cd_sub_channel_track_info {
u_char data_format;
u_char nothing1;
u_char track_number;
u_char nothing2;
u_char :7;
u_char ti_valid:1;
u_char ti_number[15];
};
struct cd_sub_channel_info {
struct cd_sub_channel_header header;
union {
struct cd_sub_channel_position_data position;
struct cd_sub_channel_media_catalog media_catalog;
struct cd_sub_channel_track_info track_info;
} what;
};
/*
* Ioctls for the CD drive
*/
struct ioc_play_track {
u_char start_track;
u_char start_index;
u_char end_track;
u_char end_index;
};
#define CDIOCPLAYTRACKS _IOW('c', 1, struct ioc_play_track)
struct ioc_play_blocks {
int blk;
int len;
};
#define CDIOCPLAYBLOCKS _IOW('c', 2, struct ioc_play_blocks)
struct ioc_read_subchannel {
u_char address_format;
#define CD_LBA_FORMAT 1
#define CD_MSF_FORMAT 2
u_char data_format;
#define CD_SUBQ_DATA 0
#define CD_CURRENT_POSITION 1
#define CD_MEDIA_CATALOG 2
#define CD_TRACK_INFO 3
u_char track;
int data_len;
struct cd_sub_channel_info *data;
};
#define CDIOCREADSUBCHANNEL _IOWR('c', 3, struct ioc_read_subchannel )
struct ioc_toc_header {
u_short len;
u_char starting_track;
u_char ending_track;
};
#define CDIOREADTOCHEADER _IOR('c', 4, struct ioc_toc_header)
struct ioc_read_toc_entry {
u_char address_format;
u_char starting_track;
u_short data_len;
struct cd_toc_entry *data;
};
#define CDIOREADTOCENTRYS _IOWR('c', 5, struct ioc_read_toc_entry)
struct ioc_patch {
u_char patch[4]; /* one for each channel */
};
#define CDIOCSETPATCH _IOW('c', 9, struct ioc_patch)
struct ioc_vol {
u_char vol[4]; /* one for each channel */
};
#define CDIOCGETVOL _IOR('c', 10, struct ioc_vol)
#define CDIOCSETVOL _IOW('c', 11, struct ioc_vol)
#define CDIOCSETMONO _IO('c', 12)
#define CDIOCSETSTEREO _IO('c', 13)
#define CDIOCSETMUTE _IO('c', 14)
#define CDIOCSETLEFT _IO('c', 15)
#define CDIOCSETRIGHT _IO('c', 16)
#define CDIOCSETDEBUG _IO('c', 17)
#define CDIOCCLRDEBUG _IO('c', 18)
#define CDIOCPAUSE _IO('c', 19)
#define CDIOCRESUME _IO('c', 20)
#define CDIOCRESET _IO('c', 21)
#define CDIOCSTART _IO('c', 22)
#define CDIOCSTOP _IO('c', 23)
#define CDIOCEJECT _IO('c', 24)
#define CDIOCALLOW _IO('c', 25)
#define CDIOCPREVENT _IO('c', 26)
struct ioc_play_msf {
u_char start_m;
u_char start_s;
u_char start_f;
u_char end_m;
u_char end_s;
u_char end_f;
};
#define CDIOCPLAYMSF _IOW('c', 25, struct ioc_play_msf)
#endif /* !_SYS_CDIO_H_ */