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

📄 drv_mp3.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
📖 第 1 页 / 共 5 页
字号:

		if(( gu32Work.b.hh == 0xff ) || (( mp3Ctl.WR.begin_sector + gu08_i ) != gu32Work.l ))
		{																	// 巆検柍偟偐 LBN 楢懕 NG 側傜棴傔捈偟
#if	ROM	// SDC 20050205
			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;
#else
#if	DEBUG
lbnbuff[(play->flgs>>1)&0x01][4-ID3TagRetry] = gu32Work.l;
#endif
			MP3Ctrl_ID3Retry( play );
			break;
#endif
		}
	}
}*/
//#endif


//#if	ID3SELF	// SDC 20050216
/*UINT32	MP3Ctrl_CalcReadAddress( UINT08 offset )
{
UINT08	tmp;

	// RA 傪師偺僙僋僞偺愭摢傊
	gu32Work.l = DrvDSP_BIOS_ReadRegMP3_32( 0xCC );
	tmp = (UINT16)( gu32Work.l % 1182L );									// 梋傝僙僢僩
	gu32Work.l /= 1182L;													// 1182 = 2364 / 2
	if( tmp )	gu32Work.l++;												// 梋傝偑偁傟偽僙僋僞悢亄侾
	gu32Work.l += offset;
	gu32Work.l *= 1182L;

	if( gu32Work.l >= sEnd )
	{
		gu32Work.l = 0;
	}
	return	gu32Work.l;
}*/

/*
void	MP3Ctrl_ID3SelfCheck( struct _mp3play *play )
{
UINT08	block;
UINT16	off;
CNVS	tmp;

	// 奐巒埵抲寁嶼
	if( mp3Reg.rcenb < 127 )
	{
		block = 127 - mp3Reg.rcenb;
		off = 2047 - ( 127 - block );
	}else
	{
		block = 0;
		off = mp3Reg.rcenb - 127;
	}

	// DRAM 撉崬傾僪儗僗庢摼
	gu32Work.l = MP3Ctrl_CalcReadAddress( 0 );




#if	0
	gu32Work.l += 12L;															// 12 = 24 / 2

	DrvDSP_BIOS_DramAdrSet( gu32Work.l, 0x01 );

	gu32Work.w.l = DrvDSP_BIOS_DramRead();
	gu32Work.w.h = DrvDSP_BIOS_DramRead();

	return	( msf2lbn_bcd( gu32Work.b.ll, gu32Work.b.lh, gu32Work.b.hl ) - 150L );		// 嵞惗埵抲庢摼姰椆
#endif


	// TAG 敾掕
#if	1
	gu32Work.l += (( off / 2 ) + ( 28 / 2 ));
	DrvDSP_BIOS_DramAdrSet( gu32Work.l, 0x01 );

	for( gu08_i = 0; gu08_i < 4; gu08_i += 2 )
	{
		tmp.us = DrvDSP_BIOS_DramRead();
		cWork[gu08_i+0] = tmp.uc.hi;
		cWork[gu08_i+1] = tmp.uc.lo;
	}
#else
	gu32Work.l += (( off / 2 ) + ( 28 / 2 ));
	DrvDSP_BIOS_DramAdrSet( gu32Work.l, 0x01 );

	for( gu08_i = 0; ; gu08_i += 2 )
	{
		tmp.us = DrvDSP_BIOS_DramRead();
		cWork[0] = tmp.uc.hi;
		cWork[1] = tmp.uc.lo;
	}
#endif

	for( gu08_i = 0; gu08_i < 4; gu08_i++ )
	{
		if( cWork[gu08_i] 
	}
	// TAG 桳傝
	// TAG 曐懚

	// TAG 柍偟

	// V2 夝愅傊
}
#endif
*/
/*#if	!ROM	// SDC 20050205
void	MP3Ctrl_SetWriteInfo( UINT08 *fat_data, struct _mp3play *play )
{
//CNVL tmp_l;

	// 奐巒僙僋僞丒廔椆僙僋僞丒僼傽僀儖挿庢摼
	set_mp3Reg( fat_data );

	// 奐巒埵抲僙僢僩
	play->stl = mp3Reg.rcstl;
	play->stb = mp3Reg.rcstb = 0;
	mp3Ctl.WR.begin_sector = play->stl + 150L;

	// 廔椆埵抲僙僢僩
	play->enl = mp3Reg.rcenl;

	gu32Work.l = mp3Reg.rcsiz & 0x7ff;
	if( !gu32Work.l )
	{
		gu32Work.l = 0x800;
	}
	gu32Work.l--;
	play->enb = mp3Reg.rcenb = gu32Work.l;

	if( gu08_sts_UDFDISC )
	{
		//抐曅壔僼儔僌庢摼
#if	LCD_DM
		flag_flagment = fat_data[18] & B10000000;						// 0 : 懕偒柍偟 / !0 : 懕偒桳傝
#else
		flag_flagment = fat_data[DISC_DEFRAGMENT_FILES1] & B10000000;	// 0 : 懕偒柍偟 / !0 : 懕偒桳傝
#endif
	}
}
#endif
*/

// 
// =-------------------------------------------------------
//  嬋嵞惗惂屼
// =-------------------------------------------------------
/*
void MP3Ctrl_PlayProc( UINT08 slot )
{
	struct _mp3play *play = &mp3Ctl.PLAY[slot];
#if	ROM	// SDC 20050205
	UINT08 fat_data[32], info;
	CNVL tmp_l;
#else
	UINT08 fat_data[32];
#endif

	static tmp_timing5;

	switch ( play->sts )
	{
		case 1:				// 梫媮庴晅
#if	ROM	// SDC 20050205
			if((mp3Ctl.WR.sts != 00) && ( mp3Ctl.WR.sts != 20 ) && ( mp3Ctl.WR.sts != 0xff ))
			{	// WRITE摦嶌拞偼張棟傪敳偗傞
				return;
			}
// SDC 20050123			if(gu08_sts_PowerSave != 0)
			if( gu08_sts_PowerSave == 1 )									// SDC 20050123
			{	// WRITE摦嶌拞偺僷儚乕僙乕僽拞傕張棟傪敳偗傞
				return;
			}
#else
			if((( mp3Ctl.WR.sts !=  0 ) &&
				( mp3Ctl.WR.sts != 20 ) &&
				( mp3Ctl.WR.sts != 0xff )) ||
			   ( gu08_sts_PowerSave == 1 ))									// WRITE 摦嶌拞丄僷儚乕僙乕僽拞偼張棟傪敳偗傞
				return;

			if( gu08_sts_UDFDISC )
				song_parts = play->song;
#endif
			scc_crt =														// SDC 20050121	No.xx4
			play->sects = 0;
#if	ID3TAG	//[dyna-DM]
			play->flgs &= ~BIT_WR_END;
#if	!ROM	// SDC 20050205
			if( gu08_sts_UDFDISC )											// UDF 偼僞僌夝愅偟側偄
				play->flgs |= ( BIT_ID3V1_END | BIT_ID3V2_END );
#endif
#else
			play->flgs = 0x00;
#endif

#if 0
			// PlayList斣崋偐傜僼傽僀儖No乮俢俼俙俵僀儞僨僋僗乯偵曄姺
			song = ( play->song - 100 ) + stInfoArea.hexTotalFolder + 1;
			get_FAT_data( song, fat_data );
#else
			get_FAT_data( play->song, fat_data );
#endif

#if	ROM	// SDC 20050202
			//奐巒僙僋僞乕庢摼
			tmp_l.uc.ll = fat_data[22];
			tmp_l.uc.lh = fat_data[21];
			tmp_l.uc.hl = fat_data[20];
			tmp_l.uc.hh = 0;
			play->stl = tmp_l.ul;
			play->stb = 0;
			mp3Ctl.WR.begin_sector = tmp_l.ul + 150L;

			//廔椆僙僋僞乕庢摼
			tmp_l.uc.ll = fat_data[25];
			tmp_l.uc.lh = fat_data[24];
			tmp_l.uc.hl = fat_data[23];
			tmp_l.uc.hh = 0;
			play->enl = tmp_l.ul;

			mp3Ctl.WR.conn_mode = 0x05;
			mp3Ctl.WR.threshold = ( gl_buff_max + 1L ) - ( 1182L * gi_ThreshSects );	// WRITE嵞奐埵抲傪32僙僋僞慜偵
			mp3Ctl.WR.end_sector = tmp_l.ul + 150L;
#else
			// 僼傽僀儖丒僽儘僢僋忣曬僙僢僩
			MP3Ctrl_SetWriteInfo( fat_data, play );
#endif

			if( mp3Ctl.WR.sts == 0xff )
			{
// SDC 20050121				MP3Ctrl_Write_Restart(  );
				gu08_GotoMsfSC = 1;											// SDC 20050121
				mp3Ctl.WR.sts = 2;
				if( gu08_sts_PowerSave > 1 )								// SDC 20050123
					mp3Ctl.WR.sts = gu08_sts_PowerSave;						// 僷儚乕僙乕僽僗僥乕僞僗暅婣 //僷儚乕僙乕僽暅婣屻丄怴婯棴崬傊
			}else if( mp3Ctl.WR.sts != 20 )
			{
				MP3Ctrl_Write_Start(  );
#if	ID3TAG	// SDC 20050202
				if( !( play->flgs & BIT_ID3V1_END ))						// V1 夝愅偺帪偼
#if	ID3TEST	// SDC 20050216
				{															// 廔椆埵抲 -127byte 偺僙僋僞偐傜廔椆僙僋僞傑偱棴傔傞
					mp3Ctl.WR.begin_sector = mp3Ctl.WR.end_sector;
					if( mp3Reg.rcenb < 127 )
						mp3Ctl.WR.begin_sector--;
				}
#else
					mp3Ctl.WR.begin_sector = mp3Ctl.WR.end_sector - 1;		// 廔椆僙僋僞亅侾偐傜廔椆僙僋僞傑偱棴傔傞
#endif
				else if( !( play->flgs & BIT_ID3V2_END ))					// V2 夝愅偺帪偼
					mp3Ctl.WR.end_sector = mp3Ctl.WR.begin_sector + 2;		// 奐巒僙僋僞偐傜奐巒僙僋僞亄俀傑偱棴傔傞
#endif
			}
			else
			{
				mp3Ctl.WR.wqok = mp3Ctl.WR.begin_sector;
				MP3Ctrl_Write_Restart(  );
			}
			play->sts = 2;
			break;

		case 2:				// 棴傔崬傒
#if	ROM	// SDC 20050205
			info = MP3Ctrl_Write_GetStatus(  );
			if( info == 0x01 )
			{
				play->sects++;
				if( play->sects >= 31 )
#else
			switch( MP3Ctrl_Write_GetStatus() )
			{
			case 0x01:
				if( ++(play->sects) >= 31 )
#endif
				{
#if	!SAVE1TRK	// SDC 20050124
					if( mp3Ctl.PLAY[1 - slot].sts )
					{
						play->sts = 3;	// 奐巒懸偪
					}
					else
#endif
					{
						play->sts = 4;	// 嵞惗僷儔儊僞愝掕
					}
				}
#if	ROM	// SDC 20050205
			}
			if( info == 0x81 )
			{
#else
				break;

			case 0x81:
#endif
				// WRITE掆巭偟偰偟傑偭偨
#if	ID3TAG	// SDC 20050202
				play->flgs |= BIT_WR_END;
#else
				play->flgs |= 0x01;	// 棴傔崬傒嵪傒僼儔僌僙僢僩
#endif

#if	!SAVE1TRK	// SDC 20050124
				if( mp3Ctl.PLAY[1 - slot].sts )
				{
					play->sts = 3;	// 奐巒懸偪
				}
				else
#endif
				{
					play->sts = 4;	// 嵞惗僷儔儊僞愝掕
				}
			}
			break;

#if	!SAVE1TRK	// SDC 20050124
		case 3:				// 奐巒懸偪
			if( MP3Ctrl_Write_GetStatus(  ) == 0x81 )
			{
				// WRITE掆巭偟偨
#if	ID3TAG	// SDC 20050202
				play->flgs |= BIT_WR_END;
#else
				play->flgs |= 0x01;	// 棴傔崬傒嵪傒僼儔僌僙僢僩
#endif
				break;
			}
			if( mp3Ctl.PLAY[1 - slot].sts )
			{
				break;
			}
			play->sts = 4;
//      break;
#endif

			// Fall Through 
		case 4:				// 嵞惗僷儔儊僞愝掕
			mp3Ctl.RD.slot = slot;

			if( checkReadTop( play ) == FALSE )								// SDC 20050121	No.xx4
				break;														// 

			DrvDSP_BIOS_WriteRegMP3( 0x3C, 0x01 );
#if	ROM	// SDC 20050202
			Common_Wait_1mS();	// RSPCLR

			get_FAT_data( play->song, fat_data );

			//僼傽僀儖挿庢摼
			tmp_l.uc.ll = fat_data[29];
			tmp_l.uc.lh = fat_data[28];
			tmp_l.uc.hl = fat_data[27];
			tmp_l.uc.hh = fat_data[26];
			mp3Reg.rcsiz = tmp_l.ul;
			mp3Ctl.RD.slot = slot;

			tmp_l.ul &= 0x7ff;
			if( !tmp_l.ul )
			{
				tmp_l.ul = 0x800;
			}
			tmp_l.ul--;
			play->enb = tmp_l.ul;

			mp3_store_fileinfo( play->stl, play->stb, play->enl, play->enb );
#endif

#if	ID3TAG	// SDC 20050202
			if( !( play->flgs & BIT_ID3V2_END ))
			{
				MP3Ctrl_ID3_cehckLBN( play );

				if( play->sts == 1 )						// LBN NG 棴傔捈偟
					break;
			}
#endif

#if	ID3SELF	// SDC 20050216
			if( !( play->flgs & BIT_ID3V1_END ))
			{												// ID3V1 TAG 帺屓夝愅
				MP3Ctrl_ID3SelfCheck( play );
			}
#endif

#if	!ROM
		  if( !gu08_sts_UDFDISC )
#endif
			mp3_set_sectors(  );
#if	ID3TAG	// SDC 20050120
			if( !( play->flgs & BIT_ID3V1_END ))
				mp3Ctl.RD.mode = 0x0C;						// ID3V1 read
			else if( !( play->flgs & BIT_ID3V2_END ))
				mp3Ctl.RD.mode = 0x0D;						// ID3V2 read
			else
				mp3Ctl.RD.mode = 0x02;						// MP3   read
#else
#if	ROM	// SDC 20050202
			MP3Ctrl_Read_SetMode( 0x02 );	// READ宯 @MP3
#else
			mp3Ctl.RD.mode = 0x02;			// READ宯 @MP3
#endif
			play->flgs |= 0x02;												// SDC 20050118	No.xx1
#endif
			MP3Ctrl_Read_Start(  );			//Sxxx 

#if	!ROM	// SDC 20050205
			tmp_timing5 = 0;		// SDC 050121
			play->sts = 5;
#endif

#if	ID3TAG	// SDC 20050202
			if( play->flgs & BIT_WR_END )
#else
			if( play->flgs & 0x01 )
#endif
			{
				play->sts = 6;	// 廔椆懸偪
#if	ROM	// SDC 20050205
				break;
#endif
			}
#if	ROM	// SDC 20050205
			play->sts = 5;
			tmp_timing5 = 0;		// SDC 050121
#endif
			break;
		case 5:			// WRITE忬懺妋擣
#if	ROM	// SDC 20050205
			info = MP3Ctrl_Write_GetStatus(  );
			if( info == 0x81 )
#else
			if( MP3Ctrl_Write_GetStatus() == 0x81 )
#endif
			{
#if	!ROM	// SDC 20050205
				if( !gu08_sts_UDFDISC || !flag_flagment )
				{
#endif
				// 棴傔崬傒廔椆
					play->sts = 6;
#if	ROM	// SDC 20050205
					break;
#else
				}else
				{	//師僽儘僢僋桳傝
					song_parts++;
					get_FAT_data( song_parts, fat_data );	//師僽儘僢僋偺忣曬傪庢摼

					// 僼傽僀儖丒僽儘僢僋忣曬僙僢僩
					MP3Ctrl_SetWriteInfo( fat_data, play );

					{
						mp3Ctl.WR.wqok = mp3Ctl.WR.begin_sector;	//捛婰傪梫媮
						MP3Ctrl_Write_Restart(  );					//
					}
				}
#endif
			}

⌨️ 快捷键说明

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