设备接入 IOTDA-设备侧适配开发指导:下载新版本软件包通知
下载新版本软件包通知
根据PCP协议约定的交互流程,查询完版本号后, 物联网平台 下发指令让设备下载新版本的软件包。
物联网平台发送消息
根据PCP消息结构的定义可以得出,物联网平台向设备下发下载新版本软件包通知时,各消息字段的填写如下。
- 起始标识固定为:FFFE。
- 版本号固定为:01。
- 消息码:此处为新版本通知,查询消息码表可以知道新版本通知为20,转换为十六进制为14。
- 校验码:CRC16计算前先用0000替代。
- 数据区长度:根据数据区的消息字段可以得出,数据区长度为22个字节,转换为十六进制为:0016。
- 数据区:根据数据区的定义可知。
- 目标版本号:由16个字节组成,假设升级的目标版本号为v1.0版本,转换为十六进制并在后面14个字节补充0后得到:56312E30000000000000000000000000。
- 升级包分片大小:由2个字节组成,单位为byte,用户上传软件包时可以手动输入升级包分片大小,如果不设置默认为500byte,大小为32~500之间。假设为500byte,转换为十六进制后为:01F4。
- 升级包分片总数:由2个字节组成,由软件包大小除以每个分片的大小并向上取整获得。假设软件包大小为500byte,则分片数量为1,转换为十六进制后为:0001。
- 检验码:由2个字节组成,目前已废弃,固定为:0000。
字段
数据类型
描述及要求
目的版本号
BYTE[16]
目的版本号,由ASCII字符组成,位数不足时,后补“0X00”。
升级包分片大小
WORD
每个分片的大小
升级包分片总数
WORD
升级包分片总数
升级包校验码
WORD
固定为:0000
将下载新版本软件包通知的消息流组合起来得到:FFFE 01 14 0000 0016 56312E30000000000000000000000000 01F4 0001 0000。前面说了,还要将消息流进行CRC16算法计算得到校验码为02F7。因此,物联网平台向设备通知下载新版本软件包的信息,物联网平台向设备发送的消息流为FFFE011402F7001656312E3000000000000000000000000001F400010000。
设备返回的应答消息
设备收到下载新版本软件包通知后,设备向物联网平台返回应答消息,是否允许设备进行升级,各消息字段的填写如下。
- 起始标识固定为:FFFE。
- 版本号固定为:01。
- 消息码:与请求的消息码一致,为14。
- 校验码:CRC16计算前先用0000替代。
- 数据区长度:根据数据区的字段的数据类型得出数据区长度为1个字节,转换为十六进制为:0001。
- 数据区:设备根据自身的情况对平台下发的新版本通知进行响应,本示例以设备应答“允许升级”为例进行介绍,得出数据区为:00。其它应答消息请根据应答消息字段进行适配。
字段
数据类型
描述及要求
结果码
BYTE
“0X00”允许升级
“0X01”设备使用中
“0X02”信号质量差
“0X03”已经是最新版本
“0X04”电量不足
“0X05”剩余空间不足
“0X09”内存不足
“0X7F”内部异常
将设备给物联网平台的应答消息流组合起来得到:FFFE 01 14 0000 0001 00。前面说了,还要将消息流进行CRC16算法计算得到校验码为D768。因此,设备向平台返回的应答消息流为FFFE0114D768000100。