#################### | |
# Nodeset Examples # | |
#################### | |
################### | |
# Custom XML # | |
################### | |
set(FILE_CSV_DIRPREFIX ${PROJECT_SOURCE_DIR}/nodeset) | |
set(FILE_BSD_DIRPREFIX ${PROJECT_SOURCE_DIR}/nodeset) | |
set(FILE_NS_DIRPREFIX ${PROJECT_SOURCE_DIR}/nodeset) | |
if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) | |
# needed or cmake doesn't recognize dependencies of generated files | |
set(PROJECT_BINARY_DIR ${CMAKE_BINARY_DIR}) | |
endif() | |
# generate namespace from XML file | |
if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) | |
ua_generate_nodeset_and_datatypes( | |
NAME "example" | |
FILE_NS "${FILE_NS_DIRPREFIX}/server_nodeset.xml" | |
DEPENDS "${CMAKE_SOURCE_DIR}/tools/schema/Opc.Ua.NodeSet2.Minimal.xml" | |
) | |
else() | |
# standalone examples build expects already installed Opc.Ua.NodeSet2.Minimal.xml | |
ua_generate_nodeset_and_datatypes( | |
NAME "example" | |
FILE_NS "${FILE_NS_DIRPREFIX}/server_nodeset.xml" | |
) | |
endif() | |
# The .csv file can be created from within UaModeler or manually | |
ua_generate_nodeid_header( | |
NAME "example_nodeids" | |
ID_PREFIX "EXAMPLE_NS" | |
TARGET_SUFFIX "ids_example" | |
FILE_CSV "${FILE_CSV_DIRPREFIX}/server_nodeset.csv" | |
) | |
add_example(server_nodeset server_nodeset.c | |
${UA_NODESET_EXAMPLE_SOURCES} | |
${PROJECT_BINARY_DIR}/src_generated/open62541/example_nodeids.h) | |
if(UA_NAMESPACE_ZERO STREQUAL "FULL") | |
ua_generate_nodeset_and_datatypes( | |
NAME "testnodeset" | |
FILE_CSV "${FILE_CSV_DIRPREFIX}/testnodeset.csv" | |
FILE_BSD "${FILE_BSD_DIRPREFIX}/testtypes.bsd" | |
NAMESPACE_IDX 2 | |
FILE_NS "${FILE_NS_DIRPREFIX}/testnodeset.xml" | |
INTERNAL | |
) | |
add_example(server_testnodeset server_testnodeset.c | |
${UA_NODESET_TESTNODESET_SOURCES} | |
${UA_TYPES_TESTNODESET_SOURCES}) | |
add_dependencies(server_testnodeset open62541-generator-ns-testnodeset) | |
endif() | |
################### | |
# PLCopen Nodeset # | |
################### | |
if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) | |
set(FILE_CSV_DIRPREFIX ${CMAKE_SOURCE_DIR}/deps/ua-nodeset) | |
set(FILE_BSD_PLCOPEN_DIRPREFIX ${CMAKE_SOURCE_DIR}/deps/ua-nodeset) | |
set(FILE_BSD_POWERLINK_DIRPREFIX ${PROJECT_SOURCE_DIR}/nodeset) | |
set(FILE_NS_DIRPREFIX ${CMAKE_SOURCE_DIR}/deps/ua-nodeset) | |
else() | |
set(FILE_CSV_DIRPREFIX ${UA_NODESET_DIR}) | |
set(FILE_BSD_PLCOPEN_DIRPREFIX ${UA_NODESET_DIR}) | |
set(FILE_BSD_POWERLINK_DIRPREFIX ${PROJECT_SOURCE_DIR}/nodeset) | |
set(FILE_NS_DIRPREFIX ${UA_NODESET_DIR}) | |
endif() | |
# PLCopen requires the full ns0 as basis | |
if(UA_NAMESPACE_ZERO STREQUAL "FULL") | |
# Generate types and namespace for DI | |
ua_generate_nodeset_and_datatypes( | |
NAME "di" | |
FILE_CSV "${FILE_CSV_DIRPREFIX}/DI/OpcUaDiModel.csv" | |
FILE_BSD "${FILE_BSD_PLCOPEN_DIRPREFIX}/DI/Opc.Ua.Di.Types.bsd" | |
NAMESPACE_IDX 2 | |
FILE_NS "${FILE_NS_DIRPREFIX}/DI/Opc.Ua.Di.NodeSet2.xml" | |
INTERNAL | |
) | |
# generate PLCopen namespace which is using DI | |
ua_generate_nodeset_and_datatypes( | |
NAME "plc" | |
# PLCopen does not define custom types. Only generate the nodeset | |
FILE_NS "${FILE_NS_DIRPREFIX}/PLCopen/Opc.Ua.Plc.NodeSet2.xml" | |
# PLCopen depends on the di nodeset, which must be generated before | |
DEPENDS "di" | |
INTERNAL | |
) | |
add_example(server_nodeset_plcopen server_nodeset_plcopen.c | |
${UA_NODESET_DI_SOURCES} | |
${UA_NODESET_PLC_SOURCES} | |
${UA_TYPES_DI_SOURCES} | |
${UA_TYPES_PLC_SOURCES}) | |
add_dependencies(server_nodeset_plcopen open62541-generator-ns-plc) | |
endif() | |
# POWERLINK requires the full ns0 as basis | |
if(UA_NAMESPACE_ZERO STREQUAL "FULL") | |
# generate powerlink namespace which is using DI | |
ua_generate_nodeset_and_datatypes( | |
NAME "powerlink" | |
FILE_CSV "${FILE_CSV_DIRPREFIX}/POWERLINK/Opc.Ua.POWERLINK.NodeIds.csv" | |
FILE_BSD "${FILE_BSD_POWERLINK_DIRPREFIX}/Opc.Ua.POWERLINK.NodeSet2.bsd" | |
NAMESPACE_IDX 3 | |
FILE_NS "${FILE_NS_DIRPREFIX}/POWERLINK/Opc.Ua.POWERLINK.NodeSet2.xml" | |
# POWERLINK depends on the di nodeset, which must be generated before | |
DEPENDS "di" | |
INTERNAL | |
) | |
add_example(server_nodeset_powerlink server_nodeset_powerlink.c | |
${UA_NODESET_DI_SOURCES} | |
${UA_NODESET_POWERLINK_SOURCES} | |
${UA_TYPES_DI_SOURCES} | |
${UA_TYPES_POWERLINK_SOURCES}) | |
add_dependencies(server_nodeset_powerlink open62541-generator-ns-powerlink) | |
endif() |