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

📄 drv_mp3.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
📖 第 1 页 / 共 5 页
字号:
					case 0x82:	// EMPTY
						// Next LBN傪撉傓
#if	ROM	// SDC 20050203
						gu32Work.l = DrvDSP_BIOS_ReadRegMP3_32(0xF0);

						if( gu32Work.l )
						{
							// Next LBN偑侽偱側偐偭偨傜丄偦偙傪埵抲弌偟
							last_atime = gu32Work.l + 150L - 6L;

							if( total_try++ < 64 )
							{	// 嵟戝2048僙僋僞傑偱儕僩儔僀偡傞
								mp3Ctl.WR.wqok = last_atime;
#else
						if(( gu32Work.l = DrvDSP_BIOS_ReadRegMP3_32( 0x0F0 )) && ( total_try++ < 64 ))
						{
							{
								mp3Ctl.WR.wqok = gu32Work.l + 150L - 6L;
#endif
								DrvMP3_ReadFAT_engin_00();
//								mp3Ctl.WR.nSect = 32;
//								MP3Ctrl_Write_Restart(  );
//								gu08_sts_ReadFAT = 2;	//->loop
								break;
							}
						}
						// Fall Through 
					default:
						MP3Ctrl_Write_Stop(  );	// 擮偺偨傔,WRITE掆巭
						gu08_sccd_ReadFAT = 0xff;	//BAD END
				}
			}
			break;
	}
}
*/				//ad
/*
// -ROM 
void DrvMP3_ReadFAT_engin_00()
{
		mp3Ctl.WR.nSect = 32;
		MP3Ctrl_Write_Restart(  );
		gu08_sccd_ReadFAT = 2;	//->loop
}

//YTC009 20050111 
//-ROM YTC006 20050106
void DrvMP3_ReadFAT_set_InfoArea()
{
	DrvDSP_BIOS_WriteRegMP3_32(0x44,gl_dram_send - 0x00010000);	// RCSEND愝掕

#if	ROM	// SDC 20050202
	mp3Ctl.WR.conn_mode = 0x05;	// SYNC愙懕儌乕僪慖戰

	MP3Ctrl_Write_SetMode( 0x02 );	// WRITE宯 @CDROM
	MP3Ctrl_Read_SetMode( 0x0A );	// READ宯  @FAT

	MP3Ctrl_Write_Reset(  );
	MP3Ctrl_Read_Reset(  );
#else
	mp3Ctl.WR.mode = 0x02;			// WRITE宯 @CDROM
	mp3Ctl.RD.mode = 0x0A;			// READ宯  @FAT

	MP3Ctrl_WR_Reset();														// Write / Read clear
#endif

	DrvDSP_BIOS_WriteRegMP3_32(0x48,gl_dram_send - 0x0000FFFF);	// RCIEND愝掕
	DrvDSP_BIOS_WriteRegMP3_32(0x4C,gl_dram_send);	// RCISTT愝掕

//	mp3Reg.rcrmd |= 0x80;	//  俽倁俢桪愭 	//YTC006 20050107
//	DrvDSP_BIOS_WriteRegMP3( 0x30, mp3Reg.rcrmd );
//	Common_Wait_1mS();
}

*/
/*
#if	1	// SDC 050107
void	ReadDiscDispCtrl( void )
{
	if( gu08_flg_IntrTimer03 > (10 / 2 - 1) )		// 10ms time out
	{
		gu08_flg_IntrTimer03 = 0;

		if( !( gu08_timer_Blink-- ) )
		{
			gu08_timer_Blink = BC_BLINK_TIME;
			gu08_flg_Blink ^= 0x01;
			if( gu08_flg_Blink )
			{
				DrvLCD_ReadDisc_On();
			} else {
				DrvLCD_ReadDisc_Off();
			}
		}

//B0004		DrvKEY_ScanSlideSW( SW_LID );
		DrvKEY_ScanSlideSW(  );						//B0004
	}
}
#endif	// SDC 050107
*/
//
// 俥俙俿忣曬偺専徹
//

// 僨傿儗僋僩儕忣曬偵巕僨傿儗僋僩儕忣曬傪愝掕偡傞
// dram[i][17:18]丗桳岠僨傿儗僋僩儕俶倧
//
/*														//ad
void fat_examine( void )
{

//20041220 nUDF懳墳 乮値亖側傫偪傖偭偰偺棯乯
// 僙僌儊儞僩僞僀僾側傜偱偼偺張棟丅俢俷俿 俵俿倃斉偼暿搑峫椂
// *.MP3僼傽僀儖傪帩偨側偄僼僅儖僟乕傪娫堷偔堊偺張棟丅
// nUDF梡偺ODEN僼傽乕儉偵崌傢偣偰丄INFO AREA偺嶲徠応強傪曄峏丅

	UINT08 fat_data0[32];
	UINT16 file_no, mp3_files;
	SINT16 i,j;
#if	ROM	// SDC 20050205
	UINT16 play_dir_num;
#endif
//	CNVS tmp;
	
	//	嵞惗懳徾Dir悢庢摼	
#if	ROM	// SDC 20050205
	play_dir_num = 0;
	for (i = 1; i <= stInfoArea.hexTotalFolder; i++)
	{
		//	Dir忣曬偐傜MP3 Files庢摼	
		get_FAT_data(i, fat_data0);	//偦偺僼僅儖僟乕偺拞偺俵俹俁僼傽僀儖悢傪尒傞
#if LCD_DM	//[dyna-DM]
		gu32Work.b.ll = fat_data0[18];	//nUDF懳墳 偦偺僼僅儖僟乕撪偺俵俹俁僼傽僀儖悢
		gu32Work.b.lh = fat_data0[17];	//
#else
		gu32Work.b.ll = fat_data0[ DIR_DEFRAGMENT_FILES1 ];
		gu32Work.b.lh = fat_data0[ DIR_DEFRAGMENT_FILES0 ];
#endif

		mp3_files = gu32Work.w.l;	
		//	MP3File桳傝Dir悢傪僇僂儞僩	
		if (mp3_files)
		{	//!=00 桳岠側俵俹俁僼傽僀儖偁傝
			play_dir_num++;
		}
//		ReadDiscDispCtrl();							// SDC 050107
		if( UserCtrl_IsOpen() == TRUE ) return;		// SDC 050107
	}
	stInfoArea.hexTotalPlayFolder = play_dir_num;
//  ^偙傟偑憤桳岠俵俹俁僼僅儖僟悢
//	偙偺帪揰偱俴俠俢偵昞帵偟偨偄側偁丅
//	懱姶忋丄俥俙俿儕乕僪偑偐側傝憗偔側傞丅
#else	// ROM
	stInfoArea.hexTotalPlayFolder = 0;
	for (i = 1; i <= stInfoArea.hexTotalFolder; i++)
	{
		//	Dir忣曬偐傜MP3 Files庢摼	
		get_FAT_data(i, fat_data0);	//偦偺僼僅儖僟乕偺拞偺俵俹俁僼傽僀儖悢傪尒傞
#if	LCD_DM
		if( fat_data0[18] | fat_data0[17] )
#else
		if( fat_data0[DIR_DEFRAGMENT_FILES1] | fat_data0[DIR_DEFRAGMENT_FILES0] )
#endif	// end of LCD_DM
		{	//!=00 桳岠側俵俹俁僼傽僀儖偁傝
			stInfoArea.hexTotalPlayFolder++;
		}
//		ReadDiscDispCtrl();							// SDC 050107
		if( UserCtrl_IsOpen() == TRUE ) return;		// SDC 050107
	}
#endif	// end of ROM

	//	嵞惗懳徾Dir斣崋曐懚	
	//桳岠俢俬俼斣崋傪INFO AREA偵彂偒崬傫偱偄偔丅
	//DIR+/-憖嶌帪偵嬻DIR傪巜偟帵偡偙偲偺柍偄傛偆偵丅
	file_no = stInfoArea.hexTotalFolder + 1;	//	嵟弶偺File忣曬埵抲	
	for(i = 0; i < stInfoArea.hexTotalPlayFolder; i++)
	{
		//	File忣曬偐傜Dir Number庢摼	
		get_FAT_data(file_no, fat_data0);
#if LCD_DM	//[dyna-DM]
		gu32Work.b.ll = fat_data0[31];	//偙偺僼傽僀儖偑強懏偡傞俢俬俼斣崋
		gu32Work.b.lh = fat_data0[30];	//
#else
		gu32Work.b.ll = fat_data0[ FILE_DIR_NUMBER1 ];
		gu32Work.b.lh = fat_data0[ FILE_DIR_NUMBER0 ];
#endif
#if	ROM	// SDC 20050205
		play_dir_num = gu32Work.w.l;
#endif
		//	FAT忣曬愭摢偐傜弴偵Dir Number曐懚		//20041219梫拲堄揰丅
		//忋偱媮傔偨俢俬俼乮桳岠俢俬俼乯斣崋傪彂偒崬傓
		//丅丅丅倀俬憌偱俢俬俼亄亅偟偨傜丄偙偙偺忣曬傪尒傟偽丄桳岠俢俬俼斣崋傪摼傜傟傞丅
#if LCD_DM	//[dyna-DM]
		get_FAT_data(i, fat_data0);		//i偼僼僅儖僟斣崋
		fat_data0[16] = gu32Work.b.ll;		//僼傽僀儖柤偺応強傪捵偟偰偟傑偆丅->DOT_MTX帪偵拲堄
		fat_data0[15] = gu32Work.b.lh;		//曐懚応強曄峏偟傑偡丅
		put_FAT_data(i, fat_data0);		
#else
		PlayList_SetEntry(PLAY_LIST_SIZE + i, gu32Work.w.l);
#endif
		//	Dir忣曬偐傜MP3 Files庢摼	
		//忋偱媮傔偨乮桳岠乯俢俬俼偑帩偮俵俹俁僼傽僀儖悢傪媮傔傞丅
#if	ROM	// SDC 20050205
		get_FAT_data(play_dir_num, fat_data0);
#else
		get_FAT_data( gu32Work.w.l, fat_data0);
#endif
#if LCD_DM	//[dyna-DM]
		gu32Work.b.ll = fat_data0[18];		//
		gu32Work.b.lh = fat_data0[17];		//nUDF懳墳 俢俬俼撪 俵俹俁僼傽僀儖悢
#else
		gu32Work.b.ll = fat_data0[ DIR_DEFRAGMENT_FILES1 ];
		gu32Work.b.lh = fat_data0[ DIR_DEFRAGMENT_FILES0 ];
#endif
		mp3_files = gu32Work.w.l;
		
		//	File忣曬偵index曐懚	
		//僼傽僀儖偺忣曬偵丄帺俢俬俼偺僼傽僀儖悢傪僐僺乕偟偰偍偔丅乮倀俬懁偑曋棙偵巊偆乯
		//nUDF懳墳偺堊丄彂偒崬傫偱偍偔応強傪曄偊傞丅

		//[dyna-DM] 仸仾僼傽僀儖悢偺僐僺乕偱偼側偄偱偡丅
		//偙偺帪揰偱FAT(Disc,Dir)忣曬愭摢偐傜File忣曬弴偺強懏Dir斣崋傪曐懚偟偰偄傑偡丅
		//伀偺張棟偱偙偺Dir斣崋専嶕梡偵File忣曬慡晹偵Dir扨埵偱1偐傜斣崋(index)傪偮偗偰偄傑偡丅
		gu32Work.w.l = i + 1;
		for(j = 0; j < mp3_files; j++)
		{
#if LCD_DM	//[dyna-DM]
			get_FAT_data(file_no, fat_data0);
			fat_data0[14] = gu32Work.b.ll;	//僼傽僀儖柤偺応強傪捵偟偰偟傑偆丅->DOT_MTX帪偵拲堄
			fat_data0[13] = gu32Work.b.lh;	//僼傽僀儖柤偺応強傪捵偟偰偟傑偆丅->DOT_MTX帪偵拲堄
			put_FAT_data(file_no++, fat_data0);
#else
			PlayList_SetEntry( PLAY_LIST_SIZE + file_no++, gu32Work.w.l );
#endif
//			ReadDiscDispCtrl();							// SDC 050107
			if( UserCtrl_IsOpen() == TRUE ) return;		// SDC 050107
		}
	}
}
*/

//
// FAT 忣曬傪庢摼
//
// 枅夞丄DRAM傪嶲徠偡傞偺偱偼側偔丄僉儍僢僔儏摦嶌傪峴偆		仼偟偰偄側偄偺偱僉儍僢僔儏嶍彍	SDC 20050205
//
/*
void	get_FAT_data( SINT16 n, UINT08 * bufp )
{
//	SINT16 i;
CNVS	tmp;																// SDC 20050123

	DrvDSP_BIOS_DramAdrSet( gl_dram_send - ( UINT32 ) ( n << 4 ), 0x02 );	// 俢俼俙俵捈撉丒捈彂傾僪儗僗巜掕

	for ( gu08_i = 0 ; gu08_i < 32 ; gu08_i += 2 )
	{
		tmp.us = DrvDSP_BIOS_DramRead();
#if	ROM	// SDC 20050205
		fat_cache[ 0 ].data[ gu08_i ]     = gu32Work.b.lh;
		fat_cache[ 0 ].data[ gu08_i + 1 ] = gu32Work.b.ll;
	}
	fat_cache[0].nIndex = n;
	memcpy( bufp, fat_cache[0].data, 32 );	// 僐僺乕偟側偄偱僉儍僢僔儏埵抲曉偡偩偗偱椙偄偐
#else
		bufp[gu08_i]   = tmp.uc.hi;
		bufp[gu08_i+1] = tmp.uc.lo;
	}
#endif
	return;
}
*/

//
// FAT 忣曬傪峏怴
//
/*
void	put_FAT_data( SINT16 n, UINT08 * bufp )
{
//	SINT16 i;	//YTC A2x 20050307 枹巊梡俼俙俵
CNVS	tmp;

#if	ROM	// SDC 20050205
	memcpy( fat_cache[0].data, bufp, 32 );
#endif
	DrvDSP_BIOS_DramAdrSet( gl_dram_send - ( UINT32 ) ( n << 4 ), 0x02 );	// 俢俼俙俵捈撉丒捈彂傾僪儗僗巜掕

	for ( gu08_i = 0 ; gu08_i < 32 ; gu08_i += 2 )
	{
#if	ROM	// SDC 20050205
		gu32Work.b.lh = fat_cache[0].data[ gu08_i ];
		gu32Work.b.ll = fat_cache[0].data[ gu08_i + 1 ];
		DrvDSP_BIOS_DramWrite( gu32Work.w.l );
	}
	fat_cache[0].nIndex = n;
#else
		tmp.uc.hi = bufp[gu08_i];
		tmp.uc.lo = bufp[gu08_i+1];
		DrvDSP_BIOS_DramWrite( tmp.us );
	}
#endif
	return;
}
*/
/*
#if	ID3TAG	// SDC 20050202
void	MP3Ctrl_StartSet( void )
{
	mp3Ctl.WR.wqok =
	gu32_val_TargetFrame = mp3Ctl.WR.begin_sector - 2;

	gu08_GotoMsfSC = 1;
	mp3Ctl.WR.sts  = 2;
}
#endif
*/


// SDC 20050124#define	MP3_WR_RETRY_MAX	(3)	//YTC004 20050103
//#define	MP3_WR_RETRY_MAX	(1)	//YTC004 20050103							// SDC 20050124

//#if	!ROM	// SDC 20050205
/*void	MP3Ctrl_checkWriteStop( void )
{
	if( !mp3Ctl.WR.end_sector )
	{
		if( mp3Ctl.WR.nSect <= 0 )
		{
#if	ROM	// SDC 20050205
//			MP3Ctrl_WriteProc_finish();	//
#else
			MP3Ctrl_Write_Stop();
#endif
		}
	}
	else
	{
		if( mp3Ctl.WR.wqok > mp3Ctl.WR.end_sector )
		{
#if	ROM	// SDC 20050205
//			MP3Ctrl_WriteProc_finish();	//
#else
			MP3Ctrl_Write_Stop();
#endif
		}
	}
}
*/
/*
#if	ID3TAG
void	MP3Ctrl_ID3Retry( struct _mp3play *play )
{
	if( ++ID3TagRetry > MP3_WR_RETRY_MAX )
	{																		// 儕僩儔僀廔椆
		ID3TagRetry = 0;

		if( play->flgs & BIT_ID3V1_END )
				play->flgs |= BIT_ID3V2_END;
		else	play->flgs |= BIT_ID3V1_END;
	}
	MP3Ctrl_WR_Reset();														// Write / Read clear

	play->sts = 1;
}
#endif	// end of ID3TAG
#endif	// end of ROM
*/

//20041218 POWER_SAVE 懳墳
// =-------------------------------------------------------
//  WRITE 懁惂屼
// =-------------------------------------------------------
/*
void MP3Ctrl_WriteProc( void )
{
	UINT08 ctmp_rsacf;

	static	UINT08 	u08_MP3_wr_retry;	//YTC004 20050103
	static	UINT32	u32_last_BAD_Frame;	//YTC004 20050103

	if( mp3Ctl.WR.sts && gi_timer_mp3 )
	{							// 僞僀儅摦嶌拞偼偡偖偵栠傞
		return;
	}

	switch ( mp3Ctl.WR.sts )
	{
		case 0:				// 弶婜忬懺
			gi_timer_mp3 = 0;	// 擮偺偨傔丄僞僀儅僋儕傾	偁傝摼側偄偲偍傕偆偺偩偑丒丒丒丅忋偱偼偠偄偰偄傞偟丅
			break;
		case 1:				// 儕僙僢僩嵪傒
#if	ID3TAG	// SDC 20050202
			u08_MP3_wr_retry=//0;		//YTC004 20050103 
			u32_last_BAD_Frame=0;	//YTC004 20050103 侽傪棴傔崬傓偙偲偼偁傝偊側偄偺偱

			MP3Ctrl_StartSet();
#else
			mp3Ctl.WR.wqok = 										//SDC 20050116
//			gu32_val_TargetFrame = mp3Ctl.WR.begin_sector - 1;
			gu32_val_TargetFrame = mp3Ctl.WR.begin_sector - 2;		// YTC00B 20050114

			gu08_GotoMsfSC =1;	//

			u08_MP3_wr_retry=//0;		//YTC004 20050103 
			u32_last_BAD_Frame=0;	//YTC004 20050103 侽傪棴傔崬傓偙偲偼偁傝偊側偄偺偱

			mp3Ctl.WR.sts = 2;
#endif
			break;

		case 2:				// 弶夞埵抲弌偟拞
#if	!ROM	// SDC 20050205
		case 12:			// 埵抲弌偟拞
#endif
			switch(gu08_GotoMsfSC)
			{
				case	0:
					gi_timer_mp3 = 3;	//2ms*3
#if	ROM	// SDC 20050205
					mp3Ctl.WR.sts = 3;
#else
					mp3Ctl.WR.sts++;
#endif
					break;

				case	0x0A:
#if	ROM	// SDC 20050205
					if(MP3Ctrl_WriteProc_WqokSkip(4) != 0)
					{	
						break;				//->SKIP偟偨傜丄偙偺嬋偺廔傢傝傪墇偊偨丒棴傔崬傒廔椆
					}
					mp3Ctl.WR.sts = 2;		//->偪傚偭偲幪偰偰儕僩儔僀
					break;
#else
					MP3Ctrl_WriteProc_WqokSkip( 4 );
#endif
			}
			break;

		case 3:
			if( gu08_sts_Subq_valid )
			{
				DrvDSP_BIOS_WriteRegMP3( 0x00, 0x80 | mp3Ctl.WR.mode );	// Write Start
				gi_timer_mp3 = 1;	//2ms*1
				mp3Ctl.WR.sts = 4;
			}
			break;

		case 4:				// 奐巒懸偪
#if	!ROM
		case 6:				// 幚峴拞乮儊僀儞張棟乯
		case 14:
#endif
			if( gu08_sts_Subq_valid )
			{
				gi_timer_mp3 = 2;	//2ms*2
#if	ROM	// SDC 20050205
				mp3Ctl.WR.sts = 5;
#else
				mp3Ctl.WR.sts++;
#endif
			}
			break;

		case 5:				// 奐巒妋擣
			if( !( DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x40 ) )
			{					//彂偒崬傒巒傑偭偰偄側偄偺偼偍偐偟偄丅
				DrvDSP_BIOS_WriteRegMP3( 0x00, 0x42 );	// write stop / w add clr / CD-ROM data mode	// SDC 050117

				gu08_GotoMsfSC =1;	//崅懍両

				mp3Ctl.WR.sts = 2;	// 埵抲弌偟偐傜巒傔傞

⌨️ 快捷键说明

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