亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? servo.c

?? 車載電子影音系統dvd播放系統原程序代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:

//////////////////////////////////////////////////////////////
// ***** Big Modification History Area *****
// LLY2.80a,
//  - remove the codes while define "_ALONE",

// ** TCH0.95; define _DUMP_INFO, will show playing range setting + each play range.
/// #define     _DUMP_INFO


#include "winav.h"

// Chuan0.83b-2, Ser_420 is unnecessary if define HOSTIF
#ifndef INPUT_PATH_HOSTIF


#ifndef  SYSTEM_8051
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#endif  //#ifdef DOS_VER

#include <string.h>
// Micky2.31, reduce codes, don't use C string API
#include "ctstring.h"
#include "servo.h"
#include "w99av.h"
#include "cc.h"
#include "cdinfo.h"
#include "ucode.h"
#include "osd.h"
#include "utl.h"
#include "input.h"
#include "hal.h"  // *** LLY.0411
//LJY275e
#include "comutl.h"
#ifdef SERIAL_DEBUG
#include "sysdebug.h"
#endif
#ifdef SUPPORT_PORTABLE_PROJECT
#include "initial.h"   // Added for portable, KCHong, 20031118
#endif
//LJY1.21, remove unnecessary functions
// - Remove SERVO_ISR()       --> ISR.C
// - Remove SERVO_ResetData(), SERVO_SetSpeed(), SERVO_SetFormat(), SERVO_GetFormat(), SERVO_SetDSPMode() --> UTL.C
// - Remove SERVO_DumpSector() --> W99AV2.C
// - Remove SERVO_SetPLL_ACLK(), SERVO_ControlGPIO() --> HAL1.C

//LJY1.00, share TOC buffer with servo
// Micky1.00, must use 08152003 servo codes.
#if SW_VERSION >= 100
#define TOC_SHARE 
#endif

//LJY2.79 ** TCH2.79; begin... 
#define SUPPORT_CHECK_SERVO_STOP
#define TIME_CHECK_STOP     (COUNT_10_SEC * 6)    // Default 60 seconds
#define WAITSTABLE_TIMEOUT  (COUNT_10_SEC * 4)  // LJY1.07
// ** TCH2.79; end... 

// DVD_274Micky, add copyright. Don't remove it!!!!
BYTE    Copyright_CHEERTEK_INC_2002_SERATA;

static BYTE code aDummy;    // Chuan1.00-2, Dummy Byte
//TCC032, use this define to use loop count or timer count, by default, only dostest use loop count
#ifdef NOT_SUPPORT_TIMER
#define COUNTING_BY_LOOP
#else
#define COUNTING_BY_TIMER
#endif

#ifdef   _DUMP_INFO
static  BYTE        _bSRV_Debug;
#endif	// _DUMP_INFO


extern  DWORD       __dwSectorLastSession;      // ** DVD-TCH0.25;

// TCC046
// initial the __bCurrentIF according to current interface
// BITSTREAM_ATAPIIF, Pure ATAPI I/F
// BITSTREAM_DVDIF  , when using DVD_IF(UDE or A/V Bus)
// BITSTREAM_CDIF   , Pure CD-IF
// BITSTREAM_HOSTIF , HOST_IF
BYTE    __bCurrentIF;//=BITSTREAM_DVDIF; //LJY2.31, move to initial.c
BYTE    __bServoAutoCtrl;//=TRUE; //LJY2.80, remove inital value

// TCC036, use to do buffer control or not
BYTE    bThreshold;//=1; //LJY2.80, move to SERVO_Init(()

//LJY0.87, for reading by 4x16 sectors in SERVO_Monitor()
BYTE    _bDMATimes,_bSendSector,_bOneTimeSec, _bDMALoop;

// **********************************************************
#ifdef COUNTING_BY_LOOP
#define LOOP_COUNT              6000
#define LOOP_COUNT_START        LOOP_COUNT
#define LOOP_COUNT_WAIT         LOOP_COUNT
#define LOOP_COUNT_FINISH       LOOP_COUNT
#define LOOP_COUNT_PIO          LOOP_COUNT
#define LOOP_COUNT_TOC          LOOP_COUNT
#define LOOP_COUNT_IDENTIFY     LOOP_COUNT
#define LOOP_DMA                60000
#endif

// **********************************************************
#define ERROR           FALSE

//LJY277
extern BYTE __bModePlay;
// TCC172
BYTE    __bSERVOErrMsg;// = SERVO_ERROR_NONE ; //LJY2.80, remove inital value
// TCC274, add this variable emsure F/W will do one time SERVO_CheckTrayStatus when H/W booting. 
BYTE    __bBootFromHW ;
//WORD    Identify[256];
WORD    *Identify ;
//TRKINFO _trk_TOC[100];
TRKINFO *_trk_TOC;
//Q_CODE  VCD_Qcode[100];
BYTE    _bFirstTrack, _bLastTrack;
// LJY275, _bLastSession reserved
//BYTE    gbFirstSession;
BYTE    _bLastSession; 
// LJY275, for multi-session, gdwLeadOutPos removed
SESSIONINFO *_sessioninfo_TOC ;
// DWORD   gdwLeadOutPos;
BYTE    _bSERVODiscType  ;
//TCC019, dma sector number = 64 if dvd, 32 if vcd
BYTE    _bDMASector;// = 64 ; //LJY2.80, remove inital value
//LJY2.80, move the initial value to SERVO_Init()
DWORD   _dwVBThreshold, _dwABThreshold;
//DWORD   _dwVBThreshold = SERVO_DEFAULT_VIDEO_THRESHOLD, _dwABThreshold = SERVO_DEFAULT_AUDIO_THRESHOLD ;
//DWORD   _dwVBThreshold = 0xbf00L, _dwABThreshold = 0x25000L ;

//BYTE    gbSectorSize;
//BYTE    gbServoDSPMode, gbServoDSPFormat, gbServoDSPSpeed;
//BYTE    _DSP_Format,_Audio_CDROM_Mode ;
//BYTE    _bCDROMMin,_bCDROMSec,_bCDROMFrm;
//BYTE    _bDMAOn = FALSE ;

// TCC040, use byte rather than bit
BYTE    gbServoRunning;//=FALSE ; //LJY2.80, remove inital value
DWORD   gdwNextLBA, gdwEndLBA;
//LJY275e
BYTE _bServoGPIO;       // for GPIO read

BYTE    _bUDEData[6];
DWORD   _dwTitleKey [3], _dwDiscKey [4] ;

//BIT     _btCDROM_CDI;         // TCC276-2nd, remove this variable

//TCC025, for new DMA method, set to 1
//BOOL    _DMA_ON = 1 ;
//TCC024, add copyinfo from dvd title
COPYINFO    cpinfo ;
// TCC276, this variable will store servo status
BYTE    _bSERVOStatus ;
// TCC161, for storing input bitstream sector numbers
BYTE    _bSERVOLastSectorCnt, _bSERVOSectorReq ;
DWORD   _dwSERVOTmp, _dwSERVOCnt1, _dwSERVOCnt2 ;
BYTE    _bSERVOTmp1;//, _bSERVOTmp2 ;
// DVD_275Micky, share the same variable.
#define _bSERVOTmp2  Copyright_CHEERTEK_INC_2002_SERATA
PBYTE   _pbSERVOTmp1 ;
DWORD   _dwTimeOut ;

#ifdef SUPPORT_ANTISHOCK
//Kevin2.37, CDDA_LR
BYTE    _bSERVOPLLUnlock = FALSE;
#endif

// TCC276, define timeout value for waiting ack and result code.
#define UDE_TIMEOUT_WAITACK         COUNT_500_MSEC
#define UDE_TIMEOUT_READTOC         COUNT_10_SEC
#define UDE_TIMEOUT_NORMAL          COUNT_5_SEC 
#define READTIME_INFO               COUNT_500_MSEC //LJY1.00, for showing meeage when ReadData > 500 ms
// **********************************************************
#define UDE_COMMAND_OPENTRAY                            0x00
#define UDE_COMMAND_CLOSETRAY                           0x01
#define UDE_COMMAND_RESTARTUNIT                         0x02
#define UDE_COMMAND_GETDISCTYPE                         0x04
#define UDE_COMMAND_GETTOC                              0x05
#define UDE_COMMAND_GETLBA                              0x06
#define UDE_COMMAND_GETQSUBCHANNEL                      0x08
#define UDE_COMMAND_READCD                      0x09
#define UDE_COMMAND_READDVD                     0x0a
#define UDE_COMMAND_SCAN                        0x0b
#define UDE_COMMAND_PAUSERESUME                 0x0c
#define UDE_COMMAND_ABORT                       0x0d
//LJY278
#define UDE_COMMAND_PRESTART_SERVO             0x0f
//#define UDE_COMMAND_GETSTATUS                 0x10
#define UDE_COMMAND_GETSERVOINFO        0x10 
#define UDE_COMMAND_CONFIGURELOADER             0x11
#define UDE_COMMAND_POWERMANAGEMENT             0x12
#define UDE_COMMAND_READDISCKEY                 0x13
#define UDE_COMMAND_GETSERVODEBUGINFO                   0x17
//#define UDE_COMMAND_GETCOPYRIGHTINFORMATION 0x14
#define UDE_COMMAND_CONTROLGPIO                         0x14
// wyc.277a-2
#define UDE_COMMAND_SETPLL_ACLK                         0x18   // Add by HCC for PLL setting in servo 2002/09/09

#define GETSTATUS                                       0x10
#define GETCOPYRIGHTINFORMATION          0x14
#define GETFWVERSION                                            0x15

#ifdef SHOW_POWERON_BAR //Xuli1.07 for trigger power-on bar
extern void	OSD_TriggerPoweronBar(void);
#endif

// for GetStatus command
// TCC276, change the definition so that we don't need to read twice for different mode
#define UDE_STATUS_PLAYBACK         0x03
#define UDE_STATUS_TRAY             0x0C
#define UDE_STATUS_MEDIA            0x30
#define UDE_STATUS_QUEUE            0x40
#define UDE_STATUS_READ             0x80

#define UDE_STATUS_COMMAND_ERROR    0xff
#define UDE_PLAYBACK_STATUS_STOPPED 0x00
#define UDE_PLAYBACK_STATUS_PAUSING 0x01
#define UDE_PLAYBACK_STATUS_PLAYING 0x02
#define UDE_TRAY_STATUS_OPEN        0x00
#define UDE_TRAY_STATUS_OPENING     0x04
#define UDE_TRAY_STATUS_CLOSE       0x08
#define UDE_TRAY_STATUS_CLOSING     0x0C
#define UDE_MEDIA_STATUS_ANALYZING  0x00
#define UDE_MEDIA_STATUS_PRESENT    0x10
#define UDE_MEDIA_STATUS_NOT_PRESENT    0x20
#define UDE_MEDIA_STATUS_NOT_ANALYZED   0x30
#define UDE_QUEUE_STATUS_NOT_FULL   0x00
#define UDE_QUEUE_STATUS_FULL       0x40
#define UDE_READ_STATUS_NO_ERROR    0x00
#define UDE_READ_STATUS_ERROR       0x80
// **********************************************************
//UDE : get UDE status : (pASCQ: bit 1-0, pASC: bit3-2, pSense: bit5-4)
BYTE UDE_GetStatus(void);
BIT UDE_StartCommand();
BIT UDE_WaitPacket();
extern void UDE_SendPacket(PBYTE pData);
extern PBYTE UDE_WaitRetData(BYTE data_count);  
extern void Service_420(void);
extern BIT INIT_420_2(void);
BYTE UDE_WaitCmdFinish();  //UDE: Read RXD data              //UDE RXD data catch OK
BYTE UDE_ReadData(BYTE *pData, BYTE wArrayLen);
BIT UDE_SendUDECmd(PBYTE pPacketData) ;
//void UDE_ClearPacket (void) ; //LJY2.31, remove UDE_ClearPacket

// **********************************************************
BIT  SERVO_ReadData(DWORD dwStartLBA, WORD wSectorNum);
BIT  _WaitStable (BYTE bShowStatus) ;
//LJY0.87b
BIT _CSS_SentDiscKey () ;
void _CSS_SentTitleKey () ;
///void _HSGtoMSF(DWORD hsgTime) ;
///DWORD _MSFtoHSG(BYTE bMin, BYTE bSec, BYTE bFrm) ;
//BYTE _BCDtoDec (BYTE bBCD) ;
// **********************************************************
// **********************************************************
// define [0]: UDE command code
// define [1]: UDE paramater length (UDE max_length is : 10)
// define [2]~[11]: paramater value
BYTE aPacket [12]; // ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} ; //LJY2.80, remove inital value
BYTE __bServoRevision [5] ;

// Added by Chern Shyh-Chain, 08-30-2001, BEGIN
// Define the structure to keep the title key (40 bit) and relative copyright information
typedef struct  tagTITLE_KEY_COPY_INFO_LOG
{
    DWORD   dwTitleKey32Bit;    // Keep the 32/40 Title Key
    BYTE    bTitleKey8Bit;      // Keep the 8/40 Title Key
    COPYINFO    CopyInfo;       // Keep the relative Copyright Information
} TITLE_KEY_COPY_INFO_LOG, *PTITLE_KEY_COPY_INFO_LOG;

// Record the multiple title keys and copyright information for special title.
// The maximum title keys can be recorded is defined by MAX_TITLE_KEY_NUM (cdinfo.h).
TITLE_KEY_COPY_INFO_LOG _TitleKeyCopyInfoStore[MAX_TITLE_KEY_NUM];

// Keep cuurent title key and copyright information.
TITLE_KEY_COPY_INFO_LOG _CurrentTitleKeyCopyInfo;

#define NULL_TITLE_KEY      0  // This is a empty title key value
// Added by Chern Shyh-Chain, 08-30-2001, END

// ***********************************************************************
//  Function    :   SERVO_Reset
//  Description :   Will do nothing for ude dvdrom
//  Arguments   :   None
//  Return      :   TRUE/FALSE
//  Side Effect :
// ***********************************************************************
BIT  SERVO_Reset(BYTE bShowBar)
{
    // LJY1.02, disable service 420 during reset
    {
        extern BIT INIT_420_1(void);
        // suspend 420's main flow. Only can be released after 420 initial OK.
        INIT_420_1();
    }

    // wyc.278, re-arrange the SERVO_Reset method in different system.
    gbServoRunning = FALSE ;        // TCC275c, disable servo running.
    W99AV_WriteRegDW (PCR, __wW99AVPCRLow|0x01, __wW99AVPCRHigh) ;
    UTL_DelayTime (COUNT_100_MSEC, 1) ;
    W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;  

//LJY1.00, share TOC buffer with servo
    #ifdef TOC_SHARE
    _trk_TOC = (TRKINFO*)&__bPool [LENGTH_SHAREPOOL-512] ;   
    #endif
//LJY1.02, init 420 may(D500 report) fail, try 5 more times.   
    for(_bSERVOTmp1=0; _bSERVOTmp1<5; _bSERVOTmp1++)
    {
#ifdef _DEBUG_INFO
        printf("\n INIT servo 420 %hx", _bSERVOTmp1);
#endif                
        if(INIT_420_2())               // Rick, call 420 F/W init routine    
        {
            _bSERVOTmp1 = 0;
            break;
        }
    }
#ifdef _DEBUG_INFO
    if(_bSERVOTmp1 != 0)
    {
        printf("\n INIT servo 420 failed !!");
    }
#endif        

//LJY1.07, for loading status bar display
#ifdef SHOW_POWERON_BAR
    if(bShowBar)
    {
        _bSERVOTmp1 = WAITSTABLE_SLEDGE_SHOW_BAR;
    }
    else
#endif        
    {
        _bSERVOTmp1 = WAITSTABLE_SLEDGE;
    }
    //LJY0.95, wait for servo finish sledge-in state, otherwise the pick-up behavior would be abnormal.
    if(!_WaitStable(_bSERVOTmp1))
        return FALSE;
    return TRUE;
}


// ***********************************************************************
//  Function    :   SERVO_Init
//  Description :   Will do configure loader command

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本一区二区三区| 精品国免费一区二区三区| 奇米在线7777在线精品| 国产精品久久久久桃色tv| 日韩欧美在线综合网| 色88888久久久久久影院按摩| 老汉av免费一区二区三区| 亚洲欧美日韩综合aⅴ视频| 久久蜜桃av一区二区天堂| 欧美日韩国产三级| 91免费看`日韩一区二区| 国产一区二区中文字幕| 免费不卡在线视频| 亚洲国产精品一区二区尤物区| 国产精品久久午夜夜伦鲁鲁| 26uuu亚洲婷婷狠狠天堂| 91精品国产综合久久精品| 欧美午夜片在线观看| 99久久综合国产精品| 成a人片亚洲日本久久| 国产乱理伦片在线观看夜一区| 青椒成人免费视频| 午夜精品一区二区三区电影天堂| 亚洲精品亚洲人成人网在线播放| 国产精品污www在线观看| 欧美精品一区在线观看| 日韩精品一区二区三区蜜臀| 这里只有精品视频在线观看| 欧美日韩综合一区| 亚洲欧美日韩中文字幕一区二区三区| 精品999在线播放| 精品少妇一区二区三区在线视频| 欧美日韩午夜精品| 欧美日韩国产乱码电影| 欧美视频三区在线播放| 精品视频免费看| 91精品中文字幕一区二区三区| 欧美日韩免费电影| 欧美乱妇一区二区三区不卡视频| 欧美精品高清视频| 日韩三级在线观看| 欧美电影免费提供在线观看| 久久免费的精品国产v∧| 欧美韩日一区二区三区四区| 中文字幕一区二区三| 亚洲欧美日韩一区二区| 一区二区三区在线免费观看| 亚洲自拍另类综合| 婷婷成人激情在线网| 日本aⅴ免费视频一区二区三区| 美腿丝袜亚洲三区| 国内精品伊人久久久久av一坑| 国产成人亚洲综合a∨婷婷| 成人黄色国产精品网站大全在线免费观看 | 久久99热99| 国产精品一线二线三线| 99久久精品国产一区| 精品视频免费在线| 欧美精品一区二区蜜臀亚洲| 中文字幕的久久| 亚洲欧美区自拍先锋| 日精品一区二区| 国产精品性做久久久久久| 波波电影院一区二区三区| 欧美午夜影院一区| 久久夜色精品一区| 亚洲人成网站精品片在线观看 | 日本vs亚洲vs韩国一区三区二区 | 91视视频在线直接观看在线看网页在线看| 91香蕉视频污| 欧美一区二区三区不卡| 久久久久久久久久久久电影| 亚洲乱码国产乱码精品精的特点| 一区二区三区欧美久久| 韩国精品在线观看| 日本久久一区二区三区| 久久网站热最新地址| 亚洲自拍偷拍九九九| 国产精品亚洲一区二区三区在线| 91精品办公室少妇高潮对白| 日韩三级视频中文字幕| 亚洲美女电影在线| 精品亚洲欧美一区| 色久综合一二码| 精品国产区一区| 亚洲女人的天堂| 国产精品自拍毛片| 欧美日韩亚洲高清一区二区| 日本一区二区视频在线| 丝袜脚交一区二区| 91论坛在线播放| www激情久久| 日本伊人午夜精品| 色综合中文字幕国产 | 久久青草欧美一区二区三区| 亚洲精品一卡二卡| 粗大黑人巨茎大战欧美成人| 这里只有精品免费| 亚洲精品国产精华液| 丁香亚洲综合激情啪啪综合| 7777精品伊人久久久大香线蕉的| 国产精品久久久久婷婷| 国产一区二区不卡老阿姨| 欧美日韩国产综合草草| 亚洲乱码一区二区三区在线观看| 国产一区二区美女| 日韩欧美成人激情| 天天操天天综合网| 91在线视频免费观看| 国产色综合一区| 麻豆精品国产传媒mv男同| 欧美日韩国产经典色站一区二区三区| 国产精品久久久久久户外露出 | 欧美性猛交xxxx乱大交退制版 | 成人开心网精品视频| 精品国产免费人成电影在线观看四季| 亚洲成人激情自拍| 在线看国产一区| 亚洲免费观看高清完整版在线| 国产成人激情av| 久久精品一级爱片| 国产一区二区电影| 国产日韩欧美电影| 国产成人精品免费看| 国产亚洲综合av| 国产精品中文字幕日韩精品 | 成人午夜视频在线| 国产丝袜欧美中文另类| 国产一区二区福利视频| 国产亚洲一区二区三区在线观看| 麻豆精品久久久| 久久午夜电影网| 国产成人av资源| 国产精品私人自拍| 99视频有精品| 亚洲欧美激情在线| 99久久婷婷国产综合精品| 亚洲欧美国产高清| 91行情网站电视在线观看高清版| 亚洲一区二区三区三| 3atv在线一区二区三区| 久久精品国产久精国产爱| 久久午夜羞羞影院免费观看| 粉嫩一区二区三区性色av| 国产精品嫩草久久久久| 一本在线高清不卡dvd| 亚洲动漫第一页| 日韩欧美一区二区不卡| 国产一区二区三区综合| 亚洲一二三四在线| 91精品国产入口| 国产一区二三区| 日韩理论片一区二区| 在线欧美日韩国产| 免费成人结看片| 日本一区二区电影| 色婷婷久久久亚洲一区二区三区| 性欧美疯狂xxxxbbbb| 精品久久久久久久久久久久久久久久久 | 亚洲欧美一区二区三区国产精品| 色香色香欲天天天影视综合网| 亚洲一级二级在线| 精品日韩在线一区| 成人精品视频一区二区三区尤物| 亚洲日本在线a| 欧美一级日韩免费不卡| 国产不卡在线一区| 亚洲一区二区精品久久av| 精品av综合导航| 91九色最新地址| 国产在线精品一区二区三区不卡| 国产精品美女久久福利网站| 在线视频综合导航| 国内精品伊人久久久久av一坑 | 国产一区二区三区最好精华液 | 久久99国产精品久久99果冻传媒| 国产欧美一区二区精品秋霞影院 | 欧美色老头old∨ideo| 国产老肥熟一区二区三区| 亚洲综合偷拍欧美一区色| 精品少妇一区二区三区在线播放| av一区二区三区四区| 蜜臀av一区二区三区| 中文字幕亚洲欧美在线不卡| 欧美一区二区三区在线电影| 99久久精品国产一区| 久久精品国产99| 亚洲综合图片区| 国产精品久久久久久福利一牛影视| 欧美一级一区二区| 色一区在线观看| 成人高清视频在线| 精品一区免费av| 亚洲国产精品影院| 最新国产成人在线观看| 精品国产电影一区二区| 欧美精品粉嫩高潮一区二区| 色婷婷久久99综合精品jk白丝| 国产电影一区在线| 老色鬼精品视频在线观看播放|