ChimeraTK-ControlSystemAdapter-OPCUAAdapter 04.00.05
Loading...
Searching...
No Matches
ua_namespace.opcua_namespace Class Reference

Namespace Organizer. More...

Public Member Functions

 __init__ (self, name)
 
 addNamespace (self, numericId, stringURL)
 
 linkLater (self, pointer)
 
 getUnlinkedPointers (self)
 
 unlinkedItemCount (self)
 
 buildAliasList (self, xmlelement)
 
 getNodeByBrowseName (self, idstring)
 
 getNodeByIDString (self, idstring)
 
 createNode (self, ndtype, xmlelement)
 
 removeNodeById (self, nodeId)
 
 registerBinaryIndirectPointer (self, node)
 
 getBinaryIndirectPointerIndex (self, node)
 
 parseXML (self, xmldoc)
 
 linkOpenPointers (self)
 
 sanitize (self)
 
 getRoot (self)
 
 buildEncodingRules (self)
 
 allocateVariables (self)
 
 printDot (self, filename="namespace.dot")
 
 getSubTypesOf (self, tdNodes=None, currentNode=None, hasSubtypeRefNode=None)
 
 printDotGraphWalk (self, depth=1, filename="out.dot", rootNode=None, followInverse=False, excludeNodeIds=[])
 
 __reorder_getMinWeightNode__ (self, nmatrix)
 
 reorderNodesMinDependencies (self)
 
 printOpen62541Header (self, printedExternally=[], supressGenerationOfAttribute=[], outfilename="")
 

Public Attributes

 nodes
 
 knownNodeTypes
 
 name
 
 nodeids
 
 aliases
 
 namespaceIdentifiers
 

Static Public Attributes

list nodes = []
 
dict nodeids = {}
 
dict aliases = {}
 
str name = ""
 
str knownNodeTypes = ""
 
dict namespaceIdentifiers = {}
 

Detailed Description

Namespace Organizer.

 Class holding and managing a set of OPCUA nodes.

    This class handles parsing XML description of namespaces, instantiating
    nodes, linking references, graphing the namespace and compiling a binary
    representation.

    Note that nodes assigned to this class are not restricted to having a
    single namespace ID. This class represents the entire physical address
    space of the binary representation and all nodes that are to be included
    in that segment of memory.

Definition at line 49 of file ua_namespace.py.

Constructor & Destructor Documentation

◆ __init__()

ua_namespace.opcua_namespace.__init__ (   self,
  name 
)

Definition at line 70 of file ua_namespace.py.

Member Function Documentation

◆ __reorder_getMinWeightNode__()

ua_namespace.opcua_namespace.__reorder_getMinWeightNode__ (   self,
  nmatrix 
)

Definition at line 534 of file ua_namespace.py.

◆ addNamespace()

ua_namespace.opcua_namespace.addNamespace (   self,
  numericId,
  stringURL 
)

Definition at line 81 of file ua_namespace.py.

◆ allocateVariables()

ua_namespace.opcua_namespace.allocateVariables (   self)

Definition at line 435 of file ua_namespace.py.

◆ buildAliasList()

ua_namespace.opcua_namespace.buildAliasList (   self,
  xmlelement 
)
 Parses the <Alias> XML Element present in must XML NodeSet definitions.

    No return value

    Contents the Alias element are stored in a dictionary for further
    dereferencing during pointer linkage (see linkOpenPointer()).

Definition at line 113 of file ua_namespace.py.

◆ buildEncodingRules()

ua_namespace.opcua_namespace.buildEncodingRules (   self)
 Calls buildEncoding() for all DataType nodes (opcua_node_dataType_t).

    No return value

Definition at line 423 of file ua_namespace.py.

◆ createNode()

ua_namespace.opcua_namespace.createNode (   self,
  ndtype,
  xmlelement 
)
 createNode is instantiates a node described by xmlelement, its type being
    defined by the string ndtype.

    No return value

    If the xmlelement is an <Alias>, the contents will be parsed and stored
    for later dereferencing during pointer linking (see linkOpenPointers).

    Recognized types are:
    * UAVariable
    * UAObject
    * UAMethod
    * UAView
    * UAVariableType
    * UAObjectType
    * UAMethodType
    * UAReferenceType
    * UADataType

    For every recognized type, an appropriate node class is added to the node
    list of the namespace. The NodeId of the given node is created and parsing
    of the node attributes and elements is delegated to the parseXML() and
    parseXMLSubType() functions of the instantiated class.

    If the NodeID attribute is non-unique in the node list, the creation is
    deferred and an error is logged.

Definition at line 168 of file ua_namespace.py.

◆ getBinaryIndirectPointerIndex()

ua_namespace.opcua_namespace.getBinaryIndirectPointerIndex (   self,
  node 
)
 Returns the slot/index of a pointer in the indirect referencing space
    (first 765 Bytes) of the binary representation.

Definition at line 275 of file ua_namespace.py.

◆ getNodeByBrowseName()

ua_namespace.opcua_namespace.getNodeByBrowseName (   self,
  idstring 
)
 Returns the first node in the nodelist whose browseName matches idstring.

Definition at line 139 of file ua_namespace.py.

◆ getNodeByIDString()

ua_namespace.opcua_namespace.getNodeByIDString (   self,
  idstring 
)
 Returns the first node in the nodelist whose id string representation
    matches idstring.

Definition at line 153 of file ua_namespace.py.

◆ getRoot()

ua_namespace.opcua_namespace.getRoot (   self)
 Returns the first node instance with the browseName "Root".

Definition at line 418 of file ua_namespace.py.

◆ getSubTypesOf()

ua_namespace.opcua_namespace.getSubTypesOf (   self,
  tdNodes = None,
  currentNode = None,
  hasSubtypeRefNode = None 
)

Definition at line 457 of file ua_namespace.py.

◆ getUnlinkedPointers()

ua_namespace.opcua_namespace.getUnlinkedPointers (   self)
 Return the list of references registered for linking during the next call
    of linkOpenPointers()

Definition at line 101 of file ua_namespace.py.

◆ linkLater()

ua_namespace.opcua_namespace.linkLater (   self,
  pointer 
)
 Called by nodes or references who have parsed an XML reference to a
    node represented by a string.

    No return value

    XML String representations of references have the form 'i=xy' or
    'ns=1;s="This unique Node"'. Since during the parsing of this attribute
    only a subset of nodes are known/parsed, this reference string cannot be
    linked when encountered.

    References register themselves with the namespace to have their target
    attribute (string) parsed by linkOpenPointers() when all nodes are
    created, so that target can be dereferenced an point to an actual node.

Definition at line 84 of file ua_namespace.py.

◆ linkOpenPointers()

ua_namespace.opcua_namespace.linkOpenPointers (   self)
 Substitutes symbolic NodeIds in references for actual node instances.

    No return value

    References that have registered themselves with linkLater() to have
    their symbolic NodeId targets ("ns=2;i=32") substituted for an actual
    node will be iterated by this function. For each reference encountered
    in the list of unlinked/open references, the target string will be
    evaluated and searched for in the node list of this namespace. If found,
    the target attribute of the reference will be substituted for the
    found node.

    If a reference fails to get linked, it will remain in the list of
    unlinked references. The individual items in this list can be
    retrieved using getUnlinkedPointers().

Definition at line 321 of file ua_namespace.py.

◆ parseXML()

ua_namespace.opcua_namespace.parseXML (   self,
  xmldoc 
)
 Reads an XML Namespace definition and instantiates node.

    No return value

    parseXML open the file xmldoc using xml.dom.minidom and searches for
    the first UANodeSet Element. For every Element encountered, createNode
    is called to instantiate a node of the appropriate type.

Definition at line 284 of file ua_namespace.py.

◆ printDot()

ua_namespace.opcua_namespace.printDot (   self,
  filename = "namespace.dot" 
)
 Outputs a graphiz/dot description of all nodes in the namespace.

    Output will written into filename to be parsed by dot/neato...

    Note that for namespaces with more then 20 nodes the reference structure
    will lead to a mostly illegible and huge graph. Use printDotGraphWalk()
    for plotting specific portions of a large namespace.

Definition at line 440 of file ua_namespace.py.

◆ printDotGraphWalk()

ua_namespace.opcua_namespace.printDotGraphWalk (   self,
  depth = 1,
  filename = "out.dot",
  rootNode = None,
  followInverse = False,
  excludeNodeIds = [] 
)
 Outputs a graphiz/dot description the nodes centered around rootNode.

    References beginning from rootNode will be followed for depth steps. If
    "followInverse = True" is passed, then inverse (not Forward) references
    will also be followed.

    Nodes can be excluded from the graph by passing a list of NodeIds as
    string representation using excludeNodeIds (ex ["i=53", "ns=2;i=453"]).

    Output is written into filename to be parsed by dot/neato/srfp...

Definition at line 480 of file ua_namespace.py.

◆ printOpen62541Header()

ua_namespace.opcua_namespace.printOpen62541Header (   self,
  printedExternally = [],
  supressGenerationOfAttribute = [],
  outfilename = "" 
)

Definition at line 616 of file ua_namespace.py.

◆ registerBinaryIndirectPointer()

ua_namespace.opcua_namespace.registerBinaryIndirectPointer (   self,
  node 
)
 Appends a node to the list of nodes that should be contained in the
    first 765 bytes (255 pointer slots a 3 bytes) in the binary
    representation (indirect referencing space).

    This function is reserved for references and dataType pointers.

Definition at line 264 of file ua_namespace.py.

◆ removeNodeById()

ua_namespace.opcua_namespace.removeNodeById (   self,
  nodeId 
)

Definition at line 250 of file ua_namespace.py.

◆ reorderNodesMinDependencies()

ua_namespace.opcua_namespace.reorderNodesMinDependencies (   self)

Definition at line 554 of file ua_namespace.py.

◆ sanitize()

ua_namespace.opcua_namespace.sanitize (   self)

Definition at line 406 of file ua_namespace.py.

◆ unlinkedItemCount()

ua_namespace.opcua_namespace.unlinkedItemCount (   self)
 Returns the number of unlinked references that will be processed during
    the next call of linkOpenPointers()

Definition at line 107 of file ua_namespace.py.

Member Data Documentation

◆ aliases [1/2]

dict ua_namespace.opcua_namespace.aliases = {}
static

Definition at line 63 of file ua_namespace.py.

◆ aliases [2/2]

ua_namespace.opcua_namespace.aliases

Definition at line 77 of file ua_namespace.py.

◆ knownNodeTypes [1/2]

str ua_namespace.opcua_namespace.knownNodeTypes = ""
static

Definition at line 67 of file ua_namespace.py.

◆ knownNodeTypes [2/2]

ua_namespace.opcua_namespace.knownNodeTypes

Definition at line 72 of file ua_namespace.py.

◆ name [1/2]

str ua_namespace.opcua_namespace.name = ""
static

Definition at line 66 of file ua_namespace.py.

◆ name [2/2]

ua_namespace.opcua_namespace.name

Definition at line 75 of file ua_namespace.py.

◆ namespaceIdentifiers [1/2]

dict ua_namespace.opcua_namespace.namespaceIdentifiers = {}
static

Definition at line 68 of file ua_namespace.py.

◆ namespaceIdentifiers [2/2]

ua_namespace.opcua_namespace.namespaceIdentifiers

Definition at line 78 of file ua_namespace.py.

◆ nodeids [1/2]

dict ua_namespace.opcua_namespace.nodeids = {}
static

Definition at line 62 of file ua_namespace.py.

◆ nodeids [2/2]

ua_namespace.opcua_namespace.nodeids

Definition at line 76 of file ua_namespace.py.

◆ nodes [1/2]

list ua_namespace.opcua_namespace.nodes = []
static

Definition at line 61 of file ua_namespace.py.

◆ nodes [2/2]

ua_namespace.opcua_namespace.nodes

Definition at line 71 of file ua_namespace.py.


The documentation for this class was generated from the following file: