浏览代码

Make pal state objects serializable

Baglio Tabifata 4 年之前
父节点
当前提交
242ee6ec83

+ 10 - 4
src/net/hkzlab/dupal/boardio/DuPALAnalyzer.java

@@ -102,11 +102,17 @@ public class DuPALAnalyzer {
         //logger.info("Output states at start: " + String.format("%02X", (pins & IOasOUT_Mask)));
 
         mstate_idx = routstate >> pspecs.getROUT_READMaskShift();
-        MacroState ms = new MacroState(buildTag(mstate_idx), mstate_idx, pspecs.getNumROUTPins(), pspecs.getNumINPins());
+        MacroState ms = null;
         MacroState nms = null;
-
-        mStates[mstate_idx] = ms; // Save it in our Array
-        logger.info("Added MacroState [" + ms + "] at index " + mstate_idx);
+        
+        if(mStates[mstate_idx] == null) {
+            ms = new MacroState(buildTag(mstate_idx), mstate_idx, pspecs.getNumROUTPins(), pspecs.getNumINPins());
+            mStates[mstate_idx] = ms;
+            logger.info("Added MacroState [" + ms + "] at index " + mstate_idx);
+        } else {
+            ms = mStates[mstate_idx];
+            logger.info("Recovered MacroState ["+ms+"] from index " + mstate_idx);
+        }
 
         while(true) {
             if(ms == null) {

+ 4 - 1
src/net/hkzlab/palanalisys/MacroState.java

@@ -1,8 +1,11 @@
 package net.hkzlab.palanalisys;
 
+import java.io.Serializable;
 import java.util.HashMap;
 
-public class MacroState {
+public class MacroState implements Serializable { 
+    private static final long serialVersionUID = 1L;
+
     public static final String MS_PRE_TAG = "MS_";
 
     public boolean ss_ready = false;

+ 4 - 1
src/net/hkzlab/palanalisys/StateLink.java

@@ -1,8 +1,11 @@
 package net.hkzlab.palanalisys;
 
+import java.io.Serializable;
 import java.util.Arrays;
 
-public class StateLink {
+public class StateLink implements Serializable {
+    private static final long serialVersionUID = 1L;
+
     public static final String SL_PRE_TAG = "SL_";
 
     public final String tag;

+ 4 - 1
src/net/hkzlab/palanalisys/SubState.java

@@ -1,8 +1,11 @@
 package net.hkzlab.palanalisys;
 
+import java.io.Serializable;
 import java.util.Arrays;
 
-public class SubState {
+public class SubState implements Serializable {
+    private static final long serialVersionUID = 1L;
+
     public static final String SS_PRE_TAG = "SS_";
 
     public final String tag;