/*----------------------------------------------------------------------------*/ 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 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 main(void) { amp_mute(1); clock_in = T0CNT; //输入时钟,define in clock.h sys_init(); power_key_hdlr(SYS_PWR_ON); AMUX_P2IE_SET(AMUX0_IE&AMUX1_IE); sys_info_init(); clear_all_event(); flush_all_msg(); enter_fm_rev(); PT2313_Init(); work_mode=RTC_MODE; #ifdef IR_DEBUG IR_Debug_func(); #endif while (1) { switch (work_mode) { case MUSIC_MODE: music_decode(); break; #if USB_DEVICE_ENABLE case USB_DEVICE_MODE: usb_audio_massstorage(); break; #endif #if 1//FM_MODULE case FM_RADIO_MODE: fm_radio(); break; #endif case AUX_MODE: aux_fun(); break; #if 1//RTC_ENABLE case RTC_MODE: rtc_fun(); break; #endif case REC_MIC_MODE: rec_mic_fun(); break; case IDLE_MODE: //power_key_hdlr(SYS_PWR_OFF); break; default: work_mode = MUSIC_MODE; break; } write_info(MEM_SYSMODE ,work_mode); } //*/ }
void main(void) { amp_mute(1); clock_in = T0CNT; //输入时钟,define in clock.h // WDT_EN(); sys_init(); //power_key_hdlr(SYS_PWR_ON); flashled(LED_ON); AMUX_P2IE_SET(AMUX0_IE&AMUX1_IE); sys_info_init(); clear_all_event(); flush_all_msg(); //work_mode=REC_MIC_MODE; ///* while (1) { switch (work_mode) { case MUSIC_MODE: music_decode(); break; #if USB_DEVICE_ENABLE case USB_DEVICE_MODE: usb_audio_massstorage(); break; #endif #if FM_MODULE case FM_RADIO_MODE: fm_radio(); break; #endif #ifndef NOT_USE_LINE_IN_FUNC case AUX_MODE: aux_fun(); break; #endif #if RTC_ENABLE case RTC_MODE: rtc_fun(); break; #endif case REC_MIC_MODE: rec_mic_fun(); break; case IDLE_MODE: #ifndef NO_IDLE_MODE_FUNC idle_mode(); #endif // power_key_hdlr(SYS_PWR_OFF); break; default: work_mode = MUSIC_MODE; break; } write_info(MEM_SYSMODE ,work_mode); } //*/ }
/*----------------------------------------------------------------------------*/ 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 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; }
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; } }