1 
2 #include "osd_freebsd_cd.h"
3 
4 
5 int cd_drive_handle = 0;
6 
7 
osd_cd_init(char * device)8 int osd_cd_init(char *device)
9 {
10 /*
11   Log("Init linux cdrom device\n");
12 
13   if (strcmp(device, ""))
14     cd_drive_handle = open(device, O_RDONLY | O_NONBLOCK);
15   else
16     cd_drive_handle = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
17 
18   return (cd_drive_handle == 0);
19 */
20 }
21 
22 
osd_cd_stop_audio()23 void osd_cd_stop_audio()
24 {
25 /*
26   if (ioctl(cd_drive_handle, CDROMSTOP) == -1)
27     perror("osd_cd_stop_audio");
28 */
29 }
30 
31 
osd_cd_close()32 void osd_cd_close()
33 {
34 /*
35   osd_cd_stop_audio();
36   close(cd_drive_handle);
37 */
38 }
39 
40 
osd_cd_read(UChar * p,UInt32 sector)41 void osd_cd_read(UChar *p, UInt32 sector)
42 {
43 /*
44   int retries = 0;
45   char buf[128];
46 
47   while ((lseek(cd_drive_handle, 2048 * sector, SEEK_SET) < 0) && (retries < 3)) {
48     sprintf(buf, "osd_cd_read:lseek (sector=%d, retry=%d)", sector, retries);
49     perror(buf);
50     retries++;
51   }
52 
53   while ((read(cd_drive_handle, p, 2048) < 0) && (retries++ < 3)) {
54     sprintf(buf, "osd_cd_read:read (sector=%d, retry=%d)", sector, retries);
55     perror(buf);
56   }
57 */
58 }
59 
60 extern unsigned char binbcd[];
61 
osd_cd_subchannel_info(unsigned short offset)62 void osd_cd_subchannel_info(unsigned short offset)
63 {
64 /*
65   struct cdrom_subchnl subc;
66 
67   subc.cdsc_format = CDROM_MSF;
68 
69   if (ioctl(cd_drive_handle, CDROMSUBCHNL, &subc) == -1)
70     perror("osd_cd_subchannel_info");
71 */
72 
73 /*
74   switch(subc.cdsc_audiostatus) {
75     case CDROM_AUDIO_PLAY:
76       put_8bit_addr(offset, 0);
77       break;
78     case CDROM_AUDIO_PAUSED:
79       put_8bit_addr(offset, 1);
80       break;
81     case CDROM_AUDIO_COMPLETED:
82       put_8bit_addr(offset, 3);
83       break;
84     default:
85       put_8bit_addr(offset, 4);
86       break;
87   }
88 */
89 
90 /*
91   put_8bit_addr(offset, subc.cdsc_audiostatus - 0x11);
92 
93   put_8bit_addr(offset + 1, subc.cdsc_ctrl);
94   put_8bit_addr(offset + 2, binbcd[subc.cdsc_trk]);
95   put_8bit_addr(offset + 3, binbcd[subc.cdsc_ind]);
96   put_8bit_addr(offset + 4, binbcd[subc.cdsc_reladdr.msf.minute]);
97   put_8bit_addr(offset + 5, binbcd[subc.cdsc_reladdr.msf.second]);
98   put_8bit_addr(offset + 6, binbcd[subc.cdsc_reladdr.msf.frame]);
99   put_8bit_addr(offset + 7, binbcd[subc.cdsc_absaddr.msf.minute]);
100   put_8bit_addr(offset + 8, binbcd[subc.cdsc_absaddr.msf.second]);
101   put_8bit_addr(offset + 9, binbcd[subc.cdsc_absaddr.msf.frame]);
102 */
103 }
104 
105 
osd_cd_status(int * status)106 void osd_cd_status(int *status)
107 {
108 /*
109   struct cdrom_subchnl subc;
110 
111   subc.cdsc_format = CDROM_MSF;
112 
113   if (ioctl(cd_drive_handle, CDROMSUBCHNL, &subc) == -1)
114     perror("osd_cd_status");
115 
116   *status = subc.cdsc_audiostatus - 0x10;
117 //  switch(subc.cdsc_audiostatus) {
118 //    case CDROM_AUDIO_PLAY:
119 //      *status = 1;
120 //      break;
121 //    default:
122 //      *status = subc.cdsc_audiostatus;
123 //      break;
124 //  }
125 */
126 }
127 
128 
osd_cd_track_info(UChar track,int * min,int * sec,int * fra,int * control)129 void osd_cd_track_info(UChar track, int *min, int *sec, int *fra, int *control)
130 {
131 /*
132   struct cdrom_tocentry tocentry;
133 
134   tocentry.cdte_track = track;
135   tocentry.cdte_format = CDROM_MSF;
136 
137   if (ioctl(cd_drive_handle, CDROMREADTOCENTRY, &tocentry) == -1)
138     perror("osd_cd_track_info");
139 
140 //  Log("Track %d begins at %d and got command byte of %d\n", track,
141 //      tocentry.cdte_addr.lba + 150, tocentry.cdte_ctrl);
142 
143 //  Frame2Time(tocentry.cdte_addr.lba + 150, min, sec, fra);
144 
145   *min = tocentry.cdte_addr.msf.minute;
146   *sec = tocentry.cdte_addr.msf.second;
147   *fra = tocentry.cdte_addr.msf.frame;
148   *control = tocentry.cdte_ctrl;
149 */
150 }
151 
152 
osd_cd_nb_tracks(int * first,int * last)153 void osd_cd_nb_tracks(int *first, int *last)
154 {
155 /*
156   struct cdrom_tochdr track_info;
157 
158   if (ioctl(cd_drive_handle, CDROMREADTOCHDR, &track_info) == -1)
159     perror("cd_nb_tracks");
160 
161   *first = track_info.cdth_trk0;
162   *last = track_info.cdth_trk1;
163 */
164 }
165 
166 
osd_cd_length(int * min,int * sec,int * fra)167 void osd_cd_length(int *min, int *sec, int *fra)
168 {
169 /*
170   struct cdrom_tocentry toc_info;
171 
172   toc_info.cdte_track = CDROM_LEADOUT;
173   toc_info.cdte_format = CDROM_MSF;
174 
175   if (ioctl(cd_drive_handle, CDROMREADTOCENTRY, &toc_info) == -1)
176     perror("cd_length");
177 
178   *min = toc_info.cdte_addr.msf.minute;
179   *sec = toc_info.cdte_addr.msf.second;
180   *fra = toc_info.cdte_addr.msf.frame;
181 */
182 }
183 
184 
osd_cd_pause(void)185 void osd_cd_pause(void)
186 {
187 /*
188   if (ioctl(cd_drive_handle, CDROMPAUSE) == -1)
189     perror("osd_cd_pause");
190 */
191 }
192 
193 
osd_cd_resume(void)194 void osd_cd_resume(void)
195 {
196 /*
197   if (ioctl(cd_drive_handle, CDROMRESUME) == -1)
198     perror("osd_cd_resume");
199 */
200 }
201 
202 
203 /* TODO : check for last track asked */
osd_cd_play_audio_track(UChar track)204 void osd_cd_play_audio_track(UChar track)
205 {
206 /*
207   struct cdrom_ti cdrom_ti_dat =
208     {
209       track,
210       0,
211       track + 1,
212       0
213     };
214 
215   if (ioctl(cd_drive_handle, CDROMPLAYTRKIND, &cdrom_ti_dat) == -1)
216     perror("play_audio_track");
217 */
218 }
219 
220 
osd_cd_play_audio_range(UChar min_from,UChar sec_from,UChar fra_from,UChar min_to,UChar sec_to,UChar fra_to)221 void osd_cd_play_audio_range(UChar min_from, UChar sec_from, UChar fra_from,
222                              UChar min_to, UChar sec_to, UChar fra_to)
223 {
224 /*
225   struct cdrom_msf cdrom_msf_dat =
226   {
227     min_from,
228     sec_from,
229     fra_from,
230     min_to,
231     sec_to,
232     fra_to
233   };
234 
235   if (ioctl(cd_drive_handle, CDROMPLAYMSF, &cdrom_msf_dat) == -1)
236     perror("play_audio_range");
237 */
238 }
239