int main() {
opcua::Node nodeBaseObjectType{server, opcua::ObjectTypeId::BaseObjectType};
auto nodeMammalType = nodeBaseObjectType.addObjectType(
{1, 10000},
"MammalType",
.setDescription({"en-US", "A mammal"})
);
nodeMammalType
.addVariable(
{1, 10001},
"Age",
.setDescription({"en-US", "This mammals age in months"})
)
auto nodeDogType = nodeMammalType.addObjectType(
{1, 10002},
"DogType",
.setDescription({"en-US", "A dog, subtype of mammal"})
);
nodeDogType
.addVariable(
{1, 10003},
"Name",
.setDescription({"en-US", "This dogs name"})
)
opcua::Node nodeObjects{server, opcua::ObjectId::ObjectsFolder};
auto nodeBello = nodeObjects.addObject(
{1, 20000},
"Bello",
.setDescription({"en-US", "A dog named Bello"}),
nodeDogType.id()
);
nodeBello.browseChild({{1,
"Name"}}).writeValue(
opcua::Variant{
"Bello"});
}
High-level node class to access node attribute, browse and populate address space.
void run()
Run the server's main loop. This method will block until Server::stop is called.
UA_Variant wrapper class.
UA_ObjectAttributes wrapper class.
auto & setDisplayName(LocalizedText displayName)
UA_ObjectTypeAttributes wrapper class.
auto & setDisplayName(LocalizedText displayName)
UA_VariableAttributes wrapper class.
auto & setDisplayName(LocalizedText displayName)