AT(.com_text)
void press_5s( void) {
if(press_flag == 1) {
if (allow_poweroff_flag == 0) { //长按开机时间配置
// bt_siri_switch();
if(five_time_cnt >= 50){
allow_poweroff_flag = 1;
five_time_cnt = 0;
siri_flag = 1;
msg_enqueue(EVT_SIRI_DU);
// TRACE("bt_siri_switch\n");
}else {
five_time_cnt ++;
}
}
//printf("press_flag :%d,%d,%d\n",allow_poweroff_flag ,eight_time_cnt,is_alredy_poweroff);
if(allow_poweroff_flag == 1) {
if(eight_time_cnt >= 25) {
if(is_alredy_poweroff == 0) {
is_alredy_poweroff = 1;
msg_enqueue(EVT_POWER_OFF);
// TRACE("EVT_POWER_OFF\n");
}
}else {
eight_time_cnt ++;
}
}
}
}
func_bt_message下
case K_PLAY_PWR_USER_DEF:
if (IS_PWRKEY_PRESS() || IS_TKEY_PRESS()) {
press_flag=1;
// allow_poweroff_flag = 1;
printf("IS_PWRKEY_PRESS\n");
}
break;
case EVT_SIRI_DU:
sys_warning_play(T_WARNING_NEXT_TRACK, 1); //长按“滴”一声
break;
//SIRI, NEXT, PREV在长按抬键的时候响应,避免关机前切歌或呼SIRI了
case KLU_PLAY_PWR_USER_DEF:
// if (f_bt.user_kl_flag) {
// user_def_key_msg(xcfg_cb.user_def_kl_sel);
// f_bt.user_kl_flag = 0;
// }
if(siri_flag == 1) {
if(bt_nor_is_connected()) {
bt_siri_switch();
}else {
bt_nor_delete_link_info();
}
siri_flag = 0;
printf("siri is wake up\n");
}
allow_poweroff_flag = 0;
press_flag=0;
five_time_cnt = 0;
eight_time_cnt = 0;
break;
100ms中断下
press_5s();
func.c下
case EVT_POWER_OFF:
// //长按PP/POWER软关机(通过PWROFF_PRESS_TIME控制长按时间)
// case KLH_POWER:
// case KLH_MODE_PWR:
// case KLH_PLAY_PWR_USER_DEF:
xcfg_cb.bt_tswi_en = xcfg_cb.bt_tswi_kpwr_en; //按键关机是否主从切换
sys_cb.pwrdwn_tone_en = 1;
func_cb.sta = FUNC_PWROFF;
break;
在所有的按键抬起的消息中要把以下参数全部置零
allow_poweroff_flag = 0;
press_flag=0;
five_time_cnt = 0;
eight_time_cnt = 0;
在开机初始化和进仓充电的时候除了以上还要将is_alredy_poweroff置零