【瑞昱RTL8763E】歌曲传输

news2024/10/6 10:42:33

1 概要

        Watch 端 SD 卡中的歌曲除了可以通过 USB 传输,还可以通过 SPP/BLE 传输来完成歌曲的添加与删 除操作。其中,Android 手机可以安装 LocalPlayback.apk 使用 SPP 协议与 watch 交互;iOS 手机可以安装 LocalPlayback.ipa 通过 BLE 与 watch 交互,手机端 app 的使用方法可参见对应 tool 文件夹下的使用手册。 无论是 SPP 还是 BLE,所使用的 Command 和 Event 是相同的。

2 建立连接

手机 tool 端与 watch 建立 SPP/BLE 连接后,先读取 Header .bin 和 Name .bin 内容,根据 Header .bin 中的 offset,length 和 plIndex 找到对应歌曲名,加载出 File List 和 Play List。后续增删歌曲等操作均基于 File List 和 Play List,目前 watch 只使用一个 playlist。

2.1 Command&Event

2.1.1 CMD_QUERY_INFO

Tool 端首先发送 0x680 来获取 watch 设备信息。

CMD_QUERY_INFO (CMD ID: 0x680)

Parameters

EVT_QUERY_INFO (EVT ID: 0x680)

Parameters

(共32 bytes)

Byte0~Byte1

Packet size

传送音乐数据每笔包大小。

Byte2~Byte3

Buffer check size

计算buffer check的数据长度。

Byte4

Protocol version

协议版本号

SoC新增功能或修复bug后,版号递增

Byte5

Mode

暂未使用

Byte6

ic type

例如:BBPro,BBPro2…

Byte7

song_farmat_type

typedef enum

{

    PB_FORMAT_TYPE_DEFAULT = 0x00,

    PB_FORMAT_TYPE_AAC = 0x01,

    PB_FORMAT_TYPE_MP3 = 0x02,

    PB_FORMAT_TYPE_FLAC = 0x04,

    PB_FORMAT_TYPE_WAV = 0x08,

    PB_FORMAT_TYPE_RSVD

} T_PLAYBACK_FORMAT_TYPE;

这个byte是指明soc支持的播放文件格式, PB_FORMAT_TYPE_DEFAULT也可以默认支持播放aac,rtk,采用bit位,bit0: aac,bit1 mp3, bit2 flac, bit3 wav。

Byte8~Byte31

Reserve(24 bytes)

2.1.2 CMD_GET_LIST_DATA

Tool端发送0x681获取header.bin与Name.bin。

CMD_GET_LIST_DATA (CMD ID: 0x681)

Parameters

Byte0

File Type:

0x00: Header .bin

0x01: Name .bin

EVT_GET_LIST_DATA (EVT ID: 0x681)

Parameters

Byte0

Flag

0x00: start(获取文件长度及CRC的标志位)

0x01: continue(第一笔及传输数据的标志位)

0x02: end(最后一笔传输数据的标志位)

Byte1~ByteN

Flag == 0, start:

Byte1~Byte2:CRC

Byte3~Byte6:File Length

Flag == 1 or Flag == 2, continue/end

Byte1~Byte2:

Header/Name data length

Byte3~ByteN:

Header/Name data

3 添加歌曲

File List 中歌曲不存在(即 watch 端 sd 卡中没有此歌曲),需要手机 tool 通过 SPP/BLE 将歌曲数据传 送给 watch。

3.1 Commant&Event

3.1.1 CMD_TRANS_START

Tool 端开始传输音乐数据前,先发送 CMD 0x682 将音乐名称给 SoC(watch),此时 SoC 创建音乐文 件,并将结果返回给 Tool。其中,BLE 传输时,在收到 CMD_TRANS_START 后会做 BLE 连接间隔的修改, 以提高传输速度。

CMD_TRANS_START (CMD ID: 0x682)

Parameters

Byte0~Byte1

Length

歌曲名占用字节数

Byte2~ByteN

Song name

ByteN+1~ByteN+4

(4 bytes)

Length of the whole song

整首歌的数据长度

EVT_TRANS_START (EVT ID: 0x682)

Parameters

Byte0

Result

0x01: success

Others: fail

3.1.2 CMD_TRANS_CONTINUE

Tool 将歌曲数据分包传输给 SoC。

CMD_TRANS_CONTINUE (CMD ID: 0x683)

Parameters

Byte0~Byte1

Sequence number

Byte2-byte3

crc

Byte4~Byte7

Offset

Byte8~Byte9

Length

Byte10~ByteN

Song Data

3.1.3 CMD_REPORT_BUFFER_CHECK

Tool 端暂未使用该 CMD,而是在 buffer 写满后上报 EVT_REPORT_BUFFER_CHECK 同步 SOC buffer 状态。开始时,SoC 端接收数据的乒乓 buf A、B 都是空的,Tool 端可以连续传输,将 buf A、B 放满,后 面需要等待 SoC 回应 0xF1 表明 buf A 空,继续传输数据,放满 buf A;然后等 0xF2 表明 buf B 空,再继 续传输数据放满 buf B,反复如此。

CMD_REPORT_BUFFER_CHECK (CMD ID: 0x684)

Parameters

Byte0~Byte1

Data size

需要做buffer check的data size(= buffer check size)

Byte2~Byte3

CRC value

EVT_REPORT_BUFFER_CHECK (EVT ID: 0x683)

Parameters

Byte0

Result

0x01: success

0x05: crc error

0x06: length error

0x07: write error

0xF1: BUFFER A write success

0xF2: BUFFER B write success

others: not supported

3.1.4 CMD_VALID_SONG

歌曲传输完成后,会做整首歌曲的 CRC 校验。同时完成交互后会上报消息来更新播放列表的 gui 界面。消息为:IO_MSG_PLAYBACK_TRANS_FILE_END。

CMD_VALID_SONG (CMD ID: 0x685)

Parameters

Byte0~Byte3

Size of the song

歌曲总长度

Byte4~Byte5

CRC value

整首歌CRC

EVT_VALID_SONG (EVT ID: 0x684)

Parameters

Byte0

Result:

0x01: success

0x05: crc error

0x06: length error

3.1.5 CMD_TRANS_CANCEL

用于取消歌曲传输,Tool 发送 CMD_TRANS_CANCEL 给 SoC 后,SoC 清除歌曲数据并停止传输动作。

CMD_TRANS_CANCEL (CMD ID: 0x687)

Parameters

EVT_TRANS_CANCEL (EVT ID: 0x686)

Parameters

Byte0

Result

0x01: success

others: fail

4 删除歌曲

手机Tool发送Command通知watch删除指定歌曲或全部歌曲。

4.1 Commant&Event

4.1.1 CMD_PERMANENT_DELETE_SONG

Tool端发送0x689下发删Par除歌曲的CMD,header.bin中对应被删的歌曲isDeleted位被置高。

CMD_PERMANENT_DELETE_SONG (CMD ID: 0x689)

ameters

Byte0~Byte1

Song name length

Byte2~ByteN

Song name

EVT_PERMANENT_DELETE_SONG (EVT ID: 0x688)

Parameters

Byte0

Result

0x01: success

Others: fail

4.1.2 CMD_PERMANENT_DELETE_ALL_SONG

与删除单首歌曲类似,该 CMD 删除列表中所有歌曲。

CMD_PERMANENT_DELETE_ALL_SONG (CMD ID: 0x68c)

Parameters

EVT_PERMANENT_DELETE_ALL_SONG (EVT ID: 0x68b)

Parameters

Byte0

Result

0x01: success

Others: fail

5 Flow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 工具库每日推荐 【Matplotlib】

文章目录 引言Python数据可视化库的重要性今日推荐:Matplotlib工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:数据分析可视化案例分析高级特性自定义样式动画效果3D绘图性能优化技巧扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 T…

【可答疑】基于51单片机的无线病床呼叫系统(含仿真、代码、报告、演示视频等)

✨哈喽大家好,这里是每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~ 🐱‍🐉这是51单片机毕业设计100篇…

什么是虚拟化?| 裸机 vs 虚拟机 vs 容器

“云计算!DevOps!Docker!Kubernetes!……” 如果您是一名软件工程师,还没有遇到过以上这些流行词,那么您可能一直生活在与世隔绝的地方。 所有这些技术都与同一样东西有关,对,就是…

openEuler 24.03 (LTS) 部署 K8s(v1.31.1) 高可用集群(Kubespray Ansible 方式)

写在前面 实验需要一个 CNI 为 flannel 的 K8s 集群之前有一个 calico 的版本有些旧了,所以国庆部署了一个v1.31.1 版本 3 * master 5 * work时间关系直接用的工具 kubespray博文内容为部署过程以及一些躺坑分享需要科学上网理解不足小伙伴帮忙指正 😃,生活加油 99…

IEC104规约的秘密之七----配置参数t1,t2,t3

104通讯前需要配置通讯参数,一般有如下参数: IP地址,端口号,k,w,t1,t2,t3,公共地址,遥控超时参数,104主规约还有一个t0参数。 本次只讲解t1&#…

2-113 基于matlab的图像的配准融合

基于matlab的图像的配准融合,采用互信息配准,PV差值,powell算法,小波变换的图像融合算法。在GUI界面输入两幅图像,完成图像的配准融合。融合图像要求像素 一样。程序代码已经有详细的注释。程序已调通,可直…

对操作系统中的用户态和内核态的理解

目录 引言 为什么要有用户态和内核态?只有一个内核态不行么? 一、用户态(User Mode) 定义 特点 应用 二、内核态(Kernel Mode) 定义 特点 应用 三、用户态与内核态的联系和区别 四、用户态和内…

通过dem2terrain生成MapboxGL地形服务

概述 MapboxGL在2的版本之后通过地形服务开始支持三维的展示了,之前也有文章“mapboxGL2中Terrain的离线化应用”对该服务进行过说明与分析。前些天在翻公众号的时候翻到了dem2terrain可以生成地形服务,同时做了一些优化,今天就给大家分享一…

2024全面升级!从零开始的大模型开发学习路线图——精通之路

第一阶段:基础理论入门 目标:了解大模型的基本概念和背景。 内容: 人工智能演进与大模型兴起。 大模型定义及通用人工智能定义。 GPT模型的发展历程。 第二阶段:核心技术解析 目标:深入学习大模型的关键技术和工…

多文件并发多线程MD5工具(相对快速的MD5一批文件),适配自定义MD5 Hash I/O缓存。

自己写的多文件 MD5校验工具,一个文件开一个线程,有最大I/O 缓存设置,兼容读写MD5后缀文件。 共计91个文件,合计180G左右 12分钟左右,UI基本卡废,但程序没蹦,属于正常。 卡的原因是基本是用 I/O…

每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java

目录 牛客_牛牛冲钻五_模拟 题目解析 C代码 Java代码 牛客_牛牛冲钻五_模拟 牛牛冲钻五 (nowcoder.com) 描述: 牛牛最近在玩炉石传说,这是一款一对一对战的卡牌游戏,牛牛打算努力冲上钻五分段,获得丰厚的天梯奖励。…

力扣 中等 78.子集

文章目录 题目介绍解法解法一&#xff1a;解法二&#xff1a; 题目介绍 解法 有两种解法&#xff0c;对于计算[1,2]的子集问题&#xff1a; 解法一&#xff1a; 站在输入的角度思考&#xff1a;每个元素都可以选/不选 代码如下&#xff1a; class Solution {List<List&…

ReGCL Rethinking Message Passingin Graph Contrastive Learning

AAAI24 推荐指数&#xff1a; #paper/⭐ 总体说&#xff1a;利用梯度对对比正负样本加权的。个人觉得和与正负样本加权没有区别&#xff0c;读完之后不想做笔记了。

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代&#xff0c;抖音作为短视频与直播电商的佼佼者&#xff0c;正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中&#xff0c;成都睿明智科技有限公司以其独到的眼光和专业的服务&#xff0c;成为了众多商家信赖的合作伙伴。今…

RAG再总结之如何使大模型更好使用外部数据:四个不同层级及查询-文档对齐策略

我们来看看RAG进展。《Retrieval Augmented Generation (RAG) and Beyond: A Comprehensive Survey on How to Make your LLMs use External Data More Wisely》(https://arxiv.org/abs/2409.14924)&#xff0c;主要讨论了如何使大型语言模型&#xff08;LLMs&#xff09;更明智…

【Canvas与标志】白座红芯辐射标志

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>白座红芯辐射标志</title><style type"text/css"…

23.1 k8s监控中标签relabel的应用和原理

本节重点介绍 : relabel的源码在 7.7节做过详细的解读强大的relabel能力 在k8s中的应用 应用1&#xff1a; labelmap 在采集cadvisor指标时 对服务发现标签key名字截取应用2&#xff1a; 采集pod自定义指标中replace 和 keep的应用应用3&#xff1a; k8s服务组件采集时的endpo…

资产管理系统建设方案,资产盘点,rfid,出入库,消耗品管理,系统方案,系统源码(word原件)

固定资产管理系统需求要点&#xff1a; 1. 实现公司内部固定资产管理全生命周期管理&#xff0c;包括资产采购、资产入库、资产领用、资产借用、资产归还、资产报废、资产维修、资产调拨等全过程管理。 2. 可实现集团内部固定资产盘点管理&#xff0c;包括盘点计划、盘点查询等…

【深度解析】从电视广播到互联网接入:通信卫星如何改变我们的世界?

1.通信卫星的发展历程和现状 1.1 早期发展 通信卫星的发展历程可以追溯到20世纪50年代末期和60年代初期。 1957年10月4日&#xff0c;苏联成功发射了第一颗人造卫星“斯普特尼克1号”&#xff0c;标志着人类进入了太空时代&#xff0c;也推动了通信卫星的发展。 1958年12月18…

.NET 一款支持天蝎的免杀WebShell

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…