File: vu_pion.h

package info (click to toggle)
xmcd 2.6-17sarge1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,464 kB
  • ctags: 5,075
  • sloc: ansic: 51,322; sh: 4,039; makefile: 82; pascal: 67
file content (178 lines) | stat: -rw-r--r-- 6,220 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/*
 *   libdi - CD Audio Player Device Interface Library
 *
 *   Copyright (C) 1993-2000  Ti Kan
 *   E-mail: ti@amb.org
 *
 *   This library is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU Library General Public
 *   License as published by the Free Software Foundation; either
 *   version 2 of the License, or (at your option) any later version.
 *
 *   This library is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *   Library General Public License for more details.
 *
 *   You should have received a copy of the GNU Library General Public
 *   License along with this library; if not, write to the Free
 *   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

/* 
 *   Pioneer vendor-unique support
 *
 *   The name "Pioneer" is a trademark of Pioneer Corporation, and is
 *   used here for identification purposes only.
 */
#ifndef __VU_PION_H__
#define __VU_PION_H__

#ifdef VENDOR_PIONEER

#ifndef LINT
static char *_vu_pion_h_ident_ = "@(#)vu_pion.h	6.9 99/12/27";
#endif


/* Pioneer vendor-unique commands */
#define OP_VP_EJECT		0xc0	/* Pioneer magazine eject */
#define OP_VP_RDTOC		0xc1	/* Pioneer read TOC */
#define OP_VP_RDSUBQ		0xc2	/* Pioneer read subcode Q */
#define OP_VP_RDHDR		0xc3	/* Pioneer read header */
#define OP_VP_AUDSRCH		0xc8	/* Pioneer audio search */
#define OP_VP_AUDPLAY		0xc9	/* Pioneer play audio */
#define OP_VP_PAUSE		0xca	/* Pioneer pause */
#define OP_VP_AUDSTOP		0xcb	/* Pioneer audio stop */
#define OP_VP_AUDSTAT		0xcc	/* Pioneer audio status */
#define OP_VP_AUDSCAN		0xcd	/* Pioneer audio scan */
#define OP_VP_RDDSTAT		0xe0	/* Pioneer read drive status */
#define OP_VP_WRCDP		0xe3	/* Pioneer write CDP */
#define OP_VP_RDCDP		0xe4	/* Pioneer read CDP */


/* Pioneer audio status codes */
#define PAUD_PLAYING		0x00
#define PAUD_PAUSED		0x01
#define PAUD_MUTEPLAY		0x02
#define PAUD_COMPLETED		0x03
#define PAUD_ERROR		0x04
#define PAUD_NOSTATUS		0x05


/* Return data lengths */
#define SZ_VP_RDTOC		4	/* Pioneer read TOC data size */
#define SZ_VP_RDSUBQ		9	/* Pioneer read subcode Q data size */
#define SZ_VP_AUDSTAT		6	/* Pioneer audio status data size */


/* Pioneer read audio status command data */
typedef struct paudstat_data {
	unsigned int	status:8;	/* audio status */
#if _BYTE_ORDER_ == _L_ENDIAN_
	unsigned int	mode:4;		/* play mode */
	unsigned int	res1:4;		/* reserved */
	unsigned int	preemph:1;	/* preemphasis off=0 on=1 */
	unsigned int	copyallow:1;	/* digital copy allowed off=0 on=1 */
	unsigned int	trktype:1;	/* 0=audio 1=data */
	unsigned int	audioch:1;	/* 0=2ch 1=4ch */
	unsigned int	res2:4;		/* reserved */
#else	/* _BYTE_ORDER_ == _B_ENDIAN_ */
	unsigned int	res1:4;		/* reserved */
	unsigned int	mode:4;		/* play mode */
	unsigned int	res2:4;		/* reserved */
	unsigned int	audioch:1;	/* 0=2ch 1=4ch */
	unsigned int	trktype:1;	/* 0=audio 1=data */
	unsigned int	copyallow:1;	/* digital copy allowed off=0 on=1 */
	unsigned int	preemph:1;	/* preemphasis off=0 on=1 */
#endif	/* _BYTE_ORDER_ */
	unsigned int	abs_min:8;	/* absolute minutes (BCD) */

	unsigned int	abs_sec:8;	/* absolute seconds (BCD) */
	unsigned int	abs_frame:8;	/* absolute frame (BCD) */
	unsigned int	pad1:16;	/* pad for alignment */
} paudstat_data_t;



/* Pioneer read subcode Q command data */
typedef struct psubq_data {
#if _BYTE_ORDER_ == _L_ENDIAN_
	unsigned int	preemph:1;	/* preemphasis off=0 on=1 */
	unsigned int	copyallow:1;	/* digital copy allowed off=0 on=1 */
	unsigned int	trktype:1;	/* 0=audio 1=data */
	unsigned int	audioch:1;	/* 0=2ch 1=4ch */
	unsigned int	res:4;		/* reserved */
#else	/* _BYTE_ORDER_ == _B_ENDIAN_ */
	unsigned int	res:4;		/* reserved */
	unsigned int	audioch:1;	/* 0=2ch 1=4ch */
	unsigned int	trktype:1;	/* 0=audio 1=data */
	unsigned int	copyallow:1;	/* digital copy allowed off=0 on=1 */
	unsigned int	preemph:1;	/* preemphasis off=0 on=1 */
#endif	/* _BYTE_ORDER_ */
	unsigned int	trkno:8;	/* track number (BCD) */
	unsigned int	idxno:8;	/* index number (BCD) */
	unsigned int	rel_min:8;	/* trk relative minutes (BCD) */

	unsigned int	rel_sec:8;	/* trk relative seconds (BCD) */
	unsigned int	rel_frame:8;	/* trk relative frame (BCD) */
	unsigned int	abs_min:8;	/* absolute minutes (BCD) */
	unsigned int	abs_sec:8;	/* absolute seconds (BCD) */

	unsigned int	abs_frame:8;	/* absolute frame (BCD) */
	unsigned int	pad1:24;	/* pad for alignment */
} psubq_data_t;


/* Pioneer read TOC command data */
typedef struct pinfo_00 {		/* track information */
	byte_t		first_trk;	/* first track (BCD) */
	byte_t		last_trk;	/* last track (BCD) */
	byte_t		reserved[2];	/* reserved */
} pinfo_00_t;

typedef struct pinfo_01 {		/* lead-out track starting time */
	byte_t		min;		/* minutes (BCD) */
	byte_t		sec;		/* seconds (BCD) */
	byte_t		frame;		/* frame (BCD) */
	byte_t		reserved;	/* reserved */
} pinfo_01_t;

typedef struct pinfo_02 {		/* specified track starting time */
#if _BYTE_ORDER_ == _L_ENDIAN_
	unsigned int	preemph:1;	/* preemphasis off=0 on=1 */
	unsigned int	copyallow:1;	/* digital copy allowed off=0 on=1 */
	unsigned int	trktype:1;	/* 0=audio 1=data */
	unsigned int	audioch:1;	/* 0=2ch 1=4ch */
	unsigned int	res:4;		/* reserved */
#else	/* _BYTE_ORDER_ == _B_ENDIAN_ */
	unsigned int	res:4;		/* reserved */
	unsigned int	audioch:1;	/* 0=2ch 1=4ch */
	unsigned int	trktype:1;	/* 0=audio 1=data */
	unsigned int	copyallow:1;	/* digital copy allowed off=0 on=1 */
	unsigned int	preemph:1;	/* preemphasis off=0 on=1 */
#endif	/* _BYTE_ORDER_ */

	unsigned int	min:8;		/* minutes (BCD) */
	unsigned int	sec:8;		/* seconds (BCD) */
	unsigned int	frame:8;	/* frame (BCD) */
} pinfo_02_t;


/* Public function prototypes */
extern bool_t	pion_playaudio(byte_t, word32_t, word32_t, msf_t *, msf_t *,
			byte_t, byte_t);
extern bool_t	pion_pause_resume(bool_t);
extern bool_t	pion_get_playstatus(curstat_t *, byte_t *);
extern bool_t	pion_get_toc(curstat_t *);
extern bool_t	pion_eject(void);
extern void	pion_init(void);

#else

#define pion_init	NULL

#endif	/* VENDOR_PIONEER */

#endif	/* __VU_PION_H__ */