?? toc.h
字號(hào):
/************************************************** * * toc.h * * CVS ID: $Id: toc.h,v 1.13 2007/09/26 15:02:45 dellorto Exp $ * Author: Fabio Dell'Orto [FD] - STM * Date: $Date: 2007/09/26 15:02:45 $ * Revision: $Revision: 1.13 $ * * Description: * * *************************************************** * * COPYRIGHT (C) ST Microelectronics 2005 * All Rights Reserved * **************************************************** * * STM CVS Log: * * $Log: toc.h,v $ * Revision 1.13 2007/09/26 15:02:45 dellorto * added defines for pause handling * * Revision 1.12 2006/11/27 19:43:09 belardi * Re-introduced #HAVE_UPDATE for FLASH_UPDATE flag * * Revision 1.11 2006/11/01 14:51:09 trubac * HAVE_FLASH_UPDATE always defined * * Revision 1.10 2006/09/18 09:55:21 belardi * Corrected CVS keyword usage * * Revision 1.9 2006/09/18 09:22:36 belardi * Added Log CVS keyword into file header * * Revision 1.8 2006/09/15 20:17:25 belardi * Added Log CVS keyword into file header * * ***************************************************/#ifndef _TOC_H_#define _TOC_H_#include "srvmat.h"#define READ_TOC_LEVEL LEVEL_1#define READ_FIRST_TOC_LEVEL LEVEL_0#define READ_RESTOF_TOC_LEVEL LEVEL_0#define JUMP_TO_START_DATA_AREA_LEVEL LEVEL_0#define TOC_IDLE 0x00#define READ_FIRST_TOC 0x01#define READ_REST_OF_TOC 0x03#define JUMP_TO_START_DATA_AREA 0x05#define TOC_WAIT_FOR_SERVO 0x06#define MODE1 (uint8) 0x01#define MODE2 (uint8) 0x02#define MODE5 (uint8) 0x05#define TOC_RESET_TOC_READING 0x01#define TOC_RESET_CALIB_JUMP 0x02#define TOC_RESET_ALL 0xFF// Control profile values:#ifdef APM_PICKUP#define TOC_ACCESS_TIMEOUT T300ms#define TOC_MAX_SUBCODE 620#define TOC_MAX_RETRY 0x10#define TRACKS_INTO_FIRST_LEADIN -400#define TRACKS_OUT_LEADIN 400#define CONTINUITY_SKIP_TRACKS 100#define PAUSE_TRACKS -1#define NO_SKIP 0#define TRACKS_20MIN 7500#else#define TOC_ACCESS_TIMEOUT T300ms#define TOC_MAX_SUBCODE (uint16) 620#define TOC_MAX_RETRY (uint8) 5#define TRACKS_INTO_FIRST_LEADIN (sint16) -200#define TRACKS_OUT_LEADIN (sint16) 50#define CONTINUITY_SKIP_TRACKS (sint16) 100#define PAUSE_TRACKS (sint16) -1#define PAUSE_TRACKS_LOWER_THS (sint16) -2#define PAUSE_DRIFT_SECTORS_TRK_REC (sint32) -3#define NO_SKIP (sint16) 0#endif// global variable CDinfo:#define HAVE_AUDIO_TRACK 0x0001#define HAVE_DATA_TRACK 0x0002#define MS_R_RW 0x0004#define LOW_REFLECTIVE 0x0008 /*set outside TOC reading*/#define DISC_12CM 0x0010 /*set outside TOC reading*/#define DISC_8CM 0x0020 /*set outside TOC reading*/#define MULTISESSION 0x0040#define OPEN_MULTISESSION 0x0080#define DIGITAL_COPY_PROHIBITED 0x0100#define COPY_PROTECTED 0x0200#define FIRST_TOC_READABLE 0x0400#define ALL_TOC_READ 0x0800 /*set when TOC evaluation is finished, even with error*/#if (0 != HAVE_UPDATE)#define HAVE_FLASH_IMAGE 0x8000#endif// local variable Session:// flags#define MIN_TRACK_FOUND 0x0001#define MAX_TRACK_FOUND 0x0002#define LEAD_OUT_FOUND 0x0004#define ALL_TRACK_FOUND 0x0008#define MODE_5_FOUND 0x0010#define B0_FOUND 0x0020#define C0_FOUND 0x0040#define NEXT_SESSION 0x0080// warnings#define MODE_2_FOUND 0x01#define UNSUPPORTED_MODE 0x02#define UNSUPPORTED_MOD1_POINT 0x04#define UNSUPPORTED_MOD5_POINT 0x08typedef struct{ uint8 min[99]; uint8 sec[99]; uint8 frame[99]; uint8 type[99]; // [RB] for mixed-mode disc, // 0x00 = CDDA or CDROM mode1 // 0x10 = CD-I session // 0x20 = CDROM XA session (mode2)} TRACK_DATA_STRUCT;typedef struct{ uint8 min_track; uint8 max_track; uint8 num_of_audio_track; uint8 num_of_sessions; uint8 max_track_in_1_toc; uint8 num_of_audio_track_in_1_toc; uint8 Tmsf_lead_out_in_1_toc[3]; uint8 Tmsf_lead_out[3]; TRACK_DATA_STRUCT track_data;} TOC_DATA_STRUCT;typedef struct{ UInt toc_fsm_started : 1; UInt reading_first_toc : 1; UInt force_toc_reading : 1; UInt force_calibrate_jump : 1; UInt calibration_jump_executed : 1; UInt wait_for_set_speed : 1;} TOC_FLAGS_STRUCT;typedef union{ uint8 all; TOC_FLAGS_STRUCT field;} TOC_FLAGS_UNION;extern TOC_FLAGS_UNION toc_flags;extern uint8 toc_state;extern TOC_DATA_STRUCT TOC_data;extern uint16 CDinfo;uint32 toc_get_track_time(uint8 track);void reset_toc(uint8 flags);void stop_toc(void);RETVAL toc_fsm(void);uint32 msf2lba(uint16); // [RB]#define toc_get_min_track() (TOC_data.min_track)#define toc_get_max_track() (TOC_data.max_track)#define toc_get_track_min(_track) ((uint8)(TOC_data.track_data.min[(_track)-1] & 0x7F))#define toc_get_track_sec(_track) ((uint8)(TOC_data.track_data.sec[(_track)-1] & 0x7F))#define toc_get_track_frame(_track) ((uint8)(TOC_data.track_data.frame[(_track)-1] & 0x7F))#define toc_get_track_type(_track) ((uint8)(TOC_data.track_data.type[(_track)-1])) // [RB]#define toc_is_track_rom(_track) (0 != (TOC_data.track_data.min[(_track)-1] & 0x80))#define toc_is_track_preemphases(_track) (0 != (TOC_data.track_data.sec[(_track)-1] & 0x80))#define toc_is_track_startsession(_track) (0 != (TOC_data.track_data.frame[(_track)-1] & 0x80))#define toc_get_leadout_min() (TOC_data.Tmsf_lead_out[MIN])#define toc_get_leadout_sec() (TOC_data.Tmsf_lead_out[SEC])#define toc_get_leadout_frame() (TOC_data.Tmsf_lead_out[FRAME])#define toc_get_leadout_time() (msf_2_sid(TOC_data.Tmsf_lead_out[MIN], \ TOC_data.Tmsf_lead_out[SEC], \ TOC_data.Tmsf_lead_out[FRAME], HEX))#define toc_get_num_of_sessions() (TOC_data.num_of_sessions)#define toc_get_num_of_audio_track() (TOC_data.num_of_audio_track)#define toc_get_CD_info() (CDinfo)#define toc_is_toc_known() (0 != (CDinfo & ALL_TOC_READ))#define toc_is_first_toc_readable() (0 != (CDinfo & FIRST_TOC_READABLE))uint32 toc_get_track_time(uint8 track);#endif //_TOC_H_
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -