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());
|
}
|
}
|