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

📄 drv_dsp_focusserch.c

📁 ROHM 公司BU9432:application:应用范围
💻 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 + -