【瑞昱RTL8763E】歌曲传输

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

上一篇:乌班图基础设施安装之Mysql8.0+Redis6.X安装


下一篇:Django学习笔记二:数据库操作详解