package com.sandu.ximon.admin.manager.iot.frame.inner.request;
|
|
import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.RemoteUpdateEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils;
|
|
import java.math.BigDecimal;
|
|
/**
|
* 启动远程升级
|
*
|
* @author ZZQ
|
* @date 2022/5/5 10:55
|
*/
|
|
public class RemoteStartUpdateReqInnerFrame implements IRequestInnerFrame {
|
//厂家标志(待定)
|
private String factoryFlag = "0001";
|
|
private String payload;
|
|
/**
|
* @param hardwareVersion 硬件本版
|
* @param softwareVersion 软件版本
|
* @param updateFlag 升级标志
|
*/
|
public RemoteStartUpdateReqInnerFrame(String hardwareVersion, String softwareVersion, String updateFlag) {
|
String[] split = new BigDecimal(hardwareVersion).setScale(2, BigDecimal.ROUND_DOWN).toString().split("\\.");
|
hardwareVersion = SupplementUtils.suppleZero(Integer.toHexString(Integer.valueOf(split[0])).toUpperCase(), 2)
|
+ SupplementUtils.suppleZero(Integer.toHexString(Integer.valueOf(split[1])).toUpperCase(), 2);
|
|
String[] split1 = new BigDecimal(softwareVersion).setScale(2, BigDecimal.ROUND_DOWN).toString().split("\\.");
|
softwareVersion = SupplementUtils.suppleZero(Integer.toHexString(Integer.valueOf(split1[0])).toUpperCase(), 2)
|
+ SupplementUtils.suppleZero(Integer.toHexString(Integer.valueOf(split1[1])).toUpperCase(), 2);
|
|
payload = hardwareVersion + softwareVersion + factoryFlag + updateFlag;
|
}
|
|
@Override
|
public String getEncodeFrame() {
|
String functionCode = RemoteUpdateEnum.StartRemoteUpdate.getCode();
|
//计算长度
|
String payloadLength = SupplementUtils.suppleZero(Integer.toHexString((payload.length() / 2)).toUpperCase(), 4);
|
String frame = functionCode + payloadLength + payload;
|
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
|
}
|
|
|
}
|