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

📄 rsm_util.h

📁 凌阳8202T的红外接收代码及LED屏的驱动代码
💻 H
📖 第 1 页 / 共 5 页
字号:
            #endif
        }
       else
#endif
       {
#ifdef SETUP_IN_FLASH
#ifdef RW_NVMEM   
            if (iAddr > (int)SETUP_CHECKSUM_I2C_YA)
              result = WriteToNVMEM(TYPE_SETUP_W, iAddr, bData, len);
            else
              result = WriteToNVMEM(TYPE_SETUP_NW, iAddr, bData, len);
              
#else //RW_NVMEM

            //result = FlashEraseSector(FLASH_ERASE_SECTOR);

        	for (k=0; k<len;k++)
        	{
			j=iAddr+k;
        		p=(BYTE*)&disc_resume[TOTAL_RESUME+1].disc_info;
        		
 			if (j>=(SETUP_MENU_BASE+SIZE_PER_ID)) 
 			//Wrap around for the next 64 (SIZE_PER_ID) bytes for setup
 			{
 				j-= SIZE_PER_ID;
 				p=(BYTE*)&disc_resume[TOTAL_RESUME+2].disc_info;

 			}
                                          
        		*(p+j)=*bData++;
        	}

//swpong 2006 0404
#ifdef FLASH_HISTORY       
            // Process for setup info cross two blocks
            // case 1 : start in 1st, end in 1st
            // case 2 : start in 1st, end in 2nd
            // case 3 : start in 2nd, end in 2nd
            if (iAddr < (SETUP_MENU_BASE + SIZE_PER_ID))
            {
         	  p=(BYTE*)&disc_resume[TOTAL_RESUME+1].disc_info;
         	  padr = (UINT32)p;
         	  iStart1 = padr - (UINT32)disc_resume + iAddr - SETUP_MENU_BASE;

         	  if ((iAddr + len) >= (SETUP_MENU_BASE + SIZE_PER_ID))
         	  {
         		len1 = ((SETUP_MENU_BASE + SIZE_PER_ID) - iAddr);
         		len2 = len - len1;
         		p=(BYTE*)&disc_resume[TOTAL_RESUME+2].disc_info;
         		qadr = (UINT32)p - (UINT32)disc_resume;
         		pdata2 = pdata1 + len1;
         		
         	    result = Resume_Info_Write_Update(iStart1, (BYTE *)disc_resume, i, pdata1, len1);
         		result = Resume_Info_Write_Update(qadr, (BYTE *)disc_resume, i, pdata2, len2); 
         	  }         	
         	  else
         	  {
         	    result = Resume_Info_Write_Update(iStart1, (BYTE *)disc_resume, i, pdata1, len);
         	  }
            }
            else // iAddr in second block
            {
         	  p=(BYTE*)&disc_resume[TOTAL_RESUME+2].disc_info;
         	  padr = (UINT32)p - (UINT32)disc_resume + iAddr - (SETUP_MENU_BASE + SIZE_PER_ID);
         	  //iStart1 = padr - (UINT32)disc_resume + iAddr - (SETUP_MENU_BASE + SIZE_PER_ID);
         	  result = Resume_Info_Write_Update(padr, (BYTE *)disc_resume, i, pdata1, len); 
            }        
#else
            if(is_write_flash==1)
            {
 	            result = Resume_Info_Write(rsm_flash_start_addr,(BYTE*)disc_resume,i);
            }    
#endif        

#endif //RW_NVMEM
#else
             	     result = WriteToI2c(0xa0,iAddr,bData,len) ;
#endif     
       }
       
	if( result < 0 )
	{//write fail
		printf("!!!!  ========  write flash error  ======== !!!!!\n");
	}
	/*
	#ifdef DVD_SERVO    //ycwen 2004/08/10 
	extern void    ClearServoCacheBuffer();
           ClearServoCacheBuffer(); 
     #endif 
     */
#endif//#ifndef DISC_ID_IN_FLASH
}

#ifdef 	RECORD_PER_SECOND		//Maoyong add pre-def condition 2004.02.20 
/*
*  power resume function for record every secode
*/   
static inline void power_rsm_ps_RsmInfo2Flash(int clr)
{
    static BYTE savetemparry[50];
    BYTE    *p;             
    
    //printf("!!!run save_tuner_setup ,size:%d\n",sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]));
    #ifdef SUPPORT_FILE_SYSTEM_MODE		
	if ((cd_type_loaded == CDROM) && (GetCurrentFileType() == CDROM_MPG)) 
		return ;
	#endif
    if( is_menu() || clr )
    {
		resumeMSF = 0;
		resumeTRK = 0;
		pFsJpeg->fsnav_dir_now = 0;
		pFsJpeg->fsnav_trk_now = 0;
		myTime=0;
    }else
    {
        if(cd_type_loaded!=CDDVD)
        {
            resumeMSF = s_msf&0x00ffffff;
            resumeTRK = cd_trk_now;
            if( (cd_type_loaded==CDROM)&&( !Is_MP3_STATE() ) ) 
            { 							//Jeff 20021114//nono 20021123 modified
				resumeMSF = 0;			//we only support MP3, not contain JPEG/Game
                
            }
        }
        else
        {
            resumeMSF = 1;
            if(play_state!=VCD_STATE_STOP)//20021014
				RSM_save(0xff,DVD_PRESTOP_RSM_ITEM); //chenzhao 2006-9-13 11:41 .
        }        
    }
	
  if(cd_type_loaded==CDDVD)
  	{
    	int k; 
    	int changlen=0;
    	BYTE first_flag=1;
    	p=(BYTE *)&pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM];    
    	for(k=(sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM])-1);k>=0;k--)
       		{
       	 		if(savetemparry[k] != p[k])
       	    		{
       	       			if(first_flag)
       	       				{
       	       		   			first_flag=0;
       	       		   			changlen=k;	
       	       				}	
       	    		}	
          		savetemparry[k]=p[k];
       		}
    	WriteToI2cA0(128,p,changlen+1);
    	//printf("len=%d\n",changlen+1);
    	first_flag=(BYTE)resumeMSF;		//in dvd mode resumeMSF only use flag!
   		WriteToI2cA0(128+sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM])+sizeof(resumeTRK),(BYTE *)&first_flag, sizeof(first_flag));
    	 
  }
  else
  	{   
    	printf("resumeTRK=%d\n",resumeTRK);
    	WriteToI2cA0(128+sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]),(BYTE *)&resumeTRK, sizeof(resumeTRK));
    	printf("resumeMSF:%x\n",resumeMSF);
    	WriteToI2cA0(128+sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM])+sizeof(resumeTRK),(BYTE *)&resumeMSF, sizeof(resumeMSF));
    	
    	printf("fsnav_dir_now:%d\n", pFsJpeg->fsnav_dir_now);
    	//it only cdrom need record
    	if(cd_type_loaded==CDROM)		
    	{
    	  	WriteToI2cA0(128 + sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]) + sizeof(resumeTRK) + sizeof(resumeMSF), 
			(BYTE *)&(pFsJpeg->fsnav_dir_now), sizeof(pFsJpeg->fsnav_dir_now));
    		printf("fsnav_trk_now:%d\n", pFsJpeg->fsnav_trk_now);
    		
    	    WriteToI2cA0(128 + sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]) + sizeof(resumeTRK) + sizeof(resumeMSF) + sizeof(pFsJpeg->fsnav_dir_now), 
			(BYTE *)&(pFsJpeg->fsnav_trk_now), sizeof(pFsJpeg->fsnav_trk_now));
    		printf("myTime:%d\n", myTime);
    		
    	    WriteToI2cA0(128 + sizeof(pDSV->rsm_info[DVD_PRESTOP_RSM_ITEM]) + sizeof(resumeTRK) + sizeof(resumeMSF) + sizeof(pFsJpeg->fsnav_dir_now) + sizeof(pFsJpeg->fsnav_trk_now), 
			(BYTE *)&myTime, sizeof(myTime));
       }		
  	}	
}
#endif	//end	#ifdef 	RECORD_PER_SECOND	


#ifndef DISC_ID_IN_FLASH //put them at the beginning
/*========================================================================
 record resume play func's save and load realized functions prototypes
 =========================================================================*/
/*
*  last memory function
*/
/*
#define SETUP_MENU_BASE   0
#define DVD_INFO_BASE   128
#define CDROM_INFO_BASE 180
#define CDDA_INFO_BASE  200
#define VCD_INFO_BASE   220

//Maoyong 2004.04.07 for all resume use
#define DVD_DISC_INFO  244
#define CDDA_DISC_INFO 248
#define VCD_DISC_INFO  252
*/
//nono according to yltseng's suggestion.20050812
//Linrc move to memmap_I2C.h 2006-2-28 10:19
#define SETUP_MENU_BASE   0 
/*#define DVD_INFO_BASE   110//128
#define CDROM_INFO_BASE 162//180
#define CDDA_INFO_BASE  182//200
#define VCD_INFO_BASE   187//220*/
//denghg change resume  Addr  because resumeTRK byte -->now UINT32 2005-12-2 01:49     

//#define DVD_INFO_BASE    104//110//128
//#define CDROM_INFO_BASE  156//162//180
//#define CDDA_INFO_BASE   176//182//200
//#define VCD_INFO_BASE    184//187//220


//#define DVD_DISC_INFO  192//244
//#define CDDA_DISC_INFO 196//248
//#define VCD_DISC_INFO  200//252
#define DRM_INFO       208

#endif //#ifndef DISC_ID_IN_FLASH


#ifdef MP3_POWER_RESUME// 0//def POWER_RESUME//mp3 power resume needto be fixed later.
/**********************************************************************************************
	Function : To identify whether the current MP3 disc is the one played last time
	return 1 : yes
	       0 : no
	Created by caiyh , 17:03 , Nov 5th , 2004
**********************************************************************************************/
UINT8 IsTheSameMP3 ( void )
{
	UINT32 fsnav_dir_now = 0 , 
	       fsnav_trk_now = 0 ,
	       first_mp3_entry = 0 ,
	       MSFFlag = 0 ,
	       msf = 0 ;
	BYTE  v [ 4 ] ;

	fsnav_dir_now = ReadFromI2cA0_32 ( CDROM_INFO_BASE , v , sizeof( pFsJpeg -> fsnav_dir_now ) ) ;
	fsnav_trk_now = ReadFromI2cA0_32 ( CDROM_INFO_BASE + sizeof( pFsJpeg -> fsnav_dir_now ) ,
			v , sizeof( pFsJpeg -> fsnav_trk_now ) ) ;
	MSFFlag = ReadFromI2cA0_32 ( CDROM_INFO_BASE + sizeof( pFsJpeg -> fsnav_dir_now ) 
		  + sizeof( pFsJpeg -> fsnav_trk_now ) , v , sizeof( MSFFlag ) ) ;
	/* read the information recorded from i2c ,
	   annotated by caiyh , 17:03 , Nov 5th , 2004 */
	
	first_mp3_entry = pFsJpeg -> Dir_entry [ fsnav_dir_now ] ;
	fsnav_trk_now += first_mp3_entry ;
	msf = FS_GetFileProperty(fsnav_trk_now,FILE_PROPERTY_LOCATION);
	//msf = iso9660_file [ fsnav_trk_now ] . loc ;
	if ( msf == MSFFlag )
		return 1 ;
	else 
		return 0 ;
	/* according to the dir and trk recorded in i2c, to find the msf specified ,
	   and compare the current msf with the one read from i2c ,
	   annotated by caiyh , 17:03 , Nov 5th , 2004 */
}

/**************************************************************
	Function : read the parameters about MP3 resume
	para = 0 : dir
	       1 : trk
	       2 : msf
	       3 : myTime
	return : the value of dir trk msf or myTime
	Created by caiyh , 09:24 , Nov 22nd , 2004
**************************************************************/
UINT32 ReadSameMP3Para ( UINT8 para )
{
	UINT32 result = 0 ;
	BYTE v [ 4 ] ;
	
#if  defined(STOP_RESUME_DVD_VCD)
	return 0;
#endif

	if ( para <=2 )
		result = ReadFromI2cA0_32 ( CDROM_INFO_BASE + para * 2 , v , 2 ) ;
	else if ( para == 3 )
		result = ReadFromI2cA0_32 ( CDROM_INFO_BASE + 8 , v , 4 ) ;
	// read parameter of mp3 resume from i2c , annotated by caiyh , 09:24 , Nov 22nd , 2004
	return result ;
}

/*********************************************************
	Function : clear msf about MP3 resume
	Created by caiyh , 09:34 , Nov 22nd , 2004
*********************************************************/
void ClrSameMP3Flag ( void )
{	
	UINT32 MSFFlag = 0 ;
	
	WriteToI2cA0 ( CDROM_INFO_BASE + 4 , ( BYTE * ) & MSFFlag , sizeof ( MSFFlag ) ) ;
	// clear msf of mp3 resume in i2c , annotated by caiyh , 09:34 , Nov 22nd , 2004
}
#endif   // POWER_RESUME

#if defined (POWER_RESUME)|| defined(SAME_DISC_RESUME)|| defined(RECORD_KEY)
void clr_rsm_info(void)
{//terry,2003/8/13 01:21AM    
    #ifdef DVD_5_DISC_RESUME//LIJD 2005-6-30 20:12
	if( is_cdg_disc(0) ||(cd_type_loaded==CDROM) || ((disp_trk_now==0)&&(cd_type_loaded!=CDDVD))  )
    #elif defined(STOP_RESUME_DVD_VCD)&&defined(DISC_ID_IN_FLASH)
    if( is_menu() || is_cdg_disc(0) || (pe_run==0) ||(play_state==VCD_STATE_OPEN)|| (!IS_DVD_VCD_DISC()) || (need_record==CLEAR_RECORD_FLAG))//shenyj add for alco177w vcd open resume
	#elif defined(POWER_OFF_NEED_DVD_RESUME)&&!defined(PARENTAL_DVD_NEDD_RESUME)//hongfeng modify 2006/2/27
	if(is_menu()||is_cdg_disc(0)||(cd_type_loaded==CDROM)||((disp_trk_now==0)&&(cd_type_loaded!=CDDVD)))
	#elif defined(POWER_OFF_NEED_DVD_RESUME)&&defined(PARENTAL_DVD_NEDD_RESUME)  //hongfeng 2006/3/31 17:53
	if(is_cdg_disc(0)||(cd_type_loaded==CDROM)||((disp_trk_now==0)&&(cd_type_loaded!=CDDVD)))	
	#else 
//	if( is_cdg_disc(0) ||(cd_type_loaded==CDROM) || ((disp_trk_now==0)&&(cd_type_loaded!=CDDVD))  )//hongfeng open.Nono mark it.20060401
    if( is_menu() || is_cdg_disc(0) || (pe_run==0) ||(cd_type_loaded==CDROM) || ((disp_trk_now==0)&&(cd_type_loaded!=CDDVD))  )
    #endif
    {
        printf("clr rsm info: %d %d %d %d\n",is_menu(),is_cdg_disc(0),pe_run,disp_trk_now);
        
        #if defined(STOP_RESUME_DVD_VCD)&&defined(DISC_ID_IN_FLASH)
        if(need_record == REAL_RECORD_VALUE)
            return;
        #endif

        resumeMSF = 0;
        resumeTRK = 0;
        pFsJpeg->fsnav_dir_now=0;
        pFsJpeg->fsnav_trk_now=0;
        myTime=0;
        
    }
}

static inline void same_disc_RsmInfo2Flash(int clr)
{
    
#ifdef FS_FILE_POWER_RESUME //qinhua,2006-6-13 05:03下午
 	Resume_hl_trk = 0;   //add by jiangtao for resume hl erro 2006-9-26 9:27
#endif    

#ifdef SUPPORT_WHEN_PLAY_MENU_NOT_SAVE_DISC
    if(is_menu())
    {
        if(cd_type_loaded==CDDVD)
        {
            if((disp_time ==0)||(get_tt_info(DISP_TT) == 0)
				||(get_tt_info(DISP_CH)==0))
  		        return;
        }
        else
            return;
    }
#endif//end=> #define  SUPPORT_WHEN_PLAY_MENU_NOT_SAVE_DISC

#ifdef SUPPORT_TEN_DISC_RESUME		//linrc add for 10 disc resume play 2005-5-12 10:09
	UINT32  info1;					//if you have any problem,see DOC file
	BYTE    *p;
	UINT32  MSFFlag = 0 ;
	UINT16  pos;
	BYTE    Resume_Now;
	BYTE    Resume_Index;
	BYTE    i;
   	UINT32  Rom_Info1;
	
	if(clr){};
	if(cd_type_loaded==CDUNKNOWN) return;

⌨️ 快捷键说明

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