📄 drv_dsp_focusserch.c
字号:
/******************************************************************************/
/* [NAME] :Drv_DSP_FocuSerch.c */
/* [OUTLINE]: */
/* [HISTORY]: */
/* [NOTE] :TAB=4 */
/******************************************************************************/
//#include <machine.h> /* Z80梡 */
#include "BU18703.h" /* CPU儗僕僗僞掕媊 */
#include "prototype.h"
#include "extern.h"
#include <string.h>
/*----------------------------------------------------------------------------*/
//偙偺僼傽僀儖偺拞梡僌儘乕僶儖
/*============================================================================*/
/* static */
/*============================================================================*/
static UINT08 u08_scc_FocusEngin; //僼僅乕僇僗僒乕僠幚峴晹偺俽俠俠
static UINT08 u08_num_FocusRetry; //僼僅乕僇僗僒乕僠偺儕僩儔僀僇僂儞僞
/*----------------------------------------------------------------------------*/
//Sxxx 20041029慡柺彂姺
// 懠儌僕儏乕儖偲偺桪愭弴埵傗丄奺僞僀儈儞僌傪惢昳斉儗儀儖偵偡傞丅
// gu08_kind_gain偺埖偄偵 栤戣桳傝丅
//
// gu08_kind_Gain 帺摦挷惍嵪傒偺僎僀儞愝掕
// gu08_kind_Gain_Focus 僼僅乕僇僗崌徟帪偺僎僀儞
// gu08_servo_status bit0 0:focus off / 1:focus on
//
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_FocusSearch */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void DrvDSP_FocusSearch( void )
{
switch (gu08_scc_FocusSearch )
{
case 1:
DrvDSP_FocusSearch1( ); //梫媮庴晅丅懠桪愭儌僕儏乕儖偺廔椆懸偪|->儗乕僓乕僆儞乣儗乕僓乕埨掕懸偪僞僀儅乕奐巒
break;
case 2:
DrvDSP_FocusSearch2( ); //儗乕僓乕埨掕懸偪|->俥僒乕僠奐巒梫媮
break;
case 3:
DrvDSP_FocusSearch3( ); //俥僒乕僠幚峴
break;
case 100: //Error Recover擖傝岥
DrvDSP_FocusSearch100( ); //俥僒乕僠幚峴奐巒for僄儔乕儕僇僶儕乕
break;
}
return;
}
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_FocusSearch1 */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void DrvDSP_FocusSearch1( void )
{
if( gu08_sts_MovePickupIn == 0 )
{ //SLED堷崬偺曽偑桪愭搙崅偄丅堷崬姰椆懸偪丅
//YTC002 if( toc_f == 0 )
if((toc_f == 0) && (gu08_sts_ReadTOC == 0)) //YTC002 20041226 TOC/multi-session夝愅拞偵僄儔乕儕僇僶儕乕偵擖傞偲丄僎僀儞愗傝懼傢偭偰偟傑偆
{ //帺摦挷惍枹 丒丒丒俠俢僎僀儞偐傜僼僅乕僇僗僒乕僠奐巒
gu08_kind_Gain = 0; //gain=CD
SetGainWithOffset( gu08_kind_Gain ); //僎僀儞偺愝掕偲偦偺僆僼僙僢僩挷惍寢壥傪俢俽俹偵
}
else
{ //帺摦挷惍嵪傒 丒丒丒focus_serch姰椆帪偺僎僀儞愝掕
// YTC008 20050110
if( gu08_kind_Gain_Focus == 0x02 && gu08_kind_Gain == 0x00 )
{
// F.Search帪 X5, 挷惍屻 X1
DrvDSP_BIOS_WriteReg( 0x9A,DSP_9A_INIT ); // FG 0dB
// gu08_kind_Gain_Focus =0x01; // for X3 TEST
}
SetGainWithOffset( gu08_kind_Gain_Focus ); //gain=僼僅乕僇僗僒乕僠姰椆帪偺僎僀儞
//STOP->PLAY偺僼僅乕僇僗僒乕僠偼丄僒乕僠帪偺僎僀儞偲PLAY帪偺僎僀儞愗傝懼偊傞
}
gu08_timer_WaitLaser = TIME_LASER_FOCUS;
DrvDSP_BIOS_Laser_On(); //LASER on
//B0003 DrvDSP_BIOS_MMute2_Off( ); //MMUTE2 夝彍 F&T傾僋僠儏僄乕僞宯
u08_num_FocusRetry = 0; //
gu08_scc_FocusSearch = 2; //
gu08_TimerAdjustSub = 0; //YTC00G 20050127 focus with CLVkick
}
return;
}
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_FocusSearch2 */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void DrvDSP_FocusSearch2( void )
{
if( gu08_timer_WaitLaser == 0 )
{
u08_scc_FocusEngin = 1; //
gu08_scc_FocusSearch = 3; //
}
return;
}
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_FocusSearch3 */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void DrvDSP_FocusSearch3( void )
{
if((gu08_TimerAdjustSub == 0) && ((gu08_servo_status & B10000000 )!=0))
{
gu08_servo_status &= ~B10000000; //偗傝崬傒拞僼儔僌僋儕傾
DrvDSP_BIOS_WriteReg( 0x88, Tbl_SP_HIGHT_SLOW[gu08_Mech] ); // Kick Hight
}
// focus_engin( ); //壓埵儌僕儏乕儖屇弌
if( u08_scc_FocusEngin == 0 )
{ //
if( ( gu08_servo_status & B00000001 ) != 0 )
{ //惓忢廔椆
//YTC002 if( toc_f == 0 )
if((toc_f == 0) && (gu08_sts_ReadTOC == 0)) //YTC002 20041226 TOC/multi-session夝愅拞偵僄儔乕儕僇僶儕乕偵擖傞偲丄僎僀儞愗傝懼傢偭偰偟傑偆
{ //僼僅乕僇僗僒乕僠帪偺僎僀儞愝掕傪婰壇
gu08_kind_Gain_Focus = gu08_kind_Gain;
DrvDSP_BIOS_WriteReg( 0xF2, DSP_FZC_FIX ); //YTC00B 20050114 No.414
}
else
{ //帺摦挷惍屻偺僎僀儞愝掕偵愗懼
SetGainWithOffset( gu08_kind_Gain ); //
DrvDSP_BIOS_WriteReg( 0x9A,gu08_AdjResult[0xA - 8] ); // +3dB峫椂嵪傒 // YTC008 20050110
}
gu08_scc_FocusSearch = 0; //
}
else
{ //not惓忢廔椆
u08_num_FocusRetry++;
// DrvDSP_BIOS_WriteReg( 0xC8, DSP_C8_INIT); //俥僒乕僠崅偝傪僋僀僢僋亅亜捠忢偵栠偡
DrvDSP_BIOS_WriteReg(0xC8, Tbl_F_SEARCH[gu08_Mech] ); //俥僒乕僠崅偝傪僋僀僢僋亅亜捠忢偵栠偡 // YTC004 20041231
if( u08_num_FocusRetry > 0x03 )
{ //係夞嬻怳傝丅偁偒傜傔
DrvDSP_BIOS_Laser_Off(); //LASER off
//B0003 DrvDSP_BIOS_MMute2_On( ); //MMUTE2 on
gu08_scc_FocusSearch = 0; //
// gu08_kind_Gain = NO_DISC; //Sxxx 偙傟偼僟儊偩傛丅
//YTC00G 20050127
gu08_servo_status &= ~B10000000; //偗傝崬傒拞僼儔僌僋儕傾
DrvDSP_BIOS_Clv_Off(); //
}
else if( u08_num_FocusRetry == 0x02 )
{ //嬻怳傝俀夞丅俁夞栚偐傜偼俠俢俼倂僎僀儞偱俥僒乕僠
//YTC002 if( toc_f == 0 )
if((toc_f == 0) && (gu08_sts_ReadTOC == 0)) //YTC002 20041226 TOC/multi-session夝愅拞偵僄儔乕儕僇僶儕乕偵擖傞偲丄僎僀儞愗傝懼傢偭偰偟傑偆
{
gu08_kind_Gain = 2; //gain=CDRW 傫乕丅define偝傟偰偨傝偝傟偰側偐偭偨傝丅
SetGainWithOffset( gu08_kind_Gain ); //
}
}
u08_scc_FocusEngin = 1; //俥僒乕僠儕僩儔僀
}
}
return;
}
//Sxxx 20041112
//僄儔乕儕僇僶儕乕梡僼僅乕僇僗僒乕僠擖傝岥
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_FocusSearch3 */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void DrvDSP_FocusSearch100()
{
if( gu08_sts_MovePickupIn == 0 )
{ //SLED堷崬偺曽偑桪愭搙崅偄丅堷崬姰椆懸偪丅
//YTC002 if( toc_f == 0 )
if((toc_f == 0) && (gu08_sts_ReadTOC == 0)) //YTC002 20041226 TOC/multi-session夝愅拞偵僄儔乕儕僇僶儕乕偵擖傞偲丄僎僀儞愗傝懼傢偭偰偟傑偆
{ //帺摦挷惍枹 丒丒丒俠俢僎僀儞偐傜僼僅乕僇僗僒乕僠奐巒
gu08_kind_Gain = 0; //gain=CD
SetGainWithOffset( gu08_kind_Gain ); //僎僀儞偺愝掕偲偦偺僆僼僙僢僩挷惍寢壥傪俢俽俹偵
}
else
{ //帺摦挷惍嵪傒 丒丒丒focus_serch姰椆帪偺僎僀儞愝掕
// YTC008 20050110
if( gu08_kind_Gain_Focus == 0x02 && gu08_kind_Gain == 0x00 )
{
// F.Search帪 X5, 挷惍屻 X1
DrvDSP_BIOS_WriteReg( 0x9A,DSP_9A_INIT ); // FG 0dB
}
SetGainWithOffset( gu08_kind_Gain_Focus ); //gain=僼僅乕僇僗僒乕僠姰椆帪偺僎僀儞
//STOP->PLAY偺僼僅乕僇僗僒乕僠偼丄僒乕僠帪偺僎僀儞偲PLAY帪偺僎僀儞愗傝懼偊傞
}
// gu08_timer_WaitLaser = TIME_LASER_FOCUS_ERROR; // YTC005 20050104
// DrvDSP_BIOS_Laser_On(); //LASER on // YTC005 20050104
//B0003 DrvDSP_BIOS_MMute2_Off( ); //MMUTE2 夝彍 F&T傾僋僠儏僄乕僞宯
DrvDSP_BIOS_Focus_On();
u08_num_FocusRetry = 0; //
// gu08_scc_FocusSearch = 2; // YTC005 20050104
u08_scc_FocusEngin = 1; // YTC005 20050104
gu08_scc_FocusSearch = 3; // YTC005 20050104
if(gu08_num_RecoverRetry==0)
{ //joggble/QuickRecovery
DrvDSP_BIOS_WriteReg( 0xC8, DSP_C8_QUICK);
}
}
}
// --------------------------------------------------------
// focus serch engin (DRIVER)
// --------------------------------------------------------
/*void focus_engin( void )
{
static UINT08 u08_flg_FZC;
// UINT08 ctmp_status;
switch ( u08_scc_FocusEngin )
{
case 1: //弨旛
DrvDSP_BIOS_Focus_On(); //FOCUSon 儗乕僓乕偼屇傃弌偟懁偱僆儞嵪傒
u08_flg_FZC = 0; //FZC専弌桳柍僼儔僌
gu16_timer_focus = CONST_TIMER_FOCUS; //
gu08_timer_fok = CONST_TIMER_FOK_DETECT; //
u08_scc_FocusEngin = 2; //師僔乕働儞僗
break;
case 2: //幚峴丒儗儞僘壓偘僔乕働儞僗
if( gu16_timer_focus == 0 )
{ //timeout 僴乕僪屘忈懳嶔
u08_scc_FocusEngin = 4;
}
else
{
if( ( DrvDSP_BIOS_GetStatus( ) & B01000000 ) == 0 )
{ //sweepUP偵愗傝懼傢偭偨
u08_scc_FocusEngin = 3;
gu08_timer_fok = CONST_TIMER_FOK_DETECT; //
}
}
break;
case 3: //幚峴丒儗儞僘忋偘仌俥俷俲娔帇僔乕働儞僗
if( gu16_timer_focus == 0 )
{ //timeout
u08_scc_FocusEngin = 4;
}
else
{
gu32Work.b.ll = DrvDSP_BIOS_GetStatus( );
if( ( gu32Work.b.ll & 0x80 ) != 0 )
{ //俥倅俠専弌偟偨丅
u08_flg_FZC = 1;
}
if( ( ( gu32Work.b.ll & 0x40 ) != 0 ) && ( u08_flg_FZC == 0 ) )
{ //FZC枹専弌偱Fd=壓偘偵愗懼偭偨丒丒嬻怳傝偲敾抐偡傞丅
u08_scc_FocusEngin = 4;
}
if( ( gu32Work.b.ll & 0x02 ) != 0 )
{ //FOK=H
//YTC00G 20050127 CD/CDRW専弌晅偒乮佮帺摦挷惍晅偒乯僼僅乕僇僗僒乕僠側傜丄俥俷俲弌偨帪揰偱俠俴倁僉僢僋奐巒
if((toc_f == 0) && (gu08_sts_ReadTOC == 0) && ((gu08_servo_status & B10000000)==0)) //
{
DrvDSP_BIOS_MMute1_Off();
DrvDSP_BIOS_WriteReg( 0x88, Tbl_SP_HIGHT_HIGH[gu08_Mech] ); // Kick Hight(MAX)
DrvDSP_BIOS_Clv_Kick( );
gu08_servo_status |= B10000000; //偗傝崬傒拞僼儔僌
gu08_TimerAdjustSub = (SP_KICKTIME_EF / 10);
}
//<<<
if( gu08_timer_fok == 0 )
{ //FOK=楢懕OK
u08_scc_FocusEngin = 0; //Focus_ENGIN惓忢廔椆
}
}
else
{ //FOK=L
gu08_timer_fok = CONST_TIMER_FOK_DETECT; //
}
}
break;
case 4: //嬻怳傝丄僞僀儉傾僂僩僼僅儘乕
gu08_servo_status &= ~B00000001; //FOCUS off
if( u08_flg_FZC == 0 )
{ //FZC枹専弌丒丒丒嬻怳傝
u08_scc_FocusEngin = 5; //Fd=Vc傑偱僼僅儘乕
}
else
{ //FZC専弌丒丒丒僠儑儞妡偐傝偱僞僀儉傾僂僩
DrvDSP_BIOS_Focus_Off(); //FOCUSoff 儗乕僓乕偼揰偗偨傑傑丅
gu08_timer_fok = CONST_TIMER_FOCUS_MUTE; //
u08_scc_FocusEngin = 6; //60mS懸偪
}
break;
case 5: //FDo=Vc偲側傞傑偱娔帇
DrvDSP_BIOS_WriteReg( 0xD9, 0x10 );
gu32Work.b.ll = DrvDSP_BIOS_ReadReg( 0xde ); //get_FDo
DrvDSP_BIOS_WriteReg( 0xD9, 0x00 );
if( ( gu32Work.b.ll & 0x80 ) != 0 )
{ //Vc偲側偭偨
DrvDSP_BIOS_Focus_Off(); //FOCUSoff 儗乕僓乕偼揰偗偨傑傑丅
u08_scc_FocusEngin = 0; //Focus_ENGIN廔椆
}
break;
case 6: //60mS懸偪
//YTC00A if( gu16_timer_focus == 0 ) //20050112
if( gu08_timer_fok == 0 ) //YTC00A 20050112
{
u08_scc_FocusEngin = 0; //Focus_ENGIN廔椆
}
break;
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -