设备接入 IOTDA-设备侧适配开发指导:下载升级包
下载升级包
根据PCP协议约定的交互流程, 物联网平台 通知设备有新的软件版本时,设备向物联网平台请求下载软件包,按照分片的序号进行下载。
设备发送的请求消息
根据PCP消息结构的定义可以得出,设备向物联网平台发送的请求软件包分片的第一条消息,各消息字段的填写如下。
- 起始标识固定为:FFFE。
- 版本号固定为:01。
- 消息码:查询消息码表可知请求升级包的消息码为21,转换为十六进制为:15。
- 校验码:CRC16计算前先用0000替代。
- 数据区长度:根据数据区的字段的数据类型得出数据区长度为18个字节,转换为十六进制为:0012。
- 数据区:目标版本号为平台下发的新版本通知版本号,即v1.0,转换为十六进制为56312E30000000000000000000000000,分片序号为第0个分片,即0000。
字段
数据类型
描述及要求
目的版本号
BYTE[16]
目的版本号,由ASCII字符组成,位数不足时,后补“0X00”。
分片序号
WORD
表示请求获取的分片序号,从0开始计算,分片的总数为软件包大小除以每个分片的大小并向上取整获得。设备可以保存已经收到的分片,下次直接从缺失的分片开始请求,达到断点续传的效果。
设备向物联网平台发送请求软件包分片的第一条消息为:FFFE 01 15 0000 0012 56312E30000000000000000000000000 0000(CRC16校验前),经CRC16计算得到校验码为:5618。则替换校验码后设备发送的第一条请求分片消息为:FFFE01155618001256312E300000000000000000000000000000。
其它分片请求的消息流只需要替换分片序号后,重新计算并替换CRC16校验码即可,此处就不再展开。
物联网平台的应答消息
物联网平台收到设备的请求软件包分片消息后,将会给设备下发分片的数据。物联网平台向设备响应的第一条请求分片的消息,各消息字段的填写如下。
- 起始标识固定为:FFFE。
- 版本号固定为:01。
- 消息码:与请求的消息码一致:15。
- 校验码:CRC16计算前先用0000替代。
- 数据区:先讲数据区再讲数据区长度。结果码:00,分片序号:第0个分片:0000,分片数据:跟软件包定义的内容有关,我们假设软件包内容为HELLO, IoT SOTA!,经ASCII码转换为十六进制为:48454C4C4F2C20496F5420534F544121,共16字节。用户上传软件包时手动输入升级包分片大小为500byte,即最大长度为500字节。这种情况下,无需在数据的后面补充0。
- 数据区长度:根据数据区的字段定义得出该数据长度为19,转换为十六进制为:0013。
字段
数据类型
描述及要求
结果码
BYTE
0X00处理成功。
0X80升级任务不存在。
0X81指定的分片不存在。
分片序号
WORD
表示返回的分片序号。
分片数据
BYTE[n]
分片的内容,n为实际的分片大小。如果结果码不为0,则不带此字段。
物联网平台向设备发送的第一个软件包分片消息为:FFFE 01 15 0000 0013 00 0000 48454C4C4F2C20496F5420534F544121(CRC16校验前),经CRC16计算得到校验码为:E107。则替换校验码后物联网平台向设备发送的第一个软件包分片消息为:FFFE0115E107001300000048454C4C4F2C20496F5420534F544121。
其它软件包分片的消息流只需要替换分片序号和分片数据后,重新计算并替换CRC16校验码即可,此处就不再展开。