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

📄 polling.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
extern void write_reg_bit(int addr,BYTE bit,BYTE val);

BYTE bHpPlug;  // 1: headphone plug in   0:headphone not plug in
BYTE bCounter[2];
void polling_headphone(void)
{
	static BYTE bOldStas,bNewStas;
	
	if(TEST_HEADPHONE_SENSE)
	{
		bCounter[0]++;
		if(bCounter[0]<5 && !TEST_HEADPHONE_SENSE)
			bCounter[0] = 0;
		if(bCounter[0] == 5)
		{
			bHpPlug = 1;
			bCounter[0] = 0;
		}
	}
	else
	{
		bCounter[1]++;
		if(bCounter[1]<5 && TEST_HEADPHONE_SENSE)
			bCounter[1] = 0;
		if(bCounter[1] == 5)
		{
			bHpPlug = 0;
			bCounter[1] = 0;
		}
	}
	bNewStas = bHpPlug;
	
	if(bHpPlug && (bNewStas!=bOldStas))
	{
	    ddx_masterMute(1);
		ddx_disableEPAD();
		write_reg_bit(0x04,6,1);//set channel 7/8 to binary mode
		write_reg_bit(0x04,7,1);
		ddx_masterMute(0);

	}
	else if((!bHpPlug) && (bNewStas!=bOldStas))
	{
	    ddx_masterMute(1);
		write_reg_bit(0x04,6,0);//set channel 7/8 to ddx mode
		write_reg_bit(0x04,7,0);
		ddx_enableEPAD();
		ddx_masterMute(0);
	}
	bOldStas = bNewStas;
}
#endif


void disp_fan_in(void)
{
    extern BYTE    osd0_state;           //OSD0 state

    if (osd0_state>1)
    {
        #ifdef SUPPORT_FUNCTION_MENU
        if ((full_scrn!=SETUP) && (full_scrn!=SETUP_PLUS))
        #else
        if (full_scrn!=SETUP)
        #endif //end #ifdef SUPPORT_FUNCTION_MENU
            DispPolling(2);
    }
}

#ifdef QSI_PLATFORM//liulifeng add 2004-10-13////jhuang 2004/11/23
enum  {
    ERROR_CODE_N = 0x0,
    ERROR_CODE_1,
    ERROR_CODE_2,
    ERROR_CODE_3,
    ERROR_CODE_4
};

BYTE QSI_PIPO_error_code_station = ERROR_CODE_3;
BYTE QSI_PIPO_error_code_time_flag=0;
static inline void QSI_PIPO_error_code ( void )
{
    if ( QSI_PIPO_error_code_station != 0 )//error occur
    {

        if ( QSI_PIPO_error_code_time_flag < 21)
        {
            if ( ( (QSI_PIPO_error_code_time_flag / 3) %2 )
               ||(  QSI_PIPO_error_code_time_flag  > ((QSI_PIPO_error_code_station - 1 )*6 + 3))
               )
                GPIO_O_SET(GPIO_IS_FOR_SYSTEM_LED,0); // led Off
            else
                GPIO_O_SET(GPIO_IS_FOR_SYSTEM_LED,1); // led On
        }
        else if ( QSI_PIPO_error_code_time_flag < 25 )
        {
            GPIO_O_SET(GPIO_IS_FOR_SYSTEM_LED,0); // led Off
        }
        else if ( QSI_PIPO_error_code_time_flag < 28 )
        {
            GPIO_O_SET(GPIO_IS_FOR_SYSTEM_LED,1); // led On
        }
        else if ( QSI_PIPO_error_code_time_flag < 50 )
        {
            GPIO_O_SET(GPIO_IS_FOR_SYSTEM_LED,0); // led Off
        }
        else
            QSI_PIPO_error_code_time_flag = 0xff;

        QSI_PIPO_error_code_time_flag++;
    }
}
#endif//#ifdef QSI_PLATFORM
	
//#define SUPPORT_DEBUG_FOR_TRAY_IN_AND_HOME_SWITCH   // 2004/12/17 yltseng

static inline void DebugFuncForTrayInAndHomeSwitch()
{
#ifdef SUPPORT_DEBUG_FOR_TRAY_IN_AND_HOME_SWITCH
    // First parameter is TryIn, Second is HomeSwitch
    // TrayIn     : Defined in sys_servo.c TRAY_IS_IN_GPIO
    // HomeSwitch : Fixed at GPIO 6
    psprintf( RegionValStr[REGION1], "%d %d", GPIO_I_GET(5), GPIO_I_GET(6) );
    PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
#endif
}	
	
//
// FUNCTION
// polling_100ms
//
static inline void polling_100ms(void)
{
    DebugFuncForTrayInAndHomeSwitch();
    
#ifdef QSI_PLATFORM//liulifeng add 2004-10-13//jhuang 2004/11/23
    QSI_PIPO_error_code ();
#endif
#ifdef PMP_MCU810
  if((GetCurrentFileType() != CDROM_JPEG )&&(GetCurrentFileType() != CDROM_DAT )
      &&(GetCurrentFileType() != CDROM_MPG) &&(GetCurrentFileType() != CDROM_MP4) 
   ||(pFsJpeg->gifsState == FS_STATE_LIST||pFsJpeg->gifsState == FS_STATE_MP3))
     Show_PMP_Bat();
#endif
#ifdef  SUPPORT_SPI
    polling_spi();
    spi_service();
#endif
#ifdef  SUPPORT_MP4_SUBTITLE
    if (GetCurrentFileType() == CDROM_MP4) ///David add 2004-5-9,  no need to polling subtitle except MP4 disc. 
    {
        if( (full_scrn & SOUND) || (play_state == VCD_STATE_PAUSE) )  //David 2004-5-12
            return;

    if (IS_EXT_SUP_ACTIVATED())
    {
        extern ifunc polling_subtitle;
        if( polling_subtitle )
        {
        #ifdef SPHE8202_FAT_Write_Function
        if(!(full_scrn & PERIPHERAL))              //sunzhh add 2004-11-25
        #endif
        polling_subtitle();
    }
    }
    }
#endif

#ifdef PDVD_USE_IO_SCAN_KEY //Jack modified 04/06/03
//#ifdef GBM_PORTABLE_DVD
  check_portable_key(); //rbhung for GBM Portable DVD
#endif

//freyman 2002-7-4 11:30
#ifdef VFD_VOLUME_DISPLAY
{
    int diff;
    //diff=timenow-rtc_100ms;
    
    polling_vfdtime(diff);
}
#endif

#ifdef USE_GAMEPORT_TO_BUTTON//nono 20020824
    check_key_status();
#elif defined(OURMIND_VFDPORT_TO_BUTTON)//nono 20020824
    check_key_status_ourmind();
    check_ourmind_light_status();
#elif defined(USE_VFDPORT_TO_BUTTON)
    check_keyboard_status();
#elif defined(USE_VFDPORT_TO_KEYLIGHT)
    check_keylight_status();
#endif
#if defined(FAT_Write_UI)||defined(CF_CARD_WRITE)//||defined(WRITE_USB)//liweihua 2003-10-29
extern void polling_input_name(void);
extern BYTE input_flag;
if((full_scrn & PERIPHERAL) && (input_flag == 1))
    polling_input_name();
#endif

#ifdef AC3TEST
  if (gAC3onoff==1) {
    AC3ShowReport();
  }
  AC3CheckSampling();
#endif

    if ( (audioNotContinuous>0) && (play_state==VCD_STATE_NORMAL) ) { //count it when STATE_NORMAL, Jeff 20021202
        audioNotContinuous--;

        if (audioNotContinuous==0) {
      if (!user_mute) {
                AUDIF_Demute();//2004AUDDRV AudioDemute();
#ifdef CHANGE_DSP_SPDIF_OFF
                AUDIF_Set_SPDIF(setupGetSetting(14));//2004AUDDRV AudioSetSPDIF(setupGetSetting(14));
#endif//#ifdef CHANGE_DSP_SPDIF_OFF
      }
    }
  }

#ifdef NF_100
  if( (play_state!=VCD_STATE_PAUSE)&&(full_scrn!=SETUP) )
  {
    if( dvd_timer>0 )
    {
      //printf("polling_100ms  play_state = %d\n",play_state);
      polling_dvd_timer();
    }
  }
#else

    if( ( P_frame == 0 )            // 2004/12/29 yltseng
#ifndef SETUP_DONT_PAUSE
        && ( full_scrn != SETUP )
#endif
#ifndef PROG_DONT_PAUSE
        && ( full_scrn != PROGRAM )
#endif
    )
    {
        if(!IsAVDPaused() && (dvd_timer>0) )
          polling_dvd_timer();
    }
#endif
  if (hl_timer>0)
    recover_hl_color();

  if (auto_pause)
    polling_timeout();
    
    #ifdef SUPPORT_FUNCTION_MENU
    if(setup_menu_plus_timer)
      polling_setup_menu_plus();
    #endif //end #ifdef SUPPORT_FUNCTION_MENU
    
#ifdef SUPPORT_REP_READ
    if(IsReadMode())
        PollingRecBufStatus();
#endif
    
#ifdef FS_BMP_GUI//zhaoyanhua add 2004-6-29 15:58    
    if(cd_type_loaded == CDROM) // Robert 021004
    {
        if ((GetCurrentFileType() == CDROM) || (GetCurrentFileType() == CD_DA) || (GetCurrentFileType() == CDROM_WMA) || (GetCurrentFileType() == CDROM_AAC))
            polling_mp3();
    }
#endif//#ifdef FS_BMP_GUI   
 
#ifdef BRIGHTNESS_COLOR_KEY
    polling_BCtimer();
#endif
   
#ifdef SUPPORT_HEADPHONE  //xyy 2004-10-9 
	polling_headphone();
#endif

#ifdef ALONE_GPIO_KEY//Jack 20041008
    polling_portable_akey();
#endif

#ifdef CONTINUOUS_NUM_KEY_SELECT
  if(ir_num_timer)
    polling_ir_num();  
#endif 

#ifdef DVB1000_NON_OS
	if(system_state == SYSTEM_TS)
	{
	CheckProgInterval();
	CheckDvbTunerStatus();
	}
#endif
}


//
//
extern int gbm_gpio_led_flag;
extern  BYTE   cd_type_loaded;

#ifdef SunplusMoudleTest //axel 2004/4/2 11:55am while detected DVD, wait for 15 sec, tray out...

UINT16 ModuleTicks=0;
static inline void auto_modual_test(void)
{
    if(cd_type_loaded==CDDVD)
    {
        if(ModuleTicks>=45)
         {
            ModuleTicks=0;
            ircmd_stop();
            delay_srv_10ms(100);
            //ircmd_power();
/*          delay_srv_10ms(500);
            ircmd_trayin();*/
         }  
        else
         ModuleTicks++; 
        
    }   
}
#else
#define auto_modual_test();
#endif

/*
* polling_one_minute()  wangap add 2004/4/26 
*/
static inline void polling_one_minute(void)
{
  #ifdef TURN_OFF_POWER_RESUME //wangap 2004/4/21  
  if(play_state!=VCD_STATE_STOP)
  polling_resume();
  #endif  
}
                    
#ifdef  AUTO_ADJUST_TV_TYPE

BYTE  Adjust_TV_type =0;

#endif                    
#ifdef UART_WITHOUT_DEBUG_MODE //axelchen 2004/10/20 
              
void ReturnFromUart(void)
{
  int d;
    if (!IsEPPRxEmpty())
    {
        d = EPP_GETC();
        UART0_putc(d);
    }   
}
#endif
#ifdef SLEEP_CONTROL_COUNTER   //liumzh 2004-12-10 23:53
	UINT32 counter_sleep_control = 0;
	UINT32 sleep_time = 15;//seconds
#endif
#ifdef  STOP_15M_AUTO_POWEROFF
extern UINT8 STOP_15M_STATE;
unsigned short int second_counter=0;
unsigned short int sleep_counter=0;
unsigned char one_second_flag=1;
int  timer_counter=0;
unsigned char sleep_show_flags;
#endif

/*
*   polling_500ms()
*/
static inline void polling_500ms(void)
{
/*#ifdef DVB1000_NON_OS
int iHasTDT=0;
iHasTDT=PollingTDT(5);//eric add 2004-12-16 15:12 use Demux channel 5
if((full_scrn == PROGRAMINFO)&&iHasTDT)
{
printf("full_scrn == PROGRAMINFO)&&PollingTDT(5)\n");
 DisplayProgramInfo(1);
}
#endif*/ //eric change  polling TDT to 1SEC 

#ifdef PMP_KEYBOARD  //xyy 2005-1-10
    extern polling_pmpkey(void);
    polling_pmpkey();
#endif
#ifdef EASTECH_SETUPMENU
extern BYTE check_show_pscan_wait_time_mode;
extern void pscan_change_time_out(void);
extern void refresh_pscan_wait_time(BYTE wait_time);
static BYTE wait_time=CHANGE_TO_PSCAN_WAIT_TIME_TOTAL;
if(check_show_pscan_wait_time_mode==1){
	wait_time--;
	if(wait_time==0){
		pscan_change_time_out();
		wait_time=0;
		check_show_pscan_wait_time_mode=0;
		}
	else{
		refresh_pscan_wait_time(wait_time);
		}	
}
else wait_time=CHANGE_TO_PSCAN_WAIT_TIME_TOTAL;
#endif

#ifdef UART_WITHOUT_DEBUG_MODE //axelchen 2004/10/20 
ReturnFromUart();
#endif

#ifdef SLEEP_CONTROL_COUNTER   //liumzh 2004-12-10 23:53
	if(counter_sleep_control >= sleep_time *100*60)
	{
		counter_sleep_control = 0;
		sleep_time = 0;
		ircmd_power();
	}
#endif

#ifdef  STOP_15M_AUTO_POWEROFF
if(STOP_15M_STATE==1)
{
if((sleep_counter)/*&&(system_state== SYSTEM_STOP)*/)
	{
			sleep_show_flags--;
			if(!sleep_show_flags)
				;//osd_sleep_disp(sleep_counter);
        	second_counter++;
        	if(second_counter>=60*2)
        	{  second_counter=0;          	
            	
                	sleep_counter--;		
                if(sleep_counter==0)
                	{
		if((system_state== SYSTEM_STOP)||(play_state==VCD_STATE_STOP))
			ircmd_power();  			
                	}
        	}
	 }
}
#endif
    #ifdef SUPPORT_CD_TEXT             //lizhx  add 04/10/17
    if (cd_type_loaded == CDDA)
    {
        if(!((full_scrn & PROGRAM)||(full_scrn & SETUP)||(full_scrn & SOUND)))
            show_CDText_Title_Content(v11_trk_now);
    }
    #endif
#ifdef  MIDI_SCORE_TEST //modify by xlluo for test
    extern BYTE gb_showScore;
    #endif


    auto_modual_test();//terry,2004/4/2 04:49PM
     #ifdef  AUTO_ADJUST_TV_TYPE
    if((play_state==VCD_STATE_NORMAL) && (Adjust_TV_type==1))
    {        
        auto_adjust_tv_type();       
    }
    #endif
    // mute mute
    if (is_dts_force_spdif_bitstream()) {
        regs0->aud_pcm_ramp_delta   = 0xff;
        regs0->aud_pcm_ramp_cfg     = 1;
    }
    

    #ifdef TEST_SERVO
    srv_mode_test_polling();//terry,2003/9/10 12:57AM
    #endif
#ifdef  RECORD_KEY//zhaoyanhua add 03-11-5 13:02
    if(same_disc_flag)
        same_disc_flag++;
    #endif

    auto_close_fun();
    auto_record_per_s();

#ifdef SCRN_SAVER_WHEN_PAUSE
    if (full_scrn & SETUP)//4-3-5 23:24
        safe_srn_off();
    else if(play_state == VCD_STATE_PAUSE)
        #ifdef SUPPORT_MIDI    //ouyang add for don't show saver in midi2005-1-12 19:22
        if(!gIsMidiSelMenu)  
        #endif 
        safe_srn_on();
#endif

#ifdef USE_PIN31_CONTROL_POWER_LED      //gerry,2004-3-9 19:42
    if(gbm_gpio_led_flag<=4)
    gbm_gpio_led_flag++;
    else
    {
        GPIO_O_SET(4,1);
    }
#endif//USE_PIN31_CONTROL_POWER_LED

    if (regs0->dsp24_port[4]==1)
    { //to check whether MIC is on or off, Jeff 20020904
        mic_on = 1;
    } else {
        mic_on = 0;
    }

  if ((full_scrn & SCORE)
#ifdef  MIDI_SCORE_TEST //modify by xlluo 
    ||(gb_showScore)
#endif    
#ifdef SUPPORT_SANJING_SCORE            //xlluo for sjspical score ui 04 -10 -15
    ||(bIsSJScoreInvaild)
#endif
    )
  { //Jeff 20020404
    Score_Polling();
  }

  // check mp2/mp3 sample-rate (reported from audio decoder)
  if(mpeg_audio) MPx_ChkSmpRate();
  if(auto_download_audio_chn)
  {
       if(AUDIF_AutoDownload_Codec(auto_download_audio_chn-1))//2004AUDDRV audif_auto_download_codec(auto_download_audio_chn-1)
       {//sucess
           auto_download_audio_chn=0;
       }
  }
#ifndef FS_BMP_GUI//zhaoyanhua 2004-6-29 15:58 
  if(cd_type_loaded == CDROM) // Robert 021004
  {
      if ((GetCurrentFileType() == CDROM) || (GetCurrentFileType() == CD_DA) || (GetCurrentFileType() == CDROM_WMA) || (GetCurrentFileType() == CDROM_AAC))
          polling_mp3();
  }
#endif//#ifndef FS_BMP_GUI

  #ifdef REMAIN_TIME//nono 2-7-13 11:27

//  printf("polling:polling_clock=%d\n",polling_clock);
  if(polling_clock<7)
  {
    if( (polling_clock==6)&&(t_disp) )
      t_disp+=10;

    polling_clock++;
   }
  #endif

#if defined(SUPPORT_TUNER_MV114) || defined(SUPPORT_TUNER_ALPS)  //xyy 2003-9-20 14:45
    if( system_state==SYSTEM_DOING_TUNER ) //huziqin 2004-2-26
     {
        if(tuner_mute_flag)
           tuner_mute_flag++;
        if(tuner_mute_flag>2)  // mute 500mS
          {
            tuner_mute_flag=0;
            if(!user_mute)
             tuner_mute(0);
           }
     }
 #endif
/*Here deleted by xyy 2004-8-5 */

#ifdef SUPPORT_FS_LONGNAME  //Maoyong 2004.06.24
    if( (play_state != VCD_STATE_PAUSE) && (play_state != VCD_STATE_STOP) 
        &&(pFsJpeg->gifsState == FS_STATE_LIST||pFsJpeg->gifsState == FS_STATE_MP3))                    
        FS_ScrollDispFileName();
#endif

//nono add "&&defined(USE_GPIO_MUTE)  "20040821
#if defined(SUPPORT_DSPMUTE)&&defined(USE_GPIO_MUTE)      //BENSON 2004/7/12 11:25

⌨️ 快捷键说明

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