KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

soundcore APP流程解析

📎 原始文档:https://www.kdocs.cn/l/cnKuPxXqlZwi soundcore APP流程解析

整机框架

  1. APP交互 flowchart
  2. 耳机状态主动上报
  3. 对耳间的状态变化 tws组队、回连:
    soundcore_event_handler_deal.c:tws数据互相交互(更新对方的按键、同步eq参数等)
    👇
    soundcore_app.c:tws状态数据上报app
    tws断开:
    soundcore_app.c:tws状态数据上报app
  4. 耳机电量变化 soundcore_event_handler_deal.c:对耳电量互相更新同步\单耳更新本地电量
    👇
    soundcore_app.c:电量数据上报app

指令说明(以soundcore A20i为例)

协议格式说明

APP至设备
Byte NoValueDescription
00x08command header1
10xEEcommand header2
2NNPacket amount (reserved)
3NNPacket sequence ID (reserved)
40resvered
5NNCommand Group
6NNCommand ID
7NNCommand Length 0, which is lower byte of command length
8NNCommand Length 1, which is higher byte of command length
9 …. N-1NNOptional. Command Parameter 1 … n bytes
NNN前面N项之和,用1byte表示,范围0-255
设备至APP
Byte NoValueDescription
00x09command header1
10xFFcommand header2
2NNPacket amount (reserved)
3NNPacket sequence ID (reserved)
4NNSuccessFlag(0x00: failed, 0x01: success, 0x02: checksum, 0x03: 通话状态 error)
5NNCommand Group
6NNCommand ID
7NNCommand Length 0, which is lower byte of command length
8NNCommand Length 1, which is higher byte of command length
9 …. N-1NNOptional. Response data 1 … n bytes
NNN前面N项之和,用1byte表示,范围0-255
  1. 获取设备信息

获取设备全部信息

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x01 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x01 LL LH NN CS
NN:
基础信息模块(32bytes): 设备连接手机状态(1byte) + tws连接状态(1byte) + 左耳设备电量(1byte) + 右耳设备电量(1byte) + 左耳设备充电状态(1byte) + 右耳设备充电状态(1byte) + 左FW(5byte)+ 右FW(5byte) + SN(16byte)
EQ模块(22bytes):EQ Index(2byte)+ CustomEQ(10bytes) + reserved(10byte)
CustomUI模块(1+N4+1 bytes):CustomUI模块(1+N4+1 bytes):CustomUI模块总长度(1byte) + [左耳设备XX是否响应(1byte) + 左耳设备XX按键功能(1byte) + 右耳设备XX是否响应(1byte) + 右耳设备XX按键功能(1byte)] + ANC当前模式(1byte)
扩展模块(20bytes): 充电盒电量(1byte) + bass up(1byte) + 设备颜色(1byte) + gaming状态(1byte) + 触控提示音开关状态(1byte) + reserved(没有发0xFF)

无法获取的数据统一回复0xFF,例如EQ、按键功能等信息。
其它数据的详细定义,请参照以下的各个指令对应的具体定义
CustomUI模块 总长度 = 1+N4+1 。 N4数组形式顺序为:单击/双击/长按。 (按键功能:unTWS与tws 按高低位组合出来的),这个项目没有controll开关,固件是否相应固定回复0x01
AN,
环境音切换状态(1byte)含义:按位处理- 0b00000111。后面3位代表:ANC、transprancy、normal的开关(1 = open,0=close)

EQ放大10倍传输。
双击和长按功能 1byte: 0000 0000 前4个为单耳时对应功能项,后4个为双耳时对应功能项。
共41个字节

扩展模块中 bass up 1byte,上报0xFF即可(12/22)

查询设备连接状态

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x02 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x02 LL LH NN CS
NN:
设备连接手机状态(1byte) + tws连接状态(1byte)
设备连接手机状态:0x00:左耳设备连接手机;0x01:右耳设备连接手机。
tws连接状态:0x00:tws未连接;0x01:tws已连接
例如:0x0101表示右耳设备连接手机,且tws已连接,此时两个设备都处于连接状态;0x0100表示右耳设备连接手机,且tws未连接,则只有右耳处于连接状态,而左耳未连接。
当连接状态发生变化时,通过响应指令实时上报数据

获取设备电量等级

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x03 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x03 LL LH NN CS
NN:
左耳设备电量(1byte) + 右耳设备电量(1byte) + 充电盒电量(1byte)
电量值:0~5,代表6个电量等级(低 -> 高),具体定义:0:1%~5%;1:6%~20%;2:21%~40%;3:41%~60%;4:61%~80%;5:81%~100%;当设备未连接时:0xFF。
例如:0x0000表示两个设备电量均为0;0x0103表示左耳设备电量为1,右耳设备电量为3;0xFF04表示左耳设备未连接,右耳设备电量为4。
百分比电量显示 0-9,分别对应10%-100%
例如:0x030900表示左耳电量为40%,右耳电量为100%,充电盒电量为10%
当电量发生变化时,通过响应指令实时上报数据。

获取设备充电状态

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x04 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x04 LL LH NN CS
NN:
左耳设备充电状态(1byte) + 右耳设备充电状态(1byte)
充电状态:0x00:未充电;0x01:充电中。
当充电状态发生变化时,通过响应指令实时上报数据。

设置游戏模式

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x87 LL LH NN CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x87 LL LH CS
NN:
0x00 = close 0x01 = open
2. EQ

获取EQ信息

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x04 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x04 LL LH NN CS
NN:
EQ Index(2bytes)
EQ Index:0~0xFFFF, 代表EQ的具体编码。APP需根据具体编码显示不同UI。
当EQ发生变化时,通过响应指令实时上报数据。

切换EQ(包含Custom EQ)和 生效后的EQ(支持DRC和非DRC)

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x02 0x83 LL LH NN CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x02 0x83 LL LH CS
NN:
EQ Index(2byte) + 设备EQ(10bytes) + 实际生效设备EQ(10bytes)
EQ Index:0~0xFFFF, 代表EQ的具体编码。固件只需存储,不需要解析。
设备EQ:10个频点的gain值。每个值:0~24,设备上是-12dB ~ 12dB,指令传送时转化为0~240)。固件只需存储,不需要解析
实际生效设备EQ:模拟DRC后计算出最终生效的10个频点gain值。每个值:0~24,设备上是-12dB ~ 12dB,指令传送时转化为0~240)
注*:固件只需关注实际生效设备EQ,当前产品只支持8个频点,10byte里面前8byte是有效值,后2byte是填充值;
EQ Index(2byte) + 设备EQ(10bytes) 需填充到设备全部信息的EQ模块
3. Custom UI

设置按键功能

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x04 0x81 LL LH NN CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x04 0x81 LL LH CS
NN:
左耳或右耳设备(1byte) + 按键动作(1byte) + 按键功能(1byte)
左耳或右耳设备:0x00:左耳设备;0x01:右耳设备
按键动作:范围:0~2;具体定义:0:双击;1:长按 2: 单击,3:从前到后滑动 4:从后向前滑动,5: 三击
功能数值:范围:0~0x0f;具体定义:0:Volume+;1:Volume-;2:Previous;3:Next;4:Trans(环境音);5:Siri;6:play/pause 7:Bass up on/off; 8:3D环绕 on/off;0x0f:无

重置按键功能

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x04 0x82 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x04 0x82 LL LH CS
4. 更多

设置触控提示音开关状态

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x01 0x83 LL LH NN CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x01 0x83 LL LH CS
NN:
0x00 = close 0x01 = open
5. Server data

获取设备上报数据

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x05 0x01 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x05 0x01 LL LH NN CS
NN:
低字节在前,高字节在后(收到APP发送0581的清除指令后才清除数据)
左耳控制次数(2byte)+右耳控制次数(2byte)
+左耳电量档位(1byte)+右耳电量档位(1byte)
+通话次数(2byte)
+通话时长(4 byte)
+媒体次数(2 byte)
+媒体时长(4 byte)
+双耳使用总时长(4 byte)+左耳单用使用总时长(4 byte)+ 右耳单用使用总时长(4 byte)
+TWS 时SBC次数(2 byte)+左耳单用时SBC次数(2 byte)+右耳单用时SBC次数(2 byte)
+TWS 时AAC次数(2 byte)+左耳单用时AAC次数(2 byte)+右耳单用时AAC次数(2 byte)
+TWS 时 SBC码率使用时长(4 byte) + 左耳单用时 SBC 码率使用时长(4byte) + 右耳单用时 SBC 码率使用时长(4byte)
+TWS 时AAC码率使用时长(4 byte) + 左耳单用时 AAC 码率使用时长(4byte) + 右耳单用时 AAC 码率使用时长(4byte)

清空设备上报的数据

APP->耳机:0x08 0xEE 0x00 0x00 0x00 0x05 0x81 LL LH CS
耳机->APP:0x09 0xFF 0x00 0x00 0x01 0x05 0x81 LL LH CS
NN:
将所有的计数统计置为0

模块说明

固件协议声明

统一的app协议格式,定义在soundcore_app.h中,具体见该头文件

指令长度

image

指令格式

image

指令解析(APP下发COMMAND GROUP及对应的COMMAND ID)

image 因此若APP协议有做更新,固件的头文件中的协议声明也需要同步更新

APP下发数据包格式解析

app下发数据相关处理统一入口在soundcore_app.c中

APP下发交互数据处理主干

/**
 * @brief soundcore spp data deal主干
 * @param ch ?
 * @param *packet:数据包
 * @param size:包长
 * @return >= 0:成功 <0:异常
 */
int soundcore_spp_data_receive_cb(u16 ch, u8 *packet, u16 size)

APP下发交互数据解包

/**
 * @brief 解包
 * @param *packet:获取数据包指针
 * @param len:获取数据包长度
 * @return 0:成功 <0:异常
 */
static int soundcore_spp_data_receive(u8 *packet, u16 len)

APP交互事件翻译及分配

/**
 * @brief 事件分配
 * @return <0:异常 0:完成
 */
static int soundcore_spp_data_hander(void)

固件回复APP

/**
 * @brief 发包拼接
 * @param *data:处理结果数据
 * @param data_have:是否有发送数据
 * @return >0:成功,返回包长 <0:失败
 */
int soundcore_spp_data_send(u8 *data, u8 data_have)

APP事件固件本地处理

app事件固件本地相关处理统一入口在soundcore_event_handler_deal.c中

事件处理主干

/**
 * @brief app事件执行主干
 * @param app_event:app事件
 */
int soundcore_app_event_deal(struct soundcore_event *app_event)
{
/**
 * @brief 事件数据翻译,将APP下发数据转换成对应的事件并推送给app_core处理
 * @param app_command_event:app下发命令对应的事件
 * @return 0:正常 <0:异常
 */
static int soundcore_spp_data_trans(u8 app_command_event)
}

固件设备信息相关事件入口

//设备信息处理主入口
static int soundcore_app_get_info_event(struct soundcore_event *app_event, u8 event)
{
//全信息入口
    static int soundcore_app_get_all_info(u8 *data, u16 len)
//连接信息
    case SOUNDCORE_EVENT_GET_CONNSTA_INFO
//电量信息
    case SOUNDCORE_EVENT_GET_BATTERY_INFO
//充电信息
    case SOUNDCORE_EVENT_GET_CHARGE_STATUS_INFO
//eq信息
    case SOUNDCORE_EVENT_GET_EQ_INFO
}
//设置游戏模式
static int soundcore_app_set_gaming(struct soundcore_event *app_event)

EQ相关处理入口

eq相关处理统一入口在soundcore_event_eq_deal.c

//EQ相关流程主入口
//下发数据转换 EQ Index(2byte) + 设备EQ(10bytes) + 实际设备EQ(10bytes) 
int soundcore_app_eq_event(struct soundcore_event *app_event, u8 key_event_type)
{
//APP更新EQ
    static int soundcore_app_eq_deal(u8 *eq_data)
}

按键相关处理入口

按键相关处理统一入口在soundcore_event_key_deal.c

//按键相关流程主入口
//按键事件更新、重置
int souncore_app_key_event(struct soundcore_event *app_event, u8 key_event_type)
{
//按键设置
    static void soundcore_app_key_table_update(u8 key_val, u8 key_index, u8 key_event, u8 update_type, u8 remote){
//更新按键表
        case SOUNDCORE_EVENT_SET_KEY
//重置按键表
        case SOUNDCORE_EVENT_RESET_KEY
    }

}

Server data(埋点数据)

//埋点数据定时器
static void soundcore_buried_timer_deal(void)

流程解析

此处只引用函数名说明,具体结合上一节模块说明,具体实现见代码

APP数据下发

//收到数据后,进入数据处理主干
soundcore_spp_data_receive_cb()
//固件进行解包和收到的数据校验
soundcore_spp_data_receive()
//数据校验通过后,根据解包结果,固件进行APP下发数据和本地事件转换
soundcore_spp_data_hander()
//事件翻译,此处会根据soundcore_app.h内的数据协议规定设置对应事件的NN数据包长度
soundcore_spp_data_trans()
//推出event,并转入事件处理主干
soundcore_app_event_deal()
//根据拿到的event中的翻译出来的事件走对应的处理,处理完进行数据回复APP
soundcore_spp_data_send()

注意:此处EQ更新流程较为特殊,具体如下

EQ更新

soundcore_spp_data_trans()
//存储APP EQ数据,进行延时生效
soundcore_app_receive()
//固件立刻回复APP
soundcore_spp_data_send()
//800ms内无再次APP EQ更新,EQ开始生效
soundcore_app_eq_event()

按键相关

按键设置\按键重置:

//事件处理主干
soundcore_app_event_deal()
//按键设置
souncore_app_key_event()
//按键表更新
soundcore_app_key_table_update()
//tws状态下告知从机
tws_api_send_data_to_sibling()

触摸提示音开关

//事件处理主干
soundcore_app_event_deal()
//设置触摸提示音开关
soundcore_app_set_key_tone()
soundcore_lp_touch_key_tone_ctr()