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

📄 drv_mp3.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
📖 第 1 页 / 共 5 页
字号:
									//Sxxx 偙偙偵崅怣棅壔張棟昁梫丅俶夞儕僩儔僀偟偰丄彂偒崬傒巒傑傜側偐偭偨傜丄偦偺僙僋僞幪偰傞丅
//YTC004 20050103 夞悢傪惂尷偡傞丅
				if(++u08_MP3_wr_retry > MP3_WR_RETRY_MAX)
				{
					u08_MP3_wr_retry = 0;	//
					gu32_val_TargetFrame++;	//偙偺僙僋僞幪偰偰丄師偺僙僋僞偐傜挋傔巒傔傞
//YTC00F			debug_direct_count++;	//
				}
				break;
			}
			mp3Ctl.WR.sts = 6;
#if	ID3TAG	// SDC 20050213
		  if( mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3V2_END )
#endif
			gu08_sts_DISPLAY = 1;									// 昞帵 enable	// SDC 20050121
			break;

#if	ROM	// SDC 20050205
		case 6:				// 幚峴拞乮儊僀儞張棟乯
			if( gu08_sts_Subq_valid )
			{
				gi_timer_mp3 = 2;	//2ms*2
				mp3Ctl.WR.sts = 7;
			}
			break;
#endif

		case 7:				// RSSNC棫偪忋偑傝妋擣
			if( !( DrvDSP_BIOS_ReadRegMP3( 0x97 ) & 0x01 ) )
			{	//
				break;	//-> CDROM SYNC HEADER枹
			}
			// v.丂SYNC HEADER 棃
			mp3Ctl.WR.sts = 8;
//      break;
			// Fall Through 
		case 8:				// 掆巭妋擣偲Valid敪峴
			ctmp_rsacf = DrvDSP_BIOS_ReadRegMP3( 0xC2 );
			if( !( ctmp_rsacf & 0x40 ))
			{																// RSECC 棫偪壓傝妋擣
				mp3Ctl.WR.sts = 9;											// -> 彂崬巭傑偭偨
				break;
			}
			if( ctmp_rsacf & 0x04 )											// C3ECC 幚峴拞丠
				break;

			mp3Ctl.WR.wqok = gu32_frame_atime;	//尰嵼埵抲傪曐懚
			DrvDSP_BIOS_WriteRegMP3( 0x0C, 0x01 );	// Valid敪峴

//YTC004 20050103 
			u08_MP3_wr_retry=0;	//YTC004 20050103 惓偟偔彂偒崬傔偨丅

			// 1僙僋僞WR捠抦
			mp3Ctl.WR.info = 0x01;	// 1sect WR
#if	ROM	// SDC 20050205
			if( !mp3Ctl.WR.end_sector )
			{
				//
				mp3Ctl.WR.nSect--;
				if( mp3Ctl.WR.nSect <= 0 )
				{
					DrvDSP_BIOS_WriteRegMP3( 0x00, mp3Ctl.WR.mode );	// Write掆巭
					MP3Ctrl_WriteProc_finish();	//
					break;
				}
			}
			else
			{	//偦偺嬋偺嵟屻傑偱棴傔崬傫偩丅
				if( mp3Ctl.WR.wqok > mp3Ctl.WR.end_sector )
				{
					DrvDSP_BIOS_WriteRegMP3( 0x00, mp3Ctl.WR.mode );	// Write掆巭
					MP3Ctrl_WriteProc_finish();	//
					break;
				}
			}
#else
			if( !mp3Ctl.WR.end_sector )
				mp3Ctl.WR.nSect--;

			MP3Ctrl_checkWriteStop();

			if( mp3Ctl.WR.sts != 20 )
#endif
			mp3Ctl.WR.sts = 6;
			break;

		case 9:				// WRITE 掆巭忬懺専弌
			mp3Ctl.WR.info = DrvDSP_BIOS_ReadRegMP3( 0xC0 );
			if( mp3Ctl.WR.info & 0x7f )
			{																// WRITE 掆巭
				if( mp3Ctl.WR.info & 0x02 )
				{
					mp3Ctl.WR.sts = 30;										// 僷儚乕僙乕僽張棟傊
					break;
				}

					if( stSubq_bcd.tno == 0xAA )
					{
#if	ROM	// SDC 20050205
						MP3Ctrl_WriteProc_finish();	//
#else
						MP3Ctrl_Write_Stop();
#endif
						break;
					}
					// 掆巭忦審偺妋擣
#if	ROM	// SDC 20050205
					if( !mp3Ctl.WR.end_sector )
					{
						if( mp3Ctl.WR.nSect <= 0 )
						{
#if	ROM	// SDC 20050205
							MP3Ctrl_WriteProc_finish();	//
#else
							MP3Ctrl_Write_Stop();
#endif
							// Write掆巭偺捠抦			
							//mp3Ctl.WR.info = 0x81;	
							//mp3Ctl.WR.sts = 20;		// 掆巭拞傊
							break;
						}
					}
					else
					{
						if( mp3Ctl.WR.wqok > mp3Ctl.WR.end_sector )
						{
#if	ROM	// SDC 20050205
							MP3Ctrl_WriteProc_finish();	//
#else
							MP3Ctrl_Write_Stop();
#endif
							// Write掆巭偺捠抦
							//mp3Ctl.WR.info = 0x81;
							//mp3Ctl.WR.sts = 20;
							break;
						}
					}
#else
					MP3Ctrl_checkWriteStop();

					if( mp3Ctl.WR.sts == 20 )
						break;
#endif
#if	ID3TAG	// SDC 20050202
					if( mp3Ctl.WR.end_sector && !( mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3V2_END ))
					{														// 僞僌彂崬拞偵巭傑偭偨傜
#if	ROM	// SDC 20050205
						if( ++u08_MP3_wr_retry > MP3_WR_RETRY_MAX )
						{													// 儕僩儔僀廔椆
							if( mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3V1_END )
									mp3Ctl.PLAY[gu08_num_Slot].flgs |= BIT_ID3V2_END;
							else	mp3Ctl.PLAY[gu08_num_Slot].flgs |= BIT_ID3V1_END;

							MP3Ctrl_WR_Reset();								// Write / Read clear

							ID3TagRetry = 0;
							mp3Ctl.PLAY[gu08_num_Slot].sts = 1;				// 僞僌柍偟偲偟偰師傊
							break;
						}
#else
						MP3Ctrl_ID3Retry( &mp3Ctl.PLAY[gu08_num_Slot] );

						if( !ID3TagRetry )
							break;
#endif
						DrvDSP_BIOS_WriteRegMP3( 0x00, 0x40 | mp3Ctl.WR.mode );
						MP3Ctrl_StartSet();									// write 僋儕傾偟偰棴傔捈偟
						break;
					}
#endif

//YTC004 20050103
					if( gu32_val_TargetFrame != u32_last_BAD_Frame)
					{
						u32_last_BAD_Frame = gu32_val_TargetFrame;
					}
					else
					{
						if(++u08_MP3_wr_retry > MP3_WR_RETRY_MAX)
						{
							u08_MP3_wr_retry = 0;							// SDC 050117
							mp3Ctl.WR.wqok++;	//壗夞傕僄儔乕弌傞僙僋僞側傜幪偰偰師傊
						}
					}

					gu32_val_TargetFrame = mp3Ctl.WR.wqok - 1;	//
//					gu32_val_TargetFrame = mp3Ctl.WR.wqok;

					gu08_GotoMsfSC =1;	//
//					mp3Ctl.WR.sts = 11;	// 埵抲弌偟	
					mp3Ctl.WR.sts = 12;	// 埵抲弌偟
			}
			break;

		case 10:				// 巆検妋擣拞
			gi_timer_mp3 = 9;	//2ms*9	//昿斏偵巆検僠僃僢僋偟側偄偟偔傒
			mp3Ctl.WR.sts = 11;
			break;

		case 11:
			if( get_mp3reg_zanryo(  ) < (UINT32)mp3Ctl.WR.threshold )		// SDC 20050125
			{					// 鑷抣傛傝巆検彮側偐偭偨傜愙懕奐巒
				gu32_val_TargetFrame = mp3Ctl.WR.wqok - 1;	// 愙懕埵抲偼侾屄庤慜

				gu08_GotoMsfSC =1;	//崅懍両
				mp3Ctl.WR.sts = 12;	// 愙懕埵抲弌偟傊
			}
			else
			{
				mp3Ctl.WR.sts = 10;
			}
			break;
#if	ROM	// SDC 20050205
		case 12:				// 埵抲弌偟拞
			switch(gu08_GotoMsfSC)
			{
				case	0:
					gi_timer_mp3 = 3;	//2ms*3
					mp3Ctl.WR.sts = 13;
					break;
				
				case	0x0A:
					if(MP3Ctrl_WriteProc_WqokSkip(4) != 0)
					{	
						break;				//->SKIP偟偨傜丄偙偺嬋偺廔傢傝傪墇偊偨丒棴傔崬傒廔椆
					}
					mp3Ctl.WR.sts = 11;		//->偪傚偭偲幪偰偰儕僩儔僀
					break;
			}
			break;
#endif

		case 13:				// 愙懕奐巒
			DrvDSP_BIOS_WriteRegMP3( 0x02, 0x85 );	// SYNC connect
			gi_timer_mp3 = 1;	// Set Timer(1.75ms*1)
			mp3Ctl.WR.sts = 14;
			break;

#if	ROM	// SDC 20050205
		case 14:
			if( gu08_sts_Subq_valid )
			{
				gi_timer_mp3 = 2;
				mp3Ctl.WR.sts = 15;
			}
			break;
#endif

		case 15:				// 愙懕姰椆懸偪
			if( gu08_sts_Subq_valid )
			{
#if	0	// SDC 041227 FLAG6摍偱巭傑偭偨傜偙偙偱柍尷儖乕僾
				if( DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x40 )
#else
				if( !(DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x80) )
#endif	// SDC 041227
				{				// 僨乕僞棴傔崬傒奐巒偟偨偐
					mp3Ctl.WR.sts = 6;	//-> 偙偙傕崅怣棅惈壔張棟傎偟偄丅 棴傔崬傒奐巒偟側偄傛偆側傜丄偙偺僙僋僞幪偰偰丄師偺僙僋僞偵SYNC愙懕丅
#if	ERR_DETECT	// SDC 20041219
#if	ID3TAG	// SDC 20050213
				  if( mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3V2_END )
#endif
					gu08_sts_DISPLAY = 1;									// 昞帵 enable
#endif

				if(gu32_val_TargetFrame > gu32_frame_atime )
				{	//偺傝偙偊偰偮側偑偭偨丅丂VALID懪偮慜偵幪偰偰丄偮側偖
					//僉僘摍偱丄僩儔僢僋傪忔傝墇偊偰丄庤慜偺僙僋僞偵宷偄偩丅偙偆側傞偲摨偠応強傪嵞惗偟偰偟傑偆偺偱丄VALID懪偮慜偵幪偰偰偟傑偆丅
					DrvDSP_BIOS_WriteRegMP3( 0x00, 0x02 );	// WRITE Stop敪峴
#if	ROM	// SDC 20050205
					if(MP3Ctrl_WriteProc_WqokSkip(20) != 0)	//偙偺帪偼堦廃暘埲忋幪偰傞
					{	
						break;				//->SKIP偟偨傜丄偙偺嬋偺廔傢傝傪墇偊偨丒棴傔崬傒廔椆埖偄
					}
					mp3Ctl.WR.sts = 11;		//->愙懕傊
#else
					mp3Ctl.WR.sts = 12;
					MP3Ctrl_WriteProc_WqokSkip( 20 );
#endif
				}
#if	ROM	// SDC 20050205
					break;
#endif
				}
			}
			break;

		case 20:				// 掆巭拞
			if(gu08_GotoMsfSC == 0)	//pause
			{						//
				gu08_GotoMsfSC=1;	//
			}						//
			break;

		case	30:	//儊儌儕乕僼儖偵傛傞僷儚乕僙乕僽 奐巒
//YTC00G 20050130
			gu08_sts_Jump = 		//YTC00G 僕儍儞僾張棟拞側傜丄拞巭丅
			gu08_req_Jump = //0;		//C111丄8040傪敪峴偝傟傞偲崲傞丅

#if	ERR_DETECT	// SDC 20041222
			gu08_scc_ServoError = 0;				// 僷儚乕僙乕僽拞偼僄儔乕専弌偟側偄
#endif
			DrvDSP_PowerSave_on1();
			mp3Ctl.WR.sts = 31;		// 
			break;

		case	31:
			gi_timer_mp3 = 9;		// 2ms*9	//昿斏偵巆検僠僃僢僋偟側偄偟偔傒
									//18mS屻丄傑偨偙偙乮俁侾斣乯傊栠偭偰偔傞丅
			if( get_mp3reg_zanryo(  ) < 0X18000 )		//18000/100000=偺偙傝15亾	俁俀俉俲俛俹俽亄俥俥僒乕僠拞偺僷儚乕僙乕僽偐傜偺暅婣偵懴偊傞偙偲丅
										//偪側傒偵丄係乛侾俇乛俇係俵倐倝倲嫟捠偱偄偄偲巚偆丅
			{					// 鑷抣傛傝巆検彮側偐偭偨傜僒乕儃暅婣奐巒
				mp3Ctl.WR.sts = 32;	// 愙懕埵抲弌偟傊
				gi_timer_mp3 = 0;	//師偺弰夞偱俁俀斣偵峴偔傛偆偵丅
			}
			break;

		case	32:
			DrvDSP_PowerSave_off1();
			mp3Ctl.WR.sts = 33;	//倃侾倂傑偱側偺偱丄廟傝崬傒偼堦抜奒偺傒丅
			break;

		case	33:	//
			if(DrvDSP_PowerSave_off3() != 0)
			{	//帪娫宱夁 ,僼僅乕僇僗僒乕僠梫媮
				mp3Ctl.WR.sts = 34;	//
			}
			break;

		case	34:	//
			if(gu08_scc_FocusSearch==0)
			{
				DrvDSP_BIOS_WriteReg(0x83,0x21);	//CLVservo.limit=2/8
				DrvDSP_BIOS_Tracking_On();			
//				DrvDSP_BIOS_WriteReg( 0x62, 0x09 );	//20041117僐儗偑側偄偲僟儊丅	// YTC_20041228
				DrvDSP_BIOS_Clv_On(  );

				if( gu08_sts_PowerSave > 1 )										// SDC 20050123
				{
						mp3Ctl.WR.sts = 2;		//撉弌拞偵NG僙僋僞偑偁偭偰丄嵞棴崬丅
//YTC00F		}else	mp3Ctl.WR.sts = 10;		//捠忢暅婣乣愙懕丅
				}
				else
				{
					mp3Ctl.WR.sts = 10;		//儊儌儕乕僼儖偵傛傞捠忢暅婣乣愙懕丅
					if(mp3Ctl.PLAY[0].sts == 6)
					{
						mp3Ctl.WR.sts = 20;		//嬋棴傔廔傢傝偵傛傞僷儚乕僙乕僽偺暅婣
					}
				}

				gu08_sts_PowerSave = 0;	//偙偺帪揰傪傕偭偰丄僷儚乕僙乕僽夝彍埖偄
// SDC 20050123				mp3Ctl.WR.sts = 10;	//->埲壓捠忢僐僱僋僩.DYNA曽幃偵崌棳丅
									//僼僅乕僇僗崌徟偵幐攕偟偰偄偨応崌偼丄僒乕儃僄儔乕張棟偵棳傟崬傓丅
#if	ERR_DETECT	// SDC 20041222
				gu08_scc_ServoError = 1;			// 僄儔乕専弌嵞奐
				DrvDSP_CheckError_SetTimerSUBQ_Start(  );
#endif
			}
			break;
	}
	return;
}
*/

// =-------------------------------------------------------
//  彂崬惂屼丒巕儖乕僠儞
// =-------------------------------------------------------
/*
#if	ROM	// SDC 20050205
void	MP3Ctrl_WriteProc_finish(void)
{
//	巜掕嬋傪嵟屻傑偱棴傔崬傫偩丅
	// Write掆巭偺捠抦
	mp3Ctl.WR.info = 0x81;
	mp3Ctl.WR.sts = 20;	// 掆巭拞傊
}
#endif

//YTC00F 20050126
#if	ROM	// SDC 20050205
UINT08 MP3Ctrl_WriteProc_WqokSkip(UINT08 u08_SkipSectors)
#else
void	MP3Ctrl_WriteProc_WqokSkip( UINT08 u08_SkipSectors )
#endif
{
		mp3Ctl.WR.wqok += u08_SkipSectors;				//

		if( mp3Ctl.WR.wqok > mp3Ctl.WR.end_sector )
		{	//SKIP偟偨傜丄偦偺嬋偺廔傢傝傪墇偊偨丅棴傔崬傒廔椆埖偄丅
			mp3Ctl.WR.info = 0x01;						// 1sect WR偟偨偙偲偵丅
#if	ROM	// SDC 20050205
			MP3Ctrl_WriteProc_finish();
			return(1);
#else
			MP3Ctrl_Write_Stop();
#endif
		}

		gu32_val_TargetFrame = mp3Ctl.WR.wqok ;			//
		gu08_GotoMsfSC =1;								//
#if	ROM	// SDC 20050205
		return(0);
#endif
}

*/

//YTC002 20041226 softmute
// ODEN偑撉傒弌偟奐巒傪庴偗庢偭偰偐傜DAC儈儏乕僩奐偔 //YTC 悢mS偺偙偲側偺偱僜僼僩儈儏乕僩偵塭嬁偟側偝偘丅
// =-------------------------------------------------------
//  俵俹俁嵞惗惂屼丒僜僼僩儈儏乕僩夝彍
// =-------------------------------------------------------
/*
void MP3Ctrl_ctrl_mute()
{
	if(gu08_scc_MP3muteOn != 0)	 //僜僼僩儈儏乕僩僆儞梫媮棃偰偄傞
	{
		if(gu08_timer_mp3mute==0)
		{
			DrvDSP_BIOS_WriteRegMP3( 0x01, 0x02 );	//READ STOP
			gu08_scc_MP3muteOn = 0;
			DrvDSP_BIOS_AMute_On();
		}
	}
}
*/

// YTC002 20041226
// =-------------------------------------------------------
//	MP3Ctrl_SoftmuteOn
// =-------------------------------------------------------
/*
void MP3Ctrl_SoftmuteOn()
{
	gu08_sts_decodeMP3 = 0;			//decode幚峴拞僼儔僌僆僼
	DrvDSP_BIOS_DACMute_On( );		//DSP.E310  softmute start
	gu08_timer_mp3mute = (24/2);	//僞僀儅乕僙僢僩
	gu08_scc_MP3muteOn = 1;			//
}

*/

//#if	ID3TAG	// SDC 20050202
//#if	DEBUG
//UINT32	lbnhani[2][2], lbnbuff[2][5];
//#endif
// =-------------------------------------------------------
//  嬋嵞惗惂屼
// =-------------------------------------------------------
/*
void	MP3Ctrl_ID3_cehckLBN( struct _mp3play *play )
{
//CNVL	adr;
//UINT08	i;

#if	DEBUG
lbnhani[(play->flgs>>1)&0x01][0] = mp3Ctl.WR.begin_sector;
lbnhani[(play->flgs>>1)&0x01][1] = mp3Ctl.WR.end_sector;
#endif

	for( gu08_i = 0; ( mp3Ctl.WR.begin_sector + gu08_i ) <= mp3Ctl.WR.end_sector; gu08_i++ )
	{
//		gu32Work.l = getDramLBN( gu08_i );
		if( gu32Work.b.hh != 0xff )
			gu32Work.l += 150L;


#if	DEBUG
lbnbuff[(play->flgs>>1)&0x01][gu08_i] = gu32Work.l;
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -