package com.sandu.ximon.admin.entity;
|
|
import com.sandu.ximon.admin.entity.main.FunctionCode;
|
import com.sandu.ximon.admin.entity.main.InnerFrame;
|
import com.sandu.ximon.admin.entity.main.MainFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils;
|
import com.sandu.ximon.admin.utils.HexStrConvertUtil;
|
|
/**
|
* 数据传输接口命令(外设数据)(功能码A5)
|
*/
|
public class DataTransportMainFrame implements MainFrame {
|
|
private MQTTConnectType mqttConnectType;
|
// 功能码(1)
|
private FunctionCode functionCode;
|
// 命令类型(1)
|
private DataTransportOrderType orderType;
|
// 负荷长度(2)
|
private String payloadLength;
|
// 负荷数据(hex)
|
private InnerFrame payload;
|
|
|
DataTransportMainFrame(DataTransportOrderType orderType, InnerFrame payload){
|
this.mqttConnectType = MQTTConnectType.SYNCHRONIZATION;
|
this.functionCode = FunctionCode.DataTransportData;
|
this.orderType = orderType;
|
this.payloadLength = SupplementUtils.suppleZero(HexStrConvertUtil.tenToHex((payload.getCommand().length()/2)),4);
|
this.payload = payload;
|
}
|
|
/**
|
* 生成实体
|
* @param orderType 数据传输命令类型
|
* @param payload 负荷数据
|
* @return
|
*/
|
public static DataTransportMainFrame generateInstance(DataTransportOrderType orderType,InnerFrame payload) {
|
return new DataTransportMainFrame(orderType, payload);
|
}
|
|
|
@Override
|
public String getFrame() {
|
String frame = this.functionCode.getCode() + this.orderType.getCode() + this.payloadLength + this.payload.getCommand();
|
return this.mqttConnectType.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
|
}
|
}
|