/*----------------------------------------------------------------------------*/ void rtc_fun(void) { MAIN_POWER_PORT_INIT(); MAIN_POWER_PORT_DISABLE(); iic_gpio_set_low(); amp_mute(1); if(alm_on_flag){ if(sys_main_vol != alrm_vol_bakup) sys_main_vol = alrm_vol_bakup; alm_on_flag = 0; } input_number_en = 0; vol_change_en=0; key_voice_en=0; main_menu = MENU_RTC; close_alarm(); dsp_set_eq_mode(0); //系统时钟div前需关闭eq SYSTEM_CLK_DIV4(); key_table_sel(0); flush_all_msg(); set_max_vol(MAX_ANOLOG_VOL,MAX_DIGITAL_VOL);///设置最大音量 dac_out_select(DAC_MUSIC, 0); rtc_mode_setting = RTC_DISPLAY; rtc_coordinate = 0; alm_coordinate = 0; if (alm_cnt) { put_msg_lifo(MSG_ALM_ON); } else { read_rtc(&curr_time); chk_date_err(); disp_port(MENU_RTC); } MAIN_POWER_PORT_INIT(); MAIN_POWER_PORT_DISABLE(); deal_rtc(); amp_mute(1); MAIN_POWER_PORT_ENABLE(); delay_10ms(3); key_voice_en=0; main_vol_set(0, CHANGE_VOL_NO_MEM); MAIN_POWER_PORT_ENABLE(); amp_mute(1); delay_10ms(80); snooze_en =0; PT2313_Init(); delay_10ms(10); PT2313_Init(); }
/*----------------------------------------------------------------------------*/ void rtc_function(void) { #if !defined(MINI_DIGIT_BOX) rtc_mode = RTC_PLAY_MODE; rtc_set = 0; alm_set = 0; #endif flush_low_msg(); PT1 = 1; Mute_Ext_PA(MUTE); if (alm_flag) //闹钟响时默认进入闹钟模式 { rtc_mode = ALM_UP_MODE; #ifdef ALM_UP_DISP_TIME Disp_Con(DISP_RTC); #else Disp_Con(DISP_ALM_UP); #endif goto _deal_rtc0; } else { get_curr_date(); Disp_Con(DISP_RTC); } set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); //设置RTC模式的音量上限 dac_out_select(DAC_DECODE); sysclock_div2(1); #ifdef UART_ENABLE_RTC //printf(" -----> RTC MODE %x rtc_set %x\r\n",(u16)rtc_mode,(u16)rtc_set); //printf(" --0000-->RTC MODE ==%d \r\n",(u16)curr_date.year); //printf(" --1111--->RTC MODE ==%d \r\n",(u16)curr_date.month); //printf(" --3333--->RTC MODE ==%d \r\n",(u16)curr_date.day); printf(" --HOUR--->RTC MODE ==%d \r\n",(u16)curr_date.hour); printf(" --MIN --->RTC MODE ==%d \r\n",(u16)curr_date.minutes); //printf(" --date--->RTC MODE ==%d \r\n",(u16)curr_date.date); #endif _deal_rtc0: deal_rtc(); #if defined(NEW_RTC_SETTING_CTRL) new_rtc_setting=0; #endif main_vol_set(0, CHANGE_VOL_NO_MEM); sys_clock_pll(); }
/*----------------------------------------------------------------------------*/ void stop_decode(void) { play_status = MAD_STOP; //set_play_flash(LED_FLASH_ON); #if (1 == MUSIC_FADE_OUT_EN) main_vol_set(0, CHANGE_VOL_NO_MEM | CHANGE_VOL_PEND); #endif mad_control(MAD_STOP, 0); decode_init(); //解码初始化,会将解码的变量及状态清零 }
/*----------------------------------------------------------------------------*/ void decode_play(void) { #ifdef MP3_UART_ENABLE sys_printf(" SYS GO IN DECODE MODE"); #endif Mute_Ext_PA(MUTE); disp_play_filenum_timer=10; folder_select=0; folder_mode_select=0; rtc_setting=0; disp_scenario = DISP_NORMAL; Disp_Con(DISP_SCAN_DISK); sysclock_div2(1); #ifndef NO_SD_DECODE_FUNC sd_speed_init(0, 50); #endif decodeclock_div2(DECODE_CLK_DIV2); //decoder分频,可以减少功耗 music_info_init(); dsp_hi_pro(); decodeint_hi_pro(); device_active = 0; put_msg_lifo(SEL_GIVEN_DEVICE_GIVEN_FILE); set_max_vol(MAX_ANALOG_VOL-DECODE_ANALOG_VOL_CUT, MAX_DIGITAL_VOL); //设置Music模式的音量上限 //suspend_sdmmc(); music_play(); Mute_Ext_PA(MUTE); #ifdef ADKEY_SELECT_MODE mode_switch_protect_bit=1; #endif disp_scenario = DISP_NORMAL; folder_select=0; folder_mode_select=0; stop_decode(); #ifdef USE_USB_PROG_PLAY_MODE usb_prog_mode_cls(); #endif #if(MEMORY_STYLE != USE_DEVICE) usb_suspend(); //Entered Suspend mode #endif write_playtime(&playpoint_time); //记录断点信息(EEPROM) main_vol_set(0, CHANGE_VOL_NO_MEM); }
void iphone_func(void) { #if defined(K000_XingChuang_x821_V001) charger_iphone_ctrl(); #endif Mute_Ext_PA(MUTE); set_play_flash(LED_FLASH_ON); Disp_Con(DISP_IPOD); PT1 = 1; //timer1 interrupt 低优先级 flush_low_msg(); play_status = 0; set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); //设置AUX模式的音量上限 sysclock_div2(1); #ifdef BLUETOOTH_GPIO_CTRL #ifndef SYS_BT_TURN_OFF_PWR_CHECK BT_PWR_OFF(); #endif #endif open_uart_ctrl(); ipone_hdlr(); #if defined(TURN_OFF_IPOD_WHEN_LEAVE_IPHONE_DOCK) delay_10ms(10); IPOD_STOP; delay_10ms(1); IPOD_RELEASE; delay_10ms(1); #endif close_uart_ctrl(); main_vol_set(0, CHANGE_VOL_NO_MEM); sys_clock_pll(); #if defined(USE_SPECTRUM_PARTTERN) set_lcd_flash_lock(UNLOCK); #endif #if defined(K000_XingChuang_x821_V001) wkup_pin_ctrl(0); #endif }
/*----------------------------------------------------------------------------*/ void music_decode(void) { sys_printf(" ------------------------------------>music_decode "); #ifdef AC_SLAVE_ENABLE DSA_init(); #endif dev_remov_timer=0; play_mode = REPEAT_OFF; disk_toc_ok=0; dev_invalid=0; input_number_en = 1; //允许数字输入功能 vol_change_en=1; key_voice_en=1; main_menu = MENU_MUSIC_MAIN; dec_msg = get_dec_msg_ptr(); fat_ptr1.buf = win_buffer; SYSTEM_CLK_DIV1(); //sd_speed_init(0, 100); key_table_sel(0); flush_all_msg(); music_info_init(); set_max_vol(MAX_ANOLOG_VOL,MAX_DIGITAL_VOL);///设置最大音量 if(DSA_SEL_DEV==DEVICE_SDMMC0){ given_device = DEVICE_SDMMC0; } else if(DSA_SEL_DEV==DEVICE_UDISK){ given_device = DEVICE_UDISK; } //put_msg_lifo(MSG_MUSIC_SELECT_NEW_DEVICE); music_play(); //delay_10ms(3); stop_decode(); usb_suspend(); //Entered Suspend Mode key_voice_en=0; main_vol_set(0, CHANGE_VOL_NO_MEM); given_device = NO_DEVICE; }
/*----------------------------------------------------------------------------*/ void aux_function(void) { #ifdef USE_LINE_IN_DETECT_FUNC if (!aux_online) { Set_Curr_Func(SYS_MP3DECODE_USB); return; } #endif Mute_Ext_PA(MUTE); sysclock_div2(1); flush_low_msg(); Disp_Con(DISP_AUX); set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); //设置AUX模式的音量上限 deal_aux(); Mute_Ext_PA(MUTE); main_vol_set(0, CHANGE_VOL_NO_MEM); }
/*----------------------------------------------------------------------------*/ void aux_fun(void) { flashled(3); // amp_abd(1); //work_mode++; //return ; input_number_en = 0; vol_change_en=1; main_menu = MENU_AUX; disp_port(MENU_AUX); amux_dsp_eq(); SYSTEM_CLK_DIV4(); encode_channel = REC_LINEIN; encode_vol = 3; key_table_sel(0); flush_all_msg(); set_max_vol(MAX_ANOLOG_VOL,MAX_DIGITAL_VOL);///设置最大音量 aux_main(); main_vol_set(0, CHANGE_VOL_NO_MEM); break_encode(); }
/*----------------------------------------------------------------------------*/ void aux_main(void) { #ifdef AUX_DETECT_FUNC if(!aux_online){ work_mode = MUSIC_MODE; return ; } #endif #ifdef UART_ENABLE deg_str("aux \n"); #endif aux_detect_protect(FALSE); set_delay_mute(DELAY_MUTE_1000MS); key_table_sel(SYS_DEFUALT_KEY_TABLE); sys_mute_flag=0; input_number_en = 0; vol_change_en=1; main_menu = MENU_AUX_MAIN; disp_port(MENU_AUX_MAIN); amux_dsp_eq(); SYSTEM_CLK_DIV2(); encode_channel = REC_LINEIN; encode_vol = 3; key_table_sel(0); flush_all_msg(); set_max_vol(MAX_ANOLOG_VOL,MAX_DIGITAL_VOL);///设置最大音量 aux_main_handlr(); ext_amp_mute(MUTE); main_vol_set(0, CHANGE_VOL_NO_MEM); sys_mute_flag=0; break_encode(); }
/*----------------------------------------------------------------------------*/ 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 sys_info_init(void) { delay_10ms(80); //保证U盘/SD卡能有足够时间通过在线检测,稳定接入 dac_init(); #if DEVICE_ENCRYPTION device_password_init(0x12345678); //输入加密设备的密码 #endif #if ((USE_DEVICE == MEMORY_STYLE)&&(FAT_MEMORY)) get_info_memory(); get_info(); #endif #if ((USE_RTC_EEPROM == MEMORY_STYLE)) check_eeprom_status(); #endif #if 1 my_music_vol = read_info(MEM_VOL); if ((my_music_vol > MAX_MAIN_VOL) || (my_music_vol == 0)) //每次开机时,不要超过最大音量的一半,以免开机音量过大 { my_music_vol = 16; } #endif #if VOLUME_DEFAULT my_music_vol = VOLUME_DEFAULT; #endif music_vol = my_music_vol; set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); main_vol_set(my_music_vol, CHANGE_VOL_MEM); main_fade_en = 1; #if 0 #if OTP_MUSIC_ENABLE decode_opt_music_file(); #endif #if RTC_ENABLE if (work_mode != SYS_RTC) #endif { usb_audio_massstorage(); //每次上电判断是否连接电脑 } #endif #if 0 #ifdef USE_SYS_MODE_RECOVER work_mode = read_info(MEM_SYSMODE); #ifdef UART_ENABLE printf("------->- MEM_SYSMODE restored work_mode:%d \r\n",(u16)work_mode); #endif if (work_mode > SYS_IDLE){ #ifdef USE_USB_SD_DECODE_FUNC work_mode = SYS_MP3DECODE_USB; #else work_mode = SYS_FMREV; #endif } #else work_mode = SYS_MCU_CD; #endif #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 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; } } }
u8 decode_voicetime_file() { u8 key; u8 cnt =0; u8 flag; get_time_tobuf(); //获取需要报时的文件 _play_voicetime: voicetime_on = 1; dsp_hi_pro(); decodeint_hi_pro(); f_init(win_buffer, (u16)code_otp_read, 1); f_open((u8 *)&fat_file, 0); f_open_dummy_file(0x200); mad_control(0,(u16)buffer); set_eq(0); //必须在每首歌曲播放前初始化EQ music_type = musice_format_check(buffer); set_max_vol(MAX_ANALOG_VOL, MAX_DIGITAL_VOL); my_memset(win_buffer, 0, 512); //解码前,必须清除buffer main_vol_set(0, SET_USE_CURRENT_VOL); flush_low_msg(); play_status = MUSIC_PLAY; decode_cmd = 0; decode_user_exit(0); enable_softint(); enable_decode_isr(); set_device(0); while(1) { key = get_msg(); switch (key) { case DECODE_MSG_DISK_ERR: case DECODE_MSG_FILE_END: otp_music_addr = play_buf[cnt]; cnt++; delay_10ms(20); if(cnt > play_len) { cnt= 0; otp_music_addr =0; stop_decode(); return 0; } else { goto _play_voicetime; } default : #if 0 flag = alm_bell_key(key); if(flag) { otp_music_addr =0; stop_decode(); close_alm_bell(); return flag; } #endif break; } } }
/*----------------------------------------------------------------------------*/ void ap_handle_hotkey(u8 key) { u8 res; switch (key) { case MSG_POWER_DOWN: if(sys_pwr_flag==0){ sys_pwr_flag =1; sys_mute_flag =1; dac_mute_control(sys_mute_flag,1); //调节音量时,自动UNMUTE work_mode = IDLE_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); } else{ sys_mute_flag =0; //dac_mute_control(sys_mute_flag,1); //调节音量时,自动UNMUTE sys_pwr_flag =0; //work_mode = IDLE_MODE; } break; case MSG_MUTE_UNMUTE: sys_mute_flag=~sys_mute_flag; //dac_mute_toggle(); dac_mute_control(sys_mute_flag,1); //调节音量时,自动UNMUTE break; #if 1 case MSG_MUSIC_PREV_FILE: //选择上一个文件进行播放 case MSG_MUSIC_FR: //启动快退 if ((disp_scenario == DISP_RTC_SCEN)&&(rtc_setting_flag!=0)) { rtc_set_cnt=30; curr_time_minus(); write_rtc(&curr_time); //write_next_alm_sec(); disp_port(MENU_RTC); } break; case MSG_MUSIC_NEXT_FILE: //选择下一个文件进行播放 case MSG_MUSIC_FF: //启动快退 if ((disp_scenario == DISP_RTC_SCEN)&&(rtc_setting_flag!=0)) { rtc_set_cnt=30; curr_time_plus(); write_rtc(&curr_time); //write_next_alm_sec(); disp_port(MENU_RTC); } break; case MSG_NEXT_WORKMODE: //set_brightness_all_on(); if(work_mode==FM_RADIO_MODE)break; if(rtc_setting_flag!=0){ rtc_coordinate++; rtc_set_cnt=30; if(rtc_coordinate>4){ rtc_coordinate = 3; rtc_setting_flag = 0x00; } break; } if(disp_scenario == DISP_NORMAL){ input_number_en = 0; //允许数字输入功能 disp_scenario = DISP_RTC_SCEN; rtc_disp_hdlr(); } else{ if(device_online==0)break; input_number_en = 1; //允许数字输入功能 disp_scenario = DISP_NORMAL; disp_port(MENU_MUSIC_MAIN); } break; case MSG_TIME_SETTING: //set_brightness_all_on(); if(disp_scenario == DISP_RTC_SCEN){ rtc_set_cnt=30; rtc_setting_flag = 0x01; rtc_coordinate = 3; } break; case MSG_USB_DISK_OUT: case MSG_SDMMC_OUT: if((RECODE_WORKING == encode_status)||(RECODE_PAUSE == encode_status)) { #ifdef AUTO_PLAY_RADIO_REC_FILE auto_play_radio_rec=0; #endif rec_device_out = 1; api_stop_encode(); if(work_mode == FM_RADIO_MODE){ main_menu = MENU_FM_MAIN;// disp_port(MENU_FM_MAIN); break; } } #ifndef LCD_BACK_LIGHT_DUMMY set_brightness_all_on(); #endif 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; #endif #if USB_DEVICE_ENABLE case MSG_USB_PC_IN: 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_SDMMC_IN : #ifndef LCD_BACK_LIGHT_DUMMY set_brightness_all_on(); #endif device_check(); if((RECODE_WORKING == encode_status)||(RECODE_PAUSE == encode_status)) { break; } break_encode(); disp_scenario = DISP_NORMAL; #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 : #ifndef LCD_BACK_LIGHT_DUMMY set_brightness_all_on(); #endif device_check(); if((RECODE_WORKING == encode_status)||(RECODE_PAUSE == encode_status)) { break; } break_encode(); disp_scenario = DISP_NORMAL; 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; #if 0 case MSG_NEXT_WORKMODE: #if 0//def K820_LHD_820_REC_V001 if(MUSIC_MODE != work_mode) break; if(device_check()>0){ given_device = DEVICE_AUTO_NEXT; given_file_method = PLAY_BREAK_POINT; put_msg_lifo(MSG_MUSIC_SELECT_NEW_DEVICE); backup_music_point(); } else{ //flashled(3); work_mode =IDLE_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); } break; #endif break_encode(); work_mode++; if (work_mode > MAX_WORK_MODE) work_mode = MUSIC_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); break; #endif #if 1 case MSG_VOL_UP: if(vol_change_en==0) break; dac_mute_control(0,1); //调节音量时,自动UNMUTE main_vol_set(0, CHANGE_VOL_INC); //write_info(MEM_VOL, main_vol_set(0, CHANGE_VOL_INC)); disp_port(MENU_MAIN_VOL); break; case MSG_VOL_DOWN: if(vol_change_en==0) break; dac_mute_control(0,1); //调节音量时,自动UNMUTE main_vol_set(0, CHANGE_VOL_DEC); //write_info(MEM_VOL, main_vol_set(0, CHANGE_VOL_DEC)); disp_port(MENU_MAIN_VOL); break; #endif 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((input_number)>6553){ input_number = 0x0000; } if (input_number > 9999) input_number = 0; input_number = input_number * 10 + key; disp_port(MENU_INPUT_NUMBER); break; //2 REC FSM BEGIN case MSG_REC_KEY: //录音开始和结束 if(work_mode ==IDLE_MODE) break; if(RECODE_PLAY >= encode_status) { put_msg_lifo(MSG_REC_FIND); #ifdef AUTO_PLAY_RADIO_REC_FILE if(work_mode == FM_RADIO_MODE){ auto_play_radio_rec=1; } #endif } else { #ifdef AUTO_PLAY_RADIO_REC_FILE //auto_play_radio_rec=0; #endif put_msg_lifo(MSG_REC_STOP); } break; case MSG_MUSIC_PP: //录音暂停和继续录音 //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 或 设备满 if(rec_device_out) //录音时活动设备拔出,在设备拔出那里处理,在此不做处理 { rec_device_out =0; break; } api_stop_encode(); //停止录音 put_msg_lifo(MSG_REC_PLAY); break; case MSG_ENCODE_FAT_FULL: //建文件时 api_stop_encode(); //停止录音 if((!device_check())&& (REC_MIC_MODE == work_mode)) { put_msg_lifo(MSG_MUSIC_NEW_DEVICE_IN); break; } // break_encode(); disp_port(main_menu); break; ////////////////录音涉及的各种状态 case MSG_REC_FIND: // if(RECODE_PLAY >= encode_status) // { // break; // } if(get_device_online_status()==0){ disp_port(MENU_NODEVICE); break; } encode_status = RECODE_INIT; if(MUSIC_MODE == work_mode) { encode_device = device_active; //设置录音存储设备 work_mode = REC_MIC_MODE; put_msg_lifo(MSG_CHANGE_WORK_MODE); break; } else if(REC_MIC_MODE == work_mode){ given_device = encode_device; } 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; } SYSTEM_CLK_DIV2(); put_msg_lifo(MSG_MUSIC_SELECT_NEW_DEVICE); break; case MSG_REC_START: //开始录音 rec_device_out = 0; rec_sys_set(0); //0:24M 1:48M init_rec_name(); device_active |= VIRTUAL_DEVICE; encode_device = device_active; //设置录音存储设备 write_file_info(0); SYSTEM_CLK_DIV2(); set_rec_channel(encode_channel); //设置录音通道 set_rec_vol(encode_vol); //设置录音音量 if(REC_MIC == encode_channel) { set_rec_track(TRACK_LEFT); } else { set_rec_track(TRACK_ALL); } /**/ CLKGAT |= MP3CLK;// | SPIURCLK; CLKCON0 |= DACCLK; if(DEVICE_SDMMC0 == (device_active & (~VIRTUAL_DEVICE))) { CLKGAT |= USBCLK; } else if(DEVICE_UDISK == (device_active & (~VIRTUAL_DEVICE))) { CLKGAT |= SDCLK; } if(1 != start_encode(IS_MP3)) //开始录音 { put_msg_lifo(MSG_ENCODE_FAT_FULL); break; } /* 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 FM_MODULE // if(FM_RADIO_MODE != work_mode) #endif { main_menu = MENU_RECWORKING;// } disp_port(main_menu); break; case MSG_REC_STOP: //停止录音 api_stop_encode(); //停止录音 if(work_mode==REC_MIC_MODE){ put_msg_lifo(MSG_REC_PLAY); } #ifdef REC_PLAY_KEY_BREAK_POINT rec_pley_bp_flag=0; #endif break; case MSG_REC_PAUSE: //暂停录音 encode_status = RECODE_PAUSE; #if FM_MODULE if(FM_RADIO_MODE == work_mode) disp_port(MENU_FM_MAIN); else #endif { //main_menu = MENU_REC_PAUSE; disp_port(MENU_RECWORKING); } 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: //播放最后的录音文件 if(work_mode ==IDLE_MODE) break; #ifdef REC_PLAY_KEY_BREAK_POINT rec_pley_bp_flag=~rec_pley_bp_flag; if(rec_pley_bp_flag){ last_play_index = given_file_number; } else{ given_file_number=last_play_index; put_msg_lifo(MSG_MUSIC_PLAY_NEW_FILE); break; } #endif 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); } } else { //put_msg_lifo(MSG_NEXT_WORKMODE); if(disp_scenario == DISP_NORMAL){ #ifdef PLAY_STATUS_LED_FUNC set_play_status_led_spark(PLED_ON); #endif disp_scenario = DISP_RTC_SCEN; rtc_disp_hdlr(); } } break; } else { if(RECODE_PLAY < encode_status) { put_msg_lifo(MSG_REC_START); } else { if(RECODE_PLAY == encode_status) //4去播刚录好的文件 { encode_status = RECODE_STOP; #if VIRTUAL_ENABLE #if 1//defined(K820_LHD_820_REC_V001) given_file_number = logic_fileTotal; #else given_file_number = encode_filenum; #endif #else given_file_number = logic_fileTotal; //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; //2 REC FSM END } }
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 usb_audio_massstorage(void) { device_check(); if (pc_connect) { input_number_en = 0; vol_change_en=1; //sd_speed_init(0, 100); main_menu = MENU_USBDEV_MAIN; disp_port(MENU_USBDEV_MAIN); usb_config(USB_DEVICE_CFG); write_protect_set(0); //不使用写保护功能,如果需要,请根据卡座写保护的状态改变配置 SYSTEM_CLK_DIV1(); init_usb_device_hardware(); #if((PLL_IN_HPRC == INPUT_OSC_SELECT) && USE_SOF_PLL) { u8 flag; flag = correct_hprc(); if(1 == flag) ///<限定时间内,校准通过,保存矫正值 { write_hprc_cnt(MEM_PLLCON0, memery_hprc_cnt); // deg_string("secuss\n"); } else if(0 == flag) ///<校准时USB线拔出 { work_mode = MUSIC_MODE; IE1 &= ~BIT(1); P3PU &= ~BIT(6); // deg_string("unsecuss\n"); return; } else if(2 == flag) ///<限定时间内,校准失效,可继续相应功能 { // work_mode = MUSIC_MODE; // IE1 &= ~BIT(1); // P3PU &= ~BIT(6); // return; } } #endif key_table_sel(0); flush_all_msg(); #if ((USB_DEVICE_CFG & USB_SPEAKER) == USB_SPEAKER) set_eq(eq_mode); #endif alm_request_cnt = 0; set_max_vol(MAX_ANOLOG_VOL,MAX_DIGITAL_VOL);///设置最大音量 usb_device(); recording_end(); dac_mute_control(0,1); ///<退出PC后,关掉DAC MUTE。 #if ((USB_DEVICE_CFG & USB_SPEAKER) == USB_SPEAKER) main_vol_set(0, CHANGE_VOL_NO_MEM); #endif IE1 &= ~BIT(1); P3PU &= ~BIT(6); } else { work_mode++; Set_Curr_Func(work_mode); } }