📄 rsm_util.h
字号:
#ifdef DVD_5_DISC_RESUME//lijd 2005-6-16 15:56
if(cd_type_loaded!=DVD) return;
#endif
resumeMSF = s_msf&0x00ffffff;
resumeTRK = cd_trk_now;
#ifndef DONT_CLR_RSM //hongfeng add 2005-11-03
#ifdef POWER_RESUME
if(Is_MP3_STATE()==0) // don't clear the resume info of mp3 , added by caiyh , 10:53 , Nov 2nd , 2004
#endif // POWER_RESUME
clr_rsm_info();
#endif
if(cd_type_loaded!=CDDVD)
{
info1=M2I(gettrkmsf_leadout());
}
else
{
info1 = same_disc_vob11_pos;
}
#ifdef TEN_DISC_RESUME_DEBUG
printf("--- info1=0x%x ---\n",info1);
#endif
ReadFromI2cA0(TEN_DISC_INFO_ADDR,&Resume_Index, sizeof(Resume_Index));
if(Resume_Index>=RESUME_DISC_NUMBER)//hongfeng 2005-08-25
{
Resume_Index = 0;
}
Resume_Now = Resume_Index;
for(i=0;i<RESUME_DISC_NUMBER;i++)
{
ReadFromI2cA0(Info_I2C_ADDR[i],(BYTE *)&Rom_Info1,sizeof(Rom_Info1));
if(info1==Rom_Info1)
{
#ifdef TEN_DISC_RESUME_DEBUG
printf("--- Have Save Disc Resume zone ---\n");
#endif
Resume_Now = i;
if(Resume_Index!=0)
{
if(Resume_Now!=Resume_Index)
{
Resume_Index--;
}
}
else
{
Resume_Index = (RESUME_DISC_NUMBER-1);
if(Resume_Now==0)
{
Resume_Index = 0;
}
}
break;
}
}
#ifdef TEN_DISC_RESUME_DEBUG
printf("\n\n--- Disc->Resume_Now=%d ---\n",Resume_Now);
printf("--- Disc->Resume_Index+1=%d ---\n",Resume_Index+1);
printf("--- Info_I2C_ADDR[%d]=%d ---\n",Resume_Now,Info_I2C_ADDR[Resume_Now]);
#endif
WriteToI2cA0(Info_I2C_ADDR[Resume_Now],(BYTE *)&info1,sizeof(info1));
Resume_Index++;
WriteToI2cA0(TEN_DISC_INFO_ADDR,&Resume_Index,sizeof(Resume_Index));
/*ReadFromI2cA0(TEN_DISC_INFO_ADDR,&Resume_Now, sizeof(Resume_Now));
printf("--- Disc->Resume_Now=%d ---\n",Resume_Now);
Resume_Now--;
ReadFromI2cA0(Info_I2C_ADDR[Resume_Now],(BYTE *)&info1,sizeof(info1));
printf("--- info1=0x%x ---\n",info1);*/
p = (BYTE *)&pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM];
printf("--- Disc->Resume_Now=%x ---\n",Resume_Now);
pos = MSF_I2C_ADDR[Resume_Now];
//printf("--- Disc->Record_Now=%d ---\n",Disc->Record_Now);
printf("--- pos=%d ---\n",pos);
if(cd_type_loaded!=CDDVD)
{
if(cd_type_loaded==CDROM)
{//we only support MP3, not contain JPEG/Game
if(Is_MP3_STATE()==0) resumeMSF = 0;
printf("fsnav_dir_now:%d\n",pFsJpeg->fsnav_dir_now);
printf("fsnav_trk_now:%d\n",pFsJpeg->fsnav_trk_now);
printf("myTime:%d\n", myTime);
WriteToI2cA0(pos,(BYTE *)&pFsJpeg->fsnav_dir_now, sizeof(pFsJpeg->fsnav_dir_now));
WriteToI2cA0(pos+sizeof(pFsJpeg->fsnav_dir_now),(BYTE *)&pFsJpeg->fsnav_trk_now, sizeof(pFsJpeg->fsnav_trk_now));
MSFFlag = mp3_file_msf ( pFsJpeg -> fsnav_trk_now ) ;
// get the msf of current trk , added by caiyh , 15:55 , Nov 5th , 2004
WriteToI2cA0 ( pos + sizeof(pFsJpeg->fsnav_dir_now)
+ sizeof ( pFsJpeg -> fsnav_trk_now ) , ( BYTE * ) & MSFFlag ,
sizeof(MSFFlag));
// write the msf of current trk to i2c , added by caiyh , 15:55 , Nov 5th , 2004
WriteToI2cA0 ( pos + sizeof ( pFsJpeg -> fsnav_dir_now )
+ sizeof ( pFsJpeg -> fsnav_trk_now ) + sizeof ( MSFFlag ) ,
( BYTE * ) & myTime , sizeof ( myTime ) ) ;
// write the myTime of current trk to i2c , modified by caiyh , 17:57 , Nov 16th , 2004
printf("MSFFlag:%d\n", MSFFlag);
}
else
{
printf("resumeMSF:%x\n",resumeMSF);
WriteToI2cA0(pos,(BYTE *)&resumeTRK, sizeof(resumeTRK));
WriteToI2cA0(pos+sizeof(resumeTRK),(BYTE *)&resumeMSF, sizeof(resumeMSF));
}
}
else
{
//resumeMSF = 1;//terry 2003-8-12 14:20
if(play_state!=VCD_STATE_STOP)
RSM_save(0xff,DVD_PRESTOP_RSM_ITEM); //chenzhao 2006-9-13 11:41 .
#ifndef DONT_CLR_RSM //hongfeng add 2005-11-03
clr_rsm_info();//terry,2003/8/13 01:21AM
#endif
printf("sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM])=%d\n",sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]));
printf("sizeof(resumeMSF)=%d\n",sizeof(resumeMSF));
printf("resumeMSF:%d\n",resumeMSF);
WriteToI2cA0(pos,p, sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]));
WriteToI2cA0(pos+sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]),(BYTE *)&resumeMSF, sizeof(resumeMSF));
}
#else//#ifdef SUPPORT_TEN_DISC_RESUME //linrc add for 10 disc resume play 2005-5-12 10:09
BYTE *p;
#if defined(POWER_RESUME) || defined(SAME_DISC_RESUME)
UINT32 MSFFlag = 0 ;
#endif // POWER_RESUME , added by caiyh , 15:55 , Nov 5th , 2004
if(clr){}//freyman just for warning message
#ifdef STOP_RESUME_DVD_VCD
if(cd_type_loaded==CDDA)
return;
#endif
if(cd_type_loaded==CDUNKNOWN) return;
#ifdef DVD_5_DISC_RESUME//lijd 2005-8-1 11:04
if(cd_type_loaded!=CDDVD)
return;
#endif
#ifndef DVD_5_DISC_RESUME//lijd 2005-6-30 22:55
//Jack 06/10/02 added for simply release,any question pls call me:EXT 8304
if(!( (clr==0xf0)&&(cd_type_loaded!=CDROM)&&(cd_type_loaded!=CDDVD) ))
resumeMSF = s_msf&0x00ffffff;
#endif
//Jack 06/10/02 added for simply release,any question pls call me:EXT 8304
if(!( (clr==0xf0)&&(cd_type_loaded!=CDROM)&&(cd_type_loaded!=CDDVD) ))
resumeTRK = cd_trk_now;
#if defined(POWER_RESUME)||defined(SAME_DISC_RESUME)||defined(TURN_OFF_POWER_RESUME) //zhongshan added other resume 2007-5-7 05:33PM
#ifndef STOP_RESUME_DVD_VCD//shenyj add for alco mp3 resume 050226
if(Is_MP3_STATE()==0) // don't clear the resume info of mp3 , added by caiyh , 10:53 , Nov 2nd , 2004
#endif
#endif // POWER_RESUME
{
#ifndef DONT_CLR_RSM //hongfeng add 2005-11-03
//Jack 06/10/02 added for simply release,any question pls call me:EXT 8304
if(!( (clr==0xf0)&&(cd_type_loaded!=CDROM)&&(cd_type_loaded!=CDDVD) ))
clr_rsm_info(); //terry,2003/8/13 01:21AM
#endif
}
//#ifdef RECORD_KEY//zhaoyanhua 03-11-2 18:56 //Mark by maoyong 2004.04.07
//write DISC INFO to I2C
UINT32 info1;
int pos= 0;
#ifdef STOP_RESUME_DVD_VCD
if(cd_type_loaded == CDROM)
return;
#endif
if(cd_type_loaded==CDDVD) {
rsm_disc_type=0;
pos = DVD_DISC_INFO;
}
else if (cd_type_loaded==CDDA){
rsm_disc_type=2;
#ifdef ONLY_PRE_DISC_RESUME
pos = DVD_DISC_INFO;
#else
pos = CDDA_DISC_INFO;
#endif
}
else if (cd_type_loaded!=CDROM){
rsm_disc_type=3;
#ifdef ONLY_PRE_DISC_RESUME
pos = DVD_DISC_INFO;
#else
pos = VCD_DISC_INFO;
#endif
}
else {
rsm_disc_type=1;
pos = CDROM_INFO_BASE;
}
#if 0//def POWER_RESUME // qinhua,mark it,2006-7-1 03:06下午
else if(Is_MP3_STATE()==0) /* to add the function of mp3 power resume ,
added by caiyh , 11:05 , Nov 2nd , 2004 */
#else
//else
#endif // POWER_RESUME
//return; //qinhua,mark it,2006-7-1 03:06下午
//Res=check_cdtype();
if(cd_type_loaded!=CDDVD)
info1=M2I(gettrkmsf_leadout()); //get from sysmain2.c
else//CDDVD
info1 = same_disc_vob11_pos; //search_file("VTS_01_1.VOB"); //get from atapi_if728.c
WriteToI2cA0(pos,(BYTE *)&info1,sizeof(info1));
//#endif
{
printf("save rsm info\n");
p=(BYTE *)&pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM];
if(cd_type_loaded!=CDDVD)
{
if(cd_type_loaded==CDROM)
{
#ifdef FS_FILE_POWER_RESUME //qinhua,2006-6-13 05:03下午
#if (defined (SUPPORT_USB)||defined (SUPPORT_CARD_STORAGE) ||defined (SPHE8202_CARD_STORAGE) )&&!defined(SUPPORT_MP4_USB_RESUME) //xlluo add SUPPORT_MP4_USB_RESUME 05/31/07
if(media_type==MEDIA_CD)
#endif
{
if(Is_MP3_STATE())
resumeMSF = myTime;
else if (((GetCurrentFileType() == CDROM_MP4)||(GetCurrentFileType() == CDROM_AVI ))&&!(IS_FILE_TYPE_MPG()||IS_FILE_TYPE_CDXA()))
resumeMSF = disp_time;
else
resumeMSF = 0;
resumeTRK= pFsJpeg -> fsnav_trk_will;
resume_fsnav_dir=pFsJpeg->fsnav_dir_will;
Resume_Track_msf = FS_GetFileProperty(resumeTRK,FILE_PROPERTY_LOCATION);
//Resume_Track_msf =iso9660_file [ resumeTRK ].loc;
Resume_func_btn=pFsJpeg->gifsFuncBtn;
Resume_hl_trk = pFsJpeg->file_current+pFsJpeg->file_page_now * PER_PAGE;
WriteToI2cA0(CDROM_INFO_BASE,(BYTE *)&resume_fsnav_dir, sizeof(resume_fsnav_dir));
//resume_fsnav_dir
WriteToI2cA0(CDROM_INFO_BASE+sizeof(resume_fsnav_dir),(BYTE *)&resumeTRK, sizeof(resumeTRK));
//resumeTRK
WriteToI2cA0(CDROM_INFO_BASE+sizeof(resume_fsnav_dir)+sizeof(resumeTRK),(BYTE *)&Resume_Track_msf, sizeof(Resume_Track_msf));
//Resume_Track_msf
WriteToI2cA0(CDROM_INFO_BASE+sizeof(resume_fsnav_dir)+sizeof(resumeTRK)+sizeof(Resume_Track_msf),(BYTE *)&resumeMSF, sizeof(resumeMSF));
//resumeMSF
WriteToI2cA0(CDROM_INFO_BASE+sizeof(resume_fsnav_dir)+sizeof(resumeTRK)+sizeof(Resume_Track_msf)+sizeof(resumeMSF), &Resume_func_btn, sizeof(Resume_func_btn));
//old_ControlArea
WriteToI2cA0(CDROM_INFO_BASE+sizeof(resume_fsnav_dir)+sizeof(resumeTRK)+sizeof(Resume_Track_msf)+sizeof(resumeMSF)+sizeof(Resume_func_btn), &Resume_hl_trk, sizeof(Resume_hl_trk));
#if SAVE_CDROM_DEBUG
printf("---WRITE----resume_fsnav_dir=%d---------\n\n",resume_fsnav_dir);
printf("---WRITE----resumeTRK=%d---------\n\n",resumeTRK);
printf("---WRITE----Resume_Track_msf=%d---------\n\n",Resume_Track_msf);
printf("---WRITE----resumeMSF=%d---------\n\n",resumeMSF);
printf("---WRITE----Resume_func_btn=%d---------\n\n",Resume_func_btn);
#endif
}
#elif defined (MP3_POWER_RESUME)
//we only support MP3, not contain JPEG/Game
if(Is_MP3_STATE()==0) resumeMSF = 0;
printf("fsnav_dir_now:%d\n",pFsJpeg->fsnav_dir_now);
printf("fsnav_trk_now:%d\n",pFsJpeg->fsnav_trk_now);
printf("myTime:%d\n", myTime);
WriteToI2cA0(CDROM_INFO_BASE,(BYTE *)&pFsJpeg->fsnav_dir_now, sizeof(pFsJpeg->fsnav_dir_now));
WriteToI2cA0(CDROM_INFO_BASE+sizeof(pFsJpeg->fsnav_dir_now),(BYTE *)&pFsJpeg->fsnav_trk_now, sizeof(pFsJpeg->fsnav_trk_now));
MSFFlag = mp3_file_msf ( pFsJpeg -> fsnav_trk_now ) ;
// get the msf of current trk , added by caiyh , 15:55 , Nov 5th , 2004
WriteToI2cA0 ( CDROM_INFO_BASE + sizeof(pFsJpeg->fsnav_dir_now)
+ sizeof ( pFsJpeg -> fsnav_trk_now ) , ( BYTE * ) & MSFFlag ,
sizeof(MSFFlag));
// write the msf of current trk to i2c , added by caiyh , 15:55 , Nov 5th , 2004
WriteToI2cA0 ( CDROM_INFO_BASE + sizeof ( pFsJpeg -> fsnav_dir_now )
+ sizeof ( pFsJpeg -> fsnav_trk_now ) + sizeof ( MSFFlag ) ,
( BYTE * ) & myTime , sizeof ( myTime ) ) ;
// write the myTime of current trk to i2c , modified by caiyh , 17:57 , Nov 16th , 2004
printf("MSFFlag:%d\n", MSFFlag);
}
#endif//#ifdef FS_FILE_POWER_RESUME //qinhua,2006-6-13 05:03下午
}
else //cd/vcd
{
int pos;
if(cd_type_loaded==CDDA) pos=CDDA_INFO_BASE;
else pos=VCD_INFO_BASE;
printf("resumeMSF:%x\n",resumeMSF);
//Jack 06/10/02 added for simply release,any question pls call me:EXT 8304
if(clr == 0xf0)
{
UINT32 PreresumeTRK;
UINT32 PreresumeMSF;
PreresumeTRK = resumeTRK;
PreresumeMSF = resumeMSF;
resumeTRK = 0;
resumeMSF = 0;
WriteToI2cA0(pos,(BYTE *)&resumeTRK, sizeof(resumeTRK));
WriteToI2cA0(pos+sizeof(resumeTRK),(BYTE *)&resumeMSF, sizeof(resumeMSF));
resumeTRK = PreresumeTRK;
resumeMSF = PreresumeMSF;
}
else
{
WriteToI2cA0(pos,(BYTE *)&resumeTRK, sizeof(resumeTRK));
WriteToI2cA0(pos+sizeof(resumeTRK),(BYTE *)&resumeMSF, sizeof(resumeMSF));
}
}
}
else //dvd
{
//resumeMSF = 1;//terry 2003-8-12 14:20
#ifdef DVD_5_DISC_RESUME//lijd 2005-7-13 17:14
if((play_state!=VCD_STATE_STOP)&&(StopTimes!=1)&&(clr!=0xf0)) //Jack 06/10/02 added for simply release
RSM_save(0xff,DVD_PRESTOP_RSM_ITEM); //chenzhao 2006-9-13 11:41 .
#else
if((play_state!=VCD_STATE_STOP)&&(clr!=0xf0)) //Jack 06/10/02 added for simply release
RSM_save(0xff,DVD_PRESTOP_RSM_ITEM); //chenzhao 2006-9-13 11:41 .
#endif
#ifndef DONT_CLR_RSM //hongfeng add 2005-11-03
clr_rsm_info();//terry,2003/8/13 01:21AM
#endif
#if defined(STOP_RESUME_DVD_VCD)&&defined(DISC_ID_IN_FLASH)
if(need_record == REAL_RECORD_VALUE)
resumeMSF = 1;
#endif
#ifndef SUPPORT_LAST_MEMERY
clr_rsm_info();//terry,2003/8/13 01:21AM
#endif//end=> #ifndef SUPPORT_LAST_MEMERY
printf("resumeMSF:%d\n",resumeMSF);
WriteToI2cA0(DVD_INFO_BASE,p, sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]));
WriteToI2cA0(DVD_INFO_BASE+sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]),(BYTE *)&resumeMSF, sizeof(resumeMSF));
//print_block(p,sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]));
// psprintf(debug_buffer,"pDSV->rsm_info[i].dRSM_TTN:%x\n",pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM].dRSM_TTN);
// UART0_puts(debug_buffer);
// psprintf(debug_buffer,"pDSV->rsm_info[i].dRSM_PTTN:%x\n",pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM].dRSM_PTTN);
// UART0_puts(debug_buffer);
// psprintf(debug_buffer,"pDSV->rsm_info[i].dRSM_AGLN:%x\n",pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM].dRSM_AGLN);
// UART0_puts(debug_buffer);
// psprintf(debug_buffer,"pDSV->rsm_info[i].dRSM_ASTN:%x\n",pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM].dRSM_ASTN);
// UART0_puts(debug_buffer);
// psprintf(debug_buffer,"resumeMSF:%x\n",resumeMSF);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -