123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783 |
- #include "include.h"
- #include "api.h"
- #include "hlw_func.h"
- #if HLW_UI
- #define HLW_TRACE_EN 1
- #if HLW_TRACE_EN
- #define TRACE(...) printf(__VA_ARGS__)
- #define TRACE_R(...) print_r(__VA_ARGS__)
- #else
- #define TRACE(...)
- #define TRACE_R(...)
- #endif
- hlw_cb_t hlw_cb AT(.buf.bsp.hlw_cb);
- void hlw_func_var_init(void)
- {
- hlw_cb.reconnect_flag = false;
- hlw_cb.reconnect_count = 0;
- hlw_cb.poweron_reconnect_fail_flag = false;
- hlw_cb.disconnect_flag = 0;
- hlw_cb.disconnect_count = 0;
- hlw_cb.disconnect_reason = 0;
- hlw_cb.sco_kill = 0;
- hlw_cb.hfp_kill = 0;
- hlw_cb.poweron_first_bat_flag = true;
- hlw_cb.curr_bat_level = 10;
- hlw_cb.last_bat_level = 10;
- memset(hlw_cb.sample_volt, 0x00, SAMPLE_CNT);
- memset(hlw_cb.average_volt, 0x00, AVERAGE_CNT);
- hlw_cb.charge_poweron_flag = false;
- memset(hlw_cb.ntc_volt, 0x00, NTC_AVERAGE_CNT);
- hlw_cb.ntc_count = 0;
- hlw_func_ntc_var_init();
- hlw_cb.charge_qian30s_flag = false;
- hlw_cb.charge_qian30s_count = 0;
- hlw_cb.usb_con_flag = false;
- hlw_cb.charging_flag = false;
- hlw_cb.exit_charge_count = 0;
- hlw_cb.need_reset_flag = false;
- hlw_cb.poweron_led_control_flag = false;
- hlw_cb.poweron_led_control_count = 0;
- hlw_cb.clear_pairlist_count = 0;
- hlw_cb.idle_mode_flag = false;
- hlw_cb.idle_mode_count = 0;
- hlw_cb.exist_pairlist_flag = 0;
- hlw_cb.set_ancled_flag = false;
- hlw_cb.set_ancled_control_flag = ANC_LED_END;
- hlw_cb.set_ancled_control_count = 0;
- hlw_cb.curr_connected_flag = false;
- hlw_cb.curr_pairmode_flag = false;
- hlw_cb.auto_poweroff_enable_flag = true;
- hlw_cb.poweron_pwrkey5s_flag = false;
- hlw_cb.eq_init_flag = false;
- hlw_cb.eq_spatital_gain_flag = false;
- hlw_cb.donot_need_play_flag = false;
- hlw_cb.dut_key_count = 0;
- hlw_cb.poweron_voice_flag = false;
- hlw_cb.uart_spp_data = 0;
- memset(hlw_cb.bt_addr, 0x00, 6);
- hlw_cb.chance_mode = 0;
- memset(hlw_cb.paket_cmd, 0x00, 10);
- hlw_cb.poweron_lowbat_flag = true;
- hlw_cb.clear_pairlist_flag = false;
- hlw_cb.poweron_bat_voice_flag = false;
- hlw_cb.poweron_connect_cnt = 0;
- memset(hlw_cb.first_phone_addr, 0x00, 6);
- memset(hlw_cb.second_phone_addr, 0x00, 6);
- hlw_cb.disconnect_auto_off_flag = false;
- hlw_cb.connecting_not_enter_pair_flag = false;
- hlw_cb.poweron_need_connect_num = 0;
- hlw_cb.poweron_need_connect_flag = false;
- hlw_cb.poweron_reconfail_cent = 0;
- hlw_cb.pair_voice_not_play_flag = false;
- }
- //battery process
- AT(.com_text.battery)
- void hlw_func_battery_tran_process(u16 bat_volt)
- {
- //TRACE("battery_volt %d\n", bat_volt);
- if(bat_volt >= 4000)
- {
- hlw_cb.curr_bat_level = 9;
- }
- else if(bat_volt >= 3880)
- {
- hlw_cb.curr_bat_level = 8;
- }
- else if(bat_volt >= 3780)
- {
- hlw_cb.curr_bat_level = 7;
- }
- else if(bat_volt >= 3690)
- {
- hlw_cb.curr_bat_level = 6;
- }
- else if(bat_volt >= 3630)
- {
- hlw_cb.curr_bat_level = 5;
- }
- else if(bat_volt >= 3580)
- {
- hlw_cb.curr_bat_level = 4;
- }
- else if(bat_volt >= 3520)
- {
- hlw_cb.curr_bat_level = 3;
- }
- else if(bat_volt >= 3450)
- {
- hlw_cb.curr_bat_level = 2;
- }
- else if(bat_volt >= 3380)
- {
- hlw_cb.curr_bat_level = 1;
- }
- else
- {
- hlw_cb.curr_bat_level = 0;
- }
- //do not rise
- if((hlw_cb.last_bat_level != hlw_cb.curr_bat_level)&&(hlw_cb.curr_bat_level < hlw_cb.last_bat_level))
- {
- hlw_cb.last_bat_level = hlw_cb.curr_bat_level;
- msg_enqueue(EVT_ONEMORE_BAT_UPDATE);
- //TRACE("hlw_cb.curr_bat_level %d\n", hlw_cb.curr_bat_level);
- }
- else if((hlw_cb.last_bat_level != hlw_cb.curr_bat_level)&&(hlw_cb.curr_bat_level > hlw_cb.last_bat_level))
- {
- hlw_cb.curr_bat_level = hlw_cb.last_bat_level;
- }
- }
- AT(.com_text.battery)
- void hlw_func_poweron_first_battery_process(void)
- {
- if(hlw_cb.poweron_first_bat_flag)
- {
- hlw_cb.poweron_first_bat_flag = false;
- hlw_func_battery_tran_process(sys_cb.vbat);
- }
- }
- AT(.com_text.battery)
- void hlw_func_battery_process(void)
- {
- static u8 bat_sample_cnt = 0;
- static u8 bat_average_cnt = 0;
- u16 temp_sample_volt = 0;
- u32 temp_sum_volt = 0;
- bool update_bat_flag = false;
- u8 i = 0;
- u8 j = 0;
- hlw_cb.sample_volt[bat_sample_cnt] = sys_cb.vbat;
- bat_sample_cnt++;
- if(bat_sample_cnt >= SAMPLE_CNT)
- {
- bat_sample_cnt = 0;
- for(i = 0; i < SAMPLE_CNT; i++)
- {
- for(j = 1; j < SAMPLE_CNT; j++)
- {
- if(hlw_cb.sample_volt[j-1] > hlw_cb.sample_volt[j])
- {
- temp_sample_volt = hlw_cb.sample_volt[j-1];
- hlw_cb.sample_volt[j-1] = hlw_cb.sample_volt[j];
- hlw_cb.sample_volt[j] = temp_sample_volt;
- }
- }
- }
- // do not need three lowest batter volt
- for(i = MINI_BAT_CNT; i < SAMPLE_CNT; i++)
- {
- temp_sum_volt = temp_sum_volt + hlw_cb.sample_volt[i];
- }
- memset(hlw_cb.sample_volt, 0x00, SAMPLE_CNT);
- hlw_cb.average_volt[bat_average_cnt] = (u16)(temp_sum_volt/(SAMPLE_CNT - MINI_BAT_CNT));
- temp_sum_volt = 0;
- bat_average_cnt++;
- if(bat_average_cnt >= AVERAGE_CNT)
- {
- bat_average_cnt = 0;
- for(i = 0; i < AVERAGE_CNT; i++)
- {
- for(j = 1; j < AVERAGE_CNT; j++)
- {
- if(hlw_cb.average_volt[j-1] > hlw_cb.average_volt[j])
- {
- temp_sample_volt = hlw_cb.average_volt[j-1];
- hlw_cb.average_volt[j-1] = hlw_cb.average_volt[j];
- hlw_cb.average_volt[j] = temp_sample_volt;
- }
- }
- }
- for(i = AMINI_BAT_CNT; i < AVERAGE_CNT; i++)
- {
- temp_sum_volt = temp_sum_volt + hlw_cb.average_volt[i];
- }
- sys_cb.vbat = (u16)(temp_sum_volt/(AVERAGE_CNT - AMINI_BAT_CNT));
- update_bat_flag = true;
- memset(hlw_cb.average_volt, 0x00, AVERAGE_CNT);
- }
- if(update_bat_flag)
- {
- update_bat_flag = false;
- hlw_func_battery_tran_process(sys_cb.vbat);
- }
- }
- }
- //ntc
- AT(.com_text.ntc)
- void hlw_func_ntc_var_init(void)
- {
- hlw_cb.temperature0_flag = 1;
- hlw_cb.temperature2_15_flag = 1;
- hlw_cb.temperature16_43_flag = 1;
- hlw_cb.temperature45_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_0_TYPE;
- }
- AT(.com_text.ntc)
- void hlw_func_qian30s_count_handle(void)
- {
- if(hlw_cb.charge_qian30s_flag)
- {
- if(++hlw_cb.charge_qian30s_count >= QIAN30S_LOW_ELEC)
- {
- hlw_cb.charge_qian30s_count = 0;
- hlw_cb.charge_qian30s_flag = false;
- hlw_func_ntc_var_init();
- }
- }
- }
- AT(.com_text.ntc)
- void hlw_func_ntc_handle_process(void)
- {
- u8 i = 0;
- u16 ntc_average_volt = 0;
- static u16 ntc_sumvolt = 0;
- u8 update_flag = 0;
- hlw_cb.ntc_volt[hlw_cb.ntc_count%NTC_AVERAGE_CNT] = saradc_get_value8(ADCCH_NTC);
- hlw_cb.ntc_count++;
- if(hlw_cb.ntc_count >= NTC_AVERAGE_CNT)
- {
- for(i = 0; i < NTC_AVERAGE_CNT; i++)
- {
- ntc_sumvolt += hlw_cb.ntc_volt[i];
- }
- ntc_average_volt = ntc_sumvolt/NTC_AVERAGE_CNT;
- ntc_sumvolt = 0;
- hlw_cb.ntc_count = 0;
- }
- else
- {
- return;
- }
- //TRACE("%s ntc_average_volt %d\n", __func__, ntc_average_volt);
- //5000ms 5s 判断一次
- if((func_cb.sta == FUNC_CHARGE)
- #if FUNC_USBDEV_EN
- ||(func_cb.sta == FUNC_USBDEV)
- #endif
- )
- {
- if(ntc_average_volt > TEMPERATURE_0)
- {
- //小于0度, 0度的值是194
- if(hlw_cb.temperature0_flag)
- {
- hlw_cb.temperature0_flag = 0;
- hlw_cb.temperature2_15_flag = 1;
- hlw_cb.temperature16_43_flag = 1;
- hlw_cb.temperature45_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_0_TYPE;
- update_flag = 1;
- }
- }
- else if((ntc_average_volt >= TEMPERATURE_15) && (ntc_average_volt <= TEMPERATURE_2))
- {
- //2度到15度之间 2度是189 15度是 154
- if((hlw_cb.temperature2_15_flag)&&(!hlw_cb.charge_qian30s_flag))
- {
- hlw_cb.temperature2_15_flag = 0;
- hlw_cb.temperature0_flag = 1;
- hlw_cb.temperature16_43_flag = 1;
- hlw_cb.temperature45_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_2_15_TYPE;
- update_flag = 1;
- }
- }
- else if((ntc_average_volt >= TEMPERATURE_43) && (ntc_average_volt <= TEMPERATURE_16))
- {
- //16度到43度之间 43度是80 16度是 152
- if((hlw_cb.temperature16_43_flag)&&(!hlw_cb.charge_qian30s_flag)&&(!hlw_cb.usb_con_flag))
- {
- hlw_cb.temperature16_43_flag = 0;
- hlw_cb.temperature0_flag = 1;
- hlw_cb.temperature2_15_flag = 1;
- hlw_cb.temperature45_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_16_43_TYPE;
- update_flag = 1;
- }
- #if 0
- else if((hlw_cb.temperature16_43_flag)&&(hlw_cb.charge_qian30s_flag)&&(!hlw_cb.usb_con_flag))
- {
- hlw_cb.temperature2_15_flag = 0;
- hlw_cb.temperature0_flag = 1;
- hlw_cb.temperature16_43_flag = 1;
- hlw_cb.temperature45_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_2_15_TYPE;
- update_flag = 1;
- }
- #endif
- #if 0
- else if((hlw_cb.temperature16_43_flag)&&(!hlw_cb.charge_qian30s_flag)&&(hlw_cb.usb_con_flag))
- {
- hlw_cb.temperature2_15_flag = 0;
- hlw_cb.temperature0_flag = 1;
- hlw_cb.temperature16_43_flag = 1;
- hlw_cb.temperature45_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_2_15_TYPE;
- update_flag = 1;
- }
- #endif
- }
- else if(ntc_average_volt <= TEMPERATURE_45)
- {
- //45度 45度是76
- if(hlw_cb.temperature45_flag)
- {
- hlw_cb.temperature45_flag = 0;
- hlw_cb.temperature0_flag = 1;
- hlw_cb.temperature2_15_flag = 1;
- hlw_cb.temperature16_43_flag = 1;
- hlw_cb.control_charge_type = TEMPERATURE_45_TYPE;
- update_flag = 1;
- }
- }
- }
- else
- {
- if(ntc_average_volt <= TEMPERATURE_60)
- {
- hlw_cb.control_charge_type = TEMPERATURE_60_TYPE;
- //update_flag = 1;
- update_flag = 0;
- }
- else if(ntc_average_volt >= TEMPERATURE_F20)
- {
- hlw_cb.control_charge_type = TEMPERATURE_F20_TYPE;
- //update_flag = 1;
- update_flag = 0;
- }
- }
- //TRACE("update_flag %d\n", update_flag);
- if(update_flag)
- {
- update_flag = 0;
- msg_enqueue(EVT_NTC_CONTROL);
- }
- }
- void hlw_func_ntc_control_handle(void)
- {
- TRACE("%s control_charge_type %d\n", __func__, hlw_cb.control_charge_type);
- switch(hlw_cb.control_charge_type)
- {
- case TEMPERATURE_0_TYPE:
- case TEMPERATURE_45_TYPE:
- //low electric
- hlw_func_charge_electric_control_handle(0);
- //close charge
- hlw_func_charge_enable_handle(0);
- break;
- case TEMPERATURE_2_15_TYPE:
- hlw_func_charge_enable_handle(1);
- hlw_func_charge_electric_control_handle(0);
- break;
- case TEMPERATURE_16_43_TYPE:
- hlw_func_charge_enable_handle(1);
- hlw_func_charge_electric_control_handle(1);
- break;
- case TEMPERATURE_60_TYPE:
- case TEMPERATURE_F20_TYPE:
- sys_cb.pwrdwn_tone_en = 1;
- func_cb.sta = FUNC_PWROFF;
- break;
- }
- }
- //charge control
- void hlw_func_charge_init_handle(void)
- {
- //enable charge
- GPIOBDIR &= ~BIT(0);
- GPIOBDE |= BIT(0);
- GPIOBCLR = BIT(0);
- }
- void hlw_func_charge_enable_handle(u8 enable_flag)
- {
- if(enable_flag)
- {
- //enable charge
- GPIOBCLR = BIT(0);
- }
- else
- {
- //disable charge
- GPIOBSET = BIT(0);
- }
- }
- void hlw_func_charge_electric_init(void)
- {
- //init low electric charge
- GPIOEDIR &= ~BIT(5);
- GPIOEDE |= BIT(5);
- GPIOECLR = BIT(5);
- }
- void hlw_func_charge_electric_control_handle(u8 high_elec_flag)
- {
- if(high_elec_flag)
- {
- //high electric
- GPIOESET = BIT(5);
- }
- else
- {
- //low electric
- GPIOECLR = BIT(5);
- }
- }
- u8 hlw_func_exit_charge_handle(void)
- {
- u8 ret = 0;
- if(hlw_cb.charging_flag)
- {
- if(!CHARGE_DC_IN())
- {
- printf("hlw_cb.exit_charge_count %d\n", hlw_cb.exit_charge_count);
- //if(++hlw_cb.exit_charge_count >= EXIT_CHARGE_COUNT)
- //不做计数是为了兼容小米插排,小米插排得查查5V的波形
- {
- //拔出充电
- func_cb.sta = FUNC_PWROFF;
- ret = 1;
- }
- }
- }
- return ret;
- }
- //clear pairlist
- void hlw_func_clear_pairlist_handle(bool need_reset_flag)
- {
- bt_nor_delete_link_info();
- hlw_cb.need_reset_flag = need_reset_flag;
- hlw_cb.donot_need_play_flag = true;
- hlw_cb.clear_pairlist_flag = true;
- //清除ANC保存的模式
- sys_cb.anc_user_mode = 0;
- bsp_param_write(&sys_cb.anc_user_mode, PARAM_ANC_NR_STA, 1);
- bsp_param_sync();
- sys_cb.vol = SYS_INIT_VOLUME;
- sys_cb.hfp_vol = SYS_INIT_VOLUME;
- param_hfp_vol_write();
- param_sys_vol_write();
- cm_sync();
- //清除APP设置
- #if ONEMORE_APP_EN
- onemore_app_clear_app_set_handle();
- #endif // ONEMORE_APP_EN
- if(hlw_cb.need_reset_flag)
- {
- func_cb.sta = FUNC_PWROFF;
- }
- }
- //设置是否需要关机
- void hlw_func_set_auto_poweroff(u8 enable_auto_poweroff)
- {
- u8 connect_num = bt_get_connected_num();
- TRACE("%s connect num %d auto flag %d\n", __func__, connect_num, hlw_cb.disconnect_auto_off_flag);
- if(enable_auto_poweroff)
- {
- if((!hlw_cb.idle_mode_flag)&&(connect_num == 0)&&(!hlw_cb.disconnect_auto_off_flag))
- {
- //auto poweroff
- hlw_cb.auto_poweroff_enable_flag = true;
- }
- }
- else
- {
- if((connect_num == 0)&&(!hlw_cb.idle_mode_flag)&&(!hlw_cb.disconnect_auto_off_flag))
- {
- hlw_cb.auto_poweroff_enable_flag = false;
- }
- }
- }
- //万魔的特殊待机模式
- void hlw_func_onemore_idle_mode_handle(void)
- {
- if((bt_get_connected_num() == 0)&&(sys_cb.anc_user_mode != 0))
- {
- if(bt_get_curr_scan() == 0x03)
- {
- if(++hlw_cb.idle_mode_count >= IDLE_MODE_COUNT)
- {
- hlw_cb.idle_mode_flag = true;
- hlw_cb.idle_mode_count = 0;
- TRACE("enter idle mode\n");
- hlw_cb.curr_pairmode_flag = false;
- hlw_cb.connecting_not_enter_pair_flag = false;
- bt_set_scan(0x02);
- led_init();
- led_bt_play();
- }
- }
- else
- {
- hlw_cb.idle_mode_count = 0;
- }
- }
- else
- {
- hlw_cb.idle_mode_count = 0;
- }
- }
- //poweron led
- void hlw_func_poweron_led_handle(void)
- {
- static u32 map_ticks = 0;
- static u8 tick_get_flag = true;
- if(tick_get_flag)
- {
- tick_get_flag = false;
- map_ticks = tick_get();
- }
- if (tick_check_expire(map_ticks, 2000))
- {
- if(hlw_cb.poweron_led_control_flag)
- {
- //if(++hlw_cb.poweron_led_control_count >= 2) // 2s once
- {
- hlw_cb.poweron_led_control_flag = false;
- //hlw_cb.poweron_led_control_count = 0;
- if(PWRKEY_IS_PRESS())
- {
- //nothing
- }
- else
- {
- led_init();
- if (bt_get_connected_num() == 0)
- {
- if(!bt_nor_get_link_info(NULL)) //no pairlist
- {
- hlw_cb.curr_pairmode_flag = true;
- led_bt_scan();
- }
- else
- {
- led_bt_reconnect();
- }
- }
- else
- {
- led_bt_connected();
- }
- }
- }
- }
- }
- }
- //anc led
- void hlw_func_anc_led_set(void)
- {
- hlw_cb.set_ancled_flag = false;
- hlw_cb.set_ancled_control_flag = ANC_LED_START;
- hlw_cb.set_ancled_control_count = 0;
- led_init();
- led_bt_call();
- }
- AT(.com_text.anc_led)
- void hlw_func_anc_led_handle(void)
- {
- if(hlw_cb.set_ancled_control_flag == ANC_LED_END)
- {
- return;
- }
- if(hlw_cb.set_ancled_control_flag == ANC_LED_START)
- {
- if(++hlw_cb.set_ancled_control_count >= ANC_LED_RECOVER_COUNT)
- {
- hlw_cb.set_ancled_control_count = 0;
- hlw_cb.set_ancled_control_flag = ANC_LED_RECOVER;
- msg_enqueue(EVT_ANC_LED_RECOVER);
- }
- }
- }
- void hlw_func_anc_led_recover_handle(void)
- {
- TRACE("%s ancled_flag %d conflag %d pairflag %d idleflag %d\n", __func__, hlw_cb.set_ancled_control_flag, hlw_cb.curr_connected_flag, hlw_cb.curr_pairmode_flag, hlw_cb.idle_mode_flag);
- if(hlw_cb.set_ancled_control_flag == ANC_LED_RECOVER)
- {
- hlw_cb.set_ancled_control_flag = ANC_LED_END;
- if((func_cb.sta == FUNC_CHARGE)
- #if FUNC_USBDEV_EN
- ||(func_cb.sta == FUNC_USBDEV)
- #endif // FUNC_USBDEV_EN
- )
- {
- led_init();
- }
- else
- {
- if(hlw_cb.curr_connected_flag == false)
- {
- if(hlw_cb.reconnect_flag)
- {
- led_bt_reconnect();
- }
- else if(hlw_cb.curr_pairmode_flag == true)
- {
- led_bt_scan();
- }
- else if(hlw_cb.idle_mode_flag)
- {
- led_bt_play();
- }
- }
- else
- {
- led_bt_connected();
- }
- }
- }
- }
- // 电池电量播报,高 中 低
- void hlw_func_battery_voice_handle(void)
- {
- //只有开机的时候报,其他时候不报
- TRACE("%s bat_voice_flag %d\n", __func__, hlw_cb.poweron_bat_voice_flag);
- if(hlw_cb.poweron_bat_voice_flag)
- {
- if(hlw_cb.curr_bat_level >= HIGH_BATTERY)
- {
- bsp_res_play(TWS_RES_BATTERY_HIGH);
- }
- else if(hlw_cb.curr_bat_level >= MIDDLE_BATTERY)
- {
- bsp_res_play(TWS_RES_BATTERY_MIDDLE);
- }
- else if(hlw_cb.curr_bat_level == LOW_BATTERY)
- {
- bsp_res_play(TWS_RES_BATTERY_LOW);
- }
- hlw_cb.poweron_bat_voice_flag = false;
- }
- }
- //dut
- void hlw_func_enter_dutmode_handle(void)
- {
- printf("sys_cb.dut_key_cnt %d\n", hlw_cb.dut_key_count);
- if(hlw_cb.dut_key_count < 8)
- {
- hlw_cb.dut_key_count++;
- }
- if(hlw_cb.dut_key_count >= 8)
- {
- hlw_cb.dut_key_count = 8;
- if((func_cb.sta == FUNC_BT)&&(!bt_is_connected()))
- {
- func_cb.sta = FUNC_BT_DUT;
- }
- }
- }
- //low battery
- AT(.com_text.low_bat)
- void hlw_func_low_bat_count_handle(void)
- {
- if((hlw_cb.curr_bat_level == 0)&&(sys_cb.lpwr_warning_cnt < LOWBAT_VOICE_SPACE))
- {
- sys_cb.lpwr_warning_cnt++;
- }
- }
- void hlw_func_low_bat_voice_handle(void)
- {
- if(hlw_cb.curr_bat_level == NEED_LOWBAT_LEVEL)
- {
- //如果不是低电,进入低电时,直接给最大值,耳机立马报低电
- if(!sys_cb.lowbat_flag)
- {
- sys_cb.lpwr_warning_cnt = LOWBAT_VOICE_SPACE;
- }
- if (sys_cb.lpwr_warning_cnt >= LOWBAT_VOICE_SPACE)
- {
- lowpower_warning_do();
- sys_cb.lpwr_warning_cnt = 0;
- }
- }
- }
- #endif
|