void alarm_setting_vol_hdlr(void) { if(alm_on_flag){ if(alm_recover_vol_enable){ alarm_vol_adj++; if(sys_main_vol>20){ alm_recover_vol_enable =0; } if(sys_main_vol<=20){ //main_vol_set(sys_main_vol,SET_USE_CURRENT_VOL); PT2313_Config(sys_main_vol,VOL_ADJ); if(alarm_vol_adj==4){ alarm_vol_adj=0; sys_main_vol++; } } else{ if(sys_main_vol != alrm_vol_bakup) sys_main_vol = alrm_vol_bakup; } } } }
/*----------------------------------------------------------------------------*/ void fm_radio(void) { // printf("enter fm\n"); //P05_source_select(P05_SEL_OSC1); amux_dsp_eq(); sys_clk_div(2);//SYSTEM_CLK_DIV2(); init_fm_rev(); PT2313_Config(RADIO_CHAN,CHAN_ADJ); input_number_en = 1; vol_change_en=1; main_menu = MENU_FM_MAIN; key_table_sel(1); flush_all_msg(); enter_fm_rev(); disp_port(MENU_FM_MAIN); sys_clk_div(4);//SYSTEM_CLK_DIV4(); set_max_vol(MAX_ANOLOG_VOL,MAX_DIGITAL_VOL);///设置最大音量 dac_out_select(DAC_AMUX1, 0); encode_channel = REC_FM; #if ECHO_ENABLE encode_channel = REC_MIC ; #endif encode_vol = REC_AMUX_GAIN; fm_rev(); main_vol_set(0, CHANGE_VOL_NO_MEM); amp_mute(1); alm_on_flag =0; fm_rev_powerdown(); //P05_source_select(P05_SEL_IO); break_encode(); }
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 }
/*----------------------------------------------------------------------------*/ void blue_tooth_main(void) { u8 key; #ifdef TURN_OFF_PLAY_STATUS_LED_IN_BLUETOOTH_MODE set_play_flash(LED_FLASH_STOP); #endif #ifdef K000_XC_BC_BT_V001 play_status =MUSIC_PAUSE; #endif while (1) { key = get_msg(); #if 0 if(key!=0xFF) printf( "---->---deal_aux %x \r\n",(u16)key); #endif #if defined(KEY_PRESS_LED_INDICATOR) key_press_led_indicator(key); #elif defined(CUSTOM_KEY_FEATURE_USE) custom_key_hdlr(key); #endif #ifdef BLUE_TOOTH_GPIO_STATUS if(blue_tooth_detect){ blue_tooth_detect=0; bt_disp_status_hdlr(); } #endif #if defined(KPL_MSG_COMPATIBLE) kpl_msg_hdlr(key); #endif dac_sw_check(); switch (key) { #ifdef BLUE_TOOTH_DETECTION_FOR_POWER_OFF case INFO_POWER|KEY_SHORT_UP: sys_power_down(); break; #endif #ifdef PP_KEY_LONG_CONFIG_BT case INFO_PLAY | KEY_LONG: blue_tooth_key_hdlr(BT_CONFIG_HOLD); break; #endif case INFO_PLAY | KEY_HOLD: #ifdef PP_KEY_LONG_CONFIG_BT break; //blue_tooth_key_hdlr(BT_CONFIG_HOLD); #else blue_tooth_key_hdlr(BT_PP_HOLD); #endif break; case INFO_PLAY | KEY_SHORT_UP : blue_tooth_key_hdlr(BT_PP); #ifndef BLUE_TOOTH_NO_SYS_MUTE_CTRL #if !defined(BLUE_TOOTH_BYPASS) if (play_status == MUSIC_PAUSE) { play_status =MUSIC_PLAY; my_main_vol(my_music_vol); #ifndef BLUE_TOOTH_PP_NOT_EXT_MUTE Mute_Ext_PA(UNMUTE); #endif } else if (play_status == MUSIC_PLAY){ play_status =MUSIC_PAUSE; #ifndef BLUE_TOOTH_PP_NOT_EXT_MUTE Mute_Ext_PA(MUTE); #endif my_main_vol(0); } #endif #endif Disp_Con(DISP_BLUE_TOOTH); break; case INFO_NEXT_FIL | KEY_SHORT_UP: blue_tooth_key_hdlr(BT_NEXT_FILE); break; case INFO_PREV_FIL | KEY_SHORT_UP: blue_tooth_key_hdlr(BT_PREV_FILE); break; case INFO_HALF_SECOND : #ifdef USE_USB_HOTPLUG_FUNC usb_hotplug_hdlr(); #endif #ifdef BLUE_TOOTH_MUTE_DETECT_FUNC blue_tooth_mute_detect(); #endif #if defined(USE_BAT_MANAGEMENT) bmt_hdlr(); #endif #ifdef DISP_BACKLIGHT_AUTO_SAVE_POWER Disp_BL_time_out(); #endif #ifdef BLUE_TOOTH_LINK_IDLE_POWER_OFF bt_link_idle_hdlr(); #endif if(bt_key_release_cnt--==0){ #ifdef PP_KEY_HOLD_CONFIG_BT if(key_release_hdlr==BT_CONFIG_HOLD){ blue_tooth_key_hdlr(BT_CONFIG_HOLD_RELEASE); #else if(key_release_hdlr==BT_PP_HOLD){ blue_tooth_key_hdlr(BT_PP_HOLD_RELEASE); #endif } else if((key_release_hdlr==BT_VOL_UP_HOLD)||(key_release_hdlr==BT_VOL_DOWN_HOLD)){ blue_tooth_key_hdlr(BT_VOL_HOLD_RELEASE); } } #ifdef USE_BT_ACTIVATED_PIN if(ACTIVATED_PIN_cnt--==0){ BT_RST_OFF(); } #endif #ifdef BT_DISP_CONNECT_TIME bt_disp_time_hdlr(); #endif #if defined(LINE_IN_PLAY_KEY_PAUSE) if(play_status==MUSIC_PAUSE){ #ifdef LINE_IN_FLASH_WHOLE_SCREEN aux_screen_flash_bit=~aux_screen_flash_bit; if(aux_screen_flash_bit){ Disp_Con(DISP_BLUE_TOOTH); } else{ Disp_Con(DISP_PWR_OFF); break; } #endif } #endif #if defined(TIME_FORCE_SHOW_ON_SCREEN) if(DISP_BLUE_TOOTH == 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_BLUE_TOOTH); #else if(DISP_RTC != curr_menu){ time_show_return_cnt++; } #endif } } #endif if (return_cnt < RETURN_TIME) { return_cnt++; } else if (RETURN_TIME == return_cnt) { if (DISP_BLUE_TOOTH != curr_menu) Disp_Con(DISP_BLUE_TOOTH); #if defined(CUSTOM_MAIN_DISP_VOL) if (DISP_BLUE_TOOTH== curr_menu){ Disp_Con(DISP_VOL); } #endif } if (DISP_BLUE_TOOTH == curr_menu) Disp_Con(DISP_BLUE_TOOTH); Disp_Update(); break; #ifdef BLUE_TOOTH_BYPASS case INFO_VOL_PLUS: case INFO_VOL_PLUS | KEY_HOLD : case INFO_NEXT_FIL: case INFO_NEXT_FIL| KEY_HOLD : case INFO_VOL_MINUS: case INFO_VOL_MINUS | KEY_HOLD : case INFO_PREV_FIL: case INFO_PREV_FIL| KEY_HOLD : break; #else #if defined(NEW_VOLUME_KEY_FEATURE) case INFO_NEXT_FIL : case INFO_NEXT_FIL | KEY_SHORT_UP: case INFO_NEXT_FIL | KEY_HOLD: if(!new_vol_feature){ break; } #else case INFO_VOL_PLUS: break; case INFO_VOL_PLUS| KEY_SHORT_UP: #ifdef BLUE_TOOTH_INDEPENDENT_VOLUME_KEY blue_tooth_key_hdlr(BT_VOL_UP); break; #endif case INFO_VOL_PLUS | KEY_HOLD : #if !defined(INDEPENDENT_VOLUME_KEY) //case INFO_NEXT_FIL: case INFO_NEXT_FIL| KEY_HOLD : if(IR_KEY_Detect){ IR_KEY_Detect =0; break; } #endif #endif #ifdef SUPPORT_PT2313 if((audio_effect_state>0)){ audio_effect_hdlr(0x01); flush_low_msg(); break; } #endif #ifndef BLUE_TOOTH_INDEPENDENT_VOLUME my_music_vol += 2; #endif blue_tooth_key_hdlr(BT_VOL_UP_HOLD); goto __VOL_HDLR; #if defined(NEW_VOLUME_KEY_FEATURE) case INFO_PREV_FIL : case INFO_PREV_FIL | KEY_SHORT_UP: case INFO_PREV_FIL | KEY_HOLD: if(!new_vol_feature){ break; } #else case INFO_VOL_MINUS: break; case INFO_VOL_MINUS| KEY_SHORT_UP: #ifdef BLUE_TOOTH_INDEPENDENT_VOLUME_KEY blue_tooth_key_hdlr(BT_VOL_DOWN); break; #endif case INFO_VOL_MINUS | KEY_HOLD : #if !defined(INDEPENDENT_VOLUME_KEY) //case INFO_PREV_FIL: case INFO_PREV_FIL| KEY_HOLD : if(IR_KEY_Detect){ IR_KEY_Detect =0; break; } #endif #endif #ifdef SUPPORT_PT2313 if((audio_effect_state>0)){ audio_effect_hdlr(0x02); flush_low_msg(); break; } #endif blue_tooth_key_hdlr(BT_VOL_DOWN_HOLD); __VOL_HDLR: #ifndef BLUE_TOOTH_INDEPENDENT_VOLUME if(my_music_vol) my_music_vol--; if (my_music_vol > MAX_VOL) { my_music_vol = MAX_VOL; } #if defined(LINE_IN_PLAY_KEY_PAUSE) if (play_status == MUSIC_PAUSE) { play_status =MUSIC_PLAY; } #endif clear_super_mute_lock(); write_info(MEM_VOL,my_music_vol); my_main_vol(my_music_vol); Disp_Con(DISP_VOL); #endif break; #endif #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 default : if (!ap_handle_hotkey(key)) return; } } } /*----------------------------------------------------------------------------*/ /**@brief AUX功能入口 @param 无 @return 无 @note void aux_function(void) */ /*----------------------------------------------------------------------------*/ void blue_tooth_hdlr(void) { #if 1//defined(LINE_IN_PLAY_KEY_PAUSE) play_status =MUSIC_PLAY; #endif #ifdef BLUE_TOOTH_MUTE_DETECT_FUNC bluetooth_mute_detect=0; #endif #ifdef BT_DISP_CONNECT_TIME link_sec =0; link_min =0; link_hour =0; #endif set_play_flash(LED_FLASH_ON); Disp_Con(DISP_BLUE_TOOTH); PT1 = 1; //timer1 interrupt 低优先级 flush_low_msg(); #if SDMMC_CMD_MODE sd_chk_ctl(SET_SD_L_CHK); #endif main_vol(0); blue_tooth_init(); set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); //设置AUX模式的音量上限 #ifdef SUPPORT_PT2313 #ifdef BT_USE_AUX_0 aux_channel_crosstalk_improve(DAC_AMUX0); //4P24,P25 AUX_IN #else aux_channel_crosstalk_improve(DAC_AMUX1);//4 P26,P27 AUX_IN #endif PT2313_Config(MP3_CHAN,CHAN_ADJ); my_main_vol(my_music_vol); #elif defined(BLUE_TOOTH_BYPASS)||defined(BLUE_TOOTH_PATH_DIRECT_IN_PA) dac_out_select(DAC_DECODE); my_main_vol(0); #else #ifdef BT_USE_AUX_0 aux_channel_crosstalk_improve(DAC_AMUX0); //4P24,P25 AUX_IN #else aux_channel_crosstalk_improve(DAC_AMUX1);//4 P26,P27 AUX_IN #endif my_main_vol(my_music_vol); #endif #ifdef FIX_VOL_TO_MAX my_main_vol(30); #endif sysclock_div2(1); Mute_Ext_PA(UNMUTE); blue_tooth_main(); main_vol_set(0, CHANGE_VOL_NO_MEM); sys_clock_pll(); Mute_Ext_PA(MUTE); #ifdef BLUETOOTH_GPIO_CTRL BT_PWR_OFF(); #endif #if SDMMC_CMD_MODE sd_chk_ctl(SET_SD_H_CHK); #endif }
/*----------------------------------------------------------------------------*/ void aux_function(void) { #ifdef USE_LINE_IN_DETECT_FUNC #ifndef AUX_DETECT_FUNC_WITH_MANUAL_SEL if(!aux_online){ Set_Curr_Func(SYS_MP3DECODE_USB); return; } #endif #endif #ifdef SYS_DEFAULT_IN_PWR_OFF_FOR_LED_PROTECTION_UNTIL_AUX sys_pwr_on_led_protect_bit=0; #endif #if 1//defined(LINE_IN_PLAY_KEY_PAUSE) play_status =MUSIC_PLAY; #endif #if defined(TWO_PLAY_LED_IN_USE) led_open_enable = 0; #endif set_play_flash(LED_FLASH_ON); #if defined(IPONE_DOCK_FUNC_ENABLE)&&!defined(IPONE_INDEPENDENT_MODE) Disp_Con(DISP_IPOD); #else Disp_Con(DISP_AUX); #endif PT1 = 1; //timer1 interrupt 低优先级 flush_low_msg(); #if SDMMC_CMD_MODE sd_chk_ctl(SET_SD_L_CHK); #endif set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); //设置AUX模式的音量上限 #ifdef SUPPORT_PT2313 #ifdef AUX_PATH_SHARE_SAME_MP3_PT_CHAN #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 delay_10ms(60); #ifdef INDEPENDENT_AUX_PATH_TO_PT PT2313_Config(AUX_CHAN,CHAN_ADJ); #else PT2313_Config(MP3_CHAN,CHAN_ADJ); #endif #else PT2313_Config(AUX_CHAN,CHAN_ADJ); #endif #else //SUPPORT_PT2313 #ifdef FM_BY_PASS #ifdef ADC_DETECT_LINE_IN aux_online =1; Line_In_Detect =0; #endif main_vol(0); #ifdef EXCHANGE_LINE_IN_CHANNEL aux_channel_crosstalk_improve(DAC_AMUX0); //4P24,P25 AUX_IN #else aux_channel_crosstalk_improve(DAC_AMUX1);;//4P26,P27 AUX_IN #endif Mute_Ext_PA(UNMUTE); my_main_vol(my_music_vol); #else //FM_BY_PASS #ifdef EXCHANGE_LINE_IN_CHANNEL aux_channel_crosstalk_improve(DAC_AMUX0); //4P24,P25 AUX_IN #else aux_channel_crosstalk_improve(DAC_AMUX1);//4 P26,P27 AUX_IN #endif //Mute_Ext_PA(UNMUTE); //my_main_vol(my_music_vol); #endif //FM_BY_PASS #endif //SUPPORT_PT2313 #ifdef ADC_DETECT_LINE_IN my_main_vol(0); #else Mute_Ext_PA(UNMUTE); my_main_vol(my_music_vol); #endif sysclock_div2(1); #if defined(IPONE_DOCK_FUNC_ENABLE)&&!defined(IPONE_INDEPENDENT_MODE) //open_uart_ctrl(); ipone_hdlr(); //close_uart_ctrl(); #else deal_aux(); #endif Mute_Ext_PA(MUTE); #ifdef SUPPORT_PT2313 my_main_vol(0); #else main_vol_set(0, CHANGE_VOL_NO_MEM); #endif sys_clock_pll(); #if defined(USE_SPECTRUM_PARTTERN) set_lcd_flash_lock(UNLOCK); #endif #if SDMMC_CMD_MODE sd_chk_ctl(SET_SD_H_CHK); #endif }
void deal_aux( void ) { u8 key; #if defined(K755_JinYeHeLi_755_V001)||defined(K755_AnJieEr_755_V001) set_play_flash(LED_FLASH_SLOW); #endif #if defined(AUX_PAUSE_LED_INDICATOR_FLASH_WHEN_PLAY) set_play_flash(LED_FLASH_NOR); #endif #if defined(SPECTRUM_FUNC_ENABLE) set_spectrum_lock(UNLOCK); #endif my_main_vol(my_music_vol); while (1) { key = get_msg(); #if 0 if(key!=0xFF) printf( "---->---deal_aux %x \r\n",(u16)key); #endif dac_out_select(aux_ch_reg); #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 dac_sw_check(); switch (key) { #ifdef USE_IR_LONG_POWER_KEY_TO_FAKE_POWER_OFF case INFO_POWER | KEY_LONG: if(IR_KEY_Detect){ goto _HOT_KEY_HDLR; } break; #endif #if defined(LINE_IN_PLAY_KEY_PAUSE) #if 1//defined(USE_ONLY_POWER_HOLD_CTRL) #if defined(USE_POWER_KEY_FOR_AUX_PLAY) case INFO_POWER | KEY_SHORT_UP : #ifdef USE_IR_LONG_POWER_KEY_TO_FAKE_POWER_OFF if(IR_KEY_Detect){ IR_KEY_Detect=0; break; } case INFO_PLAY | KEY_SHORT_UP : #endif #ifdef USE_IR_POWER_KEY_TO_POWER_OFF if(IR_KEY_Detect){ goto _HOT_KEY_HDLR; } case INFO_PLAY | KEY_SHORT_UP : #endif #else case INFO_PLAY | KEY_SHORT_UP : #endif #else case INFO_PLAY | KEY_SHORT_UP : #endif #ifdef K722_YJH_722_V001 if(IR_KEY_Detect){ IR_KEY_Detect = 0; break; } #endif if (play_status == MUSIC_PAUSE) { play_status =MUSIC_PLAY; my_main_vol(my_music_vol); #ifndef NO_AUX_MUTE_WHEN_PAUSE Mute_Ext_PA(UNMUTE); #endif #if defined(USE_SPECTRUM_PARTTERN) set_lcd_flash_lock(UNLOCK); #endif #if defined(AUX_PAUSE_LED_INDICATOR) set_play_flash(LED_FLASH_ON); #elif defined(AUX_PAUSE_LED_INDICATOR_FLASH_WHEN_PLAY) set_play_flash(LED_FLASH_NOR); #endif #if defined(SPECTRUM_FUNC_ENABLE) set_spectrum_lock(UNLOCK); #endif } else if (play_status == MUSIC_PLAY){ play_status =MUSIC_PAUSE; #ifndef NO_AUX_MUTE_WHEN_PAUSE Mute_Ext_PA(MUTE); #endif my_main_vol(0); #if defined(USE_SPECTRUM_PARTTERN) set_lcd_flash_lock(LOCK); #endif #if defined(AUX_PAUSE_LED_INDICATOR) set_play_flash(LED_FLASH_FAST); #elif defined(AUX_PAUSE_LED_INDICATOR_FLASH_WHEN_PLAY) set_play_flash(LED_FLASH_ON); #endif #if defined(SPECTRUM_FUNC_ENABLE) set_spectrum_lock(LOCK); #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_AUX); break; #endif #ifdef ADC_DETECT_LINE_IN case MSG_AUX_IN : sys_printf(" MSG_AUX_IN"); my_main_vol(my_music_vol); Mute_Ext_PA(UNMUTE); break; case MSG_AUX_OUT : sys_printf(" MSG_AUX_OUT"); Mute_Ext_PA(MUTE); main_vol(0); break; #endif #ifdef USE_AUX_2 case INFO_MODE | KEY_SHORT_UP: if(aux_2_sel==0){ aux_2_sel =1; Set_Curr_Func(AUX_2_DEV); set_play_flash(LED_FLASH_ON); PT2313_Config(AUX_CHAN,CHAN_ADJ); } else{ aux_2_sel =0; goto _HOT_KEY_HDLR; } break; case INFO_AUX_MOD | KEY_SHORT_UP: aux_2_sel=~aux_2_sel; if(aux_2_sel){ Set_Curr_Func(AUX_2_DEV); PT2313_Config(AUX_CHAN,CHAN_ADJ); } else{ Set_Curr_Func(AUX_DEV); PT2313_Config(MP3_CHAN,CHAN_ADJ); } set_play_flash(LED_FLASH_ON); 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 USE_USB_HOTPLUG_FUNC usb_hotplug_hdlr(); #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 #ifdef DISP_BACKLIGHT_AUTO_SAVE_POWER Disp_BL_time_out(); #endif if (return_cnt < RETURN_TIME) { return_cnt++; } #if defined(LINE_IN_PLAY_KEY_PAUSE) if(play_status==MUSIC_PAUSE){ #ifdef LINE_IN_FLASH_WHOLE_SCREEN aux_screen_flash_bit=~aux_screen_flash_bit; if(aux_screen_flash_bit){ Disp_Con(DISP_AUX); } else{ Disp_Con(DISP_PWR_OFF); break; } #endif } #endif #if defined(TIME_FORCE_SHOW_ON_SCREEN) if(DISP_AUX == 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_AUX); #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) { cfilenum = 0; } if (DISP_AUX != curr_menu) Disp_Con(DISP_AUX); #if defined(CUSTOM_MAIN_DISP_VOL) if (DISP_AUX== curr_menu){ Disp_Con(DISP_VOL); } #endif } #if defined(USE_BAT_MANAGEMENT) bmt_hdlr(); #endif Disp_Update(); break; #if defined(NEW_VOLUME_KEY_FEATURE) case INFO_NEXT_FIL : case INFO_NEXT_FIL | KEY_SHORT_UP: case INFO_NEXT_FIL | KEY_HOLD: if(!new_vol_feature){ break; } #else case INFO_VOL_PLUS: case INFO_VOL_PLUS | KEY_HOLD : #ifdef KEY_NEXT_PREV_HOLD_ADJ_VOL_IN_AUX case INFO_NEXT_FIL| KEY_HOLD : #endif #if !defined(INDEPENDENT_VOLUME_KEY) case INFO_NEXT_FIL: case INFO_NEXT_FIL| KEY_HOLD : if(IR_KEY_Detect){ IR_KEY_Detect =0; break; } #endif #endif #ifdef SUPPORT_PT2313 if((audio_effect_state>0)){ audio_effect_hdlr(0x01); flush_low_msg(); break; } #endif my_music_vol += 2; #if defined(NEW_VOLUME_KEY_FEATURE) case INFO_PREV_FIL : case INFO_PREV_FIL | KEY_SHORT_UP: case INFO_PREV_FIL | KEY_HOLD: if(!new_vol_feature){ break; } #else case INFO_VOL_MINUS: case INFO_VOL_MINUS | KEY_HOLD : #ifdef KEY_NEXT_PREV_HOLD_ADJ_VOL_IN_AUX case INFO_PREV_FIL| KEY_HOLD : #endif #if !defined(INDEPENDENT_VOLUME_KEY) case INFO_PREV_FIL: case INFO_PREV_FIL| KEY_HOLD : if(IR_KEY_Detect){ IR_KEY_Detect =0; break; } #endif #endif #ifdef SUPPORT_PT2313 if((audio_effect_state>0)){ audio_effect_hdlr(0x02); flush_low_msg(); break; } #endif if(my_music_vol) my_music_vol--; #ifdef VOL_ADJ_SPARK_LED if(!vol_adj_spark_bit){ vol_adj_spark_bit=1; last_led_play_mod = get_led_flash_mode(); } set_play_flash(LED_FLASH_VERY_FAST); #endif if (my_music_vol > MAX_VOL) { my_music_vol = MAX_VOL; } #if defined(LINE_IN_PLAY_KEY_PAUSE) if (play_status == MUSIC_PAUSE) { play_status =MUSIC_PLAY; #ifndef NO_AUX_MUTE_WHEN_PAUSE Mute_Ext_PA(UNMUTE); #endif } #endif clear_super_mute_lock(); write_info(MEM_VOL,my_music_vol); my_main_vol(my_music_vol); Disp_Con(DISP_VOL); 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 default : _HOT_KEY_HDLR: if (!ap_handle_hotkey(key)) return; } } }
/*----------------------------------------------------------------------------*/ 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; } } }
void ap_handle_hotkey(u8 key) { u8 res; switch (key) { #if ECHO_ENABLE case MSG_REV_SW: echo_sw(); break; case MSG_REV_STRONG_UP: case MSG_REV_STRONG_DOWN: if(echo_strong(key)) { disp_port(MENU_REV_STRONG); } break; case MSG_REV_DEEP_UP: case MSG_REV_DEEP_DOWN: if(echo_deep(key)) { disp_port(MENU_REV_DEEP); } break; #endif case MSG_ALM_SETUP: //clr_alarm_func(); break; case MSG_SNOOZE_SETUP: set_snooze_func(); break; case MSG_MUTE_UNMUTE: sys_mute_flag =~sys_mute_flag; if(sys_mute_flag){ amp_mute(1); PT2313_Config(0,VOL_ADJ); } else{ PT2313_Config(sys_main_vol,VOL_ADJ); amp_mute(0); } break; case MSG_SLEEP_SETUP: if(work_mode != RTC_MODE){ timer_pwr_setting(); } break; case MSG_SYS_POWERON: if(work_mode==RTC_MODE){ work_mode= MUSIC_MODE; } else{ work_mode= RTC_MODE; } timer_pwr_idx=0; put_msg_lifo(MSG_CHANGE_WORK_MODE); break; case MSG_USB_DISK_OUT: case MSG_SDMMC_OUT: set_brightness_all_on(); if( (!device_check() ) && (encode_status >= RECODE_INIT )) //在录音时,活动设备拔出 { rec_device_out = 1; api_stop_encode(); if(AUX_MODE == work_mode) { main_menu = MENU_AUX; disp_port(MENU_AUX); } #if FM_MODULE else if(FM_RADIO_MODE == work_mode) { main_menu = MENU_FM_MAIN; disp_port(MENU_FM_MAIN); } #endif else { put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); //break; } } /* if((!device_check()) && (REC_MIC_MODE == work_mode)) { put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; } */ if(MUSIC_MODE != work_mode) break; put_msg_lifo(MSG_DEVICE_REMOVED); disk_remove_deal_for_music(); break; #if USB_DEVICE_ENABLE case MSG_USB_PC_IN: #if ECHO_ENABLE if(BUSY == echo_ptr->status) { close_echo(); } #endif break_encode(); set_brightness_all_on(); device_check(); work_mode = USB_DEVICE_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); break; case MSG_USB_PC_OUT: set_brightness_all_on(); break; #endif case MSG_AUX_IN : break_encode(); set_brightness_all_on(); #if USB_DEVICE_ENABLE if ((AUX_MODE != work_mode) && (work_mode != USB_DEVICE_MODE)) #else if (AUX_MODE != work_mode) #endif { work_mode = AUX_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); } break; case MSG_AUX_OUT : set_brightness_all_on(); if(work_mode != AUX_MODE)break; if((RECODE_WORKING == encode_status)||(RECODE_PAUSE == encode_status)) { break; } break_encode(); given_device = DEVICE_UDISK; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; case MSG_SDMMC_IN : set_brightness_all_on(); device_check(); if((RECODE_WORKING == encode_status)||(RECODE_PAUSE == encode_status)) { break; } break_encode(); #if USB_DEVICE_ENABLE if (work_mode == USB_DEVICE_MODE) break; #endif given_device = read_info(MEM_ACTIVE_DEV); if(given_device == DEVICE_SDMMC0_REC) given_device = DEVICE_SDMMC0_REC; else given_device = DEVICE_SDMMC0; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; case MSG_USB_DISK_IN : set_brightness_all_on(); device_check(); if((RECODE_WORKING == encode_status)||(RECODE_PAUSE == encode_status)) { break; } break_encode(); given_device = read_info(MEM_ACTIVE_DEV); if(given_device == DEVICE_UDISK_REC) given_device = DEVICE_UDISK_REC; else given_device = DEVICE_UDISK; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; case MSG_NEXT_WORKMODE: break_encode(); if(work_mode == MUSIC_MODE){ device_check(); if(((device_active &(~VIRTUAL_DEVICE))== DEVICE_UDISK)&&(device_online&DEVICE_SDMMC0)>0){ given_device = DEVICE_SDMMC0; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; } } work_mode++; if(work_mode > MAX_WORK_MODE){ work_mode = MUSIC_MODE; if(get_device_online_status()&DEVICE_UDISK){ given_device = DEVICE_UDISK; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); } else if(get_device_online_status()&DEVICE_SDMMC0){ given_device = DEVICE_SDMMC0; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); } else{ work_mode++; } } put_msg_lifo(MSG_CHANGE_WORK_MODE); break; case MSG_VOL_UP: if (vol_change_en==0) break; sys_main_vol++; sys_main_vol++; case MSG_VOL_DOWN: if (vol_change_en==0) break; if(sys_main_vol>0) sys_main_vol--; if(sys_main_vol>MAX_MAIN_VOL){ sys_main_vol =MAX_MAIN_VOL; } sys_mute_flag =0; PT2313_Config(sys_main_vol,VOL_ADJ); if(sys_main_vol==0){ amp_mute(1); } else{ amp_mute(0); } dac_mute_control(0,1); //调节音量时,自动UNMUTE write_info(MEM_VOL, sys_main_vol); disp_port(MENU_MAIN_VOL); break; case MSG_MUSIC_NEXT_EQ: if(work_mode == RTC_MODE) break; eq_mode++; if (eq_mode > CLASSIC) { eq_mode = NORMAL; } PT2313_Config(eq_mode,EQ_ADJ); set_eq(NORMAL); disp_port(MENU_SET_EQ); break; case MSG_100: if (!input_number_en) break; if (input_number > 999) input_number = 0; key_100_flag = 0xFF; #ifdef USE_10_PLUS_FUNC input_number = input_number+10; #else input_number = input_number+100; #endif disp_port(MENU_INPUT_NUMBER); break; case MSG_0: case MSG_1: case MSG_2: case MSG_3: case MSG_4: case MSG_5: case MSG_6: case MSG_7: case MSG_8: case MSG_9: if (!input_number_en) break; if(key_100_flag ==0xFF){ input_number += key; key_100_flag = 0xFE; } else if(key_100_flag ==0xFE){ input_number += (input_number%10)*10-(input_number%10)+key; key_100_flag = 0x00; } else { if((input_number)>6553){ input_number = 0x0000; } input_number = input_number * 10 + key; key_100_flag = 0x00; } #if 1 if (input_number > 9999) { input_number = 0; input_number = input_number *10 + key; } #endif disp_port(MENU_INPUT_NUMBER); break; ////////////////录音 case MSG_REC_KEY_AT_USB: if(RTC_MODE == work_mode){ break; } if(RECODE_PLAY >= encode_status) { rec_device_sel=DEVICE_UDISK; api_stop_encode(); put_msg_lifo(MSG_REC_FIND); } else { put_msg_lifo(MSG_REC_STOP); } break; case MSG_REC_KEY_AT_SD: if(RTC_MODE == work_mode){ break; } if(RECODE_PLAY >= encode_status) { rec_device_sel=DEVICE_SDMMC0; api_stop_encode(); put_msg_lifo(MSG_REC_FIND); } else { put_msg_lifo(MSG_REC_STOP); } break; #if 0 case MSG_REC_KEY: //录音开始和结束 if(RECODE_PLAY >= encode_status) { put_msg_lifo(MSG_REC_FIND); } else { put_msg_lifo(MSG_REC_STOP); } break; #endif case MSG_REC_PP: //录音暂停和继续录音 if(RECODE_WORKING == encode_status) { put_msg_lifo(MSG_REC_PAUSE); } else if(RECODE_PAUSE == encode_status) { put_msg_lifo(MSG_REC_CONTINUE); } break; case MSG_ENCODE_END: //设备写err 或 设备满 // deg_str("MSG_ENCODE_END \n"); if(rec_device_out) //录音时活动设备拔出,在设备拔出那里处理,在此不做处理 { rec_device_out =0; break; } api_stop_encode(); //停止录音 put_msg_lifo(MSG_REC_PLAY); break; case MSG_ENCODE_FAT_FULL: //建文件时 // deg_str("MSG_ENCODE_FAT_FULL \n"); api_stop_encode(); //停止录音 if(REC_MIC_MODE == work_mode) //录音时写设备出现问题、设备满 { put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; } // break_encode(); if(AUX_MODE == work_mode) { main_menu = MENU_AUX; } #if FM_MODULE else if(FM_RADIO_MODE == work_mode) { main_menu = MENU_FM_MAIN; } #endif disp_port(main_menu); break; ////////////////录音涉及的各种状态 case MSG_REC_FIND: // if(RECODE_PLAY >= encode_status) // { // break; // } #if USB_DEVICE_ENABLE if(USB_DEVICE_MODE == work_mode) { break; } #endif encode_status = RECODE_INIT; if(REC_MIC_MODE != work_mode) { work_mode = REC_MIC_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); given_device = rec_device_sel;//read_info(MEM_ACTIVE_DEV); break; } #if 0 else //if((MUSIC_MODE != work_mode)) { if (given_device == NO_DEVICE) { given_device = read_info(MEM_ACTIVE_DEV); } } if( (( given_device & (~VIRTUAL_DEVICE )) != DEVICE_SDMMC0) && ((given_device & (~VIRTUAL_DEVICE)) != DEVICE_UDISK) ) { given_device = DEVICE_SDMMC0; } #endif given_device = rec_device_sel;//read_info(MEM_ACTIVE_DEV); sys_clk_div(2);//SYSTEM_CLK_DIV2(); put_msg_lifo(MSG_MUSIC_SELECT_NEW_DEVICE); break; case MSG_REC_START: //开始录音 rec_device_out = 0; #if 0 rec_sys_set(0); //0:24M 1:48M sys_clk_div(2);//SYSTEM_CLK_DIV2(); //24 M #else rec_sys_set(1); sys_clk_div(1);//SYSTEM_CLK_DIV1(); //48 M #endif //init_rec_name(); device_active |= VIRTUAL_DEVICE; encode_device = device_active; //设置录音存储设备 write_file_info(0); set_rec_channel(encode_channel); //设置录音通道 set_rec_vol(encode_vol); //设置录音音量 if(REC_MIC_MODE == work_mode) { kala_dac_off(); // dac_mute_control(1,1); #if KALAOK_FUNCTION dsp_set_adc_con(0); P3HD &=~(1<<6); #endif } if(REC_MIC == encode_channel) { set_rec_track(TRACK_LEFT); } else { set_rec_track(TRACK_ALL); } /**/ CLKGAT |= MP3CLK;// | SPIURCLK; // CLKCON0 |= DACCLK; // P3HD &=~(1<<6); if(DEVICE_SDMMC0 == (device_active & (~VIRTUAL_DEVICE))) { CLKGAT |= USBCLK; } else if(DEVICE_UDISK == (device_active & (~VIRTUAL_DEVICE))) { CLKGAT |= SDCLK; } #if ECHO_ENABLE if(BUSY == echo_ptr->status) { close_echo(); } #endif ///0x //my_memset(0x4000,0,0x787f-0x4000); //my_memset(0x8000,0,0x9c3f-0x8000); //混响强度 0x400c 取值范围 0-255 //混响深度 0x4015 0x4014 取值范围 0-2048 #if ECHO_ENABLE if(1 != start_encode_echo(IS_MP3)) //开始录音 #else if(1 != start_encode(IS_MP3)) //开始录音 #endif { put_msg_lifo(MSG_ENCODE_FAT_FULL); break; } #if ECHO_ENABLE ///<减弱冲击声,打开混响深度和强度 delay_10ms(20); if( REC_MIC == ( encode_channel & 0xf ) ) ///<MIC 下有混响 { set_echo(app_echo.strong, app_echo.deep); } // app_echo.strong = REC_ECHO_STRONG; echo_vol_set(REC_MIC_VOL); #endif /* if(REC_MIC_MODE == work_mode) { while(!((cmd_ctl_rec(REC_NO_OPT,0)) & FRIST_ADC_PACKET)) //采数据前的处理 { } delay_10ms(50);//抛弃半秒的数据 } cmd_ctl_rec(ENABLE_REC_DATA,ENABLE_REC_BIT); */ encode_status = RECODE_WORKING; #if 0//FM_MODULE if(FM_RADIO_MODE != work_mode) #endif { main_menu = MENU_RECWORKING;// } disp_port(main_menu); //disp_port(MENU_REC); break; case MSG_REC_STOP: //停止录音 api_stop_encode(); //停止录音 put_msg_lifo(MSG_REC_PLAY); break; case MSG_REC_PAUSE: //暂停录音 encode_status = RECODE_PAUSE; #if 0//FM_MODULE if(FM_RADIO_MODE == work_mode) disp_port(MENU_FM_MAIN); else #endif { main_menu = MENU_REC_PAUSE; disp_port(MENU_REC_PAUSE); } pause_encode(); break; case MSG_REC_CONTINUE: //暂停录音之后继续录音 encode_status = RECODE_WORKING; #if FM_MODULE if(FM_RADIO_MODE == work_mode) disp_port(MENU_FM_MAIN); else #endif { main_menu = MENU_RECWORKING;// disp_port(MENU_RECWORKING); } continue_encode(); break; case MSG_REC_PLAY: //播放最后的录音文件 encode_status = RECODE_PLAY; given_device = encode_device & (~VIRTUAL_DEVICE); if( (given_device != DEVICE_SDMMC0) && (given_device != DEVICE_UDISK)) { given_device = DEVICE_SDMMC0; } given_device |= VIRTUAL_DEVICE; if((MUSIC_MODE != work_mode)) { put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); } else { put_msg_lifo(MSG_MUSIC_SELECT_NEW_DEVICE); } break; case MSG_MUSIC_SELECT_NEW_DEVICE: //重新选择设备 res = find_device(given_device); if ((res == DEV_INIT_ERR) || (res == NO_DEFINE_DEV)) //指定的设备不在线,或初始化失败 { given_device = DEVICE_AUTO_NEXT; //自动选择下一个设备 put_msg_lifo(MSG_MUSIC_SELECT_NEW_DEVICE); break; } else if ((res == NO_EFFECTIVE_DEV) || (res == NO_DEV_ONLINE)) //无可播放的设备 { if(RECODE_STOP != encode_status) { encode_status = RECODE_STOP; if(REC_MIC_MODE == work_mode) { put_msg_lifo(MSG_NEXT_WORKMODE); } break; } else { put_msg_lifo(MSG_NEXT_WORKMODE); } break; } else { if(RECODE_PLAY < encode_status) { put_msg_lifo(MSG_REC_START); } else { if(RECODE_PLAY == encode_status) //去播刚录好的文件 { encode_status = RECODE_STOP; #if VIRTUAL_ENABLE given_file_number = encode_filenum; #else given_file_number = encode_filenum + encode_fristfile - 1; #endif put_msg_lifo(MSG_MUSIC_PLAY_NEW_FILE); } else { put_msg_lifo(MSG_MUSIC_SELECT_NEW_FILE); //找到可用设备 } } } break; } }