package com.sandu.ximon.admin.manager.iot.frame.inner.response;
|
|
import com.sandu.ximon.admin.entity.AtmoHeartBeatDataPackage;
|
import com.sandu.ximon.admin.utils.LogUtils;
|
import lombok.Data;
|
|
/**
|
* 大气查询心跳包响应
|
*/
|
@Data
|
public class AtmoQueryHeartBeatResponse implements MainBoardResponse<AtmoQueryHeartBeatResponse> {
|
|
// 前导码 1
|
private String mqttConnectionType;
|
// 功能码 1
|
private String functionCode;
|
// 负荷长度 2
|
private String payloadLength;
|
// 目标地址 2
|
private String destinationAddress;
|
// 心跳包数据 64
|
private AtmoHeartBeatDataPackage atmoHeartBeatDataPackage;
|
// CRC校验 4
|
private String crc32;
|
// 是否通过CRC校验
|
private boolean isValidate;
|
|
|
@Override
|
public AtmoQueryHeartBeatResponse convertInstance(String hex) {
|
|
// 长度不一致时,返回null
|
if(hex.length() != 84) {
|
LogUtils.error("大气心跳包转换长度错误:"+hex.length()+", frame :" +hex);
|
return null;
|
}
|
this.mqttConnectionType = hex.substring(0, 2);
|
this.functionCode = hex.substring(2, 4);
|
this.payloadLength = hex.substring(4, 8);
|
this.destinationAddress = hex.substring(8, 12);
|
// 64
|
this.atmoHeartBeatDataPackage = new AtmoHeartBeatDataPackage().convertInstance(hex.substring(12, 76));
|
this.crc32 = hex.substring(76, 84);
|
|
// 校验CRC32
|
String frame = hex.substring(0, 76);
|
this.setValidate(CRC32Utils.validateFrame(frame, this.crc32));
|
return this;
|
}
|
}
|