手机互联与组网业务
手机互联与智能应用业务
命令索引
MsgCenter业务
消息中心业务会不断演进,为防止客户私有定制业务冲突,客户私有定制业务建议从5.13.100开始。
本文已展开业务的 Command ID 以消息中心命令与 TLV 公共定义为准:
| Command ID | 业务 | 入口 |
|---|---|---|
| 0x01 | 小度语音 | 小度语音 |
| 0x02 | 百度导航 | 百度导航 |
| 0x03 | 百度矢量地图 | 百度矢量地图 |
| 0x04 | 阿里乘车码 | 阿里乘车码 |
| 0x05 | OTA | 手机发起 OTA 初始化 |
| 0x07 | Ping | Ping 消息 |
| 0x08 | WatchConnectKit | WatchConnectKit |
| 0x09 | AppStore | AppStore |
| 0x0A | 表盘市场 | 表盘市场 |
| 0x0B | 远端消息通知 | 远端消息通知 |
| 0x0C | 设备信息 | 设备信息 |
小度语音
表 1 小度语音字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| Start_Xiaodu | 0x01 | 1 | uint8 | 手机侧APP拉起板侧JS小度语音。 | O | 1.0/1.0 |
| Recv_Xiaodu | 0x02 | N | uint8 | 板侧JS小度语音收到手机侧APP的问题数据流。 | O | 1.0/1.0 |
| Recv_Wenxin | 0x03 | N | uint8 | 板侧JS小度语音收到手机侧APP的回答数据流。 | O | 1.0/1.0 |
| Recv_Tts | 0x04 | N | uint8 | 板侧JS小度语音收到手机侧APP的tts语音数据。 | O | 1.0/1.0 |
| Start_record | 0x05 | N | uint8 | 板侧准备开始给手机侧发送pcm流。 | O | 1.0/1.0 |
| Send_pcm_stream | 0x06 | N | sizeof(uint8)*frame_size | 发送板侧录音的实时音频流数据,frame_size表示pcm音频流大小,当前为960Byte。 | O | 1.0/1.0 |
| End_record | 0x07 | N | uint8 | 板侧录音结束。 按下结束录音按钮时: JS下发0,表示AI对话使用语音; JS下发1,表示表盘生成使用语音; JS下发2,表示矢量地图使用语音。 |
O | 1.0/1.0 |
| JS_Exit | 0x8 | 1 | uint8 | JS退出时,与APP联动处理。 JS正常退出时,发0给APP或者不发; JS不正常退出时,发1给APP,JS与APP做对应的资源清理。 |
O | 1.0/1.0 |
拉起小度语音
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收小度问题数据
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收文心回答数据
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收文本转语音数据
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
开始发送录音
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
发送录音数据
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
百度导航
表 1 百度导航字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| Start_Navigation | 0x01 | 1 | uint8 | 手机侧APP拉起板侧JS百度导航。 | O | 1.0/1.0 |
| Recv_Navigation | 0x02 | N | uint8 | 板侧JS百度导航收到手机侧导航APP数据流。 | O | 1.0/1.0 |
拉起百度导航
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收百度导航数据
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
帧格式说明:
报文0D 02 81 8F XX XX XX...
- Model ID=0D
- Command ID=02 (表示JS百度导航)
- Type=81(81二进制为1000 0001,无子节点,Type为1)
- Length=F(8F二进制为1000 1111,所以Length为15Byte)
百度矢量地图
表 1 矢量地图字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| Pull_up_vector_navi | 0x01 | 1 | uint8 | 手机侧APP拉起手表侧JS百度矢量地图。 | O | 1.0/1.0 |
| Rec_svg | 0x02 | N | uint8 | 手机侧发送svg到手表侧。 | O | 1.0/1.0 |
| Req_svg | 0x03 | N | uint8 | 超出地图范围时请求svg数据。 | O | 1.0/1.0 |
| Req_dst_by_text | 0x04 | N | uint8_t | 文本输入目的地。 | O | 1.0/1.0 |
| Req_dst_by_pcm | 0x05 | sizeof(send_pcm_info_t) | send_pcm_info_t | 语音输入目的地。 | O | 1.0/1.0 |
| Rec_dst_list | 0x06 | N*sizeof(navi_dst_list_t) | 结构体数组 typedef struct { char dst[NAVI_DST_NAME_LEN]; char info[NAVI_DST_INFO_LEN]; } navi_dst_list_t; | 手机侧返回目的地检索列表。 | O | 1.0/1.0 |
| Start_vector_navi_from_watch | 0x07 | 1 | uint8_t value取值如下: 1:步行矢量模式 2:骑行矢量模式 3:步行文本模式 4:骑行文本模式 5:公共交通文本模式 |
手表侧发起开始导航的请求。 | O | 1.0/1.0 |
| Rec_vector_navi_info | 0x08 | N | uint8_t | 手表侧收到手机侧实时导航信息。 | O | 1.0/1.0 |
| Start_vector_navi_from_phone | 0x09 | 1 | uint8_t value取值如下: 1:步行矢量模式 2:骑行矢量模式 3:步行文本模式 4:骑行文本模式 5:公共交通文本模式 |
手机侧发起开始导航。 | O | 1.0/1.0 |
| Req_poi | 0x0A | 1 | uint8_t | 手表侧发起POI查询。 | O | 1.0/1.0 |
| Rec_poi | 0x0B | N | uint8_t | 手表侧收到POI查询结果。 | O | 1.0/1.0 |
| Rec_finish_vector_navi_form_watch | 0x0C | 1 | uint8_t | 手表侧结束导航。 | O | 1.0/1.0 |
| Rec_finish_vector_navi_form_phone | 0x0D | 1 | uint8_t | 手机侧结束导航(包含主动与到达目的地结束导航)。 | O | 1.0/1.0 |
拉起百度矢量地图
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收矢量地图
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
请求矢量地图
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
文本输入目的地
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
语音输入目的地
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收目的地列表
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
手表发起导航
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收实时导航信息
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
手机发起导航
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
请求兴趣点
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
接收兴趣点结果
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
手表结束导航
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
手机结束导航
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
阿里乘车码
网络状态更新指令
表 1 网络状态字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| Network_status | 0x01 | 1 | uint8 | 表示当前网络是否可用。 • value值为0:网络不可用。 • value值为1:网络可用。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
域名解析请求指令
表 1 域名解析字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| request_data | 0x02 | var | uint8[N] | 域名信息 | M | 1.0/1.0 |
| reponse_data | 0x02 | var | uint8[4] | IPV4信息 | M | 1.0/1.0 |
-
请求帧:

-
响应帧:

建立TCP连接指令
表 1 建立连接字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| request_data | 0x03 | 6 | ip_info | Struct ip_info{ uint8 dst_ip[4] uint16 dsp_port } dst_ip:目的地址 dsp_port:目的端口 |
M | 1.0/1.0 |
| reponse_data | 0x03 | 4 | connect_result | Struct connect_result{ int32 ret int32 fd } ret:0连接成功,其他为错误码。 ret为0时,fd为TCP连接句柄(fd取值需要大于0)。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:

TCP上网请求的数据指令
表 1 TCP上网请求字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| request_data | 0x04 | var | uint8[N] | 此处为TCP的上网请求数据。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
TCP响应数据指令
表 1 服务器TCP响应数据字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| reponse_data | 0x04 | var | uint8[N] | 此处为TCP的响应报文数据。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
TCP关闭指令
表 1 TCP关闭字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| request_type | 0x05 | 1 | uint8 | 请求类型。 • value值为1时手机发起关闭。 • value值为2时手表发起关闭。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
WatchConnectKit
表 1 字段说明
| 字段名称 | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|
| msg_type | 1 | uint8_t | 主动发送填1,应答填2。 | M | 1.0/1.0 |
| seq_id | 2 | uint16_t | 消息序列,发送生成,接收方在回复时携带此值。 | M | 1.0/1.0 |
| src_pkg_name_len | 2 | uint16_t | 发送命令的源模块名长度。 | M | 1.0/1.0 |
| src_pkg_name | n | uint8_t[] | 发送命令的源模块名。 | M | 1.0/1.0 |
| des_pkg_name_len | 2 | uint16_t | 命令目的模块名长度。 | M | 1.0/1.0 |
| dest_pkg_name | n | uint8_t[] | 命令目的模块名。 | M | 1.0/1.0 |
| payload_len | 2 | uint16_t | 消息内容长度。 | M | 1.0/1.0 |
| payload | n | uint8_t[] | 消息内容。 | O | 1.0/1.0 |
| response | 4 | uint32_t | 命令返回码。 | M | 1.0/1.0 |
ping消息
表 1 ping消息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_connect_ping | 0x01 | sizeof(struct watchConectPingMsg) | struct | uint8_t msg_type uint16_t seq_id uint16_t src_pkg_name_len uint8_t src_pkg_name[0] uint16_t des_pkg_name_len uint8_t dest_pkg_name[0] uint16_t payload_len uint8_t payload[0] uint32_t response |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:

手机与手表消息
表 1 手机与手表消息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_connect_send | 0x2 | sizeof(struct watchConectSendMsg) | struct | uint8_t msg_type uint16_t seq_id uint16_t src_pkg_name_len uint8_t src_pkg_name[0] uint16_t des_pkg_name_len uint8_t dest_pkg_name[0] uint16_t payload_len uint8_t payload [0] uint32_t response |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:

获取版本号消息
表 1 获取版本号消息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_connect_get_version | 0x03 | sizeof(struct watchGetVersionMsg) | struct | uint8_t msg_type uint16_t seq_id uint16_t src_pkg_name_len uint8_t src_pkg_name[0] uint16_t des_pkg_name_len uint8_t dest_pkg_name[0] uint16_t payload_len uint8_t payload[0] uint32_t response |
M | 1.0/1.0 |
-
请求帧:

-
请求帧:

应用是否安装消息
表 1 应用是否安装消息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_connect_check_app_install | 0x04 | sizeof(struct watchConectCheckAppInstallMsg) | struct | uint8_t msg_type uint16_t seq_id uint16_t src_pkg_name_len uint8_t src_pkg_name[0] uint16_t des_pkg_name_len uint8_t dest_pkg_name[0] uint16_t payload_len uint8_t payload[0] uint32_t response |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:

手机与手表文件传输
表 1 手机与手表文件传输字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_connect_file_transfer | 0x05 | sizeof(struct watchConectFileTransfer) | struct | uint8_t msg_type uint16_t seq_id uint16_t src_pkg_name_len uint8_t src_pkg_name[0] uint16_t des_pkg_name_len uint8_t dest_pkg_name[0] uint16_t payload_len uint8_t payload[0] uint32_t response |
M | 1.0/1.0 |
-
请求帧:

-
响应帧:

JsApp推送文件到手机流程
图 1 JsApp推送文件到手机流程图

WatchConnect发给APP的消息,携带payload时,格式如下:
APP使用file_path路径发起文件数传,无需做路径拼接(WatchConnect会把沙箱路径转成绝对路径)。
手机推送文件到JsApp流程
图 1 手机推送文件到JsApp流程图

APP给WatchConnect的消息,携带payload时,内容为json格式字符串(WatchConnect会直接透传给JsApp,文件路径需要提前转成沙箱路径)。
查询存储剩余空间
表 1 查询存储剩余空间字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_connect_space_query | 0x06 | sizeof(struct watchConectSpaceInfo) | struct | Struct watchConectSpaceInfo { uint32_t totalSize uint32_t freeSize } | M | 1.0/1.0 |
-
请求帧:

-
响应帧:

AppStore
JsApp安装和卸载
表 1 appStoreOperation结构体
| 字段名称 | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|
| operation_type | 1 | uint8_t | 操作类型: 0:安装; 1:删除。 |
M | 1.0/1.0 |
| pkg_name | 128 | uint8_t[] | 安装时为应用文件名,删除时为应用包名。 | M | 1.0/1.0 |
表 2 安装、卸载字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| app_store_operation | 0x01 | sizeof(struct appStoreOperation) | struct | 请参考“表1”。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
设备侧应用安装、卸载、状态上报
表 1 pkgResultReport结构体
| 字段名称 | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|
| install_progress | 1 | uint8_t | 操作状态以及结果: 0~100:操作进度; 101:正在安装; 102:安装完成; 103:安装失败; 104:正在卸载; 105:卸载完成; 106:卸载失败; 107:应用安装数量超上限。 |
M | 1.0/1.0 |
| pkg_name | 128 | uint8_t[] | 应用包名。 | M | 1.0/1.0 |
表 2 安装、卸载、状态上报字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| pkg_result_report | 0x02 | sizeof(struct pkgResultReport) | struct | 请参考“表1”。 | M | 1.0/1.0 |
请求帧:

获取设备侧安装的应用列表
表 1 pkgUnitInfo结构体
| 字段名称 | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|
| pkgName | 128 | uint8_t[] | 应用包名,用户不可见。 | M | 1.0/1.0 |
| versionCode | 4 | uint32 | 应用版本号,用户不可见,应用更新使用。 | M | 1.0/1.0 |
| versionName | 128 | uint8_t[] | 应用版本号,用户可见。 | M | 1.0/1.0 |
| labelName | 256 | uint8_t[] | 应用名,用户可见。 | M | 1.0/1.0 |
表 2 pkgListReport结构体
| 字段名称 | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|
| pkgUnitCount | 1 | uint8 | 应用个数。 | M | 1.0/1.0 |
| pkgUnitList | n*sizeof(pkgUnitInfo) | pkgUnitInfo | 应用包名列表。 | O | 1.0/1.0 |
表 3 获取设备侧安装的应用列表字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| pkg_list_report | 0x03 | sizeof(struct pkgListReport) | struct | 请参考“表2”。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧

获取指定bundleName的应用详情
结构体同表1。
-
请求帧:

-
响应帧

表盘市场
获取手表系统信息
表 1 获取手表系统信息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_sys_info | 0x01 | sizeof(watch_sys_info) | struct | • uint8_t chip_platform[5]:芯片平台标识。 • uint8_t chip_model[5]:芯片型号。 • uint8_t os_version[23]:系统版本号。 • uint8_t api_level[3]:JS API版本。 • uint8_t watch_proto_support_cnt:当前支持的表盘协议个数。 • uint8_t watch_protocol_version[8][4]:支持的表盘协议版本号集合,如同时支持2.0和3.0。 • uint8_t resolution[8]:分辨率,宽*高。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取手表设备能力集
表 1 获取手表设备能力信息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_dev_cap_info | 0x02 | sizeof(watch_dev_cap_info) | struct | • uint8_t kaleidoscope:万花筒能力。 • uint8_t effect_3D:3D效果能力。 • uint8_t interaction:表盘交互能力。 • uint8_t video:视频表盘能力。 • uint32_t video_format:视频编码能力集。按照CodecFormat做位映射形成能力集。 typedef enum { CODEC_H264 = 0, /**< H264 or AVC */ CODEC_H265, /**< H265 or HEVC */ CODEC_JPEG, /**< JPEG */ CODEC_MJPEG, /**< MJPEG */ CODEC_AAC, /**< AAC */ CODEC_G711A, /**< G711A */ CODEC_G711U, /**< G711u */ CODEC_PCM, /**< PCM */ CODEC_MP3, /**< MP3 */ CODEC_G726, /**< G726 */ CODEC_OPUS, /**< OPUS */ CODEC_FLAC, /**< FLAC */ CODEC_VORBIS, /**< VORBIS */ CODEC_APE, /**< APE */ CODEC_SILK, /**< SILK */ CODEC_SBC, /**< SBC */ CODEC_BUT, /**< Undefined format */ } CodecFormat; |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取指定表盘信息
表 1 获取指定表盘信息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_dial_info | 0x03 | sizeof(watch_dial_info) | struct | • uint32_t uuid:表盘唯一标识。 • uint8_t install_state:表盘安装状态,0表示未安装,1表示已安装。 • uint8_t is_current_watch:是否是当前表盘。 • uint8_t watch_protocol_version[4]:表盘协议版本。 • uint8_t watch_version[6]:表盘版本(用于标识此表盘是否可以升级)。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
表盘安装
此章节表示从手机测向手表数传表盘,路径:/user/dial/xxx.bin,此部分复用文件数传,数传成功后通知此章节协议。
表 1 表盘安装字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| path | 0x04 | N * sizeof(uint8_t) | str | char * path:表盘的下载路径。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:
数传通知错误码,请参考“传输通知”。
-
表盘卸载
表 1 表盘卸载字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| op_ret | 0x05 | sizeof(uint8_t) | uint8_t | uint8_t op_ret:卸载结果。0表示失败,1表示成功。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
设置表盘
表 1 表盘设置字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| op_ret | 0x06 | sizeof(uint8_t) | uint8_t | uint8_t op_ret:设置结果。0表示失败,1表示成功。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取所有已安装的表盘信息
表 1 获取所有已安装表盘信息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_dial_info | 0x07 | N * sizeof(watch_dial_info) | struct | • uint32_t uuid:表盘唯一标识。 • uint8_t install_state:表盘安装状态。0表示未安装,1表示已安装。 • uint8_t current_watch:是否是当前表盘。 • uint8_t watch_protocol_version[4]:表盘协议版本。 • uint8_t watch_version[4]:表盘版本(用于标识此表盘是否可以升级)。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取当前表盘信息
表 1 获取当前表盘信息字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_dial_info | 0x08 | sizeof(watch_dial_info) | struct | • uint32_t uuid:表盘唯一标识。 • uint8_t install_state:表盘安装状态。0表示未安装,1表示已安装。 • uint8_t current_watch:是否是当前表盘。 • uint8_t watch_protocol_version[4]:表盘协议版本。 • uint8_t watch_version[4]:表盘版本(用于标识此表盘是否可以升级)。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
远端消息通知
三方应用通知
表 1 三方应用字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| 3rd_app_notification | 0x01 | sizeof(uint8_t) | uint8_t | uint8_t 3rd_app_notification[],通知的内容是JSON对象字符串。 | O | 1.0/1.0 |
-
请求帧:

三方应用消息举例:
短信通知
表 1 短信通知字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| text_msg_notification | 0x01 | sizeof(uint8_t) | uint8_t | uint8_t text_msg_notification[],通知的内容是JSON对象字符串。 | O | 1.0/1.0 |
-
请求帧:

短信消息举例:
{
"appName": "短信",
"packageName": "com.android.mms",
"title": "+86181****2231",
"content": "你好,我是短信消息。"
}
电话通知
表 1 电话通知字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| phone_notification | 0x01 | sizeof(uint8_t) | uint8_t | uint8_t phone_notification[],通知的内容是JSON对象字符串。 | O | 1.0/1.0 |
-
请求帧:

电话通知举例:
{
"appName": "电话本",
"packageName": "com.android.contacts",
"title": "181****8296",
"content": "甘肃兰州 电信"
}
同步常用联系人
从手机APP同步常用联系人到手表侧。
表 1 同步常用联系人字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| syn_common_contacts | 0x04 | sizeof(uint8_t) | uint8_t | 内容是JSON字符串。 | O | 1.0/1.0 |
-
请求帧:

同步常用联系人举例:
[{
"cid": "2",
"name": "华为消费者服务热线",
"phone": "950800",
}, {
"cid": "8",
"name": "X总监",
"phone": "123456789",
}
]
查询常用联系人
手机APP查询手表侧的常用联系人。
表 1 查询常用联系人字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| lookup_common_contacts | 0x05 | sizeof(uint8_t) | uint8_t | 内容是JSON字符串。 | O | 1.0/1.0 |
-
请求帧:

查询常用联系人举例:
[{
"cid": "2",
"name": "华为消费者服务热线",
"phone": "950800",
}, {
"cid": "8",
"name": "X总监",
"phone": "123456789",
}
]
设备信息
获取电量
表 1 获取电量字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| battery_level_info | 0x01 | 1 | uint8_t | uint8_t battery_level:电量值。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取文件系统容量
表 1 获取文件系统容量字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| fs_info | 0x02 | 12 | uint32_t[] | uint32_t sys_info[3] • sys_info[0]:总空间 • sys_info[1]:已用空间 • sys_info[2]:剩余空间 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取手表类型
表 1 获取手表类型字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_type | 0x03 | sizeof(string) | string | watch_type:客户可自定义产品型号。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
获取系统语言
表 1 获取系统语言字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| get_sys_language | 0x04 | 1 | uint8_t | - | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
设置系统语言
表 1 设置系统语言字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| set_sys_language | 0x05 | 1 | uint8_t | 0:错误 1:中文 2:英文 当前只支持中英文。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
心率信息上报
表 1 心率字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| rate_info | 0x06 | 1 | uint8_t | 每分钟平均心率。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
步数信息上报
表 1 步数字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| step_info | 0x07 | 4 | uint32_t | 累计的步数。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
血氧信息上报
表 1 血氧字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| blood_oxygen_info | 0x08 | 1 | uint8_t | 血氧百分比。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
下发运动控制
表 1 手机下发运动控制字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| sport_control | 0x09 | sizeof(struct) | struct | • uint8_t action:1.开始运动;2.暂停运动;3.恢复运动;4.停止运动。 • uint8_t type:0.户外跑步;1.室内跑步;2.骑行;3.登山;4.室内游泳;5.户外游泳。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
上报运动控制
表 1 手表上报运动控制字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| sport_control | 0x0a | sizeof(struct) | struct | • uint8_t action:1.开始运动;2.暂停运动;3.恢复运动;4.停止运动。 • uint8_t type:0.户外跑步;1.室内跑步;2.骑行;3.登山;4.室内游泳;5.户外游泳。 注:action只会收到暂停、恢复、停止,不会收到开始。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
上报运动数据
表 1 手表上报运动数据字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| sport_data | 0x0b | sizeof(struct) | struct | • uint8_t type:0.户外跑步;1.室内跑步;2.骑行;3.登山;4.室内游泳;5.户外游泳 • uint16_t heartrate:心率。 • uint16_t calorie:热量。 • uint16_t altitude:高度。 • uint16_t ascent:海拔上升。 • uint16_t descent:海拔下降。 • uint32_t distance:距离,单位:米。 • uint32_t lap:趟数。 • uint32_t startTime:运动开始时间。(unix时间戳) • uint32_t endTime:运动结束时间。(unix时间戳) • uint32_t elapsedTime:运动总时间,单位:秒。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
运动记录同步
表 1 手表运动记录同步手机字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| sync_sport_record | 0x0c | sizeof(struct) | struct | • uint16_t num:运动记录个数。 • uint8_t type:0.户外跑步;1.室内跑步;2.骑行;3.登山;4.室内游泳;5.户外游泳。 • uint16_t heartrate:心率。 • uint16_t calorie:热量。 • uint16_t altitude:高度。 • uint16_t ascent:海拔上升。 • uint16_t descent:海拔下降。 • uint32_t distance:距离,单位:米。 • uint32_t lap:趟数。 • uint32_t startTime:运动开始时间。(unix时间戳) • uint32_t endTime:运动结束时间。(unix时间戳) • uint32_t elapsedTime:运动总时间,单位:秒。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
设置在线日志通道
表 1 步数字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| set_online_log | 0x0d | 1 | uint8_t | 0x01:设置日志串口通道; 0x02:设置日志BR通道; 0x03:设置日志BLE通道。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
设置在线日志级别
表 1 在线日志级别字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| set_online_log_level | 0x0e | 1 | uint8_t | 0x01:打开debug; 0x02:打开info; 0x04:打开warn; 0x08:打开 error。 如果需要同时打开多个日志级数按照位或运算。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
设置离线日志开关
表 1 离线日志开关字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| set_offline_log_enable | 0x0f | 1 | uint8_t | 0x01:使能; 0x00:去使能。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
在线日志上报
表 1 在线日志内容上报字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| online_log | 0x10 | N * sizeof(uint8_t) | uint8_t | uint8_t log[1024]; | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
开始查找手机
表 1 开始查找手机字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| start_find_phone | 0x11 | sizeof(uint8_t) | uint8_t | 无需value。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
停止查找手机
表 1 开始查找手机字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| stop_find_phone | 0x12 | sizeof(uint8_t) | uint8_t | 无需value。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
睡眠数据上报
表 1 手表上报睡眠数据字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| sleep_data | 0x13 | sizeof(struct) | struct | • bool isSended:此睡眠数据是否已发送。 • char data[11]:睡眠日期,如2025-06-03。 • uint8_t type:睡眠类型。0:深睡,1:浅睡,2:快速眼动,3:清醒。 • uint8_t typeSleepStart[20]:类型睡眠开始时间,如2025-06-03 00:00:00。 • uint8_t typeSleepEnd[20]:类型睡眠结束时间,如2025-06-03 00:00:00。 • uint8_t SleepStart[20]:整个睡眠开始时间,如2025-06-03 00:00:00。 • uint8_t SleepStart[20]:整个睡眠开始时间,如2025-06-03 00:00:00。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
拍照控制
表 1 拍照控制字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| take_photo_control | 0x14 | 1 | uint8_t | 拍照控制。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手表上报退出相机
表 1 手表上报退出相机字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| watch_exit_camera | 0x15 | 1 | uint8_t | 手表发起退出相机。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手机下发退出相机
表 1 手机下发退出相机字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| phone_exit_camera | 0x16 | 1 | uint8_t | 手机下发退出相机。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手表请求拉起APP相机
表 1 手表请求拉起相机字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| req_pull_up_camera | 0x17 | 1 | uint8_t | 手表请求拉起相机。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
APP相机拉起结果
表 1 拉起APP相机结果字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| pull_up_camera_ret | 0x18 | 1 | uint8_t | APP相机是否拉起的结果通知。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手机发起OTA初始化
表 1 手机发起OTA初始化字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| ota_init | 0x19 | 1 | uint8_t | 手机发起OTA流程初始化。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手机发起OTA开始
表 1 手机发起OTA开始字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| ota_info | 0x1a | 1 | uint32_t | 升级包长度。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手表请求天气信息
表 1 手表请求天气字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| weather_req | 0x1b | 1 | uint8_t | 无value约束。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手表收到天气信息
表 1 手表收到天气字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| weather_rec | 0x1c | 1 | uint8_t | 数传天气文件后发送此协议给手表。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手表请求日程信息
表 1 手表请求日程字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| date_req | 0x1d | 1 | uint8_t | 无value约束。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手表收到日程信息
表 1 手表收到日程字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| date_rec | 0x1e | N*sizeof(uint8_t) | uint8_t | 日程json格式字符串。 | M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
手机下发网络时间
表 1 网络时间字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| time_sync | 0x1f | N*sizeof(uint8_t) | uint8_t | 时间格式: “year-mon-day-hour-min-sec”。 |
M | 1.0/1.0 |
-
请求帧:

-
响应帧
-
成功响应:

-
失败响应:

-
组网设备业务
命令索引
命令定义
音频状态查询
表 1 音频状态查询字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| device_id | 0x01 | 1 | uint8 | 设备号,非设置项,作为后续type查询目标识别标识使用。 0:主机 1:从机1 2:从机2 3:从机3 4:从机4 |
M | 1.0/1.0 |
| energy_value | 0x02 | 4 | int32 | 音频信号能量。 | O | 1.0/1.0 |
| anr_mode | 0x03 | 1 | uint8 | 拾音降噪模式 0:关闭降噪 1:普通降噪模式 2:增强降噪模式 |
O | 1.0/1.0 |
| volume_level | 0x04 | 1 | uint8 | 音量挡位,范围[0, 24] | O | 1.0/1.0 |
说明: 用于通过主机查询各个从机的状态信息,通过device_id区分发射机,指令格式:Model ID + Command ID + TLV(device_id) + TL(other),device_id必须放在第一个TLV,第二个TL根据需要查询的type填写。 查询时除了device_id需要根据查询目标设置value字段,其他type类型的len字段填0不需要填写value字段。
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
音频参数设置
表 1 音频参数设置字段描述
| 字段名称 | Type(bit0~bit6) | Length Size(Oct) | Value数据类型 | 说明 | 必选/可选(M/O) | 版本 |
|---|---|---|---|---|---|---|
| device_id | 0x01 | 1 | uint8 | 设备号,非设置项,作为后续type查询目标识别标识使用。 0:主机 1:从机1 2:从机2 3:从机3 4:从机4 |
M | 1.0/1.0 |
| anr_mode | 0x02 | 1 | uint8 | 拾音降噪模式 0:关闭降噪 1:普通降噪模式 2:增强降噪模式 |
O | 1.0/1.0 |
| volume_level | 0x03 | 1 | uint8 | 音量挡位,范围[0, 24] | O | 1.0/1.0 |
说明: 用于通过主机设置各个从机的参数信息,通过device_id区分发射机,指令格式:Model ID + Command ID + TLV(device_id) + TL(other),device_id必须放在第一个TLV,第二个TLV根据需要设置的type填写。
-
请求帧:

-
响应帧:
-
成功响应:

-
失败响应:

-
设备状态查询
该命令用于查询组网设备的麦克风距离、自动关机时长和指示灯模式。SDK 头文件已声明对应的查询类型和处理入口,参见组网设备协议类型定义。帧封装遵循业务层公共规范。
| 字段名称 | Type | 说明 |
|---|---|---|
| device_id | 0x01 | 目标设备标识,作为第一个 TLV。 |
| mic_dist | 0x02 | 麦克风距离。 |
| auto_shutdown_duration | 0x03 | 自动关机时长。 |
| led_mode | 0x04 | 指示灯模式。 |
设备参数设置
该命令用于设置组网设备的麦克风距离、自动关机时长和指示灯模式。SDK 头文件已声明对应的设置类型和处理入口,参见组网设备协议类型定义。帧封装遵循业务层公共规范。
| 字段名称 | Type | 说明 |
|---|---|---|
| device_id | 0x01 | 目标设备标识,作为第一个 TLV。 |
| mic_dist | 0x02 | 麦克风距离。 |
| auto_shutdown_duration | 0x03 | 自动关机时长。 |
| led_mode | 0x04 | 指示灯模式。 |