📄 srvfsm.h
字号:
/************************************************** * * srvfsm.h * * CVS ID: $Id: srvfsm.h,v 1.20 2007/08/14 15:30:15 dellorto Exp $ * Author: Fabio Dell'Orto [FD] - STM * Date: $Date: 2007/08/14 15:30:15 $ * Revision: $Revision: 1.20 $ * * Description: * * *************************************************** * * COPYRIGHT (C) ST Microelectronics 2005 * All Rights Reserved * *************************************************** * * STM CVS Log: * * $Log: srvfsm.h,v $ * Revision 1.20 2007/08/14 15:30:15 dellorto * multiple mechanisms * * Revision 1.19 2007/04/11 14:21:04 belardi * Integration of HAVE_CD_MECHA modification by [GP] * * Revision 1.18 2006/10/26 10:20:45 dellorto * removal of servo_cmd_result * * Revision 1.17 2006/10/09 15:13:19 dellorto * improved TTM recover for DC TTM motor * * Revision 1.16 2006/09/18 09:55:25 belardi * Corrected CVS keyword usage * * Revision 1.15 2006/09/18 09:25:37 belardi * Added Log CVS keyword into file header * * ***************************************************/#ifndef __SRVFSM_H#define __SRVFSM_H#if (DEBUG_INCLUDE_PCDEB == 1) #include "dbgdef.h" #include "dbgext.h"#endif/*---------------------------------------------------------------------------*//*!\brief Servo Startup Flags structure definition *//*---------------------------------------------------------------------------*/typedef struct{ UInt fe_adjust_done : 1; UInt ttm_started : 1; UInt hf_found : 1; UInt te_adjust_done : 1; UInt agc_focus_done : 1; UInt agc_tracking_done : 1; UInt mode1_found : 1; UInt first_startup_sequence_completed : 1;} SERVO_STARTUP_FLAGS_STRUCT;typedef union{ uint8 all; SERVO_STARTUP_FLAGS_STRUCT field;} SERVO_STARTUP_FLAGS_UNION;#define SERVO_STARTUP_FLAGS_INIT (uint8) 0x00/*---------------------------------------------------------------------------*//*!\brief Servo Recover Flags structure definition *//*---------------------------------------------------------------------------*/typedef struct{ UInt focus_recover_mode : 3; UInt hf_recover_mode : 3; UInt next_focus_recover_direction : 1; UInt next_hf_recover_direction : 1; UInt focus_lost_during_hf_recover_retries : 2; UInt focus_lost_during_erased_cd_rw_recover_retries : 2; UInt active_check_recover_executed : 1; UInt focus_missing : 1; UInt ttm_recover_active : 1; UInt unused : 1;} SERVO_RECOVER_FLAGS_STRUCT;typedef union{ uint16 all; SERVO_RECOVER_FLAGS_STRUCT field;} SERVO_RECOVER_FLAGS_UNION;// focus_recover_mode#define FOCUS_PRESENT_IN_CURRENT_POSITION 0#define FOCUS_NOT_PRESENT_IN_CURRENT_POSITION 1#define FOCUS_LOST_DURING_JUMP 2#define FOCUS_LOST_DURING_HF_RECOVER 3#define FOCUS_LOST_DURING_ERASED_CD_RW_RECOVER 4#define FOCUS_LOST_DURING_PLL_RECOVER 5// hf_recover_mode#define HF_PRESENT_IN_CURRENT_POSITION 0#define HF_NOT_PRESENT_IN_CURRENT_POSITION 1#define HF_LOST_DURING_JUMP 2#define HF_LOST_DURING_ERASED_CD_RW_RECOVER 3#define HF_LOST_DURING_PLL_RECOVER 4// next_focus_recover_direction#define FOCUS_RECOVER_OUTSIDE 0#define FOCUS_RECOVER_INSIDE 1// next_hf_recover_direction#define HF_RECOVER_OUTSIDE 0#define HF_RECOVER_INSIDE 1#define SERVO_RECOVER_FLAGS_INIT (uint16) 0x2FC9/*---------------------------------------------------------------------------*//*!\brief Servo Seek Flags structure definition *//*---------------------------------------------------------------------------*/typedef struct{ UInt seek_mode : 3; UInt seek_state : 2; UInt jump_type : 2; UInt starting_trk_unknown : 1; UInt from_leadin_to_target : 1; UInt seek_cmd_executed : 1; UInt unused : 6;} SERVO_SEEK_FLAGS_STRUCT;typedef union{ uint16 all; SERVO_SEEK_FLAGS_STRUCT field;} SERVO_SEEK_FLAGS_UNION;// seek_mode#define SEEK_TARGET 0#define JUMP_TARGET_1 1#define JUMP_TARGET_2 2#define JUMP_TARGET_PLUS_TRACKS 3#define JUMP_TRACKS 4// seek_state#define NO_SEEK_REQUESTED 0#define NEW_SEEK_REQUESTED 1#define SEEK_IN_PROGRESS 2#define SEEK_COMPLETED 0// jump_type#define SHORT_JUMP 0#define LONG_JUMP 1#define SERVO_SEEK_FLAGS_INIT (uint16) 0x0000/*---------------------------------------------------------------------------*//*!\brief Servo Active Flags structure definition *//*---------------------------------------------------------------------------*/typedef struct{ UInt play_state : 2; /* BB050810k */ UInt pause_state : 2; /* BB050810k */ UInt servo_mode : 3; UInt unused : 1;} SERVO_ACTIVE_FLAGS_STRUCT;typedef union{ uint8 all; SERVO_ACTIVE_FLAGS_STRUCT field;} SERVO_ACTIVE_FLAGS_UNION;// play_state - play mode#define WAIT_START_MSF 0#define WAIT_WITH_EVENTS 1#define PLAY_IN_PROGRESS 2// play_state - pause mode#define WAIT_PAUSE_CMD 0#define START_PAUSE 1#define KEEP_PAUSE 2#define KEEP_PAUSE_SPF 3// servo_mode#define START_MODE 0#define PAUSE_MODE 1#define PAUSE_SPFMODE 2#define PLAY_MODE 3#define TOC_JUMP_MODE 4#define SERVO_ACTIVE_FLAGS_INIT 0x00/*---------------------------------------------------------------------------*//*!\brief Servo Miscellaneous Flags structure definition *//*---------------------------------------------------------------------------*/typedef struct{ UInt init_done : 1; UInt init_for_new_disc_done : 1; UInt init_request : 1; UInt init_for_new_disc_request : 1; UInt start_request : 1; UInt sledge_home_request : 1; UInt relock_request : 1; UInt set_speed_request : 1; UInt check_speed_request : 1; UInt channel_saturated : 1; UInt unused : 6;} SERVO_MISC_FLAGS_STRUCT;typedef union{ uint16 all; SERVO_MISC_FLAGS_STRUCT field;} SERVO_MISC_FLAGS_UNION;/*---------------------------------------------------------------------------*//*!\brief Servo Acquisition Flags structure definition *//*---------------------------------------------------------------------------*/typedef struct{ UInt new_T : 1; /*!< New actual time available */ UInt mode1_subcode : 1; /*!< Mode 1 subcode read */ UInt erased_cd_rw : 1; UInt new_T_subcode : 1; UInt long_defect : 1; /*!< Long defect interrupt occurred */ UInt ecc_cntr_ready : 1; /*!< Flag for BLER measurement ready */ UInt unused : 2;} SERVO_ACQ_FLAGS_STRUCT;typedef union{ uint8 all; SERVO_ACQ_FLAGS_STRUCT field;} SERVO_ACQ_FLAGS_UNION;void reset_servo_errors(void);void report_servo_error(RETVAL error);#if (HAVE_CD_MECHA == 1)void init_servo_fsm(void);#endifvoid servo_fsm(void);uint8 get_servo_action(void);void servo_set_max_retries(uint8 max);extern uint8 tmp_cmd;extern uint8 sm_state_0;extern uint8 sm_state_1;extern uint8 sm_state_2;extern uint8 prev_sm_state_1;extern uint16 servo_function_counter;extern uint16 servo_function_counter_2;extern SERVO_ACQ_FLAGS_UNION servo_acq_flags;extern SERVO_STARTUP_FLAGS_UNION servo_startup_flags;extern SERVO_RECOVER_FLAGS_UNION servo_recover_flags;extern SERVO_SEEK_FLAGS_UNION servo_seek_flags;extern SERVO_ACTIVE_FLAGS_UNION servo_active_flags;extern SERVO_MISC_FLAGS_UNION servo_misc_flags;extern uint8 max_servo_retries;#if (HAVE_CD_MECHA == 1)extern RETVAL servo_fsm_result;#endif#define servo_fsm_state sm_state_0#define dsp_init_state sm_state_2#define focus_off_state sm_state_2#define focus_on_state sm_state_2#define focus_closing_state sm_state_1#define track_on_state sm_state_2#define track_closing_state sm_state_1#define agc_state sm_state_2#define abcdef_offset_calibration_state sm_state_2#define fe_adjust_state sm_state_1#define te_adjust_state sm_state_1#define focus_recover_state sm_state_1#define hf_recover_state sm_state_1#define erased_cd_rw_recover_state sm_state_1#define pll_recover_state sm_state_1#define ttm_recover_state sm_state_1#define start_ttm_state sm_state_2#define stop_sledge_state sm_state_2#define sledge_home_state sm_state_2#define sledge_move_state sm_state_2#define sledge_move_hf_state sm_state_2#define sledge_move_long_jump_state sm_state_2#define sledge_move_relock_state sm_state_2#define short_jump_execution_state sm_state_2#define short_jump_braking_state sm_state_2#define short_jump_state sm_state_1#define long_jump_state sm_state_1#define jump_ttm_check_state sm_state_1#define ttm_speed_check_state sm_state_2#define init_servo_state sm_state_1#define init_servo_for_new_disc_state sm_state_1#define init_start_state sm_state_1#define stop_servo_state sm_state_1#define load_dsp_state sm_state_2#define fatal_error_state sm_state_1#define NO_STATE 0xFF#define SERVO_UNKNOWN 0xF4#define IDLE 0x10#define SERVO_INIT 0x20#define SERVO_INIT_FOR_NEW_DISC 0x30#define SERVO_START 0x40#define FE_ADJUST 0x41#define START_TTM 0x42#define FOCUS_CLOSING 0x43#define TE_ADJUST 0x44#define TRACK_CLOSING 0x45#define AGC_FOCUS 0x46#define AGC_TRACKING 0x47#define JUMP_TTM_CHECK 0x48#define ACCESS_CHECK 0x49#define START_JUMP 0x4A#define JUMP_CHECK 0x4B#define FOCUS_RECOVER 0x50#define HF_RECOVER 0x51#define ERASED_CD_RW_RECOVER 0x52#define TRACKING_RECOVER 0x53#define PLL_RECOVER 0x54#define TTM_RECOVER 0x55#define ACTIVE_CHECK 0x60#define SERVO_STOP 0x70#define ERROR_STATE 0x71#define FATAL_ERROR 0x80#define IDLE_ACTION 0x10#define INIT_ACTION 0x20#define INIT_FOR_NEW_DISC_ACTION 0x30#define MOVING_ACTION_1 0x40#define MOVING_ACTION_2 0x50#define MOVING_ACTION MOVING_ACTION_1#define ACTIVE_ACTION 0x60#define STOPPING_ACTION 0x70#define FATAL_ERROR_ACTION 0x80#define SERVO_ACTION_MASK 0xF0#if (DEBUG_INCLUDE_PCDEB == 1)#define short_jump_in_progress() (((servo_fsm_state == JUMP_CHECK) \ && (servo_seek_flags.field.jump_type == SHORT_JUMP)) \ || ((MC_SHORT_JUMP_FWD == current_micro_command) \ || (MC_SHORT_JUMP_BWD == current_micro_command)))#else#define short_jump_in_progress() ((servo_fsm_state == JUMP_CHECK) \ && (servo_seek_flags.field.jump_type == SHORT_JUMP))#endif#ifdef QAC_CHECK#define SRV_PRINTF(x)#else//#define SRV_PRINTF(...) DEB_PRINTF(__VA_ARGS__)#define SRV_PRINTF(...) do{}while(0)#endif#endif /* __SRVFSM_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -