diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java index 9b794be..dcb4bf4 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java @@ -1,8 +1,9 @@ package com.my.graphiteDigesterBg.diframe; import java.nio.ByteBuffer; import java.util.Timer; - public class DiCommandRequest { + // id counter + private static int idCounter = 0; // message id public short id; // parameter @@ -19,4 +20,17 @@ public class DiCommandRequest { public Integer timeoutCount = 0; // timeout timer public Timer timeoutTimer = null; + + // constructor + public DiCommandRequest() { + this.refreshId(); + } + + // refresh id + public void refreshId() { + this.id = (short)idCounter++; + if ( idCounter > 30000 ) { + idCounter = 0; + } + } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java index 2392a7f..f339e3d 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java @@ -35,15 +35,11 @@ public class DiDevice { private DiTaskManager taskManager; // runtime variables private DiDeviceRuntimeVariableManager runtimeVariables; - // message index - private short messageIndex = 0; // testcase manager private DiTestcaseManager testcaseManager; @PostConstruct public void init() { - this.messageIndex = 0; - this.loadDeviceYml(); this.setupConnection(); this.io = new DiDeviceIOManager(this); @@ -227,10 +223,9 @@ public class DiDevice { int moduleId = mid; DiCommandRequest request = new DiCommandRequest(); - request.id = this.messageIndex; request.parameter = ByteBuffer.allocate(length); request.parameter.order(ByteOrder.LITTLE_ENDIAN); - request.parameter.putShort(this.messageIndex); + request.parameter.putShort(request.id); // packet index request.parameter.putShort((short)mainCmdId); // main cmd id request.parameter.put((byte)subCmdId); // sub cmd id request.parameter.put((byte)0); // directive type @@ -241,11 +236,6 @@ public class DiDevice { } } - this.messageIndex ++; - if ( this.messageIndex > 30000 ) { - this.messageIndex = 0; - } - return request; }