diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java new file mode 100644 index 0000000..534fd0d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class PCITag extends BirmmBaseTag { + + final String PCI_TAG_OID = "60000511"; + + // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 + int pci; + + @Override + public String toString() { + return super.toString() + "[value: " + pci + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + pci = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java new file mode 100644 index 0000000..534fd0d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class PCITag extends BirmmBaseTag { + + final String PCI_TAG_OID = "60000511"; + + // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 + int pci; + + @Override + public String toString() { + return super.toString() + "[value: " + pci + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + pci = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java new file mode 100644 index 0000000..4e1dc0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RSRPTag extends BirmmBaseTag { + + final String RSRP_TAG_OID = "60000513"; + + //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 + int rsrp; + + @Override + public String toString() { + return super.toString() + "[value: " + rsrp + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + rsrp = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java new file mode 100644 index 0000000..534fd0d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class PCITag extends BirmmBaseTag { + + final String PCI_TAG_OID = "60000511"; + + // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 + int pci; + + @Override + public String toString() { + return super.toString() + "[value: " + pci + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + pci = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java new file mode 100644 index 0000000..4e1dc0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RSRPTag extends BirmmBaseTag { + + final String RSRP_TAG_OID = "60000513"; + + //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 + int rsrp; + + @Override + public String toString() { + return super.toString() + "[value: " + rsrp + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + rsrp = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java new file mode 100644 index 0000000..5ce0c0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SNRTag extends BirmmBaseTag { + + final String SNR_TAG_OID = "60000516"; + + //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 + int snr; + + @Override + public String toString() { + return super.toString() + "[value: " + snr + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + snr = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java new file mode 100644 index 0000000..534fd0d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class PCITag extends BirmmBaseTag { + + final String PCI_TAG_OID = "60000511"; + + // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 + int pci; + + @Override + public String toString() { + return super.toString() + "[value: " + pci + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + pci = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java new file mode 100644 index 0000000..4e1dc0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RSRPTag extends BirmmBaseTag { + + final String RSRP_TAG_OID = "60000513"; + + //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 + int rsrp; + + @Override + public String toString() { + return super.toString() + "[value: " + rsrp + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + rsrp = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java new file mode 100644 index 0000000..5ce0c0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SNRTag extends BirmmBaseTag { + + final String SNR_TAG_OID = "60000516"; + + //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 + int snr; + + @Override + public String toString() { + return super.toString() + "[value: " + snr + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + snr = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java index d8593c5..006c51d 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java @@ -26,6 +26,10 @@ @Resource BirmmProtocolParser protocol; + byte[] keyByte = { + 0x24, (byte) 0xad, 0x18, 0x25, 0x07, 0x47, (byte) 0x9a, 0x5d, (byte) 0xa3, (byte) 0xad, (byte) 0x94, (byte) 0xd9, (byte) 0xd7, (byte) 0x8e, (byte) 0xa2, 0x03 + }; + @Override public BirmmBaseFrame doFrameParse(byte[] frame) { boolean frameValid = protocol.preCheckFrame(frame); @@ -54,11 +58,13 @@ // 加密后的业务字段 String tagListStr = protocol.getTagListString(frame); - log.info("上行帧结构字段解析结果:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, devCode, commType, destAddr, pduType, seq); + log.debug("上行帧结构字段解析结果:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, devCode, commType, destAddr, pduType, seq); // 解密 + // TODO-LIST + // 密钥根据设备编号获取 SafeStrategy safeStrategy = SpringContextUtil.getBean(Sm4.class); - byte[] plainBytes = safeStrategy.decryption(tagListStr); + byte[] plainBytes = safeStrategy.decryption(tagListStr, keyByte); String plainTagListStr = HexUtils.toHexString(plainBytes).toUpperCase(); log.info("上行业务字段:{}", plainTagListStr); @@ -127,7 +133,7 @@ // 两个字节的长度 frame.append(String.format("%04x", length)); - log.info("下行帧结构字段:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", + log.debug("下行帧结构字段:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, configFrame.getDevCode(), configFrame.getCommunicationType(), configFrame.getDestinationAddr(), configFrame.getPduType(), configFrame.getSequence()); @@ -139,9 +145,8 @@ frame.append(configFrame.getSequence()); // 加密 - byte[] keyByte = { - 0x24, (byte) 0xad, 0x18, 0x25, 0x07, 0x47, (byte) 0x9a, 0x5d, (byte) 0xa3, (byte) 0xad, (byte) 0x94, (byte) 0xd9, (byte) 0xd7, (byte) 0x8e, (byte) 0xa2, 0x03 - }; + // TODO-LIST + // 密钥根据设备编号获取 SafeStrategy safeStrategy = SpringContextUtil.getBean(Sm4.class); byte[] tagBytes = safeStrategy.encryption(plainTagListStr, keyByte); frame.append(HexUtils.toHexString(tagBytes).toUpperCase()); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java new file mode 100644 index 0000000..534fd0d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class PCITag extends BirmmBaseTag { + + final String PCI_TAG_OID = "60000511"; + + // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 + int pci; + + @Override + public String toString() { + return super.toString() + "[value: " + pci + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + pci = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java new file mode 100644 index 0000000..4e1dc0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RSRPTag extends BirmmBaseTag { + + final String RSRP_TAG_OID = "60000513"; + + //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 + int rsrp; + + @Override + public String toString() { + return super.toString() + "[value: " + rsrp + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + rsrp = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java new file mode 100644 index 0000000..5ce0c0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SNRTag extends BirmmBaseTag { + + final String SNR_TAG_OID = "60000516"; + + //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 + int snr; + + @Override + public String toString() { + return super.toString() + "[value: " + snr + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + snr = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java index d8593c5..006c51d 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java @@ -26,6 +26,10 @@ @Resource BirmmProtocolParser protocol; + byte[] keyByte = { + 0x24, (byte) 0xad, 0x18, 0x25, 0x07, 0x47, (byte) 0x9a, 0x5d, (byte) 0xa3, (byte) 0xad, (byte) 0x94, (byte) 0xd9, (byte) 0xd7, (byte) 0x8e, (byte) 0xa2, 0x03 + }; + @Override public BirmmBaseFrame doFrameParse(byte[] frame) { boolean frameValid = protocol.preCheckFrame(frame); @@ -54,11 +58,13 @@ // 加密后的业务字段 String tagListStr = protocol.getTagListString(frame); - log.info("上行帧结构字段解析结果:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, devCode, commType, destAddr, pduType, seq); + log.debug("上行帧结构字段解析结果:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, devCode, commType, destAddr, pduType, seq); // 解密 + // TODO-LIST + // 密钥根据设备编号获取 SafeStrategy safeStrategy = SpringContextUtil.getBean(Sm4.class); - byte[] plainBytes = safeStrategy.decryption(tagListStr); + byte[] plainBytes = safeStrategy.decryption(tagListStr, keyByte); String plainTagListStr = HexUtils.toHexString(plainBytes).toUpperCase(); log.info("上行业务字段:{}", plainTagListStr); @@ -127,7 +133,7 @@ // 两个字节的长度 frame.append(String.format("%04x", length)); - log.info("下行帧结构字段:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", + log.debug("下行帧结构字段:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, configFrame.getDevCode(), configFrame.getCommunicationType(), configFrame.getDestinationAddr(), configFrame.getPduType(), configFrame.getSequence()); @@ -139,9 +145,8 @@ frame.append(configFrame.getSequence()); // 加密 - byte[] keyByte = { - 0x24, (byte) 0xad, 0x18, 0x25, 0x07, 0x47, (byte) 0x9a, 0x5d, (byte) 0xa3, (byte) 0xad, (byte) 0x94, (byte) 0xd9, (byte) 0xd7, (byte) 0x8e, (byte) 0xa2, 0x03 - }; + // TODO-LIST + // 密钥根据设备编号获取 SafeStrategy safeStrategy = SpringContextUtil.getBean(Sm4.class); byte[] tagBytes = safeStrategy.encryption(plainTagListStr, keyByte); frame.append(HexUtils.toHexString(tagBytes).toUpperCase()); diff --git a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java new file mode 100644 index 0000000..6f4d091 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java @@ -0,0 +1,40 @@ +package com.casic.missiles.enums; + +import lombok.Getter; + +import java.util.stream.Stream; + +/** + * 数据的业务类型枚举 + */ +@Getter +public enum BirmmDataBizTypeEnums { +// RETRY_TIMES_TAG("1000000A", 1), +// DESTINATION_IP_TAG("10000022", 2), + TYPE_LIQUID_LEVEL("level", 3), +// DATE_TAG("10000050", 4), + TYPE_GAS_CONCENTRATION("gas", 5), +// UPLOAD_INTERVAL_TAG("10000062", 6), +// START_TIME_TAG("10000104", 7), + TYPE_TEMPERATURE("temperature", 8); + + + /** + * 名称 + */ + private final String name; + + /** + * 业务类型 + */ + private final int value; + + BirmmDataBizTypeEnums(String name, int value) { + this.name = name; + this.value = value; + } + + public static BirmmDataBizTypeEnums toType(int bizType) { + return Stream.of(BirmmDataBizTypeEnums.values()).filter(p -> p.value == bizType).findAny().orElse(null); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java index b9c1e6b..32dfdf3 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java @@ -58,6 +58,7 @@ byte[] frameBytes = getFrameStringFromData(dataMap); log.info("上行HEX字节消息帧:{}", HexUtils.toHexString(frameBytes).toUpperCase()); + // 工厂类创建frame对象 BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes); if (birmmFrame != null) { // 处理业务数据 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java index faeee95..f934d86 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java @@ -1,7 +1,7 @@ package com.casic.missiles.frame; import com.alibaba.fastjson.JSONObject; -import com.casic.missiles.frame.commanTag.DateTimeTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; import lombok.Data; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java index 1d7763e..e74f229 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmTagBuilderFactory.java @@ -1,7 +1,15 @@ package com.casic.missiles.frame; import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.config.*; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; public class BirmmTagBuilderFactory { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java deleted file mode 100644 index 1448b5e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CellTag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CellTag extends BirmmBaseTag { - - final String CELL_TAG_OID = "60000020"; - - int cellVal; - - @Override - public String toString() { - return super.toString() + "[value: " + cellVal + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - cellVal = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java deleted file mode 100644 index 11fc951..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectCountTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectCountTag extends BirmmBaseTag { - - final String COLLECT_COUNT_TAG_OID = "10000106"; - - // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 - int count; - - @Override - public String toString() { - return super.toString() + "[value: " + count + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - count = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java deleted file mode 100644 index dba7778..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/CollectIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class CollectIntervalTag extends BirmmBaseTag { - - final String COLLECT_INTERVAL_TAG_OID = "10000105"; - - // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java deleted file mode 100644 index 1e5d1c6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTag.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTag extends BirmmBaseTag { - - final String DATE_TAG_OID = "10000050"; - - LocalDate date; - - @Override - public String toString() { - return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java deleted file mode 100644 index d460142..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DateTimeTag.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.enums.BirmmTagTypeEnums; -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DateTimeTag extends BirmmBaseTag { - - final String DATETIME_TAG_OID = "10000051"; - - LocalDateTime dateTime; - - @Override - public String toString() { - return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; - } - - @Override - public String toProtocolString() { - String result = ""; - result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID - result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 - - int year = dateTime.getYear() - 2000; - int month = dateTime.getMonthValue(); - int day = dateTime.getDayOfMonth(); - int hour = dateTime.getHour(); - int minute = dateTime.getMinute(); - int second = dateTime.getSecond(); - - result += String.format("%02x", year); - result += String.format("%02x", month); - result += String.format("%02x", day); - result += String.format("%02x", hour); - result += String.format("%02x", minute); - result += String.format("%02x", second); - - return result; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - String hexY = valueStr.substring(0, 2); - String hexM = valueStr.substring(2, 4); - String hexD = valueStr.substring(4, 6); - - String hexH = valueStr.substring(6, 8); - String hexMin = valueStr.substring(8, 10); - String hexS = valueStr.substring(10, 12); - - dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), - BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java deleted file mode 100644 index 4e8297a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestIPTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestIPTag extends BirmmBaseTag { - - final String DESTINATION_IP_TAG_OID = "10000022"; - - String ip; - - @Override - public String toString() { - return super.toString() + "[value: " + ip + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - ip = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java deleted file mode 100644 index 90e001e..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/DestPortTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class DestPortTag extends BirmmBaseTag { - - final String DESTINATION_PORT_TAG_OID = "10000023"; - - String port; - - @Override - public String toString() { - return super.toString() + "[value: " + port + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - port = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java deleted file mode 100644 index 0c707b0..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/LowerLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class LowerLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000900"; - - // 单精度浮点数 - float lowerLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + lowerLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java deleted file mode 100644 index 7fc806a..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/PCITag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class PCITag extends BirmmBaseTag { - - final String PCI_TAG_OID = "60000511"; - - // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 - int pci; - - @Override - public String toString() { - return super.toString() + "[value: " + pci + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - pci = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java deleted file mode 100644 index 7513c21..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RSRPTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RSRPTag extends BirmmBaseTag { - - final String RSRP_TAG_OID = "60000513"; - - //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 - int rsrp; - - @Override - public String toString() { - return super.toString() + "[value: " + rsrp + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - rsrp = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java deleted file mode 100644 index 67631b6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/RetryTimesTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class RetryTimesTag extends BirmmBaseTag { - - final String RETRY_TIMES_TAG_OID = "1000000A"; - - // TYPE_U8整型,重传次数 1-10 - int times; - - @Override - public String toString() { - return super.toString() + "[value: " + times + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - times = Integer.parseInt(valueStr, 16); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java deleted file mode 100644 index c3ce539..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SNRTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SNRTag extends BirmmBaseTag { - - final String SNR_TAG_OID = "60000516"; - - //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 - int snr; - - @Override - public String toString() { - return super.toString() + "[value: " + snr + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - snr = BytesUtil.hexStringToSInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java deleted file mode 100644 index 304d7e8..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SensorStateTag.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; - -public class SensorStateTag extends BirmmBaseTag { - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java deleted file mode 100644 index f930e42..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/SoftwareVersionTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SoftwareVersionTag extends BirmmBaseTag { - - final String SOFTWARE_VERSION_TAG_OID = "60000500"; - - String version; - - @Override - public String toString() { - return super.toString() + "[value: " + version + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - version = new String(BytesUtil.hexStringToBytes(valueStr)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java deleted file mode 100644 index c899694..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/StartTimeTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StartTimeTag extends BirmmBaseTag { - - final String START_TIME_TAG_OID = "10000104"; - - // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 - int startMinute; - - @Override - public String toString() { - return super.toString() + "[value: " + startMinute + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - startMinute = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java deleted file mode 100644 index c7555a6..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadIntervalTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadIntervalTag extends BirmmBaseTag { - - final String UPLOAD_INTERVAL_TAG_OID = "10000062"; - - // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 - int interval; - - @Override - public String toString() { - return super.toString() + "[value: " + interval + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - interval = BytesUtil.hexStringToUInt(valueStr); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java deleted file mode 100644 index da4073b..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UploadTag.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UploadTag extends BirmmBaseTag { - - private int bizType; - private int interval; - private int startMin; - private LocalDateTime startTime; - - @Override - public String toString() { - return super.toString(); - } - - public void checkOid() { - long oidValue = Long.parseLong(getOid(), 16); - bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); - interval = (int) ((oidValue >> 11) & 0x7FF); - startMin = (int) (oidValue & 0x7FF); - - int hour = startMin / 60; - int minute = startMin % 60; - - startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); - } - - public void setStartDate(String dateStr) { - LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - setStartDate(date); - } - - public void setStartDate(LocalDate date) { - startTime = startTime.withYear(date.getYear()); - startTime = startTime.withMonth(date.getMonthValue()); - startTime = startTime.withDayOfMonth(date.getDayOfMonth()); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java deleted file mode 100644 index 4e96926..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/commanTag/UpperLimitTag.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.casic.missiles.frame.commanTag; - -import com.casic.missiles.frame.BirmmBaseTag; -import com.casic.missiles.util.BytesUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class UpperLimitTag extends BirmmBaseTag { - - final String UPPER_LIMIT_TAG_OID = "10000901"; - - // 单精度浮点数 - float upperLimit; - - @Override - public String toString() { - return super.toString() + "[value: " + upperLimit + "]"; - } - - @Override - public void setValueStr(String valueStr) { - super.setValueStr(valueStr); - upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); - } -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java index e6de7b7..8456016 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java @@ -1,6 +1,7 @@ package com.casic.missiles.frame.methane; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmDataBizTypeEnums; import lombok.Data; import java.time.LocalDateTime; @@ -15,12 +16,12 @@ @Override public String toString() { - return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]"; + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; } public JSONObject toJSON() { JSONObject json = new JSONObject(); - json.put("gas", String.format("%.3f", value)); + json.put(BirmmDataBizTypeEnums.toType(bizType).getName(), String.format("%.3f", value)); json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); return json; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java index ede070a..71023ee 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneFrameBuilderFactory.java @@ -34,6 +34,10 @@ // TRAP_REQUEST消息回复TRAP_RESPONSE return new MethaneTrapResponseFrame(); + case UP_ONLINE_REQUEST: + // ONLINE_REQUEST消息回复ONLINE_RESPONSE + return new MethaneOnlineResponseFrame(); + default: return null; } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java index f540980..37b7fc8 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineRequestFrame.java @@ -1,6 +1,33 @@ package com.casic.missiles.frame.methane; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.tag.ota.SoftwareVersionTag; + +import java.time.format.DateTimeFormatter; public class MethaneOnlineRequestFrame extends BirmmBaseFrame { + + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "OnlineRequest"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + if (getTagList().containsKey(SoftwareVersionTag.class.getSimpleName())) { + SoftwareVersionTag tag = (SoftwareVersionTag) getTagList().get(SoftwareVersionTag.class.getSimpleName()); + body.put("softwareVersion", tag.getVersion()); + } + + json.put("mBody", body); + + return json; + } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java new file mode 100644 index 0000000..cd62d6d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneOnlineResponseFrame.java @@ -0,0 +1,38 @@ +package com.casic.missiles.frame.methane; + +import com.casic.missiles.enums.BirmmOperationTypeEnums; +import com.casic.missiles.frame.BirmmBaseFrame; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.frame.tag.config.DateTimeTag; +import com.casic.missiles.frame.tag.ota.OTANeedTag; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class MethaneOnlineResponseFrame extends BirmmBaseFrame { + + @Override + public void replyPduType() { + StringBuilder pduType; + + int pduValue = Integer.parseInt(BirmmOperationTypeEnums.DOWN_ONLINE_RESPONSE.getValue()) * 256 + 128 + Integer.parseInt(getDeviceType(), 16); + pduType = new StringBuilder(Integer.toHexString(pduValue)); + while (pduType.length() != 4) { + pduType.insert(0, "0"); + } + + this.setPduType(pduType.toString()); + } + + @Override + public void replyBizTag() { + // TODO-LIST + // 暂时回复不用升级 + Map tagList = new HashMap<>(); + OTANeedTag needTag = new OTANeedTag(); + needTag.setNeed(false); + tagList.put(OTANeedTag.class.getSimpleName(), needTag); + super.setTagList(tagList); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java index cc5fa90..690b9c5 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java @@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.BirmmBaseFrame; -import com.casic.missiles.frame.commanTag.*; +import com.casic.missiles.frame.tag.biz.CellTag; +import com.casic.missiles.frame.tag.biz.DateTag; +import com.casic.missiles.frame.tag.biz.SensorStateTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.frame.tag.signal.PCITag; +import com.casic.missiles.frame.tag.signal.RSRPTag; +import com.casic.missiles.frame.tag.signal.SNRTag; import com.casic.missiles.model.DeviceBizData; import com.casic.missiles.util.BytesUtil; import lombok.extern.slf4j.Slf4j; @@ -19,19 +25,18 @@ private List bizDataList; - @Override - public String toString() { - return ""; - } + private final String DEV_TYPE = "Methane"; + private final String MESSAGE_TYPE = "Data"; + private final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); - json.put("devType", "Methane"); - json.put("mType", "Data"); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); JSONObject body = new JSONObject(); - body.put("bType", "MethaneData"); + body.put("bType", BIZ_TYPE); body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); if (getTagList().containsKey(CellTag.class.getSimpleName())) { CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName()); @@ -119,27 +124,30 @@ private void handleUploadTag() { UploadTag uploadTag = (UploadTag) getTagList().get(UploadTag.class.getSimpleName()); - uploadTag.checkOid(); - // 找到DateTag 取出其中的日期 - DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); - uploadTag.setStartDate(dateTag.getDate()); + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + // 找到DateTag 取出其中的日期 + DateTag dateTag = (DateTag) getTagList().get(DateTag.class.getSimpleName()); + uploadTag.setStartDate(dateTag.getDate()); - int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 - LocalDateTime start = uploadTag.getStartTime(); - bizDataList = new ArrayList<>(); - for (int i = 0; i < count; i++) { - MethaneBizData bizData = new MethaneBizData(); + int count = uploadTag.getValueStr().length() / (4 * 2); // 4个字节一个数据 单精度浮点数 + LocalDateTime start = uploadTag.getStartTime(); + bizDataList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + MethaneBizData bizData = new MethaneBizData(); - bizData.setBizType(uploadTag.getBizType()); - bizData.setUptime(start); - String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); - bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(start); + String hexReversStr = BytesUtil.reverseHexString(uploadTag.getValueStr().substring(i * 4 * 2, (i + 1) * 4 * 2)); + bizData.setValue(BytesUtil.hexStringToFloat(hexReversStr)); // 转成浮点数 - bizDataList.add(bizData); + bizDataList.add(bizData); - // 加上时间间隔 - start = start.plusMinutes(uploadTag.getInterval()); + // 加上时间间隔 + start = start.plusMinutes(uploadTag.getInterval()); + } } } @@ -149,5 +157,13 @@ // 甲烷传感器状态 log.info("甲烷传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); } + + if (sensorStateTag.getOid().equals(BirmmTagTypeEnums.SENSOR_STATE_2_TAG.getName())) { + // 甲烷传感器状态 + log.info("静压传感器状态:{}", sensorStateTag.getValueStr().equals("00") ? "正常" : "异常"); + } + + // TODO-LIST + // 传感器状态异常时需要上报异常事件 } } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java new file mode 100644 index 0000000..55bc40d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/CellTag.java @@ -0,0 +1,25 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CellTag extends BirmmBaseTag { + + final String CELL_TAG_OID = "60000020"; + + int cellVal; + + @Override + public String toString() { + return super.toString() + "[value: " + cellVal + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + cellVal = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java new file mode 100644 index 0000000..8a40e1c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/DateTag.java @@ -0,0 +1,33 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTag extends BirmmBaseTag { + + final String DATE_TAG_OID = "10000050"; + + LocalDate date; + + @Override + public String toString() { + return super.toString() + "[value: " + date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + date = LocalDate.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java new file mode 100644 index 0000000..fcf3063 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/SensorStateTag.java @@ -0,0 +1,7 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.frame.BirmmBaseTag; + +public class SensorStateTag extends BirmmBaseTag { + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java new file mode 100644 index 0000000..bd30a2b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/biz/UploadTag.java @@ -0,0 +1,56 @@ +package com.casic.missiles.frame.tag.biz; + +import com.casic.missiles.enums.BirmmDataBizTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadTag extends BirmmBaseTag { + + private int bizType; + private int interval; + private int startMin; + private LocalDateTime startTime; + + @Override + public String toString() { + return super.toString(); + } + + public boolean checkOid() { + long oidValue = Long.parseLong(getOid(), 16); + + // 数据类型不在范围内则返回false + bizType = (int) (((oidValue >> 24) & 0x0F) | ((oidValue >> 18) & 0x30)); + if(BirmmDataBizTypeEnums.toType(bizType) == null) { + return false; + } + interval = (int) ((oidValue >> 11) & 0x7FF); + startMin = (int) (oidValue & 0x7FF); + + int hour = startMin / 60; + int minute = startMin % 60; + + startTime = LocalDateTime.of(2000, 1, 1, hour, minute, 0); + + return true; + } + + public void setStartDate(String dateStr) { + LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + setStartDate(date); + } + + public void setStartDate(LocalDate date) { + startTime = startTime.withYear(date.getYear()); + startTime = startTime.withMonth(date.getMonthValue()); + startTime = startTime.withDayOfMonth(date.getDayOfMonth()); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java new file mode 100644 index 0000000..017f4df --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectCountTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectCountTag extends BirmmBaseTag { + + final String COLLECT_COUNT_TAG_OID = "10000106"; + + // TYPE_U16整型,数据上报的采集次数,范围: 1 – 1440 + int count; + + @Override + public String toString() { + return super.toString() + "[value: " + count + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + count = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java new file mode 100644 index 0000000..63965bb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/CollectIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CollectIntervalTag extends BirmmBaseTag { + + final String COLLECT_INTERVAL_TAG_OID = "10000105"; + + // TYPE_U16整型,数据采集间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java new file mode 100644 index 0000000..a5e1cdb --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DateTimeTag.java @@ -0,0 +1,62 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DateTimeTag extends BirmmBaseTag { + + final String DATETIME_TAG_OID = "10000051"; + + LocalDateTime dateTime; + + @Override + public String toString() { + return super.toString() + "[value: " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DATETIME_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.DATETIME_TAG.getLength()); // 长度 + + int year = dateTime.getYear() - 2000; + int month = dateTime.getMonthValue(); + int day = dateTime.getDayOfMonth(); + int hour = dateTime.getHour(); + int minute = dateTime.getMinute(); + int second = dateTime.getSecond(); + + result += String.format("%02x", year); + result += String.format("%02x", month); + result += String.format("%02x", day); + result += String.format("%02x", hour); + result += String.format("%02x", minute); + result += String.format("%02x", second); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + String hexY = valueStr.substring(0, 2); + String hexM = valueStr.substring(2, 4); + String hexD = valueStr.substring(4, 6); + + String hexH = valueStr.substring(6, 8); + String hexMin = valueStr.substring(8, 10); + String hexS = valueStr.substring(10, 12); + + dateTime = LocalDateTime.of(BytesUtil.hexStringToUInt(hexY) + 2000, BytesUtil.hexStringToUInt(hexM), BytesUtil.hexStringToUInt(hexD), + BytesUtil.hexStringToUInt(hexH), BytesUtil.hexStringToUInt(hexMin), BytesUtil.hexStringToUInt(hexS)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java new file mode 100644 index 0000000..b168d5c --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestIPTag extends BirmmBaseTag { + + final String DESTINATION_IP_TAG_OID = "10000022"; + + String ip; + + @Override + public String toString() { + return super.toString() + "[value: " + ip + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + ip = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java new file mode 100644 index 0000000..8f5ce2f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DestPortTag extends BirmmBaseTag { + + final String DESTINATION_PORT_TAG_OID = "10000023"; + + String port; + + @Override + public String toString() { + return super.toString() + "[value: " + port + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + port = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java new file mode 100644 index 0000000..63cd9e8 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/LowerLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LowerLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000900"; + + // 单精度浮点数 + float lowerLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + lowerLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + lowerLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java new file mode 100644 index 0000000..68c36af --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/RetryTimesTag.java @@ -0,0 +1,29 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.format.DateTimeFormatter; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RetryTimesTag extends BirmmBaseTag { + + final String RETRY_TIMES_TAG_OID = "1000000A"; + + // TYPE_U8整型,重传次数 1-10 + int times; + + @Override + public String toString() { + return super.toString() + "[value: " + times + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + times = Integer.parseInt(valueStr, 16); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java new file mode 100644 index 0000000..879e1d1 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/StartTimeTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StartTimeTag extends BirmmBaseTag { + + final String START_TIME_TAG_OID = "10000104"; + + // TYPE_U16整型,数据采集开始分钟,范围: 0 – 1440 + int startMinute; + + @Override + public String toString() { + return super.toString() + "[value: " + startMinute + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + startMinute = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java new file mode 100644 index 0000000..ed3c20a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UploadIntervalTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UploadIntervalTag extends BirmmBaseTag { + + final String UPLOAD_INTERVAL_TAG_OID = "10000062"; + + // TYPE_U16整型,数据上报间隔,范围: 3 – 1440 + int interval; + + @Override + public String toString() { + return super.toString() + "[value: " + interval + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + interval = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java new file mode 100644 index 0000000..cc9fa81 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/config/UpperLimitTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.config; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpperLimitTag extends BirmmBaseTag { + + final String UPPER_LIMIT_TAG_OID = "10000901"; + + // 单精度浮点数 + float upperLimit; + + @Override + public String toString() { + return super.toString() + "[value: " + upperLimit + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + upperLimit = Float.intBitsToFloat(Integer.parseInt(BytesUtil.reverseHexString(valueStr), 16)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java new file mode 100644 index 0000000..884b44f --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/OTANeedTag.java @@ -0,0 +1,36 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.enums.BirmmTagTypeEnums; +import com.casic.missiles.frame.BirmmBaseTag; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OTANeedTag extends BirmmBaseTag { + + final String OTA_NEED_TAG_OID = "60000600"; + + boolean need; + + @Override + public String toString() { + return super.toString() + "[value: " + need + "]"; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.OTA_NEED_TAG.getName(); // OID + result += String.format("%04d", BirmmTagTypeEnums.OTA_NEED_TAG.getLength()); // 长度 + result += String.format("%02x", need ? 1 : 0); + + return result; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + need = Boolean.parseBoolean(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java new file mode 100644 index 0000000..e21fa01 --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/ota/SoftwareVersionTag.java @@ -0,0 +1,26 @@ +package com.casic.missiles.frame.tag.ota; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftwareVersionTag extends BirmmBaseTag { + + final String SOFTWARE_VERSION_TAG_OID = "60000500"; + + String version; + + @Override + public String toString() { + return super.toString() + "[value: " + version + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + version = new String(BytesUtil.hexStringToBytes(valueStr)); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java new file mode 100644 index 0000000..534fd0d --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/PCITag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class PCITag extends BirmmBaseTag { + + final String PCI_TAG_OID = "60000511"; + + // TYPE_U16整型,主小区物理小区号PCI,范围: 0 – 503 + int pci; + + @Override + public String toString() { + return super.toString() + "[value: " + pci + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + pci = BytesUtil.hexStringToUInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java new file mode 100644 index 0000000..4e1dc0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/RSRPTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class RSRPTag extends BirmmBaseTag { + + final String RSRP_TAG_OID = "60000513"; + + //带符号整型,主小区RSRP值,单位dBm。仅在RRC-IDLE状态时可用 -140 ~ -40 越大越好 + int rsrp; + + @Override + public String toString() { + return super.toString() + "[value: " + rsrp + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + rsrp = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java new file mode 100644 index 0000000..5ce0c0b --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/tag/signal/SNRTag.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.tag.signal; + +import com.casic.missiles.frame.BirmmBaseTag; +import com.casic.missiles.util.BytesUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SNRTag extends BirmmBaseTag { + + final String SNR_TAG_OID = "60000516"; + + //带符号整型,主小区lart SNR值,单位dB。仅在RRC-IDLE状态时可用 -20 ~ 50 越大越好 + int snr; + + @Override + public String toString() { + return super.toString() + "[value: " + snr + "]"; + } + + @Override + public void setValueStr(String valueStr) { + super.setValueStr(valueStr); + snr = BytesUtil.hexStringToSInt(valueStr); + } +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java index d8593c5..006c51d 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java @@ -26,6 +26,10 @@ @Resource BirmmProtocolParser protocol; + byte[] keyByte = { + 0x24, (byte) 0xad, 0x18, 0x25, 0x07, 0x47, (byte) 0x9a, 0x5d, (byte) 0xa3, (byte) 0xad, (byte) 0x94, (byte) 0xd9, (byte) 0xd7, (byte) 0x8e, (byte) 0xa2, 0x03 + }; + @Override public BirmmBaseFrame doFrameParse(byte[] frame) { boolean frameValid = protocol.preCheckFrame(frame); @@ -54,11 +58,13 @@ // 加密后的业务字段 String tagListStr = protocol.getTagListString(frame); - log.info("上行帧结构字段解析结果:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, devCode, commType, destAddr, pduType, seq); + log.debug("上行帧结构字段解析结果:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, devCode, commType, destAddr, pduType, seq); // 解密 + // TODO-LIST + // 密钥根据设备编号获取 SafeStrategy safeStrategy = SpringContextUtil.getBean(Sm4.class); - byte[] plainBytes = safeStrategy.decryption(tagListStr); + byte[] plainBytes = safeStrategy.decryption(tagListStr, keyByte); String plainTagListStr = HexUtils.toHexString(plainBytes).toUpperCase(); log.info("上行业务字段:{}", plainTagListStr); @@ -127,7 +133,7 @@ // 两个字节的长度 frame.append(String.format("%04x", length)); - log.info("下行帧结构字段:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", + log.debug("下行帧结构字段:[长度:{}],[设备编号:{}],[通信方式:{}],[目标节点地址:{}],[PDUType:{}],[序号:{}]", length, configFrame.getDevCode(), configFrame.getCommunicationType(), configFrame.getDestinationAddr(), configFrame.getPduType(), configFrame.getSequence()); @@ -139,9 +145,8 @@ frame.append(configFrame.getSequence()); // 加密 - byte[] keyByte = { - 0x24, (byte) 0xad, 0x18, 0x25, 0x07, 0x47, (byte) 0x9a, 0x5d, (byte) 0xa3, (byte) 0xad, (byte) 0x94, (byte) 0xd9, (byte) 0xd7, (byte) 0x8e, (byte) 0xa2, 0x03 - }; + // TODO-LIST + // 密钥根据设备编号获取 SafeStrategy safeStrategy = SpringContextUtil.getBean(Sm4.class); byte[] tagBytes = safeStrategy.encryption(plainTagListStr, keyByte); frame.append(HexUtils.toHexString(tagBytes).toUpperCase()); diff --git a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java new file mode 100644 index 0000000..6f4d091 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java @@ -0,0 +1,40 @@ +package com.casic.missiles.enums; + +import lombok.Getter; + +import java.util.stream.Stream; + +/** + * 数据的业务类型枚举 + */ +@Getter +public enum BirmmDataBizTypeEnums { +// RETRY_TIMES_TAG("1000000A", 1), +// DESTINATION_IP_TAG("10000022", 2), + TYPE_LIQUID_LEVEL("level", 3), +// DATE_TAG("10000050", 4), + TYPE_GAS_CONCENTRATION("gas", 5), +// UPLOAD_INTERVAL_TAG("10000062", 6), +// START_TIME_TAG("10000104", 7), + TYPE_TEMPERATURE("temperature", 8); + + + /** + * 名称 + */ + private final String name; + + /** + * 业务类型 + */ + private final int value; + + BirmmDataBizTypeEnums(String name, int value) { + this.name = name; + this.value = value; + } + + public static BirmmDataBizTypeEnums toType(int bizType) { + return Stream.of(BirmmDataBizTypeEnums.values()).filter(p -> p.value == bizType).findAny().orElse(null); + } +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmTagTypeEnums.java b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmTagTypeEnums.java index 195ce6d..911ff57 100644 --- a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmTagTypeEnums.java +++ b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmTagTypeEnums.java @@ -20,6 +20,10 @@ COLLECT_COUNT_TAG("10000106", 2), LOWER_LIMIT_TAG("10000900", 4), UPPER_LIMIT_TAG("10000901", 4), + + OTA_SIZE_TAG("20000100", 4), + OTA_OFFSET_TAG("20000102", 4), + SENSOR_STATE_1_TAG("60000009", 1), SENSOR_STATE_2_TAG("6000000A", 1), SENSOR_STATE_3_TAG("6000000B", 1), @@ -29,7 +33,13 @@ SOFTWARE_VERSION_TAG("60000500", -1), PCI_TAG("60000511", 2), RSRP_TAG("60000513", 2), - SNR_TAG("60000516", 2); + SNR_TAG("60000516", 2), + + OTA_NEED_TAG("60000600", 1), + OTA_PACKAGE_DATA_TAG("60000601", -1), + OTA_PACKAGE_SIZE_TAG("60000602", 4), + OTA_PACKAGE_CRC_TAG("60000603", 2) + ; /**