设备接入 IOTDA-设备侧适配开发指导:下载新版本软件包通知

时间:2024-07-30 11:30:47

下载新版本软件包通知

根据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。

support.huaweicloud.com/devg-iothub/iot_01_0047_2.html