📄 servo.h
字号:
/* SCCSID @(#)servo.h 4.18 11/29/04 *//* * $Log$ */#ifndef __SERVO_H__#define __SERVO_H__/* * Summary of Servo related flags (compile options as of 06/19/03). * Philips- * Toshiba Sony CD7 Matsushita Samsung SILAN * (servot.c) (servos.c) (servop.c) (servom.c) (servok.c) (servosl.c) * ---------- ---------- ---------- ---------- ---------- * TCSERVO SERVO SERVO SERVO SERVO SERVO * CXDSERVO CD7II MSERVO SAM_SRV SILAN_SERVO * (see NOTE) * * (Associated files for specific servos) * srvocore.c cdctl.c * tcservo.c dsas.c cd7.c dsas.c dsak.c dsasl.c * servot.c servos.c servop.c servom.c servok.c servosl.c * playt.c plays.c play.c plays.c plays.c plays.c * * * NOTE: depending on specific version of Sony servo used, the following * variables has to be customized in dsas.c: * cxd_version (CXD3008, CXD3068 or CXD3059) * use_shutter (1 to enable use of shutter pickup) * use_antiphase (1 to antiphase LDON and AUTOAGC) * use_dig_out (1 to enable digital mute/unmute) * * (Please feel free to add suggestions on how to make maintenance of various * servo code easier) * Comments: * PVu(8/31/01) - My suggestion for anyone modifying or adding additional * servo support, is to try to keep consistent with * the naming conventions and structure of existing * servo code, i.e. Sony. That way the higher level * API's in play?.c and dsa?.c can be shared without * too many changes. There should be no reason for * introducing different versions of play.c and dsa.c * for instance. For reasons of time and code stability, * I have not tried to unify these files at this time. * I only did the safest thing at this point, that is, to * update, document and summarize the current flags and * associated servo files for currently supported servo * targets. */#if (defined (SERVO) || defined (TCSERVO) || defined (SILAN_SERVO))#ifndef _COMMON_H_#include "common.h"#endif#ifdef MSERVO/* specific to Matsushita servo */#include "servom.h" #endif#ifdef SAM_SRV/* specific to Samsung servo */#include "servok.h" #endif#ifdef CD7II/* specific to philips servo */#include "servop.h" #endif#ifdef ESS3721#include "servoe.h"#endif#ifdef CXDSERVO#include "cxd.h"#endif/************************************************************************ * Defines for SERVO. * ************************************************************************/#define job_sledin 0x00#define job_focus 0x01#define job_clvon 0x02#define job_stop 0x03/* * Q code information */#define SUBQ_LEN 10#define SERVO_QCTRADD 0#define SERVO_QTRACK 1#define SERVO_QPOINT 2#define SERVO_QRMIN 3#define SERVO_QRSEC 4#define SERVO_QRFRAME 5#define SERVO_QZERO 6#define SERVO_QPMIN 7#define SERVO_QPSEC 8#define SERVO_QPFRAME 9/* * SERVO mode information */#ifndef CD7II#define SERVO_IDLE 0#endif#define SERVO_STOP 1#define SERVO_OPEN 2#define SERVO_CLOSE 3#define SERVO_PLAY 4#define SERVO_PAUSE 5#define SERVO_RELEASEPAUSE 6#define SERVO_RECOVER 7#define SERVO_SEARCH 8#define SERVO_TOC 9#ifdef SERVO#define FASTER 1#define OPEN_M 0x00#define STOP_M 0x01#define CUE_M 0x02#define PLAY_M 0x03#define OPEN_00 0x00#define OPEN_10 1#define UNLD_10 2#define LOAD_10 3#define SLED_10 4#define FB_STP 0x20#define FB_R_LIMIT 0x60#define FB_L_LIMIT (-0x60)#define FB_ABT 03#define F_OFF 0x00#define FCSDWN 0x02/* for SERVO_tracking_control() */#define TRK_CNTL 0x10#define AS_ON 0x08#define BRK_ON 0x04#define TG_UP 0x02 /* 0x3, set TGF_SEL1 for SERVO_trk_cntl */#define TGF_SEL1 0x01 /* TG_UP Filter Select 1 */#define TOFF_SOFF 0x20#define TOFF_SFWD 0x22#define TOFF_SREV 0x23#define TON_SOFF 0x24#define TON_SON 0x25#define A_CANCEL 0x4000#define AGC_CANCEL x38148e#define A_FOCUS 0x4700#define A_1TJF 0x48#define A_1TJR 0x49#define A_10TJF 0x4A#define A_10TJR 0x4B#define A_2NTJF 0x4C#define A_2NTJR 0x4D#define A_NTMF 0x4E#define A_NTMR 0x4F#define SET_B1 0x59#define B_1TJF 0x53#define B_1TJR 0x53#define B_10TJF 0x58#define B_10TJR 0x58#define B_30TJF 0x5B#define B_30TJR 0x5B#define B_100TJF 0x5B#define B_100TJR 0x5B#define B_NTMF 0x5B#define B_NTMR 0x5B#define D_30TJF 0x62#define D_30TJR 0x62#define D_100TJF 0x62#define D_100TJR 0x62#define CLV_STOP 0xE0#define CLV_KICK 0xE8#define CLV_BRK 0xEA#define CLV_A 0xE6#define T2WMAX 0x01#ifdef SAM_SRV#define TIMER1_INTERVAL 2 /* In msec */#else#define TIMER1_INTERVAL 10 /* In msec */#endif#define T10SECOND (10000/TIMER1_INTERVAL)#define T5SECOND (5000/TIMER1_INTERVAL)#define T4SECOND (4000/TIMER1_INTERVAL)#define T3SECOND (3000/TIMER1_INTERVAL)#define T2SECOND (2000/TIMER1_INTERVAL)#define T1_5SECOND (1500/TIMER1_INTERVAL)#define T1SECOND (1000/TIMER1_INTERVAL)#define T800MS (800/TIMER1_INTERVAL)#define T600MS (600/TIMER1_INTERVAL)#define T500MS (500/TIMER1_INTERVAL)#define T400MS (400/TIMER1_INTERVAL)#define T300MS (300/TIMER1_INTERVAL)#define T250MS (250/TIMER1_INTERVAL)#define T200MS (200/TIMER1_INTERVAL)#define T150MS (150/TIMER1_INTERVAL)#define T100MS (100/TIMER1_INTERVAL)#define T80MS (80/TIMER1_INTERVAL)#define T50MS (50/TIMER1_INTERVAL)#define T30MS (30/TIMER1_INTERVAL)#define T20MS (20/TIMER1_INTERVAL)#define T10MS (10/TIMER1_INTERVAL)#define T2MS (2/TIMER1_INTERVAL) /* TIMER1_INTERVAL == 2*/#define FOK_TIMEOUT T250MS #define GFSMUTE_TIMEOUT T30MS#define GFS_TIMEOUT T4SECOND#define SUBQ_TIMEOUT T4SECOND#define SUBQ_MP3TIMEOUT T10SECOND#endif /* SERVO */#ifdef TCSERVO#define SET_rough_search servo_flags |= 0x0001#define CLR_rough_search servo_flags &= ~0x0001#define rough_search_TRUE (servo_flags & 0x0001)#define rough_search_FALSE !(servo_flags & 0x0001)#define SET_search_flag servo_flags |= 0x0002#define CLR_search_flag servo_flags &= ~0x0002#define search_flag_TRUE (servo_flags & 0x0002)#define search_flag_FALSE !(servo_flags & 0x0002)#define SET_servo_abort servo_flags |= 0x0004#define CLR_servo_abort servo_flags &= ~0x0004#define servo_abort_TRUE (servo_flags & 0x0004)#define servo_abort_FALSE !(servo_flags & 0x0004)#define SET_servo_adj servo_flags |= 0x0008#define CLR_servo_adj servo_flags &= ~0x0008#define servo_adj_TRUE (servo_flags & 0x0008)#define servo_adj_FALSE !(servo_flags & 0x0008)#define SET_close_mode mode_flags |= 0x0001#define CLR_close_mode mode_flags &= ~0x0001#define TOG_close_mode mode_flags ^= 0x0001#define close_mode_TRUE (mode_flags & 0x0001)#define close_mode_FALSE !(mode_flags & 0x0001)#define SET_access_mode mode_flags |= 0x0002#define CLR_access_mode mode_flags &= ~0x0002#define access_mode_TRUE (mode_flags & 0x0002)#define access_mode_FALSE !(mode_flags & 0x0002)#define SET_pause_mode mode_flags |= 0x0004#define CLR_pause_mode mode_flags &= ~0x0004#define pause_mode_TRUE (mode_flags & 0x0004)#define pause_mode_FALSE !(mode_flags & 0x0004)#define SET_tray_blocked mode_flags |= 0x0008#define CLR_tray_blocked mode_flags &= ~0x0008#define tray_blocked_TRUE (mode_flags & 0x0008)#define tray_blocked_FALSE !(mode_flags & 0x0008)#define SET_in_initCD mode_flags |= 0x0010#define CLR_in_initCD mode_flags &= ~0x0010#define in_initCD_TRUE (mode_flags & 0x0010)#define in_initCD_FALSE !(mode_flags & 0x0010)/* Constants of Tray Process */#define TRAY_MOVE_TIME_LIMIT 0x200/* State of Tray Process */#define TRAY_START_OPEN 0#define TRAY_MONITOR_OPEN 1#define TRAY_START_CLOSE 2#define TRAY_MONITOR_CLOSE 3#define TRAY_FULL_OPEN 4#define TRAY_IDLE_CLOSE 5#define TRAY_IDLE 6/* Return value of Tray Process */#define TRAY_RET_wait 0#define TRAY_RET_closed 1#define TRAY_RET_opened 2#define TRAY_RET_blocked 3#define TRAY_RET_push 4/* Servo Mode */#define Mode_Focusing 0#define Mode_Tracking 1#define Mode_Monitor 2#define Mode_Stopping 3/* Return value of Servo Process */#define SERVO_RET_wait 0#define SERVO_RET_fok 1#define SERVO_RET_fng 2#define SERVO_RET_clvok 3#define SERVO_RET_clvng 4#define SERVO_RET_stopok 5#define SERVO_RET_loss 6#define SERVO_RET_Qcode 7#define SERVO_RET_int 8/* Focusing State */#define Focus_Para 0#define Focus_PickUpOut 1#define Focus_PickUpIn 2#define Focus_LDon 3#define Focus_LenDown 4#define Focus_DnDelay 5#define Focus_AccDisc 6#define Focus_Init 7#define Focus_Wait_Init 8#define Focus_Init_2 9#define Focus_Init_3 10#define Focus_Init_4 11#define Focus_Init_5 12#define Focus_Init_6 13#define Focus_Wait_FOK 14#define Focus_Wait_FOK_2 15#define Focus_recover 16/* Tracking State */#define CLV_Kick 0#define CLV_KickWait 1#define CLV_Kick_2 2#define CLV_Kick_3 3#define CLV_Kick_31 4#define CLV_Kick_32 5#define CLV_Kick_33 6#define CLV_Kick_4 7/* Monitor State */#define MON_slide 0#define MON_jump 1/* Stopping State */#define STOP_start 0#define STOP_brake_wait 1#define STOP_off 2#define STOP_idle 3/* * Q code information */#define SUBQ_LEN 10#define SERVO_QCTRADD 0#define SERVO_QTRACK 1#define SERVO_QPOINT 2#define SERVO_QRMIN 3#define SERVO_QRSEC 4#define SERVO_QRFRAME 5#define SERVO_QZERO 6#define SERVO_QPMIN 7#define SERVO_QPSEC 8#define SERVO_QPFRAME 9/* Track jump */#define J_FORWARD 1#define J_BACKWARD 0#endif TCSERVO/*===========================================================*//**************************************** * Global variables * ****************************************/#if (defined SAM_SRV || defined MSERVO )#if (defined CDG || defined CD_TEXT)GBLDEF(int SUBCODE_S0S1_OFFSET, 1);#endif#else#if (defined CDG || defined CD_TEXT)GBLDEF(int SUBCODE_S0S1_OFFSET, 0);#endif /* SAM_SRV || MSERVO */GBLDEF0(char servo_fb_ok);GBLDEF0(char servo_EF_balance_ok);GBLDEF0(char servo_AGF_ok);GBLDEF0(char servo_AGT_ok);GBLDEF0(ushort servo_ef_mem);GBLDEF0(ushort servo_fg_mem);GBLDEF0(ushort servo_tg_mem);GBLDEF0(uint servo_per_ave);#endif /* SAM_SRV */GBLDEF0(char servo_focus_drop);GBLDEF0(char servo_gfs_drop);GBLDEF0(uchar servo_pres_m);GBLDEF0(volatile short servo_sys_timer);GBLDEF(int servo_is_play, 1);/* Absolute CD time..common to Sony, Philips CD7 & Matsushita servos, * i.e. servos.c, servop.c, servom.c. */GBLDEF0(uint SERVO_cdtime); /* Pin saving option for Sony, Matsushita, Toshiba servos.. * refer to dsas.c, tcservo.c for details. */#define SHARE_OPEN 1#define SHARE_CLOSE 2EXPORT char share_open_close;EXPORT int SERVO_search_timeout;/**************************************** * Global Functions * ****************************************/#ifdef CD7IIEXPORT int SERVO_open(void);EXPORT int SERVO_close(void);EXPORT int SERVO_stop(int);EXPORT void SERVO_start_up(void);EXPORT void SERVO_host_init(void);EXPORT void SERVO_DSP_init(void);EXPORT int SERVO_set_speed(int speed);EXPORT int SERVO_search(void);EXPORT int SERVO_search_request(void);EXPORT void check_user_input(void);EXPORT void servo_jump (short JumpSize);EXPORT void RISC_start_timer1(void);#elseEXPORT void SERVO_init(void);EXPORT void SERVO_interrupt_service(void);#endifEXPORT void SERVO_service(int);EXPORT int SERVO_set_speed(int);#if (defined (CXDSERVO) || defined (MSERVO))EXPORT void SERVO_send_8X_command(unsigned int, unsigned int);EXPORT void SERVO_tracking_control(unsigned char, unsigned char);EXPORT void SERVO_fbias(void);EXPORT void SERVO_fbias_10(void);EXPORT void SERVO_fbias_20(void);EXPORT void SERVO_fbias_30(void);EXPORT void SERVO_fbias_40(void);EXPORT void SERVO_EF_balance(void);EXPORT void SERVO_efv_10(void);EXPORT void SERVO_agc(void);EXPORT void SERVO_agc_10(void);EXPORT void SERVO_agc_20(void);EXPORT void SERVO_ag_trk(void);EXPORT void SERVO_fb_dtr(void);EXPORT void SERVO_rfjsmp(void);EXPORT void SERVO_emrchk(void);EXPORT void SERVO_fcson(void);#ifdef MSERVOEXPORT ushort SERVO_read_data(int avrg);#elseEXPORT ushort SERVO_read_data(unsigned char, int);#endif EXPORT void SERVO_send_command_no_latch(int, unsigned int);#endif /* CXDSERVO || MSERVO */#ifdef CXDSERVOEXPORT void SERVO_focus_10(void);EXPORT void SERVO_focus_20(void);EXPORT void SERVO_focus_40(void);EXPORT void SERVO_focus_40_1(void);#endif#if (defined(CXDSERVO) || defined(MSERVO) || defined(SAM_SRV) || \ defined(ESS3721))EXPORT void SERVO_sledin(void);EXPORT void SERVO_focus(void);EXPORT void SERVO_schedule(void);EXPORT int SERVO_search(void);#ifdef MULTI_SESSIONEXPORT int SERVO_go_next_session(void);#endifEXPORT PFV servo_task;#endif /* CXDSERVO || MSERVO || SAM_SRV */#endif /* SERVO || TCSERVO */#endif /* __SERVO_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -