####################
# Nodeset Examples PubSub#
####################

###################
# Custom XML      #
###################

set(FILE_CSV_DIRPREFIX ${PROJECT_SOURCE_DIR}/pubsub_realtime/nodeset)
set(FILE_BSD_DIRPREFIX ${PROJECT_SOURCE_DIR}/pubsub_realtime/nodeset)
set(FILE_NS_DIRPREFIX ${PROJECT_SOURCE_DIR}/pubsub_realtime/nodeset)

set(PROJECT_BINARY_DIR ${CMAKE_BINARY_DIR})

# generate namespace from XML file
ua_generate_nodeset_and_datatypes(
    NAME "example_publisher"
    FILE_NS "${FILE_NS_DIRPREFIX}/pubDataModel.xml"
    DEPENDS "${CMAKE_SOURCE_DIR}/tools/schema/Opc.Ua.NodeSet2.Reduced.xml"
)
ua_generate_nodeset_and_datatypes(
    NAME "example_subscriber"
    FILE_NS "${FILE_NS_DIRPREFIX}/subDataModel.xml"
    DEPENDS "${CMAKE_SOURCE_DIR}/tools/schema/Opc.Ua.NodeSet2.Reduced.xml"
)
# The .csv file can be created from within UaModeler or manually
ua_generate_nodeid_header(
    NAME "example_nodeids_publisher"
    ID_PREFIX "EXAMPLE_NS_PUBLISHER"
    TARGET_SUFFIX "ids_example_publisher"
    FILE_CSV "${FILE_CSV_DIRPREFIX}/pubDataModel.csv"
)
ua_generate_nodeid_header(
    NAME "example_nodeids_subscriber"
    ID_PREFIX "EXAMPLE_NS_SUBSCRIBER"
    TARGET_SUFFIX "ids_example_subscriber"
    FILE_CSV "${FILE_CSV_DIRPREFIX}/subDataModel.csv"
)

add_example(pubsub_nodeset_rt_publisher pubsub_nodeset_rt_publisher.c
            ${UA_NODESET_EXAMPLE_PUBLISHER_SOURCES}
            ${PROJECT_BINARY_DIR}/src_generated/open62541/example_nodeids_publisher.h)
add_example(pubsub_nodeset_rt_subscriber pubsub_nodeset_rt_subscriber.c
            ${UA_NODESET_EXAMPLE_SUBSCRIBER_SOURCES}
            ${PROJECT_BINARY_DIR}/src_generated/open62541/example_nodeids_subscriber.h)
target_link_libraries(pubsub_nodeset_rt_publisher rt pthread)
target_link_libraries(pubsub_nodeset_rt_subscriber rt pthread)

