#################### # 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_CURRENT_LIST_DIR}/../../tools/schema/Opc.Ua.NodeSet2.Reduced.xml" ) else() # standalone examples build expects already installed Opc.Ua.NodeSet2.Reduced.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) add_dependencies(server_nodeset open62541-generator-ns-example open62541-generator-ids_example) 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" 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 ${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}) 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 "${UA_NODESET_DIR}/DI/Opc.Ua.Di.NodeIds.csv" FILE_BSD "${UA_NODESET_DIR}/DI/Opc.Ua.Di.Types.bsd" FILE_NS "${UA_NODESET_DIR}/DI/Opc.Ua.Di.NodeSet2.xml" INTERNAL ) ua_generate_nodeset_and_datatypes( NAME "machinery" FILE_NS "${UA_NODESET_DIR}/Machinery/Opc.Ua.Machinery.NodeSet2.xml" FILE_CSV "${UA_NODESET_DIR}/Machinery/NodeIds.csv" DEPENDS di ) ua_generate_nodeset_and_datatypes( NAME "ia" FILE_NS "${UA_NODESET_DIR}/IA/Opc.Ua.IA.NodeSet2.xml" FILE_CSV "${UA_NODESET_DIR}/IA/Opc.Ua.IA.NodeIds.csv" FILE_BSD "${UA_NODESET_DIR}/IA/Opc.Ua.IA.NodeSet2.bsd" DEPENDS di ) ua_generate_nodeset_and_datatypes( NAME "machinetool" FILE_NS "${UA_NODESET_DIR}/MachineTool/Opc.Ua.MachineTool.NodeSet2.xml" FILE_CSV "${UA_NODESET_DIR}/MachineTool/NodeIds.csv" FILE_BSD "${UA_NODESET_DIR}/MachineTool/Opc.Ua.MachineTool.NodeSet2.bsd" DEPENDS di machinery ia ) ua_generate_nodeset_and_datatypes( NAME "machinery_result" FILE_NS "${UA_NODESET_DIR}/Machinery/Result/Opc.Ua.Machinery.Result.NodeSet2.xml" FILE_CSV "${UA_NODESET_DIR}/Machinery/Result/NodeIds.csv" FILE_BSD "${UA_NODESET_DIR}/Machinery/Result/Opc.Ua.Machinery.Result.NodeSet2.bsd" ) ua_generate_nodeset_and_datatypes( NAME "gms" FILE_NS "${UA_NODESET_DIR}/GMS/opc.ua.gms.nodeset2.xml" FILE_CSV "${UA_NODESET_DIR}/GMS/opc.ua.gms.nodesids.csv" FILE_BSD "${UA_NODESET_DIR}/GMS/opc.ua.gms.types.bsd" DEPENDS di ia machinery machinery_result machinetool ) add_example(server_nodeset_plcopen server_nodeset_plcopen.c ${UA_NODESET_DI_SOURCES} ${UA_NODESET_MACHINERY_SOURCES} ${UA_NODESET_IA_SOURCES} ${UA_NODESET_MACHINETOOL_SOURCES} ${UA_NODESET_MACHINERY_RESULT_SOURCES} ${UA_NODESET_GMS_SOURCES} ${UA_TYPES_DI_SOURCES} ${UA_TYPES_MACHINERY_SOURCES} ${UA_TYPES_IA_SOURCES} ${UA_TYPES_MACHINETOOL_SOURCES} ${UA_TYPES_MACHINERY_RESULT_SOURCES} ${UA_TYPES_GMS_SOURCES}) add_dependencies(server_nodeset_plcopen open62541-generator-ns-gms) # POWERLINK requires the full ns0 as basis # 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" 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() if(UA_ENABLE_NODESET_INJECTOR) set(UA_NODESETINJECTOR_GENERATORS ${UA_NODESETINJECTOR_GENERATORS} PARENT_SCOPE) set(UA_NODESETINJECTOR_SOURCE_FILES ${UA_NODESETINJECTOR_SOURCE_FILES} PARENT_SCOPE) set(UA_NODESETINJECTOR_EXAMPLE_NAMES ${UA_NODESETINJECTOR_EXAMPLE_NAMES} PARENT_SCOPE) endif()