通过同时双击左右耳恢复出厂设置

发布时间:2026/7/16 20:59:47
通过同时双击左右耳恢复出厂设置 通过同时双击左右耳恢复出厂设置单个耳机双击的时候响应按键处理原理就是通过按键传递消息在多长的时间内满足条件就执行恢复出厂设置不满足就响应按键处理。具体实现如下首先就是创建变量bsp_sys.h下sys_cb1_t结构体中u8 double_mun_flag;//双击之后的清除标志u8 fuer_doubleflag;//副耳双击的标志位u8 zhuer_doubleflag;//主耳双击的标志位创建消息定义bsp_key.h中#defineEVT_DOUBLE_MSG_EN0x7d7//清除配对信息#defineEVT_DOUBLE_SIRI_EN0x7d6//双击超时的时候响应按键处理之后就到按键消息处理中msg_bt.c下func_bt_message()中caseKD_PLAY_PWR_USER_DEF:if(bt_tws_is_connected()){//对耳的时候控制是不是要恢复出厂设置if(bt_tws_is_slave())//副耳按下的时候给主耳发送标志{sys_cb1.double_mun_flag1;//开启清理标志位的计时bt_tws_user_key(0x16);//副耳已按下给主耳传递消息}else{sys_cb1.double_mun_flag1;//开启清理标志位的计时if(sys_cb1.zhuer_doubleflag0)//如果主耳双击标志位为0则置1sys_cb1.zhuer_doubleflag1;}}else//单耳时直接唤醒siri{bt_siri_switch();}break;之后就是主副机之间传递的消息处理bsp_bt.c下bt_emit_notice()中caseBT_NOTICE_TWS_USER_KEY:if(param0x16){//主耳接收的处理sys_cb1.fuer_doubleflag1;//副耳标志位置1}elseif(param0x17){//清理动作主机给副机发送func_message(EVT_DOUBLE_MSG_EN);}break;之后就是计时处理计时时间内满足条件就恢复出厂设置不满足就执行双击按键处理bsp_sys.c下usr_tmr5ms_isr()中if((sys_cb1.zhuer_doubleflag1)||(sys_cb1.fuer_doubleflag1)||(sys_cb1.double_mun_flag1)){//检测到了双击信号或者清理标志位的计时已开启开始计时sys_cb1.double_mun_flag;//计时}if(sys_cb1.double_mun_flag100){//500ms内条件不满足就不执行清除动作标志位清0唤醒sirisys_cb1.zhuer_doubleflag0;sys_cb1.fuer_doubleflag0;sys_cb1.double_mun_flag0;func_bt_message(EVT_DOUBLE_SIRI_EN);//双击超时的时候响应按键处理}之后就是检测到条件满足执行清理动作fun_bt.c下func_bt_process()中if((sys_cb1.zhuer_doubleflag1)(sys_cb1.fuer_doubleflag1)(sys_cb1.double_mun_flag100)){bt_tws_user_key(0x17);//给副耳发送消息执行清理消息func_message(EVT_DOUBLE_MSG_EN);//清理消息传输}之后就是执行动作的消息处理fun.c下func_message()中caseEVT_DOUBLE_MSG_EN:bt_clr_all_link_info();//清理函数处理func_cb.staFUNC_NULL;//模式清空break;清理函数处理实现底层已写好bsp_uart.c下voidclear_bt_auto_switch_maddr(void){u8 addr[7];memset(addr,0,7);cm_write(addr,PARAM_MASTER_ADDR_VALID,7);cm_sync();}voidbt_clr_all_link_info(void){clear_bt_auto_switch_maddr();//地址是否有效及地址数据清0bt_nor_delete_link_info();//删除手机配对信息bt_tws_delete_link_info();//删除tws配对信息}一些底层的定义底层已写好bsp_param.h下#definePARAM_BT108//前面108byte存放蓝牙信息#definePARAM_MASTER_ADDR_VALIDPARAM_BT8//用于记录主耳的地址是否有效#definePARAM_MASTER_ADDRPARAM_BT9//6BYTE