Implemented inline version of the iswxxx functions.
[wine] / include / cdrom.h
1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
2 /*
3  * Header file for CD-ROM support
4  *
5  * Copyright 1994 Martin Ayotte
6  * Copyright 1999 Eric Pouech
7  * Copyright 2000 Andreas Mohr
8  */
9
10 #ifndef __WINE_CDROM_H__
11 #define __WINE_CDROM_H__
12
13 #ifndef __WINE_CONFIG_H 
14 # error You must include config.h to use this header 
15 #endif 
16
17 #include <stdlib.h>
18 #include <unistd.h>
19 #include "windef.h"
20 #include "wine/windef16.h"
21
22 #ifdef HAVE_LINUX_CDROM_H
23 # include <linux/cdrom.h>
24 #endif
25 #ifdef HAVE_LINUX_UCDROM_H
26 # include <linux/ucdrom.h>
27 #endif
28 #ifdef HAVE_SYS_CDIO_H
29 # include <sys/cdio.h>
30 #endif
31
32 typedef struct {
33     const char                  *devname;
34 #if defined(linux)
35     struct cdrom_subchnl        sc;
36 #elif defined(__FreeBSD__) || defined(__NetBSD__)
37     struct cd_sub_channel_info  sc;
38 #endif
39     /* those data reflect the cdaudio structure and
40      * don't change while playing
41      */
42     UINT16                      nTracks;
43     UINT16                      nFirstTrack;
44     UINT16                      nLastTrack;
45     LPDWORD                     lpdwTrackLen;
46     LPDWORD                     lpdwTrackPos;
47     LPBYTE                      lpbTrackFlags;
48     DWORD                       dwFirstFrame;
49     DWORD                       dwLastFrame;
50     /* those data change while playing */
51     int                         cdaMode;
52     UINT16                      nCurTrack;
53     DWORD                       dwCurFrame;
54 } WINE_CDAUDIO;
55
56 #define WINE_CDA_DONTKNOW               0x00
57 #define WINE_CDA_NOTREADY               0x01
58 #define WINE_CDA_OPEN                   0x02
59 #define WINE_CDA_PLAY                   0x03
60 #define WINE_CDA_STOP                   0x04
61 #define WINE_CDA_PAUSE                  0x05
62
63 int     CDROM_Open(WINE_CDAUDIO* wcda, int drive);
64 int     CDROM_OpenDev(WINE_CDAUDIO* wcda);
65 int     CDROM_GetMediaType(WINE_CDAUDIO* wcda, int parentdev);
66 int     CDROM_CloseDev(int dev);
67 int     CDROM_Close(WINE_CDAUDIO* wcda);
68 int     CDROM_Reset(WINE_CDAUDIO* wcda, int parentdev);
69 int     CDROM_Audio_Play(WINE_CDAUDIO* wcda, DWORD start, DWORD stop, int parentdev);
70 int     CDROM_Audio_Stop(WINE_CDAUDIO* wcda, int parentdev);
71 int     CDROM_Audio_Pause(WINE_CDAUDIO* wcda, int pauseOn, int parentdev);
72 int     CDROM_Audio_Seek(WINE_CDAUDIO* wcda, DWORD at, int parentdev);
73 int     CDROM_SetDoor(WINE_CDAUDIO* wcda, int open, int parentdev);
74 UINT16  CDROM_Audio_GetNumberOfTracks(WINE_CDAUDIO* wcda, int parentdev);
75 BOOL    CDROM_Audio_GetTracksInfo(WINE_CDAUDIO* wcda, int parentdev);
76 BOOL    CDROM_Audio_GetCDStatus(WINE_CDAUDIO* wcda, int parentdev);
77 WORD    CDROM_Data_FindBestVoldesc(int fd);
78 DWORD   CDROM_Audio_GetSerial(WINE_CDAUDIO* wcda);
79 DWORD   CDROM_Data_GetSerial(WINE_CDAUDIO* wcda, int parentdev);
80 DWORD   CDROM_GetSerial(int drive);
81 DWORD   CDROM_GetLabel(int drive, char *label);
82
83 #define CDFRAMES_PERSEC                 75
84 #define SECONDS_PERMIN                  60
85 #define CDFRAMES_PERMIN                 ((CDFRAMES_PERSEC) * (SECONDS_PERMIN))
86
87 #ifndef CDROM_DATA_TRACK
88 #define CDROM_DATA_TRACK 0x04
89 #endif
90
91 #define CDROM_MSF_MINUTE(msf)           ((BYTE)(msf))
92 #define CDROM_MSF_SECOND(msf)           ((BYTE)(((WORD)(msf)) >> 8))
93 #define CDROM_MSF_FRAME(msf)            ((BYTE)((msf)>>16))
94
95 #define CDROM_MAKE_MSF(m, s, f)         ((DWORD)(((BYTE)(m) | \
96                                                   ((WORD)(s)<<8)) | \
97                                                  (((DWORD)(BYTE)(f))<<16)))
98
99 /* values borrowed from Linux 2.2.x cdrom.h */
100 #define CDS_NO_INFO                     0
101 #define CDS_AUDIO                       100
102 #define CDS_DATA_1                      101
103 #define CDS_DATA_2                      102
104 #define CDS_XA_2_1                      103
105 #define CDS_XA_2_2                      104
106 #define CDS_MIXED                       105
107
108 #endif
109