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

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

?? servo.c

?? 車載電子影音系統dvd播放系統原程序代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
//  Arguments   :   None
//  Return      :   TRUE/FALSE
//  Side Effect :
// ***********************************************************************
BIT  SERVO_Init()
{
    //LJY2.80, initialize some global variables
    bThreshold = 1;
    _dwVBThreshold = SERVO_DEFAULT_VIDEO_THRESHOLD;
    _dwABThreshold = SERVO_DEFAULT_AUDIO_THRESHOLD;

    cpinfo.bCPS_Type = 0 ;
    cpinfo.bRegionInfo = 0 ;

    // TCC276, move from SERVO_SetSectors so that the performance is better.
    // SYNC mode, STC rising edge, REQ & ACK hight active
    // disable ERROR, STC high/low width > 20ns,
    // none_SYNC , 2064 format
//    W99AV_WriteRegDW(DICR, 0x242f, 0x0);
    W99AV_WriteRegDW(DICR, 0x2423, 0x0);        // W99420
//    W99AV_WriteRegDW(DICR, 0x2421, 0x0);      // W99420
    // disable SYNC & DATA & EDC error interrupt
    W99AV_WriteRegDW(DIENR, 0x0, 0x0);
    //REQ enable & disable EDC
    W99AV_WriteRegDW(DCR, 0x1, 0x0);

//LJY0.90, remove "W99AV_DM_UDE_CDDA" setting for non-byte swap.        
//    W99AV_WriteDM (W99AV_DM_UDE_CDDA, 0) ;
    return TRUE;
}

// ***********************************************************************
//  Function    :   SERVO_OpenTray
//  Description :   Open the tray of dvd-rom
//  Arguments   :   None
//  Return      :   TRUE/FALSE
//  Side Effect :
// ***********************************************************************
//DWORD   __dwOpenCloseCheckStart = 0 ;
BYTE    __bCloseCommand = 1 ;

BIT  SERVO_OpenTray()
{
    cpinfo.bCPS_Type = 0 ;
    cpinfo.bRegionInfo = 0 ;
    gbServoRunning = FALSE ;    // TCC172r, disable servo running after open
    
    // UDE open command
    //UDE_ClearPacket () ; //LJY2.31, remove UDE_ClearPacket

    aPacket[0] = 0x00 ;     //none paramater
    aPacket[1] = UDE_COMMAND_OPENTRAY ;     //open

    if (UDE_SendUDECmd(aPacket) != TRUE)
         return ERROR;

    //__dwOpenCloseCheckStart = UTL_GetSysTimer () ;
    __bCloseCommand = 0 ;
    return TRUE;
}

// ***********************************************************************
//  Function    :   SERVO_CloseTray
//  Description :   Close the tray of dvd-rom
//  Arguments   :   None
//  Return      :   TRUE/FALSE
//  Side Effect :   None
// ***********************************************************************
BIT  SERVO_CloseTray()
{  
    //UDE_ClearPacket () ; //LJY2.31, remove UDE_ClearPacket
    aPacket[0] = 0x00 ;    // none paramater
    aPacket[1] = UDE_COMMAND_CLOSETRAY ;    // close

    if (UDE_SendUDECmd(aPacket) != TRUE)
         return ERROR;

    //__dwOpenCloseCheckStart = UTL_GetSysTimer () ;
    __bCloseCommand = 1 ;
    return TRUE ;
}

// ***********************************************************************
//  Function    :   SERVO_CheckTrayStatus
//  Description :   Used to check if cd/dvd-rom tray is closed
//  Arguments   :   None
//  Return      :   tray status
//  Side Effect :   
// ***********************************************************************
//LJY1.25, change SERVO_CheckTrayCLosed() to SERVO_CheckTrayStatus() for more general usage.
BYTE SERVO_CheckTrayStatus () 
{
    _bSERVOTmp1 = (UDE_GetStatus () & UDE_STATUS_TRAY) ;

    if (_bSERVOStatus == UDE_STATUS_COMMAND_ERROR)
    {
        return SERVO_COMMAND_FAIL ;
    }
    else
    {
        return _bSERVOTmp1;
    }
}


// ***********************************************************************
//  Function    :   SERVO_CheckTrayClosed
//  Description :   Used to check if cd/dvd-rom tray is closed
//  Arguments   :   None
//  Return      :   TRUE :   Tray closed
//                  FALSE :  Tray is not closed
//  Side Effect :   
// ***********************************************************************
#ifdef SUPPORT_PORTABLE_PROJECT //LJY2.37, port KCHong's code
#pragma NOAREGS // called in ISR
#pragma DISABLE // will disable all interrupt for the duration of function
#endif
BYTE SERVO_CheckTrayClosed ()
{
#ifdef SUPPORT_PORTABLE_PROJECT
    // TCC172, must check if command fail.
	if(__bTopInitial)
		{
		__bTopOpen=FALSE;
		return TRUE;
		}
 //  Modified for portable, begin, KCHong, 20031117
    __bTopOpen =__sbInSwitch;

    if(__bTopOpen)
        return FALSE;
    else
        return TRUE;
// Modified for portable, end, KCHong, 20031117
#endif
	return FALSE;
}











// ***********************************************************************
//  Function    :   SERVO_GetDiscStatus
//  Description :   Used to check if there's title in dvd-rom.
//                  Will check if tray is closed first.
//  Arguments   :   pStatus : Not used
//  Return      :   SERVO_HAVEDISC : Have disc in tray
//                  SERVO_NODISC : No disc in tray
//  Side Effect :   If return SERVO_NODISC, maybe due to some command fail rather than really no disc.
// ***********************************************************************
BYTE SERVO_GetDiscStatus(PBYTE pStatus)
{    
//LJY1.25, no need.
#if 0
    // TCC274, if from H/W booting we will do once time to avoid detect as NO_DISC.
    if (__bBootFromHW)
    {
#ifndef COUNTING_BY_LOOP
        _dwSERVOCnt1 = UTL_GetSysTimer() ;
        while (1)
        {
            // check if IR keys pressed
            //LJY1.21, use UTL_QueryCapability() instead of "if ( ( __bISRKey == KEY_OPEN_CLOSE ) || (__bISRKey==KEY_POWER) )"               
            if(UTL_QueryCapability(QUERY_ABORT_MAINFLOW))
            {
                __bSERVOErrMsg = SERVO_ERROR_USERABORT ;
                return SERVO_NODISC ;
            }
            if (SERVO_CheckTrayStatus () == TRAY_CLOSED)
            {
#if defined(_DEBUG_INFO) && defined(SERIAL_DEBUG)
                printf ("\nTray Closed !\n") ;
#endif
                break ;
            }
            // TCC161, check if dvdrom tray opened by outer forces.
            if ((UTL_GetSysTimer() - _dwSERVOCnt1) >= COUNT_5_SEC)
            {
                return SERVO_NODISC ;
            }
        }
#else
        _dwSERVOCnt1 = 0 ;
        while (_dwSERVOCnt1++ < LOOP_COUNT)
        if (SERVO_CheckTrayStatus () == TRAY_CLOSED)
        {
#ifdef SUPPORT_PRINTF
            printf ("Tray Closed !\n") ;
#endif
            break ;
        }
#endif
        // wyc.274j-2-nodisc, set this vairable to FLASE to make next time will not do this function here again.
        __bBootFromHW = FALSE;
    }
#endif    
    // TCC019, move to here
    if (!_WaitStable (WAITSTABLE_SHOW_INFO))
    {
        //LJY1.05, wiatstable failed amy caused by time-out or no disc
		if(__bSERVOErrMsg == SERVO_ERROR_NODISC)
			return SERVO_NODISC;
		else if(__bSERVOErrMsg == SERVO_ERROR_USERABORT) //LJY1.05-2, add the judgement of user abort(IR key)
		    return SERVO_USER_ABORT;
		else if(__bSERVOErrMsg == SERVO_ERROR_LOADDISC)  //LJY1.25, support opentray when servo fails to close tray.
		    return SERVO_LOADDISC_FAILED;
		else 
            return SERVO_WAITSTABLE_TIMEOUT ;        
    }
    else
        return SERVO_HAVEDISC;
}

// ***********************************************************************
//  Function    :   SERVO_ReadTOC
//  Description :   [To DVD title]
//                      - Read Copy Information and read disc key if css protected.
//                  [To Other Title]
//                  Read TOC and store to External memory
//                  Force the CD-module to read the TOC of the CD
//                  The CD-Module pass all track info .This track info
//                  consist of TRACK NUMBER , CONTROL & ADDRESS,
//                  ABSOLUTE START TIME (min:sec:frame)
//  Arguments   :   total session (No-use now)
//  Return      :   TRUE/FALSE
//  Side Effect :
// ***********************************************************************
BIT SERVO_ReadTOC(BYTE TotalSession)
{
    BYTE    bLength, bSession_end, bTrackLastSession; // LJY275, for multisession
    BYTE    bRxd, bNum ;
    extern DWORD   __dwTimeTorelence;   // TCC171, for cdrom decoding torelence time

    _bSERVODiscType = DISC_TYPE_DVD;
    _bDMASector = 64 ;
    __bCurrentIF=BITSTREAM_DVDIF ;
    __bServoAutoCtrl=TRUE;  // TCC171
    __dwTimeTorelence = 0 ;
    // TCC1.73, initial __dwSectorLastSession to 0. Or dvd will fail after playing the Polydor CDDA title(Start position of 1st track in not 0)
    __dwSectorLastSession = 0 ; 
    _bLastSession = 0; //LJY275, for multisession

    // TCC277, set default SCMS
    cpinfo.bCGMS = SERVO_CGMS_NONE ;
    W99AV_WriteDM (W99AV_DM_SCMS, 1) ; // No copyright restriction for non-CSS title
    
    //UDE_ClearPacket () ; //LJY2.31, remove UDE_ClearPacket
    aPacket[0] = 0x00;  // paramater length is 0
    aPacket[1] = UDE_COMMAND_GETDISCTYPE ;  // UDE : GetDiscType Command

    //use have return function
    if (!UDE_SendUDECmd(aPacket))
    {
        return ERROR;
    }
    if (_bUDEData[0]==0x02)
    {
         // CD title
#ifdef SUPPORT_PRINTF         
         printf("\nCD Type Title ");
#endif         
        goto TocRead ;
    }
    else if (_bUDEData[0] != 0x01)
    {
        // No Valid Disc Type title
#ifdef SUPPORT_PRINTF         
        printf("\nNo Valid Disc Type (%x) ",_bUDEData[0]);        
#endif         
         return ERROR;
    }

    //DVD title
#ifdef SUPPORT_PRINTF         
    printf("\nDVD Title ");
#endif         
    if(!SERVO_ReadCopyInfo())
    {
#ifdef SUPPORT_PRINTF      
        printf ("Read Copy Info. Fail !\n") ;
#endif
    }
#ifdef SUPPORT_PRINTF  
    else
    {
        int i, j ;

        printf ("CPS Type = %u\n", cpinfo.bCPS_Type) ;
        printf ("Region [") ;

        i = 1 ;
        for (j=1;j<7;j++)
        {
            if (!(cpinfo.bRegionInfo & i))
                printf ("%d, ", j) ;
                i<<=1 ;
        }
        printf ("]\n") ;
    }
#endif
    if (cpinfo.bCPS_Type)   // CSS Title
    {
//        SERVO_ReadDiscKey ();
        if (!SERVO_ReadDiscKey ())
        {
#ifdef SUPPORT_PRINTF          
            printf ("Read Disc Key fail !\n") ;
#endif            
            return FALSE ;
        }
// Added by Chern Shyh-Chain, 08-30-2001, BEGIN
        // Reinitialize the variables for title key store when a new DVD title was inserted.
        for( _bSERVOTmp2 = 0; _bSERVOTmp2 < MAX_TITLE_KEY_NUM; _bSERVOTmp2 ++ )
        {
            _TitleKeyCopyInfoStore[_bSERVOTmp2].dwTitleKey32Bit = NULL_TITLE_KEY;
            _TitleKeyCopyInfoStore[_bSERVOTmp2].bTitleKey8Bit = NULL_TITLE_KEY;
        }
        _CurrentTitleKeyCopyInfo.dwTitleKey32Bit = NULL_TITLE_KEY;
        _CurrentTitleKeyCopyInfo.bTitleKey8Bit = NULL_TITLE_KEY;
// Added by Chern Shyh-Chain, 08-30-2001, END    
    }
#ifdef SUPPORT_PRINTF    
    printf ("Disc Type is DVD\n") ;
#endif    
    return TRUE;

TocRead:
    //VCD
#ifdef SUPPORT_PRINTF  
    printf("\nInto TOC ...");
#endif    
    _bSERVODiscType = DISC_TYPE_VCD;
    // LLY.273, change the desired IRAM extension code -- CSS
//    UCODE_LoadCode(UCODE_IRAMEXT, UCODE_IRAMEXT_OGT); //LJY1.24a, unnecessary.

    _dwDiscKey [0] = 0 ;    // TCC276, reset value
//LJY1.00, share TOC buffer with servo
#ifndef TOC_SHARE
    _trk_TOC = (TRKINFO*)&__bPool [LENGTH_SHAREPOOL-512] ;
#endif
    _sessioninfo_TOC = (SESSIONINFO*) &__bPool [LENGTH_SHAREPOOL-512 -600] ; // LJY275, for multi-session
    _bDMASector = 32 ;
    // TCC170, w99420 use cdif when not dvd title

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品v国产精品v日韩精品 | 91麻豆精品久久久久蜜臀| 懂色av一区二区三区免费看| 蜜桃视频第一区免费观看| 偷拍一区二区三区四区| 日日摸夜夜添夜夜添精品视频| 亚洲在线观看免费视频| 日本午夜精品一区二区三区电影| 久久国产婷婷国产香蕉| 国产成人综合在线| 色屁屁一区二区| 欧美精品乱人伦久久久久久| 精品福利在线导航| 亚洲人成网站精品片在线观看| 日本午夜精品视频在线观看| 懂色av一区二区夜夜嗨| 91精品视频网| 中文字幕佐山爱一区二区免费| 香蕉乱码成人久久天堂爱免费| 国产揄拍国内精品对白| 欧美日韩国产另类一区| 欧美激情在线观看视频免费| 免费观看日韩电影| 欧美欧美欧美欧美| 亚洲免费资源在线播放| 九色综合狠狠综合久久| 欧美日韩在线综合| 综合av第一页| 成人福利电影精品一区二区在线观看| 欧美日韩免费高清一区色橹橹| 国产精品久久三| 成人午夜视频在线观看| 国产日韩欧美精品一区| 国产一区二区在线影院| 久久久精品日韩欧美| 韩日欧美一区二区三区| 久久嫩草精品久久久精品一| 蓝色福利精品导航| 2017欧美狠狠色| 国产成人av一区二区三区在线观看| 欧美一区二区三区男人的天堂| 丝袜美腿亚洲一区二区图片| 88在线观看91蜜桃国自产| 天天做天天摸天天爽国产一区 | 亚洲精品伦理在线| 欧美日韩视频一区二区| 美女视频一区在线观看| 日韩午夜精品视频| 丰满岳乱妇一区二区三区| 亚洲精品国产a久久久久久| 欧美日韩国产成人在线免费| 精品综合久久久久久8888| 国产精品妹子av| 欧美日韩亚洲不卡| 成人手机电影网| 午夜精品福利在线| 国产欧美综合色| 4438x亚洲最大成人网| 国产麻豆精品95视频| 亚洲成av人影院在线观看网| 日韩欧美国产综合| 在线看日本不卡| 成人av午夜电影| 国产专区欧美精品| 天天综合网天天综合色| 亚洲乱码精品一二三四区日韩在线| 欧美一区二区成人6969| 欧洲在线/亚洲| av资源网一区| 国产高清亚洲一区| 国产在线国偷精品产拍免费yy| 亚洲精品少妇30p| 中文成人av在线| 国产精品无遮挡| 国产精品久久精品日日| 国产精品区一区二区三| 久久久久久久久久久电影| 日韩精品最新网址| 91精品久久久久久久91蜜桃| 欧美性xxxxx极品少妇| 欧美区视频在线观看| 欧美少妇性性性| 欧美精品乱人伦久久久久久| 在线观看日韩av先锋影音电影院| 91丨国产丨九色丨pron| 在线亚洲免费视频| 欧美理论在线播放| 欧美成人精品1314www| 亚洲最新在线观看| 性久久久久久久| 国产乱淫av一区二区三区 | 精品国产91九色蝌蚪| 中文文精品字幕一区二区| 最新不卡av在线| 爽好久久久欧美精品| 久久精品噜噜噜成人av农村| 成人精品视频一区| 欧洲精品在线观看| 国产欧美精品一区二区色综合朱莉| 国产精品国产三级国产三级人妇 | 91麻豆精品国产91| 久久久亚洲午夜电影| 亚洲一区在线看| 国产精品一区二区在线观看不卡 | 亚洲欧美影音先锋| 一区二区三区精密机械公司| 日本系列欧美系列| 91蝌蚪国产九色| 精品少妇一区二区三区日产乱码| 中文字幕一区二区5566日韩| 久久精品72免费观看| 欧美精品在线一区二区三区| 久久精品免费在线观看| 免费成人你懂的| 欧美日本在线看| 亚洲一区在线观看免费观看电影高清| 成人一级片网址| 国产女主播一区| 岛国av在线一区| 久久综合久色欧美综合狠狠| 五月婷婷激情综合| 欧美伊人精品成人久久综合97| 精品免费视频一区二区| 轻轻草成人在线| 欧美日本免费一区二区三区| 亚洲主播在线播放| 欧美视频一区二区在线观看| 亚洲丰满少妇videoshd| 欧美美女一区二区在线观看| 亚洲一区在线观看网站| 69堂亚洲精品首页| 日本aⅴ免费视频一区二区三区 | 天天操天天综合网| 日韩一区二区在线观看视频| 韩国精品主播一区二区在线观看 | 91啦中文在线观看| 亚洲大型综合色站| 欧美本精品男人aⅴ天堂| 国产91精品欧美| 亚洲欧美区自拍先锋| 91精品免费观看| 99久久久无码国产精品| 亚洲成人资源网| 久久综合九色综合97婷婷女人| 大白屁股一区二区视频| 日本亚洲一区二区| 国产精品色在线| 欧美图片一区二区三区| 国产成人在线视频网址| 亚洲综合视频在线| 国产精品久久久久久久久免费丝袜| 欧洲在线/亚洲| 成人中文字幕在线| 日韩福利视频网| 亚洲美女精品一区| 国产亚洲欧美色| 91麻豆精品国产91久久久更新时间 | 国产九色sp调教91| 日本亚洲最大的色成网站www| 午夜精品123| 亚洲免费观看视频| 国产视频亚洲色图| 2024国产精品视频| 欧美大白屁股肥臀xxxxxx| 色狠狠一区二区三区香蕉| 成人综合婷婷国产精品久久免费| 午夜成人免费视频| 亚洲午夜久久久| 婷婷久久综合九色综合绿巨人| 亚洲图片激情小说| 一区二区三区电影在线播| 国产精品久久三区| 亚洲成人在线网站| 美美哒免费高清在线观看视频一区二区| 亚洲欧美一区二区三区国产精品 | 成人av在线资源| 欧美少妇性性性| 6080国产精品一区二区| 欧美一区二区三区人| 欧美成人aa大片| 国产欧美日韩亚州综合| 欧美激情自拍偷拍| 亚洲成人久久影院| 日韩av网站在线观看| 国内精品不卡在线| 99久久免费视频.com| 欧美伦理电影网| 国产精品美女久久久久av爽李琼| 中文字幕中文在线不卡住| 亚洲精品国产a| 国产精品 欧美精品| 色哟哟在线观看一区二区三区| 91精品欧美久久久久久动漫| 久久久高清一区二区三区| 亚洲国产视频一区二区| 国产最新精品精品你懂的| 日本精品视频一区二区三区| 欧美成人性福生活免费看| 亚洲日本va午夜在线电影| 奇米888四色在线精品|