123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- ####################
- # 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 ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_example.c ${PROJECT_BINARY_DIR}/src_generated/example_nodeids.h)
- if(UA_COMPILE_AS_CXX)
- set_source_files_properties(${PROJECT_BINARY_DIR}/src_generated/ua_namespace_example.c PROPERTIES LANGUAGE CXX)
- endif()
- 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
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_testnodeset.c
- ${PROJECT_BINARY_DIR}/src_generated/ua_types_testnodeset_generated.c)
- 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_TOOLS_DIR}/ua-nodeset)
- set(FILE_BSD_PLCOPEN_DIRPREFIX ${UA_TOOLS_DIR}/ua-nodeset)
- set(FILE_BSD_POWERLINK_DIRPREFIX ${PROJECT_SOURCE_DIR}/nodeset)
- set(FILE_NS_DIRPREFIX ${UA_TOOLS_DIR}/ua-nodeset)
- 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
- ${PROJECT_BINARY_DIR}/src_generated/ua_types_di_generated.c
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_di.c
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_plc.c)
- 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
- ${PROJECT_BINARY_DIR}/src_generated/ua_types_di_generated.c
- ${PROJECT_BINARY_DIR}/src_generated/ua_types_powerlink_generated.c
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_di.c
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_powerlink.c)
- add_dependencies(server_nodeset_powerlink open62541-generator-ns-powerlink)
- endif()
|