#include "include.h" #include "func.h" #include "hlw_func.h" #if HLW_UI AT(.text.func.charge.msg) void func_charge_message(u16 msg) { switch (msg) { #if HLW_UI case KU_ANC: //no ANC break; #endif case EVT_NTC_CONTROL: hlw_func_ntc_control_handle(); break; case EVT_PC_INSERT: //printf("EVT_PC_INSERT %d\n",dev_is_online(DEV_USBPC)); if (dev_is_online(DEV_USBPC)) { func_cb.sta = FUNC_USBDEV; } break; default: //func_message(msg); break; } } #endif AT(.text.func.charge) void func_charge_process(void) { while (1) { WDT_CLR(); #if HLW_UI func_charge_message(msg_dequeue()); #endif #if QTEST_EN if(qtest_get_mode() || qtest_cb.sta){ func_cb.sta = func_cb.last; break;; } #endif #if CHARGE_LOW_POWER_EN delay_us(200); #else delay_5ms(1); #endif #if CHARGE_EN if (charge_charge_on_process()) { func_cb.sta = func_cb.last; break; } #endif #if HLW_UI if(func_cb.sta == FUNC_USBDEV) { break; } if(hlw_func_exit_charge_handle()) { break; } #endif } } AT(.text.func.charge) static void func_charge_enter(void) { #if ANC_EN if(xcfg_cb.anc_en && sys_cb.anc_user_mode) { bsp_anc_stop(); //bsp_anc_set_mode(0); } #endif #if BT_MUSIC_EFFECT_EN music_effect_alg_suspend(MUSIC_EFFECT_SUSPEND_FOR_CHARGE); #endif // BT_MUSIC_EFFECT_EN dac_power_off(); lock_code_charge(); #if CHARGE_EN charge_enter(1); #endif #if HLW_UI led_init(); hlw_func_charge_init_handle(); hlw_func_charge_electric_init(); hlw_func_ntc_var_init(); hlw_cb.charge_qian30s_flag = true; hlw_cb.charge_qian30s_count = 0; hlw_cb.charging_flag = true; hlw_cb.exit_charge_count = 0; vusb4s_reset_en(); #endif } AT(.text.func.charge) static void func_charge_exit(void) { #if CHARGE_EN charge_exit(); #endif unlock_code_charge(); printf("dc out\n"); #if HLW_UI hlw_func_charge_electric_control_handle(0); hlw_func_charge_enable_handle(0); #endif bsp_res_set_enable(true); func_bt_init(); en_auto_pwroff(); if (xcfg_cb.bt_tws_pair_mode > 1) { bt_tws_set_scan(0x03); } if (!bsp_dac_off_for_bt_conn()) { dac_restart(); } #if BT_MUSIC_EFFECT_EN music_effect_alg_restart(); #endif // BT_MUSIC_EFFECT_EN #if !HLW_UI #if ANC_EN if(sys_cb.anc_user_mode) { bsp_anc_set_mode(sys_cb.anc_user_mode); } dac_fade_in(); #endif if (xcfg_cb.bt_outbox_voice_pwron_en) { mp3_res_play(RES_BUF_POWERON, RES_LEN_POWERON); } #endif } AT(.text.func.charge) void func_charge(void) { printf("%s\n", __func__); func_charge_enter(); func_charge_process(); func_charge_exit(); }