blob: 781359a8990fc98237b2def8fdecdf7077c6c0c4 [file] [log] [blame]
######### Nodesets functions ####################################################
#Don't use this function. This is just a private one
FUNCTION(forte_opcua_add_nodeset_general namespaceName directoryName)
forte_add_sourcefile_with_path_hc(${directoryName}/ua_namespace_${namespaceName})
set_property(GLOBAL APPEND PROPERTY FORTE_OPCUA_NODESETS_LIST ${namespaceName})
ENDFUNCTION()
#Use this function for nodesets which have a file called ua_types_NAMESPACE_generated.c file (DI for example). directoryName should point to the directory where the files are
FUNCTION(forte_opcua_add_nodeset namespaceName directoryName)
forte_add_sourcefile_with_path_hc(${directoryName}/ua_types_${namespaceName}_generated)
forte_opcua_add_nodeset_general(${namespaceName} ${directoryName})
ENDFUNCTION()
#Use this function for nodesets which DON'T have a file called ua_types_NAMESPACE_generated.c file (PLC for example). directoryName should point to the directory where the files are
FUNCTION(forte_opcua_add_nodeset_without_generated namespaceName directoryName)
forte_opcua_add_nodeset_general(${namespaceName} ${directoryName})
forte_add_include_directories(${directoryName})
ENDFUNCTION()
FUNCTION(forte_opcua_configure)
forte_opcua_configure_nodesets()
forte_opcua_configure_external_types()
ENDFUNCTION()
FUNCTION(forte_opcua_configure_nodesets)
SET(FORTE_OPCUA_NODESETS_INCLUDE "")
SET(FORTE_OPCUA_NODESETS_CODE "")
GET_PROPERTY(FORTE_OPCUA_NODESETS GLOBAL PROPERTY FORTE_OPCUA_NODESETS_LIST)
IF(NOT "${FORTE_OPCUA_NODESETS}" STREQUAL "")
LIST(LENGTH FORTE_OPCUA_NODESETS FORTE_OPCUA_NODESETS_LEN)
math(EXPR FORTE_OPCUA_NODESETS_LEN ${FORTE_OPCUA_NODESETS_LEN}-1)
FOREACH(POS RANGE ${FORTE_OPCUA_NODESETS_LEN})
LIST(GET FORTE_OPCUA_NODESETS ${POS} FORTE_OPCUA_NODESET)
SET(FORTE_OPCUA_NODESETS_INCLUDE "${FORTE_OPCUA_NODESETS_INCLUDE} #include \"ua_namespace_${FORTE_OPCUA_NODESET}.h\"\n")
SET(FORTE_OPCUA_NODESETS_CODE "${FORTE_OPCUA_NODESETS_CODE} if(UA_STATUSCODE_GOOD != ua_namespace_${FORTE_OPCUA_NODESET}(&paUaServer)) return false;\n")
ENDFOREACH(POS)
ELSE()
SET(FORTE_OPCUA_NODESETS_CODE "(void)paUaServer;\n") #to silence warning
ENDIF()
set(FORTE_OPCUA_MODULE_DIR "src/modules/opc_ua")
CONFIGURE_FILE(${FORTE_OPCUA_MODULE_DIR}/opcua_nodesets.cpp.in ${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_nodesets_new.cpp)
forte_replacefile_if_changed(${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_nodesets_new.cpp ${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_nodesets.cpp)
file(REMOVE ${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_nodesets_new.cpp)
ENDFUNCTION()
FUNCTION(forte_opcua_configure_external_types)
SET(FORTE_OPCUA_EXTERNAL_TYPES_INCLUDE "")
SET(FORTE_OPCUA_EXTERNAL_TYPES_MAP_INSERT "")
GET_PROPERTY(FORTE_OPCUA_EXTERNAL_TYPES_FILES GLOBAL PROPERTY FORTE_OPCUA_EXTERNAL_TYPES_FILES_LIST)
IF(NOT "${FORTE_OPCUA_EXTERNAL_TYPES_FILES}" STREQUAL "")
GET_PROPERTY(FORTE_OPCUA_EXTERNAL_TYPES_NAME GLOBAL PROPERTY FORTE_OPCUA_EXTERNAL_TYPES_NAME_LIST)
GET_PROPERTY(FORTE_OPCUA_EXTERNAL_TYPES_OPCUA GLOBAL PROPERTY FORTE_OPCUA_EXTERNAL_TYPES_OPCUA_LIST)
LIST(LENGTH FORTE_OPCUA_EXTERNAL_TYPES_FILES FORTE_OPCUA_TYPES_LEN)
math(EXPR FORTE_OPCUA_TYPES_LEN ${FORTE_OPCUA_TYPES_LEN}-1)
FOREACH(POS RANGE ${FORTE_OPCUA_TYPES_LEN})
LIST(GET FORTE_OPCUA_EXTERNAL_TYPES_FILES ${POS} FORTE_OPCUA_EXTERNAL_TYPES_FILES_ITERATOR)
LIST(GET FORTE_OPCUA_EXTERNAL_TYPES_NAME ${POS} FORTE_OPCUA_EXTERNAL_TYPES_NAME_ITERATOR)
LIST(GET FORTE_OPCUA_EXTERNAL_TYPES_OPCUA ${POS} FORTE_OPCUA_EXTERNAL_TYPES_OPCUA_ITERATOR)
SET(FORTE_OPCUA_EXTERNAL_TYPES_INCLUDE "${FORTE_OPCUA_EXTERNAL_TYPES_INCLUDE}#include \"${FORTE_OPCUA_EXTERNAL_TYPES_FILES_ITERATOR}.h\"\n")
SET(FORTE_OPCUA_EXTERNAL_TYPES_MAP_INSERT "${FORTE_OPCUA_EXTERNAL_TYPES_MAP_INSERT} UA_TypeConvert_external(&UA_TYPES[${FORTE_OPCUA_EXTERNAL_TYPES_OPCUA_ITERATOR}], g_nStringId${FORTE_OPCUA_EXTERNAL_TYPES_NAME_ITERATOR}),\n")
ENDFOREACH(POS)
ELSE()
#SET(FORTE_OPCUA_NODESETS_CODE "(void)paUaServer;\n") #to silence warning
ENDIF()
set(FORTE_OPCUA_MODULE_DIR "src/modules/opc_ua")
CONFIGURE_FILE(${FORTE_OPCUA_MODULE_DIR}/opcua_types.cpp.in ${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_types_new.cpp)
forte_replacefile_if_changed(${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_types_new.cpp ${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_types.cpp)
file(REMOVE ${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_types_new.cpp)
ENDFUNCTION()
FUNCTION(forte_opcua_add_type fileName forteName opcuaType)
set_property(GLOBAL APPEND PROPERTY FORTE_OPCUA_EXTERNAL_TYPES_FILES_LIST ${fileName})
set_property(GLOBAL APPEND PROPERTY FORTE_OPCUA_EXTERNAL_TYPES_NAME_LIST ${forteName})
set_property(GLOBAL APPEND PROPERTY FORTE_OPCUA_EXTERNAL_TYPES_OPCUA_LIST ${opcuaType})
ENDFUNCTION()
#################################################################################