From 4982b9614516dde101c3e44c60a612b3bfd8d6fe Mon Sep 17 00:00:00 2001
From: DELL <DELL@WIN-3EOIPEE9ML1>
Date: 星期三, 21 二月 2024 16:26:06 +0800
Subject: [PATCH] 新增IEDScout调试工具功能

---
 iec61850_forFoShanAES_Model/src/org/openmuc/openiec61850/FcModelNode.java |  500 +++++++++++++++++++++++++++---------------------------
 1 files changed, 250 insertions(+), 250 deletions(-)

diff --git a/iec61850_forFoShanAES_Model/src/org/openmuc/openiec61850/FcModelNode.java b/iec61850_forFoShanAES_Model/src/org/openmuc/openiec61850/FcModelNode.java
index b7b81c6..f034d70 100644
--- a/iec61850_forFoShanAES_Model/src/org/openmuc/openiec61850/FcModelNode.java
+++ b/iec61850_forFoShanAES_Model/src/org/openmuc/openiec61850/FcModelNode.java
@@ -1,250 +1,250 @@
-/*
- * Copyright 2011-17 Fraunhofer ISE, energy & meteo Systems GmbH and other contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.openmuc.openiec61850;
-
-import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccess;
-import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccessSelection;
-import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccessSelection.SelectAccess;
-import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccessSelection.SelectAccess.Component;
-import org.openmuc.openiec61850.internal.mms.asn1.BasicIdentifier;
-import org.openmuc.openiec61850.internal.mms.asn1.Identifier;
-import org.openmuc.openiec61850.internal.mms.asn1.ObjectName;
-import org.openmuc.openiec61850.internal.mms.asn1.Unsigned32;
-import org.openmuc.openiec61850.internal.mms.asn1.VariableDefs;
-import org.openmuc.openiec61850.internal.mms.asn1.VariableSpecification;
-
-public abstract class FcModelNode extends ModelNode {
-
-    private VariableDefs.SEQUENCE variableDef = null;
-    Fc fc;
-    private ServerAssociation selected = null;
-    private TimerTask task = null;
-
-    public Fc getFc() {
-        return fc;
-    }
-
-    boolean select(ServerAssociation association, Timer timer) {
-        if (selected != null) {
-            if (selected != association) {
-                return false;
-            }
-        }
-        else {
-            selected = association;
-            association.selects.add(this);
-        }
-
-        ModelNode sboTimeoutNode = association.serverModel.findModelNode(objectReference, Fc.CF).getChild("sboTimeout");
-
-        if (sboTimeoutNode == null) {
-            return true;
-        }
-
-        long sboTimeout = ((BdaInt32U) sboTimeoutNode).getValue();
-
-        if (sboTimeout == 0) {
-            return true;
-        }
-
-        class SelectResetTask extends TimerTask {
-            ServerAssociation association;
-
-            SelectResetTask(ServerAssociation association) {
-                this.association = association;
-            }
-
-            @Override
-            public void run() {
-                synchronized (association.serverModel) {
-                    if (task == this) {
-                        task = null;
-                        deselectAndRemove(association);
-                    }
-                }
-            }
-        }
-
-        if (task != null) {
-            task.cancel();
-        }
-
-        task = new SelectResetTask(association);
-        timer.schedule(task, sboTimeout);
-
-        return true;
-
-    }
-
-    void deselectAndRemove(ServerAssociation association) {
-        selected = null;
-        if (task != null) {
-            task.cancel();
-            task = null;
-        }
-        association.selects.remove(this);
-    }
-
-    void deselect() {
-        selected = null;
-        if (task != null) {
-            task.cancel();
-            task = null;
-        }
-    }
-
-    boolean isSelected() {
-        if (selected == null) {
-            return false;
-        }
-        return true;
-    }
-
-    boolean isSelectedBy(ServerAssociation association) {
-        if (selected == association) {
-            return true;
-        }
-        return false;
-    }
-
-    VariableDefs.SEQUENCE getMmsVariableDef() {
-
-        if (variableDef != null) {
-            return variableDef;
-        }
-
-        AlternateAccess alternateAccess = null;
-
-        StringBuilder preArrayIndexItemId = new StringBuilder(objectReference.get(1));
-        preArrayIndexItemId.append("$");
-        preArrayIndexItemId.append(fc);
-
-        int arrayIndexPosition = objectReference.getArrayIndexPosition();
-        if (arrayIndexPosition != -1) {
-
-            for (int i = 2; i < arrayIndexPosition; i++) {
-                preArrayIndexItemId.append("$");
-                preArrayIndexItemId.append(objectReference.get(i));
-            }
-
-            alternateAccess = new AlternateAccess();
-            List<AlternateAccess.CHOICE> subSeqOfAlternateAccess = alternateAccess.getCHOICE();
-            Unsigned32 indexBerInteger = new Unsigned32(Integer.parseInt(objectReference.get(arrayIndexPosition)));
-
-            if (arrayIndexPosition < (objectReference.size() - 1)) {
-                // this reference points to a sub-node of an array element
-
-                StringBuilder postArrayIndexItemId = new StringBuilder(objectReference.get(arrayIndexPosition + 1));
-
-                for (int i = (arrayIndexPosition + 2); i < objectReference.size(); i++) {
-                    postArrayIndexItemId.append("$");
-                    postArrayIndexItemId.append(objectReference.get(i));
-                }
-
-                BasicIdentifier subIndexReference = new BasicIdentifier(postArrayIndexItemId.toString().getBytes());
-
-                AlternateAccessSelection.SelectAccess subIndexReferenceSelectAccess = new AlternateAccessSelection.SelectAccess();
-                Component component = new Component();
-                component.setBasic(subIndexReference);
-                subIndexReferenceSelectAccess.setComponent(component);
-
-                AlternateAccessSelection subIndexReferenceAlternateAccessSelection = new AlternateAccessSelection();
-                subIndexReferenceAlternateAccessSelection.setSelectAccess(subIndexReferenceSelectAccess);
-
-                AlternateAccess.CHOICE subIndexReferenceAlternateAccessSubChoice = new AlternateAccess.CHOICE();
-                subIndexReferenceAlternateAccessSubChoice.setUnnamed(subIndexReferenceAlternateAccessSelection);
-
-                AlternateAccess subIndexReferenceAlternateAccess = new AlternateAccess();
-
-                List<AlternateAccess.CHOICE> subIndexReferenceAlternateAccessSubSeqOf = subIndexReferenceAlternateAccess
-                        .getCHOICE();
-                subIndexReferenceAlternateAccessSubSeqOf.add(subIndexReferenceAlternateAccessSubChoice);
-
-                // set array index:
-
-                AlternateAccessSelection.SelectAlternateAccess.AccessSelection indexAccessSelectionChoice = new AlternateAccessSelection.SelectAlternateAccess.AccessSelection();
-                indexAccessSelectionChoice.setIndex(indexBerInteger);
-
-                AlternateAccessSelection.SelectAlternateAccess indexAndLowerReferenceSelectAlternateAccess = new AlternateAccessSelection.SelectAlternateAccess();
-                indexAndLowerReferenceSelectAlternateAccess.setAccessSelection(indexAccessSelectionChoice);
-                indexAndLowerReferenceSelectAlternateAccess.setAlternateAccess(subIndexReferenceAlternateAccess);
-
-                AlternateAccessSelection indexAndLowerReferenceAlternateAccessSelection = new AlternateAccessSelection();
-                indexAndLowerReferenceAlternateAccessSelection
-                        .setSelectAlternateAccess(indexAndLowerReferenceSelectAlternateAccess);
-
-                AlternateAccess.CHOICE indexAndLowerReferenceAlternateAccessChoice = new AlternateAccess.CHOICE();
-                indexAndLowerReferenceAlternateAccessChoice.setUnnamed(indexAndLowerReferenceAlternateAccessSelection);
-
-                subSeqOfAlternateAccess.add(indexAndLowerReferenceAlternateAccessChoice);
-
-            }
-            else {
-                SelectAccess selectAccess = new SelectAccess();
-                selectAccess.setIndex(indexBerInteger);
-
-                AlternateAccessSelection alternateAccessSelection = new AlternateAccessSelection();
-                alternateAccessSelection.setSelectAccess(selectAccess);
-
-                AlternateAccess.CHOICE alternateAccessChoice = new AlternateAccess.CHOICE();
-                alternateAccessChoice.setUnnamed(alternateAccessSelection);
-
-                subSeqOfAlternateAccess.add(alternateAccessChoice);
-            }
-
-        }
-        else {
-
-            for (int i = 2; i < objectReference.size(); i++) {
-                preArrayIndexItemId.append("$");
-                preArrayIndexItemId.append(objectReference.get(i));
-            }
-        }
-
-        ObjectName.DomainSpecific domainSpecificObjectName = new ObjectName.DomainSpecific();
-        domainSpecificObjectName.setDomainID(new Identifier(objectReference.get(0).getBytes()));
-        domainSpecificObjectName.setItemID(new Identifier(preArrayIndexItemId.toString().getBytes()));
-
-        ObjectName objectName = new ObjectName();
-        objectName.setDomainSpecific(domainSpecificObjectName);
-
-        VariableSpecification varSpec = new VariableSpecification();
-        varSpec.setName(objectName);
-
-        variableDef = new VariableDefs.SEQUENCE();
-        variableDef.setAlternateAccess(alternateAccess);
-        variableDef.setVariableSpecification(varSpec);
-
-        return variableDef;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getReference().toString()).append(" [").append(fc).append("]");
-        for (ModelNode childNode : children.values()) {
-            sb.append("\n");
-            sb.append(childNode.toString());
-        }
-        return sb.toString();
-    }
-
-}
+/*
+ * Copyright 2011-17 Fraunhofer ISE, energy & meteo Systems GmbH and other contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.openmuc.openiec61850;
+
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccess;
+import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccessSelection;
+import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccessSelection.SelectAccess;
+import org.openmuc.openiec61850.internal.mms.asn1.AlternateAccessSelection.SelectAccess.Component;
+import org.openmuc.openiec61850.internal.mms.asn1.BasicIdentifier;
+import org.openmuc.openiec61850.internal.mms.asn1.Identifier;
+import org.openmuc.openiec61850.internal.mms.asn1.ObjectName;
+import org.openmuc.openiec61850.internal.mms.asn1.Unsigned32;
+import org.openmuc.openiec61850.internal.mms.asn1.VariableDefs;
+import org.openmuc.openiec61850.internal.mms.asn1.VariableSpecification;
+
+public abstract class FcModelNode extends ModelNode {
+
+    private VariableDefs.SEQUENCE variableDef = null;
+    Fc fc;
+    private ServerAssociation selected = null;
+    private TimerTask task = null;
+
+    public Fc getFc() {
+        return fc;
+    }
+
+    boolean select(ServerAssociation association, Timer timer) {
+        if (selected != null) {
+            if (selected != association) {
+                return false;
+            }
+        }
+        else {
+            selected = association;
+            association.selects.add(this);
+        }
+
+        ModelNode sboTimeoutNode = association.serverModel.findModelNode(objectReference, Fc.CF).getChild("sboTimeout");
+
+        if (sboTimeoutNode == null) {
+            return true;
+        }
+
+        long sboTimeout = ((BdaInt32U) sboTimeoutNode).getValue();
+
+        if (sboTimeout == 0) {
+            return true;
+        }
+
+        class SelectResetTask extends TimerTask {
+            ServerAssociation association;
+
+            SelectResetTask(ServerAssociation association) {
+                this.association = association;
+            }
+
+            @Override
+            public void run() {
+                synchronized (association.serverModel) {
+                    if (task == this) {
+                        task = null;
+                        deselectAndRemove(association);
+                    }
+                }
+            }
+        }
+
+        if (task != null) {
+            task.cancel();
+        }
+
+        task = new SelectResetTask(association);
+        timer.schedule(task, sboTimeout);
+
+        return true;
+
+    }
+
+    void deselectAndRemove(ServerAssociation association) {
+        selected = null;
+        if (task != null) {
+            task.cancel();
+            task = null;
+        }
+        association.selects.remove(this);
+    }
+
+    void deselect() {
+        selected = null;
+        if (task != null) {
+            task.cancel();
+            task = null;
+        }
+    }
+
+    boolean isSelected() {
+        if (selected == null) {
+            return false;
+        }
+        return true;
+    }
+
+    boolean isSelectedBy(ServerAssociation association) {
+        if (selected == association) {
+            return true;
+        }
+        return false;
+    }
+
+    VariableDefs.SEQUENCE getMmsVariableDef() {
+
+        if (variableDef != null) {
+            return variableDef;
+        }
+
+        AlternateAccess alternateAccess = null;
+
+        StringBuilder preArrayIndexItemId = new StringBuilder(objectReference.get(1));
+        preArrayIndexItemId.append("$");
+        preArrayIndexItemId.append(fc);
+
+        int arrayIndexPosition = objectReference.getArrayIndexPosition();
+        if (arrayIndexPosition != -1) {
+
+            for (int i = 2; i < arrayIndexPosition; i++) {
+                preArrayIndexItemId.append("$");
+                preArrayIndexItemId.append(objectReference.get(i));
+            }
+
+            alternateAccess = new AlternateAccess();
+            List<AlternateAccess.CHOICE> subSeqOfAlternateAccess = alternateAccess.getCHOICE();
+            Unsigned32 indexBerInteger = new Unsigned32(Integer.parseInt(objectReference.get(arrayIndexPosition)));
+
+            if (arrayIndexPosition < (objectReference.size() - 1)) {
+                // this reference points to a sub-node of an array element
+
+                StringBuilder postArrayIndexItemId = new StringBuilder(objectReference.get(arrayIndexPosition + 1));
+
+                for (int i = (arrayIndexPosition + 2); i < objectReference.size(); i++) {
+                    postArrayIndexItemId.append("$");
+                    postArrayIndexItemId.append(objectReference.get(i));
+                }
+
+                BasicIdentifier subIndexReference = new BasicIdentifier(postArrayIndexItemId.toString().getBytes());
+
+                AlternateAccessSelection.SelectAccess subIndexReferenceSelectAccess = new AlternateAccessSelection.SelectAccess();
+                Component component = new Component();
+                component.setBasic(subIndexReference);
+                subIndexReferenceSelectAccess.setComponent(component);
+
+                AlternateAccessSelection subIndexReferenceAlternateAccessSelection = new AlternateAccessSelection();
+                subIndexReferenceAlternateAccessSelection.setSelectAccess(subIndexReferenceSelectAccess);
+
+                AlternateAccess.CHOICE subIndexReferenceAlternateAccessSubChoice = new AlternateAccess.CHOICE();
+                subIndexReferenceAlternateAccessSubChoice.setUnnamed(subIndexReferenceAlternateAccessSelection);
+
+                AlternateAccess subIndexReferenceAlternateAccess = new AlternateAccess();
+
+                List<AlternateAccess.CHOICE> subIndexReferenceAlternateAccessSubSeqOf = subIndexReferenceAlternateAccess
+                        .getCHOICE();
+                subIndexReferenceAlternateAccessSubSeqOf.add(subIndexReferenceAlternateAccessSubChoice);
+
+                // set array index:
+
+                AlternateAccessSelection.SelectAlternateAccess.AccessSelection indexAccessSelectionChoice = new AlternateAccessSelection.SelectAlternateAccess.AccessSelection();
+                indexAccessSelectionChoice.setIndex(indexBerInteger);
+
+                AlternateAccessSelection.SelectAlternateAccess indexAndLowerReferenceSelectAlternateAccess = new AlternateAccessSelection.SelectAlternateAccess();
+                indexAndLowerReferenceSelectAlternateAccess.setAccessSelection(indexAccessSelectionChoice);
+                indexAndLowerReferenceSelectAlternateAccess.setAlternateAccess(subIndexReferenceAlternateAccess);
+
+                AlternateAccessSelection indexAndLowerReferenceAlternateAccessSelection = new AlternateAccessSelection();
+                indexAndLowerReferenceAlternateAccessSelection
+                        .setSelectAlternateAccess(indexAndLowerReferenceSelectAlternateAccess);
+
+                AlternateAccess.CHOICE indexAndLowerReferenceAlternateAccessChoice = new AlternateAccess.CHOICE();
+                indexAndLowerReferenceAlternateAccessChoice.setUnnamed(indexAndLowerReferenceAlternateAccessSelection);
+
+                subSeqOfAlternateAccess.add(indexAndLowerReferenceAlternateAccessChoice);
+
+            }
+            else {
+                SelectAccess selectAccess = new SelectAccess();
+                selectAccess.setIndex(indexBerInteger);
+
+                AlternateAccessSelection alternateAccessSelection = new AlternateAccessSelection();
+                alternateAccessSelection.setSelectAccess(selectAccess);
+
+                AlternateAccess.CHOICE alternateAccessChoice = new AlternateAccess.CHOICE();
+                alternateAccessChoice.setUnnamed(alternateAccessSelection);
+
+                subSeqOfAlternateAccess.add(alternateAccessChoice);
+            }
+
+        }
+        else {
+
+            for (int i = 2; i < objectReference.size(); i++) {
+                preArrayIndexItemId.append("$");
+                preArrayIndexItemId.append(objectReference.get(i));
+            }
+        }
+
+        ObjectName.DomainSpecific domainSpecificObjectName = new ObjectName.DomainSpecific();
+        domainSpecificObjectName.setDomainID(new Identifier(objectReference.get(0).getBytes()));
+        domainSpecificObjectName.setItemID(new Identifier(preArrayIndexItemId.toString().getBytes()));
+
+        ObjectName objectName = new ObjectName();
+        objectName.setDomainSpecific(domainSpecificObjectName);
+
+        VariableSpecification varSpec = new VariableSpecification();
+        varSpec.setName(objectName);
+
+        variableDef = new VariableDefs.SEQUENCE();
+        variableDef.setAlternateAccess(alternateAccess);
+        variableDef.setVariableSpecification(varSpec);
+
+        return variableDef;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getReference().toString()).append(" [").append(fc).append("]");
+        for (ModelNode childNode : children.values()) {
+            sb.append("\n");
+            sb.append(childNode.toString());
+        }
+        return sb.toString();
+    }
+
+}

--
Gitblit v1.9.1