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

📄 loader.h

📁 本程序为ST公司开发的源代码
💻 H
字号:
/************************************************** * * loader.h * * CVS ID:   $Id: loader.h,v 1.18 2007/09/07 07:07:03 dellorto Exp $ * Author:   Fabio Dell'Orto [FD] - STM * Date:     $Date: 2007/09/07 07:07:03 $ * Revision: $Revision: 1.18 $ *  * Description: *  *   Main entry point for the Loader task. * *************************************************** *  * COPYRIGHT (C) ST Microelectronics  2005 *            All Rights Reserved * *************************************************** * * STM CVS Log: * * $Log: loader.h,v $ * Revision 1.18  2007/09/07 07:07:03  dellorto * Bug fixing and improvements in Tanashin loader * * Revision 1.17  2007/08/14 15:27:56  dellorto * multiple mechanisms * * Revision 1.16  2006/12/19 17:04:49  dellorto * removed unused definitions * added states for new loading transition and 8cm suspected * * Revision 1.15  2006/12/04 14:50:28  dellorto * loader improved, according to new timing specification * * Revision 1.14  2006/10/26 10:23:53  dellorto * improved alignements with Shinwa transition timings * improved protection against illegal switchings * improved handling of mechanisms with altered chuck switch * * Revision 1.13  2006/09/18 09:55:23  belardi * Corrected CVS keyword usage * * Revision 1.12  2006/09/18 09:24:22  belardi * Added Log CVS keyword into file header * * ***************************************************/#ifndef __LOADER_H#define __LOADER_H#include "srvpro.h"#include "events.h"/**************************//* IN loader switch event *//**************************/typedef uint8 t_loader_sw_event;#define  SW_EVENT            0x80#define  SW_INVALID_VAL      ((t_loader_sw_event)(~SW_EVENT))/* Ports */#define SW_INSERT_M01        (SW_1 ? 0x01 : 0x00)#define SW_EJECT_M01         (SW_2 ? 0x02 : 0x00)#define SW_STOP_M01          (SW_4 ? 0x04 : 0x00)#define SW_INSERT_M45        (SW_1 ? 0x04 : 0x00)#define SW_INSERT_M67        (SW_1 ? 0x00 : 0x04)#define SW_EJECT_M4567       (SW_2 ? 0x02 : 0x00)#define SW_STOP_M4567        (REST_SW ? 0x01 : 0x00)// M0_SHINWA_CDC02#define SW_S_000_STOP           0x00#define SW_S_001_ILLEGAL        0x01#define SW_S_010_INSERT         0x02#define SW_S_011_NOCD           0x03#define SW_S_100_TRANSITION     0x04#define SW_S_101_ILLEGAL        0x05#define SW_S_110_EJECT          0x06#define SW_S_111_8CM            0x07// M1_SHINWA_CLC01#define SW_S_000_ILLEGAL        0x00//      SW_S_001_ILLEGAL        0x01   already defined#define SW_S_010_ILLEGAL        0x02#define SW_S_011_STOP           0x03#define SW_S_100_NOCD           0x04#define SW_S_101_INSERT_EJECT   0x05#define SW_S_110_8CM            0x06#define SW_S_111_TRANSITION     0x07// M4_TANASHIN_TN2001_12CM// M5_TANASHIN_TN2001_8CM// M6_TANASHIN_TN2007_JVC// M7_TANASHIN_TN2007_BP#define SW_S_LOD_1              0x01#define SW_S_PLY_2              0x02#define SW_S_OUT_3              0x03#define SW_S_ILL_4              0x04#define SW_S_ULD_5              0x05#define SW_S_ILL_6              0x06#define SW_S_INP_7              0x07#define SW_S_PL8_8              0x08#define SW_VALUE(x)       ((x) & (~SW_EVENT))#define SW_S_NO_EVENT     (t_loader_sw_event)NO_EVENT/* disc size */typedef enum{  DISC_SIZE_UNKNOWN,  DISC_SIZE_12CM,  DISC_SIZE_8CM,  DISC_SIZE_8CM_SUSPICIOUS,  DISC_SIZE_8CM_INTERNAL} t_disc_size;/* direction constants for function ldrSetMotor */typedef enum{  LOADER_DIR_IDLE,  LOADER_DIR_INSERT,  LOADER_DIR_EJECT} t_motor_direction;/***************************//* IN loader command event *//***************************//* loader commands */typedef enum{  LC_NONE     = NO_EVENT,  LC_INIT,  LC_INSERT,  LC_EJECT,  LC_EM_EJECT} t_loader_cmd_event;typedef RETVAL t_loader_status_event;/* loader states */typedef enum{  LOADER_S_IDLE                 = 0xF0,  LOADER_S_INIT                 = 0x00,  LOADER_S_INIT_1               = 0x01,  LOADER_S_INIT_2               = 0x02,  LOADER_S_INIT_3               = 0x03,  LOADER_S_NO_CD_POSITION       = 0x10,  LOADER_S_INSERT_BY_USER       = 0x11,    LOADER_S_STOP_POSITION        = 0x20,  LOADER_S_STOP_POSITION_12CM   = 0x20,  LOADER_S_STOP_POSITION_8CM    = 0x21,  LOADER_S_INSERT_1             = 0x22,  LOADER_S_INSERT_2             = 0x23,  LOADER_S_INSERT_3             = 0x24,  LOADER_S_INSERT_4             = 0x25,  LOADER_S_INSERT_5             = 0x26,  LOADER_S_INSERT_6             = 0x27,  LOADER_S_INSERT_7             = 0x28,  LOADER_S_INSERT_8             = 0x29,  LOADER_S_INSERT_REPOSITIONING = 0x2A,  LOADER_S_NOCD_INSERTING       = 0x2B,  LOADER_S_EJECT_POSITION       = 0x30,  LOADER_S_EJECT_POSITION_12CM  = 0x30,  LOADER_S_EJECT_POSITION_8CM   = 0x31,  LOADER_S_EJECT_12CM_1         = 0x32,  LOADER_S_EJECT_12CM_2         = 0x33,  LOADER_S_EJECT_8CM_1          = 0x34,  LOADER_S_EJECT_8CM_2          = 0x35,  LOADER_S_EJECT_8CM_3          = 0x36,  LOADER_S_EJECT_8CM_4          = 0x37,  LOADER_S_EJECT_8CM_SUSPICIOUS = 0x38,  LOADER_S_EJECT_REPOSITIONING  = 0x39,  LOADER_S_EJECT_REPOSITIONING_12CM    = 0x39,  LOADER_S_EJECT_REPOSITIONING_8CM     = 0x3A,  LOADER_S_EJECT_REPOSITIONING_UNKNOWN = 0x3B,  LOADER_S_NOCD_EJECTING        = 0x3C,  LOADER_S_PUSHBACK_12CM        = 0x3D,  LOADER_S_PUSHBACK_8CM         = 0x3E,  LOADER_S_EMERGENCY_EJECT      = 0x40,  LOADER_S_ERROR                = 0x50} t_loader_state;#define LOADER_GSTATE(x)    ((t_loader_state)((x) & 0xF0))#define IS_LOADER_12CM_STOP_POSITION()   (LOADER_S_STOP_POSITION_12CM == ldr_state)#define IS_LOADER_8CM_STOP_POSITION()    (LOADER_S_STOP_POSITION_8CM == ldr_state)#define IS_LOADER_STOP_POSITION()        (IS_LOADER_12CM_STOP_POSITION() || IS_LOADER_8CM_STOP_POSITION())/* Ports */#define SW_1                 (PDA & 0x0010)   // Load Switch#ifdef BGA  #define SW_2               (PDB & 0x0020)   // 12/8 cm - Eject Switch   BGA#else  #define SW_2               (PDA & 0x0800)   // 12/8 cm - Eject Switch   TQFP#endif#define REST_SW              (PDA & 0x0100)   // Rest Switch#define SW_4                 (PDA & 0x0008)   // Chuck Switchextern t_motor_direction  ldr_motor_dir;extern t_loader_state ldr_state;void loader_fsm (void);void loader_init(void);RETVAL loader_cmd(t_loader_cmd_event* cmd_event);uint8 loader_get_state(void);void  loader_switch_init(void);void  loader_check_switch_isr(void);#define HAVE_DEBUG_LOADER_SWITCH#define HAVE_DEBUG_LOADER_STATE#define HAVE_DEBUG_LOADER_CMD#define HAVE_DEBUG_LOADER_STATUS_EVENT#ifdef HAVE_DEBUG_LOADER_SWITCH  #define DEBUG_LOADER_SWITCH(s)             DEBUG_printf(s)#else  #define DEBUG_LOADER_SWITCH(s)             do{}while(0)#endif#ifdef HAVE_DEBUG_LOADER_STATE  #define DEBUG_LOADER_STATE(s)              DEBUG_printf(s)#else  #define DEBUG_LOADER_STATE(s)              do{}while(0)#endif#ifdef HAVE_DEBUG_LOADER_CMD  #define DEBUG_LOADER_CMD(s)                DEBUG_printf(s)#else  #define DEBUG_LOADER_CMD(s)                do{}while(0)#endif#ifdef HAVE_DEBUG_LOADER_STATUS_EVENT  #define DEBUG_LOADER_STATUS_EVENT(s)       DEBUG_printf(s)#else  #define DEBUG_LOADER_STATUS_EVENT(s)       do{}while(0)#endif#endif /* __LOADER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -