1.2.1.1. 激光雷达通信协议–Mid360
文件发布历史 |
||
---|---|---|
日期 |
版本 |
修改描述 |
20220519 |
v1.0 |
1. 内部审核版本 |
20220530 |
v1.1 |
1. 合并状态与参数key_value信息字段 |
20220602 |
v1.2 |
1. 增加log相关命令 |
20220622 |
v1.3 |
1. 56000端口仅支持广播发现命令,广播发现命令ack新增当前雷达的控制指令端口字段 |
20220628 |
v1.4 |
1. 更新工作状态相关描述 |
20220629 |
v1.4.1 |
1. key value list 增加 firmware type 新键值 |
20220815 |
v1.4.2 |
1. key value list增加detect_mode & func_io_cfg |
20220825 |
v1.4.3 |
1.点云帧头,增加tag_type描述点云tag类型 |
20220915 |
v1.4.4 |
1. 增加球坐标点云格式描述 |
20221028 |
v1.4.5 |
1. 修改FOV配置描述 |
20221114 |
v1.4.6 |
1. 增加交互流程描述 |
20221213 |
v1.4.7 |
1. pattern_mode空间扫描模式描述变更 |
20230904 |
v1.4.8 |
1. 增加log相关协议描述 |
1.2.1.2. 协议概述
此文档仅作为livox Mid360雷达产品通信协议
1.2.1.2.1. 协议类型
用户和雷达之间有两种类型的数据协议,功能分别如下:
点云数据协议:
雷达采样输出的点云数据;
雷达内部IMU数据
详见 [配置雷达参数](#2.3 数据类型)
控制指令协议:
配置和查询雷达的参数、雷达复位;
雷达状态推送、查询;
升级相关;
详见 [指令详解](#4 指令详解)
两种协议都被封装在UDP的数据段中,协议数据为小端序。
1.2.1.2.2. 雷达工作状态
当前雷达的状态机如下图所示,雷达产品目前已使用的状态枚举值如下:
雷达状态 |
枚举值 |
是否支持用户设置 |
---|---|---|
采样状态 |
0x01 |
支持(通过参数配置指令) |
待机状态 |
0x02 |
支持(通过参数配置指令) |
错误状态 |
0x04 |
不支持 |
自检状态 |
0x05 |
不支持 |
电机启动状态 |
0x06 |
不支持 |
升级状态 |
0x08 |
支持(通过触发升级动作) |
就绪状态 |
0x09 |
支持(通过参数配置指令) |
1.2.1.2.3. 端口说明
按照数据类型分类,对应的源端口和目的端口说明:
数据类型 |
传输方向 |
雷达端口 |
上位机端口 |
传输类型 |
传输协议 |
---|---|---|---|---|---|
设备类型查询 |
雷达 <—->上位机 |
56000 |
任意 |
广播 |
UDP |
56000作为livox雷达固定监听端口,主要用于上位机通过广播查询设备:
1.仅支持设备类型查询命令(cmd_id:0x0000),上位机通过此端口获取雷达具体设备类型。此命令响应通过广播回复,以便于上位机与雷达IP不在同一网段时,上位机仍可识别到雷达。
Mid-360通信端口:
数据类型 |
传输方向 |
雷达端口 |
上位机端口 |
传输类型 |
传输协议 |
---|---|---|---|---|---|
控制指令 |
雷达<—>上位机 |
56100 |
任意(建议56101) |
单播 |
UDP |
推送指令 |
雷达 —>上位机 |
56200 |
可配置(默认56201) |
默认单播 |
UDP |
点云数据 |
雷达 —>上位机 |
56300 |
可配置(默认56301) |
默认单播(支持组播) |
UDP |
IMU数据 |
雷达 —>上位机 |
56400 |
可配置(默认56401) |
默认单播(支持组播) |
UDP |
LOG数据 |
雷达<—>上位机 |
56500 |
任意(建议56501) |
单播 |
UDP |
1.2.1.3. 点云&IMU数据协议
1.2.1.3.1. 协议格式
雷达输出点云数据格式:
字段 |
偏移量(字节) |
大小 (字节) |
详细描述 |
---|---|---|---|
version |
0 |
1 |
包协议版本:当前为0 |
length |
1 |
2 |
从version开始的整个UDP数据段长度 |
time_interval |
3 |
2 |
帧内点云采样时间(单位0.1us) |
dot_num |
5 |
2 |
当前UDP包data字段包含点数目 |
udp_cnt |
7 |
2 |
点云UDP包计数,每个UDP包依次加1,点云帧起始包清0 |
frame_cnt |
9 |
1 |
点云帧计数,每帧点云(10Hz/15Hz等)依次加1 |
data_type |
10 |
1 |
数据类型,详见 [2.3](#2.3 数据类型) |
time_type |
11 |
1 |
时间戳类型,详见 [2.2](#2.2 时间戳) |
reserved |
12 |
12 |
保留 |
crc32 |
24 |
4 |
timestamp+data段校验码,使用CRC-32算法(详见 [CRC算法说明](#6 CRC算法说明) ) |
timestamp |
28 |
8 |
点云时间戳,详见 [2.2](#2.2 时间戳) |
data |
36 |
– |
数据信息,详见 [2.3](#2.3 数据类型) |
1.2.1.3.2. 时间戳
雷达系统支持GPS同步和PTP网络协议同步;
GPS时间同步可以通过网络UDP包输入,也可以通过串口GPRMC报文输入,详见时间同步说明文档;
PTP时间同步支持IEEE1588v2.0 UDP/IP同步,以及gPTP L2同步;
每个数据包中的时间戳代表第一个点云的时间,每个数据包中有n个点云,这n个点云的时间是等间隔的,总间隔时间为 time_interval
的值。
时间戳类型:
时间戳类型 |
同步源类型 |
数据格式 |
说明 |
---|---|---|---|
0 |
无同步源,时间戳为雷达开机时间 |
uint64_t |
Unit单位: ns |
1 |
gPTP/PTP同步,时间戳为master时钟源时间 |
uint64_t |
Unit单位: ns |
2 |
GPS时间同步 |
uint64_t |
Unit单位: ns |
注意:
GPS时间同步的时间限制范围为2000年-1月1日-00:00到2037年-12月31日
PTP时间同步不支持IEEE1588v2.1
不推荐应用于IEEE1588v2.0与gPTP同时存在的场景中;
1.2.1.3.3. 数据类型
在每个数据包中有N个采样值。N的大小取决于数据类型。
数据类型有以下4种,默认点云数据类型为1:
数据类型 |
采样类型 |
回波模式 |
坐标系模式 |
N |
---|---|---|---|---|
0 |
IMU数据 |
|||
1 |
点云数据 |
单回波模式 |
直角坐标系 |
96 |
2 |
点云数据 |
单回波模式 |
直角坐标(16bit) |
96 |
3 |
点云数据 |
单回波模式 |
球坐标 |
96 |
数据类型 0
IMU数据:
字段 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|
gyro_x |
0 |
float |
Unit: rad/s |
gyro_y |
4 |
float |
Unit: rad/s |
gyro_z |
8 |
float |
Unit: rad/s |
acc_x |
12 |
float |
Unit: g |
acc_y |
16 |
float |
Unit: g |
acc_z |
20 |
float |
Unit: g |
数据类型 1
单回波直角坐标数据格式:
字段 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|
x |
0 |
int32_t |
X 轴,单位: mm |
y |
4 |
int32_t |
Y 轴,单位: mm |
z |
8 |
int32_t |
Z 轴,单位: mm |
反射率 |
12 |
uint8_t |
反射率 |
标签 |
13 |
uint8_t |
根据点云帧头pack_info.tag_type字段,匹配具体tag类型,详见 [2.4](#2.4 标签信息) |
数据类型 2
单回波直角坐标数据格式(16bit):
字段 |
偏移(字节) |
数据类型 |
描述(10mm为16bit格式下分辨率) |
---|---|---|---|
x |
0 |
int16_t |
X 轴,单位: 10mm |
y |
2 |
int16_t |
Y 轴,单位: 10mm |
z |
4 |
int16_t |
Z 轴,单位: 10mm |
反射率 |
6 |
uint8_t |
反射率 |
标签 |
7 |
uint8_t |
根据点云帧头pack_info.tag_type字段,匹配具体tag类型,详见 [2.4](#2.4 标签信息) |
数据类型 3
单回波球坐标数据格式:
字段 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|
深度 |
0 |
uint32_t |
深度, 单位: mm |
天顶角 |
4 |
int16_t |
天顶角[0, 18000], Unit: 0.01 度 |
方位角 |
6 |
int16_t |
方位角[0, 36000], Unit: 0.01 度 |
反射率 |
8 |
uint8_t |
反射率 |
标签 |
9 |
uint8_t |
根据点云帧头pack_info.tag_type字段,匹配具体tag类型,详见 [2.4](#2.4 标签信息) |
1.2.1.3.4. 标签信息
Tag主要指示探测点的其它附加信息。点云标记为8bit 无符号整数,按照bit 划分为几 个区域,每个区域表示此探测点的一种属性,其中包括雨雾灰尘、相近物体间的粘连点云等等; 其中,置信度表示此探测点的可信程度,一般正常点为0(置信度优);置信度差表示该探测点 受相应属性影响较大,探测结果可信度差;如需要,可据此信息对点云进行过滤,详情如下:
Bit位 |
描述 |
---|---|
bit 6~7 |
保留位 |
bit 4~5 |
探测点属性:其它 |
bit 2~3 |
探测点属性:雨雾、灰尘等微小颗粒 |
bit 0~1 |
探测点属性:相近物体间的粘连点云 |
1.2.1.4. 控制协议
1.2.1.4.1. 协议格式
控制消息协议格式如下:
字段 |
偏移(字节) |
大小 (字节) |
描述 |
---|---|---|---|
sof |
0 |
1 |
起始字节,固定为 0xAA |
version |
1 |
1 |
协议版本,当前为0 |
length |
2 |
2 |
数据帧长度 |
seq_num |
4 |
4 |
每条新的REQ请求消息此字段递增1; |
cmd_id |
8 |
2 |
不同类型的消息通过此字段进行区分,详见[指令ID](#3.2 指令ID) |
cmd_type |
10 |
1 |
消息类型: |
sender_type |
11 |
1 |
消息发送设备类型:0:表示上位机发送消息,1表示雷达发送消息 |
resv |
12 |
6 |
预留拓展字段,可以不关心 |
crc_16 |
18 |
2 |
包头校验码,校验内容为从 |
crc32 |
20 |
4 |
crc32校验码:data字段校验码, 使用CRC-32算法(详见 [CRC算法说明](#6 CRC算法说明) ) |
data |
24 |
n |
[指令数据](#4 指令详解) |
1.2.1.4.2. 指令ID
雷达指令ID列表:
功能分类 |
指令ID |
功能 |
---|---|---|
设备类型查询 |
0x0000 |
广播发现 |
雷达信息 |
0x0100 |
参数信息配置 |
0x0101 |
雷达信息查询 |
|
0x0102 |
雷达信息推送 |
|
控制相关 |
0x0200 |
请求设备重启 |
0x0201 |
恢复出厂设置 |
|
0x0202 |
设置雷达GPS时间同步时间戳 |
|
log相关 |
0x0300 |
log文件推送 |
0x0301 |
log采集配置 |
|
0x0302 |
log系统时间同步 |
|
0x0303 |
debug点云采集配置 |
|
通用升级 |
0x0400 |
请求开始升级 |
0x0401 |
固件数据传输 |
|
0x0402 |
固件传输结束 |
|
0x0403 |
获取固件升级状态 |
1.2.1.4.3. 交互流程
1.2.1.5. 指令详解
1.2.1.5.1. 设备类型查询
1.2.1.5.1.1. 0x0000 广播发现
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
NULL |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
dev_type |
1 |
uint8_t |
雷达类型 |
|
serial_number |
2 |
uint8_t[16] |
雷达SN |
|
lidar_ip |
18 |
uint8_t[4] |
雷达IP地址 |
|
cmd_port |
22 |
uint16_t |
雷达当前控制指令端口 |
1.2.1.5.2. 雷达信息
1.2.1.5.2.1. 0x0100 参数信息配置
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
key_num |
0 |
uint16_t |
需要设置的key_value_list信息个数 |
rsvd |
2 |
uint16_t |
||
key_value_list |
4 |
key_value_list[N] |
key内容列表; |
key_value_list
中每个配置参数的格式如下:
数据域 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|
key |
0 |
uint16_t |
key编号,见下表key编号 |
length |
2 |
uint16_t |
key对应的value长度 |
value |
4 |
– |
key对应的value内容 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
error_key |
1 |
uint16_t |
配置出错的第一个雷达key |
1.2.1.5.2.2. 0x0101 雷达信息查询
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
key_num |
0 |
uint16_t |
key_list信息个数 |
rsvd |
2 |
uint16_t |
||
key_list |
4 |
– |
key编号列表 |
key_list
中每个key的格式如下:
数据域 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|
key |
0 |
uint16_t |
key编号 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
key_num |
1 |
uint16_t |
key_value_list数量 |
|
key_value_list |
3 |
– |
查询成功的key信息内容 |
1.2.1.5.2.3. 0x0102 雷达信息推送
雷达主动推送
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
key_num |
0 |
uint16_t |
key_value_list数量 |
rsvd |
2 |
uint16_t |
||
key_value_list |
4 |
– |
info_list列表 |
key_value_list
中每个配置参数的格式如下:
数据域 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|
key |
0 |
uint16_t |
key编号,见下表key编号 |
length |
2 |
uint16_t |
key对应的value长度 |
value |
4 |
– |
推送key信息内容 |
key_value_list
对应的具体含义如下:
参数编号(key) |
名称 |
参数长度 |
参数类型 |
参数内容 |
是否支持参数信息配置命令(cmd_id为0x0100)进行设置 |
---|---|---|---|---|---|
0x0000 |
pcl_data_type |
1 |
uint8_t |
雷达点云格式,详见[数据类型](2.3 数据类型): |
是 |
0x0001 |
pattern_mode |
1 |
uint8_t |
空间扫描模式: |
是 |
0x0004 |
lidar_ipcfg |
12 |
uint8_t[12] |
雷达IP地址配置 |
是 |
0x0005 |
state_info_host_ipcfg |
8 |
uint8_t[8] |
雷达状态推送信息的ip地址配置 |
是 |
0x0006 |
pointcloud_host_ipcfg |
8 |
uint8_t[8] |
雷达点云数据推送的ip地址配置 |
是 |
0x0007 |
imu_host_ipcfg |
8 |
uint8_t[8] |
雷达IMU数据推送的ip地址配置 |
是 |
0x0012 |
install_attitude |
24 |
雷达在用户装置上的安装位置; |
是 |
|
0x0015 |
fov_cfg0 |
20 |
雷达FOV配置,如果不需要使用全部的FOV,可以在FOV球面上划定一块区域(角度范围),雷达仅在此区域内采样,其它范围不工作,可以独立配置两块这样的区域,除了配置此参数外,还需要通过fov_cfg_en来使能配置;这是第一块工作区域的配置,其格式如下: |
是 |
|
0x0016 |
fov_cfg1 |
20 |
同fov_cfg0,这是第二块工作区域的配置 |
是 |
|
0x0017 |
fov_cfg_en |
1 |
uint8_t |
按Bit划分,用于使能上述两块FOV区域配置; |
是 |
0x0018 |
detect_mode |
1 |
uint8_t |
探测模式: |
是 |
0x0019 |
func_io_cfg |
4 |
uint8_t[4] |
功能线配置,第0-3个字节分别表示IN0、IN1、OUT0、OUT1管脚的功能,对应Mid360 M12航插管脚序号为8、10、12、11 |
是 |
0x001A |
work_tgt_mode |
1 |
uint8_t |
雷达目标工作模式(即目标工作状态),详见[雷达状态](#1.2 雷达状态) |
是 |
0x001C |
imu_data_en |
1 |
uint8_t |
0: IMU数据推送关闭 |
是 |
0x8000 |
sn |
16 |
uint8_t[16] |
字符串类型(不足16位使用 ‘\0’ 补齐) |
否 |
0x8001 |
product_info |
64 |
char[64] |
字符串类型(不足32位使用 ‘\0’ 补齐) |
否 |
0x8002 |
version_app |
4 |
uint8_t[4] |
App固件版本号:aa.bb.cc.dd |
否 |
0x8003 |
version_loader |
4 |
uint8_t[4] |
Loader固件版本号 |
否 |
0x8004 |
version_hardware |
4 |
uint8_t[4] |
硬件版本号 |
否 |
0x8005 |
mac |
6 |
uint8_t[6] |
雷达MAC地址:aa:bb:cc:dd:ee:ff |
否 |
0x8006 |
cur_work_state |
1 |
uint8_t |
雷达当前工作状态 |
否 |
0x8007 |
core_temp |
4 |
int32_t |
内核温度(unit: 0.01℃) |
否 |
0x8008 |
powerup_cnt |
4 |
uint32_t |
雷达上电次数统计 |
否 |
0x8009 |
local_time_now |
8 |
uint64_t |
当前设备本地时间 |
否 |
0x800A |
last_sync_time |
8 |
uint64_t |
上一次同步的master时间: |
否 |
0x800B |
time_offset |
8 |
int64_t |
当前本地时间与同步源的时间偏移,单位ns: |
否 |
0x800C |
time_sync_type |
1 |
uint8_t |
时间同步方式 |
否 |
0x800E |
error_code |
2 |
uint16_t |
异常码 |
|
0x8010 |
FW_TYPE |
1 |
uint8_t |
固件类型: |
否 |
0x8011 |
hms_code |
1 |
uint32_t[8] |
故障诊断码,每一条非0值代表一条诊断信息,当雷达工作异常时,可通过查询该诊断码确认问题原因; |
1.2.1.5.3. 控制相关
1.2.1.5.3.1. 0x0200 请求设备重启
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
timeout |
0 |
uint16_t |
重启延迟时间:ms |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.3.2. 0x0201 恢复出厂设置
此命令发出后,雷达将恢复出厂设置,回复成功后,雷达将立即重启生效
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
SN |
0 |
uint8_t[16] |
预留字段 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.3.3. 0x0202 设置GPS时间同步时间戳
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
type |
0 |
uint8_t |
时间同步方式: |
time_set |
1 |
uint64_t |
若采用GPS同步,此字段应为最近一次PPS信号上升沿的时间,类型为uint64_t,单位为ns |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.4. log相关
1.2.1.5.4.1. 0x0300 log文件推送
请求方:雷达
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
log_type |
0 |
uint8_t |
日志类型: |
file_index |
1 |
uint8_t |
文件索引号 |
|
file_num |
2 |
uint8_t |
log_type为flash log此字段有效,表示flash log文件数目 |
|
flag |
3 |
uint8_t |
bit 0: |
|
timestamp |
4 |
uint32_t |
unix时间戳,表示从1970年1月1日00:00:00所经过的秒数。 |
|
rsvd |
8 |
uint16_t |
||
trans_index |
10 |
uint32_t |
传输索引号 |
|
log_data_len |
14 |
uint16_t |
日志内容长度 |
|
log_data |
16 |
– |
日志内容: |
应答方:上位机
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
log_type |
1 |
uint8_t |
||
file_index |
2 |
uint8_t |
||
trans_index |
3 |
uint32_t |
1.2.1.5.4.2. 0x0301 log采集配置
请求方:上位机
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
log_type |
0 |
uint8_t |
日志类型: |
enable |
1 |
uint8_t |
0 : 关闭 |
应答方:雷达
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.4.3. 0x0302 log系统时间同步
请求方:上位机
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
timestamp |
0 |
uint32_t |
unix时间戳,表示从1970年1月1日00:00:00所经过的秒数 |
应答方:雷达
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.4.4. 0x0303 Debug点云采集配置
请求方:上位机
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
enable |
0 |
uint8_t |
0:关闭 |
host_ip |
1 |
uint8_t[4] |
Debug点云目的IP地址:AA.BB.CC.DD |
|
host_port |
5 |
uint16_t |
Debug点云目的端口 |
|
reserved |
7 |
uint16_t |
预留 |
应答方:雷达
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.5. 通用升级
1.2.1.5.5.1. 0x0400 请求开始升级
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
firmware_type |
0 |
uint8_t |
固件类型: |
encrypt_type |
1 |
uint8_t |
固件加密类型: |
|
firmware_length |
2 |
uint32_t |
固件总长度 |
|
dev_type |
6 |
uint8_t |
设备类型: |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.5.2. 0x0401 固件数据传输
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
firmware_offset |
0 |
uint32_t |
|
current_length |
4 |
uint32_t |
||
encrypt_type |
8 |
uint8_t |
||
rsvd |
9 |
uint8_t[3] |
||
data |
12 |
uint8_t[n] |
固件内容 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
current_offset |
1 |
uint32_t |
||
received_length |
5 |
uint32_t |
1.2.1.5.5.3. 0x0402 固件传输结束
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
checksum_type |
0 |
uint8_t |
|
checksum_length |
1 |
uint8_t |
||
checksum_data |
2 |
uint8_t[n] |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.2.1.5.5.4. 0x0403 获取固件升级状态
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
NULL |
|||
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
upgrade_progress |
1 |
uint8_t |
升级进度: |
1.2.1.6. 返回码说明
名称 |
返回值 |
说明 |
---|---|---|
LVX_RET_SUCCESS |
0x00 |
执行成功 |
LVX_RET_FAILURE |
0x01 |
执行失败 |
LVX_RET_NOT_PERMIT_NOW |
0x02 |
当前状态不支持 |
LVX_RET_OUT_OF_RANGE |
0x03 |
设置值超出范围 |
LVX_RET_PARAM_NOTSUPPORT |
0x20 |
参数不支持 |
LVX_RET_PARAM_REBOOT_EFFECT |
0x21 |
参数需重启生效 |
LVX_RET_PARAM_RD_ONLY |
0x22 |
参数只读,不支持写入 |
LVX_RET_PARAM_INVALID_LEN |
0x23 |
请求参数长度错误,或ack数据包超过最大长度 |
LVX_RET_PARAM_KEY_NUM_ERR |
0x24 |
参数key_num和key_list不匹配 |
LVX_RET_UPGRADE_PUB_KEY_ERROR |
0x30 |
公钥签名验证错误 |
LVX_RET_UPGRADE_DIGEST_ERROR |
0x31 |
固件摘要签名验证错误 |
LVX_RET_UPGRADE_FW_TYPE_ERROR |
0x32 |
固件类型不匹配 |
LVX_RET_UPGRADE_FW_OUT_OF_RANGE |
0x33 |
固件长度超出范围 |
LVX_RET_UPGRADE_FW_ERASING |
0x34 |
固件擦除中 |
1.2.1.7. CRC算法说明
CRC算法名称 |
多项式公式 |
宽度 |
多项式 |
初始值 |
结果异或值 |
输入反转 |
输出反转 |
---|---|---|---|---|---|---|---|
CRC-16/CCITT-FALSE |
x^16^ + x^12^ + x^5^ + 1 |
16 |
0x1021 |
0xFFFF |
0x0000 |
false |
false |
CRC-32 |
x^32^ + x^26^ + x^23^ + x^22^ + x^16^ + x^12^ + x^11^ + x^10^ + x^8^ + x^7^ + x^5^ + x^4^ + x^2^ + x + 1 |
32 |
0x04C11DB7 |
0xFFFFFFFF |
0xFFFFFFFF |
true |
true |