Class NodeMap

Class Documentation

class NodeMap

Manages the OPC-UA NodeId to SOVD entity mapping, loaded from YAML.

Public Functions

NodeMap() = default
bool load(const std::string &yaml_path)

Load node map from YAML file

Returns:

true if loaded successfully

inline const std::vector<NodeMapEntry> &entries() const

Get all entries.

std::vector<const NodeMapEntry*> entries_for_entity(const std::string &entity_id) const

Get entries for a specific SOVD entity.

std::vector<const NodeMapEntry*> writable_entries_for_entity(const std::string &entity_id) const

Get writable entries for a specific SOVD entity.

const NodeMapEntry *find_by_data_name(const std::string &entity_id, const std::string &data_name) const

Find entry by data_name within an entity.

const NodeMapEntry *find_by_node_id(const std::string &node_id_str) const

Find entry by OPC-UA node ID string.

std::vector<const NodeMapEntry*> alarm_entries() const

Get all entries that have alarm configuration.

inline const std::vector<PlcEntityDef> &entity_defs() const

Get derived SOVD entity definitions.

inline const std::string &area_id() const

Get area ID configured for PLC systems.

inline const std::string &area_name() const
inline const std::string &component_id() const

Get component ID for the PLC runtime.

inline const std::string &component_name() const
inline bool auto_browse() const

Whether auto-browse mode is enabled.

Public Static Functions

static opcua::NodeId parse_node_id(const std::string &str)

Parse an OPC-UA node ID string into an opcua::NodeId.

Supports the full OPC 10000-6 section 5.3.1.10 format:

[ns=<ns-index>;]i=<uint32>     numeric
[ns=<ns-index>;]s=<string>     string (Siemens, Beckhoff, ...)
[ns=<ns-index>;]g=<guid>       GUID   (Microsoft-style UUID)
[ns=<ns-index>;]b=<base64>     opaque ByteString
When the ns= prefix is omitted the namespace defaults to 0. Returns a default-constructed opcua::NodeId on parse failure; the plugin treats such an entry as unresolvable at runtime.

Declared public so it can be unit-tested directly.