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;
|
|
/**
|
* @author ZZQ
|
* @date 2022/5/5 11:28
|
*/
|
public class RemoteSendFileReqInnerFrame implements IRequestInnerFrame {
|
|
|
private String payload;
|
|
/**
|
* @param fileTotalSize 升级文件总大小
|
* @param frameTotalSize 总帧数
|
* @param frameSize 单帧数据
|
*/
|
public RemoteSendFileReqInnerFrame(int fileTotalSize, int frameTotalSize, int frameSize, String fileHexStr) {
|
payload = SupplementUtils.suppleZero(Integer.toHexString(fileTotalSize).toUpperCase(), 8)
|
+ SupplementUtils.suppleZero(Integer.toHexString(frameTotalSize).toUpperCase(), 4)
|
+ SupplementUtils.suppleZero(Integer.toHexString(frameSize).toUpperCase(), 4) +
|
CRC32Utils.getCRC32(fileHexStr.toUpperCase());
|
|
}
|
|
@Override
|
public String getEncodeFrame() {
|
String functionCode = RemoteUpdateEnum.UpdateFileInfo.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());
|
}
|
}
|