Develop and Download Open Source Software

Browse CVS Repository

Contents of /enbanfukusyaya/EnbanFukusyaYa/DriveAccess/struct.h

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.11 - (show annotations) (download) (as text)
Fri Nov 5 17:24:03 2010 UTC (13 years, 5 months ago) by bananajinn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.10: +9 -9 lines
File MIME type: text/x-chdr
*** empty log message ***

1
2
3 #ifndef __STRUCT_H__
4 #define __STRUCT_H__
5
6 /*
7 * cdrecord/cdrtools 参照
8 * http://www.fokus.fhg.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html
9 */
10
11 #include "aspi.h"
12
13 #if defined(WIN32) || defined(__i386__) || defined(__x86_64__)
14 #define BIT_FIELDS_LTOH /* Intel */
15 #endif
16
17 struct _MODEPAGE_HEADER {
18 #ifdef BIT_FIELDS_LTOH
19 BYTE p_code : 6;
20 BYTE res : 1;
21 BYTE parsave : 1;
22 BYTE p_len;
23 #else
24 BYTE parsave : 1;
25 BYTE res : 1;
26 BYTE p_code : 6;
27 BYTE p_len;
28 #endif
29 };
30
31 struct _MODEPAGE01 { /* Error Recovery Parameters */
32 #ifdef BIT_FIELDS_LTOH
33 struct _MODEPAGE_HEADER header;
34 BYTE disa_correction : 1; /* Byte 2 */
35 BYTE term_on_rec_err : 1;
36 BYTE report_rec_err : 1;
37 BYTE en_early_corr : 1;
38 BYTE read_continuous : 1;
39 BYTE tranfer_block : 1;
40 BYTE en_auto_reall_r : 1;
41 BYTE en_auto_reall_w : 1; /* Byte 2 */
42 BYTE rd_retry_count; /* Byte 3 */
43 BYTE correction_span;
44 BYTE head_offset_count;
45 BYTE data_strobe_offset;
46 BYTE res;
47 BYTE wr_retry_count;
48 BYTE res_tape[2];
49 BYTE recov_timelim[2];
50 #else
51 struct _MODEPAGE_HEADER header;
52 BYTE en_auto_reall_w : 1; /* Byte 2 */
53 BYTE en_auto_reall_r : 1;
54 BYTE tranfer_block : 1;
55 BYTE read_continuous : 1;
56 BYTE en_early_corr : 1;
57 BYTE report_rec_err : 1;
58 BYTE term_on_rec_err : 1;
59 BYTE disa_correction : 1; /* Byte 2 */
60 BYTE rd_retry_count; /* Byte 3 */
61 BYTE correction_span;
62 BYTE head_offset_count;
63 BYTE data_strobe_offset;
64 BYTE res;
65 BYTE wr_retry_count;
66 BYTE res_tape[2];
67 BYTE recov_timelim[2];
68 #endif
69 };
70
71 struct _MODEPAGE05 { /* Write Parameters */
72 #ifdef BIT_FIELDS_LTOH
73 struct _MODEPAGE_HEADER header;
74 BYTE write_type : 4; /* Session write type (PACKET/TAO...)*/
75 BYTE test_write : 1; /* Do not actually write data */
76 BYTE LS_V : 1; /* Link size valid */
77 BYTE BUFE : 1; /* Enable Bufunderrun free rec. */
78 BYTE res_2_7 : 1;
79 BYTE track_mode : 4; /* Track mode (Q-sub control nibble) */
80 BYTE copy : 1; /* 1st higher gen of copy prot track ~*/
81 BYTE fp : 1; /* Fixed packed (if in packet mode) */
82 BYTE multi_session : 2; /* Multi session write type */
83 BYTE dbtype : 4; /* Data block type */
84 BYTE res_4 : 4; /* Reserved */
85 BYTE link_size; /* Link Size (default is 7) */
86 BYTE res_6; /* Reserved */
87 BYTE host_appl_code : 6; /* Host application code of disc */
88 BYTE res_7 : 2; /* Reserved */
89 BYTE session_format; /* Session format (DA/CDI/XA) */
90 BYTE res_9; /* Reserved */
91 BYTE packet_size[4]; /* # of user datablocks/fixed packet */
92 BYTE audio_pause_len[2]; /* # of blocks where index is zero */
93 BYTE res_16 : 7; /* Reserved */
94 BYTE mc_val : 1; /* MCN valid */
95 BYTE media_cat_number[13]; /* Media catalog Number (MCN) */
96 BYTE res_30_31[2];
97 BYTE res_32 : 7; /* Reserved */
98 BYTE tc_val : 1; /* ISRC valid */
99 BYTE ISRC[12]; /* ISRC for this track */
100 BYTE res_45_47;
101 BYTE sub_header[4];
102 BYTE vendor_uniq[4];
103 #else
104 struct _MODEPAGE_HEADER header;
105 BYTE res_2_7 : 1;
106 BYTE BUFE : 1; /* Enable Bufunderrun free rec. */
107 BYTE LS_V : 1; /* Link size valid */
108 BYTE test_write : 1; /* Do not actually write data */
109 BYTE write_type : 4; /* Session write type (PACKET/TAO...)*/
110 BYTE multi_session : 2; /* Multi session write type */
111 BYTE fp : 1; /* Fixed packed (if in packet mode) */
112 BYTE copy : 1; /* 1st higher gen of copy prot track ~*/
113 BYTE track_mode : 4; /* Track mode (Q-sub control nibble) */
114 BYTE res_4 : 4; /* Reserved */
115 BYTE dbtype : 4; /* Data block type */
116 BYTE link_size; /* Link Size (default is 7) */
117 BYTE res_6; /* Reserved */
118 BYTE res_7 : 2; /* Reserved */
119 BYTE host_appl_code : 6; /* Host application code of disc */
120 BYTE session_format; /* Session format (DA/CDI/XA) */
121 BYTE res_9; /* Reserved */
122 BYTE packet_size[4]; /* # of user datablocks/fixed packet */
123 BYTE audio_pause_len[2]; /* # of blocks where index is zero */
124 BYTE mc_val : 1; /* MCN valid */
125 BYTE res_16 : 7; /* Reserved */
126 BYTE media_cat_number[13]; /* Media catalog Number (MCN) */
127 BYTE res_30_31[2];
128 BYTE tc_val : 1; /* ISRC valid */
129 BYTE res_32 : 7; /* Reserved */
130 BYTE ISRC[12]; /* ISRC for this track */
131 BYTE res_45_47;
132 BYTE sub_header[4];
133 BYTE vendor_uniq[4];
134 #endif
135 };
136
137 /* write_type */
138 #define MP05WT_PACKET 0
139 #define MP05WT_TAO 1
140 #define MP05WT_SAO 2
141 #define MP05WT_RAW 3
142 /* track_mode */
143 #define MP05TM_AUDIO 0
144 #define MP05TM_DATA 4
145 #define MP05TM_DATAINC 5
146 /* dbtype */
147 #define MP05DBT_CDDA_2352 0
148 #define MP05DBT_CDDA_2368 1
149 #define MP05DBT_CDDA_2448 2
150 #define MP05DBT_RAW 3
151 #define MP05DBT_MODE1 8
152 #define MP05DBT_MODE2 9
153 #define MP05DBT_XA1_2048 10
154 #define MP05DBT_XA1_2056 11
155 #define MP05DBT_XA2 12
156 #define MP05DBT_MIX 13
157 /* session_format */
158 #define MP05SF_CDDA_CDROM 0x00
159 #define MP05SF_CDI 0x10
160 #define MP05SF_CDROM_XA 0x20
161
162
163
164 struct _WRITESPEED_PERFOMANCE {
165 BYTE res0; /* Reserved */
166 BYTE rot_ctl_sel : 2; /* Rotational control selected */
167 BYTE res_1_27 : 6; /* Reserved */
168 BYTE wr_speed_supp[2]; /* Supported write speed */
169 };
170
171 struct _MODEPAGE2A { /* Mechanical Status */
172 #ifdef BIT_FIELDS_LTOH
173 struct _MODEPAGE_HEADER header;
174 BYTE cd_r_read : 1; /* Reads CD-R media */
175 BYTE cd_rw_read : 1; /* Reads CD-RW media */
176 BYTE method2 : 1; /* Reads fixed packet method2 media */
177 BYTE dvd_rom_read : 1; /* Reads DVD ROM media */
178 BYTE dvd_r_read : 1; /* Reads DVD-R media */
179 BYTE dvd_ram_read : 1; /* Reads DVD-RAM media */
180 BYTE res_2_67 : 2; /* Reserved */
181
182 BYTE cd_r_write : 1; /* Supports writing CD-R media */
183 BYTE cd_rw_write : 1; /* Supports writing CD-RW media */
184 BYTE test_write : 1; /* Supports emulation write */
185 BYTE res_3_3 : 1; /* Reserved */
186 BYTE dvd_r_write : 1; /* Supports writing DVD-R media */
187 BYTE dvd_ram_write : 1; /* Supports writing DVD-RAM media */
188 BYTE res_3_67 : 2; /* Reserved */
189
190 BYTE audio_play : 1; /* Supports Audio play operation */
191 BYTE composite : 1; /* Deliveres composite A/V stream */
192 BYTE digital_port_2 : 1; /* Supports digital output on port 2 */
193 BYTE digital_port_1 : 1; /* Supports digital output on port 1 */
194 BYTE mode_2_form_1 : 1; /* Reads Mode-2 form 1 media (XA) */
195 BYTE mode_2_form_2 : 1; /* Reads Mode-2 form 2 media */
196 BYTE multi_session : 1; /* Reads multi-session media */
197 BYTE BUF : 1; /* Supports Buffer under. free rec. */
198
199 BYTE cd_da_supported : 1; /* Reads audio data with READ CD cmd */
200 BYTE cd_da_accurate : 1; /* READ CD data stream is accurate */
201 BYTE rw_supported : 1; /* Reads R-W sub channel information */
202 BYTE rw_deint_corr : 1; /* Reads de-interleved R-W sub chan */
203 BYTE c2_pointers : 1; /* Supports C2 error pointers */
204 BYTE ISRC : 1; /* Reads ISRC information */
205 BYTE UPC : 1; /* Reads media catalog number (UPC) */
206 BYTE read_bar_code : 1; /* Supports reading bar codes */
207
208 BYTE lock : 1; /* PREVENT/ALLOW may lock media */
209 BYTE lock_state : 1; /* Lock state 0=unlocked 1=locked */
210 BYTE prevent_jumper : 1; /* State of prev/allow jumper 0=pres */
211 BYTE eject : 1; /* Ejects disc/cartr with STOP LoEj */
212 BYTE res_6_4 : 1; /* Reserved */
213 BYTE loading_type : 3; /* Loading mechanism type */
214
215 BYTE sep_chan_vol : 1; /* Vol controls each channel separat */
216 BYTE sep_chan_mute : 1; /* Mute controls each channel separat*/
217 BYTE disc_present_rep: 1; /* Changer supports disc present rep */
218 BYTE sw_slot_sel : 1; /* Load empty slot in changer */
219 BYTE side_change : 1; /* Side change capable */
220 BYTE pw_in_lead_in : 1; /* Reads raw P-W sucode from lead in */
221 BYTE res_7 : 2; /* Reserved */
222
223 BYTE max_read_speed[2]; /* Max. read speed in KB/s */
224 BYTE num_vol_levels[2]; /* # of supported volume levels */
225 BYTE buffer_size[2]; /* Buffer size for the data in KB */
226 BYTE cur_read_speed[2]; /* Current read speed in KB/s */
227 BYTE res_16; /* Reserved */
228 BYTE res_17_0 : 1; /* Reserved */
229 BYTE BCK : 1; /* Data valid on falling edge of BCK */
230 BYTE RCK : 1; /* Set: HIGH high LRCK=left channel */
231 BYTE LSBF : 1; /* Set: LSB first Clear: MSB first */
232 BYTE length : 2; /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/
233 BYTE res_17 : 2; /* Reserved */
234 BYTE max_write_speed[2]; /* Max. write speed supported in KB/s*/
235 BYTE cur_write_speed[2]; /* Current write speed in KB/s */
236
237 /* Byte 22 ... Only in MMC-2 */
238 BYTE copy_man_rev[2]; /* Copy management revision supported*/
239 BYTE res_24; /* Reserved */
240 BYTE res_25; /* Reserved */
241
242 /* Byte 26 ... Only in MMC-3 */
243 BYTE res_26; /* Reserved */
244 BYTE res_27_27 : 6; /* Reserved */
245 BYTE rot_ctl_sel : 2; /* Rotational control selected */
246 BYTE v3_cur_write_speed[2]; /* Current write speed in KB/s */
247 BYTE num_wr_speed_des[2]; /* # of wr speed perf descr. tables */
248 struct _WRITESPEED_PERFOMANCE wr_speed_des[1]; /* wr speed performance descriptor */
249 /* Actually more (num_wr_speed_des) */
250 #else
251 struct _MODEPAGE_HEADER header;
252 BYTE res_2_67 : 2; /* Reserved */
253 BYTE dvd_ram_read : 1; /* Reads DVD-RAM media */
254 BYTE dvd_r_read : 1; /* Reads DVD-R media */
255 BYTE dvd_rom_read : 1; /* Reads DVD ROM media */
256 BYTE method2 : 1; /* Reads fixed packet method2 media */
257 BYTE cd_rw_read : 1; /* Reads CD-RW media */
258 BYTE cd_r_read : 1; /* Reads CD-R media */
259
260 BYTE res_3_67 : 2; /* Reserved */
261 BYTE dvd_ram_write : 1; /* Supports writing DVD-RAM media */
262 BYTE dvd_r_write : 1; /* Supports writing DVD-R media */
263 BYTE res_3_3 : 1; /* Reserved */
264 BYTE test_write : 1; /* Supports emulation write */
265 BYTE cd_rw_write : 1; /* Supports writing CD-RW media */
266 BYTE cd_r_write : 1; /* Supports writing CD-R media */
267
268 BYTE BUF : 1; /* Supports Buffer under. free rec. */
269 BYTE multi_session : 1; /* Reads multi-session media */
270 BYTE mode_2_form_2 : 1; /* Reads Mode-2 form 2 media */
271 BYTE mode_2_form_1 : 1; /* Reads Mode-2 form 1 media (XA) */
272 BYTE digital_port_1 : 1; /* Supports digital output on port 1 */
273 BYTE digital_port_2 : 1; /* Supports digital output on port 2 */
274 BYTE composite : 1; /* Deliveres composite A/V stream */
275 BYTE audio_play : 1; /* Supports Audio play operation */
276
277 BYTE read_bar_code : 1; /* Supports reading bar codes */
278 BYTE UPC : 1; /* Reads media catalog number (UPC) */
279 BYTE ISRC : 1; /* Reads ISRC information */
280 BYTE c2_pointers : 1; /* Supports C2 error pointers */
281 BYTE rw_deint_corr : 1; /* Reads de-interleved R-W sub chan */
282 BYTE rw_supported : 1; /* Reads R-W sub channel information */
283 BYTE cd_da_accurate : 1; /* READ CD data stream is accurate */
284 BYTE cd_da_supported : 1; /* Reads audio data with READ CD cmd */
285
286 BYTE loading_type : 3; /* Loading mechanism type */
287 BYTE res_6_4 : 1; /* Reserved */
288 BYTE eject : 1; /* Ejects disc/cartr with STOP LoEj */
289 BYTE prevent_jumper : 1; /* State of prev/allow jumper 0=pres */
290 BYTE lock_state : 1; /* Lock state 0=unlocked 1=locked */
291 BYTE lock : 1; /* PREVENT/ALLOW may lock media */
292
293 BYTE res_7 : 2; /* Reserved */
294 BYTE pw_in_lead_in : 1; /* Reads raw P-W sucode from lead in */
295 BYTE side_change : 1; /* Side change capable */
296 BYTE sw_slot_sel : 1; /* Load empty slot in changer */
297 BYTE disc_present_rep: 1; /* Changer supports disc present rep */
298 BYTE sep_chan_mute : 1; /* Mute controls each channel separat*/
299 BYTE sep_chan_vol : 1; /* Vol controls each channel separat */
300
301 BYTE max_read_speed[2]; /* Max. read speed in KB/s */
302 BYTE num_vol_levels[2]; /* # of supported volume levels */
303 BYTE buffer_size[2]; /* Buffer size for the data in KB */
304 BYTE cur_read_speed[2]; /* Current read speed in KB/s */
305 BYTE res_16; /* Reserved */
306 BYTE res_17 : 2; /* Reserved */
307 BYTE length : 2; /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/
308 BYTE LSBF : 1; /* Set: LSB first Clear: MSB first */
309 BYTE RCK : 1; /* Set: HIGH high LRCK=left channel */
310 BYTE BCK : 1; /* Data valid on falling edge of BCK */
311 BYTE res_17_0 : 1; /* Reserved */
312 BYTE max_write_speed[2]; /* Max. write speed supported in KB/s*/
313 BYTE cur_write_speed[2]; /* Current write speed in KB/s */
314
315 /* Byte 22 ... Only in MMC-2 */
316 BYTE copy_man_rev[2]; /* Copy management revision supported*/
317 BYTE res_24; /* Reserved */
318 BYTE res_25; /* Reserved */
319
320 /* Byte 26 ... Only in MMC-3 */
321 BYTE res_26; /* Reserved */
322 BYTE rot_ctl_sel : 2; /* Rotational control selected */
323 BYTE res_27_27 : 6; /* Reserved */
324 BYTE v3_cur_write_speed[2]; /* Current write speed in KB/s */
325 BYTE num_wr_speed_des[2]; /* # of wr speed perf descr. tables */
326 struct _WRITESPEED_PERFOMANCE wr_speed_des[1]; /* wr speed performance descriptor */
327 /* Actually more (num_wr_speed_des) */
328 #endif
329 };
330
331 struct _OPCTABLE {
332 BYTE opc_speed[2];
333 BYTE opc_val[6];
334 };
335
336 struct _DISCINFO {
337 #ifdef BIT_FIELDS_LTOH
338 BYTE data_len[2]; /* Data len without this info */
339 BYTE disc_status : 2; /* Status of the disc */
340 BYTE sess_status : 2; /* Status of last session */
341 BYTE erasable : 1; /* disc is erasable */
342 BYTE res2 : 3; /* Reserved */
343 BYTE first_track; /* # of first track on disc */
344 BYTE numsess_lsb; /* # of sessions */
345 BYTE first_track_ls_lsb; /* First track in last sessaion */
346 BYTE last_track_ls_lsb; /* Last track in last sessaion */
347 BYTE bgformat_stat : 2; /* B.G. format status */
348 BYTE dbit : 1; /* dirty bit */
349 BYTE res7_3 : 1; /* Reserved */
350 BYTE dac_v : 1; /* disc application code valid */
351 BYTE uru : 1; /* This is an unrestricted disc */
352 BYTE dbc_v : 1; /* disc bar code valid */
353 BYTE did_v : 1; /* disc id valid */
354 BYTE disc_type; /* disc type */
355 BYTE numsess_msb; /* # of session(high byte) */
356 BYTE first_track_ls_msb; /* First track in last session(high byte) */
357 BYTE last_track_ls_msb; /* Last track in last session(high byte) */
358 BYTE disc_id[4]; /* disc identification */
359 BYTE last_lead_in[4]; /* Last session lead in time */
360 BYTE last_lead_out[4]; /* Last session lead out time */
361 BYTE disc_barcode[8]; /* disc bar code */
362 BYTE disc_app_code; /* disc application code */
363 BYTE num_opc_entries; /* # of OPC table entries */
364 struct _OPCTABLE opc_table[1]; /* OPC table */
365 #else
366 BYTE data_len[2]; /* Data len without this info */
367 BYTE res2 : 3; /* Reserved */
368 BYTE erasable : 1; /* disc is erasable */
369 BYTE sess_status : 2; /* Status of last session */
370 BYTE disc_status : 2; /* Status of the disc */
371 BYTE first_track; /* # of first track on disc */
372 BYTE numsess_lsb; /* # of sessions */
373 BYTE first_track_ls_lsb; /* First track in last sessaion */
374 BYTE last_track_ls_lsb; /* Last track in last sessaion */
375 BYTE did_v : 1; /* disc id valid */
376 BYTE dbc_v : 1; /* disc bar code valid */
377 BYTE uru : 1; /* This is an unrestricted disc */
378 BYTE dac_v : 1; /* disc application code valid */
379 BYTE res7_3 : 1; /* Reserved */
380 BYTE dbit : 1; /* dirty bit */
381 BYTE bgformat_stat : 2; /* B.G. format status */
382 BYTE disc_type; /* disc type */
383 BYTE numsess_msb; /* # of session(high byte) */
384 BYTE first_track_ls_msb; /* First track in last session(high byte) */
385 BYTE last_track_ls_msb; /* Last track in last session(high byte) */
386 BYTE disc_id[4]; /* disc identification */
387 BYTE last_lead_in[4]; /* Last session lead in time */
388 BYTE last_lead_out[4]; /* Last session lead out time */
389 BYTE disc_barcode[8]; /* disc bar code */
390 BYTE disc_app_code; /* disc application code */
391 BYTE num_opc_entries; /* # of OPC table entries */
392 struct _OPCTABLE opc_table[1]; /* OPC table */
393 #endif
394 };
395
396 /* disc_type */
397 #define DISCTYPE_CDDA_DATA 0x00
398 #define DISCTYPE_CDI 0x10
399 #define DISCTYPE_CDROM_XA 0x20
400 /* disc_status */
401 #define DISCSTAT_EMPTY 0
402 #define DISCSTAT_INCOMPLETE 1
403 #define DISCSTAT_COMPLETE 2
404 #define DISCSTAT_OTHER 3 /* non-write protected Random Writable media */
405 /* sess_status */
406 #define SESSSTAT_EMPTY 0
407 #define SESSSTAT_INCOMPLETE 1
408 #define SESSSTAT_COMPLETE 3
409 /* bgformat_stat */
410 #define BGFSTAT_NOTFORMATTED 0
411 #define BGFSTAT_INACTIVE 1
412 #define BGFSTAT_ACTIVE 2
413 #define BGFSTAT_COMPLETED 3
414
415
416 struct _TRACKINFO {
417 #ifdef BIT_FIELDS_LTOH
418 BYTE data_len[2]; /* Data len without this info */
419 BYTE track_number_lsb; /* Track number for this info */
420 BYTE session_number_lsb; /* Session number for this info */
421 BYTE res4; /* Reserved */
422 BYTE track_mode : 4; /* Track mode (Q-sub control) */
423 BYTE copy : 1; /* This track is a higher copy */
424 BYTE damage : 1; /* if 1 & nwa_valid 0: inc track*/
425 BYTE res5_67 : 2; /* Reserved */
426 BYTE data_mode : 4; /* Data mode of this track */
427 BYTE fp : 1; /* This is a fixed packet track */
428 BYTE packet : 1; /* This track is in packet mode */
429 BYTE blank : 1; /* This is an invisible track */
430 BYTE rt : 1; /* This is a reserved track */
431 BYTE nwa_valid : 1; /* Next writable addr valid */
432 BYTE lra_valid : 1; /* Last recorded addr valid */
433 BYTE res7_16 : 6; /* Reserved */
434 BYTE track_start[4]; /* Track start address */
435 BYTE next_writable_addr[4]; /* Next writable address */
436 BYTE free_blocks[4]; /* Free usr blocks in this track*/
437 BYTE packet_size[4]; /* Packet size if in fixed mode */
438 BYTE track_size[4]; /* # of user data blocks in trk */
439 BYTE last_rec_addr[4]; /* Last recorded addr */
440 BYTE track_number_msb; /* Track number for this info(high byte) */
441 BYTE session_number_msb; /* Session number for this info(high byte) */
442 BYTE res[2]; /* Reserved */
443 #else
444 BYTE data_len[2]; /* Data len without this info */
445 BYTE track_number_lsb; /* Track number for this info */
446 BYTE session_number_lsb; /* Session number for this info */
447 BYTE res4; /* Reserved */
448 BYTE res5_67 : 2; /* Reserved */
449 BYTE damage : 1; /* if 1 & nwa_valid 0: inc track*/
450 BYTE copy : 1; /* This track is a higher copy */
451 BYTE track_mode : 4; /* Track mode (Q-sub control) */
452 BYTE rt : 1; /* This is a reserved track */
453 BYTE blank : 1; /* This is an invisible track */
454 BYTE packet : 1; /* This track is in packet mode */
455 BYTE fp : 1; /* This is a fixed packet track */
456 BYTE data_mode : 4; /* Data mode of this track */
457 BYTE res7_16 : 6; /* Reserved */
458 BYTE lra_valid : 1; /* Last recorded addr valid */
459 BYTE nwa_valid : 1; /* Next writable addr valid */
460 BYTE track_start[4]; /* Track start address */
461 BYTE next_writable_addr[4]; /* Next writable address */
462 BYTE free_blocks[4]; /* Free usr blocks in this track*/
463 BYTE packet_size[4]; /* Packet size if in fixed mode */
464 BYTE track_size[4]; /* # of user data blocks in trk */
465 BYTE last_rec_addr[4]; /* Last recorded addr */
466 BYTE track_number_msb; /* Track number for this info(high byte) */
467 BYTE session_number_msb; /* Session number for this info(high byte) */
468 BYTE res[2]; /* Reserved */
469 #endif
470 };
471 #define SESSION_NUMBER(tp) \
472 ((WORD)(tp)->session_number_msb<<8 | \
473 (WORD)(tp)->session_number_lsb)
474 #define TRACK_NUMBER(tp) \
475 ((WORD)(tp)->track_number_msb<<8 | \
476 (WORD)(tp)->track_number_lsb)
477
478 struct _FEATURE_HEADER { /* for GET CONFIGURATION */
479 BYTE data_len[4];
480 BYTE res45[2];
481 BYTE cur_profile[2];
482 };
483
484
485
486 struct _FORMATLIST_HEADER {
487 #ifdef BIT_FIELDS_LTOH
488 BYTE res1; /* Reserved */
489 BYTE vs : 1; /* Vendor Specific */
490 BYTE immed : 1; /* Immediate */
491 BYTE tryout : 1;
492 BYTE ip : 1; /* Initialization Pattern */
493 BYTE stpf : 1; /* Stop format */
494 BYTE dcrt : 1; /* Disable Certification */
495 BYTE dpry : 1; /* Disable Primary */
496 BYTE fov : 1; /* Format option valid */
497 BYTE fmtdesc_len[2]; /* Format descriptor length */
498 #else
499 BYTE res1; /* Reserved */
500 BYTE fov : 1; /* Format option valid */
501 BYTE dpry : 1; /* Disable Primary */
502 BYTE dcrt : 1; /* Disable Certification */
503 BYTE stpf : 1; /* Stop format */
504 BYTE ip : 1; /* Initialization Pattern */
505 BYTE tryout : 1;
506 BYTE immed : 1; /* Immediate */
507 BYTE vs : 1; /* Vendor Specific */
508 BYTE fmtdesc_len[2]; /* Format descriptor length */
509 #endif
510 };
511
512 struct _CDRW_FORMATDESC {
513 #ifdef BIT_FIELDS_LTOH
514 BYTE res0_61 : 6; /* Reserved */
515 BYTE grow : 1; /* Grow session */
516 BYTE session : 1; /* New session */
517 BYTE res1_3[3]; /* Reserved */
518 BYTE format_size[4]; /* Format size */
519 #else
520 BYTE session : 1; /* New session */
521 BYTE grow : 1; /* Grow session */
522 BYTE res0_61 : 6; /* Reserved */
523 BYTE res1_3[3]; /* Reserved */
524 BYTE format_size[4]; /* Format size */
525 #endif
526 };
527
528 struct _FORMATDESC {
529 #ifdef BIT_FIELDS_LTOH
530 BYTE num_blocks[4]; /* # of blocks */
531 BYTE res4_21 : 2; /* Reserved */
532 BYTE format_type : 6; /* Format type */
533 BYTE param[3]; /* Parameter */
534 #else
535 BYTE num_blocks[4]; /* # of blocks */
536 BYTE format_type : 6; /* Format type */
537 BYTE res4_21 : 2; /* Reserved */
538 BYTE param[3]; /* Parameter */
539 #endif
540 };
541 /* format_type */
542 #define FDFT_FULL 0x00 /* Full Format */
543 #define FDFT_SPARE 0x01 /* Spare Area Expansion */
544 #define FDFT_ZONERE 0x04 /* Zone Reformat */
545 #define FDFT_ZONE 0x05 /* Zone Format */
546 #define FDFT_CDVDFULL 0x10 /* CD/DVD-RW Full Format */
547 #define FDFT_CDVDGROW 0x11 /* CD/DVD-RW Grow Session */
548 #define FDFT_CDVDADD 0x12 /* CD/DVD-RW Add Session */
549 #define FDFT_DVDQUICKGROW 0x13 /* DVD-RW Quick Grow */
550 #define FDFT_DVDQUICKADD 0x14 /* DVD-RW Quick Add */
551 #define FDFT_DVDQUICK 0x15 /* DVD-RW Quick */
552 #define FDFT_CDMRW 0x24 /* MRW Full Format */
553 #define FDFT_DVDPRW 0x26 /* DVD+RW Basic Format */
554 #define FDFT_BDRESPARE 0x30 /* BD-RE Full Format With Spare */
555 #define FDFT_BDRE 0x31 /* BD-RE Full Format */
556 #define FDFT_BDRSPARE 0x32 /* CD-R Full Format With Spare */
557
558
559 /* for READ FORMAT CAPACITIES */
560 struct _FORMATCAPA_HEADER {
561 BYTE res[3]; /* Reserved */
562 BYTE list_len; /* Capacity list length */
563 };
564
565 struct _FORMATCURMAXDESC {
566 #ifdef BIT_FIELDS_LTOH
567 BYTE num_blocks[4]; /* # of blocks */
568 BYTE desc_type : 2; /* Descriptor type */
569 BYTE res4_72 : 6; /* Reserved */
570 BYTE param[3]; /* Parameter */
571 #else
572 BYTE num_blocks[4]; /* # of blocks */
573 BYTE res4_72 : 6; /* Reserved */
574 BYTE desc_type : 2; /* Descriptor type */
575 BYTE param[3]; /* Parameter */
576 #endif
577 };
578
579
580 struct _PERFORMANCEDESC {
581 #ifdef BIT_FIELDS_LTOH
582 BYTE mrw : 1; /* Mix read write */
583 BYTE exact : 1; /* Exact */
584 BYTE rdd : 1; /* Restore drive default */
585 BYTE wrc : 2; /* Write rotation control */
586 BYTE res0_75 : 3; /* Reserved */
587 BYTE res13[3]; /* Reserved */
588 BYTE start_lba[4]; /* Start LBA */
589 BYTE end_lba[4]; /* End LBA */
590 BYTE read_size[4]; /* Read size */
591 BYTE read_time[4]; /* Read time */
592 BYTE write_size[4]; /* Write size */
593 BYTE write_time[4]; /* Write time */
594 #else
595 BYTE res0_75 : 3; /* Reserved */
596 BYTE wrc : 2; /* Write rotation control */
597 BYTE rdd : 1; /* Restore drive default */
598 BYTE exact : 1; /* Exact */
599 BYTE mrw : 1; /* Mix read write */
600 BYTE res13[3]; /* Reserved */
601 BYTE start_lba[4]; /* Start LBA */
602 BYTE end_lba[4]; /* End LBA */
603 BYTE read_size[4]; /* Read size */
604 BYTE read_time[4]; /* Read time */
605 BYTE write_size[4]; /* Write size */
606 BYTE write_time[4]; /* Write time */
607 #endif
608 };
609
610
611 struct _TOCHEADER {
612 BYTE len[2];
613 BYTE first;
614 BYTE last;
615 };
616
617 struct _FULLTOCDESC {
618 BYTE sess_num;
619 #ifdef BIT_FIELDS_LTOH
620 BYTE control : 4;
621 BYTE adr : 4;
622 #else
623 BYTE adr : 4;
624 BYTE control : 4;
625 #endif
626 BYTE track;
627 BYTE point;
628 BYTE amin;
629 BYTE asec;
630 BYTE aframe;
631 BYTE res7;
632 BYTE pmin;
633 BYTE psec;
634 BYTE pframe;
635 };
636
637
638 struct _CUESHEET {
639 BYTE ctladr; /* CTL/ADR for this track */
640 BYTE tno; /* This track number */
641 BYTE index; /* Index within this track */
642 BYTE dataform; /* Data form */
643 BYTE scms; /* Serial copy management */
644 BYTE min; /* Absolute time minutes */
645 BYTE sec; /* Absolute time seconds */
646 BYTE frame; /* Absolute time frames */
647 };
648
649 #define CSCTL_AUDIO 0x00
650 #define CSCTL_DATA 0x40
651 #define CSADR_NORMAL 0x01
652 #define CSADR_MCN 0x02
653 #define CSADR_ISRC 0x03
654
655
656
657 /* ディスクタイプ */
658 #define DT_UNKNOWN 0x0000 /* 未知ディスク */
659 #define DT_CDROM 0x0008 /* CD-ROM */
660 #define DT_CDR 0x0009 /* CD-R */
661 #define DT_CDRW 0x000A /* CD-RW */
662 #define DT_DVDROM 0x0010 /* DVD-ROM */
663 #define DT_DVDR 0x0011 /* DVD-R */
664 #define DT_DVDRAM 0x0012 /* DVD-RAM */
665 #define DT_DVDRWO 0x0013 /* DVD-RW(フォーマット済) */
666 #define DT_DVDRWS 0x0014 /* DVD-RW(シーケンシャル記録) */
667 #define DT_DVDRDL 0x0015 /* DVD-R Dual Layer(シーケンシャル記録) */
668 #define DT_DVDRDLJ 0x0016 /* DVD-R Dual Layer(レイヤージャンプ記録) */
669 #define DT_DVDRWDL 0x0017 /* DVD-RW Dual Layer */
670 #define DT_DVDPRW 0x001A /* DVD+RW */
671 #define DT_DVDPR 0x001B /* DVD+R */
672 #define DT_DVDPRWDL 0x002A /* DVD+RW Dual Layer */
673 #define DT_DVDPRDL 0x002B /* DVD+R Dual Layer */
674 #define DT_BDROM 0x0040 /* BD-ROM */
675 #define DT_BDR 0x0041 /* BD-R(シーケンシャル記録) */
676 #define DT_BDRR 0x0042 /* BD-R(ランダム記録) */
677 #define DT_BDRE 0x0043 /* BD-RE */
678
679 #define DT_CD_FAMILY(d) ((d)==DT_CDROM||(d)==DT_CDR||(d)==DT_CDRW)
680 #define DT_DVD_FAMILY(d) ((d)>=DT_DVDROM&&(d)<DT_BDROM)
681 #define DT_BD_FAMILY(d) ((d)>=DT_BDROM)
682 #define DT_WRITABLE(d) \
683 (d==DT_CDR||d==DT_CDRW||\
684 d==DT_DVDR||d==DT_DVDRWO||d==DT_DVDRWS||\
685 d==DT_DVDRDL||d==DT_DVDRDLJ||d==DT_DVDRWDL||\
686 d==DT_DVDPRW||d==DT_DVDPR||\
687 d==DT_DVDPRWDL||d==DT_DVDPRDL||\
688 d==DT_BDR||DT_BDRE)
689
690 #endif /* !__STRUCT_H__ */

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26