⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 srvfsm.h

📁 本程序为ST公司开发的源代码
💻 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 + -