当前位置: 首页 > news >正文

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

通过同时双击左右耳恢复出厂设置,单个耳机双击的时候响应按键处理,原理就是:通过按键传递消息,在多长的时间内满足条件就执行恢复出厂设置,不满足就响应按键处理。具体实现如下:

首先就是创建变量:
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_flag=1;//开启清理标志位的计时bt_tws_user_key(0x16);//副耳已按下,给主耳传递消息}else{sys_cb1.double_mun_flag=1;//开启清理标志位的计时if(sys_cb1.zhuer_doubleflag==0)//如果主耳双击标志位为0,则置1sys_cb1.zhuer_doubleflag=1;}}else//单耳时直接唤醒siri{bt_siri_switch();}break;

之后就是主副机之间传递的消息处理:
bsp_bt.c下bt_emit_notice()中:

caseBT_NOTICE_TWS_USER_KEY:if(param==0x16){//主耳接收的处理sys_cb1.fuer_doubleflag=1;//副耳标志位置1}elseif(param==0x17){//清理动作,主机给副机发送func_message(EVT_DOUBLE_MSG_EN);}break;

之后就是计时处理,计时时间内满足条件就恢复出厂设置,不满足就执行双击按键处理:
bsp_sys.c下usr_tmr5ms_isr()中

if((sys_cb1.zhuer_doubleflag==1)||(sys_cb1.fuer_doubleflag==1)||(sys_cb1.double_mun_flag>=1)){//检测到了双击信号或者清理标志位的计时已开启,开始计时sys_cb1.double_mun_flag++;//计时}if(sys_cb1.double_mun_flag>=100){//500ms内条件不满足就不执行清除动作,标志位清0,唤醒sirisys_cb1.zhuer_doubleflag=0;sys_cb1.fuer_doubleflag=0;sys_cb1.double_mun_flag=0;func_bt_message(EVT_DOUBLE_SIRI_EN);//双击超时的时候响应按键处理}

之后就是检测到条件满足,执行清理动作:
fun_bt.c下func_bt_process()中:

if((sys_cb1.zhuer_doubleflag==1)&&(sys_cb1.fuer_doubleflag==1)&&(sys_cb1.double_mun_flag<=100)){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.sta=FUNC_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_BT+8//用于记录主耳的地址是否有效#definePARAM_MASTER_ADDRPARAM_BT+9//6BYTE
http://www.jsqmd.com/news/1202411/

相关文章:

  • 雷达中国官方售后服务中心热线与地址实地考察报告+多信源验证(2026年7月更新) - 亨得利钟表维修中心
  • Ornith-1.0-9B-OptiQ-4bit常见问题解答:新手必知的10个关键问题
  • FastMCP + REST API实战:让AI一键调用企业ERP、CRM和第三方系统
  • 蓝牙耳机芯片,苹果弹窗电量显示为0的解决方法
  • 2026 年 7 月新发布:合江有实力的专业电梯拆除回收生产商有哪些,拆掉电梯,能赚回多少钱?揭秘回收的隐藏利润 - 企业信息推荐【官方】
  • 计算机体系结构----指令流水线性能量化:吞吐率、效率与加速比实战解析
  • openEuler/arkui-linux完全指南:从环境搭建到第一个应用开发的终极教程
  • MiniCPM5-1B-Agentic-Tooluse-GGUF模型家族全解析:从LoRA适配器到GGUF文件
  • OptiScaler技术架构深度解析:跨GPU超采样与帧生成实现原理
  • Rosetta模型训练全流程:从初始化到多阶段预训练详解
  • 爱彼中国官方售后服务中心|官方地址与维修热线权威信息通知(2026年7月最新) - 爱彼中国官方服务中心
  • cuSignal核心功能解析:卷积、滤波与频谱分析实战指南
  • OpenWireless网络监控功能详解:实时流量统计和设备管理
  • 5分钟快速上手Moon:构建你的第一个Actor游戏服务器
  • ts 中 any + unknow
  • 利用Gemini 2.0 Flash构建免费AI搜索引擎方案
  • 深入理解tp-libvirt:Libvirt自动化测试的终极解决方案
  • Devstral-Small-2-24B-Instruct-2512-6bit实战:10个图像理解应用案例 [特殊字符]️
  • 亨得利官方钟表服务中心|官方电话及维修地址权威信息公示(2026年7月最新) - 亨得利官方
  • 基于S32K144驱动NSD8381
  • 企业选择知识产权服务机构,为什么不能只看商标注册价格 - 客啦啦视界
  • 2026 年 7 月新发布:钟祥评价高的疏通下水道服务团队深度解析与优选指南,别再堵塞了!自救能省下几千块钱的秘密 - 企业推荐官【认证官方】
  • 如何定制安全策略:SingGuard-8b动态政策配置完全教程
  • Spring 中 配置文件 加入 aspectj-autoproxy 项目报错
  • Ornith-1.0-35B-OptiQ-4bit常见问题解答:从安装到推理的10个实用技巧
  • 量化精度与性能平衡:Agents-A1-OptiQ-4bit的4/8bit混合策略分析
  • 2026年7月最新广州万国官方售后联系电话与客户服务中心网点地址 - 万国中国官方服务中心
  • 界面控件DevExpress WinForms的流程图组件 - 可完美复制Visio功能(二)
  • Python3与OpenCV4计算机视觉开发实战指南
  • day 3 模拟赛 2