package com.sandu.ximon.admin.manager.iot.frame.inner.report; import com.sandu.common.execption.BusinessException; import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils; import lombok.Data; import lombok.ToString; /** * 服务器下发升级文件信息 * * @author ZZQ * @date 2022/5/6 15:08 */ @Data @ToString(callSuper = true) public class RemoteUpdateFileInfoReportInnerFrame extends BaseResponseInnerFrame { //确认标识 0x00:确实失败 0x01:确认ok private boolean flag; @Override public RemoteUpdateFileInfoReportInnerFrame transformFrame(String hex) { if (hex.length() != 18) { throw new BusinessException("响应帧出错,请重新发送指令!"); } //FE B1 0001 01 EA96F734 // MQTT通信方式(1) setConnectType(hex.substring(0, 2)); // 功能码(1) setFunctionCode(hex.substring(2, 4)); // 负荷长度(2) setPayloadLength(hex.substring(4, 8)); //确认标识 if ("01".equals(hex.substring(8, 10))) { setFlag(true); } else { setFlag(false); } setCrc32(hex.substring(hex.length() - 8)); // 校验CRC32 String frame = hex.substring(2, hex.length() - 8); this.setValidate(CRC32Utils.validateFrame(frame, getCrc32())); return this; } }