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.C3ChargingEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum; import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils; import java.text.DecimalFormat; /** * @author ZZQ * @date 2022/3/3 16:43 */ public class C3SetHeartbeatPacketTimeReqInnerFrame implements IRequestInnerFrame { private final String payload; //用于判断是设置 充电时 心跳包间隔时间或者设置 非充电时 心跳包间隔时间 private boolean flag; public C3SetHeartbeatPacketTimeReqInnerFrame(String c3Mac, int time, boolean flag) { String data = Integer.toHexString(time); switch (data.length()) { case 1: data = "000" + data; break; case 2: data = "00" + data; break; case 3: data = "0" + data; break; default: } payload = c3Mac + data; this.flag = flag; } @Override public String getEncodeFrame() { String functionCode; if (flag) { //充电时 functionCode = C3ChargingEnum.SetHeartbeatPacketTimeCharging.getCode(); } else { //非充电时 functionCode = C3ChargingEnum.SetHeartbeatPacketTimeNotCharging.getCode(); } String payloadLength = "0006"; String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } }