コード例 #1
0
void FMAM_Mode_Switch_Profile(u8 fm_wm)
{
	if((fm_wm==SYS_FMREV)||(fm_wm==SYS_AMREV)){
	}
	else{
		work_mode = SYS_FMREV;
	}
	
    	my_main_vol(0);
	if(fm_wm==SYS_FMREV){

		//printf(" ----FM   %x \r\n",(u16)fm_wm);
		radio_mode=1;
		FM_AM_chip_mode_sel(RADIO_FM);
		enter_fm_rev();
		set_fre(frequency,1);		
	       Disp_Con(DISP_FREQ);

	}
	else if(fm_wm==SYS_AMREV){

		//printf(" -----AM   %x \r\n",(u16)fm_wm);
		radio_mode=0;
		FM_AM_chip_mode_sel(RADIO_AM);
		enter_am_rev();
		set_fre(frequency,1);
	       Disp_Con(DISP_FREQ);		
	}
	delay_10ms(20);
	set_fre(frequency,1);
    	my_main_vol(my_music_vol);
	
}
コード例 #2
0
/*----------------------------------------------------------------------------*/
void enter_fm_rev(void)
{
    frequency = read_info(MEM_FRE);
    if (frequency > (1085-875))
    {
        frequency = MIN_FRE;
    }
    else
    {
        frequency += MIN_FRE;
    }

    total_channel = get_total_mem_channel();
    if (!total_channel)
    {
        total_channel = 1;
    }

    fre_channel=read_info(MEM_CHAN);
    if (fre_channel > 206)					//判断eeprom是否第一次用,是则台号为1;总台数为1
    {
        fre_channel=1;
        total_channel=1;
    }
    else if (!fre_channel)
    {
        fre_channel=1;
    }

    fre_channel = get_channel_via_fre(frequency - MIN_FRE);
    if (0xff == fre_channel)
    {
        fre_channel = 1;
    }
    set_fre(FM_CUR_FRE);
}
コード例 #3
0
void fm_radio(void)
{
#if defined(FM_LINE_IN_SHARE_SAME_CHANNEL)||defined(FM_LINE_IN_ONLY_ONE_MODE_EXIST)
#ifdef USE_LINE_IN_DETECT_FUNC
   if(aux_online){
   	
	Set_Curr_Func(SYS_AUX);
	return;
   }
#endif
#endif

#ifdef NOT_MOUNT_FM_DEV		
       if(get_fm_id() ==0xFFFF){	//NO FM 
		Set_Curr_Func(SYS_IDLE);
		return;
	}
#endif

//     xd_u8 vol_tmp=0;
    PT1 = 1;										//timer1 interrupt 低优先级
    IR_KEY_Detect =0;
#if 1//defined(FM_PLAY_KEY_PAUSE)    
            play_status = MUSIC_PLAY;
#endif

#ifndef DISABLE_P05_OSC_OUTPUT
    fm_osc_output_select(TRUE);
#endif

#if defined(VOL_TUNE_VOL_DEFAULT_TUNE_FREQ_POP)
	radio_freq_tune_pop=0;
#endif

#if defined(K202_WEISI_KL202_V001000000000)
    set_led_enable_bit(1);
#endif	
    set_play_flash(LED_FLASH_ON);
#ifdef USE_AMP_MODE_SELECT
	D_CLASS_AMP_GPIO_INIT(); 
	D_CLASS_AMP_LOW();
#endif
    Mute_Ext_PA(MUTE);
    my_main_vol(0);
#if SDMMC_CMD_MODE
	sd_chk_ctl(SET_SD_L_CHK);
#endif
    flush_low_msg();
    sysclock_div2(1);

    init_fm_rev();

#ifdef RADIO_AM_WM_ENABLE
	FMAM_Mode_Switch_Profile(work_mode);
#else
    	enter_fm_rev();  
#endif
    set_fre(frequency,1);

#ifdef DISP_CH_NUM_IN_RADIO_AT_FISRT
    Disp_Con(DISP_CH_NO);
#else
    Disp_Con(DISP_FREQ);
#endif


//    delay_10ms(1);
	
//vol_tmp = my_music_vol;
//    if(vol_tmp>12)my_music_vol = 12;//dac_channel_sel()会用music_vol 打开声音通道

#ifdef SUPPORT_PT2313

    my_main_vol(0);	
    delay_10ms(10);
	
#ifdef FM_PATH_SHARE_SAME_MP3_PT_CHAN

#ifdef EXCHANGE_LINE_IN_CHANNEL
    aux_channel_crosstalk_improve(DAC_AMUX1);//4  P26,P27 FM_IN
#else
    aux_channel_crosstalk_improve(DAC_AMUX0);//4P24,P25 FM_IN	
#endif

    delay_10ms(20);
	
    PT2313_Config(MP3_CHAN,CHAN_ADJ);
#else
    PT2313_Config(FM_CHAN,CHAN_ADJ);
#endif	

#else//  SUPPORT_PT2313

#ifdef FM_BY_PASS
 //   Mute_Ext_PA(UNMUTE); 
    //my_main_vol(my_music_vol);	
    	aux_channel_crosstalk_improve(DAC_AMUX0);//4P24,P25 FM_IN	  
	//dac_out_select(DAC_DECODE);	//4  
	//aux_ch_reg=DAC_AMUX0;

    	main_vol(0);  
   // dac_highz_output_enable();

#else

#ifdef FM_LINE_IN_SHARE_SAME_CHANNEL

#ifdef EXCHANGE_LINE_IN_CHANNEL
    aux_channel_crosstalk_improve(DAC_AMUX0);//4P24,P25 FM_IN	  
#else
    aux_channel_crosstalk_improve(DAC_AMUX1);//4P26,P27 FM_IN
#endif

#else

#ifdef EXCHANGE_LINE_IN_CHANNEL
    aux_channel_crosstalk_improve(DAC_AMUX1);//4P26,P27 FM_IN
#else
    aux_channel_crosstalk_improve(DAC_AMUX0);//4P24,P25 FM_IN	  
#endif

#endif

#endif	// END OF FM_BY_PASS

#endif	// END OF SUPPORT_PT2313

//    my_music_vol =vol_tmp;
	
    my_main_vol(my_music_vol);	
    set_fre(frequency,1);
#ifdef FM_BY_PASS
    my_main_vol(my_music_vol);	// add here for FM volume setting confirm, after setting the freq ,vol may turn on ....
#endif

    set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL);			//设置FM模式的音量上限

    dac_out_select(aux_ch_reg);

    delay_10ms(20);	
    Mute_Ext_PA(UNMUTE);
    fm_rev();
    Mute_Ext_PA(MUTE);
    sys_clock_pll();

    main_vol_set(0, CHANGE_VOL_NO_MEM);
	
    fm_rev_powerdown();

#if defined(VOL_TUNE_VOL_DEFAULT_TUNE_FREQ_POP)
	radio_freq_tune_pop=0;
#endif
	
#if SDMMC_CMD_MODE
	sd_chk_ctl(SET_SD_H_CHK);
#endif

#ifndef DISABLE_P05_OSC_OUTPUT
    fm_osc_output_select(FALSE);
#endif

#if defined(USE_SPECTRUM_PARTTERN)		  
    set_lcd_flash_lock(UNLOCK);	
#endif

#ifdef USE_AMP_MODE_SELECT
	D_CLASS_AMP_HIGH();
#endif
	
}
コード例 #4
0
/*----------------------------------------------------------------------------*/
void fm_rev( void )
{
    u8 key;

#if defined(SPECTRUM_FUNC_ENABLE)
    set_spectrum_lock(UNLOCK);
#endif		  

#if defined(FM_PAUSE_LED_INDICATOR)
    set_play_flash(LED_FLASH_NOR);
#endif

    my_main_vol(my_music_vol);	
	
    while (1)
    {
        key = get_msg();
#if defined(KEY_PRESS_LED_INDICATOR)
	key_press_led_indicator(key);
#elif defined(CUSTOM_KEY_FEATURE_USE)
		custom_key_hdlr(key);
#endif

#if defined(KPL_MSG_COMPATIBLE)
	kpl_msg_hdlr(key);
#endif

#if 0
	if(key!=0xff)
	printf(" music_play get_msg %x \r\n",(u16)key);
#endif
	dac_sw_check();

#ifndef FM_BY_PASS
       dac_out_select(aux_ch_reg);
#endif

        switch (key)
        {

#if defined(K000_HG_898_V001)||defined(USE_STOP_KEY_SHORT_CH_DOWN)
	case INFO_STOP |KEY_SHORT_UP :
		goto __CH_DOWN;
		break;
#endif
#ifdef USE_STOP_KEY_SHORT_SCAN
    	case INFO_STOP| KEY_SHORT_UP :
	goto __SCAN_FREQ;
#endif

#ifdef IR_INFO_EQ_DOWN_SCAN
        case INFO_EQ_DOWN| KEY_SHORT_UP :
		if(IR_KEY_Detect){
			IR_KEY_Detect = 0;
			goto __SCAN_FREQ;
		}
		break;
#endif

#ifdef USE_MODE_KEY_LONG_SCAN
    	case INFO_MODE | KEY_LONG :
	goto __SCAN_FREQ;
#endif
#ifdef RADIO_MODE_HOT_KEY_ENABLE	
#ifdef RADIO_MODE_HOT_KEY_LONG_SCAN
    	case INFO_FM_MOD| KEY_LONG :
	goto __SCAN_FREQ;
#endif	
#endif
#ifdef USE_EQ_KEY_SHORT_SCAN
    	case INFO_EQ_UP| KEY_SHORT_UP :
	goto __SCAN_FREQ;
#endif
#ifdef USE_EQ_KEY_SHORT_CH_UP
    case INFO_EQ_UP | KEY_SHORT_UP :
	goto __CH_DOWN;
		break;
#endif
#if 1//def USE_POWER_KEY
#ifdef USE_POWER_KEY_SHORT_SCAN
    	case INFO_POWER | KEY_SHORT_UP :
#ifdef USE_IR_POWER_KEY_TO_POWER_OFF
		if(IR_KEY_Detect){
			IR_KEY_Detect =0;
			goto _HOT_KEY_HDLR;	
		}
#endif		
	goto __SCAN_FREQ;

#endif
#endif  
#if defined(VOL_TUNE_VOL_DEFAULT_TUNE_FREQ_POP)
    	 case INFO_CUS_KEY_1 | KEY_SHORT_UP :

		radio_freq_tune_pop=~radio_freq_tune_pop;
		radio_tune_timer=12;
		
		if(radio_freq_tune_pop){

                     Disp_Con(DISP_FREQ);
		}
		break;
#endif

#ifdef RADIO_MODE_HOT_KEY_ENABLE	

#ifdef RADIO_AM_WM_SEL_IN_ONE_KEY
#ifdef RADIO_AM_WM_ENABLE
    case INFO_FM_MOD | KEY_SHORT_UP:
        if (work_mode == SYS_AMREV){
		Set_Curr_Func(SYS_FMREV);			
	     	FMAM_Mode_Switch_Profile(SYS_FMREV);
	}
	else if(work_mode == SYS_FMREV){
		Set_Curr_Func(SYS_AMREV);			
	     	FMAM_Mode_Switch_Profile(SYS_AMREV);
	}
		break;
#endif		
#endif
#endif		
#if defined(USE_POWER_KEY_FOR_FM_PLAY)
    	 case INFO_POWER | KEY_SHORT_UP :
#if defined(USE_IR_LONG_POWER_KEY_TO_FAKE_POWER_OFF)
		if(IR_KEY_Detect){
			IR_KEY_Detect = 0;
			break;
		}
#endif			
#ifdef USE_IR_POWER_KEY_TO_POWER_OFF
		if(IR_KEY_Detect){
			IR_KEY_Detect = 0;
			break;
		}
#endif
#elif defined(USE_MODE_LONG_FOR_FM_PLAY)
    	 case INFO_MODE| KEY_LONG:
#endif
        case INFO_PLAY | KEY_SHORT_UP :
#if defined(FM_PLAY_KEY_PAUSE)        
#if defined(K722_YJH_722_V001)
		if(IR_KEY_Detect){
			IR_KEY_Detect = 0;
			break;
		}
#endif	
#if defined(IR_PLAY_KEY_SCAN_FREQ_ALL)
		if(IR_KEY_Detect){
			IR_KEY_Detect = 0;
			goto __SCAN_FREQ;
		}
#endif
            play_status = !play_status;

            if (play_status)
            {
		  my_main_vol(my_music_vol);
  		  Mute_Ext_PA(UNMUTE);
#if defined(FM_PAUSE_LED_INDICATOR)
		 set_play_flash(LED_FLASH_ON);
#endif
            }
	     else{
  		Mute_Ext_PA(MUTE);		 	
		my_main_vol(0);	

#if defined(USE_SPECTRUM_PARTTERN)		  		
		set_lcd_flash_lock(LOCK);
#endif

#if defined(FM_PAUSE_LED_INDICATOR)
    		set_play_flash(LED_FLASH_NOR);
#endif		
	     }

#if defined(PAUSE_FLASH_WHOLE_SCREEN)
            if (play_status == MUSIC_PAUSE)
			set_led_flash_tpye(2);
	     else{
			set_led_flash_tpye(0);
	     }
#endif
          Disp_Con(DISP_FREQ);		 
		
	   break;        
#endif	   
		if(IR_KEY_Detect){
			IR_KEY_Detect =0;
#if defined(IR_PLAY_KEY_SCAN_FREQ_DISABLE)
			break;
#elif defined(IR_PLAY_SHORT_CH_UP)
			goto __CH_UP;
#else
			goto __SCAN_FREQ;
#endif
		}
		else{
			
#if defined(ADKEY_PLAY_SHORT_SCAN_FRE_DISABLE)		
		break;
#endif			
		#ifdef ADKEY_PLAY_SHORT_SCAN_FRE
			goto __SCAN_FREQ;	
		#else
			#if defined( ADKEY_NEXT_ADJST_FREQ)
			goto __CH_UP;
			#endif
			#if defined(ADKEY_PLAY_SHORT_ADJ_CH)
			goto __CH_UP;
			#endif
		#endif
		}
            break;
#if defined(K120_YJH_120_V001)||defined(K000_HG_898_V001)||defined(EQ_DOWN_SCAN_ALL)
        case INFO_EQ_DOWN| KEY_SHORT_UP :
#if 1//defined(EQ_DOWN_SCAN_ALL)	
		goto __SCAN_FREQ;
#endif
#ifndef K722_YJH_722_V001		
		goto __FRE_DOWN;
#endif
#endif			
        case INFO_PLAY | KEY_LONG :

		if(IR_KEY_Detect){
			IR_KEY_Detect =0;
#if defined(IR_PLAY_KEY_LONG_SCAN_FREQ)
		goto __SCAN_FREQ;
#else
		break;
#endif
		}
#ifdef USE_LONG_PLAY_KEY_TO_SWITCH_MODE		
		goto _HOT_KEY_HDLR;
#endif

#ifdef AUX_MODE_HOT_KEY_USE_PLAY_LONG		
		goto _HOT_KEY_HDLR;
#endif

#ifdef USE_EQ_KEY_SHORT_SCAN
		break;
#endif
#ifdef ADKEY_PLAY_SHORT_SCAN_FRE
		break;
#endif
__SCAN_FREQ:

#if defined(USE_SPECTRUM_PARTTERN)		  
	     set_lcd_flash_lock(LOCK);
#endif

#ifdef DISP_SCH_AT_FM_SCAN	
            Disp_Con(DISP_SCH);
	     delay_10ms(60);
#endif
            scan_fre();

#if defined(USE_SPECTRUM_PARTTERN)		  
	     set_lcd_flash_lock(UNLOCK);
#endif

	     if(IR_KEY_Detect){
			IR_KEY_Detect =0;
			//break;
	     }			
            //flush_low_msg();
            fre_channl = 1;
            get_channl(fre_channl);
            //Disp_Con(DISP_FREQ);
            break;
#if RTC_ENABLE 
		case INFO_ALM_BELL :				///<闹钟响消息,进入闹钟循环
            		sys_clock_pll();
			dac_out_select(DAC_DECODE);
			if(alm_bell_mode())
			{
				dac_out_select(DAC_AMUX0);
				return;
			}
			dac_out_select(DAC_AMUX0);
			break;
#endif
        case INFO_HALF_SECOND :
			
#if ((USE_DEVICE == MEMORY_STYLE)&&(FAT_MEMORY))          
             updata_fat_memory();
#endif
			
#if defined(AD_MEASURE_TEMP_FUNC)
		adc_diode_temp_measure_hdlr();
#endif
#ifdef DISP_BACKLIGHT_AUTO_SAVE_POWER
	 	Disp_BL_time_out();
#endif

#ifdef USE_USB_HOTPLUG_FUNC
		usb_hotplug_hdlr();
#endif
#ifdef MUTE_EXAMP_AT_FM_NEXT_PREV_IMPROVE
		if(mute_release_timer>0)
			mute_release_timer--;

		 if(mute_release_timer==0){
			my_main_vol(my_music_vol);	
			Mute_Ext_PA(UNMUTE);
		 }
#endif

#if defined(VOL_TUNE_VOL_DEFAULT_TUNE_FREQ_POP)
		if(radio_tune_timer>0){
			radio_tune_timer--;
			
			if(radio_tune_timer==0){
				radio_freq_tune_pop=0;
	                    Disp_Con(DISP_FREQ);
			}

			if(radio_freq_tune_pop){

			      pop_spark=~pop_spark;

			     if(pop_spark){
	                    		Disp_Con(DISP_PWR_OFF);
			     }
			     else{				
	                    		Disp_Con(DISP_FREQ);
			    }
			}
		}
#endif
#ifdef VOL_ADJ_SPARK_LED
		if(vol_adj_spark_bit){
			vol_adj_spark_bit=0;
			restore_led_flash_mod(last_led_play_mod);		
		}
#endif	 
            if (return_cnt < RETURN_TIME)
            {
                return_cnt++;
            }

#if defined(TIME_FORCE_SHOW_ON_SCREEN)

            if (DISP_FREQ == curr_menu){
				
	            if (time_show_return_cnt>RETURN_TIME_SHOW_TIME){
	                    get_curr_date();
	                    Disp_Con(DISP_RTC_POINT);
				break;
		    }	
		     else{
#if defined(MANUAL_SWITCH_TIME_DISPLAY)
	                    Disp_Con(DISP_FREQ);
#else
	                if(DISP_RTC != curr_menu){
				time_show_return_cnt++;
	                }
#endif				
		     }
	     }
#endif
            if (RETURN_TIME == return_cnt)
            {
#ifdef SUPPORT_PT2313
		  clr_aud_effect_state();
#endif			
#if defined(LED_DRV_USE_SM1628)
		led_spark_protect=0;
#endif

                if (DISP_DWORD_NUMBER == curr_menu)
                {
                    goto _PICK_CH;
                }
                else if (DISP_FREQ != curr_menu)
                    Disp_Con(DISP_FREQ);
#if defined(NEW_VOLUME_KEY_FEATURE)||defined(VOL_TUNE_NEW_VOLUME_KEY_FEATURE)
		if(new_vol_feature){
			new_vol_feature =0;
			if(last_disp_menu!=DISP_NULL)			
                     Disp_Con(last_disp_menu);
		}
#endif								
            }
#if defined(USE_BAT_MANAGEMENT)
		bmt_hdlr();
#endif
	     Disp_Update();			
            break;

        case INFO_PICK_FRE | KEY_LONG:
            save_fre(frequency);
            Disp_Con(DISP_FREQ);
            break;

        case INFO_PICK_FRE | KEY_SHORT_UP:
_PICK_CH:
            if (DISP_DWORD_NUMBER != curr_menu)
            {
                break;
            }

            if (( cfilenum <= MAX_FRE) && (cfilenum >= MIN_FRE))
            {

                frequency = cfilenum;
                cfilenum = 0;
                set_fre(frequency, 1);
            }
            else if ((cfilenum) && (cfilenum<=all_channl))
            {
                fre_channl = cfilenum;
                get_channl(fre_channl);
            }
            cfilenum = 0;
            Disp_Con(DISP_FREQ);
            write_info(MEM_FRE,frequency - MIN_FRE);
            break;

#if defined(VOL_TUNE_FREQ_VOL)||defined(VOL_TUNE_FREQ_ONLY)||defined(VOL_TUNE_NEW_VOLUME_KEY_FEATURE)||defined(VOL_TUNE_VOL_DEFAULT_TUNE_FREQ_POP)
        case INFO_PLUS:	
      	     frequency += 2;
            goto __FRE_DOWN;			
			
        case INFO_MINUS:			 
		goto __FRE_DOWN;			
		break;
#endif
        case INFO_NEXT_FIL | KEY_SHORT_UP:

#if defined(NEW_VOLUME_KEY_FEATURE)
		break;
        case INFO_NEXT_FIL :
        case INFO_NEXT_FIL | KEY_HOLD:

		if(new_vol_feature){
			goto _HOT_KEY_HDLR;
		}
#endif				
		if(IR_KEY_Detect){
			IR_KEY_Detect =0;
#if defined(IR_NEXT_PREV_SHORT_ADJ_CH)
			     goto __CH_UP;
#elif defined( IR_NEXT_PREV_DO_NOTHING)
			break;
#elif defined( IR_NEXT_PREV_SHORT_AUTO_SCAN)
			     goto __SCAN_UP;	
#else
 	     	      		frequency += 2;
		            goto __FRE_DOWN;
#endif
		}
		else{
#if defined(K722_YJH_722_V001)
		if(fre_channl==1){
 	     	      		frequency += 2;
		            goto __FRE_DOWN;
		}
		else{
			     goto __CH_UP;
		}
#endif

#if defined( ADKEY_NEXT_ADJST_FREQ)
 	     	      		frequency += 2;
		            goto __FRE_DOWN;
#elif defined(ADKEY_NEXT_PREV_SHORT_AUTO_SCAN)
			     goto __SCAN_UP;	
#else
			     goto __CH_UP;
#endif
		}

	case INFO_PREV_FIL | KEY_SHORT_UP:
		
#if defined(NEW_VOLUME_KEY_FEATURE)
		break;
	case INFO_PREV_FIL :
	case INFO_PREV_FIL | KEY_HOLD:

		if(new_vol_feature){
			goto _HOT_KEY_HDLR;
		}
#endif				
		if(IR_KEY_Detect){
			IR_KEY_Detect =0;
#if defined(IR_NEXT_PREV_SHORT_ADJ_CH)
			     goto __CH_DOWN;
#elif defined( IR_NEXT_PREV_DO_NOTHING)
			break;
#elif defined(IR_NEXT_PREV_SHORT_AUTO_SCAN)
			     goto __SCAN_DOWN;
#else
		            goto __FRE_DOWN;
#endif
		}
		else{
#if defined(K722_YJH_722_V001)
		if(fre_channl==1){
		            goto __FRE_DOWN;
		}
		else{
			     goto __CH_DOWN;
		}
#endif
				
#if defined( ADKEY_NEXT_ADJST_FREQ)
				goto __FRE_DOWN;
#elif defined(ADKEY_NEXT_PREV_SHORT_AUTO_SCAN)
				goto __SCAN_DOWN;		
#else				
				goto __CH_DOWN;
#endif
		}
		
__FRE_DOWN:
            frequency--;
#ifdef MUTE_EXAMP_AT_FM_NEXT_PREV

#ifdef MUTE_EXAMP_AT_FM_NEXT_PREV_IMPROVE
		 if(mute_release_timer==0)
#endif
		{
			Mute_Ext_PA(MUTE);
			my_main_vol(0);		
		}
#endif

#ifdef RADIO_AM_WM_ENABLE			
	    if(work_mode==SYS_FMREV){
			
	            if ( frequency > MAX_FRE)
	            {
	                frequency = MIN_FRE;
	            }
	            else if (frequency < MIN_FRE)
	            {
	                frequency = MAX_FRE;
	            }
	            set_fre(frequency, 1);
	            write_info(MEM_FRE,frequency - MIN_FRE);
	    	}
		else	{

		     if ( frequency > AM_MAX_FRE)
	            {
	                frequency = AM_MIN_FRE;
	            }
	            else if (frequency < AM_MIN_FRE)
	            {
	                frequency = AM_MAX_FRE;
	            }
	            set_fre(frequency, 1);
	            Save_AM_Freq((frequency - AM_MIN_FRE),(AM_FREQ_MAGIC_NUM));
		}
#else
	            if ( frequency > MAX_FRE)
	            {
	                frequency = MIN_FRE;
	            }
	            else if (frequency < MIN_FRE)
	            {
	                frequency = MAX_FRE;
	            }
	            set_fre(frequency, 1);
	            write_info(MEM_FRE,frequency - MIN_FRE);
#endif
            Disp_Con(DISP_FREQ);
#ifdef MUTE_EXAMP_AT_FM_NEXT_PREV
#ifdef MUTE_EXAMP_AT_FM_NEXT_PREV_IMPROVE
		 mute_release_timer=2;
#else
		my_main_vol(my_music_vol);	
		Mute_Ext_PA(UNMUTE);
#endif
#endif

            //delay_ms(20);
            break;

#if defined(USE_MODE_LONG_FOR_FM_CH_UP)
    	 case INFO_MODE| KEY_LONG:
#endif		 	
        case INFO_CH_NEXT | KEY_SHORT_UP:
        case INFO_CH_UP| KEY_SHORT_UP:
	__CH_UP:
			fre_channl += 2;
        case INFO_CH_PREV | KEY_SHORT_UP:
        case INFO_CH_DOWN| KEY_SHORT_UP:
	__CH_DOWN:
            fre_channl--;
            if (fre_channl > all_channl)
            {
                fre_channl = 1;
            }
            else if (!fre_channl)
            {
                fre_channl = all_channl;
            }
            get_channl(fre_channl);
            Disp_Con(DISP_FREQ);
            flush_low_msg();
			
            break;

#ifdef SEMI_AUTO_SCAN_FREQ

#if defined(K722_YJH_722_V001)
        case INFO_PLAY_MODE | KEY_SHORT_UP:
		frequency += 2;
		goto __FRE_DOWN;					
#endif		
        case INFO_CH_UP| KEY_HOLD:

        case INFO_NEXT_FIL | KEY_HOLD:
	 if(IR_KEY_Detect){
		IR_KEY_Detect =0;
#if defined(IR_NEXT_PREV_HOLD_AUTO_SCAN)

#elif defined(IR_NEXT_PREV_KEY_HOLD_DO_NOTHING)
	break;
#else
	break;
#endif
		
	 }
	 else{
#if defined(ADKEY_NEXT_PREV_HOLD_AUTO_SCAN)
	//goto __SCAN_UP;
#elif defined(ADKEY_NEXT_PREV_HOLD_FREQ_ADJ)
      		frequency += 2;
		goto __FRE_DOWN;			
#elif defined(ADKEY_NEXT_PREV_HOLD_CH_SEL)
	goto __CH_UP;
#else
	goto _HOT_KEY_HDLR;
#endif
        }
        case INFO_PLUS | KEY_SHORT_UP:
#if defined(INDEPENDENT_KEY_TUNE_FREQ)
	frequency += 2;
	goto __FRE_DOWN;
#endif
        case INFO_PLUS | KEY_HOLD:
 #if defined(INDEPENDENT_KEY_FAST_TUNE_FREQ)			
 	frequency += 2;
	goto __FRE_DOWN;
#endif

__SCAN_UP:			
		auto_scan(SEARCH_UP);
            break;
#if defined(K722_YJH_722_V001)
        case INFO_EQ_UP | KEY_SHORT_UP:
		goto __FRE_DOWN;			
#endif
        case INFO_CH_DOWN| KEY_HOLD:
        case INFO_PREV_FIL | KEY_HOLD:

	 if(IR_KEY_Detect){
		IR_KEY_Detect =0;
#if defined(IR_NEXT_PREV_HOLD_AUTO_SCAN)

#elif defined(IR_NEXT_PREV_KEY_HOLD_DO_NOTHING)
	break;
#else
	break;
#endif	
	 }
	 else{
 	
#if defined(ADKEY_NEXT_PREV_HOLD_AUTO_SCAN)
	//goto __SCAN_DOWN;
#elif defined(ADKEY_NEXT_PREV_HOLD_FREQ_ADJ)
		goto __FRE_DOWN;			
#elif defined(ADKEY_NEXT_PREV_HOLD_CH_SEL)
	goto __CH_DOWN;
#else
	goto _HOT_KEY_HDLR;
#endif
        }
        case INFO_MINUS|KEY_SHORT_UP:			 

#if defined(INDEPENDENT_KEY_TUNE_FREQ)			
	goto __FRE_DOWN;
#endif

        case INFO_MINUS| KEY_HOLD:
#if defined(INDEPENDENT_KEY_FAST_TUNE_FREQ)			
	goto __FRE_DOWN;
#endif
			
__SCAN_DOWN:			
		auto_scan(SEARCH_DN);			
            break;
#endif

        default :
_HOT_KEY_HDLR:			
            if (!ap_handle_hotkey(key))
                return;
        }
    }
}
コード例 #5
0
/*----------------------------------------------------------------------------*/
void fm_rev( void )
{
    u8 key;
	
    sys_mute_flag =0;

    PT2313_Config(sys_main_vol,VOL_ADJ);

    amp_mute(0);

    while (1)
    {
#if ECHO_ENABLE
        dac_out_select(DAC_AMUX1 | ADD_DEC, 0);  
#else
        dac_out_select(DAC_AMUX1, 0);  
#endif
        key = app_get_msg();

        switch (key)
        {
        case MSG_CHANGE_WORK_MODE:
            return;

        case MSG_MUSIC_NEW_DEVICE_IN:							//有新设备接入
            work_mode = MUSIC_MODE;
            return;
      	 case MSG_FM_SCAN_STOP:
		if(key_ir_detect){
			key_ir_detect =0;
			ir_remote_set_snooze();
		}
		break;
        case MSG_FM_SCAN_ALL:								//play 长按自动全频搜索

            key = fm_scan(0);
            if (key == 3)
            {
                put_msg_lifo(MSG_ALM_ON);
                break;
            }
            if (key == 2)
                return;
            put_msg_lifo(MSG_FM_NEXT_STATION);
            break;

        case  MSG_FM_SCAN_ALL_DOWN :
            key = fm_scan(1);
            if (key == 3)
            {
                put_msg_lifo(MSG_ALM_ON);
                break;
            }
            if (key == 2)
                return;
            break;

        case  MSG_FM_SCAN_ALL_UP:
            key =fm_scan(2);
            if (key == 3)
            {
                put_msg_lifo(MSG_ALM_ON);
                break;
            }
            if (key == 2)
                return;
            break;
#if 0
        case MSG_MUSIC_PP:									//play 短按静音
            put_msg_lifo(MSG_MUTE);
            break;

        case MSG_MUTE:
            break;
#endif
        case MSG_MUSIC_FR:									//搜索上一个台
            flush_all_msg();
            break;

        case MSG_MUSIC_FF:									//搜索下一个台
            flush_all_msg();
            break;

        case MSG_FM_PREV_STEP:
            set_fre(FM_FRE_DEC);
            fre_channel = get_channel_via_fre(frequency - MIN_FRE);						//查找该频点是否有记忆过
            disp_port(MENU_FM_MAIN);
            write_info(MEM_FRE, frequency-MIN_FRE);
            write_info(MEM_CHAN, fre_channel);
            break;

        case MSG_FM_NEXT_STEP:
            set_fre(FM_FRE_INC);
            fre_channel = get_channel_via_fre(frequency - MIN_FRE);						//查找该频点是否有记忆过
            disp_port(MENU_FM_MAIN);
            write_info(MEM_FRE, frequency-MIN_FRE);
            write_info(MEM_CHAN, fre_channel);
            break;

        case MSG_FM_PREV_STATION:
            if (total_channel == 0)
                break;
            fre_channel -= 2;
        case MSG_FM_NEXT_STATION:
            if (total_channel == 0)
                break;
            fre_channel++;

            if ((fre_channel == 0) || (fre_channel == 0xff))
            {
                fre_channel = total_channel;
            }
            else if (fre_channel > total_channel)
            {
                fre_channel = 1;
            }
            frequency = get_fre_via_channle(fre_channel) + MIN_FRE;				//根据台号找频点
            main_vol_set(0, CHANGE_VOL_NO_MEM);
            set_fre(FM_CUR_FRE);
            main_vol_set(0, SET_USE_CURRENT_VOL);
            disp_port(MENU_FM_CHANNEL);
            write_info(MEM_FRE, frequency-MIN_FRE);
            write_info(MEM_CHAN, fre_channel);
            break;

        case MSG_CH_SET:
            if (cur_menu == MENU_INPUT_NUMBER)			//数字输入模式
            {
                if (input_number <= MAX_CHANNL)							//输入的是台号
                {
                    key = get_fre_via_channle(input_number);
                    if (key != 0xff)
                    {
                        frequency = key + MIN_FRE;
                        fre_channel = input_number;
                        main_vol_set(0, CHANGE_VOL_NO_MEM);
                        set_fre(FM_CUR_FRE);
                        main_vol_set(0, SET_USE_CURRENT_VOL);
                        disp_port(MENU_FM_CHANNEL);
                        //break;
                    }

                }
                else if ((input_number >= MIN_FRE) && (input_number <= MAX_FRE)) //输入的是频点
                {
                    frequency = input_number;
                    fre_channel = get_channel_via_fre(frequency - MIN_FRE);
                    main_vol_set(0, CHANGE_VOL_NO_MEM);
                    set_fre(FM_CUR_FRE);
                    main_vol_set(0, SET_USE_CURRENT_VOL);
                }
            }
            write_info(MEM_FRE, frequency-MIN_FRE);
            write_info(MEM_CHAN, fre_channel);
            disp_port(main_menu);

            break;

        case MSG_CH_SAVE:
            ch_save();
            break;


        case MSG_HALF_SECOND:

		alarm_setting_vol_hdlr();

		//bmt_hdlr();			 
	     timer_pwr_off_hdlr();
		
            set_brightness_fade_out();
            if (main_menu_conter < SUB_MENU_TIME)
            {
                main_menu_conter++;
            }
            else if (cur_menu != main_menu)
            {
                put_msg_lifo(MSG_CH_SET);				//跳转至CH_SET消息处理
            }

	     if(cur_menu == main_menu)
	     {
		   disp_port(main_menu);
	     }
            break;


#if 0//RTC_ENABLE
        case MSG_ALM_ON:
            write_next_alm_sec();
            work_mode = RTC_MODE;
            put_msg_lifo(MSG_CHANGE_WORK_MODE);
            break;
#endif

#if KALAOK_FUNCTION
		case MSG_KALAOK:
			work_mode = REC_MIC_MODE;
			return ;
#endif

        default :
            ap_handle_hotkey(key);
            break;
        }
    }
}
コード例 #6
0
/*----------------------------------------------------------------------------*/
u8 fm_scan(u8 mode)
{
    u8 i;
    u8 key;
    u8 result = 0;
    vol_change_en=0;
    input_number_en = 0;
    amp_mute(1);

    if (mode == 0)
    {
        write_info(MEM_CHAN,0);
        write_info(MEM_FRE,0);
        clear_all_fm_point();
        total_channel = 0;
        fre_channel = 0;
        frequency = MIN_FRE - 1;					//自动搜索从最低的频点开始
    }
    fm_set_ch(4);


    for (i = 0;i <= (MAX_FRE-MIN_FRE);i++)
    {

        while (1)
        {
            key = app_get_msg();
            if (key == NO_MSG)
                break;

            switch (key)
            {
            case MSG_MUSIC_NEW_DEVICE_IN:							//有新设备接入
                work_mode = MUSIC_MODE;
                result = 2;
                goto _fm_scan_ret;
            case MSG_AUX_IN :
                work_mode = AUX_MODE;
                result = 2;
                goto _fm_scan_ret;
#if USB_DEVICE_ENABLE
            case MSG_USB_PC_IN:
                work_mode = USB_DEVICE_MODE;
                result = 2;
                goto _fm_scan_ret;
#endif

            case MSG_FM_NEXT_STATION:
            case MSG_FM_SCAN_STOP:
            case MSG_FM_SCAN_ALL:
                result = 0;
                goto _fm_scan_ret;
            case MSG_ALM_ON:
                result = 3;
                goto _fm_scan_ret;


            default:
                ap_handle_hotkey(key);
                break;
            }
        }

        if (mode ==1)
        {
            frequency--;
        }
        else
        {
            frequency++;
        }
        fm_module_mute(1);
        disp_port(MENU_FM_DISP_FRE);
        if (set_fre(FM_CUR_FRE))							//找到一个台
        {
            fm_module_mute(0);
            if (mode == 0)								//搜索所有电台
            {

                save_fm_point(frequency - MIN_FRE);
                fre_channel = get_channel_via_fre(frequency - MIN_FRE);
                total_channel = get_total_mem_channel();
                disp_port(MENU_FM_FIND_STATION);
                delay_10ms(100);
            }
            else
            {
                save_fm_point(frequency - MIN_FRE);
                fre_channel = get_channel_via_fre(frequency - MIN_FRE);
                total_channel = get_total_mem_channel();

                disp_port(MENU_FM_DISP_FRE);
                result = 1;
                goto _fm_scan_ret;
            }
        }

    }
_fm_scan_ret:
    fm_module_mute(0);
    input_number_en = 1;
    vol_change_en = 1;

    amp_mute(0);
	
    return result;
}
コード例 #7
0
/*----------------------------------------------------------------------------*/
bool scan_fre(void)
{
    u8 i;
	u8 key;
	u8 flag = 0;
    key_voice_disable = 1;
    delay_10ms(10);
    all_channl = 0;
    frequency = MIN_FRE;
    my_memset((u8 _xdata*)fre_point,0,30);
   // rda5807_mute(1);
	for (i = 0;i <= (1080-MIN_FRE);i++)
    {
        //printf("----------- fre %4u -----------------\n",(u16)(fre));
		do
		{
			key = get_msg();
			switch (key)
	        {
		        case INFO_PLAY | KEY_SHORT_UP :
		            flag = 1;
					break;
				case MSG_SDMMC_IN :
				    given_device = BIT(SDMMC);
				    put_msg_lifo(SEL_GIVEN_DEVICE_GIVEN_FILE);
		            work_mode = SYS_MP3DECODE;
		            flag = 2;
					break;
				 case MSG_USB_DISK_IN  :
			        given_device = BIT(USB_DISK);
			        put_msg_lifo(SEL_GIVEN_DEVICE_GIVEN_FILE);
			        work_mode = SYS_MP3DECODE;
			        flag = 2;
					break;
				 case MSG_AUX_IN :
				    work_mode = SYS_AUX;
				    flag = 2;
					break;
			}
		}
		while(0xff != key);
		if(flag) 	   //跳出搜台循环
			break;
        if (set_fre(frequency, 0))
        {
       //     rda5807_mute(0);
			fre_point[all_channl] = i;
            all_channl++;
			Disp_Con(DISP_FREQ);
			delay_10ms(100);
			//rda5807_mute(1);
        }
        Disp_Con(DISP_FREQ);
        if (all_channl >= MAX_CHANNL)
        {
            //deg_str("channl is full\n");
            break;
        }
        frequency++;
    }
	//rda5807_mute(0);
    key_voice_disable = 0;
    for (i = 0; i < all_channl; i++)
    {
        write_info(MEM_CHANNL + i , fre_point[i]);
    }
    write_info(MEM_ALL_CHANNL , all_channl);

	if(flag == 2)
		return 1;			   //跳出FM模式
	return 0;				   //继续FM模式
}