Merge branch '1.12.x' into master for the 1.12.0 release!
Change-Id: I431fd0beacc247de5d566fc9313bf64db28bb6e9
diff --git a/buildsupport/generate_stringlist.cmake b/buildsupport/generate_stringlist.cmake
index 87c758e..22d1006 100644
--- a/buildsupport/generate_stringlist.cmake
+++ b/buildsupport/generate_stringlist.cmake
@@ -5,7 +5,7 @@
# http://www.eclipse.org/legal/epl-2.0.
#
# SPDX-License-Identifier: EPL-2.0
-#
+#
# Contributors:
# Michael Hofmann, Alois Zoitl, Ingo Hegny, Gerhard Ebenhofer, Matthias Plasch - initial API and implementation and/or initial documentation
# *******************************************************************************/
@@ -43,7 +43,7 @@
FILE(READ ${FBLIB_FILE} FILE_STRING)
STRING(REGEX MATCHALL "g_nStringId([A-Za-z0-9_]*)" REGEX_STRINGS ${FILE_STRING})
STRING(REGEX MATCHALL "g_nStringId([0-9][A-Za-z0-9_]*)" REGEX_STRINGS_ERROR ${FILE_STRING})
-
+
FOREACH(STR ${REGEX_STRINGS})
string(LENGTH ${STR} len)
math(EXPR len ${len}-11)
@@ -54,7 +54,7 @@
FOREACH(STR_ERR ${REGEX_STRINGS_ERROR})
list(APPEND ErrorStringBuf "#ERROR Invalid Name used! \n//" ${FBLIB_FILE}:${STR_ERR})
ENDFOREACH(STR_ERR)
-
+
ENDIF(NOT REGEX_STRINGS)
ENDFOREACH(FBLIB_FILE)
@@ -65,12 +65,12 @@
list(REMOVE_DUPLICATES scm_acConstStringBuf)
SET(STRINGLIST_H "")
SET(STRINGLIST_CPP "")
-FOREACH(STR ${scm_acConstStringBuf})
+FOREACH(STR IN ITEMS ${scm_acConstStringBuf})
string(LENGTH ${STR} len)
math(EXPR len ${len}+1) # \0 is only one character
list(APPEND scm_aunIdList ${LENGTH_COUNT})
- SET(STRINGLIST_H "${STRINGLIST_H}const CStringDictionary::TStringId g_nStringId${STR} = ${LENGTH_COUNT};\n")
- SET(STRINGLIST_CPP "${STRINGLIST_CPP}extern const CStringDictionary::TStringId g_nStringId${STR} = ${LENGTH_COUNT};\n")
+ SET(STRINGLIST_H "${STRINGLIST_H}const CStringDictionary::TStringId g_nStringId${STR} = ${LENGTH_COUNT};\n")
+ SET(STRINGLIST_CPP "${STRINGLIST_CPP}extern const CStringDictionary::TStringId g_nStringId${STR} = ${LENGTH_COUNT};\n")
math(EXPR LENGTH_COUNT ${LENGTH_COUNT}+${len})
ENDFOREACH(STR)
list(LENGTH scm_aunIdList NUMOFCONSTSTRINGS)
@@ -92,10 +92,10 @@
SET(FIRST TRUE)
FOREACH(NUM ${scm_aunIdList})
if(FIRST)
- SET(scm_aunIdList_Str "${scm_aunIdList_Str}${NUM}")
+ SET(scm_aunIdList_Str "${scm_aunIdList_Str}${NUM}")
SET(FIRST FALSE)
ELSE(FIRST)
- SET(scm_aunIdList_Str "${scm_aunIdList_Str}, ${NUM}")
+ SET(scm_aunIdList_Str "${scm_aunIdList_Str}, ${NUM}")
ENDIF(FIRST)
ENDFOREACH(NUM)
@@ -104,14 +104,14 @@
string(LENGTH "1" len)
math(EXPR cnt ${len})
ENDIF(WIN32)
-FOREACH(STR ${scm_acConstStringBuf})
- SET(scm_acConstStringBuf_Str "${scm_acConstStringBuf_Str}${STR}\\0")
- IF(WIN32)
+FOREACH(STR IN ITEMS ${scm_acConstStringBuf})
+ SET(scm_acConstStringBuf_Str "${scm_acConstStringBuf_Str}${STR}\\0")
+ IF(WIN32)
string(LENGTH ${scm_acConstStringBuf_Str} len)
math(EXPR lenRest ${len})
math(EXPR bytes ${cnt}*15000)
IF(${lenRest} GREATER ${bytes})
- SET(scm_acConstStringBuf_Str "${scm_acConstStringBuf_Str}\" \"")
+ SET(scm_acConstStringBuf_Str "${scm_acConstStringBuf_Str}\" \"")
math(EXPR cnt ${cnt}+1)
ENDIF(${lenRest} GREATER ${bytes})
ENDIF(WIN32)
diff --git a/docker/Dockerfile_builder b/docker/Dockerfile_builder
new file mode 100644
index 0000000..78d442f
--- /dev/null
+++ b/docker/Dockerfile_builder
@@ -0,0 +1,48 @@
+#*******************************************************************************************
+# Copyright (c) 2020 fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral
+# - initial implementation
+# ******************************************************************************************
+
+FROM 32bit/ubuntu:16.04
+MAINTAINER Jose Cabral <cabralcochi@gmail.com>
+
+RUN apt update && apt install -y --no-install-recommends \
+ ca-certificates \
+ cmake \
+ g++ \
+ git \
+ gcc \
+ libc6-dev \
+ make \
+ python2.7 \
+ python-six \
+ openssh-client \
+ subversion \
+ wget \
+ unzip \
+ && apt clean \
+ && rm -rf /var/lib/apt/lists/*
+
+COPY ./docker/scripts/prepareOtherRepos.sh /usr/scripts_temp/
+COPY ./docker/scripts/commonFunctions.sh /usr/scripts_temp/
+RUN /usr/scripts_temp/prepareOtherRepos.sh -A -M && rm -r /usr/scripts_temp/
+
+ARG FORTE_USER_FLAGS=""
+ENV FORTE_USER_FLAGS $FORTE_USER_FLAGS
+
+ARG FORTE_EXTERNAL_MODULES="/usr/forte_modules/"
+ENV FORTE_EXTERNAL_MODULES $FORTE_EXTERNAL_MODULES
+
+COPY . /usr/repos/org.eclipse.4diac.forte
+RUN /usr/repos/org.eclipse.4diac.forte/docker/scripts/buildForte.sh -A -M "$FORTE_USER_FLAGS"
+
+CMD /bin/bash
+
diff --git a/docker/Dockerfile_forte b/docker/Dockerfile_forte
new file mode 100644
index 0000000..b00aabe
--- /dev/null
+++ b/docker/Dockerfile_forte
@@ -0,0 +1,55 @@
+#*******************************************************************************************
+# Copyright (c) 2020 fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral
+# - initial implementation
+# ******************************************************************************************
+
+FROM alpine:edge as forteBuilder
+MAINTAINER Jose Cabral <cabralcochi@gmail.com>
+
+RUN apk add --no-cache bash \
+ ca-certificates \
+ cmake \
+ g++ \
+ git \
+ gcc \
+ make \
+ python \
+ py-pip \
+ py-six \
+ openssh-client \
+ subversion
+
+COPY ./docker/scripts/prepareOtherRepos.sh /usr/scripts_temp/
+COPY ./docker/scripts/commonFunctions.sh /usr/scripts_temp/
+RUN /usr/scripts_temp/prepareOtherRepos.sh -x -M
+
+ARG FORTE_USER_FLAGS=""
+ENV FORTE_USER_FLAGS $FORTE_USER_FLAGS
+
+ARG FORTE_EXTERNAL_MODULES=""
+ENV FORTE_EXTERNAL_MODULES $FORTE_EXTERNAL_MODULES
+
+COPY . /usr/repos/org.eclipse.4diac.forte/
+RUN /usr/repos/org.eclipse.4diac.forte/docker/scripts/buildForte.sh -x -M "$FORTE_USER_FLAGS"
+
+FROM alpine:edge
+WORKDIR /usr/forte_output/linux32/
+COPY --from=forteBuilder /usr/forte_output/linux32/* ./
+RUN apk add --no-cache libstdc++
+
+ENV LD_LIBRARY_PATH /usr/forte_output/linux32/
+
+ARG FORTE_BOOT_FILE=/usr/forte_boot/forte.fboot
+ENV FORTE_BOOT_FILE $FORTE_BOOT_FILE
+
+EXPOSE 4840 4841 4842 61499 61500 61501 61502 61503 61504 61505
+
+CMD /usr/forte_output/linux32/forte -f $FORTE_BOOT_FILE
diff --git a/docker/scripts/buildForte.sh b/docker/scripts/buildForte.sh
new file mode 100755
index 0000000..3e3aca3
--- /dev/null
+++ b/docker/scripts/buildForte.sh
@@ -0,0 +1,159 @@
+#!/bin/bash
+#*******************************************************************************************
+# Copyright (c) 2020 fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral
+# - initial implementation
+# ******************************************************************************************
+
+# exit when any command fails
+set -e
+
+# store the the last executed command
+trap 'lastCommand=$currentCommand; currentCommand=$BASH_COMMAND' DEBUG
+# echo an error message before exiting
+trap 'if [ $? -eq 0 ]; then echo \"The script exited without errors\"; else echo "\"${lastCommand}\" command failed with exit code $?."; fi' EXIT
+
+
+BASH_SCRIPT_PATH="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+source "${BASH_SCRIPT_PATH}"/prepareOtherRepos.sh "$@"
+
+####################################################################
+##################### Variables ###################################
+####################################################################
+# - FORTE_REPO_PATH: The forte repository is set to the parent folder of this script. If the script is executed to another repository,
+# set the FORTE_REPO_PATH variable to the absolut path of the desired forte repository before calling this script
+# - FORTE_OUTPUT_DIR: The output directory where all devices folders with their binaries will be placed. Default /usr/forte_output/
+
+if [ -z "$FORTE_REPO_PATH" ]; then
+ FORTE_REPO_PATH="$(cd ${BASH_SCRIPT_PATH} && cd ../../ && pwd )/"
+fi
+
+if [ -z "$FORTE_OUTPUT_DIR" ]; then
+ FORTE_OUTPUT_DIR=/usr/forte_output/
+fi
+
+COMMON_FLAGS="-DCMAKE_BUILD_TYPE=Debug \
+ -DFORTE_LOGLEVEL=Debug \
+ -DFORTE_BUILD_EXECUTABLE=ON \
+ -DFORTE_COM_ETH=ON \
+ -DFORTE_MODULE_UTILS=ON \
+ -DFORTE_MODULE_CONVERT=ON \
+ -DFORTE_MODULE_IEC61131=ON \
+ -DFORTE_MODULE_Arrowhead=ON \
+ -DFORTE_COM_HTTP=ON \
+ -DFORTE_COM_HTTP_LISTENING_PORT=8080 \
+ ${USER_FLAGS} \
+ -DFORTE_EXTERNAL_MODULES_DIRECTORY=${FORTE_EXTERNAL_MODULES}"
+
+ARM_COMPILER="-DCMAKE_C_COMPILER=${ARM_BIN}/arm-linux-gnueabihf-gcc \
+ -DCMAKE_CXX_COMPILER=${ARM_BIN}/arm-linux-gnueabihf-g++ \
+ -DCMAKE_FIND_ROOT_PATH=${ARM_ROOT} "
+
+####################################################################
+##################### FUNCTIONS ###################################
+####################################################################
+
+# The function takes 3 parameters:
+# - the architecture (linux32, arm, ...) used for the needed libraries
+# - the device (linux32, rpi, BBB, ...) used for the exported folder under ${FORTE_OUTPUT_DIR}
+# - extra parameteters to be added to CMake
+function compile(){
+
+ CURRENT_ARCH=$1
+ CURRENT_DEVICE=$2
+ EXTRA_FLAGS=$3
+
+ CURRENT_BIN="${FORTE_REPO_PATH}bin/${CURRENT_DEVICE}"
+ CURRENT_OUTPUT="${FORTE_OUTPUT_DIR}${CURRENT_DEVICE}"
+ CURRENT_LUA_LIBS="${REPOS_DIR}${LUA_FOLDER_NAME}_bin/${CURRENT_ARCH}/lib/"
+
+ if [ "${OPCUA_ENABLED}" -eq "1" ]; then
+ OPCUA_FLAGS="-DFORTE_COM_OPC_UA=ON \
+ -DFORTE_COM_OPC_UA_INCLUDE_DIR=${REPOS_DIR}${OPCUA_FOLDER_NAME}/bin/${CURRENT_ARCH}/ \
+ -DFORTE_COM_OPC_UA_LIB_DIR=${REPOS_DIR}${OPCUA_FOLDER_NAME}/bin/${CURRENT_ARCH}/bin \
+ -DFORTE_COM_OPC_UA_LIB=libopen62541.a \
+ -DFORTE_COM_OPC_UA_MASTER_BRANCH=ON \
+ -DFORTE_COM_OPC_UA_ENCRYPTION=ON \
+ -DFORTE_COM_OPC_UA_ENCRYPTION_INCLUDE_DIR=${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/include \
+ -DFORTE_COM_OPC_UA_ENCRYPTION_LIB_DIR=${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/bin/${CURRENT_ARCH}/library/"
+ else
+ OPCUA_FLAGS=""
+ fi
+
+ if [ "${MQTT_ENABLED}" -eq "1" ]; then
+ MQTT_FLAGS=" -DFORTE_COM_PAHOMQTT=ON \
+ -DFORTE_COM_PAHOMQTT_INCLUDE_DIR=${REPOS_DIR}${MQTT_FOLDER_NAME}/src \
+ -DFORTE_COM_PAHOMQTT_LIB=libpaho-mqtt3a-static.a \
+ -DFORTE_COM_PAHOMQTT_LIB_DIR=${REPOS_DIR}${MQTT_FOLDER_NAME}/bin/${CURRENT_ARCH}/src"
+ else
+ MQTT_FLAGS=""
+ fi
+
+ if [ "${LUA_ENABLED}" -eq "1" ]; then
+ LUA_FLAGS="-DFORTE_USE_LUATYPES=LuaJIT \
+ -DLUAJIT_INCLUDE_DIR=${REPOS_DIR}${LUA_FOLDER_NAME}/src \
+ -DLUAJIT_LIBRARY=${CURRENT_LUA_LIBS}/libluajit-5.1.so"
+ else
+ LUA_FLAGS=""
+ fi
+
+ ALL_FLAGS="${COMMON_FLAGS} ${LUA_FLAGS} ${OPCUA_FLAGS} ${MQTT_FLAGS} ${EXTRA_FLAGS}"
+
+ printMessage "Compiling forte for arch ${CURRENT_ARCH} and device ${CURRENT_DEVICE}"
+ echo -e "\nThe following flags will be used: \n${ALL_FLAGS}\n"
+
+ cleanFolderAndGoThere "${CURRENT_BIN}"
+
+ cmake ${ALL_FLAGS} ${FORTE_REPO_PATH}
+ make -j8
+
+ mkdir -p "${CURRENT_OUTPUT}"
+ cp src/forte "${CURRENT_OUTPUT}"
+
+ if [ "${LUA_ENABLED}" -eq "1" ]; then
+ cp "${CURRENT_LUA_LIBS}"*.so* "${CURRENT_OUTPUT}"
+ fi
+}
+
+
+
+cd "${FORTE_REPO_PATH}"
+
+###################################################################
+############# COMPILE FOR LINUX32 #################################
+###################################################################
+if [ "${LINUX32_ENABLED}" -eq "1" ]; then
+ compile "${LINUX32_ARCH}" "${LINUX32_ARCH}" "-DFORTE_ARCHITECTURE=Posix"
+fi
+
+###################################################################
+################# COMPILE FOR RPI #################################
+###################################################################
+if [ "${RPI_ENABLED}" -eq "1" ]; then
+ RPI_FLAGS="-DFORTE_ARCHITECTURE=Posix \
+ ${ARM_COMPILER} \
+ -DCMAKE_CXX_FLAGS=-static-libstdc++ \
+ -DFORTE_MODULE_SysFs=ON"
+
+ compile "${ARM_ARCH}" "rpi" "${RPI_FLAGS}"
+fi
+
+###################################################################
+################# COMPILE FOR EMBRICK #############################
+###################################################################
+if [ "${EMBRICK_ENABLED}" -eq "1" ]; then
+ EMBRICK_FLAGS="-DFORTE_ARCHITECTURE=Posix \
+ ${ARM_COMPILER} \
+ -DFORTE_IO=ON \
+ -DFORTE_IO_EMBRICK=ON"
+
+ compile "${ARM_ARCH}" "embrick" "${EMBRICK_FLAGS}"
+fi
diff --git a/docker/scripts/commonFunctions.sh b/docker/scripts/commonFunctions.sh
new file mode 100755
index 0000000..f7201a7
--- /dev/null
+++ b/docker/scripts/commonFunctions.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+#*******************************************************************************************
+# Copyright (c) 2020 fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral
+# - initial implementation
+# ******************************************************************************************
+
+# exit when any command fails
+set -e
+
+# store the the last executed command
+trap 'lastCommand=$currentCommand; currentCommand=$BASH_COMMAND' DEBUG
+# echo an error message before exiting
+trap 'if [ $? -eq 0 ]; then echo \"The script exited without errors\"; else echo "\"${lastCommand}\" command failed with exit code $?."; fi' EXIT
+
+function printHelp(){
+ echo "Usage: buildAll.sh [-A] [-M] [-r] [-e] [-x] [-o] [-m] [-l] [-h] [-U ARGS]"
+ echo -e "\t-A Enable all devices"
+ echo -e "\t-M Enable all modules"
+ echo -e "\t-r Enable raspberry pi device"
+ echo -e "\t-e Enable embrick device"
+ echo -e "\t-x Enable linux32 device"
+ echo -e "\t-o Enable opcua module"
+ echo -e "\t-m Enable mqtt module"
+ echo -e "\t-l Enable lua module"
+ echo -e "\t-U ARG Pass user arguments to the compilation"
+ echo -e "\t-h Print this message"
+}
+
+
+OPCUA_ENABLED=0
+MQTT_ENABLED=0
+LUA_ENABLED=0
+LINUX32_ENABLED=0
+RPI_ENABLED=0
+EMBRICK_ENABLED=0
+ARM_ENABLED=0 # If rpi or embrick is enabled, this is also enabled. It helps with clarity when getting the tools and compiling the needed modules
+USER_FLAGS=""
+
+while getopts ":AMrexomlhU:" opt; do
+ case ${opt} in
+ A )
+ LINUX32_ENABLED=1
+ RPI_ENABLED=1
+ EMBRICK_ENABLED=1
+ ARM_ENABLED=1
+ ;;
+ M )
+ OPCUA_ENABLED=1
+ MQTT_ENABLED=1
+ LUA_ENABLED=1
+ ;;
+ r )
+ RPI_ENABLED=1
+ ARM_ENABLED=1
+ ;;
+ e )
+ EMBRICK_ENABLED=1
+ ARM_ENABLED=1
+ ;;
+ x )
+ LINUX32_ENABLED=1
+ ;;
+ o )
+ OPCUA_ENABLED=1
+ ;;
+ m )
+ MQTT_ENABLED=1
+ ;;
+ l )
+ LUA_ENABLED=1
+ ;;
+ h ) printHelp
+ exit 1
+ ;;
+ U )
+ USER_FLAGS="${OPTARG}"
+ ;;
+ \? )
+ printHelp
+ exit 1
+ ;;
+ esac
+done
+
+##################################
+# Print message in a nice format #
+# $1: message to be printed #
+##################################
+function printMessage(){
+ SIZE_OF_MESSAGE=$((${#1} + 4))
+ WRAPPER=$(printf '#%.0s' $(eval "echo {1.."$(($SIZE_OF_MESSAGE))"}"))
+ echo -e "\n$WRAPPER"
+ printf '# %s #\n' "$1"
+ echo -e "$WRAPPER\n"
+}
+
+#################################
+# Clean folder and go inside it #
+# $1: Folder to clean #
+#################################
+function cleanFolderAndGoThere(){
+ if [ -d "${1}" ];
+ then
+ rm -r "${1}"
+ fi
+
+ mkdir -p "${1}"
+ cd "${1}"
+}
diff --git a/docker/scripts/prepareOtherRepos.sh b/docker/scripts/prepareOtherRepos.sh
new file mode 100755
index 0000000..0eed145
--- /dev/null
+++ b/docker/scripts/prepareOtherRepos.sh
@@ -0,0 +1,339 @@
+#!/bin/bash
+#*******************************************************************************************
+# Copyright (c) 2020 fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral
+# - initial implementation
+# ******************************************************************************************
+
+# exit when any command fails
+set -e
+
+# store the the last executed command
+trap 'lastCommand=$currentCommand; currentCommand=$BASH_COMMAND' DEBUG
+# echo an error message before exiting
+trap 'if [ $? -eq 0 ]; then echo \"The script exited without errors\"; else echo "\"${lastCommand}\" command failed with exit code $?."; fi' EXIT
+
+BASH_SCRIPT_PATH="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+source ${BASH_SCRIPT_PATH}/commonFunctions.sh "$@"
+
+####################################################################
+##################### Variables ###################################
+####################################################################
+
+# The following variables are used in the script and can be set before
+# calling the script:
+# - TOOLS_DIR: absolut path where the needed tools will be installed. Default /usr/tools/
+# - ARM_TOOLS_NAME: folder name inside the TOOLS_DIR where the arm-bcm2708 folder is installed. Default armTools
+# - REPOS_DIR: absolut path to the folder containing all repostories. Default /usr/repos/
+# - MBEDTLS_FOLDER_NAME: name of the folder containing the mbetdls repository. Default mbedtls
+# - OPCUA_FOLDER_NAME: name of the folder containing the open62541 repository. Default open62541
+# - MQTT_FOLDER_NAME: name of the folder containing the paho mqtt repository. Default paho.mqtt.c
+# - LUA_FOLDER_NAME: name of the folder containing the luajit repository. Default luajit-2.0
+# - LINUX32_ARCH: name for the build folder when compiling for linux32 architecture. Default linux32
+# - ARM_ARCH: name for the build folder when compiling for arm architecture. Default arm
+# - CLEAN_ALL: if set to 1, it will compile even if the libraries are found. Default 0
+
+if [ -z "$TOOLS_DIR" ]; then
+ TOOLS_DIR=/usr/tools/
+fi
+
+if [ -z "$REPOS_DIR" ]; then
+ REPOS_DIR=/usr/repos/
+fi
+
+if [ -z "$ARM_TOOLS_NAME" ]; then
+ ARM_TOOLS_NAME=armTools
+fi
+
+if [ -z "$MBEDTLS_FOLDER_NAME" ]; then
+ MBEDTLS_FOLDER_NAME=mbedtls
+fi
+
+if [ -z "$OPCUA_FOLDER_NAME" ]; then
+ OPCUA_FOLDER_NAME=open62541
+fi
+
+if [ -z "$MQTT_FOLDER_NAME" ]; then
+ MQTT_FOLDER_NAME=paho.mqtt.c
+fi
+
+if [ -z "$LUA_FOLDER_NAME" ]; then
+ LUA_FOLDER_NAME=luajit-2.0
+fi
+
+if [ -z "$LINUX32_ARCH" ]; then
+ LINUX32_ARCH=linux32
+fi
+
+if [ -z "$ARM_ARCH" ]; then
+ ARM_ARCH=arm
+fi
+
+ARM_BIN="${TOOLS_DIR}${ARM_TOOLS_NAME}/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin"
+ARM_ROOT="${TOOLS_DIR}${ARM_TOOLS_NAME}/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf"
+CLEAN_ALL=0
+
+LUA_EXTRA_FLAGS=""
+CMAKE_EXTRA_FLAGS=""
+
+####################################################################
+##################### FUNCTIONS ###################################
+####################################################################
+
+#################################
+# Compile mbedtls #
+# - $1: architecture to build #
+#################################
+function compileMbetls(){
+ if [ ${CLEAN_ALL} -eq "1" ] || ! [ -f "${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/bin/${1}/library/libmbedcrypto.a" ]; then
+
+ printMessage "Compiling mbedtls for ${1}"
+
+ cleanFolderAndGoThere "${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/bin/${1}"
+
+ cmake -DENABLE_TESTING=Off \
+ ${CMAKE_EXTRA_FLAGS} \
+ "${REPOS_DIR}${MBEDTLS_FOLDER_NAME}" && \
+ make -j8
+ else
+ printMessage "Library for mbedtls for $1 already found and won't be recompiled"
+ fi
+}
+
+#################################
+# Compile open62541 #
+# - $1: architecture to build #
+#################################
+function compileOpen62541(){
+ if [ ${CLEAN_ALL} -eq "1" ] || ! [ -f "${REPOS_DIR}${OPCUA_FOLDER_NAME}/bin/${1}/bin/libopen62541.a" ]; then
+ printMessage "Compiling open62541 for ${1}"
+
+ cleanFolderAndGoThere "${REPOS_DIR}${OPCUA_FOLDER_NAME}/bin/${1}"
+
+ cmake -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DUA_ENABLE_AMALGAMATION=ON \
+ -DUA_ENABLE_ENCRYPTION=ON \
+ -DMBEDCRYPTO_LIBRARY="${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/bin/${1}/library/libmbedcrypto.a" \
+ -DMBEDTLS_LIBRARY="${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/bin/${1}/library/libmbedtls.a" \
+ -DMBEDX509_LIBRARY="${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/bin/${1}/library/libmbedx509.a" \
+ -DMBEDTLS_INCLUDE_DIRS="${REPOS_DIR}${MBEDTLS_FOLDER_NAME}/include" \
+ ${CMAKE_EXTRA_FLAGS} \
+ ${REPOS_DIR}${OPCUA_FOLDER_NAME} && \
+ make -j8
+ else
+ printMessage "Library for open62541 for $1 already found and won't be recompiled"
+ fi
+}
+
+#################################
+# Compile luajit #
+# - $1: architecture to build #
+#################################
+function compileLuajit(){
+ if [ ${CLEAN_ALL} -eq "1" ] || ! [ -f "${REPOS_DIR}${LUA_FOLDER_NAME}_bin/${1}/lib/libluajit-5.1.so" ]; then
+ #We create a new folder in the repos folder to copy all files to compile.
+ #We don't create inside the luajit repo since it might create problems
+ #copying recursive itself
+ CURRENT_FOLDER="${REPOS_DIR}${LUA_FOLDER_NAME}_bin/${1}"
+
+ printMessage "Compiling luajit for ${1}"
+
+ cleanFolderAndGoThere "${CURRENT_FOLDER}"
+
+ #The later eval LUA_COMMAND helps avoid expansion problems of LUA_EXTRA_FLAGS related to the debugging information which adds single quoutes
+ LUA_COMMAND="make ${LUA_EXTRA_FLAGS:+"$LUA_EXTRA_FLAGS"} PREFIX=${CURRENT_FOLDER} -j8"
+
+ cp -R ${REPOS_DIR}${LUA_FOLDER_NAME}/* ./ && \
+ eval "$LUA_COMMAND" && \
+ make install PREFIX="${CURRENT_FOLDER}" -j8
+ else
+ printMessage "Library for luajit for $1 already found and won't be recompiled"
+ fi
+}
+
+#################################
+# Compile paho mqtt #
+# - $1: architecture to build #
+#################################
+function compileMqtt(){
+ if [ ${CLEAN_ALL} -eq "1" ] || ! [ -f "${REPOS_DIR}${MQTT_FOLDER_NAME}/bin/${1}/src/libpaho-mqtt3a-static.a" ]; then
+ printMessage "Compiling paho mqtt for ${1}"
+
+ cleanFolderAndGoThere "${REPOS_DIR}${MQTT_FOLDER_NAME}/bin/${1}"
+
+ cmake -DPAHO_ENABLE_TESTING=OFF \
+ -DPAHO_BUILD_STATIC=ON \
+ ${CMAKE_EXTRA_FLAGS} \
+ ${REPOS_DIR}${MQTT_FOLDER_NAME} && \
+ make -j8
+ else
+ printMessage "Library for mqtt for $1 already found and won't be recompiled"
+ fi
+}
+
+#################################
+# Compile all #
+# - $1: architecture to build #
+#################################
+function compileAll(){
+
+ if [ "${OPCUA_ENABLED}" -eq "1" ]; then
+ compileMbetls "${1}"
+ compileOpen62541 "${1}"
+ fi
+
+ if [ "${LUA_ENABLED}" -eq "1" ]; then
+ compileLuajit "${1}"
+ fi
+
+ if [ "${MQTT_ENABLED}" -eq "1" ]; then
+ compileMqtt "${1}"
+ fi
+
+}
+
+################################################################
+##################### TOOLS ###################################
+################################################################
+
+if [ "${ARM_ENABLED}" -eq "1" ]; then
+ #####################################
+ # Get ARM Compiler from repositorty #
+ #####################################
+ if ! [ -d "${TOOLS_DIR}${ARM_TOOLS_NAME}/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin" ]
+ then
+ printMessage "Getting compiler for ARM"
+
+ mkdir -p ${TOOLS_DIR}${ARM_TOOLS_NAME}_temp/ && \
+ mkdir -p ${TOOLS_DIR}${ARM_TOOLS_NAME}/arm-bcm2708/ && \
+ git clone https://github.com/raspberrypi/tools ${TOOLS_DIR}${ARM_TOOLS_NAME}_temp/ && \
+ mv ${TOOLS_DIR}${ARM_TOOLS_NAME}_temp/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ ${TOOLS_DIR}${ARM_TOOLS_NAME}/arm-bcm2708/ && \
+ rm -r ${TOOLS_DIR}${ARM_TOOLS_NAME}_temp/
+ fi
+fi
+
+####################################################################
+##################### REPOS ######################################
+####################################################################
+
+########################
+# Prepare repos folder #
+########################
+
+CURRENT_FOLDER="${REPOS_DIR}"
+
+if ! [ -d "${CURRENT_FOLDER}" ]
+then
+ printMessage "Creating folder to hold repositories"
+ mkdir -p ${CURRENT_FOLDER}
+fi
+
+if [ "${OPCUA_ENABLED}" -eq "1" ]; then
+ ###################
+ # Prepare mbedtls #
+ ###################
+
+ CURRENT_FOLDER="${REPOS_DIR}${MBEDTLS_FOLDER_NAME}"
+
+ if ! [ -d "${CURRENT_FOLDER}" ]
+ then
+ printMessage "Creating folder for mbetdls repository"
+
+ mkdir -p "${CURRENT_FOLDER}" && \
+ git clone https://github.com/ARMmbed/mbedtls "${CURRENT_FOLDER}"
+ fi
+
+ cd "${CURRENT_FOLDER}" && \
+ git checkout mbedtls-2.7.1
+
+ #####################
+ # Prepare open62541 #
+ #####################
+
+ CURRENT_FOLDER="${REPOS_DIR}${OPCUA_FOLDER_NAME}"
+
+ if ! [ -d "${CURRENT_FOLDER}" ]
+ then
+ printMessage "Creating folder for opcua repository"
+
+ mkdir -p "${CURRENT_FOLDER}" && \
+ git clone https://github.com/open62541/open62541.git "${CURRENT_FOLDER}"
+ fi
+
+ cd "${CURRENT_FOLDER}" && \
+ git checkout v1.0 && \
+ git submodule update --recursive --init
+
+fi
+
+if [ "${LUA_ENABLED}" -eq "1" ]; then
+ ##################
+ # Prepare luajit #
+ ##################
+
+ CURRENT_FOLDER="${REPOS_DIR}${LUA_FOLDER_NAME}"
+
+ if ! [ -d "${CURRENT_FOLDER}" ]
+ then
+ printMessage "Creating folder for lua repository"
+
+ mkdir -p "${CURRENT_FOLDER}" && \
+ git clone http://luajit.org/git/luajit-2.0.git "${CURRENT_FOLDER}"
+ fi
+
+ cd "${CURRENT_FOLDER}" && \
+ git checkout v2.0
+
+fi
+
+if [ "${MQTT_ENABLED}" -eq "1" ]; then
+ #####################
+ # Prepare paho mqtt #
+ #####################
+
+ CURRENT_FOLDER="${REPOS_DIR}${MQTT_FOLDER_NAME}"
+
+ if ! [ -d "${CURRENT_FOLDER}" ]
+ then
+ printMessage "Creating folder for mqtt repository"
+
+ mkdir -p "${CURRENT_FOLDER}" && \
+ git clone https://github.com/eclipse/paho.mqtt.c.git "${CURRENT_FOLDER}"
+ fi
+
+ cd "${CURRENT_FOLDER}" && \
+ git checkout v1.2.1
+fi
+
+
+###################################################################
+############# COMPILE FOR LINUX32 #################################
+###################################################################
+if [ "${LINUX32_ENABLED}" -eq "1" ]; then
+ LUA_EXTRA_FLAGS=""
+ CMAKE_EXTRA_FLAGS=""
+
+ compileAll "${LINUX32_ARCH}"
+fi
+
+###################################################################
+################# COMPILE FOR ARM #################################
+###################################################################
+
+if [ "${ARM_ENABLED}" -eq "1" ]; then
+ LUA_EXTRA_FLAGS="HOST_CC='gcc -m32' CROSS=${ARM_BIN}/arm-linux-gnueabihf-"
+ CMAKE_EXTRA_FLAGS="-DCMAKE_C_COMPILER=${ARM_BIN}/arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=${ARM_BIN}/arm-linux-gnueabihf-g++ -DCMAKE_FIND_ROOT_PATH=${ARM_ROOT}"
+
+ export LDFLAGS=-lrt #This flag is needed for mqtt. If can be added to te regular flags, it will be nicer
+ compileAll "${ARM_ARCH}"
+ unset LDFLAGS
+fi
\ No newline at end of file
diff --git a/src/arch/CMakeLists.txt b/src/arch/CMakeLists.txt
index 8ebf22b..e69df6e 100644
--- a/src/arch/CMakeLists.txt
+++ b/src/arch/CMakeLists.txt
@@ -30,7 +30,7 @@
forte_add_sourcefile_hcpp(timerha devlog)
-SET(FORTE_LOGGER_BUFFER_SIZE "300" CACHE NUMBER "Buffer's length of the logger")
+SET(FORTE_LOGGER_BUFFER_SIZE "300" CACHE STRING "Buffer's length of the logger")
mark_as_advanced(FORTE_LOGGER_BUFFER_SIZE)
forte_add_custom_configuration("#define FORTE_LOGGER_BUFFER_SIZE ${FORTE_LOGGER_BUFFER_SIZE}")
diff --git a/src/arch/utils/mainparam_utils.cpp b/src/arch/utils/mainparam_utils.cpp
index 50ee541..31c846e 100644
--- a/src/arch/utils/mainparam_utils.cpp
+++ b/src/arch/utils/mainparam_utils.cpp
@@ -28,8 +28,15 @@
printf("%-20s Set the boot-file where to read from to load the applications\n", " -f <file>");
#endif
#ifdef FORTE_COM_OPC_UA
- printf("%-20s Set the listening port for the OPC UA connection\n", " -o <Port>");
+ printf("%-20s Set the listening port for the OPC UA connection\n", " -op <port>");
+ printf("%-20s Set the configuration file for the OPC UA clients\n", " -oc <file>");
#endif //FORTE_COM_OPC_UA
+#ifdef FORTE_COM_PAHOMQTT
+ printf("%-20s Set the configuration file for the MQTT clients\n", " -mc <file>");
+#endif //FORTE_COM_PAHOMQTT
+#ifdef FORTE_COM_HTTP
+ printf("%-20s Set the listening port for the HTTP server\n", " -Hp <port>");
+#endif //FORTE_COM_HTTP
}
/*!\brief Parses the command line arguments passed to the main function
@@ -52,10 +59,28 @@
break;
#endif //FORTE_SUPPORT_BOOT_FILE
#ifdef FORTE_COM_OPC_UA
- case 'o': //! Retrieves OPCUA server port number entered from the command line
- gOpcuaServerPort = static_cast<TForteUInt16>(atoi(arg[i + 1]));
+ case 'o':
+ if('p' == arg[i][2]) { //! Retrieves OPCUA server port number entered from the command line
+ gOpcuaServerPort = static_cast<TForteUInt16>(atoi(arg[i + 1]));
+ } else if('c' == arg[i][2]) { //! Retrieves OPCUA configuration file for clients entered from the command line
+ gOpcuaClientConfigFile = arg[i + 1];
+ }
break;
#endif //FORTE_COM_OPC_UA
+#ifdef FORTE_COM_PAHOMQTT
+ case 'm':
+ if('c' == arg[i][2]) { //! Retrieves MQTT configuration file for clients entered from the command line
+ gMqttClientConfigFile = arg[i + 1];
+ }
+ break;
+#endif //FORTE_COM_PAHOMQTT
+#ifdef FORTE_COM_HTTP
+ case 'H':
+ if('p' == arg[i][2]) { //! Retrieves HTTP server port number entered from the command line
+ gHTTPServerPort = static_cast<TForteUInt16>(atoi(arg[i + 1]));
+ }
+ break;
+#endif //FORTE_COM_HTTP
default: //! Unknown parameter or -h -> Lists the help for FORTE
return "";
}
diff --git a/src/arch/win32/CMakeLists.txt b/src/arch/win32/CMakeLists.txt
index 52d6c4e..53f625f 100644
--- a/src/arch/win32/CMakeLists.txt
+++ b/src/arch/win32/CMakeLists.txt
@@ -16,7 +16,7 @@
if("${FORTE_ARCHITECTURE}" STREQUAL "Win32")
- add_subdirectory ( serlayer )
+ add_subdirectory(serlayer)
forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
forte_add_sourcefile_h(fortealloc.h ../forte_architecture_time.h)
@@ -46,20 +46,21 @@
forte_add_sourcefile_h(sockhand.h)
endif(FORTE_COM_ETH)
- forte_add_definition("-DFORTE_LITTLE_ENDIAN") # -DNONAMESPACE -DWITH_NONAMESPACES)
+ forte_add_definition("-DFORTE_LITTLE_ENDIAN")
-# TODO this flag was originaly wrongly added to the definitions. May be necessary to be added as link flag. However currently working fine.
+# TODO this flag was originally wrongly added to the definitions. May be necessary to be added as link flag. However currently working fine.
# forte_add_link_flags("/NODEFAULTLIB:MSVCRT.lib")
- forte_add_link_library(comctl32.lib)
- forte_add_link_library(rpcrt4.lib)
- forte_add_link_library(winmm.lib)
- forte_add_link_library(ws2_32.lib)
- forte_add_link_library(version.lib)
+ forte_add_link_library(comctl32)
+ forte_add_link_library(rpcrt4)
+ forte_add_link_library(winmm)
+ forte_add_link_library(ws2_32)
+ forte_add_link_library(version)
if(MINGW)
#force MINGW to statically link libc and lib stdc++ so that no mingw dlls are needed for forte.exe
forte_add_link_flags("-static-libgcc -static-libstdc++")
+ forte_add_definition("-W -Wall -Wextra -Woverloaded-virtual -Wconversion -Wshadow")
elseif(MSVC)
forte_add_definition("-wd4595") #warning 4595: 'operator delete/delete[]': non-member operator new or delete functions may not be declared inline
forte_add_definition("-wd4290") #warning 4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow). A function is declared using exception specification, which Visual C++ accepts but does not implement. (from new/delete warning)
diff --git a/src/arch/win32/forte_sem.cpp b/src/arch/win32/forte_sem.cpp
index 7cd4e37..0eeeb9b 100644
--- a/src/arch/win32/forte_sem.cpp
+++ b/src/arch/win32/forte_sem.cpp
@@ -40,7 +40,7 @@
}
bool CWin32Semaphore::timedWait(TForteUInt64 paRelativeTimeout){
- return (0 == WaitForSingleObject(mSemaphore, static_cast<DWORD>(paRelativeTimeout / 1E6)));
+ return (0 == WaitForSingleObject(mSemaphore, static_cast<DWORD>(paRelativeTimeout / 1000000 /* 1E6*/)));
}
bool CWin32Semaphore::tryNoWait(){
diff --git a/src/arch/win32/pctimeha.cpp b/src/arch/win32/pctimeha.cpp
index a73cfb7..622415c 100644
--- a/src/arch/win32/pctimeha.cpp
+++ b/src/arch/win32/pctimeha.cpp
@@ -27,50 +27,6 @@
disableHandler();
}
-/*
- HANDLE gDoneEvent;
-
- VOID CALLBACK TimerRoutine(PVOID lpParam, BOOLEAN TimerOrWaitFired)
- {
- CPCTimerHandler *timerHandler = (CPCTimerHandler*) lpParam;
- if(timerHandler != 0){
- if(timerHandler->isAlive() ){
- timerHandler->nextTick();
- }
- else{
- SetEvent(gDoneEvent);
- }
- }
- }
-
-
- bool CPCTimerHandler::run(){
-
- HANDLE hTimer = NULL;
-
- // Use an event object to track the TimerRoutine execution
- gDoneEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- if (NULL == gDoneEvent){
- return false;
- }
-
- // Set a timer to call the timer routine in 10 seconds.
- if (!CreateTimerQueueTimer( &hTimer, 0, (WAITORTIMERCALLBACK)TimerRoutine, this, 0, 1000 / CPCTimerHandler::csm_nTicksPerSecond, 0))
- {
- return false;
- }
-
- if (WaitForSingleObject(gDoneEvent, INFINITE) != WAIT_OBJECT_0)
- return false;
-
- DeleteTimerQueueTimer(0, hTimer,0);
-
- CloseHandle(gDoneEvent);
-
-
- return true;
- }*/
-
void CPCTimerHandler::run(){
DWORD stReq = 0; // in us
LARGE_INTEGER stReqTimeVal = { 0, 0 };
@@ -125,11 +81,11 @@
end();
}
-void CPCTimerHandler::setPriority(int pa_nPriority){
- //TODO think on hwo to handle this.
+void CPCTimerHandler::setPriority(int) {
+ //TODO think on how to handle this.
}
int CPCTimerHandler::getPriority(void) const{
- //TODO think on hwo to handle this.
+ //TODO think on how to handle this.
return 1;
}
diff --git a/src/arch/win32/win32socketinterf.cpp b/src/arch/win32/win32socketinterf.cpp
index fd1a508..05218bf 100644
--- a/src/arch/win32/win32socketinterf.cpp
+++ b/src/arch/win32/win32socketinterf.cpp
@@ -39,20 +39,20 @@
TSocketDescriptor nSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(INVALID_SOCKET != nSocket){
- struct sockaddr_in stSockAddr = { 0 };
+ struct sockaddr_in stSockAddr = { };
stSockAddr.sin_family = AF_INET;
stSockAddr.sin_port = htons(pa_nPort);
stSockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
int nOptVal = 1;
- if(setsockopt(nSocket, SOL_SOCKET, SO_REUSEADDR, (char *) &nOptVal, sizeof(nOptVal)) == -1){
+ if(SOCKET_ERROR == setsockopt(nSocket, SOL_SOCKET, SO_REUSEADDR, (char*) &nOptVal, sizeof(nOptVal))) {
LPSTR pacErrorMessage = getErrorMessage(WSAGetLastError());
DEVLOG_ERROR("CWin32SocketInterface: could not set socket option SO_REUSEADDR: %s\n", pacErrorMessage);
LocalFree(pacErrorMessage);
}
if(0 == bind(nSocket, (struct sockaddr *) &stSockAddr, sizeof(struct sockaddr))){
- if(-1 == listen(nSocket, 1)){ // for the classic IEC 61499 server only one connection at the same time is accepted TODO mayb make this adjustable for future extensions
+ if(SOCKET_ERROR == listen(nSocket, 1)) { // for the classic IEC 61499 server only one connection at the same time is accepted TODO mayb make this adjustable for future extensions
int nLastError = WSAGetLastError();
LPSTR pacErrorMessage = getErrorMessage(nLastError);
DEVLOG_ERROR("CWin32SocketInterface: listen() failed: %d - %s\n", nLastError, pacErrorMessage);
@@ -84,15 +84,15 @@
DEVLOG_INFO("CWin32SocketInterface: Opening TCP-Client connection at: %s:%d\n", pa_acIPAddr, pa_nPort);
- if(-1 != nSocket){
- struct sockaddr_in stSockAddr = { 0 };
+ if(INVALID_SOCKET != nSocket) {
+ struct sockaddr_in stSockAddr = { };
stSockAddr.sin_family = AF_INET;
stSockAddr.sin_port = htons(pa_nPort);
if(1 != InetPton(stSockAddr.sin_family, pa_acIPAddr, &(stSockAddr.sin_addr))) {
DEVLOG_ERROR("CWin32SocketInterface: InetPton() failed: %d - %s\n", stSockAddr.sin_addr.s_addr, pa_acIPAddr);
}
- if(-1 == connect(nSocket, (struct sockaddr *) &stSockAddr, sizeof(struct sockaddr))){
+ if(SOCKET_ERROR == connect(nSocket, (struct sockaddr*) &stSockAddr, sizeof(struct sockaddr))) {
int nLastError = WSAGetLastError();
LPSTR pacErrorMessage = getErrorMessage(nLastError);
DEVLOG_ERROR("CWin32SocketInterface: connect() failed: %d - %s\n", nLastError, pacErrorMessage);
@@ -148,9 +148,9 @@
int CWin32SocketInterface::receiveDataFromTCP(TSocketDescriptor pa_nSockD, char* pa_pcData, unsigned int pa_unBufSize){
int nRetVal;
do{
- nRetVal = static_cast<int>(recv(pa_nSockD, pa_pcData, pa_unBufSize, 0));
- } while((-1 == nRetVal) && (WSAEINTR == h_errno)); // recv got interrupt / recieving again
- if(nRetVal == -1){
+ nRetVal = recv(pa_nSockD, pa_pcData, pa_unBufSize, 0);
+ } while((SOCKET_ERROR == nRetVal) && (WSAEINTR == h_errno)); // recv got interrupt / recieving again
+ if(SOCKET_ERROR == nRetVal) {
int nLastError = WSAGetLastError();
LPSTR pacErrorMessage = getErrorMessage(nLastError);
DEVLOG_ERROR("CWin32SocketInterface: TCP-Socket recv() failed: %d - %s\n", nLastError, pacErrorMessage);
@@ -166,7 +166,7 @@
DEVLOG_INFO("CWin32SocketInterface: Opening UDP sending connection at: %s:%d\n", pa_acIPAddr, pa_nPort);
TSocketDescriptor nRetVal = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if(-1 != nRetVal){
+ if(INVALID_SOCKET != nRetVal) {
m_ptDestAddr->sin_family = AF_INET;
m_ptDestAddr->sin_port = htons(pa_nPort);
InetPton(m_ptDestAddr->sin_family, pa_acIPAddr, &(m_ptDestAddr->sin_addr));
@@ -186,7 +186,7 @@
TSocketDescriptor nRetVal = INVALID_SOCKET;
TSocketDescriptor nSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if(-1 != nSocket){
+ if(INVALID_SOCKET != nSocket) {
int nReuseAddrVal = 1;
if(0 <= setsockopt(nSocket, SOL_SOCKET, SO_REUSEADDR, (char *) &nReuseAddrVal, sizeof(nReuseAddrVal))){
struct sockaddr_in stSockAddr;
@@ -251,10 +251,10 @@
int CWin32SocketInterface::receiveDataFromUDP(TSocketDescriptor pa_nSockD, char* pa_pcData, unsigned int pa_unBufSize){
int nRetVal;
do{
- nRetVal = static_cast<int>(recvfrom(pa_nSockD, pa_pcData, pa_unBufSize, 0, 0, 0));
- } while((-1 == nRetVal) && (WSAEINTR == h_errno)); // recv got interrupt / recieving again
+ nRetVal = recvfrom(pa_nSockD, pa_pcData, pa_unBufSize, 0, 0, 0);
+ } while((SOCKET_ERROR == nRetVal) && (WSAEINTR == h_errno)); // recv got interrupt / recieving again
- if(nRetVal == -1){ //
+ if(SOCKET_ERROR == nRetVal) {
int nLastError = WSAGetLastError();
LPSTR pacErrorMessage = getErrorMessage(nLastError);
DEVLOG_ERROR("CWin32SocketInterface: UDP-Socket recvfrom() failed: %d - %s\n", nLastError, pacErrorMessage);
diff --git a/src/core/cominfra/basecommfb.cpp b/src/core/cominfra/basecommfb.cpp
index 9eb117e..ab213ed 100644
--- a/src/core/cominfra/basecommfb.cpp
+++ b/src/core/cominfra/basecommfb.cpp
@@ -24,6 +24,8 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
+#include <devlog.h>
+#include "core/utils/string_utils.h"
using namespace forte::com_infra;
@@ -99,37 +101,24 @@
CComLayer *newLayer = 0;
CComLayer *previousLayer = 0; // Reference to the previous layer as it needs to set the bottom layer
char *layerParams = 0;
- // Loop until reaching the end of the ID
- while ('\0' != *commID) {
- // Get the next layer's ID and parameters
- char * layerID = extractLayerIdAndParams(&commID, &layerParams);
- // If not well formated ID return an error
- if(0 == commID){
- if('\0' != *layerID) {
- retVal = e_InitInvalidId;
- }
- break;
- }
+ while('\0' != *commID) { // Loop until reaching the end of the ID
+ retVal = e_InitInvalidId;
+ char * layerID = extractLayerIdAndParams(&commID, &layerParams); // Get the next layer's ID and parameters
+ if(0 != layerID && '\0' != *layerID) { // If well formated ID, keep going
// Create the new layer
- newLayer = CComLayersManager::createCommunicationLayer(layerID, previousLayer, this);
- if (0 == newLayer) {
- // If the layer can't be created return an error
- retVal = e_InitInvalidId;
- break;
- }
- else if (0 == m_poTopOfComStack) {
- // Assign the newly created layer to the FB
- m_poTopOfComStack = newLayer;
+ newLayer = CComLayersManager::createCommunicationLayer(layerID, previousLayer, this);
+ if(0 != newLayer) { // If the layer could be created, keep going
+ if(0 == m_poTopOfComStack) {
+ m_poTopOfComStack = newLayer; // Assign the newly created layer to the FB
+ }
+
+ previousLayer = newLayer; // Update the previous layer reference
+ retVal = newLayer->openConnection(layerParams); // Open the layer connection
+ }
}
- // Update the previous layer reference
- previousLayer = newLayer;
-
- // Open the layer connection
- retVal = newLayer->openConnection(layerParams);
- if (e_InitOk != retVal) {
- // If it was not opened correctly return the error
+ if(e_InitOk != retVal) { // If it was not opened correctly return the error
break;
}
}
@@ -156,24 +145,33 @@
}
char *CBaseCommFB::extractLayerIdAndParams(char **paRemainingID, char **paLayerParams) {
- char *LayerID = *paRemainingID;
- if ('\0' != **paRemainingID) {
- *paRemainingID = strchr(*paRemainingID, '[');
- if (0 != *paRemainingID) {
- **paRemainingID = '\0';
+ char *layerID = 0;
+ if('\0' != **paRemainingID) {
+ char *possibleLayerId = *paRemainingID;
+ *paRemainingID = forte::core::util::lookForNonEscapedChar(paRemainingID, '[', '\\');
+ if(0 != *paRemainingID) {
++*paRemainingID;
- *paLayerParams = *paRemainingID;
- *paRemainingID = strchr(*paRemainingID, ']');
- if (0 != *paRemainingID) {
- **paRemainingID = '\0';
+ char *possibleLayerParams = *paRemainingID;
+ *paRemainingID = forte::core::util::lookForNonEscapedChar(paRemainingID, ']', '\\');
+ if(0 != *paRemainingID) { //both [ and ] were found so the ID is correct
++*paRemainingID;
- if ('\0' != **paRemainingID) {
+ if('\0' != **paRemainingID) {
++*paRemainingID;
}
+
+ layerID = possibleLayerId;
+ *paLayerParams = possibleLayerParams;
+ forte::core::util::removeEscapedSigns(paLayerParams, '\\');
+ } else {
+ DEVLOG_ERROR("[CBaseCommFB]: No valid closing bracket was found\n");
}
+ } else {
+ DEVLOG_ERROR("[CBaseCommFB]: No valid opening bracket was found\n");
}
+ } else {
+ DEVLOG_ERROR("[CBaseCommFB]: The id of the layer is empty\n");
}
- return LayerID;
+ return layerID;
}
char *CBaseCommFB::buildIDString(const char *paPrefix, const char *paIDRoot, const char *paSuffix) {
diff --git a/src/core/cominfra/basecommfb.h b/src/core/cominfra/basecommfb.h
index 5b73233..bfcbaa1 100644
--- a/src/core/cominfra/basecommfb.h
+++ b/src/core/cominfra/basecommfb.h
@@ -84,6 +84,15 @@
protected:
CBaseCommFB(const CStringDictionary::TStringId pa_nInstanceNameId, CResource *pa_poSrcRes, forte::com_infra::EComServiceType pa_eCommServiceType);
+ /*!\brief Extract the id and the parameter and the ID. The format is ID[PARAMS] where the opening and closing brackets are actually a opening and a closing brackets. They can be escaped using the $ sign.
+ * The opening bracket should only be escaped if it's part of the ID (although not recommended).
+ * The closing bracket should only be escaped if part of PARAMS.
+ * The $ sign should always be escaped
+ *
+ * @param paRemainingID The string to be analyzed. After return, it is already positioned for the next layer
+ * @param paLayerParams pointer to the found PARAMS
+ * @return ID with layer configuration
+ */
static char *extractLayerIdAndParams(char **paRemainingID, char **paLayerParams);
/*!\brief Generate a layer ID formed by a root with a prefix and a suffix
@@ -135,6 +144,12 @@
CComLayer *m_poTopOfComStack;
unsigned int m_unComInterruptQueueCount; //!< number of triggers pending from the network
CComLayer *m_apoInterruptQueue[cg_unCommunicationInterruptQueueSize];
+
+ private:
+ //we don't want that CBaseCommFB can be copied or assigned therefore the copy constructor and assignment operator are declared private
+ //but not implemented
+ CBaseCommFB(const CBaseCommFB&);
+ CBaseCommFB& operator=(const CBaseCommFB& paOther);
};
}
diff --git a/src/core/cominfra/commfb.cpp b/src/core/cominfra/commfb.cpp
index 0f61ad7..8402cc5 100644
--- a/src/core/cominfra/commfb.cpp
+++ b/src/core/cominfra/commfb.cpp
@@ -123,15 +123,17 @@
bool CCommFB::createInterfaceSpec(const char *paConfigString, SFBInterfaceSpec &paInterfaceSpec){
TIdentifier tempstring;
- char *sParamA = 0;
- char *sParamB = 0;
+ const char *sParamA = 0;
+ const char *sParamB = 0;
paInterfaceSpec.m_nNumEIs = 2;
paInterfaceSpec.m_nNumEOs = 2;
- memcpy(tempstring, paConfigString, cg_nIdentifierLength);
+ memcpy(tempstring, paConfigString, (strlen(paConfigString) > cg_nIdentifierLength) ? cg_nIdentifierLength : strlen(paConfigString) + 1); //plus 1 for the null character
tempstring[cg_nIdentifierLength] = '\0';
+
size_t inlength = strlen(tempstring);
+
size_t i;
for (i = 0; i < inlength - 1; i++) { // search first underscore
if (tempstring[i] == '_') {
@@ -156,13 +158,13 @@
configureDOs(sParamB, paInterfaceSpec);
if (forte::com_infra::e_Requester == (forte::com_infra::e_Requester & m_eCommServiceType)) {
- paInterfaceSpec.m_aunEINames = const_cast<CStringDictionary::TStringId*>(scm_aunRequesterEventInputNameIds);
- paInterfaceSpec.m_aunEONames = const_cast<CStringDictionary::TStringId*>(scm_aunRequesterEventOutputNameIds);
+ paInterfaceSpec.m_aunEINames = scm_aunRequesterEventInputNameIds;
+ paInterfaceSpec.m_aunEONames = scm_aunRequesterEventOutputNameIds;
}
else {
if (forte::com_infra::e_Responder == (forte::com_infra::e_Responder & m_eCommServiceType)) {
- paInterfaceSpec.m_aunEINames = const_cast<CStringDictionary::TStringId*>(scm_aunResponderEventInputNameIds);
- paInterfaceSpec.m_aunEONames = const_cast<CStringDictionary::TStringId*>(scm_aunResponderEventOutputNameIds);
+ paInterfaceSpec.m_aunEINames = scm_aunResponderEventInputNameIds;
+ paInterfaceSpec.m_aunEONames = scm_aunResponderEventOutputNameIds;
}
}
paInterfaceSpec.m_anEIWithIndexes = scm_anEIWithIndexes;
diff --git a/src/core/datatypes/forte_any_bit.h b/src/core/datatypes/forte_any_bit.h
index 61d350f..acfd172 100644
--- a/src/core/datatypes/forte_any_bit.h
+++ b/src/core/datatypes/forte_any_bit.h
@@ -1,6 +1,6 @@
/*******************************************************************************
* Copyright (c) 2005 - 2013 Profactor GmbH, ACIN
- *
+ * 2020 Johannes Kepler University Linz
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -11,11 +11,13 @@
* Thomas Strasser, Ingomar Müller, Alois Zoitl, Monika Wenger,
* Martin Melik Merkumians
* - initial implementation and rework communication infrastructure
+ * Ernst Blecha - add multibit partial access
*******************************************************************************/
#ifndef _ANY_BIT_H_
#define _ANY_BIT_H_
#include "forte_any_elementary.h"
+#include <limits>
/*!\ingroup COREDTS IIEC_ANY_BIT represents any bit data types according to IEC 61131.
*/
@@ -30,6 +32,194 @@
CIEC_ANY_BIT() :
CIEC_ANY_ELEMENTARY(){
}
+
+ /*! \brief Set method for data type member value
+ *
+ * The data type value is set using th setLargestUInt method;
+ * This method needs to be derived in case of chaining multiple access elements after one another (e.g. [LWORD].D<1>().W<1>().B<1>().X<1>()).
+ *
+ */
+ virtual void setValuePartial(TLargestUIntValueType paValue) {
+ this->setLargestUInt(paValue);
+ }
+
+ template <class TBase, class TObject>
+ class PARTIAL_ACCESS_TYPE : public TBase {
+ protected:
+ typedef typename TBase::TValueType TBaseType; // Shortcut for the value type used by the access object
+ // evaluates to bool, TForteByte, TForteWord or TForteDWord
+ typedef typename TObject::TValueType TObjectType; // Shortcut for the value type used by the data-object
+ // evaluates to TForteByte, TForteWord, TForteDWord or TForteLWord
+ static const size_t length = std::numeric_limits<TObjectType>::digits/std::numeric_limits<TBaseType>::digits; // amount of accessible elements
+
+ /*! \brief Method to read the partial element form the referenced object
+ *
+ * This is a static method since it is used during object construction
+ *
+ */
+ static TBaseType getPartial(TObject &src, const size_t paIndex){
+ if(paIndex >= length) {
+ return 0; // FAIL SILENT
+ } else if (forte::core::mpl::is_same<TBase,CIEC_BOOL>::value){
+ return ( 0 != (src.getLargestUInt() & ((TLargestUIntValueType)1 << paIndex)));
+ } else {
+ TFortePartial temp;
+ temp.mLargestUInt = src.getLargestUInt();
+ return temp.mData[paIndex];
+ }
+ }
+
+ /*! \brief Method for internally setting the objects data type member value
+ *
+ * Reads the current value from the referenced object, changes the indexed element and writes it back to the referenced object.
+ * Also sets the data type member value of this object in order to allow object reuse by the compiler
+ *
+ */
+ PARTIAL_ACCESS_TYPE<TBase, TObject>& setPartial(TBaseType paValue){
+ if(index < length) {
+ TFortePartial temp;
+ temp.mLargestUInt = dataObject.getLargestUInt();
+ if (forte::core::mpl::is_same<TBase,CIEC_BOOL>::value){
+ if(paValue) {
+ temp.mLargestUInt |= ((TLargestUIntValueType)1 << index);
+ } else {
+ temp.mLargestUInt &= ~((TLargestUIntValueType)1 << index);
+ }
+ } else {
+ temp.mData[index] = paValue;
+ }
+ dataObject.setValuePartial(static_cast<TLargestUIntValueType>(temp.mLargestUInt));
+ TBase::setLargestUInt(paValue); // Store to the temporary object. Otherwise this might behave incorrect on object reuse.
+ }
+ return *this;
+ }
+
+ /*! \brief Set method for data type member value
+ *
+ * The data type value is set through the objects setPartial method;
+ * This derived method handles chaining access elements.
+ *
+ */
+ virtual void setValuePartial(TLargestUIntValueType paValue) {
+ setPartial(static_cast<TBaseType>(paValue));
+ }
+
+ private:
+ union TFortePartial { // Split the data value into multiple indexable elements
+ TLargestUIntValueType mLargestUInt;
+ TBaseType mData[length];
+ };
+
+ TObject& dataObject; // The referenced object which data is pulled from
+ const size_t index; // Index value for accessing the split elements
+ bool accessedOutOfBounds = false; // Flag to indicate Out of Bounds access
+
+ /*! \brief Method for handling endianess conversion
+ *
+ * On little endian systems the index value can directly be returned.
+ * On big endian systems the order of bytes has to be flipped.
+ *
+ */
+ static constexpr size_t endianiseIndex(const size_t paIndex){
+#ifdef FORTE_BIG_ENDIAN
+ return (forte::core::mpl::is_same<TBase,CIEC_BOOL>::value) ? paIndex : length-1-paIndex; // Within bool-data endianess is implicitly correct
+#else //#ifdef FORTE_BIG_ENDIAN
+ return paIndex;
+#ifndef FORTE_LITTLE_ENDIAN
+#error Endianess not defined
+#endif //#ifndef FORTE_LITTLE_ENDIAN
+#endif //#ifdef FORTE_BIG_ENDIAN
+ }
+
+ public:
+ /*! \brief Constructor: Setup of byte/word/dword-access-object
+ *
+ * The data member value is set based on the value of paSrc and the selected index.
+ * Out of Bounds checking is implemented as an additional runtime check.
+ * The index is stored after correction for endianess.
+ */
+ explicit PARTIAL_ACCESS_TYPE(TObject& paSrc, const size_t paIndex) :
+ TBase(getPartial(paSrc,endianiseIndex(paIndex))), dataObject(paSrc), index(endianiseIndex(paIndex)) {
+ static_assert(forte::core::mpl::is_same<TObject,CIEC_BYTE>::value ||
+ forte::core::mpl::is_same<TObject,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TObject,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TObject,CIEC_LWORD>::value, "TObject has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TBase,CIEC_BOOL>::value ||
+ forte::core::mpl::is_same<TBase,CIEC_BYTE>::value ||
+ forte::core::mpl::is_same<TBase,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TBase,CIEC_DWORD>::value, "TBase has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(std::numeric_limits<TObjectType>::digits > std::numeric_limits<TBaseType>::digits, "Partial acces is only possible if accessed element is smaller than the source");
+ if (paIndex >= length) {
+ accessedOutOfBounds = true; // FAIL SILENT
+ }
+ };
+
+ /*! \brief read the state of the Out of Bounds flag
+ *
+ */
+ bool getAccessedOutOfBounds() {
+ return accessedOutOfBounds;
+ }
+
+ /*! \brief Operator: Assignment operator with elementary type as its input
+ *
+ */
+ PARTIAL_ACCESS_TYPE<TBase, TObject>& operator=(TBaseType paValue){
+ return setPartial(paValue); // No need for conversion, TBaseType can be directly assigned
+ }
+
+ /*! \brief Operator: Assignment operator with CIEC_XXXX as its input
+ *
+ */
+ PARTIAL_ACCESS_TYPE<TBase, TObject>& operator =(const TBase &paValue){
+ return setPartial(paValue); // This does conversion from TBase to TBaseType implicitly
+ }
+
+ /*! \brief Operator: setValue method that handles parts correctly (As long as its not a complex data structure - e.g. CIEC_STRING will not work!).
+ *
+ */
+ virtual void setValue(const CIEC_ANY &pa_roValue){
+ TBase::setValue(pa_roValue); //Extract the value using the base class' setValue method
+ if (forte::core::mpl::is_same<TBase,CIEC_BOOL>::value){
+ setPartial(static_cast<TBaseType>(false != this->getLargestUInt()));
+ } else {
+ setPartial(static_cast<TBaseType>(this->getLargestUInt()));
+ }
+ }
+
+ };
+
+ template <class TBase, class TObject, size_t TIndex>
+ class PARTIAL_ACCESS : public CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TBase, TObject>{
+ public:
+ /*! \brief Constructor: Setup of byte/word/dword-access-object
+ *
+ * The data member value is set based on the value of paSrc and the selected index.
+ * Out of Bounds checking is implemented on the index value as a static check; The index therefore has to be known at compile time.
+ * The index is stored after correction for endianess.
+ */
+ explicit PARTIAL_ACCESS(TObject &paSrc) :
+ PARTIAL_ACCESS_TYPE<TBase, TObject>(paSrc, TIndex){
+ static_assert(TIndex < CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TBase,TObject>::length, "Index for partial access out of bounds.");
+ };
+
+ /*! \brief Operator: Assignment operator with elementary type as its input
+ *
+ */
+ PARTIAL_ACCESS<TBase, TObject, TIndex>& operator=(typename CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TBase,TObject>::TBaseType paValue){
+ this->setPartial(paValue); // No need for conversion, TBaseType can be directly assigned
+ return *this;
+ }
+
+ /*! \brief Operator: Assignment operator with CIEC_XXXX as its input
+ *
+ */
+ PARTIAL_ACCESS<TBase, TObject, TIndex>& operator =(const TBase &paValue){
+ this->setPartial(paValue); // This does conversion from TBase to TBaseType implicitly
+ return *this;
+ }
+ };
+
};
#endif /*_MANY_BIT_H_*/
diff --git a/src/core/datatypes/forte_array_at.h b/src/core/datatypes/forte_array_at.h
new file mode 100644
index 0000000..d43c09d
--- /dev/null
+++ b/src/core/datatypes/forte_array_at.h
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ernst Blecha - initial implementation
+ *******************************************************************************/
+#ifndef _FORTE_ARRAY_AT_H_
+#define _FORTE_ARRAY_AT_H_
+
+#ifdef FORTE_USE_64BIT_DATATYPES
+#include <forte_lword.h>
+#else
+#include <forte_dword.h>
+#endif
+
+
+
+template <class TBase, class TObject, const size_t startIndex, const size_t stopIndex>
+class ARRAY_AT {
+
+private:
+ typedef typename TBase::TValueType TBaseType; // Shortcut for the value type used by the access object
+ // evaluates to bool, TForteByte, TForteWord or TForteDWord
+ typedef typename TObject::TValueType TObjectType; // Shortcut for the value type used by the data-object
+ // evaluates to TForteByte, TForteWord, TForteDWord or TForteLWord
+ TObject& dataObject; // The referenced object which data is pulled from
+ TObject dummy; // Dummy object for out of bounds data
+ bool accessedOutOfBounds = false; // Flag to indicate Out of Bounds access
+
+ template <class TO> class ARRAY_AT_ACCESSOR_BASE {
+ protected:
+ TO& dataObject; // The referenced object which data is pulled from
+ TO& dummy; // Dummy object for out of bounds data
+ public:
+ ARRAY_AT_ACCESSOR_BASE<TO>(TO& paDataObject, TO& paDummy): dataObject(paDataObject), dummy(paDummy) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_BYTE>::value ||
+ forte::core::mpl::is_same<TO,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ }
+ };
+
+ template <class TB, class TO, class TData, class TStorage> class ARRAY_AT_ACCESSOR : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ /*! \brief Default implementation of the ARRAY_AT_ACCESSOR-class;
+ * throws a compile-time-error to inform the user that something went terribly wrong.
+ *
+ */
+ ARRAY_AT_ACCESSOR<TB, TO, TData, TStorage>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) {
+ // this static assert should never be compiled; if this happens an unknown type of accessor was requested
+ // if this was just a plain "static_assert(false)" it would still trigger if the template was never instantiated
+ // as BOOL->BYTE is already handled by a specialization the statement will evaluate to false
+ static_assert(forte::core::mpl::is_same<TData, CIEC_BOOL>::value && forte::core::mpl::is_same<TStorage, CIEC_BYTE>::value, "Invalid accessor type requested.");
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BOOL, CIEC_BYTE> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_BYTE>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BOOL within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_BYTE>::value ||
+ forte::core::mpl::is_same<TO,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BOOL>::value, "TB has to be CIEC_BOOL");
+ switch(index) {
+ case 0: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,0>();
+ case 1: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,1>();
+ case 2: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,2>();
+ case 3: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,3>();
+ case 4: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,4>();
+ case 5: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,5>();
+ case 6: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,6>();
+ case 7: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,7>();
+ default: return ARRAY_AT_ACCESSOR_BASE<TO>::dummy.template partial<CIEC_BOOL,0>();
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BOOL, CIEC_WORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_WORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BOOL within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BOOL>::value, "TB has to be CIEC_BOOL");
+ switch(index) {
+ case 8: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,8>();
+ case 9: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,9>();
+ case 10: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,10>();
+ case 11: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,11>();
+ case 12: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,12>();
+ case 13: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,13>();
+ case 14: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,14>();
+ case 15: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,15>();
+ default:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_BYTE> accessor(ARRAY_AT_ACCESSOR_BASE<TO>::dataObject, ARRAY_AT_ACCESSOR_BASE<TO>::dummy);
+ return accessor.getAccessor(index);
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BOOL, CIEC_DWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_DWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BOOL within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BOOL>::value, "TB has to be CIEC_BOOL");
+ switch(index) {
+ case 16: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,16>();
+ case 17: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,17>();
+ case 18: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,18>();
+ case 19: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,19>();
+ case 20: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,20>();
+ case 21: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,21>();
+ case 22: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,22>();
+ case 23: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,23>();
+ case 24: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,24>();
+ case 25: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,25>();
+ case 26: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,26>();
+ case 27: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,27>();
+ case 28: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,28>();
+ case 29: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,29>();
+ case 30: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,30>();
+ case 31: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,31>();
+ default:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_WORD> accessor(ARRAY_AT_ACCESSOR_BASE<TO>::dataObject, ARRAY_AT_ACCESSOR_BASE<TO>::dummy);
+ return accessor.getAccessor(index);
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BOOL, CIEC_LWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_LWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BOOL within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BOOL>::value, "TB has to be CIEC_BOOL");
+ switch(index) {
+ case 32: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,32>();
+ case 33: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,33>();
+ case 34: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,34>();
+ case 35: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,35>();
+ case 36: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,36>();
+ case 37: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,37>();
+ case 38: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,38>();
+ case 39: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,39>();
+ case 40: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,40>();
+ case 41: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,41>();
+ case 42: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,42>();
+ case 43: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,43>();
+ case 44: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,44>();
+ case 45: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,45>();
+ case 46: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,46>();
+ case 47: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,47>();
+ case 48: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,48>();
+ case 49: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,49>();
+ case 50: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,50>();
+ case 51: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,51>();
+ case 52: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,52>();
+ case 53: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,53>();
+ case 54: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,54>();
+ case 55: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,55>();
+ case 56: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,56>();
+ case 57: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,57>();
+ case 58: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,58>();
+ case 59: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,59>();
+ case 60: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,60>();
+ case 61: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,61>();
+ case 62: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,62>();
+ case 63: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BOOL,63>();
+ default:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BOOL, CIEC_DWORD> accessor(ARRAY_AT_ACCESSOR_BASE<TO>::dataObject, ARRAY_AT_ACCESSOR_BASE<TO>::dummy);
+ return accessor.getAccessor(index);
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BYTE, CIEC_WORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BYTE, CIEC_WORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BYTE within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BYTE>::value, "TB has to be CIEC_BYTE");
+ switch(index) {
+ case 0: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,0>();
+ case 1: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,1>();
+ default: return ARRAY_AT_ACCESSOR_BASE<TO>::dummy.template partial<CIEC_BYTE, 0>();
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BYTE, CIEC_DWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BYTE, CIEC_DWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BYTE within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BYTE>::value, "TB has to be CIEC_BYTE");
+ switch(index) {
+ case 2: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,2>();
+ case 3: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,3>();
+ default:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BYTE, CIEC_WORD> accessor(ARRAY_AT_ACCESSOR_BASE<TO>::dataObject, ARRAY_AT_ACCESSOR_BASE<TO>::dummy);
+ return accessor.getAccessor(index);
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_BYTE, CIEC_LWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BYTE, CIEC_LWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a BYTE within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_BYTE>::value, "TB has to be CIEC_BYTE");
+ switch(index) {
+ case 4: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,4>();
+ case 5: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,5>();
+ case 6: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,6>();
+ case 7: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_BYTE,7>();
+ default:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_BYTE, CIEC_DWORD> accessor(ARRAY_AT_ACCESSOR_BASE<TO>::dataObject, ARRAY_AT_ACCESSOR_BASE<TO>::dummy);
+ return accessor.getAccessor(index);
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_WORD, CIEC_DWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_WORD, CIEC_DWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a WORD within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be one of CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_WORD>::value, "TB has to be CIEC_WORD");
+ switch(index) {
+ case 0: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_WORD,0>();
+ case 1: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_WORD,1>();
+ default: return ARRAY_AT_ACCESSOR_BASE<TO>::dummy.template partial<CIEC_WORD,0>();
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_WORD, CIEC_LWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_WORD, CIEC_LWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a WORD within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_WORD>::value, "TB has to be CIEC_WORD");
+ switch(index) {
+ case 2: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_WORD,2>();
+ case 3: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_WORD,3>();
+ default:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_WORD, CIEC_DWORD> accessor(ARRAY_AT_ACCESSOR_BASE<TO>::dataObject, ARRAY_AT_ACCESSOR_BASE<TO>::dummy);
+ return accessor.getAccessor(index);
+ }
+ }
+ };
+
+ template <class TB, class TO> class ARRAY_AT_ACCESSOR <TB, TO, CIEC_DWORD, CIEC_LWORD> : public ARRAY_AT_ACCESSOR_BASE<TO> {
+ public:
+ ARRAY_AT_ACCESSOR<TB, TO, CIEC_DWORD, CIEC_LWORD>(TO& paDataObject, TO& paDummy) : ARRAY_AT_ACCESSOR_BASE<TO>(paDataObject, paDummy) { }
+ /*! \brief Implementation of the getAccessor-Method for accessing a DWORD within ANY_BIT-types
+ *
+ */
+ inline CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TB, TO> getAccessor(size_t index) {
+ static_assert(forte::core::mpl::is_same<TO,CIEC_LWORD>::value, "TO has to be CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TB,CIEC_DWORD>::value, "TB has to be CIEC_DWORD");
+ switch(index) {
+ case 0: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_DWORD,0>();
+ case 1: return ARRAY_AT_ACCESSOR_BASE<TO>::dataObject.template partial<CIEC_DWORD,1>();
+ default: return ARRAY_AT_ACCESSOR_BASE<TO>::dummy.template partial<CIEC_DWORD,0>();
+ }
+ }
+ };
+
+public:
+ /*! \brief Constructor: Setup of array-access-object
+ *
+ * The data member value is set based on the value of paSrc
+ * The valid index range is given by startIndex and stopIndex (both included)
+ */
+ ARRAY_AT(TObject &paSrc) :
+ dataObject(paSrc){
+ const size_t length = std::numeric_limits<typename TObject::TValueType>::digits/std::numeric_limits<typename TBase::TValueType>::digits;
+ static_assert(length > stopIndex, "Invalid index range.");
+ static_assert(startIndex >= 0, "Invalid index range.");
+ static_assert(forte::core::mpl::is_same<TObject,CIEC_BYTE>::value ||
+ forte::core::mpl::is_same<TObject,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TObject,CIEC_DWORD>::value ||
+ forte::core::mpl::is_same<TObject,CIEC_LWORD>::value, "TObject has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(forte::core::mpl::is_same<TBase,CIEC_BOOL>::value ||
+ forte::core::mpl::is_same<TBase,CIEC_BYTE>::value ||
+ forte::core::mpl::is_same<TBase,CIEC_WORD>::value ||
+ forte::core::mpl::is_same<TBase,CIEC_DWORD>::value, "TBase has to be one of CIEC_BYTE, CIEC_WORD, CIEC_DWORD or CIEC_LWORD");
+ static_assert(std::numeric_limits<TObjectType>::digits > std::numeric_limits<TBaseType>::digits, "Partial acces is only possible if accessed element is smaller than the source");
+ };
+
+ /*! \brief Operator: create accessor for the given index
+ *
+ */
+ CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<TBase, TObject> operator[] (const size_t index) {
+ ARRAY_AT_ACCESSOR<TBase, TObject, TBase, TObject> accessor(dataObject, dummy);
+ if (index >= startIndex && index <= stopIndex) {
+ return accessor.getAccessor(index);
+ } else {
+ accessedOutOfBounds = true;
+ return accessor.getAccessor(-1); // FAIL SILENT: return a dummy-object (attention: value is undefined!)
+ }
+ }
+
+ /*! \brief read the state of the Out of Bounds flag
+ *
+ */
+ bool getAccessedOutOfBounds() {
+ return accessedOutOfBounds;
+ }
+
+};
+
+#endif /*_FORTE_ARRAY_AT_H_*/
diff --git a/src/core/datatypes/forte_byte.h b/src/core/datatypes/forte_byte.h
index 963eb02..a268627 100644
--- a/src/core/datatypes/forte_byte.h
+++ b/src/core/datatypes/forte_byte.h
@@ -1,5 +1,6 @@
/*******************************************************************************
* Copyright (c) 2005 - 2013 Profactor GmbH, ACIN
+ * 2020 Johannes Kepler University Linz
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -10,11 +11,13 @@
* Thomas Strasser, Ingomar Müller, Alois Zoitl, Gerhard Ebenhofer,
* Ingo Hegny, Martin Melik-Merkumians, Monika Wenger
* - initial implementation and rework communication infrastructure
+ * Ernst Blecha - add multibit partial access
*******************************************************************************/
#ifndef _FORTE_BYTE_H_
#define _FORTE_BYTE_H_
#include "forte_any_bit.h"
+#include "forte_bool.h"
#include <limits>
/*!\ingroup COREDTS CIEC_BYTE represents the byte data type according to IEC 61131.
@@ -73,6 +76,14 @@
virtual EDataTypeID getDataTypeID() const{
return CIEC_ANY::e_BYTE;
}
+
+ /*! \brief Partial access within a CIEC_BYTE (e.g. [BYTE].partial<CIEC_BOOL,1>())
+ *
+ */
+ template <class T, size_t paIndex> PARTIAL_ACCESS<T, CIEC_BYTE, paIndex> partial(){
+ return PARTIAL_ACCESS<T,CIEC_BYTE, paIndex>(*this);
+ }
+
};
#endif /*_FORTE_BYTE_H_*/
diff --git a/src/core/datatypes/forte_dword.h b/src/core/datatypes/forte_dword.h
index 6a2895c..89440e3 100644
--- a/src/core/datatypes/forte_dword.h
+++ b/src/core/datatypes/forte_dword.h
@@ -1,5 +1,6 @@
/*******************************************************************************
* Copyright (c) 2005 - 2013 Profactor GmbH, ACIN
+ * 2020 Johannes Kepler University Linz
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -10,11 +11,15 @@
* Thomas Strasser, Ingomar Müller, Alois Zoitl, Gerhard Ebenhofer
* Ingo Hegny, Monika Wenger
* - initial implementation and rework communication infrastructure
+ * Ernst Blecha - add multibit partial access
*******************************************************************************/
#ifndef _FORTE_DWORD_H_
#define _FORTE_DWORD_H_
#include "forte_any_bit.h"
+#include "forte_bool.h"
+#include "forte_byte.h"
+#include "forte_word.h"
#include <limits>
/*!\ingroup COREDTS CIEC_DWORD represents the dword data type according to IEC 61131.
@@ -76,6 +81,14 @@
virtual EDataTypeID getDataTypeID() const{
return CIEC_ANY::e_DWORD;
}
+
+ /*! \brief Partial access within a CIEC_DWORD (e.g. [DWORD].partial<CIEC_BOOL,1>())
+ *
+ */
+ template <class T, size_t paIndex> PARTIAL_ACCESS<T, CIEC_DWORD, paIndex> partial(){
+ return PARTIAL_ACCESS<T,CIEC_DWORD, paIndex>(*this);
+ }
+
};
#endif /*_FORTE_DWORD_H_*/
diff --git a/src/core/datatypes/forte_lword.h b/src/core/datatypes/forte_lword.h
index 83ce4fc..87c55ec 100644
--- a/src/core/datatypes/forte_lword.h
+++ b/src/core/datatypes/forte_lword.h
@@ -1,6 +1,6 @@
/*******************************************************************************
* Copyright (c) 2010 - 2013 ACIN
- *
+ * 2020 Johannes Kepler University Linz
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -10,11 +10,16 @@
* Contributors:
* Martin Melik Merkiumians, Alois Zoitl, Monika Wenger
* - initial implementation and rework communication infrastructure
+ * Ernst Blecha - add multibit partial access
*******************************************************************************/
#ifndef _FORTE_LWORD_H_
#define _FORTE_LWORD_H_
#include "forte_any_bit.h"
+#include "forte_bool.h"
+#include "forte_byte.h"
+#include "forte_word.h"
+#include "forte_dword.h"
#include <limits>
#ifdef FORTE_USE_64BIT_DATATYPES
@@ -78,6 +83,14 @@
virtual EDataTypeID getDataTypeID() const{
return CIEC_ANY::e_LWORD;
}
+
+ /*! \brief Partial access within a CIEC_LWORD (e.g. [LWORD].partial<CIEC_BOOL,1>())
+ *
+ */
+ template <class T, size_t paIndex> PARTIAL_ACCESS<T, CIEC_LWORD, paIndex> partial(){
+ return PARTIAL_ACCESS<T,CIEC_LWORD, paIndex>(*this);
+ }
+
};
#endif
diff --git a/src/core/datatypes/forte_word.h b/src/core/datatypes/forte_word.h
index b2399ab..2fe41c3 100644
--- a/src/core/datatypes/forte_word.h
+++ b/src/core/datatypes/forte_word.h
@@ -1,5 +1,6 @@
/*******************************************************************************
* Copyright (c) 2005 - 2013 Profactor GmbH, ACIN
+ * 2020 Johannes Kepler University Linz
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -10,11 +11,14 @@
* Thomas Strasser, Ingomar Müller, Alois Zoitl, Gerhard Ebenhofer, Ingo Hegny,
* Monika Wenger
* - initial implementation and rework communication infrastructure
+ * Ernst Blecha - add multibit partial access
*******************************************************************************/
#ifndef _FORTE_WORD_H_
#define _FORTE_WORD_H_
#include "forte_any_bit.h"
+#include "forte_bool.h"
+#include "forte_byte.h"
#include <limits>
/*!\ingroup COREDTS CIEC_WORD represents the word data type according to IEC 61131.
@@ -76,6 +80,14 @@
virtual EDataTypeID getDataTypeID() const{
return CIEC_ANY::e_WORD;
}
+
+ /*! \brief Partial access within a CIEC_WORD (e.g. [WORD].partial<CIEC_BOOL,1>())
+ *
+ */
+ template <class T, size_t paIndex> PARTIAL_ACCESS<T, CIEC_WORD, paIndex> partial(){
+ return PARTIAL_ACCESS<T,CIEC_WORD, paIndex>(*this);
+ }
+
};
#endif /*_FORTE_WORD_H_*/
diff --git a/src/core/lua/luacfbtypeentry.cpp b/src/core/lua/luacfbtypeentry.cpp
index 66be122..6b3f99e 100644
--- a/src/core/lua/luacfbtypeentry.cpp
+++ b/src/core/lua/luacfbtypeentry.cpp
@@ -50,7 +50,7 @@
}
bool getFBParameter(SCFB_FBParameter& paDef, CLuaEngine* paLuaEngine, int paIndex) {
- paDef.m_acParamValue = paLuaEngine->getField<char *, &CLuaEngine::getString>(paIndex, "paramValue");
+ paDef.m_acParamValue = paLuaEngine->getField<const char *, &CLuaEngine::getString>(paIndex, "paramValue");
paDef.m_nDINameID = paLuaEngine->getField<CStringDictionary::TStringId, &CLuaEngine::getStringId>(paIndex, "diNameID");
paDef.m_nFBNum = paLuaEngine->getField<int, &CLuaEngine::getInteger<int> >(paIndex, "fbNum");
if(paDef.m_nDINameID == CStringDictionary::scm_nInvalidStringId) {
diff --git a/src/core/lua/luaengine.cpp b/src/core/lua/luaengine.cpp
index c789cf0..c9fd842 100644
--- a/src/core/lua/luaengine.cpp
+++ b/src/core/lua/luaengine.cpp
@@ -236,10 +236,10 @@
*static_cast<CIEC_LREAL*>(paValue) = static_cast<TForteDFloat>(lua_tonumber(paLuaState, paIndex));
break;
case CIEC_ANY::e_STRING:
- *static_cast<CIEC_STRING*>(paValue) = strdup(lua_tostring(paLuaState, paIndex));
+ *static_cast<CIEC_STRING*>(paValue) = lua_tostring(paLuaState, paIndex);
break;
case CIEC_ANY::e_WSTRING:
- *static_cast<CIEC_WSTRING*>(paValue) = strdup(lua_tostring(paLuaState, paIndex));
+ *static_cast<CIEC_WSTRING*>(paValue) = lua_tostring(paLuaState, paIndex);
break;
case CIEC_ANY::e_ARRAY:
return luaGetArray(paLuaState, static_cast<CIEC_ARRAY*>(paValue), paIndex);
diff --git a/src/core/lua/luaengine.h b/src/core/lua/luaengine.h
index 9ccf162..3251b50 100644
--- a/src/core/lua/luaengine.h
+++ b/src/core/lua/luaengine.h
@@ -143,8 +143,8 @@
lua_pushstring(luaState, value);
}
- char* getString(int index) {
- return strdup(lua_tostring(luaState, index));
+ const char* getString(int index) {
+ return lua_tostring(luaState, index);
}
void pushStringId(CStringDictionary::TStringId value) {
diff --git a/src/core/monitoring.cpp b/src/core/monitoring.cpp
index cdf4bef..534518d 100644
--- a/src/core/monitoring.cpp
+++ b/src/core/monitoring.cpp
@@ -397,7 +397,7 @@
switch(paDataValue.getDataTypeID()){
case CIEC_ANY::e_WSTRING:
case CIEC_ANY::e_STRING:
- retVal = forte::core::util::getExtraSizeForEscapedChars(static_cast<const CIEC_WSTRING&>(paDataValue).getValue());
+ retVal = forte::core::util::getExtraSizeForXMLEscapedChars(static_cast<const CIEC_WSTRING&>(paDataValue).getValue());
break;
case CIEC_ANY::e_ARRAY:
retVal = getExtraSizeForEscapedCharsArray(static_cast<const CIEC_ARRAY&>(paDataValue));
@@ -419,7 +419,7 @@
case CIEC_ANY::e_WSTRING:
case CIEC_ANY::e_STRING:
for(size_t i = 0; i < paDataValue.size(); i++) {
- retVal += forte::core::util::getExtraSizeForEscapedChars(static_cast<const CIEC_WSTRING*>(paDataValue[static_cast<TForteUInt16>(i)])->getValue()) + 10; //for opening and closing quotes or apos
+ retVal += forte::core::util::getExtraSizeForXMLEscapedChars(static_cast<const CIEC_WSTRING*>(paDataValue[static_cast<TForteUInt16>(i)])->getValue()) + 10; //for opening and closing quotes or apos
}
break;
case CIEC_ANY::e_STRUCT:
@@ -442,7 +442,7 @@
switch(members[i].getDataTypeID()){
case CIEC_ANY::e_WSTRING:
case CIEC_ANY::e_STRING:
- retVal += forte::core::util::getExtraSizeForEscapedChars(static_cast<const CIEC_WSTRING&>(members[i]).getValue()) + 10; //for opening and closing quotes or apos
+ retVal += forte::core::util::getExtraSizeForXMLEscapedChars(static_cast<const CIEC_WSTRING&>(members[i]).getValue()) + 10; //for opening and closing quotes or apos
break;
case CIEC_ANY::e_ARRAY:
retVal += getExtraSizeForEscapedCharsArray(static_cast<const CIEC_ARRAY&>(members[i]));
diff --git a/src/core/resource.cpp b/src/core/resource.cpp
index 77bdc1f..e07d67a 100644
--- a/src/core/resource.cpp
+++ b/src/core/resource.cpp
@@ -262,7 +262,7 @@
switch (var->getDataTypeID()){
case CIEC_ANY::e_WSTRING:
case CIEC_ANY::e_STRING:{
- size_t bufferSize = var->getToStringBufferSize() + forte::core::util::getExtraSizeForEscapedChars(static_cast<CIEC_WSTRING&>(*var).getValue());
+ size_t bufferSize = var->getToStringBufferSize() + forte::core::util::getExtraSizeForXMLEscapedChars(static_cast<CIEC_WSTRING&>(*var).getValue());
nUsedChars = static_cast<CIEC_WSTRING&>(*var).toUTF8(paValue.getValue(), bufferSize, false);
if(bufferSize != var->getToStringBufferSize() && 0 < nUsedChars) { //avoid re-running on strings which were already proven not to have any special character
nUsedChars += static_cast<int>(forte::core::util::transformNonEscapedToEscapedXMLText(paValue.getValue()));
diff --git a/src/core/utils/CMakeLists.txt b/src/core/utils/CMakeLists.txt
index 591fc0d..cb5cfa0 100644
--- a/src/core/utils/CMakeLists.txt
+++ b/src/core/utils/CMakeLists.txt
@@ -18,4 +18,4 @@
forte_add_sourcefile_h(anyhelper.h staticassert.h singlet.h criticalregion.h)
forte_add_sourcefile_h(fortearray.h fixedcapvector.h)
-forte_add_sourcefile_hcpp(string_utils parameterParser)
+forte_add_sourcefile_hcpp(string_utils parameterParser configFileParser)
diff --git a/src/core/utils/configFileParser.cpp b/src/core/utils/configFileParser.cpp
new file mode 100644
index 0000000..b5abd1e
--- /dev/null
+++ b/src/core/utils/configFileParser.cpp
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2019 fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "configFileParser.h"
+#include "../../arch/devlog.h"
+#include "parameterParser.h"
+
+CConfigFileParser::CConfigFileParser(std::string &paFileLocation) {
+ mConfigFile = fopen(paFileLocation.c_str(), "r");
+ if(0 != mConfigFile) {
+ DEVLOG_INFO("[CConfigFileParser]: Configuration file %s opened\n", paFileLocation.c_str());
+ } else {
+ DEVLOG_ERROR("[CConfigFileParser]: Could not open configuration file %s\n", paFileLocation.c_str());
+ }
+}
+
+CConfigFileParser::~CConfigFileParser() {
+ if(0 != mConfigFile) {
+ DEVLOG_INFO("[CConfigFileParser]: Closing configuration file\n");
+ fclose(mConfigFile);
+ }
+}
+
+CConfigFileParser::ParseResult CConfigFileParser::parseNextLine(std::pair<std::string, std::string> &paResult) {
+ ParseResult retVal = eFileNotOpened;
+ if(mConfigFile) {
+ char lineBuf[scmLineBuffer];
+ if(0 != fgets(lineBuf, scmLineBuffer, mConfigFile)) {
+ if(0 == strcmp(lineBuf, "\n")) {
+ retVal = eEmptyLine;
+ } else {
+ CParameterParser lineParser(lineBuf, scmSeparator, scmNumberOfElementsInLine);
+ if(scmNumberOfElementsInLine == lineParser.parseParameters()) {
+ paResult.first = lineParser[0];
+ paResult.second = lineParser[1];
+ retVal = eOk;
+ } else {
+ retVal = eWrongLine;
+ DEVLOG_ERROR("[CConfigFileParser]: The line %s is wrongly formated\n", lineBuf);
+ }
+ }
+ } else {
+ if(feof(mConfigFile)) {
+ retVal = eEndOfFile;
+ } else {
+ retVal = eInternalError;
+ DEVLOG_ERROR("[CConfigFileParser]: There was an internal problem reading the configuration file\n");
+ }
+ }
+ } else {
+ DEVLOG_ERROR("[CConfigFileParser]: Cannot parse next line because the configuration file is not opened\n");
+ }
+
+ return retVal;
+}
+
+bool CConfigFileParser::lookForKeyValueInFile(CConfigFileParser &paFileParse, std::string &paKey, std::string &paValue, bool &paFound) {
+
+ bool retVal = true;
+ bool moreLinesToRead = true;
+ paFound = false;
+
+ while(moreLinesToRead) {
+ std::pair < std::string, std::string > resultPair;
+
+ switch(paFileParse.parseNextLine(resultPair)){
+ case CConfigFileParser::eOk:
+ if(0 == resultPair.first.compare(paKey) && 0 == resultPair.second.compare(paValue)) {
+ paFound = true;
+ moreLinesToRead = false;
+ }
+ break;
+ case CConfigFileParser::eEmptyLine:
+ //do nothing, keep reading
+ break;
+ case CConfigFileParser::eEndOfFile:
+ moreLinesToRead = false;
+ break;
+ case CConfigFileParser::eWrongLine:
+ case CConfigFileParser::eFileNotOpened:
+ case CConfigFileParser::eInternalError:
+ default:
+ retVal = false;
+ moreLinesToRead = false;
+ break;
+ }
+ }
+
+ return retVal;
+}
diff --git a/src/core/utils/configFileParser.h b/src/core/utils/configFileParser.h
new file mode 100644
index 0000000..b143c46
--- /dev/null
+++ b/src/core/utils/configFileParser.h
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2019 fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef SRC_CORE_UTILS_CONFIGFILEPARSER_H_
+#define SRC_CORE_UTILS_CONFIGFILEPARSER_H_
+
+#include <string>
+#include <stdio.h>
+#include <stdlib.h>
+#include <utility> // needed for std::pair
+
+/**
+ * Helper class to parse configuration files. For now, all lines must be formed as key=value or empty lines
+ */
+class CConfigFileParser {
+ public:
+
+ /**
+ * Possible results that can be returned when parsing a line
+ */
+ enum ParseResult {
+ eOk, //!< eOk No problem occurred
+ eEmptyLine, //!< eEmptyLine An empty line was found
+ eEndOfFile, //!< eEndOfFile The end of the file was found
+ eWrongLine, //!< eWrongLine A wrongly formed line was found
+ eFileNotOpened, //!< eFileNotOpened The file is not opened
+ eInternalError, //!< eInternalError An internal error occurred
+ };
+
+ /**
+ * Constructor
+ * @param paFileLocation location of the configuration file to be parsed
+ */
+ explicit CConfigFileParser(std::string &paFileLocation);
+
+ /**
+ * Destructor
+ */
+ virtual ~CConfigFileParser();
+
+ /**
+ * Parse the next line of the file. The key and value are stored in the passed parameter
+ * @param paResult Place to store the key and value
+ * @return Result of the parsing
+ */
+ ParseResult parseNextLine(std::pair<std::string, std::string> &paResult);
+
+ /**
+ * Looks for a key and value in the file that matches the values passed as parameter
+ * @param paFileParse Parser object used to look for the key/value
+ * @param paKey Key to look for in the file
+ * @param paValue Value to look for
+ * @param paFound True if the key/value was found, false otherwise
+ * @return True if no error occurred, false otherwise. If the key is found but no the value, it's still a valid result and paFound is false
+ */
+ static bool lookForKeyValueInFile(CConfigFileParser &paFileParse, std::string &paKey, std::string &paValue, bool &paFound);
+
+ private:
+
+ /**
+ * File to be parsed
+ */
+ FILE *mConfigFile;
+
+ static const size_t scmLineBuffer = 256;
+ static const char scmSeparator = '=';
+ static const size_t scmNumberOfElementsInLine = 2;
+
+};
+
+#endif /* SRC_CORE_UTILS_CONFIGFILEPARSER_H_ */
diff --git a/src/core/utils/forte_constants.h b/src/core/utils/forte_constants.h
index 98cef11..310243c 100644
--- a/src/core/utils/forte_constants.h
+++ b/src/core/utils/forte_constants.h
@@ -19,9 +19,9 @@
namespace forte {
namespace core {
namespace constants {
- const CIEC_TIME::TValueType cMillisecondsPerSecond = 1E3;
- const CIEC_TIME::TValueType cMicrosecondsPerSecond = 1E6;
- const CIEC_TIME::TValueType cNanosecondsPerSecond = 1E9;
+ const CIEC_TIME::TValueType cMillisecondsPerSecond = 1000 /* 1E3 */;
+ const CIEC_TIME::TValueType cMicrosecondsPerSecond = 1000000 /* 1E6 */;
+ const CIEC_TIME::TValueType cNanosecondsPerSecond = 1000000000 /* 1E9 */;
} /* namespace constants */
} /* namespace core */
} /* namespace forte */
diff --git a/src/core/utils/string_utils.cpp b/src/core/utils/string_utils.cpp
index 6c13c23..9140789 100644
--- a/src/core/utils/string_utils.cpp
+++ b/src/core/utils/string_utils.cpp
@@ -203,12 +203,12 @@
#endif
-size_t forte::core::util::getExtraSizeForEscapedChars(const char* paString){
+size_t forte::core::util::getExtraSizeForXMLEscapedChars(const char* paString){
size_t retVal = 0;
while(0 != *paString){
- for(size_t i = 0; i < sizeof(forte::core::util::scReplacementForEscapedCharacters) / sizeof(const char* const); i++){
- if(forte::core::util::scEscapedCharacters[i] == *paString){
- retVal += strlen(forte::core::util::scReplacementForEscapedCharacters[i]) - 1;
+ for(size_t i = 0; i < sizeof(forte::core::util::scReplacementForXMLEscapedCharacters) / sizeof(const char* const); i++){
+ if(forte::core::util::scXMLEscapedCharacters[i] == *paString){
+ retVal += strlen(forte::core::util::scReplacementForXMLEscapedCharacters[i]) - 1;
break;
}
}
@@ -225,9 +225,9 @@
while(paString <= runner){
const char* toCopy = 0;
- for(size_t i = 0; i < sizeof(forte::core::util::scReplacementForEscapedCharacters) / sizeof(const char* const ); i++){
- if(forte::core::util::scEscapedCharacters[i] == *runner){
- toCopy = forte::core::util::scReplacementForEscapedCharacters[i];
+ for(size_t i = 0; i < sizeof(forte::core::util::scReplacementForXMLEscapedCharacters) / sizeof(const char* const ); i++){
+ if(forte::core::util::scXMLEscapedCharacters[i] == *runner){
+ toCopy = forte::core::util::scReplacementForXMLEscapedCharacters[i];
break;
}
}
@@ -252,10 +252,10 @@
char toCopy = 0;
size_t toMove = 0;
- for(size_t i = 0; i < sizeof(forte::core::util::scReplacementForEscapedCharacters) / sizeof(const char* const ); i++){
- if(0 == strncmp(runner, forte::core::util::scReplacementForEscapedCharacters[i], strlen(forte::core::util::scReplacementForEscapedCharacters[i]))){
- toCopy = forte::core::util::scEscapedCharacters[i];
- toMove = strlen(forte::core::util::scReplacementForEscapedCharacters[i]);
+ for(size_t i = 0; i < sizeof(forte::core::util::scReplacementForXMLEscapedCharacters) / sizeof(const char* const ); i++){
+ if(0 == strncmp(runner, forte::core::util::scReplacementForXMLEscapedCharacters[i], strlen(forte::core::util::scReplacementForXMLEscapedCharacters[i]))){
+ toCopy = forte::core::util::scXMLEscapedCharacters[i];
+ toMove = strlen(forte::core::util::scReplacementForXMLEscapedCharacters[i]);
break;
}
}
@@ -274,3 +274,57 @@
}
return retVal;
}
+
+char * forte::core::util::lookForNonEscapedChar(char **paString, char paChar, char paEscapingChar) {
+ char *foundChar = 0;
+ char* initialPosition = *paString;
+ while(!foundChar && '\0' != **paString) {
+ foundChar = strchr(*paString, paChar);
+ if(0 != foundChar) {
+ *paString = foundChar;
+ if(isEscaped(foundChar, initialPosition, paEscapingChar)) {
+ while('\0' != *foundChar) { //move the rest of the string one char back
+ *(foundChar - 1) = *foundChar;
+ foundChar++;
+ }
+ *(foundChar - 1) = *foundChar; //move also the ending \0
+ foundChar = 0; //reset to keep looking
+ } else {
+ *foundChar = '\0';
+ (*paString)++;
+ }
+ } else { //there's no paChar in the string
+ break;
+ }
+ }
+ return foundChar;
+}
+
+bool forte::core::util::isEscaped(char *paChar, char *paBeginLimit, char paEscapingChar) {
+ size_t noOfScapingSigns = 0;
+ while(paBeginLimit != paChar) { //count the amount of \ signs before paChar to know if the \ signs was also escaped.
+ paChar--;
+ if(paEscapingChar == *paChar) {
+ noOfScapingSigns++;
+ } else {
+ break;
+ }
+ }
+
+ return (noOfScapingSigns % 2); //an even number of \ (or zero) means paChar was not escaped
+}
+
+void forte::core::util::removeEscapedSigns(char **paString, char paEscapingChar) {
+ char *runner = *paString;
+ while('\0' != *runner) {
+ if(paEscapingChar == *runner && paEscapingChar == *(runner + 1)) {
+ char *copier = runner + 1;
+ while('\0' != *copier) {
+ *(copier - 1) = *copier;
+ copier++;
+ }
+ *(copier - 1) = *copier; //move also the ending \0
+ }
+ runner++;
+ }
+}
diff --git a/src/core/utils/string_utils.h b/src/core/utils/string_utils.h
index f303e17..735b725 100644
--- a/src/core/utils/string_utils.h
+++ b/src/core/utils/string_utils.h
@@ -50,16 +50,16 @@
#endif
- const char scEscapedCharacters[] = { '"', '\'', '&', '<', '>'};
+ const char scXMLEscapedCharacters[] = { '"', '\'', '&', '<', '>'};
- const char* const scReplacementForEscapedCharacters[sizeof(scEscapedCharacters)] = {""", "'", "&", "<", ">"};
+ const char* const scReplacementForXMLEscapedCharacters[sizeof(scXMLEscapedCharacters)] = {""", "'", "&", "<", ">"};
/**
* Gets the extra space needed in a string for escaped chars.
* @param paString The null ended C-string that's being checked for chars that need to be escaped
* @return Extra number of chars needed to allocated the chars once they are escaped
*/
- size_t getExtraSizeForEscapedChars(const char* const paString);
+ size_t getExtraSizeForXMLEscapedChars(const char* const paString);
/**
* Transforms a string with escaped chars (') into a string with the original chars (').
@@ -75,6 +75,11 @@
*/
size_t transformNonEscapedToEscapedXMLText(char* const paString);
+
+ char *lookForNonEscapedChar(char **paString, char paChar, char paEscapingChar);
+ bool isEscaped(char *paChar, char *paBeginLimit, char paEscapingChar);
+ void removeEscapedSigns(char **paString, char paEscapingChar);
+
}
}
}
diff --git a/src/modules/HTTP/CMakeLists.txt b/src/modules/HTTP/CMakeLists.txt
index 10b6ba8..644fec6 100644
--- a/src/modules/HTTP/CMakeLists.txt
+++ b/src/modules/HTTP/CMakeLists.txt
@@ -21,8 +21,12 @@
forte_add_handler(CHTTP_Handler http_handler)
forte_add_sourcefile_hcpp(http_handler)
+
SET(FORTE_COM_HTTP_LISTENING_PORT "80" CACHE STRING "HTTP Listening Port")
forte_add_custom_configuration("#define FORTE_COM_HTTP_LISTENING_PORT ${FORTE_COM_HTTP_LISTENING_PORT}")
+ forte_add_custom_configuration("extern TForteUInt16 gHTTPServerPort\;")
+
+ forte_add_custom_configuration("#cmakedefine FORTE_COM_HTTP")
endif(FORTE_COM_HTTP)
diff --git a/src/modules/HTTP/http_handler.cpp b/src/modules/HTTP/http_handler.cpp
index fdc46d5..e228002 100644
--- a/src/modules/HTTP/http_handler.cpp
+++ b/src/modules/HTTP/http_handler.cpp
@@ -23,6 +23,8 @@
using namespace forte::com_infra;
+TForteUInt16 gHTTPServerPort = FORTE_COM_HTTP_LISTENING_PORT;
+
CIPComSocketHandler::TSocketDescriptor CHTTP_Handler::smServerListeningSocket = CIPComSocketHandler::scmInvalidSocketDescriptor;
char CHTTP_Handler::sRecvBuffer[];
@@ -152,7 +154,23 @@
CIEC_STRING path;
CSinglyLinkedList<CIEC_STRING> parameterNames;
CSinglyLinkedList<CIEC_STRING> parameterValues;
- if(CHttpParser::parseGetRequest(path, parameterNames, parameterValues, sRecvBuffer)) {
+ bool noParsingError = false;
+ switch(CHttpParser::getTypeOfRequest(sRecvBuffer)){
+ case CHttpComLayer::ERequestType::e_GET:
+ noParsingError = CHttpParser::parseGetRequest(path, parameterNames, parameterValues, sRecvBuffer);
+ break;
+ case CHttpComLayer::ERequestType::e_POST:
+ case CHttpComLayer::ERequestType::e_PUT: {
+ CIEC_STRING content;
+ noParsingError = CHttpParser::parsePutPostRequest(path, content, sRecvBuffer);
+ parameterValues.pushBack(content);
+ break;
+ }
+ default:
+ break;
+ }
+
+ if(noParsingError) {
for(CSinglyLinkedList<HTTPServerWaiting *>::Iterator iter = mServerLayers.begin(); iter != mServerLayers.end(); ++iter) {
if((*iter)->mPath == path) {
(*iter)->mSockets.pushBack(paSocket);
@@ -164,7 +182,7 @@
}
}
} else {
- DEVLOG_ERROR("[HTTP Handler] Wrong HTTP Get request\n");
+ DEVLOG_ERROR("[HTTP Handler] Wrong HTTP request\n");
}
if(!found) {
@@ -368,12 +386,12 @@
void CHTTP_Handler::openHTTPServer() {
if(CIPComSocketHandler::scmInvalidSocketDescriptor == smServerListeningSocket) {
char address[] = "127.0.0.1";
- smServerListeningSocket = CIPComSocketHandler::openTCPServerConnection(address, FORTE_COM_HTTP_LISTENING_PORT);
+ smServerListeningSocket = CIPComSocketHandler::openTCPServerConnection(address, gHTTPServerPort);
if(CIPComSocketHandler::scmInvalidSocketDescriptor != smServerListeningSocket) {
getExtEvHandler<CIPComSocketHandler>().addComCallback(smServerListeningSocket, this);
- DEVLOG_INFO("[HTTP Handler] HTTP server listening on port %d\n", FORTE_COM_HTTP_LISTENING_PORT);
+ DEVLOG_INFO("[HTTP Handler] HTTP server listening on port %u\n", gHTTPServerPort);
} else {
- DEVLOG_ERROR("[HTTP Handler] Couldn't start HTTP server on port %d\n", FORTE_COM_HTTP_LISTENING_PORT);
+ DEVLOG_ERROR("[HTTP Handler] Couldn't start HTTP server on port %u\n", gHTTPServerPort);
}
}
}
diff --git a/src/modules/HTTP/httplayer.cpp b/src/modules/HTTP/httplayer.cpp
index bddbad8..eb0ed35 100644
--- a/src/modules/HTTP/httplayer.cpp
+++ b/src/modules/HTTP/httplayer.cpp
@@ -302,25 +302,25 @@
return mInterruptResp;
}
-EComResponse forte::com_infra::CHttpComLayer::recvServerData(CSinglyLinkedList<CIEC_STRING>& paParameterNames,
- CSinglyLinkedList<CIEC_STRING>& paParameterValues) {
+EComResponse forte::com_infra::CHttpComLayer::recvServerData(CSinglyLinkedList<CIEC_STRING>&, CSinglyLinkedList<CIEC_STRING>& paParameterValues) {
+ //for now, the parameterNames are not taken in account, and the parameters are put in the same order they arrived
+
mInterruptResp = e_Nothing;
bool failed = false;
if(0 < m_poFb->getNumSD()) {
unsigned int noOfParameters = 0;
- for(CSinglyLinkedList<CIEC_STRING>::Iterator iter = paParameterNames.begin(); iter != paParameterNames.end(); ++iter) {
+ for(CSinglyLinkedList<CIEC_STRING>::Iterator iter = paParameterValues.begin(); iter != paParameterValues.end(); ++iter) {
noOfParameters++;
}
if(noOfParameters == m_poFb->getNumRD()) {
noOfParameters = 0;
for(CSinglyLinkedList<CIEC_STRING>::Iterator iter = paParameterValues.begin(); iter != paParameterValues.end(); ++iter) {
- m_poFb->getRDs()[noOfParameters].setValue(*iter);
+ m_poFb->getRDs()[noOfParameters++].setValue(*iter);
}
- //TODO: How do we handle the names? For now the parameters are put in the same order they arrived
} else {
DEVLOG_ERROR("[HTTP Layer] FB with path %s received a number of parameters of %u, while it has %u SDs\n", mPath.getValue(),
- static_cast<TForteUInt16>(noOfParameters), m_poFb->getNumSD());
+ static_cast<TForteUInt16>(noOfParameters), m_poFb->getNumRD());
failed = true;
}
}
diff --git a/src/modules/HTTP/httpparser.cpp b/src/modules/HTTP/httpparser.cpp
index db9d3c8..06385cd 100644
--- a/src/modules/HTTP/httpparser.cpp
+++ b/src/modules/HTTP/httpparser.cpp
@@ -35,7 +35,7 @@
bool CHttpParser::changePutPostData(CIEC_STRING& paDest, const CIEC_STRING& paData) {
char* helperChar = strstr(paDest.getValue(), "length: ");
if(0 != helperChar) {
- helperChar += 8;
+ helperChar += sizeof("length: ") - 1;
*helperChar = '\0';
paDest = paDest.getValue(); //will shrink the length of the string to the new ending
char contentLength[scmMaxLengthOfContent];
@@ -54,7 +54,7 @@
if(CHttpParser::getHttpResponseCode(paResponseCode, paSrc)) {
char* helperChar = strstr(paSrc, "\r\n\r\n"); // Extract data from HTTP response char
if(0 != helperChar) {
- helperChar += 4;
+ helperChar += sizeof("\r\n\r\n") - 1;
paBody = helperChar;
} else { // Empty response received
DEVLOG_INFO("[HTTP Parser] Empty content response received\n");
@@ -67,28 +67,73 @@
bool forte::com_infra::CHttpParser::parseGetRequest(CIEC_STRING& paPath, CSinglyLinkedList<CIEC_STRING>& paParameterNames,
CSinglyLinkedList<CIEC_STRING>& paParameterValues, char* paData) {
- char* helperChar = strstr(paData, "GET ");
- if(helperChar != 0) {
- helperChar += 4;
- char* endOfPath = strstr(helperChar, " ");
+ if(0 == strncmp(paData, "GET ", 4)) {
+ paData = paData + 4;
+
+ char* endOfPath = strstr(paData, " ");
if(endOfPath != 0) {
*endOfPath = '\0';
- char* startOfParameters = strstr(paData, "?");
+ char* startOfParameters = strstr(paData + 1, "?");
if(startOfParameters != 0) {
*startOfParameters = '\0';
startOfParameters++;
parseGETParameters(startOfParameters, paParameterNames, paParameterValues);
}
- paPath = helperChar;
+ paPath = paData;
} else {
- DEVLOG_ERROR("[HTTP Parser] Invalid HTTP Get request. No space after path found\n");
+ DEVLOG_ERROR("[HTTP Parser] Invalid HTTP Get request. No GET string found\n");
return false;
}
- return true;
+
} else {
- DEVLOG_ERROR("[HTTP Parser] Invalid HTTP Get request. No GET string found\n");
+ DEVLOG_ERROR("[HTTP Parser] Invalid HTTP Get request. No space after path found\n");
return false;
}
+ return true;
+}
+
+bool forte::com_infra::CHttpParser::parsePutPostRequest(CIEC_STRING& paPath, CIEC_STRING &paContent, char* paData) {
+ if(0 == strncmp(paData, "PUT ", 4)) {
+ paData += sizeof("PUT ") - 1;
+ } else if(0 == strncmp(paData, "POST ", 5)) {
+ paData += sizeof("POST ") - 1;
+ } else {
+ DEVLOG_ERROR("[HTTP Parser] Invalid HTTP PUT/POST request. No PUT/POST string found\n");
+ return false;
+ }
+
+ char* endOfPath = strstr(paData, " ");
+ if(endOfPath != 0) {
+ *endOfPath = '\0';
+ paPath = paData;
+ paData = strstr(endOfPath + 1, "\r\n\r\n");
+ if(paData != 0) {
+ paData += sizeof("\r\n\r\n") - 1;
+ paContent = paData;
+ } else {
+ DEVLOG_ERROR("[HTTP Parser] Invalid HTTP PUT/POST request. No content was found\n");
+ return false;
+ }
+
+ } else {
+ DEVLOG_ERROR("[HTTP Parser] Invalid HTTP PUT/POST request. No space after path found\n");
+ return false;
+ }
+ return true;
+}
+
+
+CHttpComLayer::ERequestType forte::com_infra::CHttpParser::getTypeOfRequest(const char* paRequest) {
+ if(0 == strncmp(paRequest, "GET ", 4)) {
+ return CHttpComLayer::ERequestType::e_GET;
+ } else if(0 == strncmp(paRequest, "PUT ", 4)) {
+ return CHttpComLayer::ERequestType::e_PUT;
+ } else if(0 == strncmp(paRequest, "POST ", 5)) {
+ return CHttpComLayer::ERequestType::e_POST;
+ } else {
+ DEVLOG_ERROR("[HTTP Parser] Invalid HTTP request\n");
+ return CHttpComLayer::ERequestType::e_NOTSET;
+ }
}
void forte::com_infra::CHttpParser::createResponse(CIEC_STRING& paDest, const CIEC_STRING& paResult, const CIEC_STRING& paContentType,
diff --git a/src/modules/HTTP/httpparser.h b/src/modules/HTTP/httpparser.h
index ca1ff7f..f77b3a2 100644
--- a/src/modules/HTTP/httpparser.h
+++ b/src/modules/HTTP/httpparser.h
@@ -73,6 +73,15 @@
char* paData);
/**
+ * Parse a PUT/POST request received as a server
+ * @param paPath place to store the received path
+ * @param paContent place to store the content of the request
+ * @param paData the received PUT/POST request
+ * @return true if no error happened, false otherwise
+ */
+ static bool parsePutPostRequest(CIEC_STRING& paPath, CIEC_STRING &paContent, char* paData);
+
+ /**
* Create a HTTP response
* @param paDest
* @param paResult the status line of the response
@@ -81,6 +90,13 @@
*/
static void createResponse(CIEC_STRING& paDest, const CIEC_STRING& paResult, const CIEC_STRING& paContentType, const CIEC_STRING& paData);
+ /**
+ * Look in the request for its type
+ * @param paRequest request to look into
+ * @return Type of request
+ */
+ static CHttpComLayer::ERequestType getTypeOfRequest(const char* paRequest);
+
private:
CHttpParser();
virtual ~CHttpParser();
diff --git a/src/modules/arrowhead/CMakeLists.txt b/src/modules/arrowhead/CMakeLists.txt
index 793bd85..ae52e1c 100644
--- a/src/modules/arrowhead/CMakeLists.txt
+++ b/src/modules/arrowhead/CMakeLists.txt
@@ -20,7 +20,7 @@
add_subdirectory(common)
add_subdirectory(orchestrator)
add_subdirectory(serviceRegistry)
- add_subdirectory(SystemTests)
+ add_subdirectory(eventHandler)
ENDIF(FORTE_MODULE_Arrowhead)
diff --git a/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.cpp b/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.cpp
index bb52914..5736c4c 100644
--- a/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.cpp
+++ b/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.cpp
@@ -21,10 +21,18 @@
void ArrowheadJSONHelper::transformANYToJSON(const CIEC_ANY& paSource, CIEC_STRING& paResult) {
switch(paSource.getDataTypeID()){
case CIEC_ANY::e_STRUCT:
- if(g_nStringIdArrowheadService == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
+ if(g_nStringIdArrowheadSystem == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
+ transformSystemToJSON(const_cast<CIEC_ArrowheadSystem&>(static_cast<const CIEC_ArrowheadSystem&>(paSource)), paResult);
+ } else if(g_nStringIdArrowheadService == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
transformServiceToJSON(const_cast<CIEC_ArrowheadService&>(static_cast<const CIEC_ArrowheadService&>(paSource)), paResult);
} else if(g_nStringIdServiceRequestForm == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
transformOrchServciceRequestFormToJSON(const_cast<CIEC_ServiceRequestForm&>(static_cast<const CIEC_ServiceRequestForm&>(paSource)), paResult);
+ } else if(g_nStringIdArrowheadEvent == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
+ transformArrowheadEventToJSON(const_cast<CIEC_ArrowheadEvent&>(static_cast<const CIEC_ArrowheadEvent&>(paSource)), paResult);
+ } else if(g_nStringIdPublishEvent == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
+ transformPublishEventToJSON(const_cast<CIEC_PublishEvent&>(static_cast<const CIEC_PublishEvent&>(paSource)), paResult);
+ } else if(g_nStringIdEventFilter == static_cast<const CIEC_STRUCT&>(paSource).getStructTypeNameID()) {
+ transformEventFilterToJSON(const_cast<CIEC_EventFilter&>(static_cast<const CIEC_EventFilter&>(paSource)), paResult);
} else {
transformStructToJSON(static_cast<const CIEC_STRUCT&>(paSource), paResult);
}
@@ -36,9 +44,27 @@
paResult.append(static_cast<bool>(static_cast<const CIEC_BOOL&>(paSource)) ? "true" : "false");
break;
default: {
- unsigned int size = paSource.getToStringBufferSize();
+ bool isDateAndTime = CIEC_ANY::e_DATE_AND_TIME == paSource.getDataTypeID();
+ size_t size = paSource.getToStringBufferSize();
+ if(isDateAndTime) {
+ size++;
+ }
char *toStore = new char[size];
paSource.toString(toStore, size);
+
+ if(CIEC_ANY::e_DATE_AND_TIME == paSource.getDataTypeID()) { //time expected has the format 2007-12-21T15:00:00.000Z -> a "T" separates the date from the time instead of a "-" and a Z is added at the end
+ size_t counter = 3;
+ char *toChange = toStore;
+ while(counter) {
+ toChange = strchr(toChange + 1, '-');
+ counter--;
+ }
+ *toChange = 'T';
+ toChange = strchr(toChange, '\0');
+ *toChange = 'Z';
+ *(toChange + 1) = '\0';
+ }
+
paResult.append(toStore);
delete[] toStore;
break;
@@ -56,6 +82,8 @@
void ArrowheadJSONHelper::transformJSONToStruct(char* paToChange) {
transformServiceMetadata(paToChange);
+ transformNull(paToChange);
+ removeEndOfValidity(paToChange);
removeIds(paToChange);
char* runner = paToChange;
changeKeys(&runner);
@@ -86,6 +114,24 @@
paResult.append("}");
}
+void ArrowheadJSONHelper::transformSystemToJSON(CIEC_ArrowheadSystem& paSource, CIEC_STRING& paResult) {
+ paResult.append("{\"systemName\":");
+ transformANYToJSON(paSource.systemName(), paResult);
+
+ paResult.append(",\"address\":");
+ transformANYToJSON(paSource.address(), paResult);
+
+ paResult.append(",\"port\":");
+ transformANYToJSON(paSource.port(), paResult);
+
+ if("" != paSource.authenticationInfo()) { //we skip authenticationInfo if empty because it creates problems with security in non-secured clouds
+ paResult.append(",\"authenticationInfo\":");
+ transformANYToJSON(paSource.authenticationInfo(), paResult);
+ }
+
+ paResult.append("}");
+}
+
void ArrowheadJSONHelper::transformServiceToJSON(CIEC_ArrowheadService& paSource, CIEC_STRING& paResult) {
paResult.append("{\"serviceDefinition\":\"");
@@ -165,14 +211,137 @@
paResult.append("],\"requestedQoS\":{}}"); //requestedQoS not implemented yet in the arrowhead definition
}
+void ArrowheadJSONHelper::transformArrowheadEventToJSON(CIEC_ArrowheadEvent& paSource, CIEC_STRING& paResult) {
+
+ paResult.append("{\"type\":");
+ transformANYToJSON(paSource.type(), paResult);
+
+ paResult.append(",\"payload\":");
+ transformANYToJSON(paSource.payload(), paResult);
+
+ paResult.append(",\"timestamp\":\"");
+
+ if(0 != static_cast<TForteUInt64>(paSource.timestamp())) { //if the time is zero, we just send an empty string to avoid errors complaining about too old messages
+ transformANYToJSON(paSource.timestamp(), paResult);
+ }
+ paResult.append("\",\"eventMetadata\":{");
+ bool first = true;
+ for(size_t i = 0; i < 10; i++) {
+ if(0 != strcmp(paSource.eventMetadata()[i].getValue(), "")) { //if a eventMetadata is empty, keep looking for others, just in case
+ if(!first) {
+ paResult.append(",");
+ } else {
+ first = false;
+ }
+
+ CParameterParser parser(paSource.eventMetadata()[i].getValue(), '=', 2);
+ if(2 != parser.parseParameters()) {
+ DEVLOG_ERROR("[ArrowheadJSONHelper]: wrong eventMetadata %s. Each eventMetadata should be in the form of key=value\n",
+ paSource.eventMetadata()[i].getValue());
+ break;
+ }
+
+ paResult.append("\"");
+ paResult.append(parser[0]);
+ paResult.append("\":\"");
+ paResult.append(parser[1]);
+ paResult.append("\"");
+ }
+ }
+
+ paResult.append("}}");
+}
+
+void ArrowheadJSONHelper::transformEventFilterToJSON(CIEC_EventFilter& paSource, CIEC_STRING& paResult) {
+
+ paResult.append("{\"eventType\":");
+ transformANYToJSON(paSource.eventType(), paResult);
+
+ paResult.append(",\"consumer\":");
+ transformANYToJSON(paSource.consumer(), paResult);
+
+ paResult.append(",\"sources\":[");
+
+ bool first = true;
+ for(size_t i = 0; i < 10; i++) {
+ if(0 != strcmp(paSource.sources()[i].systemName().getValue(), "")) { //if the system address is empty, no more systems are added
+ if(!first) {
+ paResult.append(",");
+ } else {
+ first = false;
+ }
+ transformANYToJSON(paSource.sources()[i], paResult);
+ } else {
+ break;
+ }
+ }
+
+ paResult.append("],\"startDate\":\"");
+ if(0 != static_cast<TForteUInt64>(paSource.startDate())) { //if the time is zero, we just send an empty string to avoid errors complaining about too old messages
+ transformANYToJSON(paSource.startDate(), paResult);
+ }
+
+ paResult.append("\",\"endDate\":\"");
+ if(0 != static_cast<TForteUInt64>(paSource.endDate())) { //if the time is zero, we just send an empty string to avoid errors complaining about too old messages
+ transformANYToJSON(paSource.endDate(), paResult);
+ }
+
+ paResult.append("\",\"filterMetadata\":{");
+ for(size_t i = 0; i < 10; i++) {
+ if(0 != strcmp(paSource.filterMetadata()[i].getValue(), "")) { //if a eventMetadata is empty, keep looking for others, just in case
+ if(!first) {
+ paResult.append(",");
+ } else {
+ first = false;
+ }
+
+ CParameterParser parser(paSource.filterMetadata()[i].getValue(), '=', 2);
+ if(2 != parser.parseParameters()) {
+ DEVLOG_ERROR("[ArrowheadJSONHelper]: wrong filterMetadata %s. Each filterMetadata should be in the form of key=value\n",
+ paSource.filterMetadata()[i].getValue());
+ break;
+ }
+
+ paResult.append("\"");
+ paResult.append(parser[0]);
+ paResult.append("\":\"");
+ paResult.append(parser[1]);
+ paResult.append("\"");
+ }
+ }
+
+ paResult.append("},\"notifyUri\":");
+ transformANYToJSON(paSource.notifyUri(), paResult);
+
+ paResult.append(",\"matchMetadata\":");
+ transformANYToJSON(paSource.matchMetadata(), paResult);
+
+ paResult.append("}");
+
+}
+
+void ArrowheadJSONHelper::transformPublishEventToJSON(CIEC_PublishEvent& paSource, CIEC_STRING& paResult) {
+
+ paResult.append("{\"source\":");
+ transformANYToJSON(paSource.source(), paResult);
+
+ paResult.append(",\"event\":");
+ transformANYToJSON(paSource.event(), paResult);
+
+ //we don't send the deliveryCompleteUri, even if empty, because the event handler core system will try to send the results
+ //which is not supported yet by forte
+
+ paResult.append("}");
+}
+
void ArrowheadJSONHelper::transformArrayToJSON(const CIEC_ARRAY& paSource, CIEC_STRING& paResult) {
TForteUInt16 unSize = paSource.size();
paResult.append("[");
bool first = true;
- for(unsigned int i = 0; i < unSize; ++i) {
+ for(size_t i = 0; i < unSize; ++i) {
if((CIEC_ANY::e_STRING == paSource.getElementDataTypeID() || CIEC_ANY::e_WSTRING == paSource.getElementDataTypeID())
- && 0 == strcmp(static_cast<const CIEC_WSTRING*>(paSource[i])->getValue(), "")) {
+ && 0 == strcmp(static_cast<const CIEC_WSTRING*>(paSource[static_cast<TForteUInt16>(i)])->getValue(), "")) {
break;
}
@@ -181,7 +350,7 @@
} else {
first = false;
}
- transformANYToJSON(*paSource[i], paResult);
+ transformANYToJSON(*paSource[static_cast<TForteUInt16>(i)], paResult);
}
paResult.append("]");
}
@@ -247,6 +416,32 @@
} while(0 != paText);
}
+void ArrowheadJSONHelper::removeEndOfValidity(char *paText) {
+ do {
+ paText = strstr(paText, "\"endOfValidity\"");
+ if(0 != paText) {
+ while(',' != *paText) {
+ *paText = ' ';
+ paText++;
+ }
+ *paText = ' '; //for the last comma
+ paText++;
+ }
+ } while(0 != paText);
+}
+
+void ArrowheadJSONHelper::transformNull(char *paText) {
+ do {
+ paText = strstr(paText, "null");
+ if(0 != paText) {
+ *paText++ = ' ';
+ *paText++ = '"';
+ *paText++ = '"';
+ *paText++ = ' ';
+ }
+ } while(0 != paText);
+}
+
void ArrowheadJSONHelper::changeKeysArray(char** paText) {
do {
diff --git a/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.h b/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.h
index 735ef96..ce25186 100644
--- a/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.h
+++ b/src/modules/arrowhead/common/JSON/ArrowheadJSONHelper.h
@@ -18,6 +18,10 @@
#include <forte_array.h>
#include "../forte_arrowheadservice.h"
#include "../../orchestrator/forte_servicerequestform.h"
+#include <forte_arrowheadevent.h>
+#include <forte_eventfilter.h>
+#include <forte_publishevent.h>
+#include <forte_arrowheadsystem.h>
class ArrowheadJSONHelper {
public:
@@ -35,18 +39,30 @@
static void transformArrayToJSON(const CIEC_ARRAY &paSource, CIEC_STRING &paResult);
+ static void transformSystemToJSON(CIEC_ArrowheadSystem& paSource, CIEC_STRING& paResult);
+
static void transformServiceToJSON(CIEC_ArrowheadService &paSource, CIEC_STRING &paResult);
static void transformOrchServciceRequestFormToJSON(CIEC_ServiceRequestForm& paSource, CIEC_STRING& paResult);
+ static void transformArrowheadEventToJSON(CIEC_ArrowheadEvent& paSource, CIEC_STRING& paResult);
+
+ static void transformEventFilterToJSON(CIEC_EventFilter& paSource, CIEC_STRING& paResult);
+
+ static void transformPublishEventToJSON(CIEC_PublishEvent& paSource, CIEC_STRING& paResult);
+
static void transformServiceMetadata(char* paText);
static void removeIds(char* paText);
+ static void removeEndOfValidity(char *paText);
+
static void changeKeys(char** paText);
static void changeKeysArray(char** paText);
+ static void transformNull(char *paText);
+
static void changeToStruct(char* paText);
};
diff --git a/src/modules/arrowhead/common/JSON/GetArrayResponseFromJSON.cpp b/src/modules/arrowhead/common/JSON/GetArrayResponseFromJSON.cpp
index 28d8c2f..4b9a440 100644
--- a/src/modules/arrowhead/common/JSON/GetArrayResponseFromJSON.cpp
+++ b/src/modules/arrowhead/common/JSON/GetArrayResponseFromJSON.cpp
@@ -58,7 +58,7 @@
//clean the output first
output_Array().setup(output_Array().size(), static_cast<CIEC_STRUCT*>(output_Array()[0])->getStructTypeNameID());
- DEVLOG_DEBUG("[Arrowhead GetResponseFromHTTP]: Response received: %s\n", response().getValue());
+ DEVLOG_DEBUG("[Arrowhead GetArrayResponseFromJSON]: Response received: %s\n", response().getValue());
char* helper = strrchr(response().getValue(), ']');
if(0 != helper) {
@@ -71,10 +71,10 @@
output().fromString(helper);
} //if response is empty, don't do anything.
} else {
- DEVLOG_ERROR("[Arrowhead GetResponseFromHTTP]: Invalid response, ] was found but not [: \n", response().getValue());
+ DEVLOG_ERROR("[Arrowhead GetArrayResponseFromJSON]: Invalid response, ] was found but not [: \n", response().getValue());
}
} else {
- DEVLOG_ERROR("[Arrowhead GetResponseFromHTTP]: Invalid response, no ] was found: %s\n", response().getValue());
+ DEVLOG_ERROR("[Arrowhead GetArrayResponseFromJSON]: Invalid response, no ] was found: %s\n", response().getValue());
}
sendOutputEvent(scm_nEventCNFID);
}
diff --git a/src/modules/arrowhead/eventHandler/ArrowheadPublish.cpp b/src/modules/arrowhead/eventHandler/ArrowheadPublish.cpp
new file mode 100644
index 0000000..d94d254
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/ArrowheadPublish.cpp
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "ArrowheadPublish.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "ArrowheadPublish_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_ArrowheadPublish, g_nStringIdArrowheadPublish)
+
+const CStringDictionary::TStringId FORTE_ArrowheadPublish::scm_anDataInputNames[] = {g_nStringIdpublishEvent, g_nStringIdendpoint};
+
+const CStringDictionary::TStringId FORTE_ArrowheadPublish::scm_anDataInputTypeIds[] = {g_nStringIdPublishEvent, g_nStringIdWSTRING};
+
+const TForteInt16 FORTE_ArrowheadPublish::scm_anEIWithIndexes[] = {0};
+const TDataIOID FORTE_ArrowheadPublish::scm_anEIWith[] = {0, 1, 255};
+const CStringDictionary::TStringId FORTE_ArrowheadPublish::scm_anEventInputNames[] = {g_nStringIdpublish};
+
+const TForteInt16 FORTE_ArrowheadPublish::scm_anEOWithIndexes[] = {-1, -1};
+const CStringDictionary::TStringId FORTE_ArrowheadPublish::scm_anEventOutputNames[] = {g_nStringIdpublished};
+
+const SAdapterInstanceDef FORTE_ArrowheadPublish::scm_astAdapterInstances[] = {
+{g_nStringIdArrowheadPublishAdp, g_nStringIdArrowheadPublishAdp, true }};
+
+const SFBInterfaceSpec FORTE_ArrowheadPublish::scm_stFBInterfaceSpec = {
+ 1, scm_anEventInputNames, scm_anEIWith, scm_anEIWithIndexes,
+ 1, scm_anEventOutputNames, 0, 0, 2, scm_anDataInputNames, scm_anDataInputTypeIds,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBConnectionData FORTE_ArrowheadPublish::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdpublish), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdArrowheadPublishAdp, g_nStringIdpublish), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdArrowheadPublishAdp, g_nStringIdpublished), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdpublished), -1},
+};
+
+const SCFB_FBConnectionData FORTE_ArrowheadPublish::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdpublishEvent), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdArrowheadPublishAdp, g_nStringIdpublishEvent), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdendpoint), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdArrowheadPublishAdp, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0},
+};
+
+const SCFB_FBNData FORTE_ArrowheadPublish::scm_stFBNData = {
+ 0, 0,
+ 2, scm_astEventConnections,
+ 0, 0,
+ 2, scm_astDataConnections,
+ 0, 0,
+ 0, 0
+};
+
+
diff --git a/src/modules/arrowhead/eventHandler/ArrowheadPublish.h b/src/modules/arrowhead/eventHandler/ArrowheadPublish.h
new file mode 100644
index 0000000..b5e873e
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/ArrowheadPublish.h
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _ARROWHEADPUBLISH_H_
+#define _ARROWHEADPUBLISH_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include <forte_publishevent.h>
+#include <forte_wstring.h>
+#include "ArrowheadPublishAdp.h"
+
+class FORTE_ArrowheadPublish: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_ArrowheadPublish)
+
+private:
+ static const CStringDictionary::TStringId scm_anDataInputNames[];
+ static const CStringDictionary::TStringId scm_anDataInputTypeIds[];
+ CIEC_PublishEvent &publishEvent() {
+ return *static_cast<CIEC_PublishEvent*>(getDI(0));
+ };
+
+ CIEC_WSTRING &endpoint() {
+ return *static_cast<CIEC_WSTRING*>(getDI(1));
+ };
+
+ static const TEventID scm_nEventpublishID = 0;
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const TDataIOID scm_anEIWith[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ static const TEventID scm_nEventpublishedID = 0;
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_ArrowheadPublishAdp& ArrowheadPublishAdp() {
+ return (*static_cast<FORTE_ArrowheadPublishAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nArrowheadPublishAdpAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(1, 2, 0, 1);
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_ArrowheadPublish){
+ };
+
+ virtual ~FORTE_ArrowheadPublish(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/ArrowheadPublishAdp.cpp b/src/modules/arrowhead/eventHandler/ArrowheadPublishAdp.cpp
new file mode 100644
index 0000000..085b984
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/ArrowheadPublishAdp.cpp
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "ArrowheadPublishAdp.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "ArrowheadPublishAdp_gen.cpp"
+#endif
+
+DEFINE_ADAPTER_TYPE(FORTE_ArrowheadPublishAdp, g_nStringIdArrowheadPublishAdp)
+
+const CStringDictionary::TStringId FORTE_ArrowheadPublishAdp::scm_anDataOutputNames[] = {g_nStringIdpublishEvent, g_nStringIdendpoint};
+
+const CStringDictionary::TStringId FORTE_ArrowheadPublishAdp::scm_anDataOutputTypeIds[] = {g_nStringIdPublishEvent, g_nStringIdWSTRING};
+
+const TForteInt16 FORTE_ArrowheadPublishAdp::scm_anEIWithIndexes[] = {-1, -1};
+const CStringDictionary::TStringId FORTE_ArrowheadPublishAdp::scm_anEventInputNames[] = {g_nStringIdpublished};
+
+const TDataIOID FORTE_ArrowheadPublishAdp::scm_anEOWith[] = {0, 1, 255};
+const TForteInt16 FORTE_ArrowheadPublishAdp::scm_anEOWithIndexes[] = {0, -1};
+const CStringDictionary::TStringId FORTE_ArrowheadPublishAdp::scm_anEventOutputNames[] = {g_nStringIdpublish};
+
+const SFBInterfaceSpec FORTE_ArrowheadPublishAdp::scm_stFBInterfaceSpecSocket = {
+ 1, scm_anEventInputNames, 0, scm_anEIWithIndexes,
+ 1, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes, 0, 0, 0,
+ 2, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0
+};
+
+const SFBInterfaceSpec FORTE_ArrowheadPublishAdp::scm_stFBInterfaceSpecPlug = {
+ 1, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes,
+ 1, scm_anEventInputNames, 0, 0, 2, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0, 0,
+ 0, 0
+};
+
+
+
diff --git a/src/modules/arrowhead/eventHandler/ArrowheadPublishAdp.h b/src/modules/arrowhead/eventHandler/ArrowheadPublishAdp.h
new file mode 100644
index 0000000..cb4ec44
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/ArrowheadPublishAdp.h
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _ARROWHEADPUBLISHADP_H_
+#define _ARROWHEADPUBLISHADP_H_
+
+#include <adapter.h>
+#include <typelib.h>
+#include <forte_publishevent.h>
+#include <forte_wstring.h>
+
+class FORTE_ArrowheadPublishAdp: public CAdapter{
+ DECLARE_ADAPTER_TYPE(FORTE_ArrowheadPublishAdp)
+
+private:
+ private:
+ static const CStringDictionary::TStringId scm_anDataOutputNames[];
+ static const CStringDictionary::TStringId scm_anDataOutputTypeIds[];
+ public:
+ CIEC_PublishEvent &publishEvent() {
+ return *static_cast<CIEC_PublishEvent*>((isSocket()) ? getDO(0) : getDI(0));
+ };
+
+ CIEC_WSTRING &endpoint() {
+ return *static_cast<CIEC_WSTRING*>((isSocket()) ? getDO(1) : getDI(1));
+ };
+
+ public:
+ static const TEventID scm_nEventpublishedID = 0;
+ int published() {
+ return m_nParentAdapterListEventID + scm_nEventpublishedID;
+ }
+ private:
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ public:
+ static const TEventID scm_nEventpublishID = 0;
+ int publish() {
+ return m_nParentAdapterListEventID + scm_nEventpublishID;
+ }
+ private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const TDataIOID scm_anEOWith[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpecSocket;
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpecPlug;
+
+ FORTE_ADAPTER_DATA_ARRAY(1, 1, 0, 2, 0);
+
+public:
+ ADAPTER_CTOR(FORTE_ArrowheadPublishAdp){
+ };
+
+ virtual ~FORTE_ArrowheadPublishAdp(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/CMakeLists.txt b/src/modules/arrowhead/eventHandler/CMakeLists.txt
new file mode 100644
index 0000000..a25c1f9
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/CMakeLists.txt
@@ -0,0 +1,29 @@
+# *******************************************************************************
+# Copyright (c) 2019, fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral - initial implementation
+# *******************************************************************************
+
+#############################################################################
+# Arrowhead specific functional blocks for event handler
+#############################################################################
+
+forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+forte_add_sourcefile_hcpp(forte_arrowheadevent forte_publishevent forte_eventfilter)
+forte_add_sourcefile_hcpp(FieldsToArrowheadEvent FieldsToPublishEvent FieldsToEventFilter)
+forte_add_sourcefile_hcpp(ArrowheadPublish ArrowheadPublishAdp SubscribeEvent SubscribeEventAdp)
+
+if(FORTE_COM_HTTP)
+ add_subdirectory(HTTP)
+endif(FORTE_COM_HTTP)
+
+if(FORTE_COM_OPC_UA)
+ add_subdirectory(OpcUa)
+endif(FORTE_COM_OPC_UA)
diff --git a/src/modules/arrowhead/eventHandler/FieldsToArrowheadEvent.cpp b/src/modules/arrowhead/eventHandler/FieldsToArrowheadEvent.cpp
new file mode 100644
index 0000000..37b3b17
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/FieldsToArrowheadEvent.cpp
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "FieldsToArrowheadEvent.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "FieldsToArrowheadEvent_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_FieldsToArrowheadEvent, g_nStringIdFieldsToArrowheadEvent)
+
+const CStringDictionary::TStringId FORTE_FieldsToArrowheadEvent::scm_anDataInputNames[] = {g_nStringIdtype, g_nStringIdpayload, g_nStringIdtimestamp, g_nStringIdeventMetadata};
+
+const CStringDictionary::TStringId FORTE_FieldsToArrowheadEvent::scm_anDataInputTypeIds[] = {g_nStringIdWSTRING, g_nStringIdWSTRING, g_nStringIdDATE_AND_TIME, g_nStringIdARRAY, 10, g_nStringIdWSTRING};
+
+const CStringDictionary::TStringId FORTE_FieldsToArrowheadEvent::scm_anDataOutputNames[] = {g_nStringIdarrowheadEvent};
+
+const CStringDictionary::TStringId FORTE_FieldsToArrowheadEvent::scm_anDataOutputTypeIds[] = {g_nStringIdArrowheadEvent};
+
+const TForteInt16 FORTE_FieldsToArrowheadEvent::scm_anEIWithIndexes[] = {0};
+const TDataIOID FORTE_FieldsToArrowheadEvent::scm_anEIWith[] = {0, 1, 2, 3, 255};
+const CStringDictionary::TStringId FORTE_FieldsToArrowheadEvent::scm_anEventInputNames[] = {g_nStringIdREQ};
+
+const TDataIOID FORTE_FieldsToArrowheadEvent::scm_anEOWith[] = {0, 255};
+const TForteInt16 FORTE_FieldsToArrowheadEvent::scm_anEOWithIndexes[] = {0, -1};
+const CStringDictionary::TStringId FORTE_FieldsToArrowheadEvent::scm_anEventOutputNames[] = {g_nStringIdCNF};
+
+const SFBInterfaceSpec FORTE_FieldsToArrowheadEvent::scm_stFBInterfaceSpec = {
+ 1, scm_anEventInputNames, scm_anEIWith, scm_anEIWithIndexes,
+ 1, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes, 4, scm_anDataInputNames, scm_anDataInputTypeIds,
+ 1, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0
+};
+
+void FORTE_FieldsToArrowheadEvent::alg_REQ(void){
+CIEC_INT i;
+;
+
+i = 0;
+arrowheadEvent().type() = type();
+arrowheadEvent().payload() = payload();
+arrowheadEvent().timestamp() == timestamp();
+
+while((i < 10)){
+// looks like while is faster than FOR when exporting to cpp
+
+arrowheadEvent().eventMetadata()[i] = eventMetadata()[i];
+i = i+1;
+}
+}
+
+
+void FORTE_FieldsToArrowheadEvent::enterStateSTART(void){
+ m_nECCState = scm_nStateSTART;
+}
+
+void FORTE_FieldsToArrowheadEvent::enterStateREQ(void){
+ m_nECCState = scm_nStateREQ;
+ alg_REQ();
+ sendOutputEvent( scm_nEventCNFID);
+}
+
+void FORTE_FieldsToArrowheadEvent::executeEvent(int pa_nEIID){
+ bool bTransitionCleared;
+ do{
+ bTransitionCleared = true;
+ switch(m_nECCState){
+ case scm_nStateSTART:
+ if(scm_nEventREQID == pa_nEIID)
+ enterStateREQ();
+ else
+ bTransitionCleared = false; //no transition cleared
+ break;
+ case scm_nStateREQ:
+ if((1))
+ enterStateSTART();
+ else
+ bTransitionCleared = false; //no transition cleared
+ break;
+ default:
+ DEVLOG_ERROR("The state is not in the valid range! The state value is: %d. The max value can be: 1.", m_nECCState.operator TForteUInt16 ());
+ m_nECCState = 0; //0 is always the initial state
+ break;
+ }
+ pa_nEIID = cg_nInvalidEventID; // we have to clear the event after the first check in order to ensure correct behavior
+ }while(bTransitionCleared);
+}
+
+
diff --git a/src/modules/arrowhead/eventHandler/FieldsToArrowheadEvent.h b/src/modules/arrowhead/eventHandler/FieldsToArrowheadEvent.h
new file mode 100644
index 0000000..f7c8910
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/FieldsToArrowheadEvent.h
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _FIELDSTOARROWHEADEVENT_H_
+#define _FIELDSTOARROWHEADEVENT_H_
+
+#include <basicfb.h>
+#include <forte_date_and_time.h>
+#include <forte_arrowheadevent.h>
+#include <forte_wstring.h>
+#include <forte_array.h>
+
+class FORTE_FieldsToArrowheadEvent: public CBasicFB{
+ DECLARE_FIRMWARE_FB(FORTE_FieldsToArrowheadEvent)
+
+private:
+ static const CStringDictionary::TStringId scm_anDataInputNames[];
+ static const CStringDictionary::TStringId scm_anDataInputTypeIds[];
+ CIEC_WSTRING &type() {
+ return *static_cast<CIEC_WSTRING*>(getDI(0));
+ };
+
+ CIEC_WSTRING &payload() {
+ return *static_cast<CIEC_WSTRING*>(getDI(1));
+ };
+
+ CIEC_DATE_AND_TIME ×tamp() {
+ return *static_cast<CIEC_DATE_AND_TIME*>(getDI(2));
+ };
+
+ CIEC_WSTRING *eventMetadata() {
+ return (CIEC_WSTRING*)(*static_cast<CIEC_ARRAY *>(getDI(3)))[0]; //the first element marks the start of the array
+ };
+
+ CIEC_ARRAY &eventMetadata_Array() {
+ return *static_cast<CIEC_ARRAY*>(getDI(3));
+ };
+
+ static const CStringDictionary::TStringId scm_anDataOutputNames[];
+ static const CStringDictionary::TStringId scm_anDataOutputTypeIds[];
+ CIEC_ArrowheadEvent &arrowheadEvent() {
+ return *static_cast<CIEC_ArrowheadEvent*>(getDO(0));
+ };
+
+ static const TEventID scm_nEventREQID = 0;
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const TDataIOID scm_anEIWith[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ static const TEventID scm_nEventCNFID = 0;
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const TDataIOID scm_anEOWith[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_BASIC_FB_DATA_ARRAY(1, 4, 1, 0, 0);
+ void alg_REQ(void);
+ static const TForteInt16 scm_nStateSTART = 0;
+ static const TForteInt16 scm_nStateREQ = 1;
+
+ void enterStateSTART(void);
+ void enterStateREQ(void);
+
+ virtual void executeEvent(int pa_nEIID);
+
+public:
+ FORTE_FieldsToArrowheadEvent(CStringDictionary::TStringId pa_nInstanceNameId, CResource *pa_poSrcRes) :
+ CBasicFB(pa_poSrcRes, &scm_stFBInterfaceSpec, pa_nInstanceNameId,
+ 0, m_anFBConnData, m_anFBVarsData){
+ };
+
+ virtual ~FORTE_FieldsToArrowheadEvent(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/FieldsToEventFilter.cpp b/src/modules/arrowhead/eventHandler/FieldsToEventFilter.cpp
new file mode 100644
index 0000000..8c1b55e
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/FieldsToEventFilter.cpp
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "FieldsToEventFilter.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "FieldsToEventFilter_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_FieldsToEventFilter, g_nStringIdFieldsToEventFilter)
+
+const CStringDictionary::TStringId FORTE_FieldsToEventFilter::scm_anDataInputNames[] = {g_nStringIdeventType, g_nStringIdconsumer, g_nStringIdsources, g_nStringIdstartDate, g_nStringIdendDate, g_nStringIdfilterMetadata, g_nStringIdnotifyUri, g_nStringIdmatchMetadata};
+
+const CStringDictionary::TStringId FORTE_FieldsToEventFilter::scm_anDataInputTypeIds[] = {g_nStringIdWSTRING, g_nStringIdArrowheadSystem, g_nStringIdARRAY, 10, g_nStringIdArrowheadSystem, g_nStringIdDATE_AND_TIME, g_nStringIdDATE_AND_TIME, g_nStringIdARRAY, 10, g_nStringIdWSTRING, g_nStringIdWSTRING, g_nStringIdBOOL};
+
+const CStringDictionary::TStringId FORTE_FieldsToEventFilter::scm_anDataOutputNames[] = {g_nStringIdeventFilter};
+
+const CStringDictionary::TStringId FORTE_FieldsToEventFilter::scm_anDataOutputTypeIds[] = {g_nStringIdEventFilter};
+
+const TForteInt16 FORTE_FieldsToEventFilter::scm_anEIWithIndexes[] = {0};
+const TDataIOID FORTE_FieldsToEventFilter::scm_anEIWith[] = {0, 1, 3, 6, 2, 4, 5, 7, 255};
+const CStringDictionary::TStringId FORTE_FieldsToEventFilter::scm_anEventInputNames[] = {g_nStringIdREQ};
+
+const TDataIOID FORTE_FieldsToEventFilter::scm_anEOWith[] = {0, 255};
+const TForteInt16 FORTE_FieldsToEventFilter::scm_anEOWithIndexes[] = {0, -1};
+const CStringDictionary::TStringId FORTE_FieldsToEventFilter::scm_anEventOutputNames[] = {g_nStringIdCNF};
+
+const SFBInterfaceSpec FORTE_FieldsToEventFilter::scm_stFBInterfaceSpec = {
+ 1, scm_anEventInputNames, scm_anEIWith, scm_anEIWithIndexes,
+ 1, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes, 8, scm_anDataInputNames, scm_anDataInputTypeIds,
+ 1, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0
+};
+
+void FORTE_FieldsToEventFilter::alg_REQ(void){
+CIEC_INT i;
+;
+
+i = 0;
+eventFilter().eventType() = eventType();
+eventFilter().consumer() = consumer();
+eventFilter().startDate() = startDate();
+eventFilter().endDate() = endDate();
+eventFilter().notifyUri() = notifyUri();
+eventFilter().matchMetadata() = matchMetadata();
+
+while((i < 10)){
+// looks like while is faster than FOR when exporting to cpp
+
+eventFilter().sources()[i] = sources()[i];
+eventFilter().filterMetadata()[i] = filterMetadata()[i];
+i = i+1;
+}
+}
+
+
+void FORTE_FieldsToEventFilter::enterStateSTART(void){
+ m_nECCState = scm_nStateSTART;
+}
+
+void FORTE_FieldsToEventFilter::enterStateREQ(void){
+ m_nECCState = scm_nStateREQ;
+ alg_REQ();
+ sendOutputEvent( scm_nEventCNFID);
+}
+
+void FORTE_FieldsToEventFilter::executeEvent(int pa_nEIID){
+ bool bTransitionCleared;
+ do{
+ bTransitionCleared = true;
+ switch(m_nECCState){
+ case scm_nStateSTART:
+ if(scm_nEventREQID == pa_nEIID)
+ enterStateREQ();
+ else
+ bTransitionCleared = false; //no transition cleared
+ break;
+ case scm_nStateREQ:
+ if((1))
+ enterStateSTART();
+ else
+ bTransitionCleared = false; //no transition cleared
+ break;
+ default:
+ DEVLOG_ERROR("The state is not in the valid range! The state value is: %d. The max value can be: 1.", m_nECCState.operator TForteUInt16 ());
+ m_nECCState = 0; //0 is always the initial state
+ break;
+ }
+ pa_nEIID = cg_nInvalidEventID; // we have to clear the event after the first check in order to ensure correct behavior
+ }while(bTransitionCleared);
+}
+
+
diff --git a/src/modules/arrowhead/eventHandler/FieldsToEventFilter.h b/src/modules/arrowhead/eventHandler/FieldsToEventFilter.h
new file mode 100644
index 0000000..2684ff7
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/FieldsToEventFilter.h
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _FIELDSTOEVENTFILTER_H_
+#define _FIELDSTOEVENTFILTER_H_
+
+#include <basicfb.h>
+#include <forte_date_and_time.h>
+#include <forte_bool.h>
+#include <forte_arrowheadsystem.h>
+#include <forte_eventfilter.h>
+#include <forte_wstring.h>
+#include <forte_array.h>
+
+class FORTE_FieldsToEventFilter: public CBasicFB{
+ DECLARE_FIRMWARE_FB(FORTE_FieldsToEventFilter)
+
+private:
+ static const CStringDictionary::TStringId scm_anDataInputNames[];
+ static const CStringDictionary::TStringId scm_anDataInputTypeIds[];
+ CIEC_WSTRING &eventType() {
+ return *static_cast<CIEC_WSTRING*>(getDI(0));
+ };
+
+ CIEC_ArrowheadSystem &consumer() {
+ return *static_cast<CIEC_ArrowheadSystem*>(getDI(1));
+ };
+
+ CIEC_ArrowheadSystem *sources() {
+ return (CIEC_ArrowheadSystem*)(*static_cast<CIEC_ARRAY *>(getDI(2)))[0]; //the first element marks the start of the array
+ };
+
+ CIEC_ARRAY &sources_Array() {
+ return *static_cast<CIEC_ARRAY*>(getDI(2));
+ };
+
+ CIEC_DATE_AND_TIME &startDate() {
+ return *static_cast<CIEC_DATE_AND_TIME*>(getDI(3));
+ };
+
+ CIEC_DATE_AND_TIME &endDate() {
+ return *static_cast<CIEC_DATE_AND_TIME*>(getDI(4));
+ };
+
+ CIEC_WSTRING *filterMetadata() {
+ return (CIEC_WSTRING*)(*static_cast<CIEC_ARRAY *>(getDI(5)))[0]; //the first element marks the start of the array
+ };
+
+ CIEC_ARRAY &filterMetadata_Array() {
+ return *static_cast<CIEC_ARRAY*>(getDI(5));
+ };
+
+ CIEC_WSTRING ¬ifyUri() {
+ return *static_cast<CIEC_WSTRING*>(getDI(6));
+ };
+
+ CIEC_BOOL &matchMetadata() {
+ return *static_cast<CIEC_BOOL*>(getDI(7));
+ };
+
+ static const CStringDictionary::TStringId scm_anDataOutputNames[];
+ static const CStringDictionary::TStringId scm_anDataOutputTypeIds[];
+ CIEC_EventFilter &eventFilter() {
+ return *static_cast<CIEC_EventFilter*>(getDO(0));
+ };
+
+ static const TEventID scm_nEventREQID = 0;
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const TDataIOID scm_anEIWith[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ static const TEventID scm_nEventCNFID = 0;
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const TDataIOID scm_anEOWith[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_BASIC_FB_DATA_ARRAY(1, 8, 1, 0, 0);
+ void alg_REQ(void);
+ static const TForteInt16 scm_nStateSTART = 0;
+ static const TForteInt16 scm_nStateREQ = 1;
+
+ void enterStateSTART(void);
+ void enterStateREQ(void);
+
+ virtual void executeEvent(int pa_nEIID);
+
+public:
+ FORTE_FieldsToEventFilter(CStringDictionary::TStringId pa_nInstanceNameId, CResource *pa_poSrcRes) :
+ CBasicFB(pa_poSrcRes, &scm_stFBInterfaceSpec, pa_nInstanceNameId,
+ 0, m_anFBConnData, m_anFBVarsData){
+ };
+
+ virtual ~FORTE_FieldsToEventFilter(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/FieldsToPublishEvent.cpp b/src/modules/arrowhead/eventHandler/FieldsToPublishEvent.cpp
new file mode 100644
index 0000000..a949b91
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/FieldsToPublishEvent.cpp
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "FieldsToPublishEvent.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "FieldsToPublishEvent_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_FieldsToPublishEvent, g_nStringIdFieldsToPublishEvent)
+
+const CStringDictionary::TStringId FORTE_FieldsToPublishEvent::scm_anDataInputNames[] = {g_nStringIdsource, g_nStringIdevent, g_nStringIddeliveryCompleteUri};
+
+const CStringDictionary::TStringId FORTE_FieldsToPublishEvent::scm_anDataInputTypeIds[] = {g_nStringIdArrowheadSystem, g_nStringIdArrowheadEvent, g_nStringIdWSTRING};
+
+const CStringDictionary::TStringId FORTE_FieldsToPublishEvent::scm_anDataOutputNames[] = {g_nStringIdpublishEvent};
+
+const CStringDictionary::TStringId FORTE_FieldsToPublishEvent::scm_anDataOutputTypeIds[] = {g_nStringIdPublishEvent};
+
+const TForteInt16 FORTE_FieldsToPublishEvent::scm_anEIWithIndexes[] = {0};
+const TDataIOID FORTE_FieldsToPublishEvent::scm_anEIWith[] = {0, 1, 2, 255};
+const CStringDictionary::TStringId FORTE_FieldsToPublishEvent::scm_anEventInputNames[] = {g_nStringIdREQ};
+
+const TDataIOID FORTE_FieldsToPublishEvent::scm_anEOWith[] = {0, 255};
+const TForteInt16 FORTE_FieldsToPublishEvent::scm_anEOWithIndexes[] = {0, -1};
+const CStringDictionary::TStringId FORTE_FieldsToPublishEvent::scm_anEventOutputNames[] = {g_nStringIdCNF};
+
+const SFBInterfaceSpec FORTE_FieldsToPublishEvent::scm_stFBInterfaceSpec = {
+ 1, scm_anEventInputNames, scm_anEIWith, scm_anEIWithIndexes,
+ 1, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes, 3, scm_anDataInputNames, scm_anDataInputTypeIds,
+ 1, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0
+};
+
+void FORTE_FieldsToPublishEvent::alg_REQ(void){
+publishEvent().source() = source();
+publishEvent().event() = event();
+publishEvent().deliveryCompleteUri() = deliveryCompleteUri();
+
+
+}
+
+
+void FORTE_FieldsToPublishEvent::enterStateSTART(void){
+ m_nECCState = scm_nStateSTART;
+}
+
+void FORTE_FieldsToPublishEvent::enterStateREQ(void){
+ m_nECCState = scm_nStateREQ;
+ alg_REQ();
+ sendOutputEvent( scm_nEventCNFID);
+}
+
+void FORTE_FieldsToPublishEvent::executeEvent(int pa_nEIID){
+ bool bTransitionCleared;
+ do{
+ bTransitionCleared = true;
+ switch(m_nECCState){
+ case scm_nStateSTART:
+ if(scm_nEventREQID == pa_nEIID)
+ enterStateREQ();
+ else
+ bTransitionCleared = false; //no transition cleared
+ break;
+ case scm_nStateREQ:
+ if((1))
+ enterStateSTART();
+ else
+ bTransitionCleared = false; //no transition cleared
+ break;
+ default:
+ DEVLOG_ERROR("The state is not in the valid range! The state value is: %d. The max value can be: 1.", m_nECCState.operator TForteUInt16 ());
+ m_nECCState = 0; //0 is always the initial state
+ break;
+ }
+ pa_nEIID = cg_nInvalidEventID; // we have to clear the event after the first check in order to ensure correct behavior
+ }while(bTransitionCleared);
+}
+
+
diff --git a/src/modules/arrowhead/eventHandler/FieldsToPublishEvent.h b/src/modules/arrowhead/eventHandler/FieldsToPublishEvent.h
new file mode 100644
index 0000000..54d00e4
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/FieldsToPublishEvent.h
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _FIELDSTOPUBLISHEVENT_H_
+#define _FIELDSTOPUBLISHEVENT_H_
+
+#include <basicfb.h>
+#include <forte_publishevent.h>
+#include <forte_arrowheadsystem.h>
+#include <forte_arrowheadevent.h>
+#include <forte_wstring.h>
+
+class FORTE_FieldsToPublishEvent: public CBasicFB{
+ DECLARE_FIRMWARE_FB(FORTE_FieldsToPublishEvent)
+
+private:
+ static const CStringDictionary::TStringId scm_anDataInputNames[];
+ static const CStringDictionary::TStringId scm_anDataInputTypeIds[];
+ CIEC_ArrowheadSystem &source() {
+ return *static_cast<CIEC_ArrowheadSystem*>(getDI(0));
+ };
+
+ CIEC_ArrowheadEvent &event() {
+ return *static_cast<CIEC_ArrowheadEvent*>(getDI(1));
+ };
+
+ CIEC_WSTRING &deliveryCompleteUri() {
+ return *static_cast<CIEC_WSTRING*>(getDI(2));
+ };
+
+ static const CStringDictionary::TStringId scm_anDataOutputNames[];
+ static const CStringDictionary::TStringId scm_anDataOutputTypeIds[];
+ CIEC_PublishEvent &publishEvent() {
+ return *static_cast<CIEC_PublishEvent*>(getDO(0));
+ };
+
+ static const TEventID scm_nEventREQID = 0;
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const TDataIOID scm_anEIWith[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ static const TEventID scm_nEventCNFID = 0;
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const TDataIOID scm_anEOWith[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_BASIC_FB_DATA_ARRAY(1, 3, 1, 0, 0);
+ void alg_REQ(void);
+ static const TForteInt16 scm_nStateSTART = 0;
+ static const TForteInt16 scm_nStateREQ = 1;
+
+ void enterStateSTART(void);
+ void enterStateREQ(void);
+
+ virtual void executeEvent(int pa_nEIID);
+
+public:
+ FORTE_FieldsToPublishEvent(CStringDictionary::TStringId pa_nInstanceNameId, CResource *pa_poSrcRes) :
+ CBasicFB(pa_poSrcRes, &scm_stFBInterfaceSpec, pa_nInstanceNameId,
+ 0, m_anFBConnData, m_anFBVarsData){
+ };
+
+ virtual ~FORTE_FieldsToPublishEvent(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/HTTP/CMakeLists.txt b/src/modules/arrowhead/eventHandler/HTTP/CMakeLists.txt
new file mode 100644
index 0000000..d8b526b
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/HTTP/CMakeLists.txt
@@ -0,0 +1,20 @@
+# *******************************************************************************
+# Copyright (c) 2019, fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral - initial implementation
+# *******************************************************************************
+
+#############################################################################
+# Arrowhead specific functional blocks for HTTP for event handler
+#############################################################################
+
+forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+forte_add_sourcefile_hcpp(PublishEventHTTP SubscribeEventHTTP)
+
diff --git a/src/modules/arrowhead/eventHandler/HTTP/PublishEventHTTP.cpp b/src/modules/arrowhead/eventHandler/HTTP/PublishEventHTTP.cpp
new file mode 100644
index 0000000..6eeb2f7
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/HTTP/PublishEventHTTP.cpp
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "PublishEventHTTP.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "PublishEventHTTP_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_PublishEventHTTP, g_nStringIdPublishEventHTTP)
+
+const TForteInt16 FORTE_PublishEventHTTP::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_PublishEventHTTP::scm_astAdapterInstances[] = {
+{g_nStringIdArrowheadPublishAdp, g_nStringIdpublishEvent, false }};
+
+const SFBInterfaceSpec FORTE_PublishEventHTTP::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_PublishEventHTTP::scm_astInternalFBs[] = {
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdInitFlag, g_nStringIdE_SR},
+ {g_nStringIdAPPEND_STRING_3, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdQuery, g_nStringIdCLIENT_1_2},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+};
+
+const SCFB_FBParameter FORTE_PublishEventHTTP::scm_astParamters[] = {
+ {2, g_nStringIdIN_1, "STRING#http["},
+ {2, g_nStringIdIN_3, "STRING#/publish; POST; application/json]"},
+};
+
+const SCFB_FBConnectionData FORTE_PublishEventHTTP::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdREQ), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdCNF), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdEO), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdINIT), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdCNF), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdREQ), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdS), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdINITO), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdCNF), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublish), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 0},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_PublishEventHTTP::scm_astFannedOutEventConnections[] = {
+ {6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublished), CCompositeFB::scm_nAdapterMarker |0},
+};
+
+const SCFB_FBConnectionData FORTE_PublishEventHTTP::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdSD_1), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdQ), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdQI), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdOUT), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdID), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublishEvent), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdIN_2), 2},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_PublishEventHTTP::scm_astFannedOutDataConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 5},
+};
+
+const SCFB_FBNData FORTE_PublishEventHTTP::scm_stFBNData = {
+ 6, scm_astInternalFBs,
+ 8, scm_astEventConnections,
+ 1, scm_astFannedOutEventConnections,
+ 6, scm_astDataConnections,
+ 1, scm_astFannedOutDataConnections,
+ 2, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/eventHandler/HTTP/PublishEventHTTP.h b/src/modules/arrowhead/eventHandler/HTTP/PublishEventHTTP.h
new file mode 100644
index 0000000..4062817
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/HTTP/PublishEventHTTP.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _PUBLISHEVENTHTTP_H_
+#define _PUBLISHEVENTHTTP_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "ArrowheadPublishAdp.h"
+
+class FORTE_PublishEventHTTP: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_PublishEventHTTP)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_ArrowheadPublishAdp& publishEvent() {
+ return (*static_cast<FORTE_ArrowheadPublishAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_npublishEventAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_PublishEventHTTP){
+ };
+
+ virtual ~FORTE_PublishEventHTTP(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/HTTP/SubscribeEventHTTP.cpp b/src/modules/arrowhead/eventHandler/HTTP/SubscribeEventHTTP.cpp
new file mode 100644
index 0000000..c5e7a85
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/HTTP/SubscribeEventHTTP.cpp
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "SubscribeEventHTTP.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "SubscribeEventHTTP_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_SubscribeEventHTTP, g_nStringIdSubscribeEventHTTP)
+
+const TForteInt16 FORTE_SubscribeEventHTTP::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_SubscribeEventHTTP::scm_astAdapterInstances[] = {
+{g_nStringIdSubscribeEventAdp, g_nStringIdSubscribeEventAdp, false }};
+
+const SFBInterfaceSpec FORTE_SubscribeEventHTTP::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_SubscribeEventHTTP::scm_astInternalFBs[] = {
+ {g_nStringIdInitFlagReg, g_nStringIdE_SR},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+ {g_nStringIdInitFlagUnReg, g_nStringIdE_SR},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdCreateRegisterID, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdE_PERMIT_1, g_nStringIdE_PERMIT},
+ {g_nStringIdRegister, g_nStringIdCLIENT_1_2},
+ {g_nStringIdUnregister, g_nStringIdCLIENT_1_2},
+ {g_nStringIdCreateRegisterID_1, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdF_STRING_TO_WSTRING},
+};
+
+const SCFB_FBParameter FORTE_SubscribeEventHTTP::scm_astParamters[] = {
+ {4, g_nStringIdIN_1, "STRING#http["},
+ {4, g_nStringIdIN_3, "STRING#/subscription; POST; application/json]"},
+ {9, g_nStringIdIN_1, "STRING#http["},
+ {9, g_nStringIdIN_3, "STRING#/subscription; PUT; application/json]"},
+};
+
+const SCFB_FBConnectionData FORTE_SubscribeEventHTTP::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdINITO), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdCNF), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdR), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdEO), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdINIT), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdCNF), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdREQ), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribe), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdREQ), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdEO), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdINIT), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdEO), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdREQ), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdINITO), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdEI), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdCNF), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribed), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribe), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdREQ), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdCNF), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdREQ), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdCNF), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 5},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_SubscribeEventHTTP::scm_astFannedOutEventConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribed), CCompositeFB::scm_nAdapterMarker |0},
+ {4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdS), 0},
+ {10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdR), 2},
+ {13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdS), 2},
+};
+
+const SCFB_FBConnectionData FORTE_SubscribeEventHTTP::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdQ), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdPERMIT), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdQ), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdQI), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdSD_1), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdOUT), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdID), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdIN_2), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdeventFilter), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdOUT), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdIN), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdOUT), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdID), 8},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_SubscribeEventHTTP::scm_astFannedOutDataConnections[] = {
+ {0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdQI), 8},
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 1},
+ {2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdSD_1), 8},
+ {5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdIN_2), 9},
+};
+
+const SCFB_FBNData FORTE_SubscribeEventHTTP::scm_stFBNData = {
+ 11, scm_astInternalFBs,
+ 14, scm_astEventConnections,
+ 4, scm_astFannedOutEventConnections,
+ 9, scm_astDataConnections,
+ 4, scm_astFannedOutDataConnections,
+ 4, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/eventHandler/HTTP/SubscribeEventHTTP.h b/src/modules/arrowhead/eventHandler/HTTP/SubscribeEventHTTP.h
new file mode 100644
index 0000000..295d03d
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/HTTP/SubscribeEventHTTP.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _SUBSCRIBEEVENTHTTP_H_
+#define _SUBSCRIBEEVENTHTTP_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "SubscribeEventAdp.h"
+
+class FORTE_SubscribeEventHTTP: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_SubscribeEventHTTP)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_SubscribeEventAdp& SubscribeEventAdp() {
+ return (*static_cast<FORTE_SubscribeEventAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nSubscribeEventAdpAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_SubscribeEventHTTP){
+ };
+
+ virtual ~FORTE_SubscribeEventHTTP(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/OpcUa/CMakeLists.txt b/src/modules/arrowhead/eventHandler/OpcUa/CMakeLists.txt
new file mode 100644
index 0000000..1dd0a82
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/OpcUa/CMakeLists.txt
@@ -0,0 +1,22 @@
+# *******************************************************************************
+# Copyright (c) 2019, fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral - initial implementation
+# *******************************************************************************
+
+#############################################################################
+# Arrowhead specific functional blocks for OPC UA for event handler
+#############################################################################
+
+forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+forte_add_sourcefile_hcpp(PublishEventOpcUa)
+forte_add_sourcefile_hcpp(SubscribeEventOpcUa)
+
+
\ No newline at end of file
diff --git a/src/modules/arrowhead/eventHandler/OpcUa/PublishEventOpcUa.cpp b/src/modules/arrowhead/eventHandler/OpcUa/PublishEventOpcUa.cpp
new file mode 100644
index 0000000..c0196d3
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/OpcUa/PublishEventOpcUa.cpp
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "PublishEventOpcUa.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "PublishEventOpcUa_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_PublishEventOpcUa, g_nStringIdPublishEventOpcUa)
+
+const TForteInt16 FORTE_PublishEventOpcUa::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_PublishEventOpcUa::scm_astAdapterInstances[] = {
+{g_nStringIdArrowheadPublishAdp, g_nStringIdpublishEvent, false }};
+
+const SFBInterfaceSpec FORTE_PublishEventOpcUa::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_PublishEventOpcUa::scm_astInternalFBs[] = {
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdInitFlag, g_nStringIdE_SR},
+ {g_nStringIdAPPEND_STRING_3, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+ {g_nStringIdE_SWITCH_2, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH_1_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_CTU_1, g_nStringIdE_CTU},
+ {g_nStringIdE_DELAY_1, g_nStringIdE_DELAY},
+ {g_nStringIdQuery, g_nStringIdCLIENT_1_0},
+};
+
+const SCFB_FBParameter FORTE_PublishEventOpcUa::scm_astParamters[] = {
+ {2, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {2, g_nStringIdIN_3, "STRING##; /Objects/2:EventHandler/2:publish]"},
+ {7, g_nStringIdPV, "UINT#3"},
+ {8, g_nStringIdDT, "T#250ms"},
+};
+
+const SCFB_FBConnectionData FORTE_PublishEventOpcUa::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdCNF), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdCNF), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdREQ), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdS), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublish), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEO1), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdR), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEO1), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdR), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEO0), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdCU), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdCUO), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEI), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEO0), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1, g_nStringIdSTART), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdEO), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdINIT), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdREQ), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1, g_nStringIdEO), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdREQ), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdINITO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdCNF), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEI), 5},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_PublishEventOpcUa::scm_astFannedOutEventConnections[] = {
+ {4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublished), CCompositeFB::scm_nAdapterMarker |0},
+ {4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 1},
+ {5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 1},
+ {5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublished), CCompositeFB::scm_nAdapterMarker |0},
+};
+
+const SCFB_FBConnectionData FORTE_PublishEventOpcUa::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdOUT), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdQ), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdpublishEvent), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdpublishEvent, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdIN_2), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdQ), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdG), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdID), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdSD_1), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdQO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdG), 5},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_PublishEventOpcUa::scm_astFannedOutDataConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdQI), 9},
+};
+
+const SCFB_FBNData FORTE_PublishEventOpcUa::scm_stFBNData = {
+ 10, scm_astInternalFBs,
+ 14, scm_astEventConnections,
+ 4, scm_astFannedOutEventConnections,
+ 8, scm_astDataConnections,
+ 1, scm_astFannedOutDataConnections,
+ 4, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/eventHandler/OpcUa/PublishEventOpcUa.h b/src/modules/arrowhead/eventHandler/OpcUa/PublishEventOpcUa.h
new file mode 100644
index 0000000..bc99961
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/OpcUa/PublishEventOpcUa.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _PUBLISHEVENTOPCUA_H_
+#define _PUBLISHEVENTOPCUA_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "ArrowheadPublishAdp.h"
+
+class FORTE_PublishEventOpcUa: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_PublishEventOpcUa)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_ArrowheadPublishAdp& publishEvent() {
+ return (*static_cast<FORTE_ArrowheadPublishAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_npublishEventAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_PublishEventOpcUa){
+ };
+
+ virtual ~FORTE_PublishEventOpcUa(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/OpcUa/SubscribeEventOpcUa.cpp b/src/modules/arrowhead/eventHandler/OpcUa/SubscribeEventOpcUa.cpp
new file mode 100644
index 0000000..a61f94c
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/OpcUa/SubscribeEventOpcUa.cpp
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "SubscribeEventOpcUa.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "SubscribeEventOpcUa_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_SubscribeEventOpcUa, g_nStringIdSubscribeEventOpcUa)
+
+const TForteInt16 FORTE_SubscribeEventOpcUa::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_SubscribeEventOpcUa::scm_astAdapterInstances[] = {
+{g_nStringIdSubscribeEventAdp, g_nStringIdSubscribeEventAdp, false }};
+
+const SFBInterfaceSpec FORTE_SubscribeEventOpcUa::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_SubscribeEventOpcUa::scm_astInternalFBs[] = {
+ {g_nStringIdInitFlagReg, g_nStringIdE_SR},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+ {g_nStringIdInitFlagUnReg, g_nStringIdE_SR},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdCreateRegisterID, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdE_PERMIT_1, g_nStringIdE_PERMIT},
+ {g_nStringIdCreateRegisterID_1, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdRegister, g_nStringIdCLIENT_1_0},
+ {g_nStringIdUnregister, g_nStringIdCLIENT_1_0},
+ {g_nStringIdE_DELAY_1, g_nStringIdE_DELAY},
+ {g_nStringIdE_SWITCH_1_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH_2, g_nStringIdE_SWITCH},
+ {g_nStringIdE_CTU_1, g_nStringIdE_CTU},
+ {g_nStringIdE_DELAY_1_1, g_nStringIdE_DELAY},
+ {g_nStringIdE_SWITCH_1_1_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH_2_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_CTU_1_1, g_nStringIdE_CTU},
+};
+
+const SCFB_FBParameter FORTE_SubscribeEventOpcUa::scm_astParamters[] = {
+ {4, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {4, g_nStringIdIN_3, "STRING##; /Objects/2:EventHandler/2:subscribe]"},
+ {7, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {7, g_nStringIdIN_3, "STRING##; /Objects/2:EventHandler/2:unsubscribe]"},
+ {11, g_nStringIdDT, "T#250ms"},
+ {14, g_nStringIdPV, "UINT#3"},
+ {15, g_nStringIdDT, "T#250ms"},
+ {18, g_nStringIdPV, "UINT#3"},
+};
+
+const SCFB_FBConnectionData FORTE_SubscribeEventOpcUa::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdCNF), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribe), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdREQ), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribe), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdREQ), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdCNF), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdREQ), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdCNF), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdEO), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdINIT), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdREQ), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdINITO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdEO), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdINIT), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdEO), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdREQ), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdINITO), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdEI), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEO1), 13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdR), 14},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEO1), 12, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdR), 14},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdCUO), 14, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEI), 12},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEO0), 13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdCU), 14},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEO0), 12, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1, g_nStringIdSTART), 11},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2_1, g_nStringIdEO1), 17, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1_1, g_nStringIdR), 18},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1_1, g_nStringIdEO1), 16, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1_1, g_nStringIdR), 18},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1_1, g_nStringIdCUO), 18, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1_1, g_nStringIdEI), 16},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2_1, g_nStringIdEO0), 17, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1_1, g_nStringIdCU), 18},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1_1, g_nStringIdEO0), 16, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1_1, g_nStringIdSTART), 15},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdCNF), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEI), 13},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1, g_nStringIdEO), 11, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdREQ), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdCNF), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2_1, g_nStringIdEI), 17},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1_1, g_nStringIdEO), 15, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdREQ), 9},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_SubscribeEventOpcUa::scm_astFannedOutEventConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdS), 0},
+ {5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdS), 2},
+ {12, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribed), CCompositeFB::scm_nAdapterMarker |0},
+ {12, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdR), 2},
+ {13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdR), 2},
+ {13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribed), CCompositeFB::scm_nAdapterMarker |0},
+ {17, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribed), CCompositeFB::scm_nAdapterMarker |0},
+ {17, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdR), 0},
+ {18, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdR), 0},
+ {18, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribed), CCompositeFB::scm_nAdapterMarker |0},
+};
+
+const SCFB_FBConnectionData FORTE_SubscribeEventOpcUa::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdQ), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdPERMIT), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdOUT), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdQ), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdIN_2), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdeventFilter), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdOUT), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdIN), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdID), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdSD_1), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_2, g_nStringIdOUT), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdID), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdQ), 14, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdG), 12},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1_1, g_nStringIdQ), 18, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1_1, g_nStringIdG), 16},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdQO), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdG), 13},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdQO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2_1, g_nStringIdG), 17},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_SubscribeEventOpcUa::scm_astFannedOutDataConnections[] = {
+ {0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdQI), 10},
+ {2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdQI), 9},
+ {3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID_1, g_nStringIdIN_2), 7},
+ {7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdSD_1), 10},
+};
+
+const SCFB_FBNData FORTE_SubscribeEventOpcUa::scm_stFBNData = {
+ 19, scm_astInternalFBs,
+ 26, scm_astEventConnections,
+ 10, scm_astFannedOutEventConnections,
+ 13, scm_astDataConnections,
+ 4, scm_astFannedOutDataConnections,
+ 8, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/eventHandler/OpcUa/SubscribeEventOpcUa.h b/src/modules/arrowhead/eventHandler/OpcUa/SubscribeEventOpcUa.h
new file mode 100644
index 0000000..04ec801
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/OpcUa/SubscribeEventOpcUa.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _SUBSCRIBEEVENTOPCUA_H_
+#define _SUBSCRIBEEVENTOPCUA_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "SubscribeEventAdp.h"
+
+class FORTE_SubscribeEventOpcUa: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_SubscribeEventOpcUa)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_SubscribeEventAdp& SubscribeEventAdp() {
+ return (*static_cast<FORTE_SubscribeEventAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nSubscribeEventAdpAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_SubscribeEventOpcUa){
+ };
+
+ virtual ~FORTE_SubscribeEventOpcUa(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/SubscribeEvent.cpp b/src/modules/arrowhead/eventHandler/SubscribeEvent.cpp
new file mode 100644
index 0000000..f6e28e6
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/SubscribeEvent.cpp
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "SubscribeEvent.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "SubscribeEvent_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_SubscribeEvent, g_nStringIdSubscribeEvent)
+
+const CStringDictionary::TStringId FORTE_SubscribeEvent::scm_anDataInputNames[] = {g_nStringIdeventFilter, g_nStringIdendpoint};
+
+const CStringDictionary::TStringId FORTE_SubscribeEvent::scm_anDataInputTypeIds[] = {g_nStringIdEventFilter, g_nStringIdWSTRING};
+
+const TForteInt16 FORTE_SubscribeEvent::scm_anEIWithIndexes[] = {0, 3};
+const TDataIOID FORTE_SubscribeEvent::scm_anEIWith[] = {0, 1, 255, 0, 1, 255};
+const CStringDictionary::TStringId FORTE_SubscribeEvent::scm_anEventInputNames[] = {g_nStringIdSubscribe, g_nStringIdUnsubscribe};
+
+const TForteInt16 FORTE_SubscribeEvent::scm_anEOWithIndexes[] = {-1, -1, -1};
+const CStringDictionary::TStringId FORTE_SubscribeEvent::scm_anEventOutputNames[] = {g_nStringIdSubscribed, g_nStringIdUnsubscribed};
+
+const SAdapterInstanceDef FORTE_SubscribeEvent::scm_astAdapterInstances[] = {
+{g_nStringIdSubscribeEventAdp, g_nStringIdSubscribeEventAdp, true }};
+
+const SFBInterfaceSpec FORTE_SubscribeEvent::scm_stFBInterfaceSpec = {
+ 2, scm_anEventInputNames, scm_anEIWith, scm_anEIWithIndexes,
+ 2, scm_anEventOutputNames, 0, 0, 2, scm_anDataInputNames, scm_anDataInputTypeIds,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBConnectionData FORTE_SubscribeEvent::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdUnsubscribe), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribe), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdSubscribe), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribe), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdSubscribed), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdSubscribed), -1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdUnsubscribed), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdUnsubscribed), -1},
+};
+
+const SCFB_FBConnectionData FORTE_SubscribeEvent::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdeventFilter), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdeventFilter), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdendpoint), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdSubscribeEventAdp, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0},
+};
+
+const SCFB_FBNData FORTE_SubscribeEvent::scm_stFBNData = {
+ 0, 0,
+ 4, scm_astEventConnections,
+ 0, 0,
+ 2, scm_astDataConnections,
+ 0, 0,
+ 0, 0
+};
+
+
diff --git a/src/modules/arrowhead/eventHandler/SubscribeEvent.h b/src/modules/arrowhead/eventHandler/SubscribeEvent.h
new file mode 100644
index 0000000..3882277
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/SubscribeEvent.h
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _SUBSCRIBEEVENT_H_
+#define _SUBSCRIBEEVENT_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include <forte_eventfilter.h>
+#include <forte_wstring.h>
+#include "SubscribeEventAdp.h"
+
+class FORTE_SubscribeEvent: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_SubscribeEvent)
+
+private:
+ static const CStringDictionary::TStringId scm_anDataInputNames[];
+ static const CStringDictionary::TStringId scm_anDataInputTypeIds[];
+ CIEC_EventFilter &eventFilter() {
+ return *static_cast<CIEC_EventFilter*>(getDI(0));
+ };
+
+ CIEC_WSTRING &endpoint() {
+ return *static_cast<CIEC_WSTRING*>(getDI(1));
+ };
+
+ static const TEventID scm_nEventSubscribeID = 0;
+ static const TEventID scm_nEventUnsubscribeID = 1;
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const TDataIOID scm_anEIWith[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ static const TEventID scm_nEventSubscribedID = 0;
+ static const TEventID scm_nEventUnsubscribedID = 1;
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_SubscribeEventAdp& SubscribeEventAdp() {
+ return (*static_cast<FORTE_SubscribeEventAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nSubscribeEventAdpAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(2, 2, 0, 1);
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_SubscribeEvent){
+ };
+
+ virtual ~FORTE_SubscribeEvent(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/SubscribeEventAdp.cpp b/src/modules/arrowhead/eventHandler/SubscribeEventAdp.cpp
new file mode 100644
index 0000000..1d97aa1
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/SubscribeEventAdp.cpp
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "SubscribeEventAdp.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "SubscribeEventAdp_gen.cpp"
+#endif
+
+DEFINE_ADAPTER_TYPE(FORTE_SubscribeEventAdp, g_nStringIdSubscribeEventAdp)
+
+const CStringDictionary::TStringId FORTE_SubscribeEventAdp::scm_anDataOutputNames[] = {g_nStringIdeventFilter, g_nStringIdendpoint};
+
+const CStringDictionary::TStringId FORTE_SubscribeEventAdp::scm_anDataOutputTypeIds[] = {g_nStringIdEventFilter, g_nStringIdWSTRING};
+
+const TForteInt16 FORTE_SubscribeEventAdp::scm_anEIWithIndexes[] = {-1, -1, -1};
+const CStringDictionary::TStringId FORTE_SubscribeEventAdp::scm_anEventInputNames[] = {g_nStringIdSubscribed, g_nStringIdUnsubscribed};
+
+const TDataIOID FORTE_SubscribeEventAdp::scm_anEOWith[] = {0, 1, 255, 1, 0, 255};
+const TForteInt16 FORTE_SubscribeEventAdp::scm_anEOWithIndexes[] = {0, 3, -1};
+const CStringDictionary::TStringId FORTE_SubscribeEventAdp::scm_anEventOutputNames[] = {g_nStringIdSubscribe, g_nStringIdUnsubscribe};
+
+const SFBInterfaceSpec FORTE_SubscribeEventAdp::scm_stFBInterfaceSpecSocket = {
+ 2, scm_anEventInputNames, 0, scm_anEIWithIndexes,
+ 2, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes, 0, 0, 0,
+ 2, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0
+};
+
+const SFBInterfaceSpec FORTE_SubscribeEventAdp::scm_stFBInterfaceSpecPlug = {
+ 2, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes,
+ 2, scm_anEventInputNames, 0, 0, 2, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0, 0,
+ 0, 0
+};
+
+
+
diff --git a/src/modules/arrowhead/eventHandler/SubscribeEventAdp.h b/src/modules/arrowhead/eventHandler/SubscribeEventAdp.h
new file mode 100644
index 0000000..04750f9
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/SubscribeEventAdp.h
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _SUBSCRIBEEVENTADP_H_
+#define _SUBSCRIBEEVENTADP_H_
+
+#include <adapter.h>
+#include <typelib.h>
+#include <forte_eventfilter.h>
+#include <forte_wstring.h>
+
+class FORTE_SubscribeEventAdp: public CAdapter{
+ DECLARE_ADAPTER_TYPE(FORTE_SubscribeEventAdp)
+
+private:
+ private:
+ static const CStringDictionary::TStringId scm_anDataOutputNames[];
+ static const CStringDictionary::TStringId scm_anDataOutputTypeIds[];
+ public:
+ CIEC_EventFilter &eventFilter() {
+ return *static_cast<CIEC_EventFilter*>((isSocket()) ? getDO(0) : getDI(0));
+ };
+
+ CIEC_WSTRING &endpoint() {
+ return *static_cast<CIEC_WSTRING*>((isSocket()) ? getDO(1) : getDI(1));
+ };
+
+ public:
+ static const TEventID scm_nEventSubscribedID = 0;
+ int Subscribed() {
+ return m_nParentAdapterListEventID + scm_nEventSubscribedID;
+ }
+ static const TEventID scm_nEventUnsubscribedID = 1;
+ int Unsubscribed() {
+ return m_nParentAdapterListEventID + scm_nEventUnsubscribedID;
+ }
+ private:
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ public:
+ static const TEventID scm_nEventSubscribeID = 0;
+ int Subscribe() {
+ return m_nParentAdapterListEventID + scm_nEventSubscribeID;
+ }
+ static const TEventID scm_nEventUnsubscribeID = 1;
+ int Unsubscribe() {
+ return m_nParentAdapterListEventID + scm_nEventUnsubscribeID;
+ }
+ private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const TDataIOID scm_anEOWith[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpecSocket;
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpecPlug;
+
+ FORTE_ADAPTER_DATA_ARRAY(2, 2, 0, 2, 0);
+
+public:
+ ADAPTER_CTOR(FORTE_SubscribeEventAdp){
+ };
+
+ virtual ~FORTE_SubscribeEventAdp(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/eventHandler/forte_arrowheadevent.cpp b/src/modules/arrowhead/eventHandler/forte_arrowheadevent.cpp
new file mode 100644
index 0000000..b33736a
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/forte_arrowheadevent.cpp
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "forte_arrowheadevent.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "forte_arrowheadevent_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_DATATYPE(ArrowheadEvent, g_nStringIdArrowheadEvent);
+
+CIEC_ArrowheadEvent::CIEC_ArrowheadEvent() :
+ CIEC_STRUCT(g_nStringIdArrowheadEvent, 4, scmElementTypes, scmElementNames, e_APPLICATION + e_CONSTRUCTED + 1) {
+}
+
+const CStringDictionary::TStringId CIEC_ArrowheadEvent::scmElementTypes[] = { g_nStringIdWSTRING, g_nStringIdWSTRING, g_nStringIdDATE_AND_TIME, g_nStringIdARRAY, 10, g_nStringIdWSTRING};
+const CStringDictionary::TStringId CIEC_ArrowheadEvent::scmElementNames[] =
+ { g_nStringIdtype, g_nStringIdpayload, g_nStringIdtimestamp, g_nStringIdeventMetadata };
diff --git a/src/modules/arrowhead/eventHandler/forte_arrowheadevent.h b/src/modules/arrowhead/eventHandler/forte_arrowheadevent.h
new file mode 100644
index 0000000..20b021c
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/forte_arrowheadevent.h
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _FORTE_ARROWHEADSEVENT_H_
+#define _FORTE_ARROWHEADSEVENT_H_
+
+#include "forte_struct.h"
+#include "forte_wstring.h"
+#include "forte_array.h"
+#include "forte_date_and_time.h"
+
+class CIEC_ArrowheadEvent : public CIEC_STRUCT {
+ DECLARE_FIRMWARE_DATATYPE(ArrowheadEvent)
+
+ public:
+ CIEC_ArrowheadEvent();
+
+ virtual ~CIEC_ArrowheadEvent() {
+ }
+
+ CIEC_WSTRING &type() {
+ return *static_cast<CIEC_WSTRING*>(&getMembers()[0]);
+ }
+
+ CIEC_WSTRING &payload() {
+ return *static_cast<CIEC_WSTRING*>(&getMembers()[1]);
+ }
+
+ CIEC_DATE_AND_TIME ×tamp() {
+ return *static_cast<CIEC_DATE_AND_TIME*>(&getMembers()[2]);
+ }
+
+ CIEC_ARRAY *eventMetadata_array() {
+ return static_cast<CIEC_ARRAY *>(&getMembers()[3]); //the first element marks the start of the array
+ }
+
+ CIEC_WSTRING *eventMetadata() {
+ return static_cast<CIEC_WSTRING*>((*static_cast<CIEC_ARRAY *>(&getMembers()[3]))[0]); //the first element marks the start of the array
+ }
+
+ private:
+ static const CStringDictionary::TStringId scmElementTypes[];
+ static const CStringDictionary::TStringId scmElementNames[];
+};
+
+#endif //_FORTE_ARROWHEADSEVENT_H_
diff --git a/src/modules/arrowhead/eventHandler/forte_eventfilter.cpp b/src/modules/arrowhead/eventHandler/forte_eventfilter.cpp
new file mode 100644
index 0000000..13a85c4
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/forte_eventfilter.cpp
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "forte_eventfilter.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "forte_eventfilter_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_DATATYPE(EventFilter, g_nStringIdEventFilter);
+
+CIEC_EventFilter::CIEC_EventFilter() :
+ CIEC_STRUCT(g_nStringIdEventFilter, 8, scmElementTypes, scmElementNames, e_APPLICATION + e_CONSTRUCTED + 1) {
+}
+
+const CStringDictionary::TStringId CIEC_EventFilter::scmElementTypes[] =
+ { g_nStringIdWSTRING, g_nStringIdArrowheadSystem, g_nStringIdARRAY, 10, g_nStringIdArrowheadSystem, g_nStringIdDATE_AND_TIME, g_nStringIdDATE_AND_TIME,
+ g_nStringIdARRAY, 10, g_nStringIdWSTRING, g_nStringIdWSTRING, g_nStringIdBOOL };
+const CStringDictionary::TStringId CIEC_EventFilter::scmElementNames[] = { g_nStringIdeventType, g_nStringIdconsumer, g_nStringIdsources, g_nStringIdstartDate,
+ g_nStringIdendDate, g_nStringIdfilterMetada, g_nStringIdnotifyUri, g_nStringIdmatchMetada };
diff --git a/src/modules/arrowhead/eventHandler/forte_eventfilter.h b/src/modules/arrowhead/eventHandler/forte_eventfilter.h
new file mode 100644
index 0000000..46b6c02
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/forte_eventfilter.h
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _FORTE_EVENTFILTER_H_
+#define _FORTE_EVENTFILTER_H_
+
+#include "forte_struct.h"
+#include "forte_array.h"
+#include "forte_wstring.h"
+#include "forte_arrowheadsystem.h"
+#include "forte_date_and_time.h"
+#include "forte_bool.h"
+
+class CIEC_EventFilter : public CIEC_STRUCT {
+ DECLARE_FIRMWARE_DATATYPE(EventFilter)
+
+ public:
+ CIEC_EventFilter();
+
+ virtual ~CIEC_EventFilter() {
+ }
+
+ CIEC_WSTRING &eventType() {
+ return *static_cast<CIEC_WSTRING*>(&getMembers()[0]);
+ }
+
+ CIEC_ArrowheadSystem &consumer() {
+ return *static_cast<CIEC_ArrowheadSystem*>(&getMembers()[1]);
+ }
+
+ CIEC_ARRAY *sources_array() {
+ return static_cast<CIEC_ARRAY *>(&getMembers()[2]); //the first element marks the start of the array
+ }
+
+ CIEC_ArrowheadSystem *sources() {
+ return static_cast<CIEC_ArrowheadSystem*>((*static_cast<CIEC_ARRAY *>(&getMembers()[2]))[0]); //the first element marks the start of the array
+ }
+
+ CIEC_DATE_AND_TIME &startDate() {
+ return *static_cast<CIEC_DATE_AND_TIME*>(&getMembers()[3]);
+ }
+ CIEC_DATE_AND_TIME &endDate() {
+ return *static_cast<CIEC_DATE_AND_TIME*>(&getMembers()[4]);
+ }
+
+ CIEC_ARRAY *filterMetadata_array() {
+ return static_cast<CIEC_ARRAY *>(&getMembers()[5]); //the first element marks the start of the array
+ }
+
+ CIEC_WSTRING *filterMetadata() {
+ return static_cast<CIEC_WSTRING*>((*static_cast<CIEC_ARRAY *>(&getMembers()[5]))[0]); //the first element marks the start of the array
+ }
+
+ CIEC_WSTRING ¬ifyUri() {
+ return *static_cast<CIEC_WSTRING*>(&getMembers()[6]);
+ }
+ CIEC_BOOL &matchMetadata() {
+ return *static_cast<CIEC_BOOL*>(&getMembers()[7]);
+ }
+
+ private:
+ static const CStringDictionary::TStringId scmElementTypes[];
+ static const CStringDictionary::TStringId scmElementNames[];
+};
+
+#endif //_FORTE_EVENTFILTER_H_
diff --git a/src/modules/arrowhead/eventHandler/forte_publishevent.cpp b/src/modules/arrowhead/eventHandler/forte_publishevent.cpp
new file mode 100644
index 0000000..cdc689a
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/forte_publishevent.cpp
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "forte_publishevent.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "forte_publishevent_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_DATATYPE(PublishEvent, g_nStringIdPublishEvent);
+
+CIEC_PublishEvent::CIEC_PublishEvent() :
+ CIEC_STRUCT(g_nStringIdPublishEvent, 3, scmElementTypes, scmElementNames, e_APPLICATION + e_CONSTRUCTED + 1) {
+}
+
+const CStringDictionary::TStringId CIEC_PublishEvent::scmElementTypes[] = { g_nStringIdArrowheadSystem, g_nStringIdArrowheadEvent, g_nStringIdWSTRING};
+const CStringDictionary::TStringId CIEC_PublishEvent::scmElementNames[] =
+ { g_nStringIdsource, g_nStringIdevent, g_nStringIddeliveryCompleteUri};
diff --git a/src/modules/arrowhead/eventHandler/forte_publishevent.h b/src/modules/arrowhead/eventHandler/forte_publishevent.h
new file mode 100644
index 0000000..2d7332b
--- /dev/null
+++ b/src/modules/arrowhead/eventHandler/forte_publishevent.h
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _FORTE_PUBLISHEVENT_H_
+#define _FORTE_PUBLISHEVENT_H_
+
+#include "forte_struct.h"
+#include "forte_wstring.h"
+#include "forte_arrowheadsystem.h"
+#include "forte_arrowheadevent.h"
+
+class CIEC_PublishEvent : public CIEC_STRUCT {
+ DECLARE_FIRMWARE_DATATYPE(PublishEvent)
+
+ public:
+ CIEC_PublishEvent();
+
+ virtual ~CIEC_PublishEvent() {
+ }
+
+ CIEC_ArrowheadSystem &source() {
+ return *static_cast<CIEC_ArrowheadSystem*>(&getMembers()[0]);
+ }
+
+ CIEC_ArrowheadEvent &event() {
+ return *static_cast<CIEC_ArrowheadEvent*>(&getMembers()[1]);
+ }
+
+ CIEC_WSTRING &deliveryCompleteUri() {
+ return *static_cast<CIEC_WSTRING*>(&getMembers()[2]);
+ }
+
+ private:
+ static const CStringDictionary::TStringId scmElementTypes[];
+ static const CStringDictionary::TStringId scmElementNames[];
+};
+
+#endif //_FORTE_PUBLISHEVENT_H_
diff --git a/src/modules/arrowhead/orchestrator/CMakeLists.txt b/src/modules/arrowhead/orchestrator/CMakeLists.txt
index 37a1b7e..2f4a646 100644
--- a/src/modules/arrowhead/orchestrator/CMakeLists.txt
+++ b/src/modules/arrowhead/orchestrator/CMakeLists.txt
@@ -26,4 +26,6 @@
add_subdirectory(HTTP)
endif(FORTE_COM_HTTP)
-
\ No newline at end of file
+if(FORTE_COM_OPC_UA)
+ add_subdirectory(OpcUa)
+endif(FORTE_COM_OPC_UA)
\ No newline at end of file
diff --git a/src/modules/arrowhead/orchestrator/OpcUa/CMakeLists.txt b/src/modules/arrowhead/orchestrator/OpcUa/CMakeLists.txt
new file mode 100644
index 0000000..e6b87b4
--- /dev/null
+++ b/src/modules/arrowhead/orchestrator/OpcUa/CMakeLists.txt
@@ -0,0 +1,19 @@
+# *******************************************************************************
+# Copyright (c) 2019, fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Jose Cabral - initial implementation
+# *******************************************************************************
+
+#############################################################################
+# Arrowhead specific functional blocks for OpcUa for the orchestrator
+#############################################################################
+
+forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+forte_add_sourcefile_hcpp(RequestOrchestrationOpcUa)
diff --git a/src/modules/arrowhead/orchestrator/OpcUa/RequestOrchestrationOpcUa.cpp b/src/modules/arrowhead/orchestrator/OpcUa/RequestOrchestrationOpcUa.cpp
new file mode 100644
index 0000000..a84c3d3
--- /dev/null
+++ b/src/modules/arrowhead/orchestrator/OpcUa/RequestOrchestrationOpcUa.cpp
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "RequestOrchestrationOpcUa.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "RequestOrchestrationOpcUa_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_RequestOrchestrationOpcUa, g_nStringIdRequestOrchestrationOpcUa)
+
+const TForteInt16 FORTE_RequestOrchestrationOpcUa::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_RequestOrchestrationOpcUa::scm_astAdapterInstances[] = {
+{g_nStringIdOrchestratorRequestAdp, g_nStringIdrequestOrchestration, false }};
+
+const SFBInterfaceSpec FORTE_RequestOrchestrationOpcUa::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_RequestOrchestrationOpcUa::scm_astInternalFBs[] = {
+ {g_nStringIdAPPEND_STRING_3, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdInitFlag, g_nStringIdE_SR},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdGetHTTPOrchestrationForm, g_nStringIdGetArrayResponseFromJSON},
+ {g_nStringIdRequest, g_nStringIdCLIENT_1},
+ {g_nStringIdE_SWITCH, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_CTU, g_nStringIdE_CTU},
+ {g_nStringIdE_DELAY, g_nStringIdE_DELAY},
+};
+
+const SCFB_FBParameter FORTE_RequestOrchestrationOpcUa::scm_astParamters[] = {
+ {0, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {0, g_nStringIdIN_3, "STRING##; /Objects/2:Orchestrator/2:orchestration]"},
+ {9, g_nStringIdPV, "UINT#3"},
+ {10, g_nStringIdDT, "T#250ms"},
+};
+
+const SCFB_FBConnectionData FORTE_RequestOrchestrationOpcUa::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdCNF), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdS), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdCNF), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdREQ), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdrequestOrchestration, g_nStringIdrequestOrchestator), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPOrchestrationForm, g_nStringIdCNF), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdrequestOrchestration, g_nStringIdresponseReceived), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdEO), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdINIT), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdREQ), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdINITO), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEO1), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPOrchestrationForm, g_nStringIdREQ), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdCNF), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEI), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEO0), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdCU), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY, g_nStringIdEO), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdREQ), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdCUO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEI), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEO0), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY, g_nStringIdSTART), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEO1), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 1},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_RequestOrchestrationOpcUa::scm_astFannedOutEventConnections[] = {
+ {8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 1},
+ {8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdR), 9},
+ {14, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPOrchestrationForm, g_nStringIdREQ), 5},
+ {14, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdR), 9},
+};
+
+const SCFB_FBConnectionData FORTE_RequestOrchestrationOpcUa::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdOUT), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdQ), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdrequestOrchestration, g_nStringIdserviceRequestForm), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdrequestOrchestration, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdIN_2), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPOrchestrationForm, g_nStringIdoutput), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdrequestOrchestration, g_nStringIdorchestrationResponse), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdID), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdSD_1), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdRD_1), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPOrchestrationForm, g_nStringIdresponse), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdQO), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdG), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdQ), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdG), 8},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_RequestOrchestrationOpcUa::scm_astFannedOutDataConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRequest, g_nStringIdQI), 6},
+};
+
+const SCFB_FBNData FORTE_RequestOrchestrationOpcUa::scm_stFBNData = {
+ 11, scm_astInternalFBs,
+ 15, scm_astEventConnections,
+ 4, scm_astFannedOutEventConnections,
+ 10, scm_astDataConnections,
+ 1, scm_astFannedOutDataConnections,
+ 4, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/orchestrator/OpcUa/RequestOrchestrationOpcUa.h b/src/modules/arrowhead/orchestrator/OpcUa/RequestOrchestrationOpcUa.h
new file mode 100644
index 0000000..5eac776
--- /dev/null
+++ b/src/modules/arrowhead/orchestrator/OpcUa/RequestOrchestrationOpcUa.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _REQUESTORCHESTRATIONOPCUA_H_
+#define _REQUESTORCHESTRATIONOPCUA_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "OrchestratorRequestAdp.h"
+
+class FORTE_RequestOrchestrationOpcUa: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_RequestOrchestrationOpcUa)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_OrchestratorRequestAdp& requestOrchestration() {
+ return (*static_cast<FORTE_OrchestratorRequestAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nrequestOrchestrationAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_RequestOrchestrationOpcUa){
+ };
+
+ virtual ~FORTE_RequestOrchestrationOpcUa(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/serviceRegistry/CMakeLists.txt b/src/modules/arrowhead/serviceRegistry/CMakeLists.txt
index 7aa8380..ea49ea2 100644
--- a/src/modules/arrowhead/serviceRegistry/CMakeLists.txt
+++ b/src/modules/arrowhead/serviceRegistry/CMakeLists.txt
@@ -26,3 +26,6 @@
add_subdirectory(HTTP)
endif(FORTE_COM_HTTP)
+if(FORTE_COM_OPC_UA)
+ add_subdirectory(OpcUa)
+endif(FORTE_COM_OPC_UA)
\ No newline at end of file
diff --git a/src/modules/arrowhead/serviceRegistry/OpcUa/CMakeLists.txt b/src/modules/arrowhead/serviceRegistry/OpcUa/CMakeLists.txt
new file mode 100644
index 0000000..e8dd669
--- /dev/null
+++ b/src/modules/arrowhead/serviceRegistry/OpcUa/CMakeLists.txt
@@ -0,0 +1,22 @@
+# *******************************************************************************
+# Copyright (c) 2018, fortiss GmbH
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Kirill Dorofeev - initial implementation
+# *******************************************************************************
+
+#############################################################################
+# Arrowhead specific functional blocks for OPC UA for service registry
+#############################################################################
+
+forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+forte_add_sourcefile_hcpp(RegisterServiceOpcUa)
+forte_add_sourcefile_hcpp(QueryServiceOpcUa)
+
+
\ No newline at end of file
diff --git a/src/modules/arrowhead/serviceRegistry/OpcUa/QueryServiceOpcUa.cpp b/src/modules/arrowhead/serviceRegistry/OpcUa/QueryServiceOpcUa.cpp
new file mode 100644
index 0000000..c83776b
--- /dev/null
+++ b/src/modules/arrowhead/serviceRegistry/OpcUa/QueryServiceOpcUa.cpp
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+#include "QueryServiceOpcUa.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "QueryServiceOpcUa_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_QueryServiceOpcUa, g_nStringIdQueryServiceOpcUa)
+
+const TForteInt16 FORTE_QueryServiceOpcUa::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_QueryServiceOpcUa::scm_astAdapterInstances[] = {
+{g_nStringIdQueryServicesAdp, g_nStringIdqueryServices, false }};
+
+const SFBInterfaceSpec FORTE_QueryServiceOpcUa::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_QueryServiceOpcUa::scm_astInternalFBs[] = {
+ {g_nStringIdAPPEND_STRING_3, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdInitFlag, g_nStringIdE_SR},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdGetHTTPResult, g_nStringIdGetArrayResponseFromJSON},
+ {g_nStringIdQuery, g_nStringIdCLIENT_1},
+ {g_nStringIdE_SWITCH_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH, g_nStringIdE_SWITCH},
+ {g_nStringIdE_DELAY, g_nStringIdE_DELAY},
+ {g_nStringIdE_CTU, g_nStringIdE_CTU},
+};
+
+const SCFB_FBParameter FORTE_QueryServiceOpcUa::scm_astParamters[] = {
+ {0, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {0, g_nStringIdIN_3, "STRING##; /Objects/2:ServiceRegistry/2:query]"},
+ {9, g_nStringIdDT, "T#250ms"},
+ {10, g_nStringIdPV, "UINT#3"},
+};
+
+const SCFB_FBConnectionData FORTE_QueryServiceOpcUa::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdCNF), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdS), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdCNF), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdREQ), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdqueryServices, g_nStringIdquery), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPResult, g_nStringIdCNF), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdqueryServices, g_nStringIdqueried), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdEO), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdINIT), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdREQ), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdINITO), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEO0), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY, g_nStringIdSTART), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdCUO), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEI), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEO0), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdCU), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEO1), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPResult, g_nStringIdREQ), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdCNF), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEI), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEO1), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY, g_nStringIdEO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdREQ), 6},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_QueryServiceOpcUa::scm_astFannedOutEventConnections[] = {
+ {11, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdR), 2},
+ {11, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdR), 10},
+ {13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPResult, g_nStringIdREQ), 5},
+ {13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdR), 10},
+};
+
+const SCFB_FBConnectionData FORTE_QueryServiceOpcUa::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdOUT), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlag, g_nStringIdQ), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdqueryServices, g_nStringIdserviceQueryForm), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdqueryServices, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdAPPEND_STRING_3, g_nStringIdIN_2), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPResult, g_nStringIdoutput), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdqueryServices, g_nStringIdserviceEntries), CCompositeFB::scm_nAdapterMarker |0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdID), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdSD_1), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdRD_1), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGetHTTPResult, g_nStringIdresponse), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdQ), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdG), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdQO), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdG), 8},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_QueryServiceOpcUa::scm_astFannedOutDataConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdQuery, g_nStringIdQI), 6},
+};
+
+const SCFB_FBNData FORTE_QueryServiceOpcUa::scm_stFBNData = {
+ 11, scm_astInternalFBs,
+ 15, scm_astEventConnections,
+ 4, scm_astFannedOutEventConnections,
+ 10, scm_astDataConnections,
+ 1, scm_astFannedOutDataConnections,
+ 4, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/serviceRegistry/OpcUa/QueryServiceOpcUa.h b/src/modules/arrowhead/serviceRegistry/OpcUa/QueryServiceOpcUa.h
new file mode 100644
index 0000000..d2bd903
--- /dev/null
+++ b/src/modules/arrowhead/serviceRegistry/OpcUa/QueryServiceOpcUa.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _QUERYSERVICEOPCUA_H_
+#define _QUERYSERVICEOPCUA_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "QueryServicesAdp.h"
+
+class FORTE_QueryServiceOpcUa: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_QueryServiceOpcUa)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_QueryServicesAdp& queryServices() {
+ return (*static_cast<FORTE_QueryServicesAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nqueryServicesAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_QueryServiceOpcUa){
+ };
+
+ virtual ~FORTE_QueryServiceOpcUa(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/arrowhead/serviceRegistry/OpcUa/RegisterServiceOpcUa.cpp b/src/modules/arrowhead/serviceRegistry/OpcUa/RegisterServiceOpcUa.cpp
new file mode 100644
index 0000000..52bbdcf
--- /dev/null
+++ b/src/modules/arrowhead/serviceRegistry/OpcUa/RegisterServiceOpcUa.cpp
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "RegisterServiceOpcUa.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "RegisterServiceOpcUa_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_RegisterServiceOpcUa, g_nStringIdRegisterServiceOpcUa)
+
+const TForteInt16 FORTE_RegisterServiceOpcUa::scm_anEOWithIndexes[] = {-1};
+const SAdapterInstanceDef FORTE_RegisterServiceOpcUa::scm_astAdapterInstances[] = {
+{g_nStringIdRegisterServiceAdp, g_nStringIdregisterService, false }};
+
+const SFBInterfaceSpec FORTE_RegisterServiceOpcUa::scm_stFBInterfaceSpec = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ 1,scm_astAdapterInstances};
+
+
+const SCFB_FBInstanceData FORTE_RegisterServiceOpcUa::scm_astInternalFBs[] = {
+ {g_nStringIdInitFlagReg, g_nStringIdE_SR},
+ {g_nStringIdE_PERMIT, g_nStringIdE_PERMIT},
+ {g_nStringIdCreateRegisterID, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdE_PERMIT_1, g_nStringIdE_PERMIT},
+ {g_nStringIdInitFlagUnReg, g_nStringIdE_SR},
+ {g_nStringIdCreateUnRegisterID, g_nStringIdAPPEND_STRING_3},
+ {g_nStringIdF_STRING_TO_WSTRING_1, g_nStringIdF_STRING_TO_WSTRING},
+ {g_nStringIdANYToJSON, g_nStringIdANYToJSON},
+ {g_nStringIdRegister, g_nStringIdCLIENT_1_0},
+ {g_nStringIdUnregister, g_nStringIdCLIENT_1_0},
+ {g_nStringIdE_SWITCH, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_DELAY, g_nStringIdE_DELAY},
+ {g_nStringIdE_CTU, g_nStringIdE_CTU},
+ {g_nStringIdE_SWITCH_1_1, g_nStringIdE_SWITCH},
+ {g_nStringIdE_SWITCH_2, g_nStringIdE_SWITCH},
+ {g_nStringIdE_DELAY_1, g_nStringIdE_DELAY},
+ {g_nStringIdE_CTU_1, g_nStringIdE_CTU},
+};
+
+const SCFB_FBParameter FORTE_RegisterServiceOpcUa::scm_astParamters[] = {
+ {2, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {2, g_nStringIdIN_3, "STRING##; /Objects/2:ServiceRegistry/2:register]"},
+ {6, g_nStringIdIN_1, "STRING#opc_ua[CALL_METHOD; "},
+ {6, g_nStringIdIN_3, "STRING##; /Objects/2:ServiceRegistry/2:remove]"},
+ {13, g_nStringIdDT, "T#250ms"},
+ {14, g_nStringIdPV, "UINT#3"},
+ {17, g_nStringIdDT, "T#250ms"},
+ {18, g_nStringIdPV, "UINT#3"},
+};
+
+const SCFB_FBConnectionData FORTE_RegisterServiceOpcUa::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdCNF), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdREQ), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdCNF), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdS), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateUnRegisterID, g_nStringIdCNF), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_1, g_nStringIdREQ), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_1, g_nStringIdCNF), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdS), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIdregisterService), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdREQ), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIdunregisterService), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateUnRegisterID, g_nStringIdREQ), 6},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdEO), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdINIT), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEO), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdREQ), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdINITO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdEI), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdEO), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdINIT), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdEO), 4, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdREQ), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdINITO), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdEI), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdCUO), 14, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEI), 12},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEO0), 12, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY, g_nStringIdSTART), 13},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEO0), 11, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdCU), 14},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEO1), 11, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdR), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdCNF), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdEI), 11},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY, g_nStringIdEO), 13, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdREQ), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEO0), 15, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1, g_nStringIdSTART), 17},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdCUO), 18, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEI), 15},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEO0), 16, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdCU), 18},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEO1), 16, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdR), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdCNF), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdEI), 16},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_DELAY_1, g_nStringIdEO), 17, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdREQ), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdEO1), 15, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdR), 5},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdEO1), 12, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdR), 0},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_RegisterServiceOpcUa::scm_astFannedOutEventConnections[] = {
+ {1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 8},
+ {3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdREQ), 8},
+ {15, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIddoneRegister), CCompositeFB::scm_nAdapterMarker |0},
+ {15, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdR), 14},
+ {21, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIddoneUnregister), CCompositeFB::scm_nAdapterMarker |0},
+ {21, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdR), 18},
+ {24, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIddoneUnregister), CCompositeFB::scm_nAdapterMarker |0},
+ {24, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdR), 18},
+ {25, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIddoneRegister), CCompositeFB::scm_nAdapterMarker |0},
+ {25, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdR), 14},
+};
+
+const SCFB_FBConnectionData FORTE_RegisterServiceOpcUa::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagReg, g_nStringIdQ), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT, g_nStringIdPERMIT), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdOUT), 2, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdIN), 3},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateUnRegisterID, g_nStringIdOUT), 6, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_1, g_nStringIdIN), 7},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdInitFlagUnReg, g_nStringIdQ), 5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_PERMIT_1, g_nStringIdPERMIT), 4},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIdserviceRegistryEntry), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdinput), 8},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdregisterService, g_nStringIdendpoint), CCompositeFB::scm_nAdapterMarker |0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateRegisterID, g_nStringIdIN_2), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING, g_nStringIdOUT), 3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdID), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdANYToJSON, g_nStringIdoutput), 8, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdSD_1), 9},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdF_STRING_TO_WSTRING_1, g_nStringIdOUT), 7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdID), 10},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU, g_nStringIdQ), 14, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1, g_nStringIdG), 12},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdQO), 9, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH, g_nStringIdG), 11},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_CTU_1, g_nStringIdQ), 18, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_1_1, g_nStringIdG), 15},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdQO), 10, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdE_SWITCH_2, g_nStringIdG), 16},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_RegisterServiceOpcUa::scm_astFannedOutDataConnections[] = {
+ {0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdRegister, g_nStringIdQI), 9},
+ {3, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdQI), 10},
+ {5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCreateUnRegisterID, g_nStringIdIN_2), 6},
+ {7, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdUnregister, g_nStringIdSD_1), 10},
+};
+
+const SCFB_FBNData FORTE_RegisterServiceOpcUa::scm_stFBNData = {
+ 19, scm_astInternalFBs,
+ 26, scm_astEventConnections,
+ 10, scm_astFannedOutEventConnections,
+ 13, scm_astDataConnections,
+ 4, scm_astFannedOutDataConnections,
+ 8, scm_astParamters
+};
+
+
diff --git a/src/modules/arrowhead/serviceRegistry/OpcUa/RegisterServiceOpcUa.h b/src/modules/arrowhead/serviceRegistry/OpcUa/RegisterServiceOpcUa.h
new file mode 100644
index 0000000..6fb3aaa
--- /dev/null
+++ b/src/modules/arrowhead/serviceRegistry/OpcUa/RegisterServiceOpcUa.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2019, fortiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef _REGISTERSERVICEOPCUA_H_
+#define _REGISTERSERVICEOPCUA_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include "RegisterServiceAdp.h"
+
+class FORTE_RegisterServiceOpcUa: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_RegisterServiceOpcUa)
+
+private:
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const SAdapterInstanceDef scm_astAdapterInstances[];
+
+ FORTE_RegisterServiceAdp& registerService() {
+ return (*static_cast<FORTE_RegisterServiceAdp*>(m_apoAdapters[0]));
+ };
+ static const int scm_nregisterServiceAdpNum = 0;
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(0, 0, 0, 1);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBParameter scm_astParamters[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_RegisterServiceOpcUa){
+ };
+
+ virtual ~FORTE_RegisterServiceOpcUa(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/src/modules/lms_ev3/processinterface.cpp b/src/modules/lms_ev3/processinterface.cpp
index 5b6889e..8a1f772 100644
--- a/src/modules/lms_ev3/processinterface.cpp
+++ b/src/modules/lms_ev3/processinterface.cpp
@@ -1,5 +1,6 @@
/*******************************************************************************
* Copyright (c) 2015, 2016 fortiss GmbH
+ * 2019 Robert Promok
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -9,6 +10,7 @@
* Contributors:
* Alois Zoitl - initial API and implementation and/or initial documentation
* Jose Cabral - expansion of capabilities
+ * Robert Promok - added functions
*******************************************************************************/
#include "processinterface.h"
@@ -25,9 +27,15 @@
const std::string CLMSEV3ProcessInterface::scmModeID("mode");
const std::string CLMSEV3ProcessInterface::scmEnableID("enable");
+const std::string CLMSEV3ProcessInterface::scmEnableSpeedID("enableSpeed");
+const std::string CLMSEV3ProcessInterface::scmRelPositionID("relPos");
+const std::string CLMSEV3ProcessInterface::scmAbsPositionID("absPos");
+
const std::string CLMSEV3ProcessInterface::scmResetID("reset");
const std::string CLMSEV3ProcessInterface::scmPWMID("pwm");
const std::string CLMSEV3ProcessInterface::scmSPEEDID("speed");
+const std::string CLMSEV3ProcessInterface::scmSPEEDSETPOINTID("speedsp");
+const std::string CLMSEV3ProcessInterface::scmPOSITIONSETPOINTID("positionsp");
const std::string CLMSEV3ProcessInterface::scmStopID("stop");
const std::string CLMSEV3ProcessInterface::scmPositionID("position");
const std::string CLMSEV3ProcessInterface::scmRotID("rot");
@@ -160,6 +168,21 @@
mFile << val;
break;
}
+ case MOTOR_ENABLE_SPEED:{
+ std::string val = (false != OUT_X()) ? "run-forever" : "stop";
+ mFile << val;
+ break;
+ }
+ case MOTOR_RELATIVE_POSITION:{
+ std::string val = (false != OUT_X()) ? "run-to-rel-pos" : "stop";
+ mFile << val;
+ break;
+ }
+ case MOTOR_ABSOLUTE_POSITION:{
+ std::string val = (false != OUT_X()) ? "run-to-abs-pos" : "stop";
+ mFile << val;
+ break;
+ }
case MOTOR_RESET:{
if (true == OUT_X()){
mFile << "reset";
@@ -190,12 +213,12 @@
bool CLMSEV3ProcessInterface::readWord(){
bool retVal = false;
- if (SENSORW_VALUE == mnTypeOfIO || MOTOR_PWM == mnTypeOfIO || MOTOR_SPEED == mnTypeOfIO || MOTOR_ROT == mnTypeOfIO) {
+ if (SENSORW_VALUE == mnTypeOfIO || MOTOR_PWM == mnTypeOfIO || MOTOR_SPEED == mnTypeOfIO || MOTOR_ROT == mnTypeOfIO || MOTOR_SPEEDSETPOINT == mnTypeOfIO ) {
TForteInt32 val;
int internalChecker;
internalChecker = readNumberFromFile(&val);
if (0 == internalChecker){
- IN_W() = (TForteWord) (val);
+ IN_W() = static_cast<TForteWord>(val);
STATUS() = scmOK;
retVal = true;
}else if (1 == internalChecker){
@@ -211,7 +234,7 @@
mFile.seekg(0, std::ios::beg);
std::getline(mFile, mode);
if(mFile.fail()){
- STATUS() == scmCouldNotRead;
+ STATUS() = scmCouldNotRead;
}else{
TForteWord counter = 0;
std::vector<std::string>::iterator it;
@@ -224,7 +247,7 @@
}
}
if (it == mModes.end()){
- STATUS() == scmCouldNotRead;
+ STATUS() = scmCouldNotRead;
}
}
}else{
@@ -250,7 +273,7 @@
TForteWord val = OUT_W();
switch (mnTypeOfIO){
case MOTOR_PWM:{
- TForteInt16 finalVal = (TForteInt16) val;
+ TForteInt16 finalVal = static_cast<TForteInt16>(val);
if (-100 <= finalVal && 100 >= finalVal){
mFile << finalVal;
writeAttempted = true;
@@ -259,6 +282,16 @@
}
break;
}
+ case MOTOR_SPEEDSETPOINT:{
+ TForteInt16 finalVal = static_cast<TForteInt16>(val);
+ if (-30000 <= finalVal && 30000 >= finalVal){
+ mFile << finalVal;
+ writeAttempted = true;
+ }else{
+ STATUS() = scmCouldNotWrite;
+ }
+ break;
+ }
case MOTOR_STOP:{
std::string finalVal = "";
switch(val){
@@ -325,18 +358,33 @@
TForteInt32 val;
internalChecker = readNumberFromFile(&val);
if (0 == internalChecker){
- IN_D() = (TForteDWord) (val);
+ IN_D() = static_cast<TForteDWord>(val);
STATUS() = scmOK;
retVal = true;
}else if (1 == internalChecker){
STATUS() = scmNotInitialised;
- DEVLOG_ERROR("Reading double word failed. The FB with PARAMS() = '%s' is not initialized.", PARAMS().getValue());
+ DEVLOG_ERROR("Reading double word failed. The FB with PARAMS() = '%s' is not initialized.\n", PARAMS().getValue());
+ }else{
+ STATUS() = scmCouldNotRead;
+ }
+ }
+ else if (MOTOR_POSITIONSETPOINT == mnTypeOfIO){
+ int internalChecker;
+ TForteInt32 val;
+ internalChecker = readNumberFromFile(&val);
+ if (0 == internalChecker){
+ IN_D() = static_cast<TForteDWord>(val);
+ STATUS() = scmOK;
+ retVal = true;
+ }else if (1 == internalChecker){
+ STATUS() = scmNotInitialised;
+ DEVLOG_ERROR("Reading double word failed. The FB with PARAMS() = '%s' is not initialized.\n", PARAMS().getValue());
}else{
STATUS() = scmCouldNotRead;
}
}
if (!retVal){
- DEVLOG_ERROR("Reading double word failed. The FB with PARAMS() = '%s' couldn't be read.", PARAMS().getValue());
+ DEVLOG_ERROR("Reading double word failed. The FB with PARAMS() = '%s' couldn't be read.\n", PARAMS().getValue());
}
return retVal;
@@ -352,7 +400,7 @@
TForteDWord val = OUT_D();
switch (mnTypeOfIO){
case MOTOR_POSITION:{
- TForteInt32 finalVal = (TForteInt32) val;
+ TForteInt32 finalVal = static_cast<TForteInt32>(val);
if (CIEC_INT::scm_nMinVal <= finalVal && CIEC_INT::scm_nMaxVal >= finalVal){
mFile << finalVal;
writeAttempted = true;
@@ -361,6 +409,17 @@
}
break;
}
+ case MOTOR_POSITIONSETPOINT:{
+ TForteInt32 finalVal = static_cast<TForteInt32>(val);
+ if (CIEC_INT::scm_nMinVal <= finalVal && CIEC_INT::scm_nMaxVal >= finalVal){
+ mFile << finalVal;
+ writeAttempted = true;
+ }else{
+ STATUS() = scmCouldNotWrite;
+ }
+ break;
+ }
+
default:{
STATUS() = scmCouldNotWrite;
break;
@@ -581,6 +640,12 @@
}else if (scmPositionID == paParamList[2]){
sysFileName += number.str() + "/position";
mnTypeOfIO = MOTOR_POSITION;
+ }else if (scmSPEEDSETPOINTID == paParamList[2]){
+ sysFileName += number.str() + "/speed_sp";
+ mnTypeOfIO = MOTOR_SPEEDSETPOINT;
+ }else if (scmPOSITIONSETPOINTID == paParamList[2]){
+ sysFileName += number.str() + "/position_sp";
+ mnTypeOfIO = MOTOR_POSITIONSETPOINT;
}else{
defaultType = true;
}
@@ -588,6 +653,15 @@
if (scmEnableID == paParamList[2]){
sysFileName += number.str() + "/command";
mnTypeOfIO = MOTOR_ENABLE;
+ }else if (scmEnableSpeedID == paParamList[2]){
+ sysFileName += number.str() + "/command";
+ mnTypeOfIO = MOTOR_ENABLE_SPEED;
+ }else if (scmRelPositionID == paParamList[2]){
+ sysFileName += number.str() + "/command";
+ mnTypeOfIO = MOTOR_RELATIVE_POSITION;
+ }else if (scmAbsPositionID == paParamList[2]){
+ sysFileName += number.str() + "/command";
+ mnTypeOfIO = MOTOR_ABSOLUTE_POSITION;
}else if (scmResetID == paParamList[2]){
sysFileName += number.str() + "/command";
mnTypeOfIO = MOTOR_RESET;
@@ -595,11 +669,17 @@
sysFileName += number.str() + "/duty_cycle_sp";
mnTypeOfIO = MOTOR_PWM;
}else if (scmStopID == paParamList[2]){
- sysFileName += number.str() + "/stop_command";
+ sysFileName += number.str() + "/stop_action";
mnTypeOfIO = MOTOR_STOP;
}else if (scmPositionID == paParamList[2]){
sysFileName += number.str() + "/position";
mnTypeOfIO = MOTOR_POSITION;
+ }else if (scmSPEEDSETPOINTID == paParamList[2]){
+ sysFileName += number.str() + "/speed_sp";
+ mnTypeOfIO = MOTOR_SPEEDSETPOINT;
+ }else if (scmPOSITIONSETPOINTID == paParamList[2]){
+ sysFileName += number.str() + "/position_sp";
+ mnTypeOfIO = MOTOR_POSITIONSETPOINT;
}else{
defaultType = true;
}
@@ -632,9 +712,9 @@
int retVal = -1;
std::fstream mAddressFile;
std::string fullPath;
- int portLenght = paEv3Port.length();
+ int portLength = static_cast<int>(paEv3Port.length());
- if (portLenght < 5){ //Only possible values are inX and outX according to input and output ports of the EV3
+ if (portLength < 5){ //Only possible values are inX and outX according to input and output ports of the EV3
for(int i = 0; i < 255; i++){ //TODO: check maximum value of i
std::stringstream number;
number << i;
@@ -642,13 +722,13 @@
fullPath = paBasePath + number.str() + "/address";
mAddressFile.open(fullPath.c_str(), std::fstream::in); //TODO change this when fully switching to C++11 for LMS EV3ca
if(mAddressFile.is_open()){
- char port[5];
+ char port[16];
mAddressFile.clear();
mAddressFile.seekg(0, std::ios::beg);
- mAddressFile.read(port, portLenght);
- if (!mAddressFile.fail()){
- port[portLenght] = '\0';
- if(paEv3Port.compare(port) == 0){
+ mAddressFile.read(port, sizeof(port));
+ auto len = mAddressFile.gcount();
+ if (len > 1) {
+ if (paEv3Port.at(portLength-1) == port[len-2]) {
retVal = i;
break;
}
diff --git a/src/modules/lms_ev3/processinterface.h b/src/modules/lms_ev3/processinterface.h
index ff56447..0e7d824 100644
--- a/src/modules/lms_ev3/processinterface.h
+++ b/src/modules/lms_ev3/processinterface.h
@@ -1,5 +1,6 @@
/*******************************************************************************
* Copyright (c) 2015, 2016 fortiss GmbH
+ * 2019 Robert Promok
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@@ -9,6 +10,7 @@
* Contributors:
* Alois Zoitl - initial API and implementation and/or initial documentation
* Jose Cabral - expansion of capabilities
+ * Robert Promok - added functions
*******************************************************************************/
#ifndef _PROCESSINTERFACE_H_
@@ -32,9 +34,14 @@
SENSORW_MODE,
BUTTON,
MOTOR_ENABLE,
+ MOTOR_ENABLE_SPEED,
+ MOTOR_RELATIVE_POSITION,
+ MOTOR_ABSOLUTE_POSITION,
MOTOR_RESET,
MOTOR_PWM,
MOTOR_SPEED,
+ MOTOR_SPEEDSETPOINT,
+ MOTOR_POSITIONSETPOINT,
MOTOR_STOP,
MOTOR_POSITION,
MOTOR_ROT,
@@ -68,9 +75,15 @@
/* Used together with Motor */
static const std::string scmEnableID;
+ static const std::string scmEnableSpeedID;
+ static const std::string scmRelPositionID;
+ static const std::string scmAbsPositionID;
+
static const std::string scmResetID;
static const std::string scmPWMID;
static const std::string scmSPEEDID;
+ static const std::string scmSPEEDSETPOINTID;
+ static const std::string scmPOSITIONSETPOINTID;
static const std::string scmStopID;
static const std::string scmPositionID;
static const std::string scmRotID;
diff --git a/src/modules/mqtt_paho/CMakeLists.txt b/src/modules/mqtt_paho/CMakeLists.txt
index abd3ca4..0a129ea 100644
--- a/src/modules/mqtt_paho/CMakeLists.txt
+++ b/src/modules/mqtt_paho/CMakeLists.txt
@@ -19,7 +19,7 @@
forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
if(FORTE_COM_PAHOMQTT)
- forte_add_sourcefile_hcpp( MQTTComLayer MQTTHandler)
+ forte_add_sourcefile_hcpp( MQTTComLayer MQTTHandler MQTTClientConfigParser)
forte_add_handler(MQTTHandler MQTTHandler)
@@ -40,6 +40,9 @@
forte_add_include_system_directories(${FORTE_COM_PAHOMQTT_INCLUDE_DIR})
forte_add_link_directories(${FORTE_COM_PAHOMQTT_LIB_DIR})
forte_add_link_library_beginning(${FORTE_COM_PAHOMQTT_LIB})
+ forte_add_custom_configuration("#include <string>")
+ forte_add_custom_configuration("extern std::string gMqttClientConfigFile\;")
+ forte_add_custom_configuration("#cmakedefine FORTE_COM_PAHOMQTT")
IF(NOT EXISTS ${FORTE_COM_PAHOMQTT_INCLUDE_DIR})
MESSAGE(WARNING "WARNING: FORTE_COM_PAHOMQTT_INCLUDE_DIR not set or does not exist. This will probably make the compilation fail.")
diff --git a/src/modules/mqtt_paho/MQTTClientConfigParser.cpp b/src/modules/mqtt_paho/MQTTClientConfigParser.cpp
new file mode 100644
index 0000000..c7eb28b
--- /dev/null
+++ b/src/modules/mqtt_paho/MQTTClientConfigParser.cpp
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2020 fortiss GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "MQTTClientConfigParser.h"
+
+#include "arch/devlog.h"
+
+const char *const CMQTTClientConfigFileParser::mConfigKeysNames[] = {
+ "endpoint",
+ "username",
+ "password" };
+
+bool CMQTTClientConfigFileParser::loadConfig(std::string &paFileLocation, std::string &paEndpoint, MQTTConfigFromFile &paResult) {
+ bool retVal = true;
+
+ CConfigFileParser configFileParser(paFileLocation);
+ bool endpointFound = false;
+ std::string endpointKey = mConfigKeysNames[MQTTConfigKeys::eEndoint];
+
+ if(CConfigFileParser::lookForKeyValueInFile(configFileParser, endpointKey, paEndpoint, endpointFound)) {
+ if(endpointFound) {
+
+ bool moreLinesToRead = true;
+ while(moreLinesToRead) {
+ std::pair<std::string, std::string> resultPair;
+
+ switch(configFileParser.parseNextLine(resultPair)){
+ case CConfigFileParser::eOk:
+ if(0 == resultPair.first.compare(mConfigKeysNames[MQTTConfigKeys::eEndoint])) {
+ moreLinesToRead = false;
+ } else if(0 == resultPair.first.compare(mConfigKeysNames[MQTTConfigKeys::eUsername])) {
+ paResult.mUsername = resultPair.second;
+ } else if(0 == resultPair.first.compare(mConfigKeysNames[MQTTConfigKeys::ePassword])) {
+ paResult.mPassword = resultPair.second;
+ }
+ else {
+ DEVLOG_WARNING("[CMQTTClientConfigFileParser]: They %s was not recognized so it will be omitted\n", resultPair.first.c_str());
+ }
+ break;
+ case CConfigFileParser::eEmptyLine:
+ //do nothing, keep reading
+ break;
+ case CConfigFileParser::eEndOfFile:
+ moreLinesToRead = false;
+ break;
+ case CConfigFileParser::eWrongLine:
+ case CConfigFileParser::eFileNotOpened:
+ case CConfigFileParser::eInternalError:
+ default:
+ retVal = false;
+ moreLinesToRead = false;
+ break;
+ }
+ }
+ } else { //if the endpoint is not found, configuration is initialize as default
+ DEVLOG_INFO("[CMQTTClientConfigFileParser]: No entry for endpoint %s was found in file %s\n", paEndpoint.c_str(), paFileLocation.c_str());
+ }
+ } else { //if lookForEndpointInFile fails, the errors was already logged
+ retVal = false;
+ }
+
+ return retVal;
+}
+
diff --git a/src/modules/mqtt_paho/MQTTClientConfigParser.h b/src/modules/mqtt_paho/MQTTClientConfigParser.h
new file mode 100644
index 0000000..39900f7
--- /dev/null
+++ b/src/modules/mqtt_paho/MQTTClientConfigParser.h
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2020 fortiss GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef SRC_MODULES_OPC_UA_OPCUA_CLIENT_CONFIG_PARSER_H_
+#define SRC_MODULES_OPC_UA_OPCUA_CLIENT_CONFIG_PARSER_H_
+
+#include "utils/configFileParser.h"
+#include <core/datatypes/forte_string.h>
+#include <string>
+
+/**
+ * Parse the configuration file for the mqtt client. It supports the following keys:
+ * endpoint (string)
+ * username (string)
+ * password (string)
+ *
+ * The parser looks for an endpoint, and only after it matches the one passed as argument, it starts storing the following information, and
+ * it will keep reading after another endpoint other the end of file is found
+ */
+class CMQTTClientConfigFileParser {
+ public:
+
+ /**
+ * Encapsulation for the result used by the class when parsing the configuration file
+ */
+ class MQTTConfigFromFile {
+ public:
+ MQTTConfigFromFile(std::string &paUsername, std::string &paPassword) :
+ mUsername(paUsername), mPassword(paPassword) {
+ }
+ std::string &mUsername;
+ std::string &mPassword;
+ };
+
+ /**
+ * Reads a configuration file, parse it and store the data
+ * @param paFileLocation Path to file to be parsed
+ * @param paEndpoint Endpoint of the client to be looked for
+ * @param paResult Place to store the results
+ * @return True if no error occurred, false otherwise
+ */
+ static bool loadConfig(std::string &paFileLocation, std::string &paEndpoint, MQTTConfigFromFile &paResult);
+
+ private:
+ explicit CMQTTClientConfigFileParser();
+ virtual ~CMQTTClientConfigFileParser();
+
+ /**
+ * Allowed key in the configuration file for the mqtt clients
+ */
+ enum MQTTConfigKeys {
+ eEndoint, /**< eEndoint */
+ eUsername,/**< eUsername */
+ ePassword,/**< ePassword */
+ eUnknown /**< eUnknown */
+ };
+
+ /**
+ * Strings for the allowed keys in the configuration file for the mqtt clients
+ */
+ static const char *const mConfigKeysNames[MQTTConfigKeys::eUnknown];
+
+};
+
+#endif /* SRC_MODULES_OPC_UA_OPCUA_CLIENT_CONFIG_PARSER_H_ */
diff --git a/src/modules/mqtt_paho/MQTTHandler.cpp b/src/modules/mqtt_paho/MQTTHandler.cpp
index ea9b77e..6041eac 100644
--- a/src/modules/mqtt_paho/MQTTHandler.cpp
+++ b/src/modules/mqtt_paho/MQTTHandler.cpp
@@ -14,7 +14,11 @@
#include "MQTTHandler.h"
#include "../../core/cominfra/commfb.h"
#include <criticalregion.h>
-#include <string.h>
+#include <string>
+
+#include "MQTTClientConfigParser.h"
+
+std::string gMqttClientConfigFile;
DEFINE_HANDLER(MQTTHandler);
@@ -26,6 +30,9 @@
MQTTAsync MQTTHandler::smClient = 0;
CIEC_STRING MQTTHandler::smClientId;
CIEC_STRING MQTTHandler::smAddress;
+std::string MQTTHandler::scmUsername;
+std::string MQTTHandler::scmPassword;
+
MQTTStates MQTTHandler::smMQTTS_STATE = NOT_CONNECTED;
forte::arch::CSemaphore MQTTHandler::mStateSemaphore = forte::arch::CSemaphore();
@@ -192,6 +199,20 @@
smClientConnectionOptions.onSuccess = onMqttConnectionSucceed;
smClientConnectionOptions.onFailure = onMqttConnectionFailed;
smClientConnectionOptions.context = this;
+
+ if("" != gMqttClientConfigFile) { //file was provided
+
+ CMQTTClientConfigFileParser::MQTTConfigFromFile result = CMQTTClientConfigFileParser::MQTTConfigFromFile(scmUsername, scmPassword);
+ std::string endpoint = smAddress.getValue();
+
+ if(CMQTTClientConfigFileParser::loadConfig(gMqttClientConfigFile, endpoint, result)) {
+ smClientConnectionOptions.username = scmUsername.c_str();
+ smClientConnectionOptions.password = scmPassword.c_str();
+ } else {
+ return eWrongClientID;
+ }
+ }
+
if(MQTTASYNC_SUCCESS != MQTTAsync_setCallbacks(smClient, this, MQTTHandler::onMqttConnectionLost, onMqttMessageArrived, NULL)){
return eConnectionFailed;
}
diff --git a/src/modules/mqtt_paho/MQTTHandler.h b/src/modules/mqtt_paho/MQTTHandler.h
index f5ebf14..cd8e0e8 100644
--- a/src/modules/mqtt_paho/MQTTHandler.h
+++ b/src/modules/mqtt_paho/MQTTHandler.h
@@ -21,6 +21,7 @@
#include <forte_string.h>
#include <forte_thread.h>
#include <forte_sem.h>
+#include <string>
extern "C" {
#include <MQTTAsync.h>
@@ -89,6 +90,8 @@
static CIEC_STRING smClientId;
static CIEC_STRING smAddress;
+ static std::string scmUsername;
+ static std::string scmPassword;
static CSyncObject smMQTTMutex;
diff --git a/src/modules/opc_ua/CMakeLists.txt b/src/modules/opc_ua/CMakeLists.txt
index 0204503..65079e6 100644
--- a/src/modules/opc_ua/CMakeLists.txt
+++ b/src/modules/opc_ua/CMakeLists.txt
@@ -31,14 +31,15 @@
forte_add_sourcefile_with_path_cpp(${CMAKE_BINARY_DIR}/modules/opc_ua/opcua_types.cpp) # created file
- SET(FORTE_COM_OPC_UA_PORT "4840" CACHE NUMBER "Port where the OPC_UA server will listen")
- SET(FORTE_COM_OPC_UA_SERVER_PUB_INTERVAL "100.0" CACHE NUMBER "OPC UA Server publishing interval in ms")
- SET(FORTE_COM_OPC_UA_CLIENT_PUB_INTERVAL "100.0" CACHE NUMBER "OPC UA Client requested publishing interval via OPC UA data subscription in ms")
- SET(FORTE_COM_OPC_UA_MULTICAST OFF CACHE BOOLEAN "Enable multicast support for OPC UA and registering with LDS")
+ SET(FORTE_COM_OPC_UA_PORT 4840 CACHE STRING "Port where the OPC_UA server will listen")
+ SET(FORTE_COM_OPC_UA_SERVER_PUB_INTERVAL 100.0 CACHE STRING "OPC UA Server publishing interval in ms")
+ SET(FORTE_COM_OPC_UA_CLIENT_PUB_INTERVAL 100.0 CACHE STRING "OPC UA Client requested publishing interval via OPC UA data subscription in ms")
+ SET(FORTE_COM_OPC_UA_MULTICAST OFF CACHE BOOL "Enable multicast support for OPC UA and registering with LDS")
SET(FORTE_COM_OPC_UA_INCLUDE_DIR "" CACHE PATH "ABSOLUTE path to open62541.h file in the OPC UA project")
SET(FORTE_COM_OPC_UA_LIB_DIR "" CACHE PATH "ABSOLUTE path to OPC UA folder with object library FORTE_COM_OPC_UA_LIB")
SET(FORTE_COM_OPC_UA_CUSTOM_HOSTNAME CACHE STRING "Custom hostname which is used for the OPC UA app name and app uri")
- SET(FORTE_COM_OPC_UA_MASTER_BRANCH OFF CACHE BOOLEAN "Use the master branch")
+ SET(FORTE_COM_OPC_UA_MASTER_BRANCH OFF CACHE BOOL "Use the master branch")
+ SET(FORTE_COM_OPC_UA_ENCRYPTION OFF CACHE BOOL "The open62541 lilbrary was compiled using encryption")
# OPEN62541 library to be linked to forte
IF ("${FORTE_ARCHITECTURE}" STREQUAL "Win32")
@@ -63,7 +64,8 @@
forte_add_handler(COPC_UA_Local_Handler opcua_local_handler)
forte_add_handler(COPC_UA_Remote_Handler opcua_remote_handler)
- forte_add_sourcefile_hcpp(opcua_layer opcua_local_handler opcua_helper opcua_remote_handler opcua_handler_abstract opcua_client_information opcua_action_info)
+ forte_add_sourcefile_hcpp(opcua_layer opcua_local_handler opcua_helper opcua_remote_handler opcua_handler_abstract opcua_client_information opcua_action_info
+ opcua_client_config_parser)
if (NOT EXISTS ${FORTE_COM_OPC_UA_INCLUDE_DIR})
message(SEND_ERROR "FORTE_COM_OPC_UA_INCLUDE_DIR not set or does not exist")
endif (NOT EXISTS ${FORTE_COM_OPC_UA_INCLUDE_DIR})
@@ -75,6 +77,8 @@
forte_add_custom_configuration("#define FORTE_COM_OPC_UA_PORT ${FORTE_COM_OPC_UA_PORT}")
forte_add_custom_configuration("extern TForteUInt16 gOpcuaServerPort\;")
+ forte_add_custom_configuration("#include <string>")
+ forte_add_custom_configuration("extern std::string gOpcuaClientConfigFile\;")
forte_add_custom_configuration("#define FORTE_COM_OPC_UA_SERVER_PUB_INTERVAL ${FORTE_COM_OPC_UA_SERVER_PUB_INTERVAL}")
forte_add_custom_configuration("#define FORTE_COM_OPC_UA_CLIENT_PUB_INTERVAL ${FORTE_COM_OPC_UA_CLIENT_PUB_INTERVAL}")
@@ -87,7 +91,22 @@
add_subdirectory(FBs)
add_subdirectory(types)
+
+ if(FORTE_COM_OPC_UA_ENCRYPTION)
+ if(NOT FORTE_COM_OPC_UA_MASTER_BRANCH)
+ message(SEND_WARNING "You are compiling open62541 with encryption and v0.3.0 which is not fully supported in forte. For encryption, use v1.0")
+ endif(NOT FORTE_COM_OPC_UA_MASTER_BRANCH)
+
+ SET(FORTE_COM_OPC_UA_ENCRYPTION_INCLUDE_DIR "" CACHE STRING "ABSOLUTE path to encryption headers")
+ SET(FORTE_COM_OPC_UA_ENCRYPTION_LIB_DIR "" CACHE STRING "ABSOLUTE path to encryption libraries")
+
+ forte_add_include_system_directories(${FORTE_COM_OPC_UA_ENCRYPTION_INCLUDE_DIR})
+ forte_add_link_directories(${FORTE_COM_OPC_UA_ENCRYPTION_LIB_DIR})
+ forte_add_link_library("libmbedcrypto.a")
+ forte_add_link_library("libmbedtls.a")
+ forte_add_link_library("libmbedx509.a")
+ endif()
endif (FORTE_COM_OPC_UA)
diff --git a/src/modules/opc_ua/opcua_client_config_parser.cpp b/src/modules/opc_ua/opcua_client_config_parser.cpp
new file mode 100644
index 0000000..648cf72
--- /dev/null
+++ b/src/modules/opc_ua/opcua_client_config_parser.cpp
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2019 fortiss GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#include "opcua_client_config_parser.h"
+#include "arch/devlog.h"
+
+bool CUA_ClientConfigFileParser::loadConfig(std::string &paFileLocation, std::string &paEndpoint, UA_ConfigFromFile &paResult) {
+ bool retVal = true;
+ UA_StatusCode retValOpcUa = UA_STATUSCODE_GOOD;
+
+ CConfigFileParser configFileParser(paFileLocation);
+ bool endpointFound = false;
+ std::string endpointKey = "endpoint";
+
+ if(CConfigFileParser::lookForKeyValueInFile(configFileParser, endpointKey, paEndpoint, endpointFound)) {
+ if(endpointFound) {
+
+#ifdef UA_ENABLE_ENCRYPTION
+# ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ UA_ByteString certificateFileContent = UA_STRING_NULL;
+ UA_ByteString privateKeyFileContent = UA_STRING_NULL;
+ UA_MessageSecurityMode securityMode = UA_MESSAGESECURITYMODE_INVALID;
+ UA_String securityPolicyUri = UA_STRING_NULL;
+# else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+# endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+#endif //UA_ENABLE_ENCRYPTION
+
+ bool moreLinesToRead = true;
+ while(moreLinesToRead) {
+ std::pair<std::string, std::string> resultPair;
+
+ switch(configFileParser.parseNextLine(resultPair)){
+ case CConfigFileParser::eOk:
+ if(0 == resultPair.first.compare("endpoint")) {
+ moreLinesToRead = false;
+ } else if(0 == resultPair.first.compare("username")) {
+ paResult.mUsername = resultPair.second;
+ } else if(0 == resultPair.first.compare("password")) {
+ paResult.mPassword = resultPair.second;
+ }
+#ifdef UA_ENABLE_ENCRYPTION
+# ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ else if(0 == resultPair.first.compare("certificate")) {
+ retVal = loadFileIntoBytestring(resultPair.second, certificateFileContent);
+ } else if(0 == resultPair.first.compare("privateKey")) {
+ retVal = loadFileIntoBytestring(resultPair.second, privateKeyFileContent);
+ } else if(0 == resultPair.first.compare("securityMode")) {
+ securityMode = static_cast<UA_MessageSecurityMode>(atoi(resultPair.second.c_str()));
+ } else if(0 == resultPair.first.compare("securityPolicy")) {
+ securityPolicyUri = UA_STRING_ALLOC(resultPair.second.c_str());
+ }
+# else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+# endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+#endif //UA_ENABLE_ENCRYPTION
+ else {
+ DEVLOG_WARNING("[CUA_ClientConfigFileParser]: They %s was not recognized so it will be omitted\n", resultPair.first.c_str());
+ }
+ break;
+ case CConfigFileParser::eEmptyLine:
+ //do nothing, keep reading
+ break;
+ case CConfigFileParser::eEndOfFile:
+ moreLinesToRead = false;
+ break;
+ case CConfigFileParser::eWrongLine:
+ case CConfigFileParser::eFileNotOpened:
+ case CConfigFileParser::eInternalError:
+ default:
+ retVal = false;
+ moreLinesToRead = false;
+ break;
+ }
+ }
+
+ if(retVal) {
+#ifdef UA_ENABLE_ENCRYPTION
+# ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ if(0 != certificateFileContent.length) {
+ retValOpcUa = UA_ClientConfig_setDefaultEncryption(&paResult.mClientConfig, certificateFileContent, privateKeyFileContent, NULL, 0, NULL, 0);
+ if(UA_STATUSCODE_GOOD == retValOpcUa) {
+ paResult.mClientConfig.securityMode = securityMode;
+ paResult.mClientConfig.securityPolicyUri = securityPolicyUri;
+ }
+ } else
+# else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+# endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+#endif //UA_ENABLE_ENCRYPTION
+
+#ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ {
+ retValOpcUa = UA_ClientConfig_setDefault(&paResult.mClientConfig);
+ }
+#else //FORTE_COM_OPC_UA_MASTER_BRANCH
+
+#endif //FORTE_COM_OPC_UA_MASTER_BRANCH
+ }
+
+#ifdef UA_ENABLE_ENCRYPTION
+# ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ else {
+ UA_String_clear(&securityPolicyUri);
+ }
+
+ UA_ByteString_clear(&certificateFileContent);
+ UA_ByteString_clear(&privateKeyFileContent);
+# else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+# endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+#endif
+
+ } else { //if the endpoint is not found, configuration is initialize as default
+ DEVLOG_INFO("[CUA_ClientConfigFileParser]: No entry for endpoint %s was found in file %s\n", paEndpoint.c_str(), paFileLocation.c_str());
+#ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ retValOpcUa = UA_ClientConfig_setDefault(&paResult.mClientConfig);
+#else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+#endif //FORTE_COM_OPC_UA_MASTER_BRANCH
+ }
+
+ if(retVal && UA_STATUSCODE_GOOD != retValOpcUa) {
+ DEVLOG_ERROR("[CUA_ClientConfigFileParser]: Error setting client configuration. Error: %s\n", UA_StatusCode_name(retValOpcUa));
+ retVal = false;
+ }
+ } else { //if lookForEndpointInFile fails, the errors was already logged
+ retVal = false;
+ }
+
+ return retVal;
+}
+
+#ifdef UA_ENABLE_ENCRYPTION
+# ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+bool CUA_ClientConfigFileParser::loadFileIntoBytestring(std::string &paFileLocation, UA_ByteString &paResult) {
+ bool retVal = false;
+
+ FILE *file = fopen(paFileLocation.c_str(), "rb"); //read binary
+ if(0 != file) {
+ //look for size of file
+ fseek(file, 0, SEEK_END);
+ paResult.length = (size_t) ftell(file);
+ paResult.data = (UA_Byte *) UA_malloc(paResult.length * sizeof(UA_Byte));
+
+ fseek(file, 0, SEEK_SET);
+ if(paResult.length == fread(paResult.data, sizeof(UA_Byte), paResult.length, file)) {
+ retVal = true;
+ } else {
+ DEVLOG_ERROR("[OPC UA CLIENT]: Error reading file %s\n", paFileLocation.c_str());
+ UA_ByteString_clear(&paResult);
+ }
+ fclose(file);
+ } else {
+ DEVLOG_ERROR("[OPC UA CLIENT]: Error opening file %s\n", paFileLocation.c_str());
+ }
+
+ return retVal;
+}
+# else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+# endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+#endif //UA_ENABLE_ENCRYPTION
diff --git a/src/modules/opc_ua/opcua_client_config_parser.h b/src/modules/opc_ua/opcua_client_config_parser.h
new file mode 100644
index 0000000..aa38554
--- /dev/null
+++ b/src/modules/opc_ua/opcua_client_config_parser.h
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2019 fortiss GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral - initial implementation
+ *******************************************************************************/
+
+#ifndef SRC_MODULES_OPC_UA_OPCUA_CLIENT_CONFIG_PARSER_H_
+#define SRC_MODULES_OPC_UA_OPCUA_CLIENT_CONFIG_PARSER_H_
+
+#include "utils/configFileParser.h"
+#include <core/datatypes/forte_string.h>
+#include <open62541.h>
+#include <string>
+
+/**
+ * Parse the configuration file for OPC UA clients. It supports the following keys:
+ * endpoint (string)
+ * username (string)
+ * password (string)
+ * certificate (path to file, only if encryption is enabled)
+ * privateKey (path to file, only if encryption is enabled)
+ * securityMode (integer, only if encryption is enabled. 1: None; 2:Sign; 3: Sign and encrypt)
+ * securityPolicy (string URI, for example http://opcfoundation.org/UA/SecurityPolicy#Basic256, only if encryption is enabled)
+ *
+ * The parser looks for an endpoint, and only after it matches the one passed as argument, it starts storing the following information, and
+ * it will keep reading after another endpoint other the end of file is found
+ */
+class CUA_ClientConfigFileParser {
+ public:
+
+ /**
+ * Encapsulation for the result used by the class when parsing the configuration file
+ */
+ class UA_ConfigFromFile {
+ public:
+ UA_ConfigFromFile(UA_ClientConfig &paClientConfig, std::string &paUsername, std::string &paPassword) :
+ mClientConfig(paClientConfig), mUsername(paUsername), mPassword(paPassword) {
+ }
+ UA_ClientConfig &mClientConfig;
+ std::string &mUsername;
+ std::string &mPassword;
+ };
+
+ /**
+ * Reads a configuration file, parse it and store the data
+ * @param paFileLocation Path to file to be parsed
+ * @param paEndpoint Endpoint of the client to be looked for
+ * @param paResult Place to store the results
+ * @return True if no error occurred, false otherwise
+ */
+ static bool loadConfig(std::string &paFileLocation, std::string &paEndpoint, UA_ConfigFromFile &paResult);
+
+ private:
+ explicit CUA_ClientConfigFileParser();
+ virtual ~CUA_ClientConfigFileParser();
+
+#ifdef UA_ENABLE_ENCRYPTION
+# ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ /**
+ * Load a file into a byte string. Used for certifcates and privated key files
+ * @param paFileLocation Path to the file to be loaded
+ * @param paResult Place to store the result
+ * @return True if no error occurred, false otherwise
+ */
+ static bool loadFileIntoBytestring(std::string &paFileLocation, UA_ByteString &paResult);
+# else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+# endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+#endif //UA_ENABLE_ENCRYPTION
+};
+
+#endif /* SRC_MODULES_OPC_UA_OPCUA_CLIENT_CONFIG_PARSER_H_ */
diff --git a/src/modules/opc_ua/opcua_client_information.cpp b/src/modules/opc_ua/opcua_client_information.cpp
index 5fa7937..f8f0976 100644
--- a/src/modules/opc_ua/opcua_client_information.cpp
+++ b/src/modules/opc_ua/opcua_client_information.cpp
@@ -15,38 +15,73 @@
#include "opcua_client_information.h"
#include <basecommfb.h>
#include "opcua_handler_abstract.h" //for logger
+#include "opcua_client_config_parser.h"
+#include <stdio.h>
+std::string gOpcuaClientConfigFile;
CUA_ClientInformation::CUA_ClientInformation(const CIEC_STRING &paEndpoint) :
mEndpointUrl(paEndpoint), mClient(0), mSubscriptionInfo(0), mMissingAsyncCalls(0), mNeedsReconnection(false), mWaitToInitializeActions(false),
+ mIsClientValid(true),
mLastReconnectionTry(0), mLastActionInitializationTry(0), mSomeActionWasInitialized(false) {
}
CUA_ClientInformation::~CUA_ClientInformation() {
+ CCriticalRegion clientRegion(mClientMutex);
uninitializeClient();
}
bool CUA_ClientInformation::configureClient() {
+ bool retVal = true;
#ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
mClient = UA_Client_new();
UA_ClientConfig *configPointer = UA_Client_getConfig(mClient);
- UA_StatusCode retVal = UA_ClientConfig_setDefault(configPointer);
- if(UA_STATUSCODE_GOOD != retVal) {
- DEVLOG_ERROR("[OPC UA CLIENT]: Error setting default client config. Error: %s\n", UA_StatusCode_name(retVal));
+
+ if(configureClientFromFile(*configPointer)) {
+ configPointer->stateCallback = CUA_RemoteCallbackFunctions::clientStateChangeCallback;
+ configPointer->logger = COPC_UA_HandlerAbstract::getLogger();
+ configPointer->timeout = scmClientTimeoutInMilli;
+ } else {
UA_Client_delete(mClient);
- return false;
+ mClient = 0;
+ retVal = false;
}
- configPointer->stateCallback = CUA_RemoteCallbackFunctions::clientStateChangeCallback;
- configPointer->logger = COPC_UA_HandlerAbstract::getLogger();
- configPointer->timeout = scmClientTimeoutInMilli;
#else //FORTE_COM_OPC_UA_MASTER_BRANCH
UA_ClientConfig config = UA_ClientConfig_default;
- config.stateCallback = CUA_RemoteCallbackFunctions::clientStateChangeCallback;
- config.logger = COPC_UA_HandlerAbstract::getLogger();
- config.timeout = scmClientTimeoutInMilli;
- mClient = UA_Client_new(config);
+ if(configureClientFromFile(config)) {
+ config.stateCallback = CUA_RemoteCallbackFunctions::clientStateChangeCallback;
+ config.logger = COPC_UA_HandlerAbstract::getLogger();
+ config.timeout = scmClientTimeoutInMilli;
+ mClient = UA_Client_new(config);
+ } else {
+ retVal = false;
+ }
#endif //FORTE_COM_OPC_UA_MASTER_BRANCH
- return true;
+ return retVal;
+}
+
+bool CUA_ClientInformation::configureClientFromFile(UA_ClientConfig &paConfig) {
+ bool retVal = true;
+
+ if("" != gOpcuaClientConfigFile){ //file was provided
+
+ std::string endpoint = mEndpointUrl.getValue();
+ CUA_ClientConfigFileParser::UA_ConfigFromFile result = CUA_ClientConfigFileParser::UA_ConfigFromFile(paConfig, mUsername, mPassword);
+
+ retVal = CUA_ClientConfigFileParser::loadConfig(gOpcuaClientConfigFile, endpoint, result);
+ } else {
+#ifdef FORTE_COM_OPC_UA_MASTER_BRANCH
+ UA_StatusCode retValOpcUa = UA_ClientConfig_setDefault(&paConfig);
+ if(UA_STATUSCODE_GOOD != retValOpcUa) {
+ DEVLOG_ERROR("[OPC UA CLIENT]: Error setting client configuration. Error: %s\n", UA_StatusCode_name(retValOpcUa));
+ retVal = false;
+ }
+#else // FORTE_COM_OPC_UA_MASTER_BRANCH
+
+#endif // FORTE_COM_OPC_UA_MASTER_BRANCH
+ }
+
+ return retVal;
}
void CUA_ClientInformation::uninitializeClient() {
@@ -57,9 +92,11 @@
uninitializeAction(**itReferencingActions);
mActionsToBeInitialized.pushBack(*itReferencingActions);
}
- UA_Client_disconnect(mClient);
- UA_Client_delete(mClient);
- mClient = 0;
+ if(mClient) {
+ UA_Client_disconnect(mClient);
+ UA_Client_delete(mClient);
+ mClient = 0;
+ }
mWaitToInitializeActions = false;
mNeedsReconnection = false;
mSomeActionWasInitialized = false;
@@ -101,8 +138,9 @@
} else {
if(!connectClient()) {
tryAnotherChangeImmediately = false;
- DEVLOG_ERROR("[OPC UA CLIENT]: Couldn't connect to endpoint %s. Forte will try to reconnect in %u nanoseconds\n", mEndpointUrl.getValue(),
- scmConnectionRetryTimeoutNano);
+ DEVLOG_ERROR(("[OPC UA CLIENT]: Couldn't connect to endpoint %s. Forte will try to reconnect in %u milliseconds\n"),
+ mEndpointUrl.getValue(),
+ static_cast<unsigned int>(scmConnectionRetryTimeoutNano / 1E6));
mNeedsReconnection = true;
mLastReconnectionTry = getNanoSecondsMonotonic();
} else { //if connection succeeded, don't break the while and try to handle subscriptions immediately
@@ -292,7 +330,11 @@
}
bool CUA_ClientInformation::connectClient() {
- return (UA_STATUSCODE_GOOD == UA_Client_connect(mClient, mEndpointUrl.getValue()));
+ if(0 == mUsername.compare("")) {
+ return (UA_STATUSCODE_GOOD == UA_Client_connect(mClient, mEndpointUrl.getValue()));
+ } else {
+ return (UA_STATUSCODE_GOOD == UA_Client_connect_username(mClient, mEndpointUrl.getValue(), mUsername.c_str(), mPassword.c_str()));
+ }
}
bool CUA_ClientInformation::initializeAllActions() {
@@ -510,11 +552,11 @@
void CUA_ClientInformation::uninitializeAction(CActionInfo& paActionInfo) {
mActionsToBeInitialized.erase(&paActionInfo); //remove in case it is still not initialized
if(CActionInfo::eSubscribe == paActionInfo.getAction()) { //only subscription has something to release
- uninitializeSubscription(paActionInfo);
+ uninitializeSubscribeAction(paActionInfo);
}
}
-void CUA_ClientInformation::uninitializeSubscription(CActionInfo& paActionInfo) {
+void CUA_ClientInformation::uninitializeSubscribeAction(CActionInfo& paActionInfo) {
if(mSubscriptionInfo) {
CSinglyLinkedList<UA_MonitoringItemInfo> toDelete;
for(CSinglyLinkedList<UA_MonitoringItemInfo>::Iterator itMonitoringItemInfo = mSubscriptionInfo->mMonitoredItems.begin();
@@ -529,6 +571,12 @@
if(UA_STATUSCODE_GOOD != retVal) {
DEVLOG_ERROR("[OPC UA CLIENT]: Couldn't delete monitored item %u. No further actions will be taken. Error: %s\n",
(*itMonitoringItemInfo).mMonitoringItemId, UA_StatusCode_name(retVal));
+
+ // if the remote is unplugged the missing subscription is detected and deleted with the previous call to the stack,
+ // so the callback is called and the subscription is cleaned already by this point
+ if(!mSubscriptionInfo) {
+ return;
+ }
}
mSubscriptionInfo->mMonitoredItems.erase(*itMonitoringItemInfo);
diff --git a/src/modules/opc_ua/opcua_client_information.h b/src/modules/opc_ua/opcua_client_information.h
index 0bed3c5..02fbc8d 100644
--- a/src/modules/opc_ua/opcua_client_information.h
+++ b/src/modules/opc_ua/opcua_client_information.h
@@ -18,6 +18,7 @@
#include <fortelist.h>
#include <forte_sync.h>
#include <criticalregion.h>
+#include <string>
/**
* Contains all the information needed for a client to execute remote calls. It's the only class tha access
@@ -100,6 +101,14 @@
return mClientMutex;
}
+ void setClientToInvalid() {
+ mIsClientValid = false;
+ }
+
+ bool isClientValid() {
+ return mIsClientValid;
+ }
+
/**
* Place the request to the OPC UA API for an asynchronous read of a remote variable
* @param paActionInfo Action to be performed
@@ -263,6 +272,13 @@
};
/**
+ * Look for the configuration file and load the configuration from it, otherwise it loads the default configuration
+ * @param paConfigPointer Place to store the configuration
+ * @return True if no error ocurred, false otherwise
+ */
+ bool configureClientFromFile(UA_ClientConfig &paConfigPointer);
+
+ /**
* Try to connect the client
* @return True if the connection succeeded, false otherwise
*/
@@ -335,7 +351,7 @@
* Uninitialze a subscription action
* @param paActionInfo Action to be uninitialized
*/
- void uninitializeSubscription(CActionInfo& paActionInfo);
+ void uninitializeSubscribeAction(CActionInfo& paActionInfo);
/**
* Reset the subscription information.
@@ -359,6 +375,16 @@
CIEC_STRING mEndpointUrl;
/**
+ * Username to be used to connect to the server
+ */
+ std::string mUsername;
+
+ /**
+ * * Password to be used to connect to the server
+ */
+ std::string mPassword;
+
+ /**
* Handler of the OPC UA stack client
*/
UA_Client *mClient;
@@ -401,6 +427,19 @@
bool mWaitToInitializeActions;
/**
+ * Indicate the client is about to be deleted, so it's not added to new lists.
+ * The reason behind this variable, is because the following race condition happened in COPC_UA_Remote_Handler::removeClientFromAllLists
+ * - The client is removed from the connection list
+ * - Before removing from the normal handler list, the async call fails and the client is reconfigured and re-added to the connection handler
+ * - The Client is deleted from allClients lists
+ * - The Client is deleted (C++ wise)
+ * - Since the connectionHandler has still the client, it tries to use it and crash
+ *
+ * So this variable prevents the re-adding to any iteration list if it was set already to invalid, when is about to be deleted
+ */
+ bool mIsClientValid;
+
+ /**
* Store the time when the connection last failed
*/
uint_fast64_t mLastReconnectionTry;
diff --git a/src/modules/opc_ua/opcua_local_handler.cpp b/src/modules/opc_ua/opcua_local_handler.cpp
index 832fc75..c3ebb20 100644
--- a/src/modules/opc_ua/opcua_local_handler.cpp
+++ b/src/modules/opc_ua/opcua_local_handler.cpp
@@ -90,10 +90,10 @@
if(mUaServer) {
uaServerConfig = UA_Server_getConfig(mUaServer);
UA_ServerConfig_setMinimal(uaServerConfig, gOpcuaServerPort, 0);
- configureUAServer(gOpcuaServerPort, serverStrings, *uaServerConfig);
+ configureUAServer(serverStrings, *uaServerConfig);
#else
uaServerConfig = UA_ServerConfig_new_minimal(gOpcuaServerPort, 0);
- configureUAServer(gOpcuaServerPort, serverStrings, *uaServerConfig);
+ configureUAServer(serverStrings, *uaServerConfig);
mUaServer = UA_Server_new(uaServerConfig);
if(mUaServer) {
#endif
@@ -165,7 +165,7 @@
paServerStrings.mHostname = hostname;
}
-void COPC_UA_Local_Handler::configureUAServer(TForteUInt16 paUAServerPort, UA_ServerStrings &paServerStrings, UA_ServerConfig &paUaServerConfig) {
+void COPC_UA_Local_Handler::configureUAServer(UA_ServerStrings &paServerStrings, UA_ServerConfig &paUaServerConfig) {
paUaServerConfig.logger = COPC_UA_HandlerAbstract::getLogger();
diff --git a/src/modules/opc_ua/opcua_local_handler.h b/src/modules/opc_ua/opcua_local_handler.h
index 1b9a32c..eb39d65 100644
--- a/src/modules/opc_ua/opcua_local_handler.h
+++ b/src/modules/opc_ua/opcua_local_handler.h
@@ -126,11 +126,10 @@
void generateServerStrings(TForteUInt16 paUAServerPort, UA_ServerStrings &paServerStrings);
/**
* Creates the configuration for the OPC UA Server.
- * @param paUAServerPort Port where the OPC UA server will listen
* @param paServerStrings Strings needed to configure the server
* @param paUaServerConfig Place to store all the configurations
*/
- void configureUAServer(TForteUInt16 paUAServerPort, UA_ServerStrings &paServerStrings, UA_ServerConfig &paUaServerConfig);
+ void configureUAServer(UA_ServerStrings &paServerStrings, UA_ServerConfig &paUaServerConfig);
/**
* Handler of the OPC UA stack server
diff --git a/src/modules/opc_ua/opcua_remote_handler.cpp b/src/modules/opc_ua/opcua_remote_handler.cpp
index 937082a..696948f 100644
--- a/src/modules/opc_ua/opcua_remote_handler.cpp
+++ b/src/modules/opc_ua/opcua_remote_handler.cpp
@@ -43,10 +43,12 @@
}
void COPC_UA_Client_IterationList::addClient(CUA_ClientInformation& paClientInformation) {
- CCriticalRegion iterationListRegion(mNewClientsMutex);
- addClientToList(paClientInformation, mNewClients);
- mNeedsIteration.inc();
- mNewClientsPresent = true;
+ if(paClientInformation.isClientValid()) {
+ CCriticalRegion iterationListRegion(mNewClientsMutex);
+ addClientToList(paClientInformation, mNewClients);
+ mNeedsIteration.inc();
+ mNewClientsPresent = true;
+ }
}
void COPC_UA_Client_IterationList::removeClient(CUA_ClientInformation& paClientInformation) {
@@ -273,6 +275,7 @@
}
void COPC_UA_Remote_Handler::removeClientFromAllLists(CUA_ClientInformation& paClientInformation) {
+ paClientInformation.setClientToInvalid();
mConnectionHandler.removeClient(paClientInformation);
removeClient(paClientInformation);
mAllClients.erase(&paClientInformation);
diff --git a/src/modules/opc_ua/types/forte_localizedtext.cpp b/src/modules/opc_ua/types/forte_localizedtext.cpp
index 908698f..9a54a05 100644
--- a/src/modules/opc_ua/types/forte_localizedtext.cpp
+++ b/src/modules/opc_ua/types/forte_localizedtext.cpp
@@ -23,4 +23,4 @@
}
const CStringDictionary::TStringId CIEC_LocalizedText::scmElementTypes[] = { g_nStringIdSTRING, g_nStringIdSTRING };
-const CStringDictionary::TStringId CIEC_LocalizedText::scmElementNames[] = { g_nStringIdtext, g_nStringIdlocale };
+const CStringDictionary::TStringId CIEC_LocalizedText::scmElementNames[] = { g_nStringIdlocale, g_nStringIdtext };
diff --git a/src/modules/opc_ua/types/forte_localizedtext.h b/src/modules/opc_ua/types/forte_localizedtext.h
index d10c6df..bf1d6c5 100644
--- a/src/modules/opc_ua/types/forte_localizedtext.h
+++ b/src/modules/opc_ua/types/forte_localizedtext.h
@@ -26,11 +26,11 @@
virtual ~CIEC_LocalizedText() {
}
- CIEC_STRING &text() {
+ CIEC_STRING &locale() {
return *static_cast<CIEC_STRING*>(&getMembers()[0]);
}
- CIEC_STRING &locale() {
+ CIEC_STRING &text() {
return *static_cast<CIEC_STRING*>(&getMembers()[1]);
}
diff --git a/src/modules/utils/GEN_F_MUX.cpp b/src/modules/utils/GEN_F_MUX.cpp
index 55b1416..5e9788d 100644
--- a/src/modules/utils/GEN_F_MUX.cpp
+++ b/src/modules/utils/GEN_F_MUX.cpp
@@ -96,13 +96,11 @@
char baseName[cg_nIdentifierLength];
TIdentifier typeIdString;
- size_t inlength;
- memcpy(typeIdString, paConfigString, cg_nIdentifierLength);
+ memcpy(typeIdString, paConfigString, (strlen(paConfigString) > cg_nIdentifierLength) ? cg_nIdentifierLength : strlen(paConfigString) + 1); //plus 1 for the null character
+ typeIdString[cg_nIdentifierLength] = '\0';
- typeIdString[cg_nIdentifierLength] = '\0'; //make a string
-
- inlength = strlen(typeIdString);
+ size_t inlength = strlen(typeIdString);
for(index = 0; index < (int) inlength - 1; index++){
diff --git a/src/modules/wagokbus/modular/wagoHandle.cpp b/src/modules/wagokbus/modular/wagoHandle.cpp
index aea9a86..2710231 100644
--- a/src/modules/wagokbus/modular/wagoHandle.cpp
+++ b/src/modules/wagokbus/modular/wagoHandle.cpp
@@ -90,8 +90,8 @@
}
void WagoHandle::getBoolean(CIEC_BOOL &paState) {
- bool *inDataBool = 0;
- mAppDevInterface->ReadBool(mKBusDeviceId, mTaskId, mInputOffset, inDataBool);
+ bool inDataBool = false;
+ mAppDevInterface->ReadBool(mKBusDeviceId, mTaskId, mInputOffset, &inDataBool);
paState = inDataBool;
}
diff --git a/src/stdfblib/events/CMakeLists.txt b/src/stdfblib/events/CMakeLists.txt
index a4eb1c9..5af7d07 100644
--- a/src/stdfblib/events/CMakeLists.txt
+++ b/src/stdfblib/events/CMakeLists.txt
@@ -1,12 +1,12 @@
#*******************************************************************************
# Copyright (c) 2010 - 2014 ACIN, fortiss GmbH
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0.
-#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
+#
+# Contributors:
# Alois Zoitl, Monika Wenger
# * - initial API and implementation and/or initial documentation
# *******************************************************************************/
@@ -24,3 +24,4 @@
forte_add_sourcefile_hcpp(E_RDELAY E_RESTART E_R_TRIG E_SPLIT E_SWITCH)
forte_add_sourcefile_hcpp(GEN_E_DEMUX GEN_E_MUX)
forte_add_sourcefile_hcpp(ATimeOut E_TimeOut ARTimeOut E_RTimeOut E_T_FF)
+forte_add_sourcefile_hcpp(E_TRAIN)
diff --git a/src/stdfblib/events/E_TRAIN.cpp b/src/stdfblib/events/E_TRAIN.cpp
new file mode 100644
index 0000000..e8ad9eb
--- /dev/null
+++ b/src/stdfblib/events/E_TRAIN.cpp
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2017 fortiss GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+
+#include "E_TRAIN.h"
+#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
+#include "E_TRAIN_gen.cpp"
+#endif
+
+DEFINE_FIRMWARE_FB(FORTE_E_TRAIN, g_nStringIdE_TRAIN)
+
+const CStringDictionary::TStringId FORTE_E_TRAIN::scm_anDataInputNames[] = {g_nStringIdDT, g_nStringIdN};
+
+const CStringDictionary::TStringId FORTE_E_TRAIN::scm_anDataInputTypeIds[] = {g_nStringIdTIME, g_nStringIdUINT};
+
+const CStringDictionary::TStringId FORTE_E_TRAIN::scm_anDataOutputNames[] = {g_nStringIdCV};
+
+const CStringDictionary::TStringId FORTE_E_TRAIN::scm_anDataOutputTypeIds[] = {g_nStringIdUINT};
+
+const TForteInt16 FORTE_E_TRAIN::scm_anEIWithIndexes[] = {0, 2};
+const TDataIOID FORTE_E_TRAIN::scm_anEIWith[] = {0, 255, 0, 255};
+const CStringDictionary::TStringId FORTE_E_TRAIN::scm_anEventInputNames[] = {g_nStringIdSTART, g_nStringIdSTOP};
+
+const TDataIOID FORTE_E_TRAIN::scm_anEOWith[] = {0, 255};
+const TForteInt16 FORTE_E_TRAIN::scm_anEOWithIndexes[] = {0, -1};
+const CStringDictionary::TStringId FORTE_E_TRAIN::scm_anEventOutputNames[] = {g_nStringIdEO};
+
+const SFBInterfaceSpec FORTE_E_TRAIN::scm_stFBInterfaceSpec = {
+ 2, scm_anEventInputNames, scm_anEIWith, scm_anEIWithIndexes,
+ 1, scm_anEventOutputNames, scm_anEOWith, scm_anEOWithIndexes, 2, scm_anDataInputNames, scm_anDataInputTypeIds,
+ 1, scm_anDataOutputNames, scm_anDataOutputTypeIds,
+ 0, 0
+};
+
+
+const SCFB_FBInstanceData FORTE_E_TRAIN::scm_astInternalFBs[] = {
+ {g_nStringIdCTR, g_nStringIdE_CTU},
+ {g_nStringIdGATE, g_nStringIdE_SWITCH},
+ {g_nStringIdDLY, g_nStringIdE_DELAY},
+};
+
+const SCFB_FBConnectionData FORTE_E_TRAIN::scm_astEventConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdCUO), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGATE, g_nStringIdEI), 1},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdRO), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGATE, g_nStringIdEI), 1},
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdSTART), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdR), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGATE, g_nStringIdEO0), 1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdDLY, g_nStringIdSTART), 2},
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdSTOP), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdDLY, g_nStringIdSTOP), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdDLY, g_nStringIdEO), 2, GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdEO), -1},
+};
+
+const SCFB_FBFannedOutConnectionData FORTE_E_TRAIN::scm_astFannedOutEventConnections[] = {
+ {5, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdCU), 0},
+};
+
+const SCFB_FBConnectionData FORTE_E_TRAIN::scm_astDataConnections[] = {
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdN), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdPV), 0},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdCV), 0, GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdCV), -1},
+ {GENERATE_CONNECTION_PORT_ID_1_ARG(g_nStringIdDT), -1, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdDLY, g_nStringIdDT), 2},
+ {GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdCTR, g_nStringIdQ), 0, GENERATE_CONNECTION_PORT_ID_2_ARG(g_nStringIdGATE, g_nStringIdG), 1},
+};
+
+const SCFB_FBNData FORTE_E_TRAIN::scm_stFBNData = {
+ 3, scm_astInternalFBs,
+ 6, scm_astEventConnections,
+ 1, scm_astFannedOutEventConnections,
+ 4, scm_astDataConnections,
+ 0, 0,
+ 0, 0
+};
+
+
diff --git a/src/stdfblib/events/E_TRAIN.h b/src/stdfblib/events/E_TRAIN.h
new file mode 100644
index 0000000..e4cc876
--- /dev/null
+++ b/src/stdfblib/events/E_TRAIN.h
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2017 fortiss GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+
+#ifndef _E_TRAIN_H_
+#define _E_TRAIN_H_
+
+#include <cfb.h>
+#include <typelib.h>
+#include <forte_time.h>
+#include <forte_uint.h>
+
+class FORTE_E_TRAIN: public CCompositeFB{
+ DECLARE_FIRMWARE_FB(FORTE_E_TRAIN)
+
+private:
+ static const CStringDictionary::TStringId scm_anDataInputNames[];
+ static const CStringDictionary::TStringId scm_anDataInputTypeIds[];
+ CIEC_TIME &DT() {
+ return *static_cast<CIEC_TIME*>(getDI(0));
+ };
+
+ CIEC_UINT &N() {
+ return *static_cast<CIEC_UINT*>(getDI(1));
+ };
+
+ static const CStringDictionary::TStringId scm_anDataOutputNames[];
+ static const CStringDictionary::TStringId scm_anDataOutputTypeIds[];
+ CIEC_UINT &CV() {
+ return *static_cast<CIEC_UINT*>(getDO(0));
+ };
+
+ static const TEventID scm_nEventSTARTID = 0;
+ static const TEventID scm_nEventSTOPID = 1;
+ static const TForteInt16 scm_anEIWithIndexes[];
+ static const TDataIOID scm_anEIWith[];
+ static const CStringDictionary::TStringId scm_anEventInputNames[];
+
+ static const TEventID scm_nEventEOID = 0;
+ static const TForteInt16 scm_anEOWithIndexes[];
+ static const TDataIOID scm_anEOWith[];
+ static const CStringDictionary::TStringId scm_anEventOutputNames[];
+
+ static const SFBInterfaceSpec scm_stFBInterfaceSpec;
+
+ FORTE_FB_DATA_ARRAY(1, 2, 1, 0);
+
+ static const SCFB_FBInstanceData scm_astInternalFBs[];
+
+ static const SCFB_FBConnectionData scm_astEventConnections[];
+
+ static const SCFB_FBFannedOutConnectionData scm_astFannedOutEventConnections[];
+
+ static const SCFB_FBConnectionData scm_astDataConnections[];
+ static const SCFB_FBNData scm_stFBNData;
+
+public:
+ COMPOSITE_FUNCTION_BLOCK_CTOR(FORTE_E_TRAIN){
+ };
+
+ virtual ~FORTE_E_TRAIN(){};
+
+};
+
+#endif //close the ifdef sequence from the beginning of the file
+
diff --git a/systemtests/src/modules/CMakeLists.txt b/systemtests/src/modules/CMakeLists.txt
index 1794988..48e1c37 100644
--- a/systemtests/src/modules/CMakeLists.txt
+++ b/systemtests/src/modules/CMakeLists.txt
@@ -17,3 +17,7 @@
if(FORTE_COM_OPC_UA)
add_subdirectory(opc_ua)
endif(FORTE_COM_OPC_UA)
+
+if(FORTE_MODULE_Arrowhead)
+ add_subdirectory(arrowhead)
+endif(FORTE_MODULE_Arrowhead)
diff --git a/src/modules/arrowhead/SystemTests/Arrowhead_HTTPTest.fboot b/systemtests/src/modules/arrowhead/Arrowhead_HTTPTest.fboot
similarity index 94%
rename from src/modules/arrowhead/SystemTests/Arrowhead_HTTPTest.fboot
rename to systemtests/src/modules/arrowhead/Arrowhead_HTTPTest.fboot
index 2a6eeb0..7028bd3 100644
--- a/src/modules/arrowhead/SystemTests/Arrowhead_HTTPTest.fboot
+++ b/systemtests/src/modules/arrowhead/Arrowhead_HTTPTest.fboot
@@ -211,7 +211,7 @@
RegisterUnregister;<Request ID="211" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO2" Destination="QueryService.query" /></Request>
RegisterUnregister;<Request ID="212" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO3" Destination="RegisterService.unregister" /></Request>
RegisterUnregister;<Request ID="213" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO0" Destination="QueryService.query" /></Request>
-RegisterUnregister;<Request ID="214" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO1" Destination="PUBLISH_0.INIT" /></Request>
+RegisterUnregister;<Request ID="214" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO1" Destination="PUBLISH_0.REQ" /></Request>
RegisterUnregister;<Request ID="215" Action="CREATE"><Connection Source="Sequencer.F_GT.CNF" Destination="Sequencer.E_SWITCH.EI" /></Request>
RegisterUnregister;<Request ID="216" Action="CREATE"><Connection Source="Sequencer.E_SWITCH.EO0" Destination="Sequencer.E_DEMUX.EI" /></Request>
RegisterUnregister;<Request ID="217" Action="CREATE"><Connection Source="Sequencer.E_MERGE.EO" Destination="Sequencer.E_CTU.CU" /></Request>
@@ -269,12 +269,12 @@
RegisterUnregister;<Request ID="269" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
RegisterUnregister;<Request ID="270" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
RegisterUnregister;<Request ID="271" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="272" Action="CREATE"><Connection Source="PUBLISH_0.INITO" Destination="PUBLISH_0.REQ" /></Request>
-RegisterUnregister;<Request ID="273" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-RegisterUnregister;<Request ID="274" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="275" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
-RegisterUnregister;<Request ID="276" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-RegisterUnregister;<Request ID="277" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+RegisterUnregister;<Request ID="272" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+RegisterUnregister;<Request ID="273" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterUnregister;<Request ID="274" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
+RegisterUnregister;<Request ID="275" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+RegisterUnregister;<Request ID="276" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+RegisterUnregister;<Request ID="277" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBLISH_0.INIT" /></Request>
RegisterUnregister;<Request ID="278" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="FieldsToServiceQueryForm.service" /></Request>
RegisterUnregister;<Request ID="279" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="ServiceNotRegisteredPos1.check" /></Request>
RegisterUnregister;<Request ID="280" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
@@ -346,29 +346,29 @@
DoubleRegister;<Request ID="346" Action="CREATE"><FB Name="RegisterService" Type="RegisterService" /></Request>
DoubleRegister;<Request ID="347" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService.endpoint" /></Request>
DoubleRegister;<Request ID="348" Action="CREATE"><FB Name="RegisterServiceHTTP" Type="RegisterServiceHTTP" /></Request>
-DoubleRegister;<Request ID="349" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-DoubleRegister;<Request ID="350" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-DoubleRegister;<Request ID="351" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="352" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
-DoubleRegister;<Request ID="353" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
-DoubleRegister;<Request ID="354" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
-DoubleRegister;<Request ID="355" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="356" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
-DoubleRegister;<Request ID="357" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-DoubleRegister;<Request ID="358" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="359" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
-DoubleRegister;<Request ID="360" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-DoubleRegister;<Request ID="361" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-DoubleRegister;<Request ID="362" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-DoubleRegister;<Request ID="363" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
-DoubleRegister;<Request ID="364" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
-DoubleRegister;<Request ID="365" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
-DoubleRegister;<Request ID="366" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
-DoubleRegister;<Request ID="367" Action="CREATE"><FB Name="ServiceNotRegisteredPos0" Type="TEST_CONDITION" /></Request>
-DoubleRegister;<Request ID="368" Action="CREATE"><FB Name="SUBSCRIBE_0" Type="SUBL_0" /></Request>
-DoubleRegister;<Request ID="369" Action="WRITE"><Connection Source="WSTRIGN#RegisterUnregisterTestReady" Destination="SUBSCRIBE_0.ID" /></Request>
-DoubleRegister;<Request ID="370" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-DoubleRegister;<Request ID="371" Action="WRITE"><Connection Source="WSTRIGN#DoubleRegisterReady" Destination="PUBL_0.ID" /></Request>
+DoubleRegister;<Request ID="349" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
+DoubleRegister;<Request ID="350" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
+DoubleRegister;<Request ID="351" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
+DoubleRegister;<Request ID="352" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
+DoubleRegister;<Request ID="353" Action="CREATE"><FB Name="ServiceNotRegisteredPos0" Type="TEST_CONDITION" /></Request>
+DoubleRegister;<Request ID="354" Action="CREATE"><FB Name="SUBSCRIBE_0" Type="SUBL_0" /></Request>
+DoubleRegister;<Request ID="355" Action="WRITE"><Connection Source="WSTRIGN#RegisterUnregisterTestReady" Destination="SUBSCRIBE_0.ID" /></Request>
+DoubleRegister;<Request ID="356" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+DoubleRegister;<Request ID="357" Action="WRITE"><Connection Source="WSTRIGN#DoubleRegisterReady" Destination="PUBL_0.ID" /></Request>
+DoubleRegister;<Request ID="358" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+DoubleRegister;<Request ID="359" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+DoubleRegister;<Request ID="360" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="361" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
+DoubleRegister;<Request ID="362" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
+DoubleRegister;<Request ID="363" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
+DoubleRegister;<Request ID="364" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="365" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
+DoubleRegister;<Request ID="366" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+DoubleRegister;<Request ID="367" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="368" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
+DoubleRegister;<Request ID="369" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+DoubleRegister;<Request ID="370" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+DoubleRegister;<Request ID="371" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
DoubleRegister;<Request ID="372" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
DoubleRegister;<Request ID="373" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
DoubleRegister;<Request ID="374" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
@@ -449,18 +449,18 @@
DoubleRegister;<Request ID="449" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Registered.S" /></Request>
DoubleRegister;<Request ID="450" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Registered.R" /></Request>
DoubleRegister;<Request ID="451" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
-DoubleRegister;<Request ID="452" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-DoubleRegister;<Request ID="453" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
-DoubleRegister;<Request ID="454" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="ServiceNotRegisteredPos0.REQ" /></Request>
-DoubleRegister;<Request ID="455" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="456" Action="CREATE"><Connection Source="START.COLD" Destination="SUBSCRIBE_0.INIT" /></Request>
-DoubleRegister;<Request ID="457" Action="CREATE"><Connection Source="START.WARM" Destination="SUBSCRIBE_0.INIT" /></Request>
-DoubleRegister;<Request ID="458" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="459" Action="CREATE"><Connection Source="SUBSCRIBE_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
-DoubleRegister;<Request ID="460" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-DoubleRegister;<Request ID="461" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="462" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="463" Action="CREATE"><Connection Source="SUBSCRIBE_0.INITO" Destination="PUBL_0.INIT" /></Request>
+DoubleRegister;<Request ID="452" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
+DoubleRegister;<Request ID="453" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="ServiceNotRegisteredPos0.REQ" /></Request>
+DoubleRegister;<Request ID="454" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="455" Action="CREATE"><Connection Source="START.COLD" Destination="SUBSCRIBE_0.INIT" /></Request>
+DoubleRegister;<Request ID="456" Action="CREATE"><Connection Source="START.WARM" Destination="SUBSCRIBE_0.INIT" /></Request>
+DoubleRegister;<Request ID="457" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="458" Action="CREATE"><Connection Source="SUBSCRIBE_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
+DoubleRegister;<Request ID="459" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+DoubleRegister;<Request ID="460" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="461" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="462" Action="CREATE"><Connection Source="SUBSCRIBE_0.INITO" Destination="PUBL_0.INIT" /></Request>
+DoubleRegister;<Request ID="463" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
DoubleRegister;<Request ID="464" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
DoubleRegister;<Request ID="465" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="ServiceNotRegisteredPos1.check" /></Request>
DoubleRegister;<Request ID="466" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
@@ -472,8 +472,8 @@
DoubleRegister;<Request ID="472" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToServiceRegistryEntry.provider" /></Request>
DoubleRegister;<Request ID="473" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService.serviceRegistryEntry" /></Request>
DoubleRegister;<Request ID="474" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
-DoubleRegister;<Request ID="475" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-DoubleRegister;<Request ID="476" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="ServiceNotRegisteredPos0.check" /></Request>
+DoubleRegister;<Request ID="475" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="ServiceNotRegisteredPos0.check" /></Request>
+DoubleRegister;<Request ID="476" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
DoubleRegister;<Request ID="477" Action="CREATE"><Connection Source="QueryService.queryServices" Destination="QueryServiceHTTP.queryServices" /></Request>
DoubleRegister;<Request ID="478" Action="CREATE"><Connection Source="RegisterService.registerService" Destination="RegisterServiceHTTP.registerService" /></Request>
DoubleRegister;<Request ID="479" Action="START"/>
@@ -706,7 +706,7 @@
RegisterMoreServices;<Request ID="706" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.CNF" Destination="Sequencer.E_DEMUX_1_1.EI" /></Request>
RegisterMoreServices;<Request ID="707" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="QueryService1.FieldsToServiceQueryForm.REQ" /></Request>
RegisterMoreServices;<Request ID="708" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="QueryService2.FieldsToServiceQueryForm.REQ" /></Request>
-RegisterMoreServices;<Request ID="709" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.INIT" /></Request>
+RegisterMoreServices;<Request ID="709" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.REQ" /></Request>
RegisterMoreServices;<Request ID="710" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO3" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServices;<Request ID="711" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServices;<Request ID="712" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="Sequencer.E_MERGE.EI2" /></Request>
@@ -826,7 +826,7 @@
RegisterMoreServices;<Request ID="826" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
RegisterMoreServices;<Request ID="827" Action="CREATE"><Connection Source="Service1.CNF" Destination="Service2.REQ" /></Request>
RegisterMoreServices;<Request ID="828" Action="CREATE"><Connection Source="Service2.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServices;<Request ID="829" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
+RegisterMoreServices;<Request ID="829" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
RegisterMoreServices;<Request ID="830" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="Service1RegisteredPos0.check" /></Request>
RegisterMoreServices;<Request ID="831" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="Service1NotRegisteredPos1.check" /></Request>
RegisterMoreServices;<Request ID="832" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
@@ -1005,7 +1005,7 @@
SameServiceTwice;<Request ID="1,005" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.CNF" Destination="Sequencer.E_DEMUX_1_1.EI" /></Request>
SameServiceTwice;<Request ID="1,006" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.REQ" /></Request>
SameServiceTwice;<Request ID="1,007" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="F_EQ_1_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,008" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.INIT" /></Request>
+SameServiceTwice;<Request ID="1,008" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.REQ" /></Request>
SameServiceTwice;<Request ID="1,009" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO3" Destination="Sequencer.E_MERGE.EI2" /></Request>
SameServiceTwice;<Request ID="1,010" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="Sequencer.E_MERGE.EI2" /></Request>
SameServiceTwice;<Request ID="1,011" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="Sequencer.E_MERGE.EI2" /></Request>
@@ -1130,7 +1130,7 @@
SameServiceTwice;<Request ID="1,130" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
SameServiceTwice;<Request ID="1,131" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
SameServiceTwice;<Request ID="1,132" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,133" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
+SameServiceTwice;<Request ID="1,133" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
SameServiceTwice;<Request ID="1,134" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
SameServiceTwice;<Request ID="1,135" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService1.FieldsToServiceRegistryEntry.providedService" /></Request>
SameServiceTwice;<Request ID="1,136" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
@@ -1438,7 +1438,7 @@
VersionInterfaceAndMetadata;<Request ID="1,438" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.version" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,439" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.address" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,440" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.doneRegister" Destination="FieldsToArrowheadService.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,441" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.doneUnregister" Destination="PUBL_0.INIT" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,441" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.doneUnregister" Destination="PUBL_0.REQ" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,442" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.register" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,443" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.unregister" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,444" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.CNF" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.EI2" /></Request>
@@ -1742,7 +1742,7 @@
VersionInterfaceAndMetadata;<Request ID="1,742" Action="CREATE"><Connection Source="NoMetadataAndAsked.CNF" Destination="FieldsToArrowheadService_1_2_1_1_1_1.REQ" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,743" Action="CREATE"><Connection Source="WrongMetadaButNotAsked.CNF" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.REQ" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,744" Action="CREATE"><Connection Source="WrongMetadaButNotAsked.CNF" Destination="RegisterServiceFullHTTP.E_SR.R" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,745" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,745" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,746" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,747" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,748" Action="CREATE"><Connection Source="F_EQ_4.OUT" Destination="LowerVersion.check" /></Request>
@@ -2009,7 +2009,7 @@
RegisterMoreServicesSubApp;<Request ID="2,009" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.CNF" Destination="Sequencer.E_DEMUX_1_1.EI" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,010" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="QuerySecondService.FieldsToArrowheadService.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,011" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="F_EQ_3_1_1_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,012" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0_1.INIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,012" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0_1.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,013" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO3" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,014" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,015" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="Sequencer.E_MERGE.EI2" /></Request>
@@ -2163,7 +2163,7 @@
RegisterMoreServicesSubApp;<Request ID="2,163" Action="CREATE"><Connection Source="Pos1Empty4.CNF" Destination="E_MERGE.EI2" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,164" Action="CREATE"><Connection Source="E_MERGE.EO" Destination="Sequencer.F_GT.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,165" Action="CREATE"><Connection Source="E_MERGE_1.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,166" Action="CREATE"><Connection Source="PUBL_0_1.INITO" Destination="PUBL_0_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,166" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0_1.INIT" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,167" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,168" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,169" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="Pos1Empty2.check" /></Request>
@@ -2297,7 +2297,7 @@
OrchestratorNoRule;<Request ID="2,297" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.E_REND.EI1" /></Request>
OrchestratorNoRule;<Request ID="2,298" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
OrchestratorNoRule;<Request ID="2,299" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
-OrchestratorNoRule;<Request ID="2,300" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="PUBL_0.INIT" /></Request>
+OrchestratorNoRule;<Request ID="2,300" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="PUBL_0.REQ" /></Request>
OrchestratorNoRule;<Request ID="2,301" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
OrchestratorNoRule;<Request ID="2,302" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
OrchestratorNoRule;<Request ID="2,303" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
@@ -2324,14 +2324,14 @@
OrchestratorNoRule;<Request ID="2,324" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoServiceAvailable.REQ" /></Request>
OrchestratorNoRule;<Request ID="2,325" Action="CREATE"><Connection Source="E_SR.EO" Destination="SERVER_1.INIT" /></Request>
OrchestratorNoRule;<Request ID="2,326" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,327" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,328" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-OrchestratorNoRule;<Request ID="2,329" Action="CREATE"><Connection Source="GET_STRUCT_VALUE1.CNF" Destination="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,330" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,331" Action="CREATE"><Connection Source="FieldsToServiceRequestForm.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,332" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-OrchestratorNoRule;<Request ID="2,333" Action="CREATE"><Connection Source="SERVER_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,334" Action="CREATE"><Connection Source="RequestOrchestrationForm.responseReceived" Destination="GET_STRUCT_VALUE1.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,327" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+OrchestratorNoRule;<Request ID="2,328" Action="CREATE"><Connection Source="GET_STRUCT_VALUE1.CNF" Destination="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,329" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,330" Action="CREATE"><Connection Source="FieldsToServiceRequestForm.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,331" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+OrchestratorNoRule;<Request ID="2,332" Action="CREATE"><Connection Source="SERVER_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,333" Action="CREATE"><Connection Source="RequestOrchestrationForm.responseReceived" Destination="GET_STRUCT_VALUE1.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,334" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
OrchestratorNoRule;<Request ID="2,335" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToServiceRequestForm.requesterSystem" /></Request>
OrchestratorNoRule;<Request ID="2,336" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="FieldsToServiceRequestForm.requestedService" /></Request>
OrchestratorNoRule;<Request ID="2,337" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoServiceAvailable.check" /></Request>
@@ -2367,7 +2367,7 @@
OrchestrationWithRules;<Request ID="2,367" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
OrchestrationWithRules;<Request ID="2,368" Action="WRITE"><Connection Source="WSTRING#test7Ended" Destination="SUBL_0.ID" /></Request>
OrchestrationWithRules;<Request ID="2,369" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-OrchestrationWithRules;<Request ID="2,370" Action="WRITE"><Connection Source="WSTRIGN#allEnded" Destination="PUBL_0.ID" /></Request>
+OrchestrationWithRules;<Request ID="2,370" Action="WRITE"><Connection Source="test8Ended" Destination="PUBL_0.ID" /></Request>
OrchestrationWithRules;<Request ID="2,371" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX" Type="E_DEMUX" /></Request>
OrchestrationWithRules;<Request ID="2,372" Action="CREATE"><FB Name="Sequencer_1.E_CTU" Type="E_CTU" /></Request>
OrchestrationWithRules;<Request ID="2,373" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
@@ -2402,176 +2402,332 @@
OrchestrationWithRules;<Request ID="2,402" Action="WRITE"><Connection Source="http[127.0.0.1:8440/orchestrator/mgmt/store; POST; application/json]]" Destination="CLIENT_1_2_1.ID" /></Request>
OrchestrationWithRules;<Request ID="2,403" Action="WRITE"><Connection Source="STRING#[{"service" : {"serviceDefinition" : "serviceTest","interfaces" : [ "XML", "JSON"],"serviceMetadata" : { "key1" : "value1", "key2" : "value2"}},"consumer" : {"systemName" : "systemTestName","address" :"localhost","port" : 8090, "authenticationInfo" : ""},"providerSystem" : {"systemName" : "systemTestName","address" : "localhost","port" : 8090,"authenticationInfo" : ""},"priority" : 1,"defaultEntry" : true,"name" : "","lastUpdated" : "","instruction" : "","attributes" : { },"serviceURI" : "serviceTest/start"} ]" Destination="CLIENT_1_2_1.SD_1" /></Request>
OrchestrationWithRules;<Request ID="2,404" Action="CREATE"><FB Name="STRING2STRING" Type="STRING2STRING" /></Request>
-OrchestrationWithRules;<Request ID="2,405" Action="CREATE"><FB Name="PUBL_0_1" Type="PUBL_0" /></Request>
-OrchestrationWithRules;<Request ID="2,406" Action="WRITE"><Connection Source="WSTRING#allLoaded" Destination="PUBL_0_1.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,407" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-OrchestrationWithRules;<Request ID="2,408" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-OrchestrationWithRules;<Request ID="2,409" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS" Type="WSTRING2WSTRING" /></Request>
-OrchestrationWithRules;<Request ID="2,410" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S" Type="F_DINT_TO_STRING" /></Request>
-OrchestrationWithRules;<Request ID="2,411" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-OrchestrationWithRules;<Request ID="2,412" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.member" /></Request>
-OrchestrationWithRules;<Request ID="2,413" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-OrchestrationWithRules;<Request ID="2,414" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.member" /></Request>
-OrchestrationWithRules;<Request ID="2,415" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-OrchestrationWithRules;<Request ID="2,416" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.member" /></Request>
-OrchestrationWithRules;<Request ID="2,417" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort" Type="APPEND_STRING_3" /></Request>
-OrchestrationWithRules;<Request ID="2,418" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_2" /></Request>
-OrchestrationWithRules;<Request ID="2,419" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm" Type="OrchestrationForm2OrchestrationForm" /></Request>
-OrchestrationWithRules;<Request ID="2,420" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1" Type="WSTRING2WSTRING" /></Request>
-OrchestrationWithRules;<Request ID="2,421" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI" Type="APPEND_STRING_2" /></Request>
-OrchestrationWithRules;<Request ID="2,422" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud" Type="FieldsToArrowheadCloud" /></Request>
-OrchestrationWithRules;<Request ID="2,423" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-OrchestrationWithRules;<Request ID="2,424" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationHTTP" Type="RequestOrchestrationHTTP" /></Request>
-OrchestrationWithRules;<Request ID="2,425" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" /></Request>
-OrchestrationWithRules;<Request ID="2,426" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-OrchestrationWithRules;<Request ID="2,427" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm" Type="RequestOrchestrationForm" /></Request>
-OrchestrationWithRules;<Request ID="2,428" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
-OrchestrationWithRules;<Request ID="2,429" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
-OrchestrationWithRules;<Request ID="2,430" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
-OrchestrationWithRules;<Request ID="2,431" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
-OrchestrationWithRules;<Request ID="2,432" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
-OrchestrationWithRules;<Request ID="2,433" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.systemName" /></Request>
-OrchestrationWithRules;<Request ID="2,434" Action="WRITE"><Connection Source="localhost" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.address" /></Request>
-OrchestrationWithRules;<Request ID="2,435" Action="WRITE"><Connection Source="8090" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.port" /></Request>
-OrchestrationWithRules;<Request ID="2,436" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.serviceDefinition" /></Request>
-OrchestrationWithRules;<Request ID="2,437" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.interfaces" /></Request>
-OrchestrationWithRules;<Request ID="2,438" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.serviceMetadata" /></Request>
-OrchestrationWithRules;<Request ID="2,439" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8440/orchestrator" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.endpoint" /></Request>
-OrchestrationWithRules;<Request ID="2,440" Action="WRITE"><Connection Source="0" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.INDEX" /></Request>
-OrchestrationWithRules;<Request ID="2,441" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,442" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,443" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
-OrchestrationWithRules;<Request ID="2,444" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
-OrchestrationWithRules;<Request ID="2,445" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
-OrchestrationWithRules;<Request ID="2,446" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,447" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
-OrchestrationWithRules;<Request ID="2,448" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
-OrchestrationWithRules;<Request ID="2,449" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
-OrchestrationWithRules;<Request ID="2,450" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
-OrchestrationWithRules;<Request ID="2,451" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="CLIENT_1_2.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,452" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,453" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_SR.S" /></Request>
-OrchestrationWithRules;<Request ID="2,454" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,455" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_REND.EI1" /></Request>
-OrchestrationWithRules;<Request ID="2,456" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="E_SR_1.S" /></Request>
-OrchestrationWithRules;<Request ID="2,457" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,458" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="E_SR.S" /></Request>
-OrchestrationWithRules;<Request ID="2,459" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,460" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_SR.R" /></Request>
-OrchestrationWithRules;<Request ID="2,461" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,462" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_REND.EI1" /></Request>
-OrchestrationWithRules;<Request ID="2,463" Action="CREATE"><Connection Source="Sequencer_1.F_GT.CNF" Destination="Sequencer_1.E_SWITCH.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,464" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO0" Destination="Sequencer_1.E_DEMUX.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,465" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.CNF" Destination="Sequencer_1.E_DEMUX_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,466" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO1" Destination="Sequencer_1.F_GT_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,467" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.CNF" Destination="Sequencer_1.E_SWITCH_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,468" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO0" Destination="Sequencer_1.F_SUB.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,469" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,470" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="E_SR_1.R" /></Request>
-OrchestrationWithRules;<Request ID="2,471" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,472" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
-OrchestrationWithRules;<Request ID="2,473" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,474" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,475" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,476" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,477" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,478" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,479" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,480" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,481" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,482" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,483" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,484" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.CNF" Destination="Sequencer_1.E_SWITCH_1_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,485" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,486" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="PUBL_0.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,487" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO1" Destination="Sequencer_1.F_GT_1_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,488" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO0" Destination="Sequencer_1.F_SUB_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,489" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO1" Destination="Sequencer_1.F_SUB_1_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,490" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
-OrchestrationWithRules;<Request ID="2,491" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,492" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,493" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,494" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,495" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,496" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,497" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.E_DEMUX.K" /></Request>
-OrchestrationWithRules;<Request ID="2,498" Action="CREATE"><Connection Source="Sequencer_1.F_GT.OUT" Destination="Sequencer_1.E_SWITCH.G" /></Request>
-OrchestrationWithRules;<Request ID="2,499" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.OUT" Destination="Sequencer_1.E_DEMUX_1.K" /></Request>
-OrchestrationWithRules;<Request ID="2,500" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,501" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,502" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,503" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,504" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.OUT" Destination="Sequencer_1.E_SWITCH_1.G" /></Request>
-OrchestrationWithRules;<Request ID="2,505" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1.K" /></Request>
-OrchestrationWithRules;<Request ID="2,506" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.OUT" Destination="Sequencer_1.E_SWITCH_1_1.G" /></Request>
-OrchestrationWithRules;<Request ID="2,507" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1_1.K" /></Request>
-OrchestrationWithRules;<Request ID="2,508" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,509" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,510" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,511" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,512" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,513" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,514" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.CNF" Destination="E_SWITCH.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,515" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,516" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,517" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,518" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,519" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,520" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_3" /></Request>
-OrchestrationWithRules;<Request ID="2,521" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_1" /></Request>
-OrchestrationWithRules;<Request ID="2,522" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,523" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,524" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,525" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,526" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.in_struct" /></Request>
-OrchestrationWithRules;<Request ID="2,527" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.in_struct" /></Request>
-OrchestrationWithRules;<Request ID="2,528" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.in_struct" /></Request>
-OrchestrationWithRules;<Request ID="2,529" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,530" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_1" /></Request>
-OrchestrationWithRules;<Request ID="2,531" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,532" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_2" /></Request>
-OrchestrationWithRules;<Request ID="2,533" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,534" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestrationWithRules;<Request ID="2,535" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.responseReceived" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,536" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.arrowheadService" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requestedService" /></Request>
-OrchestrationWithRules;<Request ID="2,537" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.serviceRequestForm" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.serviceRequestForm" /></Request>
-OrchestrationWithRules;<Request ID="2,538" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.orchestrationResponse" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.IN_ARRAY" /></Request>
-OrchestrationWithRules;<Request ID="2,539" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.requestOrchestration" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationHTTP.requestOrchestration" /></Request>
-OrchestrationWithRules;<Request ID="2,540" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,541" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,542" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.arrowheadSystem" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requesterSystem" /></Request>
-OrchestrationWithRules;<Request ID="2,543" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.arrowheadCloud" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requesterCloud" /></Request>
-OrchestrationWithRules;<Request ID="2,544" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,545" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,546" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,547" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoServiceAvailable.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,548" Action="CREATE"><Connection Source="E_SR.EO" Destination="SERVER_1.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,549" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,550" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,551" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,552" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="ServiceAvailable.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,553" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,554" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,555" Action="CREATE"><Connection Source="E_SR_1.EO" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,556" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,557" Action="CREATE"><Connection Source="SERVER_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,558" Action="CREATE"><Connection Source="CLIENT_1_2.INITO" Destination="CLIENT_1_2.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,559" Action="CREATE"><Connection Source="CLIENT_1_2.CNF" Destination="CLIENT_1_2_1.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,560" Action="CREATE"><Connection Source="CLIENT_1_2_1.INITO" Destination="CLIENT_1_2_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,561" Action="CREATE"><Connection Source="CLIENT_1_2_1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,562" Action="CREATE"><Connection Source="SERVER_1.IND" Destination="STRING2STRING.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,563" Action="CREATE"><Connection Source="STRING2STRING.CNF" Destination="SERVER_1.RSP" /></Request>
-OrchestrationWithRules;<Request ID="2,564" Action="CREATE"><Connection Source="ServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,565" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,566" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,567" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0_1.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,568" Action="CREATE"><Connection Source="PUBL_0_1.INITO" Destination="PUBL_0_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,569" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoServiceAvailable.check" /></Request>
-OrchestrationWithRules;<Request ID="2,570" Action="CREATE"><Connection Source="E_SR.Q" Destination="SERVER_1.QI" /></Request>
-OrchestrationWithRules;<Request ID="2,571" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
-OrchestrationWithRules;<Request ID="2,572" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
-OrchestrationWithRules;<Request ID="2,573" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="ServiceAvailable.check" /></Request>
-OrchestrationWithRules;<Request ID="2,574" Action="CREATE"><Connection Source="E_SR_1.Q" Destination="E_SWITCH.G" /></Request>
-OrchestrationWithRules;<Request ID="2,575" Action="CREATE"><Connection Source="SERVER_1.RD_1" Destination="STRING2STRING.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,576" Action="CREATE"><Connection Source="STRING2STRING.OUT" Destination="SERVER_1.SD_1" /></Request>
-OrchestrationWithRules;<Request ID="2,577" Action="START"/>
+OrchestrationWithRules;<Request ID="2,405" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+OrchestrationWithRules;<Request ID="2,406" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+OrchestrationWithRules;<Request ID="2,407" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS" Type="WSTRING2WSTRING" /></Request>
+OrchestrationWithRules;<Request ID="2,408" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S" Type="F_DINT_TO_STRING" /></Request>
+OrchestrationWithRules;<Request ID="2,409" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+OrchestrationWithRules;<Request ID="2,410" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.member" /></Request>
+OrchestrationWithRules;<Request ID="2,411" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+OrchestrationWithRules;<Request ID="2,412" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.member" /></Request>
+OrchestrationWithRules;<Request ID="2,413" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+OrchestrationWithRules;<Request ID="2,414" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.member" /></Request>
+OrchestrationWithRules;<Request ID="2,415" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort" Type="APPEND_STRING_3" /></Request>
+OrchestrationWithRules;<Request ID="2,416" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_2" /></Request>
+OrchestrationWithRules;<Request ID="2,417" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm" Type="OrchestrationForm2OrchestrationForm" /></Request>
+OrchestrationWithRules;<Request ID="2,418" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1" Type="WSTRING2WSTRING" /></Request>
+OrchestrationWithRules;<Request ID="2,419" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI" Type="APPEND_STRING_2" /></Request>
+OrchestrationWithRules;<Request ID="2,420" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud" Type="FieldsToArrowheadCloud" /></Request>
+OrchestrationWithRules;<Request ID="2,421" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+OrchestrationWithRules;<Request ID="2,422" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationHTTP" Type="RequestOrchestrationHTTP" /></Request>
+OrchestrationWithRules;<Request ID="2,423" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" /></Request>
+OrchestrationWithRules;<Request ID="2,424" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+OrchestrationWithRules;<Request ID="2,425" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm" Type="RequestOrchestrationForm" /></Request>
+OrchestrationWithRules;<Request ID="2,426" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
+OrchestrationWithRules;<Request ID="2,427" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
+OrchestrationWithRules;<Request ID="2,428" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
+OrchestrationWithRules;<Request ID="2,429" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
+OrchestrationWithRules;<Request ID="2,430" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
+OrchestrationWithRules;<Request ID="2,431" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.systemName" /></Request>
+OrchestrationWithRules;<Request ID="2,432" Action="WRITE"><Connection Source="localhost" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.address" /></Request>
+OrchestrationWithRules;<Request ID="2,433" Action="WRITE"><Connection Source="8090" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.port" /></Request>
+OrchestrationWithRules;<Request ID="2,434" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.serviceDefinition" /></Request>
+OrchestrationWithRules;<Request ID="2,435" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.interfaces" /></Request>
+OrchestrationWithRules;<Request ID="2,436" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.serviceMetadata" /></Request>
+OrchestrationWithRules;<Request ID="2,437" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8440/orchestrator" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.endpoint" /></Request>
+OrchestrationWithRules;<Request ID="2,438" Action="WRITE"><Connection Source="0" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.INDEX" /></Request>
+OrchestrationWithRules;<Request ID="2,439" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,440" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,441" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
+OrchestrationWithRules;<Request ID="2,442" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
+OrchestrationWithRules;<Request ID="2,443" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
+OrchestrationWithRules;<Request ID="2,444" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,445" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
+OrchestrationWithRules;<Request ID="2,446" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
+OrchestrationWithRules;<Request ID="2,447" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
+OrchestrationWithRules;<Request ID="2,448" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
+OrchestrationWithRules;<Request ID="2,449" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="CLIENT_1_2.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,450" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,451" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_SR.S" /></Request>
+OrchestrationWithRules;<Request ID="2,452" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,453" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_REND.EI1" /></Request>
+OrchestrationWithRules;<Request ID="2,454" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="E_SR_1.S" /></Request>
+OrchestrationWithRules;<Request ID="2,455" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,456" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="E_SR.S" /></Request>
+OrchestrationWithRules;<Request ID="2,457" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,458" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_SR.R" /></Request>
+OrchestrationWithRules;<Request ID="2,459" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,460" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_REND.EI1" /></Request>
+OrchestrationWithRules;<Request ID="2,461" Action="CREATE"><Connection Source="Sequencer_1.F_GT.CNF" Destination="Sequencer_1.E_SWITCH.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,462" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO0" Destination="Sequencer_1.E_DEMUX.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,463" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.CNF" Destination="Sequencer_1.E_DEMUX_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,464" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO1" Destination="Sequencer_1.F_GT_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,465" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.CNF" Destination="Sequencer_1.E_SWITCH_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,466" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO0" Destination="Sequencer_1.F_SUB.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,467" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,468" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="E_SR_1.R" /></Request>
+OrchestrationWithRules;<Request ID="2,469" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,470" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
+OrchestrationWithRules;<Request ID="2,471" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,472" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,473" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,474" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,475" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,476" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,477" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,478" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,479" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,480" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,481" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,482" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.CNF" Destination="Sequencer_1.E_SWITCH_1_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,483" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,484" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="PUBL_0.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,485" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO1" Destination="Sequencer_1.F_GT_1_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,486" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO0" Destination="Sequencer_1.F_SUB_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,487" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO1" Destination="Sequencer_1.F_SUB_1_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,488" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
+OrchestrationWithRules;<Request ID="2,489" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,490" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,491" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,492" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,493" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,494" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,495" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.E_DEMUX.K" /></Request>
+OrchestrationWithRules;<Request ID="2,496" Action="CREATE"><Connection Source="Sequencer_1.F_GT.OUT" Destination="Sequencer_1.E_SWITCH.G" /></Request>
+OrchestrationWithRules;<Request ID="2,497" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.OUT" Destination="Sequencer_1.E_DEMUX_1.K" /></Request>
+OrchestrationWithRules;<Request ID="2,498" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,499" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,500" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,501" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,502" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.OUT" Destination="Sequencer_1.E_SWITCH_1.G" /></Request>
+OrchestrationWithRules;<Request ID="2,503" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1.K" /></Request>
+OrchestrationWithRules;<Request ID="2,504" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.OUT" Destination="Sequencer_1.E_SWITCH_1_1.G" /></Request>
+OrchestrationWithRules;<Request ID="2,505" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1_1.K" /></Request>
+OrchestrationWithRules;<Request ID="2,506" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,507" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,508" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,509" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,510" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,511" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,512" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.CNF" Destination="E_SWITCH.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,513" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,514" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,515" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,516" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,517" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,518" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_3" /></Request>
+OrchestrationWithRules;<Request ID="2,519" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_1" /></Request>
+OrchestrationWithRules;<Request ID="2,520" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,521" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,522" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,523" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,524" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.in_struct" /></Request>
+OrchestrationWithRules;<Request ID="2,525" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.in_struct" /></Request>
+OrchestrationWithRules;<Request ID="2,526" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.in_struct" /></Request>
+OrchestrationWithRules;<Request ID="2,527" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,528" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_1" /></Request>
+OrchestrationWithRules;<Request ID="2,529" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,530" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_2" /></Request>
+OrchestrationWithRules;<Request ID="2,531" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,532" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestrationWithRules;<Request ID="2,533" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.responseReceived" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,534" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.arrowheadService" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requestedService" /></Request>
+OrchestrationWithRules;<Request ID="2,535" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.serviceRequestForm" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.serviceRequestForm" /></Request>
+OrchestrationWithRules;<Request ID="2,536" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.orchestrationResponse" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.IN_ARRAY" /></Request>
+OrchestrationWithRules;<Request ID="2,537" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.requestOrchestration" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationHTTP.requestOrchestration" /></Request>
+OrchestrationWithRules;<Request ID="2,538" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,539" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,540" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.arrowheadSystem" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requesterSystem" /></Request>
+OrchestrationWithRules;<Request ID="2,541" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.arrowheadCloud" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requesterCloud" /></Request>
+OrchestrationWithRules;<Request ID="2,542" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,543" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,544" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,545" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoServiceAvailable.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,546" Action="CREATE"><Connection Source="E_SR.EO" Destination="SERVER_1.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,547" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,548" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,549" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="ServiceAvailable.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,550" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,551" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,552" Action="CREATE"><Connection Source="E_SR_1.EO" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,553" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,554" Action="CREATE"><Connection Source="SERVER_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,555" Action="CREATE"><Connection Source="CLIENT_1_2.INITO" Destination="CLIENT_1_2.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,556" Action="CREATE"><Connection Source="CLIENT_1_2.CNF" Destination="CLIENT_1_2_1.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,557" Action="CREATE"><Connection Source="CLIENT_1_2_1.INITO" Destination="CLIENT_1_2_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,558" Action="CREATE"><Connection Source="SERVER_1.IND" Destination="STRING2STRING.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,559" Action="CREATE"><Connection Source="STRING2STRING.CNF" Destination="SERVER_1.RSP" /></Request>
+OrchestrationWithRules;<Request ID="2,560" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,561" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,562" Action="CREATE"><Connection Source="CLIENT_1_2_1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,563" Action="CREATE"><Connection Source="ServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,564" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,565" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoServiceAvailable.check" /></Request>
+OrchestrationWithRules;<Request ID="2,566" Action="CREATE"><Connection Source="E_SR.Q" Destination="SERVER_1.QI" /></Request>
+OrchestrationWithRules;<Request ID="2,567" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
+OrchestrationWithRules;<Request ID="2,568" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
+OrchestrationWithRules;<Request ID="2,569" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="ServiceAvailable.check" /></Request>
+OrchestrationWithRules;<Request ID="2,570" Action="CREATE"><Connection Source="E_SR_1.Q" Destination="E_SWITCH.G" /></Request>
+OrchestrationWithRules;<Request ID="2,571" Action="CREATE"><Connection Source="SERVER_1.RD_1" Destination="STRING2STRING.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,572" Action="CREATE"><Connection Source="STRING2STRING.OUT" Destination="SERVER_1.SD_1" /></Request>
+OrchestrationWithRules;<Request ID="2,573" Action="START"/>
+;<Request ID="2,574" Action="CREATE"><FB Name="PublishSubscribe" Type="EMB_RES" /></Request>
+PublishSubscribe;<Request ID="2,575" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+PublishSubscribe;<Request ID="2,576" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+PublishSubscribe;<Request ID="2,577" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+PublishSubscribe;<Request ID="2,578" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
+PublishSubscribe;<Request ID="2,579" Action="CREATE"><FB Name="FieldsToPublishEvent" Type="FieldsToPublishEvent" /></Request>
+PublishSubscribe;<Request ID="2,580" Action="CREATE"><FB Name="ArrowheadPublish" Type="ArrowheadPublish" /></Request>
+PublishSubscribe;<Request ID="2,581" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8454/eventhandler" Destination="ArrowheadPublish.endpoint" /></Request>
+PublishSubscribe;<Request ID="2,582" Action="CREATE"><FB Name="FieldsToArrowheadEvent" Type="FieldsToArrowheadEvent" /></Request>
+PublishSubscribe;<Request ID="2,583" Action="WRITE"><Connection Source="WSTRING#eventType4diac" Destination="FieldsToArrowheadEvent.type" /></Request>
+PublishSubscribe;<Request ID="2,584" Action="WRITE"><Connection Source="WSTRING#This is the payload of the event" Destination="FieldsToArrowheadEvent.payload" /></Request>
+PublishSubscribe;<Request ID="2,585" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadEvent.eventMetadata" /></Request>
+PublishSubscribe;<Request ID="2,586" Action="CREATE"><FB Name="SubscribeEvent" Type="SubscribeEvent" /></Request>
+PublishSubscribe;<Request ID="2,587" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8454/eventhandler" Destination="SubscribeEvent.endpoint" /></Request>
+PublishSubscribe;<Request ID="2,588" Action="CREATE"><FB Name="FieldsToEventFilter" Type="FieldsToEventFilter" /></Request>
+PublishSubscribe;<Request ID="2,589" Action="WRITE"><Connection Source="WSTRING#eventType4diac" Destination="FieldsToEventFilter.eventType" /></Request>
+PublishSubscribe;<Request ID="2,590" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToEventFilter.filterMetadata" /></Request>
+PublishSubscribe;<Request ID="2,591" Action="WRITE"><Connection Source="WSTRING#/subscribePath" Destination="FieldsToEventFilter.notifyUri" /></Request>
+PublishSubscribe;<Request ID="2,592" Action="WRITE"><Connection Source="BOOL#TRUE" Destination="FieldsToEventFilter.matchMetadata" /></Request>
+PublishSubscribe;<Request ID="2,593" Action="CREATE"><FB Name="E_CTU" Type="E_CTU" /></Request>
+PublishSubscribe;<Request ID="2,594" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+PublishSubscribe;<Request ID="2,595" Action="WRITE"><Connection Source="UINT#0" Destination="F_EQ.IN2" /></Request>
+PublishSubscribe;<Request ID="2,596" Action="CREATE"><FB Name="E_DELAY" Type="E_DELAY" /></Request>
+PublishSubscribe;<Request ID="2,597" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY.DT" /></Request>
+PublishSubscribe;<Request ID="2,598" Action="CREATE"><FB Name="NoMessage" Type="TEST_CONDITION" /></Request>
+PublishSubscribe;<Request ID="2,599" Action="CREATE"><FB Name="E_DELAY_1" Type="E_DELAY" /></Request>
+PublishSubscribe;<Request ID="2,600" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY_1.DT" /></Request>
+PublishSubscribe;<Request ID="2,601" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+PublishSubscribe;<Request ID="2,602" Action="WRITE"><Connection Source="UINT#1" Destination="F_EQ_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,603" Action="CREATE"><FB Name="OneMessage" Type="TEST_CONDITION" /></Request>
+PublishSubscribe;<Request ID="2,604" Action="CREATE"><FB Name="E_DELAY_1_1" Type="E_DELAY" /></Request>
+PublishSubscribe;<Request ID="2,605" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY_1_1.DT" /></Request>
+PublishSubscribe;<Request ID="2,606" Action="CREATE"><FB Name="TwoMessages" Type="TEST_CONDITION" /></Request>
+PublishSubscribe;<Request ID="2,607" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
+PublishSubscribe;<Request ID="2,608" Action="WRITE"><Connection Source="UINT#2" Destination="F_EQ_1_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,609" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,610" Action="CREATE"><FB Name="Sequencer_1_1.E_CTU" Type="E_CTU" /></Request>
+PublishSubscribe;<Request ID="2,611" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,612" Action="CREATE"><FB Name="Sequencer_1_1.E_SWITCH" Type="E_SWITCH" /></Request>
+PublishSubscribe;<Request ID="2,613" Action="CREATE"><FB Name="Sequencer_1_1.F_GT" Type="F_GT" /></Request>
+PublishSubscribe;<Request ID="2,614" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer_1_1.F_GT.IN2" /></Request>
+PublishSubscribe;<Request ID="2,615" Action="CREATE"><FB Name="Sequencer_1_1.F_SUB" Type="F_SUB" /></Request>
+PublishSubscribe;<Request ID="2,616" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer_1_1.F_SUB.IN2" /></Request>
+PublishSubscribe;<Request ID="2,617" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,618" Action="CREATE"><FB Name="Sequencer_1_1.F_GT_1" Type="F_GT" /></Request>
+PublishSubscribe;<Request ID="2,619" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer_1_1.F_GT_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,620" Action="CREATE"><FB Name="Sequencer_1_1.F_SUB_1" Type="F_SUB" /></Request>
+PublishSubscribe;<Request ID="2,621" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer_1_1.F_SUB_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,622" Action="CREATE"><FB Name="Sequencer_1_1.E_SWITCH_1" Type="E_SWITCH" /></Request>
+PublishSubscribe;<Request ID="2,623" Action="CREATE"><FB Name="Sequencer_1_1.F_GT_1_1" Type="F_GT" /></Request>
+PublishSubscribe;<Request ID="2,624" Action="WRITE"><Connection Source="INT#11" Destination="Sequencer_1_1.F_GT_1_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,625" Action="CREATE"><FB Name="Sequencer_1_1.E_SWITCH_1_1" Type="E_SWITCH" /></Request>
+PublishSubscribe;<Request ID="2,626" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX_1_1_1" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,627" Action="CREATE"><FB Name="Sequencer_1_1.F_SUB_1_1" Type="F_SUB" /></Request>
+PublishSubscribe;<Request ID="2,628" Action="WRITE"><Connection Source="INT#12" Destination="Sequencer_1_1.F_SUB_1_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,629" Action="CREATE"><FB Name="SERVER_1_0" Type="SERVER_1" /></Request>
+PublishSubscribe;<Request ID="2,630" Action="WRITE"><Connection Source="1" Destination="SERVER_1_0.QI" /></Request>
+PublishSubscribe;<Request ID="2,631" Action="WRITE"><Connection Source="http[/subscribePath]" Destination="SERVER_1_0.ID" /></Request>
+PublishSubscribe;<Request ID="2,632" Action="CREATE"><FB Name="PUBL_0_1" Type="PUBL_0" /></Request>
+PublishSubscribe;<Request ID="2,633" Action="WRITE"><Connection Source="WSTRING#allLoaded" Destination="PUBL_0_1.ID" /></Request>
+PublishSubscribe;<Request ID="2,634" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+PublishSubscribe;<Request ID="2,635" Action="WRITE"><Connection Source="test8Ended" Destination="SUBL_0.ID" /></Request>
+PublishSubscribe;<Request ID="2,636" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+PublishSubscribe;<Request ID="2,637" Action="WRITE"><Connection Source="WSTRIGN#allEnded" Destination="PUBL_0.ID" /></Request>
+PublishSubscribe;<Request ID="2,638" Action="CREATE"><FB Name="PublishEventHTTP" Type="PublishEventHTTP" /></Request>
+PublishSubscribe;<Request ID="2,639" Action="CREATE"><FB Name="SubscribeEventHTTP" Type="SubscribeEventHTTP" /></Request>
+PublishSubscribe;<Request ID="2,640" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO0" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+PublishSubscribe;<Request ID="2,641" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO1" Destination="FieldsToPublishEvent.REQ" /></Request>
+PublishSubscribe;<Request ID="2,642" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO2" Destination="E_DELAY.START" /></Request>
+PublishSubscribe;<Request ID="2,643" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO3" Destination="SubscribeEvent.Subscribe" /></Request>
+PublishSubscribe;<Request ID="2,644" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO0" Destination="E_DELAY.START" /></Request>
+PublishSubscribe;<Request ID="2,645" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO1" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,646" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO2" Destination="E_DELAY_1.START" /></Request>
+PublishSubscribe;<Request ID="2,647" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO3" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,648" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT.CNF" Destination="Sequencer_1_1.E_SWITCH.EI" /></Request>
+PublishSubscribe;<Request ID="2,649" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH.EO0" Destination="Sequencer_1_1.E_DEMUX.EI" /></Request>
+PublishSubscribe;<Request ID="2,650" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB.CNF" Destination="Sequencer_1_1.E_DEMUX_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,651" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH.EO1" Destination="Sequencer_1_1.F_GT_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,652" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1.CNF" Destination="Sequencer_1_1.E_SWITCH_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,653" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1.EO0" Destination="Sequencer_1_1.F_SUB.REQ" /></Request>
+PublishSubscribe;<Request ID="2,654" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1.CNF" Destination="Sequencer_1_1.E_DEMUX_1_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,655" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO0" Destination="E_DELAY_1_1.START" /></Request>
+PublishSubscribe;<Request ID="2,656" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO1" Destination="SubscribeEvent.Unsubscribe" /></Request>
+PublishSubscribe;<Request ID="2,657" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO2" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,658" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,659" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,660" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,661" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,662" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,663" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,664" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,665" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,666" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,667" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,668" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,669" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1_1.CNF" Destination="Sequencer_1_1.E_SWITCH_1_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,670" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1_1.CNF" Destination="Sequencer_1_1.E_DEMUX_1_1_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,671" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1.EO1" Destination="Sequencer_1_1.F_GT_1_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,672" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1_1.EO0" Destination="Sequencer_1_1.F_SUB_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,673" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1_1.EO1" Destination="Sequencer_1_1.F_SUB_1_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,674" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1_1.E_CTU.R" /></Request>
+PublishSubscribe;<Request ID="2,675" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,676" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,677" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,678" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,679" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO3" Destination="E_DELAY_1_1.START" /></Request>
+PublishSubscribe;<Request ID="2,680" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,681" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO0" Destination="PUBL_0.REQ" /></Request>
+PublishSubscribe;<Request ID="2,682" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.E_DEMUX.K" /></Request>
+PublishSubscribe;<Request ID="2,683" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT.OUT" Destination="Sequencer_1_1.E_SWITCH.G" /></Request>
+PublishSubscribe;<Request ID="2,684" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB.OUT" Destination="Sequencer_1_1.E_DEMUX_1.K" /></Request>
+PublishSubscribe;<Request ID="2,685" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_GT.IN1" /></Request>
+PublishSubscribe;<Request ID="2,686" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_SUB.IN1" /></Request>
+PublishSubscribe;<Request ID="2,687" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_SUB_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,688" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_GT_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,689" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1.OUT" Destination="Sequencer_1_1.E_SWITCH_1.G" /></Request>
+PublishSubscribe;<Request ID="2,690" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1.OUT" Destination="Sequencer_1_1.E_DEMUX_1_1.K" /></Request>
+PublishSubscribe;<Request ID="2,691" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1_1.OUT" Destination="Sequencer_1_1.E_SWITCH_1_1.G" /></Request>
+PublishSubscribe;<Request ID="2,692" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1_1.OUT" Destination="Sequencer_1_1.E_DEMUX_1_1_1.K" /></Request>
+PublishSubscribe;<Request ID="2,693" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_SUB_1_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,694" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_GT_1_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,695" Action="CREATE"><Connection Source="FieldsToPublishEvent.CNF" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,696" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToArrowheadEvent.REQ" /></Request>
+PublishSubscribe;<Request ID="2,697" Action="CREATE"><Connection Source="E_DELAY.EO" Destination="F_EQ.REQ" /></Request>
+PublishSubscribe;<Request ID="2,698" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoMessage.REQ" /></Request>
+PublishSubscribe;<Request ID="2,699" Action="CREATE"><Connection Source="E_DELAY_1.EO" Destination="F_EQ_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,700" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="OneMessage.REQ" /></Request>
+PublishSubscribe;<Request ID="2,701" Action="CREATE"><Connection Source="E_DELAY_1_1.EO" Destination="F_EQ_1_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,702" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="TwoMessages.REQ" /></Request>
+PublishSubscribe;<Request ID="2,703" Action="CREATE"><Connection Source="TwoMessages.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,704" Action="CREATE"><Connection Source="OneMessage.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,705" Action="CREATE"><Connection Source="NoMessage.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,706" Action="CREATE"><Connection Source="FieldsToEventFilter.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,707" Action="CREATE"><Connection Source="ArrowheadPublish.published" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,708" Action="CREATE"><Connection Source="SubscribeEvent.Subscribed" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,709" Action="CREATE"><Connection Source="FieldsToArrowheadEvent.CNF" Destination="SERVER_1_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,710" Action="CREATE"><Connection Source="E_CTU.CUO" Destination="SERVER_1_0.RSP" /></Request>
+PublishSubscribe;<Request ID="2,711" Action="CREATE"><Connection Source="SERVER_1_0.INITO" Destination="FieldsToEventFilter.REQ" /></Request>
+PublishSubscribe;<Request ID="2,712" Action="CREATE"><Connection Source="SERVER_1_0.IND" Destination="E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,713" Action="CREATE"><Connection Source="SubscribeEvent.Unsubscribed" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,714" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0_1.INIT" /></Request>
+PublishSubscribe;<Request ID="2,715" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,716" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,717" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,718" Action="CREATE"><Connection Source="PUBL_0_1.INITO" Destination="PUBL_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,719" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,720" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToPublishEvent.source" /></Request>
+PublishSubscribe;<Request ID="2,721" Action="CREATE"><Connection Source="FieldsToPublishEvent.publishEvent" Destination="ArrowheadPublish.publishEvent" /></Request>
+PublishSubscribe;<Request ID="2,722" Action="CREATE"><Connection Source="FieldsToArrowheadEvent.arrowheadEvent" Destination="FieldsToPublishEvent.event" /></Request>
+PublishSubscribe;<Request ID="2,723" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToEventFilter.consumer" /></Request>
+PublishSubscribe;<Request ID="2,724" Action="CREATE"><Connection Source="FieldsToEventFilter.eventFilter" Destination="SubscribeEvent.eventFilter" /></Request>
+PublishSubscribe;<Request ID="2,725" Action="CREATE"><Connection Source="E_CTU.CV" Destination="F_EQ.IN1" /></Request>
+PublishSubscribe;<Request ID="2,726" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoMessage.check" /></Request>
+PublishSubscribe;<Request ID="2,727" Action="CREATE"><Connection Source="E_CTU.CV" Destination="F_EQ_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,728" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="OneMessage.check" /></Request>
+PublishSubscribe;<Request ID="2,729" Action="CREATE"><Connection Source="F_EQ_1_1.OUT" Destination="TwoMessages.check" /></Request>
+PublishSubscribe;<Request ID="2,730" Action="CREATE"><Connection Source="E_CTU.CV" Destination="F_EQ_1_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,731" Action="CREATE"><Connection Source="ArrowheadPublish.ArrowheadPublishAdp" Destination="PublishEventHTTP.publishEvent" /></Request>
+PublishSubscribe;<Request ID="2,732" Action="CREATE"><Connection Source="SubscribeEvent.SubscribeEventAdp" Destination="SubscribeEventHTTP.SubscribeEventAdp" /></Request>
+PublishSubscribe;<Request ID="2,733" Action="START"/>
diff --git a/src/modules/arrowhead/SystemTests/Arrowhead_HTTPTest.fboot b/systemtests/src/modules/arrowhead/Arrowhead_OpcUaTest.fboot
similarity index 82%
copy from src/modules/arrowhead/SystemTests/Arrowhead_HTTPTest.fboot
copy to systemtests/src/modules/arrowhead/Arrowhead_OpcUaTest.fboot
index 2a6eeb0..1e72580 100644
--- a/src/modules/arrowhead/SystemTests/Arrowhead_HTTPTest.fboot
+++ b/systemtests/src/modules/arrowhead/Arrowhead_OpcUaTest.fboot
@@ -1,60 +1,60 @@
;<Request ID="1" Action="CREATE"><FB Name="cleanAll" Type="EMB_RES" /></Request>
-cleanAll;<Request ID="2" Action="CREATE"><FB Name="RegisterService1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-cleanAll;<Request ID="3" Action="CREATE"><FB Name="RegisterService1.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-cleanAll;<Request ID="4" Action="CREATE"><FB Name="RegisterService1.RegisterService" Type="RegisterService" /></Request>
-cleanAll;<Request ID="5" Action="CREATE"><FB Name="RegisterService1.E_SR" Type="E_SR" /></Request>
-cleanAll;<Request ID="6" Action="CREATE"><FB Name="RegisterService1.E_SWITCH" Type="E_SWITCH" /></Request>
-cleanAll;<Request ID="7" Action="CREATE"><FB Name="RegisterService1.E_REND" Type="E_REND" /></Request>
-cleanAll;<Request ID="8" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-cleanAll;<Request ID="9" Action="CREATE"><FB Name="RegisterService2.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-cleanAll;<Request ID="10" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
-cleanAll;<Request ID="11" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
-cleanAll;<Request ID="12" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
-cleanAll;<Request ID="13" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
-cleanAll;<Request ID="14" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-cleanAll;<Request ID="15" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
-cleanAll;<Request ID="16" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-cleanAll;<Request ID="17" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
-cleanAll;<Request ID="18" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-cleanAll;<Request ID="19" Action="WRITE"><Connection Source="WSTRIGN#allCleaned" Destination="PUBL_0.ID" /></Request>
-cleanAll;<Request ID="20" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-cleanAll;<Request ID="21" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
-cleanAll;<Request ID="22" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
-cleanAll;<Request ID="23" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
-cleanAll;<Request ID="24" Action="CREATE"><FB Name="FieldsToArrowheadService_1" Type="FieldsToArrowheadService" /></Request>
-cleanAll;<Request ID="25" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="FieldsToArrowheadService_1.serviceDefinition" /></Request>
-cleanAll;<Request ID="26" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1.interfaces" /></Request>
-cleanAll;<Request ID="27" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1.serviceMetadata" /></Request>
-cleanAll;<Request ID="28" Action="CREATE"><FB Name="RegisterService2_1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-cleanAll;<Request ID="29" Action="CREATE"><FB Name="RegisterService2_1.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-cleanAll;<Request ID="30" Action="CREATE"><FB Name="RegisterService2_1.RegisterService" Type="RegisterService" /></Request>
-cleanAll;<Request ID="31" Action="CREATE"><FB Name="RegisterService2_1.E_SR" Type="E_SR" /></Request>
-cleanAll;<Request ID="32" Action="CREATE"><FB Name="RegisterService2_1.E_SWITCH" Type="E_SWITCH" /></Request>
-cleanAll;<Request ID="33" Action="CREATE"><FB Name="RegisterService2_1.E_REND" Type="E_REND" /></Request>
-cleanAll;<Request ID="34" Action="CREATE"><FB Name="FieldsToArrowheadSystem_1" Type="FieldsToArrowheadSystem" /></Request>
-cleanAll;<Request ID="35" Action="WRITE"><Connection Source="WSTRING#systemTestName2" Destination="FieldsToArrowheadSystem_1.systemName" /></Request>
-cleanAll;<Request ID="36" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem_1.address" /></Request>
-cleanAll;<Request ID="37" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem_1.port" /></Request>
-cleanAll;<Request ID="38" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
-cleanAll;<Request ID="39" Action="WRITE"><Connection Source="WSTRIGN#allEnded" Destination="SUBL_0.ID" /></Request>
-cleanAll;<Request ID="40" Action="CREATE"><FB Name="STEST_END" Type="STEST_END" /></Request>
-cleanAll;<Request ID="41" Action="CREATE"><FB Name="SUBL_0_1" Type="SUBL_0" /></Request>
-cleanAll;<Request ID="42" Action="WRITE"><Connection Source="WSTRING#allLoaded" Destination="SUBL_0_1.ID" /></Request>
+cleanAll;<Request ID="2" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+cleanAll;<Request ID="3" Action="WRITE"><Connection Source="WSTRIGN#allCleaned" Destination="PUBL_0.ID" /></Request>
+cleanAll;<Request ID="4" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+cleanAll;<Request ID="5" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+cleanAll;<Request ID="6" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+cleanAll;<Request ID="7" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
+cleanAll;<Request ID="8" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+cleanAll;<Request ID="9" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
+cleanAll;<Request ID="10" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
+cleanAll;<Request ID="11" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
+cleanAll;<Request ID="12" Action="CREATE"><FB Name="FieldsToArrowheadService_1" Type="FieldsToArrowheadService" /></Request>
+cleanAll;<Request ID="13" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="FieldsToArrowheadService_1.serviceDefinition" /></Request>
+cleanAll;<Request ID="14" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1.interfaces" /></Request>
+cleanAll;<Request ID="15" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1.serviceMetadata" /></Request>
+cleanAll;<Request ID="16" Action="CREATE"><FB Name="FieldsToArrowheadSystem_1" Type="FieldsToArrowheadSystem" /></Request>
+cleanAll;<Request ID="17" Action="WRITE"><Connection Source="WSTRING#systemTestName2" Destination="FieldsToArrowheadSystem_1.systemName" /></Request>
+cleanAll;<Request ID="18" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem_1.address" /></Request>
+cleanAll;<Request ID="19" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem_1.port" /></Request>
+cleanAll;<Request ID="20" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+cleanAll;<Request ID="21" Action="WRITE"><Connection Source="WSTRIGN#allEnded" Destination="SUBL_0.ID" /></Request>
+cleanAll;<Request ID="22" Action="CREATE"><FB Name="STEST_END" Type="STEST_END" /></Request>
+cleanAll;<Request ID="23" Action="CREATE"><FB Name="SUBL_0_1" Type="SUBL_0" /></Request>
+cleanAll;<Request ID="24" Action="WRITE"><Connection Source="WSTRING#allLoaded" Destination="SUBL_0_1.ID" /></Request>
+cleanAll;<Request ID="25" Action="CREATE"><FB Name="RegisterService1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+cleanAll;<Request ID="26" Action="CREATE"><FB Name="RegisterService1.RegisterService" Type="RegisterService" /></Request>
+cleanAll;<Request ID="27" Action="CREATE"><FB Name="RegisterService1.E_SR" Type="E_SR" /></Request>
+cleanAll;<Request ID="28" Action="CREATE"><FB Name="RegisterService1.E_SWITCH" Type="E_SWITCH" /></Request>
+cleanAll;<Request ID="29" Action="CREATE"><FB Name="RegisterService1.E_REND" Type="E_REND" /></Request>
+cleanAll;<Request ID="30" Action="CREATE"><FB Name="RegisterService1.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+cleanAll;<Request ID="31" Action="CREATE"><FB Name="RegisterService2_1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+cleanAll;<Request ID="32" Action="CREATE"><FB Name="RegisterService2_1.RegisterService" Type="RegisterService" /></Request>
+cleanAll;<Request ID="33" Action="CREATE"><FB Name="RegisterService2_1.E_SR" Type="E_SR" /></Request>
+cleanAll;<Request ID="34" Action="CREATE"><FB Name="RegisterService2_1.E_SWITCH" Type="E_SWITCH" /></Request>
+cleanAll;<Request ID="35" Action="CREATE"><FB Name="RegisterService2_1.E_REND" Type="E_REND" /></Request>
+cleanAll;<Request ID="36" Action="CREATE"><FB Name="RegisterService2_1.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+cleanAll;<Request ID="37" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+cleanAll;<Request ID="38" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
+cleanAll;<Request ID="39" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
+cleanAll;<Request ID="40" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
+cleanAll;<Request ID="41" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
+cleanAll;<Request ID="42" Action="CREATE"><FB Name="RegisterService2.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
cleanAll;<Request ID="43" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService1.FieldsToServiceRegistryEntry.serviceURI" /></Request>
cleanAll;<Request ID="44" Action="WRITE"><Connection Source="1" Destination="RegisterService1.FieldsToServiceRegistryEntry.version" /></Request>
cleanAll;<Request ID="45" Action="WRITE"><Connection Source="false" Destination="RegisterService1.FieldsToServiceRegistryEntry.udp" /></Request>
-cleanAll;<Request ID="46" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService1.FieldsToServiceRegistryEntry.metadata" /></Request>
-cleanAll;<Request ID="47" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService1.RegisterService.endpoint" /></Request>
-cleanAll;<Request ID="48" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
-cleanAll;<Request ID="49" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
-cleanAll;<Request ID="50" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
-cleanAll;<Request ID="51" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
-cleanAll;<Request ID="52" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
-cleanAll;<Request ID="53" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.serviceURI" /></Request>
-cleanAll;<Request ID="54" Action="WRITE"><Connection Source="1" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.version" /></Request>
-cleanAll;<Request ID="55" Action="WRITE"><Connection Source="false" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.udp" /></Request>
-cleanAll;<Request ID="56" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.metadata" /></Request>
-cleanAll;<Request ID="57" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2_1.RegisterService.endpoint" /></Request>
+cleanAll;<Request ID="46" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService1.FieldsToServiceRegistryEntry.metadata" /></Request>
+cleanAll;<Request ID="47" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService1.RegisterService.endpoint" /></Request>
+cleanAll;<Request ID="48" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.serviceURI" /></Request>
+cleanAll;<Request ID="49" Action="WRITE"><Connection Source="1" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.version" /></Request>
+cleanAll;<Request ID="50" Action="WRITE"><Connection Source="false" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.udp" /></Request>
+cleanAll;<Request ID="51" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.metadata" /></Request>
+cleanAll;<Request ID="52" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService2_1.RegisterService.endpoint" /></Request>
+cleanAll;<Request ID="53" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
+cleanAll;<Request ID="54" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
+cleanAll;<Request ID="55" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
+cleanAll;<Request ID="56" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
+cleanAll;<Request ID="57" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
cleanAll;<Request ID="58" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="RegisterService2.E_SR.R" /></Request>
cleanAll;<Request ID="59" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
cleanAll;<Request ID="60" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="RegisterService2.E_REND.EI1" /></Request>
@@ -65,124 +65,124 @@
cleanAll;<Request ID="65" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_REND.R" /></Request>
cleanAll;<Request ID="66" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService1.RegisterService.serviceRegistryEntry" /></Request>
cleanAll;<Request ID="67" Action="CREATE"><Connection Source="RegisterService1.E_SR.Q" Destination="RegisterService1.E_SWITCH.G" /></Request>
-cleanAll;<Request ID="68" Action="CREATE"><Connection Source="RegisterService1.RegisterService.registerService" Destination="RegisterService1.RegisterServiceHTTP_1.registerService" /></Request>
-cleanAll;<Request ID="69" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="RegisterService2_1.E_SR.R" /></Request>
-cleanAll;<Request ID="70" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.REQ" /></Request>
-cleanAll;<Request ID="71" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="RegisterService2_1.E_REND.EI1" /></Request>
-cleanAll;<Request ID="72" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
-cleanAll;<Request ID="73" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
-cleanAll;<Request ID="74" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
-cleanAll;<Request ID="75" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
-cleanAll;<Request ID="76" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
-cleanAll;<Request ID="77" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
-cleanAll;<Request ID="78" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
-cleanAll;<Request ID="79" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
-cleanAll;<Request ID="80" Action="CREATE"><Connection Source="RegisterService2_1.RegisterService.doneUnregister" Destination="PUBL_0.INIT" /></Request>
-cleanAll;<Request ID="81" Action="CREATE"><Connection Source="RegisterService2_1.E_SWITCH.EO1" Destination="RegisterService2_1.RegisterService.register" /></Request>
-cleanAll;<Request ID="82" Action="CREATE"><Connection Source="RegisterService2_1.E_SWITCH.EO0" Destination="RegisterService2_1.RegisterService.unregister" /></Request>
-cleanAll;<Request ID="83" Action="CREATE"><Connection Source="RegisterService2_1.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2_1.E_REND.EI2" /></Request>
-cleanAll;<Request ID="84" Action="CREATE"><Connection Source="RegisterService2_1.E_REND.EO" Destination="RegisterService2_1.E_SWITCH.EI" /></Request>
-cleanAll;<Request ID="85" Action="CREATE"><Connection Source="RegisterService2_1.E_REND.EO" Destination="RegisterService2_1.E_REND.R" /></Request>
-cleanAll;<Request ID="86" Action="CREATE"><Connection Source="RegisterService2_1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2_1.RegisterService.serviceRegistryEntry" /></Request>
-cleanAll;<Request ID="87" Action="CREATE"><Connection Source="RegisterService2_1.E_SR.Q" Destination="RegisterService2_1.E_SWITCH.G" /></Request>
-cleanAll;<Request ID="88" Action="CREATE"><Connection Source="RegisterService2_1.RegisterService.registerService" Destination="RegisterService2_1.RegisterServiceHTTP_1.registerService" /></Request>
+cleanAll;<Request ID="68" Action="CREATE"><Connection Source="RegisterService1.RegisterService.registerService" Destination="RegisterService1.RegisterServiceOpcUa.registerService" /></Request>
+cleanAll;<Request ID="69" Action="CREATE"><Connection Source="RegisterService2_1.RegisterService.doneUnregister" Destination="PUBL_0.INIT" /></Request>
+cleanAll;<Request ID="70" Action="CREATE"><Connection Source="RegisterService2_1.E_SWITCH.EO1" Destination="RegisterService2_1.RegisterService.register" /></Request>
+cleanAll;<Request ID="71" Action="CREATE"><Connection Source="RegisterService2_1.E_SWITCH.EO0" Destination="RegisterService2_1.RegisterService.unregister" /></Request>
+cleanAll;<Request ID="72" Action="CREATE"><Connection Source="RegisterService2_1.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2_1.E_REND.EI2" /></Request>
+cleanAll;<Request ID="73" Action="CREATE"><Connection Source="RegisterService2_1.E_REND.EO" Destination="RegisterService2_1.E_SWITCH.EI" /></Request>
+cleanAll;<Request ID="74" Action="CREATE"><Connection Source="RegisterService2_1.E_REND.EO" Destination="RegisterService2_1.E_REND.R" /></Request>
+cleanAll;<Request ID="75" Action="CREATE"><Connection Source="RegisterService2_1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2_1.RegisterService.serviceRegistryEntry" /></Request>
+cleanAll;<Request ID="76" Action="CREATE"><Connection Source="RegisterService2_1.E_SR.Q" Destination="RegisterService2_1.E_SWITCH.G" /></Request>
+cleanAll;<Request ID="77" Action="CREATE"><Connection Source="RegisterService2_1.RegisterService.registerService" Destination="RegisterService2_1.RegisterServiceOpcUa.registerService" /></Request>
+cleanAll;<Request ID="78" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="RegisterService2_1.E_SR.R" /></Request>
+cleanAll;<Request ID="79" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.REQ" /></Request>
+cleanAll;<Request ID="80" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="RegisterService2_1.E_REND.EI1" /></Request>
+cleanAll;<Request ID="81" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
+cleanAll;<Request ID="82" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
+cleanAll;<Request ID="83" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
+cleanAll;<Request ID="84" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
+cleanAll;<Request ID="85" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
+cleanAll;<Request ID="86" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
+cleanAll;<Request ID="87" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
+cleanAll;<Request ID="88" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceOpcUa.registerService" /></Request>
cleanAll;<Request ID="89" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToArrowheadService.REQ" /></Request>
cleanAll;<Request ID="90" Action="CREATE"><Connection Source="FieldsToArrowheadService.CNF" Destination="FieldsToArrowheadService_1.REQ" /></Request>
-cleanAll;<Request ID="91" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="RegisterService1.E_SR.R" /></Request>
-cleanAll;<Request ID="92" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="RegisterService1.FieldsToServiceRegistryEntry.REQ" /></Request>
-cleanAll;<Request ID="93" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="RegisterService1.E_REND.EI1" /></Request>
-cleanAll;<Request ID="94" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.CNF" Destination="FieldsToArrowheadSystem_1.REQ" /></Request>
-cleanAll;<Request ID="95" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-cleanAll;<Request ID="96" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="SUBL_0.INIT" /></Request>
-cleanAll;<Request ID="97" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="STEST_END.REQ" /></Request>
-cleanAll;<Request ID="98" Action="CREATE"><Connection Source="SUBL_0_1.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-cleanAll;<Request ID="99" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0_1.INIT" /></Request>
-cleanAll;<Request ID="100" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0_1.INIT" /></Request>
-cleanAll;<Request ID="101" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
-cleanAll;<Request ID="102" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
-cleanAll;<Request ID="103" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="RegisterService1.FieldsToServiceRegistryEntry.providedService" /></Request>
-cleanAll;<Request ID="104" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
-cleanAll;<Request ID="105" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.providedService" /></Request>
-cleanAll;<Request ID="106" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.arrowheadSystem" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.provider" /></Request>
+cleanAll;<Request ID="91" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.CNF" Destination="FieldsToArrowheadSystem_1.REQ" /></Request>
+cleanAll;<Request ID="92" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="SUBL_0.INIT" /></Request>
+cleanAll;<Request ID="93" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
+cleanAll;<Request ID="94" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="STEST_END.REQ" /></Request>
+cleanAll;<Request ID="95" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0_1.INIT" /></Request>
+cleanAll;<Request ID="96" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0_1.INIT" /></Request>
+cleanAll;<Request ID="97" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="RegisterService1.E_SR.R" /></Request>
+cleanAll;<Request ID="98" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="RegisterService1.FieldsToServiceRegistryEntry.REQ" /></Request>
+cleanAll;<Request ID="99" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="RegisterService1.E_REND.EI1" /></Request>
+cleanAll;<Request ID="100" Action="CREATE"><Connection Source="SUBL_0_1.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+cleanAll;<Request ID="101" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="RegisterService1.FieldsToServiceRegistryEntry.providedService" /></Request>
+cleanAll;<Request ID="102" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
+cleanAll;<Request ID="103" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.providedService" /></Request>
+cleanAll;<Request ID="104" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.arrowheadSystem" Destination="RegisterService2_1.FieldsToServiceRegistryEntry.provider" /></Request>
+cleanAll;<Request ID="105" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
+cleanAll;<Request ID="106" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
cleanAll;<Request ID="107" Action="START"/>
;<Request ID="108" Action="CREATE"><FB Name="RegisterUnregister" Type="EMB_RES" /></Request>
-RegisterUnregister;<Request ID="109" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-RegisterUnregister;<Request ID="110" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
-RegisterUnregister;<Request ID="111" Action="CREATE"><FB Name="ServiceNotRegisteredPos1" Type="TEST_CONDITION" /></Request>
-RegisterUnregister;<Request ID="112" Action="CREATE"><FB Name="FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-RegisterUnregister;<Request ID="113" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceQueryForm.version" /></Request>
-RegisterUnregister;<Request ID="114" Action="CREATE"><FB Name="QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-RegisterUnregister;<Request ID="115" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-RegisterUnregister;<Request ID="116" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
-RegisterUnregister;<Request ID="117" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
-RegisterUnregister;<Request ID="118" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
-RegisterUnregister;<Request ID="119" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
-RegisterUnregister;<Request ID="120" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
-RegisterUnregister;<Request ID="121" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
-RegisterUnregister;<Request ID="122" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
-RegisterUnregister;<Request ID="123" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-RegisterUnregister;<Request ID="124" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
-RegisterUnregister;<Request ID="125" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
-RegisterUnregister;<Request ID="126" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
-RegisterUnregister;<Request ID="127" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-RegisterUnregister;<Request ID="128" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
-RegisterUnregister;<Request ID="129" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-RegisterUnregister;<Request ID="130" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-RegisterUnregister;<Request ID="131" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
-RegisterUnregister;<Request ID="132" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-RegisterUnregister;<Request ID="133" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-RegisterUnregister;<Request ID="134" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
-RegisterUnregister;<Request ID="135" Action="CREATE"><FB Name="QueryService" Type="QueryService" /></Request>
-RegisterUnregister;<Request ID="136" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryService.address" /></Request>
-RegisterUnregister;<Request ID="137" Action="CREATE"><FB Name="Registered" Type="E_SR" /></Request>
-RegisterUnregister;<Request ID="138" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterUnregister;<Request ID="139" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
-RegisterUnregister;<Request ID="140" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_1.IN1" /></Request>
-RegisterUnregister;<Request ID="141" Action="CREATE"><FB Name="ServiceRegisteredPos0" Type="TEST_CONDITION" /></Request>
-RegisterUnregister;<Request ID="142" Action="CREATE"><FB Name="Sequencer.E_DEMUX" Type="E_DEMUX" /></Request>
-RegisterUnregister;<Request ID="143" Action="CREATE"><FB Name="Sequencer.E_CTU" Type="E_CTU" /></Request>
-RegisterUnregister;<Request ID="144" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1" Type="E_DEMUX" /></Request>
-RegisterUnregister;<Request ID="145" Action="CREATE"><FB Name="Sequencer.E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterUnregister;<Request ID="146" Action="CREATE"><FB Name="Sequencer.F_GT" Type="F_GT" /></Request>
-RegisterUnregister;<Request ID="147" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer.F_GT.IN2" /></Request>
-RegisterUnregister;<Request ID="148" Action="CREATE"><FB Name="Sequencer.E_MERGE" Type="E_MERGE" /></Request>
-RegisterUnregister;<Request ID="149" Action="CREATE"><FB Name="Sequencer.F_SUB" Type="F_SUB" /></Request>
-RegisterUnregister;<Request ID="150" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer.F_SUB.IN2" /></Request>
-RegisterUnregister;<Request ID="151" Action="CREATE"><FB Name="RegisterServiceHTTP" Type="RegisterServiceHTTP" /></Request>
-RegisterUnregister;<Request ID="152" Action="CREATE"><FB Name="RegisterService" Type="RegisterService" /></Request>
-RegisterUnregister;<Request ID="153" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService.endpoint" /></Request>
+RegisterUnregister;<Request ID="109" Action="CREATE"><FB Name="QueryService" Type="QueryService" /></Request>
+RegisterUnregister;<Request ID="110" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryService.address" /></Request>
+RegisterUnregister;<Request ID="111" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+RegisterUnregister;<Request ID="112" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
+RegisterUnregister;<Request ID="113" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+RegisterUnregister;<Request ID="114" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
+RegisterUnregister;<Request ID="115" Action="CREATE"><FB Name="ServiceNotRegisteredPos1" Type="TEST_CONDITION" /></Request>
+RegisterUnregister;<Request ID="116" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
+RegisterUnregister;<Request ID="117" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
+RegisterUnregister;<Request ID="118" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+RegisterUnregister;<Request ID="119" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
+RegisterUnregister;<Request ID="120" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
+RegisterUnregister;<Request ID="121" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
+RegisterUnregister;<Request ID="122" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+RegisterUnregister;<Request ID="123" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
+RegisterUnregister;<Request ID="124" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+RegisterUnregister;<Request ID="125" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+RegisterUnregister;<Request ID="126" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
+RegisterUnregister;<Request ID="127" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+RegisterUnregister;<Request ID="128" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+RegisterUnregister;<Request ID="129" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
+RegisterUnregister;<Request ID="130" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+RegisterUnregister;<Request ID="131" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
+RegisterUnregister;<Request ID="132" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
+RegisterUnregister;<Request ID="133" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
+RegisterUnregister;<Request ID="134" Action="CREATE"><FB Name="FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+RegisterUnregister;<Request ID="135" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceQueryForm.version" /></Request>
+RegisterUnregister;<Request ID="136" Action="CREATE"><FB Name="Registered" Type="E_SR" /></Request>
+RegisterUnregister;<Request ID="137" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterUnregister;<Request ID="138" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+RegisterUnregister;<Request ID="139" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_1.IN1" /></Request>
+RegisterUnregister;<Request ID="140" Action="CREATE"><FB Name="ServiceRegisteredPos0" Type="TEST_CONDITION" /></Request>
+RegisterUnregister;<Request ID="141" Action="CREATE"><FB Name="Sequencer.E_DEMUX" Type="E_DEMUX" /></Request>
+RegisterUnregister;<Request ID="142" Action="CREATE"><FB Name="Sequencer.E_CTU" Type="E_CTU" /></Request>
+RegisterUnregister;<Request ID="143" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1" Type="E_DEMUX" /></Request>
+RegisterUnregister;<Request ID="144" Action="CREATE"><FB Name="Sequencer.E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterUnregister;<Request ID="145" Action="CREATE"><FB Name="Sequencer.F_GT" Type="F_GT" /></Request>
+RegisterUnregister;<Request ID="146" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer.F_GT.IN2" /></Request>
+RegisterUnregister;<Request ID="147" Action="CREATE"><FB Name="Sequencer.E_MERGE" Type="E_MERGE" /></Request>
+RegisterUnregister;<Request ID="148" Action="CREATE"><FB Name="Sequencer.F_SUB" Type="F_SUB" /></Request>
+RegisterUnregister;<Request ID="149" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer.F_SUB.IN2" /></Request>
+RegisterUnregister;<Request ID="150" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+RegisterUnregister;<Request ID="151" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+RegisterUnregister;<Request ID="152" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+RegisterUnregister;<Request ID="153" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
RegisterUnregister;<Request ID="154" Action="CREATE"><FB Name="FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
RegisterUnregister;<Request ID="155" Action="WRITE"><Connection Source="/serviceTest/start" Destination="FieldsToServiceRegistryEntry.serviceURI" /></Request>
RegisterUnregister;<Request ID="156" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceRegistryEntry.version" /></Request>
RegisterUnregister;<Request ID="157" Action="WRITE"><Connection Source="false" Destination="FieldsToServiceRegistryEntry.udp" /></Request>
-RegisterUnregister;<Request ID="158" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="FieldsToServiceRegistryEntry.metadata" /></Request>
-RegisterUnregister;<Request ID="159" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-RegisterUnregister;<Request ID="160" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
-RegisterUnregister;<Request ID="161" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-RegisterUnregister;<Request ID="162" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
-RegisterUnregister;<Request ID="163" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-RegisterUnregister;<Request ID="164" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-RegisterUnregister;<Request ID="165" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-RegisterUnregister;<Request ID="166" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
-RegisterUnregister;<Request ID="167" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
-RegisterUnregister;<Request ID="168" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
-RegisterUnregister;<Request ID="169" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-RegisterUnregister;<Request ID="170" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
-RegisterUnregister;<Request ID="171" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-RegisterUnregister;<Request ID="172" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-RegisterUnregister;<Request ID="173" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
-RegisterUnregister;<Request ID="174" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-RegisterUnregister;<Request ID="175" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-RegisterUnregister;<Request ID="176" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-RegisterUnregister;<Request ID="177" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
-RegisterUnregister;<Request ID="178" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
-RegisterUnregister;<Request ID="179" Action="CREATE"><FB Name="ServiceNotRegisteredPos0" Type="TEST_CONDITION" /></Request>
-RegisterUnregister;<Request ID="180" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
-RegisterUnregister;<Request ID="181" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
-RegisterUnregister;<Request ID="182" Action="CREATE"><FB Name="PUBLISH_0" Type="PUBL_0" /></Request>
-RegisterUnregister;<Request ID="183" Action="WRITE"><Connection Source="WSTRIGN#RegisterUnregisterTestReady" Destination="PUBLISH_0.ID" /></Request>
-RegisterUnregister;<Request ID="184" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
-RegisterUnregister;<Request ID="185" Action="WRITE"><Connection Source="WSTRIGN#allCleaned" Destination="SUBL_0.ID" /></Request>
+RegisterUnregister;<Request ID="158" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="FieldsToServiceRegistryEntry.metadata" /></Request>
+RegisterUnregister;<Request ID="159" Action="CREATE"><FB Name="RegisterService" Type="RegisterService" /></Request>
+RegisterUnregister;<Request ID="160" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService.endpoint" /></Request>
+RegisterUnregister;<Request ID="161" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+RegisterUnregister;<Request ID="162" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+RegisterUnregister;<Request ID="163" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+RegisterUnregister;<Request ID="164" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
+RegisterUnregister;<Request ID="165" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
+RegisterUnregister;<Request ID="166" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
+RegisterUnregister;<Request ID="167" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+RegisterUnregister;<Request ID="168" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
+RegisterUnregister;<Request ID="169" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+RegisterUnregister;<Request ID="170" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+RegisterUnregister;<Request ID="171" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
+RegisterUnregister;<Request ID="172" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+RegisterUnregister;<Request ID="173" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+RegisterUnregister;<Request ID="174" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+RegisterUnregister;<Request ID="175" Action="CREATE"><FB Name="ServiceNotRegisteredPos0" Type="TEST_CONDITION" /></Request>
+RegisterUnregister;<Request ID="176" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
+RegisterUnregister;<Request ID="177" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
+RegisterUnregister;<Request ID="178" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
+RegisterUnregister;<Request ID="179" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
+RegisterUnregister;<Request ID="180" Action="CREATE"><FB Name="PUBLISH_0" Type="PUBL_0" /></Request>
+RegisterUnregister;<Request ID="181" Action="WRITE"><Connection Source="WSTRIGN#RegisterUnregisterTestReady" Destination="PUBLISH_0.ID" /></Request>
+RegisterUnregister;<Request ID="182" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+RegisterUnregister;<Request ID="183" Action="WRITE"><Connection Source="WSTRIGN#allCleaned" Destination="SUBL_0.ID" /></Request>
+RegisterUnregister;<Request ID="184" Action="CREATE"><FB Name="RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+RegisterUnregister;<Request ID="185" Action="CREATE"><FB Name="QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
RegisterUnregister;<Request ID="186" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
RegisterUnregister;<Request ID="187" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
RegisterUnregister;<Request ID="188" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
@@ -211,7 +211,7 @@
RegisterUnregister;<Request ID="211" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO2" Destination="QueryService.query" /></Request>
RegisterUnregister;<Request ID="212" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO3" Destination="RegisterService.unregister" /></Request>
RegisterUnregister;<Request ID="213" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO0" Destination="QueryService.query" /></Request>
-RegisterUnregister;<Request ID="214" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO1" Destination="PUBLISH_0.INIT" /></Request>
+RegisterUnregister;<Request ID="214" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO1" Destination="PUBLISH_0.REQ" /></Request>
RegisterUnregister;<Request ID="215" Action="CREATE"><Connection Source="Sequencer.F_GT.CNF" Destination="Sequencer.E_SWITCH.EI" /></Request>
RegisterUnregister;<Request ID="216" Action="CREATE"><Connection Source="Sequencer.E_SWITCH.EO0" Destination="Sequencer.E_DEMUX.EI" /></Request>
RegisterUnregister;<Request ID="217" Action="CREATE"><Connection Source="Sequencer.E_MERGE.EO" Destination="Sequencer.E_CTU.CU" /></Request>
@@ -252,123 +252,123 @@
RegisterUnregister;<Request ID="252" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_1" /></Request>
RegisterUnregister;<Request ID="253" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.IN" /></Request>
RegisterUnregister;<Request ID="254" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_2" /></Request>
-RegisterUnregister;<Request ID="255" Action="CREATE"><Connection Source="FieldsToArrowheadService.CNF" Destination="FieldsToServiceQueryForm.REQ" /></Request>
+RegisterUnregister;<Request ID="255" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
RegisterUnregister;<Request ID="256" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="ServiceNotRegisteredPos1.REQ" /></Request>
RegisterUnregister;<Request ID="257" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterUnregister;<Request ID="258" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
+RegisterUnregister;<Request ID="258" Action="CREATE"><Connection Source="FieldsToArrowheadService.CNF" Destination="FieldsToServiceQueryForm.REQ" /></Request>
RegisterUnregister;<Request ID="259" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_1.REQ" /></Request>
RegisterUnregister;<Request ID="260" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="ServiceRegisteredPos0.REQ" /></Request>
RegisterUnregister;<Request ID="261" Action="CREATE"><Connection Source="ServiceRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="262" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="263" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Registered.R" /></Request>
-RegisterUnregister;<Request ID="264" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="265" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Registered.S" /></Request>
-RegisterUnregister;<Request ID="266" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToServiceRegistryEntry.REQ" /></Request>
-RegisterUnregister;<Request ID="267" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="ServiceNotRegisteredPos0.REQ" /></Request>
-RegisterUnregister;<Request ID="268" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterUnregister;<Request ID="269" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
-RegisterUnregister;<Request ID="270" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
-RegisterUnregister;<Request ID="271" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="272" Action="CREATE"><Connection Source="PUBLISH_0.INITO" Destination="PUBLISH_0.REQ" /></Request>
-RegisterUnregister;<Request ID="273" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-RegisterUnregister;<Request ID="274" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterUnregister;<Request ID="275" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
+RegisterUnregister;<Request ID="262" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+RegisterUnregister;<Request ID="263" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToServiceRegistryEntry.REQ" /></Request>
+RegisterUnregister;<Request ID="264" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterUnregister;<Request ID="265" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterUnregister;<Request ID="266" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Registered.S" /></Request>
+RegisterUnregister;<Request ID="267" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterUnregister;<Request ID="268" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Registered.R" /></Request>
+RegisterUnregister;<Request ID="269" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterUnregister;<Request ID="270" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
+RegisterUnregister;<Request ID="271" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+RegisterUnregister;<Request ID="272" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
+RegisterUnregister;<Request ID="273" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="ServiceNotRegisteredPos0.REQ" /></Request>
+RegisterUnregister;<Request ID="274" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
+RegisterUnregister;<Request ID="275" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
RegisterUnregister;<Request ID="276" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-RegisterUnregister;<Request ID="277" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-RegisterUnregister;<Request ID="278" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="FieldsToServiceQueryForm.service" /></Request>
+RegisterUnregister;<Request ID="277" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBLISH_0.INIT" /></Request>
+RegisterUnregister;<Request ID="278" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
RegisterUnregister;<Request ID="279" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="ServiceNotRegisteredPos1.check" /></Request>
RegisterUnregister;<Request ID="280" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-RegisterUnregister;<Request ID="281" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryService.serviceQueryForm" /></Request>
-RegisterUnregister;<Request ID="282" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
+RegisterUnregister;<Request ID="281" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="FieldsToServiceQueryForm.service" /></Request>
+RegisterUnregister;<Request ID="282" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryService.serviceQueryForm" /></Request>
RegisterUnregister;<Request ID="283" Action="CREATE"><Connection Source="Registered.Q" Destination="E_SWITCH.G" /></Request>
RegisterUnregister;<Request ID="284" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="ServiceRegisteredPos0.check" /></Request>
-RegisterUnregister;<Request ID="285" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService.serviceRegistryEntry" /></Request>
-RegisterUnregister;<Request ID="286" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="FieldsToServiceRegistryEntry.providedService" /></Request>
-RegisterUnregister;<Request ID="287" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToServiceRegistryEntry.provider" /></Request>
-RegisterUnregister;<Request ID="288" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="ServiceNotRegisteredPos0.check" /></Request>
+RegisterUnregister;<Request ID="285" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="FieldsToServiceRegistryEntry.providedService" /></Request>
+RegisterUnregister;<Request ID="286" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToServiceRegistryEntry.provider" /></Request>
+RegisterUnregister;<Request ID="287" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService.serviceRegistryEntry" /></Request>
+RegisterUnregister;<Request ID="288" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
RegisterUnregister;<Request ID="289" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-RegisterUnregister;<Request ID="290" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
-RegisterUnregister;<Request ID="291" Action="CREATE"><Connection Source="QueryService.queryServices" Destination="QueryServiceHTTP.queryServices" /></Request>
-RegisterUnregister;<Request ID="292" Action="CREATE"><Connection Source="RegisterService.registerService" Destination="RegisterServiceHTTP.registerService" /></Request>
+RegisterUnregister;<Request ID="290" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="ServiceNotRegisteredPos0.check" /></Request>
+RegisterUnregister;<Request ID="291" Action="CREATE"><Connection Source="RegisterService.registerService" Destination="RegisterServiceOpcUa.registerService" /></Request>
+RegisterUnregister;<Request ID="292" Action="CREATE"><Connection Source="QueryService.queryServices" Destination="QueryServiceOpcUa.queryServices" /></Request>
RegisterUnregister;<Request ID="293" Action="START"/>
;<Request ID="294" Action="CREATE"><FB Name="DoubleRegister" Type="EMB_RES" /></Request>
DoubleRegister;<Request ID="295" Action="CREATE"><FB Name="QueryService" Type="QueryService" /></Request>
-DoubleRegister;<Request ID="296" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryService.address" /></Request>
-DoubleRegister;<Request ID="297" Action="CREATE"><FB Name="QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-DoubleRegister;<Request ID="298" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-DoubleRegister;<Request ID="299" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
-DoubleRegister;<Request ID="300" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
-DoubleRegister;<Request ID="301" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
-DoubleRegister;<Request ID="302" Action="CREATE"><FB Name="ServiceNotRegisteredPos1" Type="TEST_CONDITION" /></Request>
-DoubleRegister;<Request ID="303" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
-DoubleRegister;<Request ID="304" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
-DoubleRegister;<Request ID="305" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="306" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
-DoubleRegister;<Request ID="307" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
-DoubleRegister;<Request ID="308" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
-DoubleRegister;<Request ID="309" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="310" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
-DoubleRegister;<Request ID="311" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-DoubleRegister;<Request ID="312" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="313" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
-DoubleRegister;<Request ID="314" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-DoubleRegister;<Request ID="315" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-DoubleRegister;<Request ID="316" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
-DoubleRegister;<Request ID="317" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-DoubleRegister;<Request ID="318" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
-DoubleRegister;<Request ID="319" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
-DoubleRegister;<Request ID="320" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
-DoubleRegister;<Request ID="321" Action="CREATE"><FB Name="FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-DoubleRegister;<Request ID="322" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceQueryForm.version" /></Request>
-DoubleRegister;<Request ID="323" Action="CREATE"><FB Name="Registered" Type="E_SR" /></Request>
-DoubleRegister;<Request ID="324" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
-DoubleRegister;<Request ID="325" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
-DoubleRegister;<Request ID="326" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_1.IN1" /></Request>
-DoubleRegister;<Request ID="327" Action="CREATE"><FB Name="ServiceRegisteredPos0" Type="TEST_CONDITION" /></Request>
-DoubleRegister;<Request ID="328" Action="CREATE"><FB Name="Sequencer.E_DEMUX" Type="E_DEMUX" /></Request>
-DoubleRegister;<Request ID="329" Action="CREATE"><FB Name="Sequencer.E_CTU" Type="E_CTU" /></Request>
-DoubleRegister;<Request ID="330" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1" Type="E_DEMUX" /></Request>
-DoubleRegister;<Request ID="331" Action="CREATE"><FB Name="Sequencer.E_SWITCH" Type="E_SWITCH" /></Request>
-DoubleRegister;<Request ID="332" Action="CREATE"><FB Name="Sequencer.F_GT" Type="F_GT" /></Request>
-DoubleRegister;<Request ID="333" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer.F_GT.IN2" /></Request>
-DoubleRegister;<Request ID="334" Action="CREATE"><FB Name="Sequencer.F_SUB" Type="F_SUB" /></Request>
-DoubleRegister;<Request ID="335" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer.F_SUB.IN2" /></Request>
-DoubleRegister;<Request ID="336" Action="CREATE"><FB Name="Sequencer.E_MERGE_1" Type="E_MERGE" /></Request>
-DoubleRegister;<Request ID="337" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-DoubleRegister;<Request ID="338" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
-DoubleRegister;<Request ID="339" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-DoubleRegister;<Request ID="340" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
-DoubleRegister;<Request ID="341" Action="CREATE"><FB Name="FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-DoubleRegister;<Request ID="342" Action="WRITE"><Connection Source="/serviceTest/start" Destination="FieldsToServiceRegistryEntry.serviceURI" /></Request>
-DoubleRegister;<Request ID="343" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceRegistryEntry.version" /></Request>
-DoubleRegister;<Request ID="344" Action="WRITE"><Connection Source="false" Destination="FieldsToServiceRegistryEntry.udp" /></Request>
-DoubleRegister;<Request ID="345" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="FieldsToServiceRegistryEntry.metadata" /></Request>
-DoubleRegister;<Request ID="346" Action="CREATE"><FB Name="RegisterService" Type="RegisterService" /></Request>
-DoubleRegister;<Request ID="347" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService.endpoint" /></Request>
-DoubleRegister;<Request ID="348" Action="CREATE"><FB Name="RegisterServiceHTTP" Type="RegisterServiceHTTP" /></Request>
-DoubleRegister;<Request ID="349" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-DoubleRegister;<Request ID="350" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-DoubleRegister;<Request ID="351" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="352" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
-DoubleRegister;<Request ID="353" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
-DoubleRegister;<Request ID="354" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
-DoubleRegister;<Request ID="355" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="356" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
-DoubleRegister;<Request ID="357" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-DoubleRegister;<Request ID="358" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-DoubleRegister;<Request ID="359" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
-DoubleRegister;<Request ID="360" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-DoubleRegister;<Request ID="361" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-DoubleRegister;<Request ID="362" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-DoubleRegister;<Request ID="363" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
-DoubleRegister;<Request ID="364" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
-DoubleRegister;<Request ID="365" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
-DoubleRegister;<Request ID="366" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
-DoubleRegister;<Request ID="367" Action="CREATE"><FB Name="ServiceNotRegisteredPos0" Type="TEST_CONDITION" /></Request>
-DoubleRegister;<Request ID="368" Action="CREATE"><FB Name="SUBSCRIBE_0" Type="SUBL_0" /></Request>
-DoubleRegister;<Request ID="369" Action="WRITE"><Connection Source="WSTRIGN#RegisterUnregisterTestReady" Destination="SUBSCRIBE_0.ID" /></Request>
-DoubleRegister;<Request ID="370" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-DoubleRegister;<Request ID="371" Action="WRITE"><Connection Source="WSTRIGN#DoubleRegisterReady" Destination="PUBL_0.ID" /></Request>
+DoubleRegister;<Request ID="296" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryService.address" /></Request>
+DoubleRegister;<Request ID="297" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+DoubleRegister;<Request ID="298" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
+DoubleRegister;<Request ID="299" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+DoubleRegister;<Request ID="300" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
+DoubleRegister;<Request ID="301" Action="CREATE"><FB Name="ServiceNotRegisteredPos1" Type="TEST_CONDITION" /></Request>
+DoubleRegister;<Request ID="302" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
+DoubleRegister;<Request ID="303" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
+DoubleRegister;<Request ID="304" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="305" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
+DoubleRegister;<Request ID="306" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
+DoubleRegister;<Request ID="307" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
+DoubleRegister;<Request ID="308" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="309" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
+DoubleRegister;<Request ID="310" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+DoubleRegister;<Request ID="311" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="312" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
+DoubleRegister;<Request ID="313" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+DoubleRegister;<Request ID="314" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+DoubleRegister;<Request ID="315" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
+DoubleRegister;<Request ID="316" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+DoubleRegister;<Request ID="317" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
+DoubleRegister;<Request ID="318" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
+DoubleRegister;<Request ID="319" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
+DoubleRegister;<Request ID="320" Action="CREATE"><FB Name="FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+DoubleRegister;<Request ID="321" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceQueryForm.version" /></Request>
+DoubleRegister;<Request ID="322" Action="CREATE"><FB Name="Registered" Type="E_SR" /></Request>
+DoubleRegister;<Request ID="323" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
+DoubleRegister;<Request ID="324" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+DoubleRegister;<Request ID="325" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_1.IN1" /></Request>
+DoubleRegister;<Request ID="326" Action="CREATE"><FB Name="ServiceRegisteredPos0" Type="TEST_CONDITION" /></Request>
+DoubleRegister;<Request ID="327" Action="CREATE"><FB Name="Sequencer.E_DEMUX" Type="E_DEMUX" /></Request>
+DoubleRegister;<Request ID="328" Action="CREATE"><FB Name="Sequencer.E_CTU" Type="E_CTU" /></Request>
+DoubleRegister;<Request ID="329" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1" Type="E_DEMUX" /></Request>
+DoubleRegister;<Request ID="330" Action="CREATE"><FB Name="Sequencer.E_SWITCH" Type="E_SWITCH" /></Request>
+DoubleRegister;<Request ID="331" Action="CREATE"><FB Name="Sequencer.F_GT" Type="F_GT" /></Request>
+DoubleRegister;<Request ID="332" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer.F_GT.IN2" /></Request>
+DoubleRegister;<Request ID="333" Action="CREATE"><FB Name="Sequencer.F_SUB" Type="F_SUB" /></Request>
+DoubleRegister;<Request ID="334" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer.F_SUB.IN2" /></Request>
+DoubleRegister;<Request ID="335" Action="CREATE"><FB Name="Sequencer.E_MERGE_1" Type="E_MERGE" /></Request>
+DoubleRegister;<Request ID="336" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+DoubleRegister;<Request ID="337" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+DoubleRegister;<Request ID="338" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+DoubleRegister;<Request ID="339" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
+DoubleRegister;<Request ID="340" Action="CREATE"><FB Name="FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+DoubleRegister;<Request ID="341" Action="WRITE"><Connection Source="/serviceTest/start" Destination="FieldsToServiceRegistryEntry.serviceURI" /></Request>
+DoubleRegister;<Request ID="342" Action="WRITE"><Connection Source="1" Destination="FieldsToServiceRegistryEntry.version" /></Request>
+DoubleRegister;<Request ID="343" Action="WRITE"><Connection Source="false" Destination="FieldsToServiceRegistryEntry.udp" /></Request>
+DoubleRegister;<Request ID="344" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="FieldsToServiceRegistryEntry.metadata" /></Request>
+DoubleRegister;<Request ID="345" Action="CREATE"><FB Name="RegisterService" Type="RegisterService" /></Request>
+DoubleRegister;<Request ID="346" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService.endpoint" /></Request>
+DoubleRegister;<Request ID="347" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+DoubleRegister;<Request ID="348" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+DoubleRegister;<Request ID="349" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="350" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
+DoubleRegister;<Request ID="351" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
+DoubleRegister;<Request ID="352" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
+DoubleRegister;<Request ID="353" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="354" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
+DoubleRegister;<Request ID="355" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+DoubleRegister;<Request ID="356" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+DoubleRegister;<Request ID="357" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
+DoubleRegister;<Request ID="358" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+DoubleRegister;<Request ID="359" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+DoubleRegister;<Request ID="360" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+DoubleRegister;<Request ID="361" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
+DoubleRegister;<Request ID="362" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
+DoubleRegister;<Request ID="363" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
+DoubleRegister;<Request ID="364" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
+DoubleRegister;<Request ID="365" Action="CREATE"><FB Name="ServiceNotRegisteredPos0" Type="TEST_CONDITION" /></Request>
+DoubleRegister;<Request ID="366" Action="CREATE"><FB Name="SUBSCRIBE_0" Type="SUBL_0" /></Request>
+DoubleRegister;<Request ID="367" Action="WRITE"><Connection Source="WSTRIGN#RegisterUnregisterTestReady" Destination="SUBSCRIBE_0.ID" /></Request>
+DoubleRegister;<Request ID="368" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+DoubleRegister;<Request ID="369" Action="WRITE"><Connection Source="WSTRIGN#DoubleRegisterReady" Destination="PUBL_0.ID" /></Request>
+DoubleRegister;<Request ID="370" Action="CREATE"><FB Name="RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+DoubleRegister;<Request ID="371" Action="CREATE"><FB Name="QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
DoubleRegister;<Request ID="372" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
DoubleRegister;<Request ID="373" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
DoubleRegister;<Request ID="374" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
@@ -445,22 +445,22 @@
DoubleRegister;<Request ID="445" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_1.REQ" /></Request>
DoubleRegister;<Request ID="446" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="ServiceRegisteredPos0.REQ" /></Request>
DoubleRegister;<Request ID="447" Action="CREATE"><Connection Source="ServiceRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="448" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToServiceRegistryEntry.REQ" /></Request>
-DoubleRegister;<Request ID="449" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Registered.S" /></Request>
-DoubleRegister;<Request ID="450" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Registered.R" /></Request>
-DoubleRegister;<Request ID="451" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
-DoubleRegister;<Request ID="452" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-DoubleRegister;<Request ID="453" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
-DoubleRegister;<Request ID="454" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="ServiceNotRegisteredPos0.REQ" /></Request>
-DoubleRegister;<Request ID="455" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="456" Action="CREATE"><Connection Source="START.COLD" Destination="SUBSCRIBE_0.INIT" /></Request>
-DoubleRegister;<Request ID="457" Action="CREATE"><Connection Source="START.WARM" Destination="SUBSCRIBE_0.INIT" /></Request>
-DoubleRegister;<Request ID="458" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="459" Action="CREATE"><Connection Source="SUBSCRIBE_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
-DoubleRegister;<Request ID="460" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-DoubleRegister;<Request ID="461" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="462" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Sequencer.F_GT.REQ" /></Request>
-DoubleRegister;<Request ID="463" Action="CREATE"><Connection Source="SUBSCRIBE_0.INITO" Destination="PUBL_0.INIT" /></Request>
+DoubleRegister;<Request ID="448" Action="CREATE"><Connection Source="FieldsToServiceQueryForm.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+DoubleRegister;<Request ID="449" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToServiceRegistryEntry.REQ" /></Request>
+DoubleRegister;<Request ID="450" Action="CREATE"><Connection Source="FieldsToServiceRegistryEntry.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="451" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Registered.S" /></Request>
+DoubleRegister;<Request ID="452" Action="CREATE"><Connection Source="RegisterService.doneRegister" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="453" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Registered.R" /></Request>
+DoubleRegister;<Request ID="454" Action="CREATE"><Connection Source="RegisterService.doneUnregister" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="455" Action="CREATE"><Connection Source="QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
+DoubleRegister;<Request ID="456" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+DoubleRegister;<Request ID="457" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_2.REQ" /></Request>
+DoubleRegister;<Request ID="458" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="ServiceNotRegisteredPos0.REQ" /></Request>
+DoubleRegister;<Request ID="459" Action="CREATE"><Connection Source="ServiceNotRegisteredPos0.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+DoubleRegister;<Request ID="460" Action="CREATE"><Connection Source="SUBSCRIBE_0.IND" Destination="FieldsToArrowheadService.REQ" /></Request>
+DoubleRegister;<Request ID="461" Action="CREATE"><Connection Source="SUBSCRIBE_0.INITO" Destination="PUBL_0.INIT" /></Request>
+DoubleRegister;<Request ID="462" Action="CREATE"><Connection Source="START.COLD" Destination="SUBSCRIBE_0.INIT" /></Request>
+DoubleRegister;<Request ID="463" Action="CREATE"><Connection Source="START.WARM" Destination="SUBSCRIBE_0.INIT" /></Request>
DoubleRegister;<Request ID="464" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
DoubleRegister;<Request ID="465" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="ServiceNotRegisteredPos1.check" /></Request>
DoubleRegister;<Request ID="466" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
@@ -474,159 +474,159 @@
DoubleRegister;<Request ID="474" Action="CREATE"><Connection Source="QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
DoubleRegister;<Request ID="475" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
DoubleRegister;<Request ID="476" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="ServiceNotRegisteredPos0.check" /></Request>
-DoubleRegister;<Request ID="477" Action="CREATE"><Connection Source="QueryService.queryServices" Destination="QueryServiceHTTP.queryServices" /></Request>
-DoubleRegister;<Request ID="478" Action="CREATE"><Connection Source="RegisterService.registerService" Destination="RegisterServiceHTTP.registerService" /></Request>
+DoubleRegister;<Request ID="477" Action="CREATE"><Connection Source="RegisterService.registerService" Destination="RegisterServiceOpcUa.registerService" /></Request>
+DoubleRegister;<Request ID="478" Action="CREATE"><Connection Source="QueryService.queryServices" Destination="QueryServiceOpcUa.queryServices" /></Request>
DoubleRegister;<Request ID="479" Action="START"/>
;<Request ID="480" Action="CREATE"><FB Name="RegisterMoreServices" Type="EMB_RES" /></Request>
-RegisterMoreServices;<Request ID="481" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterMoreServices;<Request ID="482" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-RegisterMoreServices;<Request ID="483" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="484" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="485" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
-RegisterMoreServices;<Request ID="486" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
-RegisterMoreServices;<Request ID="487" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
-RegisterMoreServices;<Request ID="488" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="489" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
-RegisterMoreServices;<Request ID="490" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-RegisterMoreServices;<Request ID="491" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="492" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
-RegisterMoreServices;<Request ID="493" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="494" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="495" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-RegisterMoreServices;<Request ID="496" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-RegisterMoreServices;<Request ID="497" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
-RegisterMoreServices;<Request ID="498" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-RegisterMoreServices;<Request ID="499" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
-RegisterMoreServices;<Request ID="500" Action="CREATE"><FB Name="Service2RegisteredPos0" Type="TEST_CONDITION" /></Request>
-RegisterMoreServices;<Request ID="501" Action="CREATE"><FB Name="Service1RegisteredPos0" Type="TEST_CONDITION" /></Request>
-RegisterMoreServices;<Request ID="502" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
-RegisterMoreServices;<Request ID="503" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
-RegisterMoreServices;<Request ID="504" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
-RegisterMoreServices;<Request ID="505" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_2.IN1" /></Request>
-RegisterMoreServices;<Request ID="506" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
-RegisterMoreServices;<Request ID="507" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="508" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="509" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
-RegisterMoreServices;<Request ID="510" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
-RegisterMoreServices;<Request ID="511" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
-RegisterMoreServices;<Request ID="512" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="513" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
-RegisterMoreServices;<Request ID="514" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-RegisterMoreServices;<Request ID="515" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="516" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
-RegisterMoreServices;<Request ID="517" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="518" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="519" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
-RegisterMoreServices;<Request ID="520" Action="CREATE"><FB Name="Service1NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
-RegisterMoreServices;<Request ID="521" Action="CREATE"><FB Name="Sequencer.E_DEMUX" Type="E_DEMUX" /></Request>
-RegisterMoreServices;<Request ID="522" Action="CREATE"><FB Name="Sequencer.E_CTU" Type="E_CTU" /></Request>
-RegisterMoreServices;<Request ID="523" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1" Type="E_DEMUX" /></Request>
-RegisterMoreServices;<Request ID="524" Action="CREATE"><FB Name="Sequencer.E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterMoreServices;<Request ID="525" Action="CREATE"><FB Name="Sequencer.F_GT" Type="F_GT" /></Request>
-RegisterMoreServices;<Request ID="526" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer.F_GT.IN2" /></Request>
-RegisterMoreServices;<Request ID="527" Action="CREATE"><FB Name="Sequencer.E_MERGE" Type="E_MERGE" /></Request>
-RegisterMoreServices;<Request ID="528" Action="CREATE"><FB Name="Sequencer.F_SUB" Type="F_SUB" /></Request>
-RegisterMoreServices;<Request ID="529" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer.F_SUB.IN2" /></Request>
-RegisterMoreServices;<Request ID="530" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
-RegisterMoreServices;<Request ID="531" Action="CREATE"><FB Name="Sequencer.F_GT_1" Type="F_GT" /></Request>
-RegisterMoreServices;<Request ID="532" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer.F_GT_1.IN2" /></Request>
-RegisterMoreServices;<Request ID="533" Action="CREATE"><FB Name="Sequencer.F_SUB_1" Type="F_SUB" /></Request>
-RegisterMoreServices;<Request ID="534" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer.F_SUB_1.IN2" /></Request>
-RegisterMoreServices;<Request ID="535" Action="CREATE"><FB Name="Sequencer.E_SWITCH_1" Type="E_SWITCH" /></Request>
-RegisterMoreServices;<Request ID="536" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-RegisterMoreServices;<Request ID="537" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
-RegisterMoreServices;<Request ID="538" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
-RegisterMoreServices;<Request ID="539" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
-RegisterMoreServices;<Request ID="540" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
-RegisterMoreServices;<Request ID="541" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start2" Destination="F_EQ_1.IN1" /></Request>
-RegisterMoreServices;<Request ID="542" Action="CREATE"><FB Name="S1Reg" Type="E_SR" /></Request>
-RegisterMoreServices;<Request ID="543" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="544" Action="CREATE"><FB Name="RegisterService2.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-RegisterMoreServices;<Request ID="545" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
-RegisterMoreServices;<Request ID="546" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
-RegisterMoreServices;<Request ID="547" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterMoreServices;<Request ID="548" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
-RegisterMoreServices;<Request ID="549" Action="CREATE"><FB Name="RegisterService1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="550" Action="CREATE"><FB Name="RegisterService1.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-RegisterMoreServices;<Request ID="551" Action="CREATE"><FB Name="RegisterService1.RegisterService" Type="RegisterService" /></Request>
-RegisterMoreServices;<Request ID="552" Action="CREATE"><FB Name="RegisterService1.E_SR" Type="E_SR" /></Request>
-RegisterMoreServices;<Request ID="553" Action="CREATE"><FB Name="RegisterService1.E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterMoreServices;<Request ID="554" Action="CREATE"><FB Name="RegisterService1.E_REND" Type="E_REND" /></Request>
-RegisterMoreServices;<Request ID="555" Action="CREATE"><FB Name="Service2NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
-RegisterMoreServices;<Request ID="556" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
-RegisterMoreServices;<Request ID="557" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1.IN1" /></Request>
-RegisterMoreServices;<Request ID="558" Action="CREATE"><FB Name="S2Reg" Type="E_SR" /></Request>
-RegisterMoreServices;<Request ID="559" Action="CREATE"><FB Name="E_SWITCH_1" Type="E_SWITCH" /></Request>
-RegisterMoreServices;<Request ID="560" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-RegisterMoreServices;<Request ID="561" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="562" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="563" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.member" /></Request>
-RegisterMoreServices;<Request ID="564" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
-RegisterMoreServices;<Request ID="565" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_2" /></Request>
-RegisterMoreServices;<Request ID="566" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="567" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.member" /></Request>
-RegisterMoreServices;<Request ID="568" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-RegisterMoreServices;<Request ID="569" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="570" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.member" /></Request>
-RegisterMoreServices;<Request ID="571" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="572" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="573" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-RegisterMoreServices;<Request ID="574" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.WS2WS" Type="WSTRING2WSTRING" /></Request>
-RegisterMoreServices;<Request ID="575" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.DI2S" Type="F_DINT_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="576" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="577" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_2.GetPort.member" /></Request>
-RegisterMoreServices;<Request ID="578" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.IpPort" Type="APPEND_STRING_3" /></Request>
-RegisterMoreServices;<Request ID="579" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.IN_2" /></Request>
-RegisterMoreServices;<Request ID="580" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="581" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_2.GetAddress.member" /></Request>
-RegisterMoreServices;<Request ID="582" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-RegisterMoreServices;<Request ID="583" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-RegisterMoreServices;<Request ID="584" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_2.GetURI.member" /></Request>
-RegisterMoreServices;<Request ID="585" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="586" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-RegisterMoreServices;<Request ID="587" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.IpPortURI" Type="APPEND_STRING_2" /></Request>
-RegisterMoreServices;<Request ID="588" Action="CREATE"><FB Name="GET_AT_INDEX_1_1" Type="GET_AT_INDEX" /></Request>
-RegisterMoreServices;<Request ID="589" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1_1.INDEX" /></Request>
-RegisterMoreServices;<Request ID="590" Action="CREATE"><FB Name="QueryService2.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-RegisterMoreServices;<Request ID="591" Action="CREATE"><FB Name="QueryService2.QueryService" Type="QueryService" /></Request>
-RegisterMoreServices;<Request ID="592" Action="CREATE"><FB Name="QueryService2.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-RegisterMoreServices;<Request ID="593" Action="CREATE"><FB Name="GET_AT_INDEX_2" Type="GET_AT_INDEX" /></Request>
-RegisterMoreServices;<Request ID="594" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_2.INDEX" /></Request>
-RegisterMoreServices;<Request ID="595" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
-RegisterMoreServices;<Request ID="596" Action="WRITE"><Connection Source="WSTRIGN#DoubleRegisterReady" Destination="SUBL_0.ID" /></Request>
-RegisterMoreServices;<Request ID="597" Action="CREATE"><FB Name="F_EQ_3" Type="F_EQ" /></Request>
-RegisterMoreServices;<Request ID="598" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3.IN1" /></Request>
-RegisterMoreServices;<Request ID="599" Action="CREATE"><FB Name="Service1NotRegisteredPos0" Type="TEST_CONDITION" /></Request>
-RegisterMoreServices;<Request ID="600" Action="CREATE"><FB Name="F_EQ_3_1" Type="F_EQ" /></Request>
-RegisterMoreServices;<Request ID="601" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3_1.IN1" /></Request>
-RegisterMoreServices;<Request ID="602" Action="CREATE"><FB Name="Service2NotRegisteredPos0" Type="TEST_CONDITION" /></Request>
-RegisterMoreServices;<Request ID="603" Action="CREATE"><FB Name="QueryService1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-RegisterMoreServices;<Request ID="604" Action="CREATE"><FB Name="QueryService1.QueryService" Type="QueryService" /></Request>
-RegisterMoreServices;<Request ID="605" Action="CREATE"><FB Name="QueryService1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-RegisterMoreServices;<Request ID="606" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
-RegisterMoreServices;<Request ID="607" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="Service1.serviceDefinition" /></Request>
-RegisterMoreServices;<Request ID="608" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
-RegisterMoreServices;<Request ID="609" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service1.serviceMetadata" /></Request>
-RegisterMoreServices;<Request ID="610" Action="CREATE"><FB Name="Service2" Type="FieldsToArrowheadService" /></Request>
-RegisterMoreServices;<Request ID="611" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="Service2.serviceDefinition" /></Request>
-RegisterMoreServices;<Request ID="612" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service2.interfaces" /></Request>
-RegisterMoreServices;<Request ID="613" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service2.serviceMetadata" /></Request>
-RegisterMoreServices;<Request ID="614" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-RegisterMoreServices;<Request ID="615" Action="WRITE"><Connection Source="WSTRIGN#testMoreServicesReady" Destination="PUBL_0.ID" /></Request>
+RegisterMoreServices;<Request ID="481" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+RegisterMoreServices;<Request ID="482" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="483" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="484" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
+RegisterMoreServices;<Request ID="485" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
+RegisterMoreServices;<Request ID="486" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
+RegisterMoreServices;<Request ID="487" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="488" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
+RegisterMoreServices;<Request ID="489" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+RegisterMoreServices;<Request ID="490" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="491" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
+RegisterMoreServices;<Request ID="492" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="493" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="494" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+RegisterMoreServices;<Request ID="495" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
+RegisterMoreServices;<Request ID="496" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
+RegisterMoreServices;<Request ID="497" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
+RegisterMoreServices;<Request ID="498" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="499" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="500" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
+RegisterMoreServices;<Request ID="501" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
+RegisterMoreServices;<Request ID="502" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
+RegisterMoreServices;<Request ID="503" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="504" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
+RegisterMoreServices;<Request ID="505" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+RegisterMoreServices;<Request ID="506" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="507" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
+RegisterMoreServices;<Request ID="508" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="509" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="510" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
+RegisterMoreServices;<Request ID="511" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+RegisterMoreServices;<Request ID="512" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
+RegisterMoreServices;<Request ID="513" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+RegisterMoreServices;<Request ID="514" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+RegisterMoreServices;<Request ID="515" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+RegisterMoreServices;<Request ID="516" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
+RegisterMoreServices;<Request ID="517" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
+RegisterMoreServices;<Request ID="518" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_2.IN1" /></Request>
+RegisterMoreServices;<Request ID="519" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+RegisterMoreServices;<Request ID="520" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
+RegisterMoreServices;<Request ID="521" Action="CREATE"><FB Name="S1Reg" Type="E_SR" /></Request>
+RegisterMoreServices;<Request ID="522" Action="CREATE"><FB Name="Service2RegisteredPos0" Type="TEST_CONDITION" /></Request>
+RegisterMoreServices;<Request ID="523" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterMoreServices;<Request ID="524" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+RegisterMoreServices;<Request ID="525" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start2" Destination="F_EQ_1.IN1" /></Request>
+RegisterMoreServices;<Request ID="526" Action="CREATE"><FB Name="Service1RegisteredPos0" Type="TEST_CONDITION" /></Request>
+RegisterMoreServices;<Request ID="527" Action="CREATE"><FB Name="Service1NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
+RegisterMoreServices;<Request ID="528" Action="CREATE"><FB Name="Sequencer.E_DEMUX" Type="E_DEMUX" /></Request>
+RegisterMoreServices;<Request ID="529" Action="CREATE"><FB Name="Sequencer.E_CTU" Type="E_CTU" /></Request>
+RegisterMoreServices;<Request ID="530" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1" Type="E_DEMUX" /></Request>
+RegisterMoreServices;<Request ID="531" Action="CREATE"><FB Name="Sequencer.E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterMoreServices;<Request ID="532" Action="CREATE"><FB Name="Sequencer.F_GT" Type="F_GT" /></Request>
+RegisterMoreServices;<Request ID="533" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer.F_GT.IN2" /></Request>
+RegisterMoreServices;<Request ID="534" Action="CREATE"><FB Name="Sequencer.E_MERGE" Type="E_MERGE" /></Request>
+RegisterMoreServices;<Request ID="535" Action="CREATE"><FB Name="Sequencer.F_SUB" Type="F_SUB" /></Request>
+RegisterMoreServices;<Request ID="536" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer.F_SUB.IN2" /></Request>
+RegisterMoreServices;<Request ID="537" Action="CREATE"><FB Name="Sequencer.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
+RegisterMoreServices;<Request ID="538" Action="CREATE"><FB Name="Sequencer.F_GT_1" Type="F_GT" /></Request>
+RegisterMoreServices;<Request ID="539" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer.F_GT_1.IN2" /></Request>
+RegisterMoreServices;<Request ID="540" Action="CREATE"><FB Name="Sequencer.F_SUB_1" Type="F_SUB" /></Request>
+RegisterMoreServices;<Request ID="541" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer.F_SUB_1.IN2" /></Request>
+RegisterMoreServices;<Request ID="542" Action="CREATE"><FB Name="Sequencer.E_SWITCH_1" Type="E_SWITCH" /></Request>
+RegisterMoreServices;<Request ID="543" Action="CREATE"><FB Name="Service2NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
+RegisterMoreServices;<Request ID="544" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
+RegisterMoreServices;<Request ID="545" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1.IN1" /></Request>
+RegisterMoreServices;<Request ID="546" Action="CREATE"><FB Name="S2Reg" Type="E_SR" /></Request>
+RegisterMoreServices;<Request ID="547" Action="CREATE"><FB Name="E_SWITCH_1" Type="E_SWITCH" /></Request>
+RegisterMoreServices;<Request ID="548" Action="CREATE"><FB Name="GET_AT_INDEX_1_1" Type="GET_AT_INDEX" /></Request>
+RegisterMoreServices;<Request ID="549" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1_1.INDEX" /></Request>
+RegisterMoreServices;<Request ID="550" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+RegisterMoreServices;<Request ID="551" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="552" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="553" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.member" /></Request>
+RegisterMoreServices;<Request ID="554" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
+RegisterMoreServices;<Request ID="555" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_2" /></Request>
+RegisterMoreServices;<Request ID="556" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="557" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.member" /></Request>
+RegisterMoreServices;<Request ID="558" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+RegisterMoreServices;<Request ID="559" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="560" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.member" /></Request>
+RegisterMoreServices;<Request ID="561" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="562" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="563" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+RegisterMoreServices;<Request ID="564" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.WS2WS" Type="WSTRING2WSTRING" /></Request>
+RegisterMoreServices;<Request ID="565" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.DI2S" Type="F_DINT_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="566" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="567" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_2.GetPort.member" /></Request>
+RegisterMoreServices;<Request ID="568" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.IpPort" Type="APPEND_STRING_3" /></Request>
+RegisterMoreServices;<Request ID="569" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.IN_2" /></Request>
+RegisterMoreServices;<Request ID="570" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="571" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_2.GetAddress.member" /></Request>
+RegisterMoreServices;<Request ID="572" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+RegisterMoreServices;<Request ID="573" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+RegisterMoreServices;<Request ID="574" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_2.GetURI.member" /></Request>
+RegisterMoreServices;<Request ID="575" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="576" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+RegisterMoreServices;<Request ID="577" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_2.IpPortURI" Type="APPEND_STRING_2" /></Request>
+RegisterMoreServices;<Request ID="578" Action="CREATE"><FB Name="GET_AT_INDEX_2" Type="GET_AT_INDEX" /></Request>
+RegisterMoreServices;<Request ID="579" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_2.INDEX" /></Request>
+RegisterMoreServices;<Request ID="580" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+RegisterMoreServices;<Request ID="581" Action="WRITE"><Connection Source="WSTRIGN#DoubleRegisterReady" Destination="SUBL_0.ID" /></Request>
+RegisterMoreServices;<Request ID="582" Action="CREATE"><FB Name="Service1NotRegisteredPos0" Type="TEST_CONDITION" /></Request>
+RegisterMoreServices;<Request ID="583" Action="CREATE"><FB Name="F_EQ_3" Type="F_EQ" /></Request>
+RegisterMoreServices;<Request ID="584" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3.IN1" /></Request>
+RegisterMoreServices;<Request ID="585" Action="CREATE"><FB Name="F_EQ_3_1" Type="F_EQ" /></Request>
+RegisterMoreServices;<Request ID="586" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3_1.IN1" /></Request>
+RegisterMoreServices;<Request ID="587" Action="CREATE"><FB Name="Service2NotRegisteredPos0" Type="TEST_CONDITION" /></Request>
+RegisterMoreServices;<Request ID="588" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
+RegisterMoreServices;<Request ID="589" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="Service1.serviceDefinition" /></Request>
+RegisterMoreServices;<Request ID="590" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
+RegisterMoreServices;<Request ID="591" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service1.serviceMetadata" /></Request>
+RegisterMoreServices;<Request ID="592" Action="CREATE"><FB Name="Service2" Type="FieldsToArrowheadService" /></Request>
+RegisterMoreServices;<Request ID="593" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="Service2.serviceDefinition" /></Request>
+RegisterMoreServices;<Request ID="594" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service2.interfaces" /></Request>
+RegisterMoreServices;<Request ID="595" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service2.serviceMetadata" /></Request>
+RegisterMoreServices;<Request ID="596" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+RegisterMoreServices;<Request ID="597" Action="WRITE"><Connection Source="WSTRIGN#testMoreServicesReady" Destination="PUBL_0.ID" /></Request>
+RegisterMoreServices;<Request ID="598" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="599" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
+RegisterMoreServices;<Request ID="600" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
+RegisterMoreServices;<Request ID="601" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterMoreServices;<Request ID="602" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
+RegisterMoreServices;<Request ID="603" Action="CREATE"><FB Name="RegisterService2.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+RegisterMoreServices;<Request ID="604" Action="CREATE"><FB Name="RegisterService1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="605" Action="CREATE"><FB Name="RegisterService1.RegisterService" Type="RegisterService" /></Request>
+RegisterMoreServices;<Request ID="606" Action="CREATE"><FB Name="RegisterService1.E_SR" Type="E_SR" /></Request>
+RegisterMoreServices;<Request ID="607" Action="CREATE"><FB Name="RegisterService1.E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterMoreServices;<Request ID="608" Action="CREATE"><FB Name="RegisterService1.E_REND" Type="E_REND" /></Request>
+RegisterMoreServices;<Request ID="609" Action="CREATE"><FB Name="RegisterService1.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+RegisterMoreServices;<Request ID="610" Action="CREATE"><FB Name="QueryService2.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+RegisterMoreServices;<Request ID="611" Action="CREATE"><FB Name="QueryService2.QueryService" Type="QueryService" /></Request>
+RegisterMoreServices;<Request ID="612" Action="CREATE"><FB Name="QueryService2.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+RegisterMoreServices;<Request ID="613" Action="CREATE"><FB Name="QueryService1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+RegisterMoreServices;<Request ID="614" Action="CREATE"><FB Name="QueryService1.QueryService" Type="QueryService" /></Request>
+RegisterMoreServices;<Request ID="615" Action="CREATE"><FB Name="QueryService1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
RegisterMoreServices;<Request ID="616" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
RegisterMoreServices;<Request ID="617" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
RegisterMoreServices;<Request ID="618" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
-RegisterMoreServices;<Request ID="619" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
-RegisterMoreServices;<Request ID="620" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
+RegisterMoreServices;<Request ID="619" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
+RegisterMoreServices;<Request ID="620" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
RegisterMoreServices;<Request ID="621" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService1.FieldsToServiceRegistryEntry.serviceURI" /></Request>
RegisterMoreServices;<Request ID="622" Action="WRITE"><Connection Source="1" Destination="RegisterService1.FieldsToServiceRegistryEntry.version" /></Request>
RegisterMoreServices;<Request ID="623" Action="WRITE"><Connection Source="false" Destination="RegisterService1.FieldsToServiceRegistryEntry.udp" /></Request>
-RegisterMoreServices;<Request ID="624" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService1.FieldsToServiceRegistryEntry.metadata" /></Request>
-RegisterMoreServices;<Request ID="625" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService1.RegisterService.endpoint" /></Request>
+RegisterMoreServices;<Request ID="624" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService1.FieldsToServiceRegistryEntry.metadata" /></Request>
+RegisterMoreServices;<Request ID="625" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService1.RegisterService.endpoint" /></Request>
RegisterMoreServices;<Request ID="626" Action="WRITE"><Connection Source="1" Destination="QueryService2.FieldsToServiceQueryForm.version" /></Request>
-RegisterMoreServices;<Request ID="627" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryService2.QueryService.address" /></Request>
+RegisterMoreServices;<Request ID="627" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryService2.QueryService.address" /></Request>
RegisterMoreServices;<Request ID="628" Action="WRITE"><Connection Source="1" Destination="QueryService1.FieldsToServiceQueryForm.version" /></Request>
-RegisterMoreServices;<Request ID="629" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryService1.QueryService.address" /></Request>
+RegisterMoreServices;<Request ID="629" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryService1.QueryService.address" /></Request>
RegisterMoreServices;<Request ID="630" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.REQ" /></Request>
RegisterMoreServices;<Request ID="631" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.REQ" /></Request>
RegisterMoreServices;<Request ID="632" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.REQ" /></Request>
@@ -706,7 +706,7 @@
RegisterMoreServices;<Request ID="706" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.CNF" Destination="Sequencer.E_DEMUX_1_1.EI" /></Request>
RegisterMoreServices;<Request ID="707" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="QueryService1.FieldsToServiceQueryForm.REQ" /></Request>
RegisterMoreServices;<Request ID="708" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="QueryService2.FieldsToServiceQueryForm.REQ" /></Request>
-RegisterMoreServices;<Request ID="709" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.INIT" /></Request>
+RegisterMoreServices;<Request ID="709" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.REQ" /></Request>
RegisterMoreServices;<Request ID="710" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO3" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServices;<Request ID="711" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServices;<Request ID="712" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="Sequencer.E_MERGE.EI2" /></Request>
@@ -721,130 +721,130 @@
RegisterMoreServices;<Request ID="721" Action="CREATE"><Connection Source="Sequencer.E_CTU.CV" Destination="Sequencer.F_GT_1.IN1" /></Request>
RegisterMoreServices;<Request ID="722" Action="CREATE"><Connection Source="Sequencer.F_GT_1.OUT" Destination="Sequencer.E_SWITCH_1.G" /></Request>
RegisterMoreServices;<Request ID="723" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.OUT" Destination="Sequencer.E_DEMUX_1_1.K" /></Request>
-RegisterMoreServices;<Request ID="724" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="S2Reg.S" /></Request>
-RegisterMoreServices;<Request ID="725" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="S2Reg.R" /></Request>
-RegisterMoreServices;<Request ID="726" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
-RegisterMoreServices;<Request ID="727" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
-RegisterMoreServices;<Request ID="728" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
-RegisterMoreServices;<Request ID="729" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
-RegisterMoreServices;<Request ID="730" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
-RegisterMoreServices;<Request ID="731" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="732" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
-RegisterMoreServices;<Request ID="733" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
-RegisterMoreServices;<Request ID="734" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneRegister" Destination="S1Reg.S" /></Request>
-RegisterMoreServices;<Request ID="735" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="S1Reg.R" /></Request>
-RegisterMoreServices;<Request ID="736" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO1" Destination="RegisterService1.RegisterService.register" /></Request>
-RegisterMoreServices;<Request ID="737" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO0" Destination="RegisterService1.RegisterService.unregister" /></Request>
-RegisterMoreServices;<Request ID="738" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService1.E_REND.EI2" /></Request>
-RegisterMoreServices;<Request ID="739" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_SWITCH.EI" /></Request>
-RegisterMoreServices;<Request ID="740" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_REND.R" /></Request>
-RegisterMoreServices;<Request ID="741" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService1.RegisterService.serviceRegistryEntry" /></Request>
-RegisterMoreServices;<Request ID="742" Action="CREATE"><Connection Source="RegisterService1.E_SR.Q" Destination="RegisterService1.E_SWITCH.G" /></Request>
-RegisterMoreServices;<Request ID="743" Action="CREATE"><Connection Source="RegisterService1.RegisterService.registerService" Destination="RegisterService1.RegisterServiceHTTP_1.registerService" /></Request>
-RegisterMoreServices;<Request ID="744" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.REQ" /></Request>
-RegisterMoreServices;<Request ID="745" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.REQ" /></Request>
-RegisterMoreServices;<Request ID="746" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.REQ" /></Request>
-RegisterMoreServices;<Request ID="747" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.CNF" Destination="E_SWITCH_1.EI" /></Request>
-RegisterMoreServices;<Request ID="748" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.REQ" /></Request>
-RegisterMoreServices;<Request ID="749" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.REQ" /></Request>
-RegisterMoreServices;<Request ID="750" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="751" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.REQ" /></Request>
-RegisterMoreServices;<Request ID="752" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.REQ" /></Request>
-RegisterMoreServices;<Request ID="753" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.REQ" /></Request>
-RegisterMoreServices;<Request ID="754" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_1" /></Request>
-RegisterMoreServices;<Request ID="755" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.IN" /></Request>
-RegisterMoreServices;<Request ID="756" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_3" /></Request>
-RegisterMoreServices;<Request ID="757" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.IN" /></Request>
-RegisterMoreServices;<Request ID="758" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.OUT" Destination="F_EQ_1_1.IN2" /></Request>
-RegisterMoreServices;<Request ID="759" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.in_struct" /></Request>
-RegisterMoreServices;<Request ID="760" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.in_struct" /></Request>
-RegisterMoreServices;<Request ID="761" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.in_struct" /></Request>
-RegisterMoreServices;<Request ID="762" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.IN" /></Request>
-RegisterMoreServices;<Request ID="763" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_1" /></Request>
-RegisterMoreServices;<Request ID="764" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.IN" /></Request>
-RegisterMoreServices;<Request ID="765" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_2" /></Request>
-RegisterMoreServices;<Request ID="766" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS.REQ" /></Request>
-RegisterMoreServices;<Request ID="767" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.REQ" /></Request>
-RegisterMoreServices;<Request ID="768" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.GetPort.REQ" /></Request>
-RegisterMoreServices;<Request ID="769" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.S2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterMoreServices;<Request ID="770" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.GetURI.REQ" /></Request>
-RegisterMoreServices;<Request ID="771" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.GetAddress.REQ" /></Request>
-RegisterMoreServices;<Request ID="772" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="773" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.DI2S.REQ" /></Request>
-RegisterMoreServices;<Request ID="774" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.REQ" /></Request>
-RegisterMoreServices;<Request ID="775" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.S2WS.REQ" /></Request>
-RegisterMoreServices;<Request ID="776" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.IN_1" /></Request>
-RegisterMoreServices;<Request ID="777" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS.IN" /></Request>
-RegisterMoreServices;<Request ID="778" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.IN_3" /></Request>
-RegisterMoreServices;<Request ID="779" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_2.DI2S.IN" /></Request>
-RegisterMoreServices;<Request ID="780" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
-RegisterMoreServices;<Request ID="781" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.S2WS.OUT" Destination="F_EQ_3_1.IN2" /></Request>
-RegisterMoreServices;<Request ID="782" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.GetURI.in_struct" /></Request>
-RegisterMoreServices;<Request ID="783" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.GetPort.in_struct" /></Request>
-RegisterMoreServices;<Request ID="784" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.GetAddress.in_struct" /></Request>
-RegisterMoreServices;<Request ID="785" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.IN" /></Request>
-RegisterMoreServices;<Request ID="786" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.IN_1" /></Request>
-RegisterMoreServices;<Request ID="787" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.S2WS.IN" /></Request>
-RegisterMoreServices;<Request ID="788" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.IN_2" /></Request>
+RegisterMoreServices;<Request ID="724" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.REQ" /></Request>
+RegisterMoreServices;<Request ID="725" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.REQ" /></Request>
+RegisterMoreServices;<Request ID="726" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.REQ" /></Request>
+RegisterMoreServices;<Request ID="727" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.CNF" Destination="E_SWITCH_1.EI" /></Request>
+RegisterMoreServices;<Request ID="728" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.REQ" /></Request>
+RegisterMoreServices;<Request ID="729" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.REQ" /></Request>
+RegisterMoreServices;<Request ID="730" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="731" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.REQ" /></Request>
+RegisterMoreServices;<Request ID="732" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.REQ" /></Request>
+RegisterMoreServices;<Request ID="733" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.REQ" /></Request>
+RegisterMoreServices;<Request ID="734" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_1" /></Request>
+RegisterMoreServices;<Request ID="735" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.IN" /></Request>
+RegisterMoreServices;<Request ID="736" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_3" /></Request>
+RegisterMoreServices;<Request ID="737" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.IN" /></Request>
+RegisterMoreServices;<Request ID="738" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.OUT" Destination="F_EQ_1_1.IN2" /></Request>
+RegisterMoreServices;<Request ID="739" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.in_struct" /></Request>
+RegisterMoreServices;<Request ID="740" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.in_struct" /></Request>
+RegisterMoreServices;<Request ID="741" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.in_struct" /></Request>
+RegisterMoreServices;<Request ID="742" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.IN" /></Request>
+RegisterMoreServices;<Request ID="743" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_1" /></Request>
+RegisterMoreServices;<Request ID="744" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.IN" /></Request>
+RegisterMoreServices;<Request ID="745" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_2" /></Request>
+RegisterMoreServices;<Request ID="746" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS.REQ" /></Request>
+RegisterMoreServices;<Request ID="747" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.REQ" /></Request>
+RegisterMoreServices;<Request ID="748" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.GetPort.REQ" /></Request>
+RegisterMoreServices;<Request ID="749" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.S2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+RegisterMoreServices;<Request ID="750" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.GetURI.REQ" /></Request>
+RegisterMoreServices;<Request ID="751" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.GetAddress.REQ" /></Request>
+RegisterMoreServices;<Request ID="752" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="753" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.DI2S.REQ" /></Request>
+RegisterMoreServices;<Request ID="754" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.REQ" /></Request>
+RegisterMoreServices;<Request ID="755" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.S2WS.REQ" /></Request>
+RegisterMoreServices;<Request ID="756" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.IN_1" /></Request>
+RegisterMoreServices;<Request ID="757" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS.IN" /></Request>
+RegisterMoreServices;<Request ID="758" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPort.IN_3" /></Request>
+RegisterMoreServices;<Request ID="759" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_2.DI2S.IN" /></Request>
+RegisterMoreServices;<Request ID="760" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
+RegisterMoreServices;<Request ID="761" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.S2WS.OUT" Destination="F_EQ_3_1.IN2" /></Request>
+RegisterMoreServices;<Request ID="762" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.GetURI.in_struct" /></Request>
+RegisterMoreServices;<Request ID="763" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.GetPort.in_struct" /></Request>
+RegisterMoreServices;<Request ID="764" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.GetAddress.in_struct" /></Request>
+RegisterMoreServices;<Request ID="765" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.IN" /></Request>
+RegisterMoreServices;<Request ID="766" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.IN_1" /></Request>
+RegisterMoreServices;<Request ID="767" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.S2WS.IN" /></Request>
+RegisterMoreServices;<Request ID="768" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.IN_2" /></Request>
+RegisterMoreServices;<Request ID="769" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="S2Reg.S" /></Request>
+RegisterMoreServices;<Request ID="770" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="S2Reg.R" /></Request>
+RegisterMoreServices;<Request ID="771" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
+RegisterMoreServices;<Request ID="772" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
+RegisterMoreServices;<Request ID="773" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
+RegisterMoreServices;<Request ID="774" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
+RegisterMoreServices;<Request ID="775" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
+RegisterMoreServices;<Request ID="776" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="777" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
+RegisterMoreServices;<Request ID="778" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceOpcUa.registerService" /></Request>
+RegisterMoreServices;<Request ID="779" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneRegister" Destination="S1Reg.S" /></Request>
+RegisterMoreServices;<Request ID="780" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="S1Reg.R" /></Request>
+RegisterMoreServices;<Request ID="781" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO1" Destination="RegisterService1.RegisterService.register" /></Request>
+RegisterMoreServices;<Request ID="782" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO0" Destination="RegisterService1.RegisterService.unregister" /></Request>
+RegisterMoreServices;<Request ID="783" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService1.E_REND.EI2" /></Request>
+RegisterMoreServices;<Request ID="784" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_SWITCH.EI" /></Request>
+RegisterMoreServices;<Request ID="785" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_REND.R" /></Request>
+RegisterMoreServices;<Request ID="786" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService1.RegisterService.serviceRegistryEntry" /></Request>
+RegisterMoreServices;<Request ID="787" Action="CREATE"><Connection Source="RegisterService1.E_SR.Q" Destination="RegisterService1.E_SWITCH.G" /></Request>
+RegisterMoreServices;<Request ID="788" Action="CREATE"><Connection Source="RegisterService1.RegisterService.registerService" Destination="RegisterService1.RegisterServiceOpcUa.registerService" /></Request>
RegisterMoreServices;<Request ID="789" Action="CREATE"><Connection Source="QueryService2.FieldsToServiceQueryForm.CNF" Destination="QueryService2.QueryService.query" /></Request>
RegisterMoreServices;<Request ID="790" Action="CREATE"><Connection Source="QueryService2.QueryService.queried" Destination="GET_AT_INDEX_2.REQ" /></Request>
RegisterMoreServices;<Request ID="791" Action="CREATE"><Connection Source="QueryService2.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryService2.QueryService.serviceQueryForm" /></Request>
-RegisterMoreServices;<Request ID="792" Action="CREATE"><Connection Source="QueryService2.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_1.IN_ARRAY" /></Request>
-RegisterMoreServices;<Request ID="793" Action="CREATE"><Connection Source="QueryService2.QueryService.serviceEntries" Destination="GET_AT_INDEX_2.IN_ARRAY" /></Request>
-RegisterMoreServices;<Request ID="794" Action="CREATE"><Connection Source="QueryService2.QueryService.queryServices" Destination="QueryService2.QueryServiceHTTP.queryServices" /></Request>
+RegisterMoreServices;<Request ID="792" Action="CREATE"><Connection Source="QueryService2.QueryService.serviceEntries" Destination="GET_AT_INDEX_2.IN_ARRAY" /></Request>
+RegisterMoreServices;<Request ID="793" Action="CREATE"><Connection Source="QueryService2.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_1.IN_ARRAY" /></Request>
+RegisterMoreServices;<Request ID="794" Action="CREATE"><Connection Source="QueryService2.QueryService.queryServices" Destination="QueryService2.QueryServiceOpcUa.queryServices" /></Request>
RegisterMoreServices;<Request ID="795" Action="CREATE"><Connection Source="QueryService1.FieldsToServiceQueryForm.CNF" Destination="QueryService1.QueryService.query" /></Request>
RegisterMoreServices;<Request ID="796" Action="CREATE"><Connection Source="QueryService1.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
RegisterMoreServices;<Request ID="797" Action="CREATE"><Connection Source="QueryService1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryService1.QueryService.serviceQueryForm" /></Request>
RegisterMoreServices;<Request ID="798" Action="CREATE"><Connection Source="QueryService1.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
RegisterMoreServices;<Request ID="799" Action="CREATE"><Connection Source="QueryService1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
-RegisterMoreServices;<Request ID="800" Action="CREATE"><Connection Source="QueryService1.QueryService.queryServices" Destination="QueryService1.QueryServiceHTTP.queryServices" /></Request>
-RegisterMoreServices;<Request ID="801" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="Service1RegisteredPos0.REQ" /></Request>
-RegisterMoreServices;<Request ID="802" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="Service1NotRegisteredPos1.REQ" /></Request>
-RegisterMoreServices;<Request ID="803" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="Service2RegisteredPos0.REQ" /></Request>
-RegisterMoreServices;<Request ID="804" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="Service2NotRegisteredPos1.REQ" /></Request>
-RegisterMoreServices;<Request ID="805" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-RegisterMoreServices;<Request ID="806" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GET_AT_INDEX_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="807" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterMoreServices;<Request ID="808" Action="CREATE"><Connection Source="Service1RegisteredPos0.CNF" Destination="F_EQ.REQ" /></Request>
-RegisterMoreServices;<Request ID="809" Action="CREATE"><Connection Source="Service2RegisteredPos0.CNF" Destination="F_EQ_1_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="810" Action="CREATE"><Connection Source="GET_AT_INDEX_2.CNF" Destination="GET_AT_INDEX_1_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="811" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterMoreServices;<Request ID="812" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_2.REQ" /></Request>
-RegisterMoreServices;<Request ID="813" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_3.REQ" /></Request>
-RegisterMoreServices;<Request ID="814" Action="CREATE"><Connection Source="F_EQ_3.CNF" Destination="Service1NotRegisteredPos0.REQ" /></Request>
-RegisterMoreServices;<Request ID="815" Action="CREATE"><Connection Source="Service1NotRegisteredPos0.CNF" Destination="F_EQ.REQ" /></Request>
-RegisterMoreServices;<Request ID="816" Action="CREATE"><Connection Source="F_EQ_3_1.CNF" Destination="Service2NotRegisteredPos0.REQ" /></Request>
-RegisterMoreServices;<Request ID="817" Action="CREATE"><Connection Source="E_SWITCH_1.EO1" Destination="F_EQ_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="818" Action="CREATE"><Connection Source="E_SWITCH_1.EO0" Destination="F_EQ_3_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="819" Action="CREATE"><Connection Source="Service2NotRegisteredPos0.CNF" Destination="F_EQ_1_1.REQ" /></Request>
-RegisterMoreServices;<Request ID="820" Action="CREATE"><Connection Source="Service2NotRegisteredPos1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServices;<Request ID="821" Action="CREATE"><Connection Source="Service1NotRegisteredPos1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServices;<Request ID="822" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-RegisterMoreServices;<Request ID="823" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-RegisterMoreServices;<Request ID="824" Action="CREATE"><Connection Source="S2Reg.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServices;<Request ID="825" Action="CREATE"><Connection Source="S1Reg.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServices;<Request ID="826" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
-RegisterMoreServices;<Request ID="827" Action="CREATE"><Connection Source="Service1.CNF" Destination="Service2.REQ" /></Request>
-RegisterMoreServices;<Request ID="828" Action="CREATE"><Connection Source="Service2.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServices;<Request ID="829" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-RegisterMoreServices;<Request ID="830" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="Service1RegisteredPos0.check" /></Request>
-RegisterMoreServices;<Request ID="831" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="Service1NotRegisteredPos1.check" /></Request>
-RegisterMoreServices;<Request ID="832" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-RegisterMoreServices;<Request ID="833" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-RegisterMoreServices;<Request ID="834" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="Service2RegisteredPos0.check" /></Request>
-RegisterMoreServices;<Request ID="835" Action="CREATE"><Connection Source="S1Reg.Q" Destination="E_SWITCH.G" /></Request>
-RegisterMoreServices;<Request ID="836" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
-RegisterMoreServices;<Request ID="837" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
-RegisterMoreServices;<Request ID="838" Action="CREATE"><Connection Source="F_EQ_1_1.OUT" Destination="Service2NotRegisteredPos1.check" /></Request>
-RegisterMoreServices;<Request ID="839" Action="CREATE"><Connection Source="S2Reg.Q" Destination="E_SWITCH_1.G" /></Request>
-RegisterMoreServices;<Request ID="840" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-RegisterMoreServices;<Request ID="841" Action="CREATE"><Connection Source="GET_AT_INDEX_2.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-RegisterMoreServices;<Request ID="842" Action="CREATE"><Connection Source="F_EQ_3.OUT" Destination="Service1NotRegisteredPos0.check" /></Request>
-RegisterMoreServices;<Request ID="843" Action="CREATE"><Connection Source="F_EQ_3_1.OUT" Destination="Service2NotRegisteredPos0.check" /></Request>
+RegisterMoreServices;<Request ID="800" Action="CREATE"><Connection Source="QueryService1.QueryService.queryServices" Destination="QueryService1.QueryServiceOpcUa.queryServices" /></Request>
+RegisterMoreServices;<Request ID="801" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+RegisterMoreServices;<Request ID="802" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GET_AT_INDEX_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="803" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_2.REQ" /></Request>
+RegisterMoreServices;<Request ID="804" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="Service2RegisteredPos0.REQ" /></Request>
+RegisterMoreServices;<Request ID="805" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="Service1RegisteredPos0.REQ" /></Request>
+RegisterMoreServices;<Request ID="806" Action="CREATE"><Connection Source="Service1RegisteredPos0.CNF" Destination="F_EQ.REQ" /></Request>
+RegisterMoreServices;<Request ID="807" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="Service1NotRegisteredPos1.REQ" /></Request>
+RegisterMoreServices;<Request ID="808" Action="CREATE"><Connection Source="Service1NotRegisteredPos1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServices;<Request ID="809" Action="CREATE"><Connection Source="S1Reg.EO" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServices;<Request ID="810" Action="CREATE"><Connection Source="Service2NotRegisteredPos1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServices;<Request ID="811" Action="CREATE"><Connection Source="Service2RegisteredPos0.CNF" Destination="F_EQ_1_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="812" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="Service2NotRegisteredPos1.REQ" /></Request>
+RegisterMoreServices;<Request ID="813" Action="CREATE"><Connection Source="S2Reg.EO" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServices;<Request ID="814" Action="CREATE"><Connection Source="E_SWITCH_1.EO1" Destination="F_EQ_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="815" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+RegisterMoreServices;<Request ID="816" Action="CREATE"><Connection Source="GET_AT_INDEX_2.CNF" Destination="GET_AT_INDEX_1_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="817" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+RegisterMoreServices;<Request ID="818" Action="CREATE"><Connection Source="Service1NotRegisteredPos0.CNF" Destination="F_EQ.REQ" /></Request>
+RegisterMoreServices;<Request ID="819" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ_3.REQ" /></Request>
+RegisterMoreServices;<Request ID="820" Action="CREATE"><Connection Source="F_EQ_3.CNF" Destination="Service1NotRegisteredPos0.REQ" /></Request>
+RegisterMoreServices;<Request ID="821" Action="CREATE"><Connection Source="E_SWITCH_1.EO0" Destination="F_EQ_3_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="822" Action="CREATE"><Connection Source="F_EQ_3_1.CNF" Destination="Service2NotRegisteredPos0.REQ" /></Request>
+RegisterMoreServices;<Request ID="823" Action="CREATE"><Connection Source="Service2NotRegisteredPos0.CNF" Destination="F_EQ_1_1.REQ" /></Request>
+RegisterMoreServices;<Request ID="824" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
+RegisterMoreServices;<Request ID="825" Action="CREATE"><Connection Source="Service1.CNF" Destination="Service2.REQ" /></Request>
+RegisterMoreServices;<Request ID="826" Action="CREATE"><Connection Source="Service2.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServices;<Request ID="827" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+RegisterMoreServices;<Request ID="828" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+RegisterMoreServices;<Request ID="829" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
+RegisterMoreServices;<Request ID="830" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+RegisterMoreServices;<Request ID="831" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+RegisterMoreServices;<Request ID="832" Action="CREATE"><Connection Source="S1Reg.Q" Destination="E_SWITCH.G" /></Request>
+RegisterMoreServices;<Request ID="833" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="Service2RegisteredPos0.check" /></Request>
+RegisterMoreServices;<Request ID="834" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="Service1RegisteredPos0.check" /></Request>
+RegisterMoreServices;<Request ID="835" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="Service1NotRegisteredPos1.check" /></Request>
+RegisterMoreServices;<Request ID="836" Action="CREATE"><Connection Source="F_EQ_1_1.OUT" Destination="Service2NotRegisteredPos1.check" /></Request>
+RegisterMoreServices;<Request ID="837" Action="CREATE"><Connection Source="S2Reg.Q" Destination="E_SWITCH_1.G" /></Request>
+RegisterMoreServices;<Request ID="838" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+RegisterMoreServices;<Request ID="839" Action="CREATE"><Connection Source="GET_AT_INDEX_2.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+RegisterMoreServices;<Request ID="840" Action="CREATE"><Connection Source="F_EQ_3.OUT" Destination="Service1NotRegisteredPos0.check" /></Request>
+RegisterMoreServices;<Request ID="841" Action="CREATE"><Connection Source="F_EQ_3_1.OUT" Destination="Service2NotRegisteredPos0.check" /></Request>
+RegisterMoreServices;<Request ID="842" Action="CREATE"><Connection Source="Service2.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
+RegisterMoreServices;<Request ID="843" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
RegisterMoreServices;<Request ID="844" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService1.FieldsToServiceRegistryEntry.providedService" /></Request>
-RegisterMoreServices;<Request ID="845" Action="CREATE"><Connection Source="Service2.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
-RegisterMoreServices;<Request ID="846" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="QueryService1.FieldsToServiceQueryForm.service" /></Request>
-RegisterMoreServices;<Request ID="847" Action="CREATE"><Connection Source="Service2.arrowheadService" Destination="QueryService2.FieldsToServiceQueryForm.service" /></Request>
+RegisterMoreServices;<Request ID="845" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
+RegisterMoreServices;<Request ID="846" Action="CREATE"><Connection Source="Service2.arrowheadService" Destination="QueryService2.FieldsToServiceQueryForm.service" /></Request>
+RegisterMoreServices;<Request ID="847" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="QueryService1.FieldsToServiceQueryForm.service" /></Request>
RegisterMoreServices;<Request ID="848" Action="START"/>
;<Request ID="849" Action="CREATE"><FB Name="SameServiceTwice" Type="EMB_RES" /></Request>
SameServiceTwice;<Request ID="850" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
@@ -864,113 +864,113 @@
SameServiceTwice;<Request ID="864" Action="CREATE"><FB Name="Sequencer.F_SUB_1" Type="F_SUB" /></Request>
SameServiceTwice;<Request ID="865" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer.F_SUB_1.IN2" /></Request>
SameServiceTwice;<Request ID="866" Action="CREATE"><FB Name="Sequencer.E_SWITCH_1" Type="E_SWITCH" /></Request>
-SameServiceTwice;<Request ID="867" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-SameServiceTwice;<Request ID="868" Action="CREATE"><FB Name="RegisterService2.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-SameServiceTwice;<Request ID="869" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
-SameServiceTwice;<Request ID="870" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
-SameServiceTwice;<Request ID="871" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
-SameServiceTwice;<Request ID="872" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
-SameServiceTwice;<Request ID="873" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
-SameServiceTwice;<Request ID="874" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="Service1.serviceDefinition" /></Request>
-SameServiceTwice;<Request ID="875" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
-SameServiceTwice;<Request ID="876" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service1.serviceMetadata" /></Request>
-SameServiceTwice;<Request ID="877" Action="CREATE"><FB Name="RegisterService1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-SameServiceTwice;<Request ID="878" Action="CREATE"><FB Name="RegisterService1.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-SameServiceTwice;<Request ID="879" Action="CREATE"><FB Name="RegisterService1.RegisterService" Type="RegisterService" /></Request>
-SameServiceTwice;<Request ID="880" Action="CREATE"><FB Name="RegisterService1.E_SR" Type="E_SR" /></Request>
-SameServiceTwice;<Request ID="881" Action="CREATE"><FB Name="RegisterService1.E_SWITCH" Type="E_SWITCH" /></Request>
-SameServiceTwice;<Request ID="882" Action="CREATE"><FB Name="RegisterService1.E_REND" Type="E_REND" /></Request>
-SameServiceTwice;<Request ID="883" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-SameServiceTwice;<Request ID="884" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
-SameServiceTwice;<Request ID="885" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-SameServiceTwice;<Request ID="886" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
-SameServiceTwice;<Request ID="887" Action="CREATE"><FB Name="QueryServiceHTTPSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-SameServiceTwice;<Request ID="888" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryService" Type="QueryService" /></Request>
-SameServiceTwice;<Request ID="889" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-SameServiceTwice;<Request ID="890" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
-SameServiceTwice;<Request ID="891" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
-SameServiceTwice;<Request ID="892" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
-SameServiceTwice;<Request ID="893" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
-SameServiceTwice;<Request ID="894" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-SameServiceTwice;<Request ID="895" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
-SameServiceTwice;<Request ID="896" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
-SameServiceTwice;<Request ID="897" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
-SameServiceTwice;<Request ID="898" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-SameServiceTwice;<Request ID="899" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
-SameServiceTwice;<Request ID="900" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-SameServiceTwice;<Request ID="901" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-SameServiceTwice;<Request ID="902" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
-SameServiceTwice;<Request ID="903" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-SameServiceTwice;<Request ID="904" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-SameServiceTwice;<Request ID="905" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
-SameServiceTwice;<Request ID="906" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-SameServiceTwice;<Request ID="907" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
-SameServiceTwice;<Request ID="908" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-SameServiceTwice;<Request ID="909" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-SameServiceTwice;<Request ID="910" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-SameServiceTwice;<Request ID="911" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
-SameServiceTwice;<Request ID="912" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
-SameServiceTwice;<Request ID="913" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
-SameServiceTwice;<Request ID="914" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-SameServiceTwice;<Request ID="915" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
-SameServiceTwice;<Request ID="916" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-SameServiceTwice;<Request ID="917" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-SameServiceTwice;<Request ID="918" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
-SameServiceTwice;<Request ID="919" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-SameServiceTwice;<Request ID="920" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-SameServiceTwice;<Request ID="921" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-SameServiceTwice;<Request ID="922" Action="CREATE"><FB Name="Service1RegisteredPos0" Type="TEST_CONDITION" /></Request>
-SameServiceTwice;<Request ID="923" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="924" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_2.IN1" /></Request>
-SameServiceTwice;<Request ID="925" Action="CREATE"><FB Name="BothServicesRegistered" Type="TEST_CONDITION" /></Request>
-SameServiceTwice;<Request ID="926" Action="CREATE"><FB Name="F_EQ_3" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="927" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start2" Destination="F_EQ_3.IN1" /></Request>
-SameServiceTwice;<Request ID="928" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="929" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ.IN1" /></Request>
-SameServiceTwice;<Request ID="930" Action="CREATE"><FB Name="F_EQ_2_1" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="931" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start2" Destination="F_EQ_2_1.IN1" /></Request>
-SameServiceTwice;<Request ID="932" Action="CREATE"><FB Name="F_EQ_3_1" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="933" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_3_1.IN1" /></Request>
-SameServiceTwice;<Request ID="934" Action="CREATE"><FB Name="Service2RegisteredPos0" Type="TEST_CONDITION" /></Request>
-SameServiceTwice;<Request ID="935" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="936" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start2" Destination="F_EQ_1.IN1" /></Request>
-SameServiceTwice;<Request ID="937" Action="CREATE"><FB Name="BothServicesNotRegistered" Type="TEST_CONDITION" /></Request>
-SameServiceTwice;<Request ID="938" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="939" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1.IN1" /></Request>
-SameServiceTwice;<Request ID="940" Action="CREATE"><FB Name="F_EQ_1_1_1" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="941" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1_1.IN1" /></Request>
-SameServiceTwice;<Request ID="942" Action="CREATE"><FB Name="Service2NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
-SameServiceTwice;<Request ID="943" Action="CREATE"><FB Name="F_EQ_4" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="944" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4.IN1" /></Request>
-SameServiceTwice;<Request ID="945" Action="CREATE"><FB Name="F_EQ_4_1" Type="F_EQ" /></Request>
-SameServiceTwice;<Request ID="946" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1.IN1" /></Request>
-SameServiceTwice;<Request ID="947" Action="CREATE"><FB Name="Service1NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
-SameServiceTwice;<Request ID="948" Action="CREATE"><FB Name="F_AND" Type="F_AND" /></Request>
-SameServiceTwice;<Request ID="949" Action="CREATE"><FB Name="E_MERGE" Type="E_MERGE" /></Request>
-SameServiceTwice;<Request ID="950" Action="CREATE"><FB Name="E_MERGE_1" Type="E_MERGE" /></Request>
-SameServiceTwice;<Request ID="951" Action="CREATE"><FB Name="F_AND_1" Type="F_AND" /></Request>
-SameServiceTwice;<Request ID="952" Action="CREATE"><FB Name="F_OR" Type="F_OR" /></Request>
-SameServiceTwice;<Request ID="953" Action="CREATE"><FB Name="F_AND_1_1" Type="F_AND" /></Request>
-SameServiceTwice;<Request ID="954" Action="CREATE"><FB Name="BOOL2BOOL" Type="BOOL2BOOL" /></Request>
-SameServiceTwice;<Request ID="955" Action="CREATE"><FB Name="BOOL2BOOL_1" Type="BOOL2BOOL" /></Request>
-SameServiceTwice;<Request ID="956" Action="CREATE"><FB Name="FieldsToArrowheadSystem_1" Type="FieldsToArrowheadSystem" /></Request>
-SameServiceTwice;<Request ID="957" Action="WRITE"><Connection Source="WSTRING#systemTestName2" Destination="FieldsToArrowheadSystem_1.systemName" /></Request>
-SameServiceTwice;<Request ID="958" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem_1.address" /></Request>
-SameServiceTwice;<Request ID="959" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem_1.port" /></Request>
-SameServiceTwice;<Request ID="960" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-SameServiceTwice;<Request ID="961" Action="WRITE"><Connection Source="WSTRIGN#sameServiceTwiceReady" Destination="PUBL_0.ID" /></Request>
+SameServiceTwice;<Request ID="867" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
+SameServiceTwice;<Request ID="868" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="Service1.serviceDefinition" /></Request>
+SameServiceTwice;<Request ID="869" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
+SameServiceTwice;<Request ID="870" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service1.serviceMetadata" /></Request>
+SameServiceTwice;<Request ID="871" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+SameServiceTwice;<Request ID="872" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+SameServiceTwice;<Request ID="873" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+SameServiceTwice;<Request ID="874" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
+SameServiceTwice;<Request ID="875" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
+SameServiceTwice;<Request ID="876" Action="WRITE"><Connection Source="1" Destination="GET_AT_INDEX_1.INDEX" /></Request>
+SameServiceTwice;<Request ID="877" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
+SameServiceTwice;<Request ID="878" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
+SameServiceTwice;<Request ID="879" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+SameServiceTwice;<Request ID="880" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
+SameServiceTwice;<Request ID="881" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
+SameServiceTwice;<Request ID="882" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
+SameServiceTwice;<Request ID="883" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+SameServiceTwice;<Request ID="884" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
+SameServiceTwice;<Request ID="885" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+SameServiceTwice;<Request ID="886" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+SameServiceTwice;<Request ID="887" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
+SameServiceTwice;<Request ID="888" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+SameServiceTwice;<Request ID="889" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+SameServiceTwice;<Request ID="890" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
+SameServiceTwice;<Request ID="891" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+SameServiceTwice;<Request ID="892" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
+SameServiceTwice;<Request ID="893" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+SameServiceTwice;<Request ID="894" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+SameServiceTwice;<Request ID="895" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+SameServiceTwice;<Request ID="896" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
+SameServiceTwice;<Request ID="897" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
+SameServiceTwice;<Request ID="898" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
+SameServiceTwice;<Request ID="899" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+SameServiceTwice;<Request ID="900" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
+SameServiceTwice;<Request ID="901" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+SameServiceTwice;<Request ID="902" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+SameServiceTwice;<Request ID="903" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
+SameServiceTwice;<Request ID="904" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+SameServiceTwice;<Request ID="905" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+SameServiceTwice;<Request ID="906" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+SameServiceTwice;<Request ID="907" Action="CREATE"><FB Name="Service1RegisteredPos0" Type="TEST_CONDITION" /></Request>
+SameServiceTwice;<Request ID="908" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="909" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_2.IN1" /></Request>
+SameServiceTwice;<Request ID="910" Action="CREATE"><FB Name="BothServicesRegistered" Type="TEST_CONDITION" /></Request>
+SameServiceTwice;<Request ID="911" Action="CREATE"><FB Name="F_EQ_3" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="912" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start2" Destination="F_EQ_3.IN1" /></Request>
+SameServiceTwice;<Request ID="913" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="914" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ.IN1" /></Request>
+SameServiceTwice;<Request ID="915" Action="CREATE"><FB Name="F_EQ_2_1" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="916" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start2" Destination="F_EQ_2_1.IN1" /></Request>
+SameServiceTwice;<Request ID="917" Action="CREATE"><FB Name="F_EQ_3_1" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="918" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_3_1.IN1" /></Request>
+SameServiceTwice;<Request ID="919" Action="CREATE"><FB Name="Service2RegisteredPos0" Type="TEST_CONDITION" /></Request>
+SameServiceTwice;<Request ID="920" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="921" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start2" Destination="F_EQ_1.IN1" /></Request>
+SameServiceTwice;<Request ID="922" Action="CREATE"><FB Name="BothServicesNotRegistered" Type="TEST_CONDITION" /></Request>
+SameServiceTwice;<Request ID="923" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="924" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1.IN1" /></Request>
+SameServiceTwice;<Request ID="925" Action="CREATE"><FB Name="F_EQ_1_1_1" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="926" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1_1.IN1" /></Request>
+SameServiceTwice;<Request ID="927" Action="CREATE"><FB Name="Service2NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
+SameServiceTwice;<Request ID="928" Action="CREATE"><FB Name="F_EQ_4" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="929" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4.IN1" /></Request>
+SameServiceTwice;<Request ID="930" Action="CREATE"><FB Name="F_EQ_4_1" Type="F_EQ" /></Request>
+SameServiceTwice;<Request ID="931" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1.IN1" /></Request>
+SameServiceTwice;<Request ID="932" Action="CREATE"><FB Name="Service1NotRegisteredPos1" Type="TEST_CONDITION" /></Request>
+SameServiceTwice;<Request ID="933" Action="CREATE"><FB Name="F_AND" Type="F_AND" /></Request>
+SameServiceTwice;<Request ID="934" Action="CREATE"><FB Name="E_MERGE" Type="E_MERGE" /></Request>
+SameServiceTwice;<Request ID="935" Action="CREATE"><FB Name="E_MERGE_1" Type="E_MERGE" /></Request>
+SameServiceTwice;<Request ID="936" Action="CREATE"><FB Name="F_AND_1" Type="F_AND" /></Request>
+SameServiceTwice;<Request ID="937" Action="CREATE"><FB Name="F_OR" Type="F_OR" /></Request>
+SameServiceTwice;<Request ID="938" Action="CREATE"><FB Name="F_AND_1_1" Type="F_AND" /></Request>
+SameServiceTwice;<Request ID="939" Action="CREATE"><FB Name="BOOL2BOOL" Type="BOOL2BOOL" /></Request>
+SameServiceTwice;<Request ID="940" Action="CREATE"><FB Name="BOOL2BOOL_1" Type="BOOL2BOOL" /></Request>
+SameServiceTwice;<Request ID="941" Action="CREATE"><FB Name="FieldsToArrowheadSystem_1" Type="FieldsToArrowheadSystem" /></Request>
+SameServiceTwice;<Request ID="942" Action="WRITE"><Connection Source="WSTRING#systemTestName2" Destination="FieldsToArrowheadSystem_1.systemName" /></Request>
+SameServiceTwice;<Request ID="943" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem_1.address" /></Request>
+SameServiceTwice;<Request ID="944" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem_1.port" /></Request>
+SameServiceTwice;<Request ID="945" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+SameServiceTwice;<Request ID="946" Action="WRITE"><Connection Source="WSTRIGN#sameServiceTwiceReady" Destination="PUBL_0.ID" /></Request>
+SameServiceTwice;<Request ID="947" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+SameServiceTwice;<Request ID="948" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
+SameServiceTwice;<Request ID="949" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
+SameServiceTwice;<Request ID="950" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
+SameServiceTwice;<Request ID="951" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
+SameServiceTwice;<Request ID="952" Action="CREATE"><FB Name="RegisterService2.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+SameServiceTwice;<Request ID="953" Action="CREATE"><FB Name="RegisterService1.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+SameServiceTwice;<Request ID="954" Action="CREATE"><FB Name="RegisterService1.RegisterService" Type="RegisterService" /></Request>
+SameServiceTwice;<Request ID="955" Action="CREATE"><FB Name="RegisterService1.E_SR" Type="E_SR" /></Request>
+SameServiceTwice;<Request ID="956" Action="CREATE"><FB Name="RegisterService1.E_SWITCH" Type="E_SWITCH" /></Request>
+SameServiceTwice;<Request ID="957" Action="CREATE"><FB Name="RegisterService1.E_REND" Type="E_REND" /></Request>
+SameServiceTwice;<Request ID="958" Action="CREATE"><FB Name="RegisterService1.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+SameServiceTwice;<Request ID="959" Action="CREATE"><FB Name="QueryServiceHTTPSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+SameServiceTwice;<Request ID="960" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryService" Type="QueryService" /></Request>
+SameServiceTwice;<Request ID="961" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
SameServiceTwice;<Request ID="962" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
SameServiceTwice;<Request ID="963" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
SameServiceTwice;<Request ID="964" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
-SameServiceTwice;<Request ID="965" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
-SameServiceTwice;<Request ID="966" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
+SameServiceTwice;<Request ID="965" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
+SameServiceTwice;<Request ID="966" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
SameServiceTwice;<Request ID="967" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService1.FieldsToServiceRegistryEntry.serviceURI" /></Request>
SameServiceTwice;<Request ID="968" Action="WRITE"><Connection Source="1" Destination="RegisterService1.FieldsToServiceRegistryEntry.version" /></Request>
SameServiceTwice;<Request ID="969" Action="WRITE"><Connection Source="false" Destination="RegisterService1.FieldsToServiceRegistryEntry.udp" /></Request>
-SameServiceTwice;<Request ID="970" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService1.FieldsToServiceRegistryEntry.metadata" /></Request>
-SameServiceTwice;<Request ID="971" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService1.RegisterService.endpoint" /></Request>
+SameServiceTwice;<Request ID="970" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService1.FieldsToServiceRegistryEntry.metadata" /></Request>
+SameServiceTwice;<Request ID="971" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService1.RegisterService.endpoint" /></Request>
SameServiceTwice;<Request ID="972" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.version" /></Request>
-SameServiceTwice;<Request ID="973" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub.QueryService.address" /></Request>
+SameServiceTwice;<Request ID="973" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub.QueryService.address" /></Request>
SameServiceTwice;<Request ID="974" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO0" Destination="RegisterService1.E_SR.S" /></Request>
SameServiceTwice;<Request ID="975" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO0" Destination="RegisterService1.FieldsToServiceRegistryEntry.REQ" /></Request>
SameServiceTwice;<Request ID="976" Action="CREATE"><Connection Source="Sequencer.E_DEMUX.EO0" Destination="RegisterService1.E_REND.EI1" /></Request>
@@ -1005,7 +1005,7 @@
SameServiceTwice;<Request ID="1,005" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.CNF" Destination="Sequencer.E_DEMUX_1_1.EI" /></Request>
SameServiceTwice;<Request ID="1,006" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.REQ" /></Request>
SameServiceTwice;<Request ID="1,007" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="F_EQ_1_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,008" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.INIT" /></Request>
+SameServiceTwice;<Request ID="1,008" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0.REQ" /></Request>
SameServiceTwice;<Request ID="1,009" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO3" Destination="Sequencer.E_MERGE.EI2" /></Request>
SameServiceTwice;<Request ID="1,010" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="Sequencer.E_MERGE.EI2" /></Request>
SameServiceTwice;<Request ID="1,011" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="Sequencer.E_MERGE.EI2" /></Request>
@@ -1020,756 +1020,756 @@
SameServiceTwice;<Request ID="1,020" Action="CREATE"><Connection Source="Sequencer.E_CTU.CV" Destination="Sequencer.F_GT_1.IN1" /></Request>
SameServiceTwice;<Request ID="1,021" Action="CREATE"><Connection Source="Sequencer.F_GT_1.OUT" Destination="Sequencer.E_SWITCH_1.G" /></Request>
SameServiceTwice;<Request ID="1,022" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.OUT" Destination="Sequencer.E_DEMUX_1_1.K" /></Request>
-SameServiceTwice;<Request ID="1,023" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="E_MERGE_1.EI1" /></Request>
-SameServiceTwice;<Request ID="1,024" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="E_MERGE_1.EI2" /></Request>
-SameServiceTwice;<Request ID="1,025" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
-SameServiceTwice;<Request ID="1,026" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
-SameServiceTwice;<Request ID="1,027" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
-SameServiceTwice;<Request ID="1,028" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
-SameServiceTwice;<Request ID="1,029" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
-SameServiceTwice;<Request ID="1,030" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
-SameServiceTwice;<Request ID="1,031" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
-SameServiceTwice;<Request ID="1,032" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
-SameServiceTwice;<Request ID="1,033" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneRegister" Destination="E_MERGE_1.EI1" /></Request>
-SameServiceTwice;<Request ID="1,034" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="E_MERGE_1.EI2" /></Request>
-SameServiceTwice;<Request ID="1,035" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO1" Destination="RegisterService1.RegisterService.register" /></Request>
-SameServiceTwice;<Request ID="1,036" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO0" Destination="RegisterService1.RegisterService.unregister" /></Request>
-SameServiceTwice;<Request ID="1,037" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService1.E_REND.EI2" /></Request>
-SameServiceTwice;<Request ID="1,038" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_SWITCH.EI" /></Request>
-SameServiceTwice;<Request ID="1,039" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_REND.R" /></Request>
-SameServiceTwice;<Request ID="1,040" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService1.RegisterService.serviceRegistryEntry" /></Request>
-SameServiceTwice;<Request ID="1,041" Action="CREATE"><Connection Source="RegisterService1.E_SR.Q" Destination="RegisterService1.E_SWITCH.G" /></Request>
-SameServiceTwice;<Request ID="1,042" Action="CREATE"><Connection Source="RegisterService1.RegisterService.registerService" Destination="RegisterService1.RegisterServiceHTTP_1.registerService" /></Request>
-SameServiceTwice;<Request ID="1,043" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub.QueryService.query" /></Request>
-SameServiceTwice;<Request ID="1,044" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
-SameServiceTwice;<Request ID="1,045" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub.QueryService.serviceQueryForm" /></Request>
-SameServiceTwice;<Request ID="1,046" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
-SameServiceTwice;<Request ID="1,047" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
-SameServiceTwice;<Request ID="1,048" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queryServices" Destination="QueryServiceHTTPSub.QueryServiceHTTP.queryServices" /></Request>
-SameServiceTwice;<Request ID="1,049" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
-SameServiceTwice;<Request ID="1,050" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
-SameServiceTwice;<Request ID="1,051" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
-SameServiceTwice;<Request ID="1,052" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-SameServiceTwice;<Request ID="1,053" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetURI.REQ" /></Request>
-SameServiceTwice;<Request ID="1,054" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.REQ" /></Request>
-SameServiceTwice;<Request ID="1,055" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,056" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.DI2S.REQ" /></Request>
-SameServiceTwice;<Request ID="1,057" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.REQ" /></Request>
-SameServiceTwice;<Request ID="1,058" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.S2WS.REQ" /></Request>
-SameServiceTwice;<Request ID="1,059" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_1" /></Request>
-SameServiceTwice;<Request ID="1,060" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.IN" /></Request>
-SameServiceTwice;<Request ID="1,061" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_3" /></Request>
-SameServiceTwice;<Request ID="1,062" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry.DI2S.IN" /></Request>
-SameServiceTwice;<Request ID="1,063" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_3.IN2" /></Request>
-SameServiceTwice;<Request ID="1,064" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ.IN2" /></Request>
-SameServiceTwice;<Request ID="1,065" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_3_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,066" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,067" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_1_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,068" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetURI.in_struct" /></Request>
-SameServiceTwice;<Request ID="1,069" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetPort.in_struct" /></Request>
-SameServiceTwice;<Request ID="1,070" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.in_struct" /></Request>
-SameServiceTwice;<Request ID="1,071" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.IN" /></Request>
-SameServiceTwice;<Request ID="1,072" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_1" /></Request>
-SameServiceTwice;<Request ID="1,073" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry.S2WS.IN" /></Request>
-SameServiceTwice;<Request ID="1,074" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_2" /></Request>
-SameServiceTwice;<Request ID="1,075" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.REQ" /></Request>
-SameServiceTwice;<Request ID="1,076" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.REQ" /></Request>
-SameServiceTwice;<Request ID="1,077" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.REQ" /></Request>
-SameServiceTwice;<Request ID="1,078" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-SameServiceTwice;<Request ID="1,079" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.REQ" /></Request>
-SameServiceTwice;<Request ID="1,080" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.REQ" /></Request>
-SameServiceTwice;<Request ID="1,081" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,082" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.REQ" /></Request>
-SameServiceTwice;<Request ID="1,083" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.REQ" /></Request>
-SameServiceTwice;<Request ID="1,084" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.REQ" /></Request>
-SameServiceTwice;<Request ID="1,085" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_1" /></Request>
-SameServiceTwice;<Request ID="1,086" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.IN" /></Request>
-SameServiceTwice;<Request ID="1,087" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_3" /></Request>
-SameServiceTwice;<Request ID="1,088" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.IN" /></Request>
-SameServiceTwice;<Request ID="1,089" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_2.IN2" /></Request>
-SameServiceTwice;<Request ID="1,090" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_2_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,091" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_1_1_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,092" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_4.IN2" /></Request>
-SameServiceTwice;<Request ID="1,093" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_4_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,094" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.in_struct" /></Request>
-SameServiceTwice;<Request ID="1,095" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.in_struct" /></Request>
-SameServiceTwice;<Request ID="1,096" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.in_struct" /></Request>
-SameServiceTwice;<Request ID="1,097" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.IN" /></Request>
-SameServiceTwice;<Request ID="1,098" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_1" /></Request>
-SameServiceTwice;<Request ID="1,099" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.IN" /></Request>
-SameServiceTwice;<Request ID="1,100" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_2" /></Request>
-SameServiceTwice;<Request ID="1,101" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,102" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-SameServiceTwice;<Request ID="1,103" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GET_AT_INDEX_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,104" Action="CREATE"><Connection Source="F_EQ_3.CNF" Destination="F_EQ_2.REQ" /></Request>
-SameServiceTwice;<Request ID="1,105" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="Service1RegisteredPos0.REQ" /></Request>
-SameServiceTwice;<Request ID="1,106" Action="CREATE"><Connection Source="F_EQ_3_1.CNF" Destination="F_EQ_2_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,107" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="Service2RegisteredPos0.REQ" /></Request>
-SameServiceTwice;<Request ID="1,108" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="F_EQ_1_1_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,109" Action="CREATE"><Connection Source="Service1RegisteredPos0.CNF" Destination="F_EQ_4.REQ" /></Request>
-SameServiceTwice;<Request ID="1,110" Action="CREATE"><Connection Source="F_EQ_4.CNF" Destination="Service2NotRegisteredPos1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,111" Action="CREATE"><Connection Source="Service2RegisteredPos0.CNF" Destination="F_EQ_4_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,112" Action="CREATE"><Connection Source="F_EQ_4_1.CNF" Destination="Service1NotRegisteredPos1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,113" Action="CREATE"><Connection Source="F_EQ_1_1_1.CNF" Destination="F_AND.REQ" /></Request>
-SameServiceTwice;<Request ID="1,114" Action="CREATE"><Connection Source="F_AND.CNF" Destination="BothServicesNotRegistered.REQ" /></Request>
-SameServiceTwice;<Request ID="1,115" Action="CREATE"><Connection Source="BothServicesRegistered.CNF" Destination="E_MERGE.EI1" /></Request>
-SameServiceTwice;<Request ID="1,116" Action="CREATE"><Connection Source="BothServicesNotRegistered.CNF" Destination="E_MERGE.EI2" /></Request>
-SameServiceTwice;<Request ID="1,117" Action="CREATE"><Connection Source="Service1NotRegisteredPos1.CNF" Destination="E_MERGE.EI2" /></Request>
-SameServiceTwice;<Request ID="1,118" Action="CREATE"><Connection Source="Service2NotRegisteredPos1.CNF" Destination="E_MERGE.EI2" /></Request>
-SameServiceTwice;<Request ID="1,119" Action="CREATE"><Connection Source="E_MERGE.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-SameServiceTwice;<Request ID="1,120" Action="CREATE"><Connection Source="E_MERGE_1.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-SameServiceTwice;<Request ID="1,121" Action="CREATE"><Connection Source="F_EQ_2_1.CNF" Destination="F_AND_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,122" Action="CREATE"><Connection Source="F_OR.CNF" Destination="BothServicesRegistered.REQ" /></Request>
-SameServiceTwice;<Request ID="1,123" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="F_AND_1_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,124" Action="CREATE"><Connection Source="F_AND_1.CNF" Destination="BOOL2BOOL.REQ" /></Request>
-SameServiceTwice;<Request ID="1,125" Action="CREATE"><Connection Source="BOOL2BOOL.CNF" Destination="F_EQ_3.REQ" /></Request>
-SameServiceTwice;<Request ID="1,126" Action="CREATE"><Connection Source="F_AND_1_1.CNF" Destination="BOOL2BOOL_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,127" Action="CREATE"><Connection Source="BOOL2BOOL_1.CNF" Destination="F_OR.REQ" /></Request>
-SameServiceTwice;<Request ID="1,128" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-SameServiceTwice;<Request ID="1,129" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-SameServiceTwice;<Request ID="1,130" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-SameServiceTwice;<Request ID="1,131" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-SameServiceTwice;<Request ID="1,132" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem_1.REQ" /></Request>
-SameServiceTwice;<Request ID="1,133" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-SameServiceTwice;<Request ID="1,134" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
-SameServiceTwice;<Request ID="1,135" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService1.FieldsToServiceRegistryEntry.providedService" /></Request>
-SameServiceTwice;<Request ID="1,136" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
-SameServiceTwice;<Request ID="1,137" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
-SameServiceTwice;<Request ID="1,138" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-SameServiceTwice;<Request ID="1,139" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-SameServiceTwice;<Request ID="1,140" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="Service1RegisteredPos0.check" /></Request>
-SameServiceTwice;<Request ID="1,141" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="Service2RegisteredPos0.check" /></Request>
-SameServiceTwice;<Request ID="1,142" Action="CREATE"><Connection Source="F_EQ_4.OUT" Destination="Service2NotRegisteredPos1.check" /></Request>
-SameServiceTwice;<Request ID="1,143" Action="CREATE"><Connection Source="F_EQ_4_1.OUT" Destination="Service1NotRegisteredPos1.check" /></Request>
-SameServiceTwice;<Request ID="1,144" Action="CREATE"><Connection Source="F_EQ_1_1.OUT" Destination="F_AND.IN1" /></Request>
-SameServiceTwice;<Request ID="1,145" Action="CREATE"><Connection Source="F_EQ_1_1_1.OUT" Destination="F_AND.IN2" /></Request>
-SameServiceTwice;<Request ID="1,146" Action="CREATE"><Connection Source="F_AND.OUT" Destination="BothServicesNotRegistered.check" /></Request>
-SameServiceTwice;<Request ID="1,147" Action="CREATE"><Connection Source="F_EQ_3_1.OUT" Destination="F_AND_1.IN1" /></Request>
-SameServiceTwice;<Request ID="1,148" Action="CREATE"><Connection Source="F_EQ_2_1.OUT" Destination="F_AND_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,149" Action="CREATE"><Connection Source="F_OR.OUT" Destination="BothServicesRegistered.check" /></Request>
-SameServiceTwice;<Request ID="1,150" Action="CREATE"><Connection Source="F_EQ_3.OUT" Destination="F_AND_1_1.IN1" /></Request>
-SameServiceTwice;<Request ID="1,151" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="F_AND_1_1.IN2" /></Request>
-SameServiceTwice;<Request ID="1,152" Action="CREATE"><Connection Source="F_AND_1.OUT" Destination="BOOL2BOOL.IN" /></Request>
-SameServiceTwice;<Request ID="1,153" Action="CREATE"><Connection Source="BOOL2BOOL.OUT" Destination="F_OR.IN1" /></Request>
-SameServiceTwice;<Request ID="1,154" Action="CREATE"><Connection Source="F_AND_1_1.OUT" Destination="BOOL2BOOL_1.IN" /></Request>
-SameServiceTwice;<Request ID="1,155" Action="CREATE"><Connection Source="BOOL2BOOL_1.OUT" Destination="F_OR.IN2" /></Request>
-SameServiceTwice;<Request ID="1,156" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
+SameServiceTwice;<Request ID="1,023" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
+SameServiceTwice;<Request ID="1,024" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
+SameServiceTwice;<Request ID="1,025" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
+SameServiceTwice;<Request ID="1,026" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+SameServiceTwice;<Request ID="1,027" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetURI.REQ" /></Request>
+SameServiceTwice;<Request ID="1,028" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.REQ" /></Request>
+SameServiceTwice;<Request ID="1,029" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,030" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.DI2S.REQ" /></Request>
+SameServiceTwice;<Request ID="1,031" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.REQ" /></Request>
+SameServiceTwice;<Request ID="1,032" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.S2WS.REQ" /></Request>
+SameServiceTwice;<Request ID="1,033" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_1" /></Request>
+SameServiceTwice;<Request ID="1,034" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.IN" /></Request>
+SameServiceTwice;<Request ID="1,035" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_3" /></Request>
+SameServiceTwice;<Request ID="1,036" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry.DI2S.IN" /></Request>
+SameServiceTwice;<Request ID="1,037" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_3.IN2" /></Request>
+SameServiceTwice;<Request ID="1,038" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ.IN2" /></Request>
+SameServiceTwice;<Request ID="1,039" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_3_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,040" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,041" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_1_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,042" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetURI.in_struct" /></Request>
+SameServiceTwice;<Request ID="1,043" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetPort.in_struct" /></Request>
+SameServiceTwice;<Request ID="1,044" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.in_struct" /></Request>
+SameServiceTwice;<Request ID="1,045" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.IN" /></Request>
+SameServiceTwice;<Request ID="1,046" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_1" /></Request>
+SameServiceTwice;<Request ID="1,047" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry.S2WS.IN" /></Request>
+SameServiceTwice;<Request ID="1,048" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_2" /></Request>
+SameServiceTwice;<Request ID="1,049" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.REQ" /></Request>
+SameServiceTwice;<Request ID="1,050" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.REQ" /></Request>
+SameServiceTwice;<Request ID="1,051" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.REQ" /></Request>
+SameServiceTwice;<Request ID="1,052" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+SameServiceTwice;<Request ID="1,053" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.REQ" /></Request>
+SameServiceTwice;<Request ID="1,054" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.REQ" /></Request>
+SameServiceTwice;<Request ID="1,055" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,056" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.REQ" /></Request>
+SameServiceTwice;<Request ID="1,057" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.REQ" /></Request>
+SameServiceTwice;<Request ID="1,058" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.REQ" /></Request>
+SameServiceTwice;<Request ID="1,059" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_1" /></Request>
+SameServiceTwice;<Request ID="1,060" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.IN" /></Request>
+SameServiceTwice;<Request ID="1,061" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_3" /></Request>
+SameServiceTwice;<Request ID="1,062" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.IN" /></Request>
+SameServiceTwice;<Request ID="1,063" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_2.IN2" /></Request>
+SameServiceTwice;<Request ID="1,064" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_2_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,065" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_1_1_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,066" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_4.IN2" /></Request>
+SameServiceTwice;<Request ID="1,067" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_4_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,068" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.in_struct" /></Request>
+SameServiceTwice;<Request ID="1,069" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.in_struct" /></Request>
+SameServiceTwice;<Request ID="1,070" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.in_struct" /></Request>
+SameServiceTwice;<Request ID="1,071" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.IN" /></Request>
+SameServiceTwice;<Request ID="1,072" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_1" /></Request>
+SameServiceTwice;<Request ID="1,073" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.IN" /></Request>
+SameServiceTwice;<Request ID="1,074" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_2" /></Request>
+SameServiceTwice;<Request ID="1,075" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="E_MERGE_1.EI1" /></Request>
+SameServiceTwice;<Request ID="1,076" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="E_MERGE_1.EI2" /></Request>
+SameServiceTwice;<Request ID="1,077" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
+SameServiceTwice;<Request ID="1,078" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
+SameServiceTwice;<Request ID="1,079" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
+SameServiceTwice;<Request ID="1,080" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
+SameServiceTwice;<Request ID="1,081" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
+SameServiceTwice;<Request ID="1,082" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
+SameServiceTwice;<Request ID="1,083" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
+SameServiceTwice;<Request ID="1,084" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceOpcUa.registerService" /></Request>
+SameServiceTwice;<Request ID="1,085" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneRegister" Destination="E_MERGE_1.EI1" /></Request>
+SameServiceTwice;<Request ID="1,086" Action="CREATE"><Connection Source="RegisterService1.RegisterService.doneUnregister" Destination="E_MERGE_1.EI2" /></Request>
+SameServiceTwice;<Request ID="1,087" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO1" Destination="RegisterService1.RegisterService.register" /></Request>
+SameServiceTwice;<Request ID="1,088" Action="CREATE"><Connection Source="RegisterService1.E_SWITCH.EO0" Destination="RegisterService1.RegisterService.unregister" /></Request>
+SameServiceTwice;<Request ID="1,089" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService1.E_REND.EI2" /></Request>
+SameServiceTwice;<Request ID="1,090" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_SWITCH.EI" /></Request>
+SameServiceTwice;<Request ID="1,091" Action="CREATE"><Connection Source="RegisterService1.E_REND.EO" Destination="RegisterService1.E_REND.R" /></Request>
+SameServiceTwice;<Request ID="1,092" Action="CREATE"><Connection Source="RegisterService1.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService1.RegisterService.serviceRegistryEntry" /></Request>
+SameServiceTwice;<Request ID="1,093" Action="CREATE"><Connection Source="RegisterService1.E_SR.Q" Destination="RegisterService1.E_SWITCH.G" /></Request>
+SameServiceTwice;<Request ID="1,094" Action="CREATE"><Connection Source="RegisterService1.RegisterService.registerService" Destination="RegisterService1.RegisterServiceOpcUa.registerService" /></Request>
+SameServiceTwice;<Request ID="1,095" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub.QueryService.query" /></Request>
+SameServiceTwice;<Request ID="1,096" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
+SameServiceTwice;<Request ID="1,097" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub.QueryService.serviceQueryForm" /></Request>
+SameServiceTwice;<Request ID="1,098" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
+SameServiceTwice;<Request ID="1,099" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
+SameServiceTwice;<Request ID="1,100" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queryServices" Destination="QueryServiceHTTPSub.QueryServiceOpcUa.queryServices" /></Request>
+SameServiceTwice;<Request ID="1,101" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+SameServiceTwice;<Request ID="1,102" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,103" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+SameServiceTwice;<Request ID="1,104" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GET_AT_INDEX_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,105" Action="CREATE"><Connection Source="F_EQ_3.CNF" Destination="F_EQ_2.REQ" /></Request>
+SameServiceTwice;<Request ID="1,106" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="Service1RegisteredPos0.REQ" /></Request>
+SameServiceTwice;<Request ID="1,107" Action="CREATE"><Connection Source="F_EQ_3_1.CNF" Destination="F_EQ_2_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,108" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="Service2RegisteredPos0.REQ" /></Request>
+SameServiceTwice;<Request ID="1,109" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="F_EQ_1_1_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,110" Action="CREATE"><Connection Source="Service1RegisteredPos0.CNF" Destination="F_EQ_4.REQ" /></Request>
+SameServiceTwice;<Request ID="1,111" Action="CREATE"><Connection Source="F_EQ_4.CNF" Destination="Service2NotRegisteredPos1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,112" Action="CREATE"><Connection Source="Service2RegisteredPos0.CNF" Destination="F_EQ_4_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,113" Action="CREATE"><Connection Source="F_EQ_4_1.CNF" Destination="Service1NotRegisteredPos1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,114" Action="CREATE"><Connection Source="F_EQ_1_1_1.CNF" Destination="F_AND.REQ" /></Request>
+SameServiceTwice;<Request ID="1,115" Action="CREATE"><Connection Source="F_AND.CNF" Destination="BothServicesNotRegistered.REQ" /></Request>
+SameServiceTwice;<Request ID="1,116" Action="CREATE"><Connection Source="BothServicesRegistered.CNF" Destination="E_MERGE.EI1" /></Request>
+SameServiceTwice;<Request ID="1,117" Action="CREATE"><Connection Source="BothServicesNotRegistered.CNF" Destination="E_MERGE.EI2" /></Request>
+SameServiceTwice;<Request ID="1,118" Action="CREATE"><Connection Source="Service1NotRegisteredPos1.CNF" Destination="E_MERGE.EI2" /></Request>
+SameServiceTwice;<Request ID="1,119" Action="CREATE"><Connection Source="Service2NotRegisteredPos1.CNF" Destination="E_MERGE.EI2" /></Request>
+SameServiceTwice;<Request ID="1,120" Action="CREATE"><Connection Source="E_MERGE.EO" Destination="Sequencer.F_GT.REQ" /></Request>
+SameServiceTwice;<Request ID="1,121" Action="CREATE"><Connection Source="E_MERGE_1.EO" Destination="Sequencer.F_GT.REQ" /></Request>
+SameServiceTwice;<Request ID="1,122" Action="CREATE"><Connection Source="F_EQ_2_1.CNF" Destination="F_AND_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,123" Action="CREATE"><Connection Source="F_OR.CNF" Destination="BothServicesRegistered.REQ" /></Request>
+SameServiceTwice;<Request ID="1,124" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="F_AND_1_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,125" Action="CREATE"><Connection Source="F_AND_1.CNF" Destination="BOOL2BOOL.REQ" /></Request>
+SameServiceTwice;<Request ID="1,126" Action="CREATE"><Connection Source="BOOL2BOOL.CNF" Destination="F_EQ_3.REQ" /></Request>
+SameServiceTwice;<Request ID="1,127" Action="CREATE"><Connection Source="F_AND_1_1.CNF" Destination="BOOL2BOOL_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,128" Action="CREATE"><Connection Source="BOOL2BOOL_1.CNF" Destination="F_OR.REQ" /></Request>
+SameServiceTwice;<Request ID="1,129" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem_1.REQ" /></Request>
+SameServiceTwice;<Request ID="1,130" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.CNF" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+SameServiceTwice;<Request ID="1,131" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+SameServiceTwice;<Request ID="1,132" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+SameServiceTwice;<Request ID="1,133" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
+SameServiceTwice;<Request ID="1,134" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+SameServiceTwice;<Request ID="1,135" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+SameServiceTwice;<Request ID="1,136" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="Service1RegisteredPos0.check" /></Request>
+SameServiceTwice;<Request ID="1,137" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="Service2RegisteredPos0.check" /></Request>
+SameServiceTwice;<Request ID="1,138" Action="CREATE"><Connection Source="F_EQ_4.OUT" Destination="Service2NotRegisteredPos1.check" /></Request>
+SameServiceTwice;<Request ID="1,139" Action="CREATE"><Connection Source="F_EQ_4_1.OUT" Destination="Service1NotRegisteredPos1.check" /></Request>
+SameServiceTwice;<Request ID="1,140" Action="CREATE"><Connection Source="F_EQ_1_1.OUT" Destination="F_AND.IN1" /></Request>
+SameServiceTwice;<Request ID="1,141" Action="CREATE"><Connection Source="F_EQ_1_1_1.OUT" Destination="F_AND.IN2" /></Request>
+SameServiceTwice;<Request ID="1,142" Action="CREATE"><Connection Source="F_AND.OUT" Destination="BothServicesNotRegistered.check" /></Request>
+SameServiceTwice;<Request ID="1,143" Action="CREATE"><Connection Source="F_EQ_3_1.OUT" Destination="F_AND_1.IN1" /></Request>
+SameServiceTwice;<Request ID="1,144" Action="CREATE"><Connection Source="F_EQ_2_1.OUT" Destination="F_AND_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,145" Action="CREATE"><Connection Source="F_OR.OUT" Destination="BothServicesRegistered.check" /></Request>
+SameServiceTwice;<Request ID="1,146" Action="CREATE"><Connection Source="F_EQ_3.OUT" Destination="F_AND_1_1.IN1" /></Request>
+SameServiceTwice;<Request ID="1,147" Action="CREATE"><Connection Source="F_EQ_2.OUT" Destination="F_AND_1_1.IN2" /></Request>
+SameServiceTwice;<Request ID="1,148" Action="CREATE"><Connection Source="F_AND_1.OUT" Destination="BOOL2BOOL.IN" /></Request>
+SameServiceTwice;<Request ID="1,149" Action="CREATE"><Connection Source="BOOL2BOOL.OUT" Destination="F_OR.IN1" /></Request>
+SameServiceTwice;<Request ID="1,150" Action="CREATE"><Connection Source="F_AND_1_1.OUT" Destination="BOOL2BOOL_1.IN" /></Request>
+SameServiceTwice;<Request ID="1,151" Action="CREATE"><Connection Source="BOOL2BOOL_1.OUT" Destination="F_OR.IN2" /></Request>
+SameServiceTwice;<Request ID="1,152" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
+SameServiceTwice;<Request ID="1,153" Action="CREATE"><Connection Source="FieldsToArrowheadSystem_1.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
+SameServiceTwice;<Request ID="1,154" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService1.FieldsToServiceRegistryEntry.providedService" /></Request>
+SameServiceTwice;<Request ID="1,155" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService1.FieldsToServiceRegistryEntry.provider" /></Request>
+SameServiceTwice;<Request ID="1,156" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
SameServiceTwice;<Request ID="1,157" Action="START"/>
;<Request ID="1,158" Action="CREATE"><FB Name="VersionInterfaceAndMetadata" Type="EMB_RES" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,159" Action="CREATE"><FB Name="RegisterServiceFullHTTP.FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,160" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,161" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,162" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService" Type="RegisterService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,163" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SR" Type="E_SR" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,164" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH" Type="E_SWITCH" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,165" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND" Type="E_REND" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,166" Action="CREATE"><FB Name="RegisterServiceFullHTTP.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,167" Action="CREATE"><FB Name="RegisterServiceFullHTTP.E_SR" Type="E_SR" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,168" Action="CREATE"><FB Name="RegisterServiceFullHTTP.E_SWITCH" Type="E_SWITCH" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,169" Action="CREATE"><FB Name="QueryServiceHTTPSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,170" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,171" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,172" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,173" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,174" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,175" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,176" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,177" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,178" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,179" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,180" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,181" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,182" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,183" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,184" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,185" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,186" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,187" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,188" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,189" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,190" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,191" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,192" Action="CREATE"><FB Name="F_EQ_4" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,193" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,194" Action="CREATE"><FB Name="LowerVersion" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,195" Action="CREATE"><FB Name="FieldsToArrowheadService_1" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,196" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,197" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,198" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,199" Action="CREATE"><FB Name="SameVersion" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,200" Action="CREATE"><FB Name="QueryServiceHTTPSub_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,201" Action="CREATE"><FB Name="QueryServiceHTTPSub_1.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,202" Action="CREATE"><FB Name="QueryServiceHTTPSub_1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,203" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,204" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,205" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,206" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,207" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,208" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,209" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,210" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,211" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,212" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,213" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,214" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,215" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,216" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,217" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,218" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,219" Action="CREATE"><FB Name="F_EQ_4_1" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,220" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_4_1.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,221" Action="CREATE"><FB Name="OneInterfaceOutOfTwo" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,222" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,223" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_1.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,224" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,225" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,226" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,227" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,228" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,229" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,230" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,231" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,232" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,233" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,234" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,235" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,236" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,237" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,238" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,239" Action="CREATE"><FB Name="F_EQ_4_1_1" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,240" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_4_1_1.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,241" Action="CREATE"><FB Name="FieldsToArrowheadService_1_1" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,242" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_1.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,243" Action="WRITE"><Connection Source="["XML"]" Destination="FieldsToArrowheadService_1_1.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,244" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_1.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,245" Action="CREATE"><FB Name="GET_AT_INDEX_1_1" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,246" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_1.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,247" Action="CREATE"><FB Name="OneInterfaceOutOfTwo_2" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,248" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,249" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,250" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,251" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,252" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,253" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,254" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,255" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,256" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,257" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,258" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,259" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,260" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,261" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,262" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,263" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,264" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,265" Action="CREATE"><FB Name="F_EQ_4_1_2" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,266" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_4_1_2.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,267" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,268" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,269" Action="WRITE"><Connection Source="["JSON"]" Destination="FieldsToArrowheadService_1_2.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,270" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_2.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,271" Action="CREATE"><FB Name="GET_AT_INDEX_1_2" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,272" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,273" Action="CREATE"><FB Name="WrongInterfaceProvided" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,274" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,275" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,276" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,277" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,278" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,279" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,280" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,281" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,282" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,283" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,284" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,285" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,286" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,287" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,288" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,289" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,290" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,291" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,292" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,293" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,294" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,295" Action="WRITE"><Connection Source="["JSON1"]" Destination="FieldsToArrowheadService_1_2_1.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,296" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_2_1.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,297" Action="CREATE"><FB Name="F_EQ_4_1_2_1" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,298" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,299" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,300" Action="WRITE"><Connection Source="WSTRIGN#sameServiceTwiceReady" Destination="SUBL_0.ID" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,301" Action="CREATE"><FB Name="OnlyOneMetadata" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,302" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,303" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,304" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,305" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,306" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,307" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,308" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,309" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,310" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,311" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,312" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,313" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,314" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,315" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,316" Action="CREATE"><FB Name="F_EQ_4_1_2_1_1" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,317" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1_1.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,318" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_1" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,319" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_1.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,320" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1_2_1_1.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,321" Action="WRITE"><Connection Source="["key1=value1"]" Destination="FieldsToArrowheadService_1_2_1_1.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,322" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_1" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,323" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_1.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,324" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,325" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,326" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,327" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,328" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,329" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,330" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,331" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,332" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,333" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,334" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,335" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,336" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,337" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,338" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,339" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,340" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,341" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,342" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,343" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,344" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_1_1" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,345" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_1_1.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,346" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1_2_1_1_1.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,347" Action="CREATE"><FB Name="F_EQ_4_1_2_1_1_1" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,348" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1_1_1.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,349" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_1_1" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,350" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_1_1.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,351" Action="CREATE"><FB Name="NoMetadataAndAsked" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,352" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_2" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,353" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_2.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,354" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_2_1_2.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,355" Action="CREATE"><FB Name="F_EQ_4_1_2_1_2" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,356" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1_2.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,357" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,358" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,359" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,360" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,361" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,362" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,363" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,364" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,365" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,366" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,367" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,368" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,369" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,370" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,371" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_2" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,372" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_2.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,373" Action="CREATE"><FB Name="NoInterfaceProvided" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,374" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,375" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_2.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,376" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_2.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,377" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_1_1_1" Type="GET_AT_INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,378" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_1_1_1.INDEX" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,379" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_1_1_1" Type="FieldsToArrowheadService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,380" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_1_1_1.serviceDefinition" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,381" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1_2_1_1_1_1.interfaces" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,382" Action="CREATE"><FB Name="WrongMetadaButNotAsked" Type="TEST_CONDITION" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,383" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,384" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService" Type="QueryService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,385" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1_1.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,386" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,387" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,388" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,389" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,390" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,391" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,392" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,393" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,394" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,395" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,396" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.member" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,397" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,398" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,399" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,400" Action="CREATE"><FB Name="F_EQ_4_1_2_1_1_1_1" Type="F_EQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,401" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_4_1_2_1_1_1_1.IN1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,402" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,403" Action="WRITE"><Connection Source="WSTRIGN#versionEnded" Destination="PUBL_0.ID" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,159" Action="CREATE"><FB Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,160" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,161" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,162" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,163" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,164" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,165" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,166" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,167" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,168" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,169" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,170" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,171" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,172" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,173" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,174" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,175" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,176" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,177" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,178" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,179" Action="CREATE"><FB Name="F_EQ_4" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,180" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,181" Action="CREATE"><FB Name="LowerVersion" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,182" Action="CREATE"><FB Name="FieldsToArrowheadService_1" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,183" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,184" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,185" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,186" Action="CREATE"><FB Name="SameVersion" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,187" Action="CREATE"><FB Name="GET_AT_INDEX_1" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,188" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,189" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,190" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,191" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,192" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,193" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,194" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,195" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,196" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,197" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,198" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,199" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,200" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,201" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,202" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,203" Action="CREATE"><FB Name="F_EQ_4_1" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,204" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_4_1.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,205" Action="CREATE"><FB Name="OneInterfaceOutOfTwo" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,206" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,207" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,208" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,209" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,210" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,211" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,212" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,213" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,214" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,215" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,216" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,217" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,218" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,219" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,220" Action="CREATE"><FB Name="F_EQ_4_1_1" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,221" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_4_1_1.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,222" Action="CREATE"><FB Name="FieldsToArrowheadService_1_1" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,223" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_1.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,224" Action="WRITE"><Connection Source="["XML"]" Destination="FieldsToArrowheadService_1_1.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,225" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_1.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,226" Action="CREATE"><FB Name="GET_AT_INDEX_1_1" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,227" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_1.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,228" Action="CREATE"><FB Name="OneInterfaceOutOfTwo_2" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,229" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,230" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,231" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,232" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,233" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,234" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,235" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,236" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,237" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,238" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,239" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,240" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,241" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,242" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,243" Action="CREATE"><FB Name="F_EQ_4_1_2" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,244" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_4_1_2.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,245" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,246" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,247" Action="WRITE"><Connection Source="["JSON"]" Destination="FieldsToArrowheadService_1_2.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,248" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_2.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,249" Action="CREATE"><FB Name="GET_AT_INDEX_1_2" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,250" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,251" Action="CREATE"><FB Name="WrongInterface" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,252" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,253" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,254" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,255" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,256" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,257" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,258" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,259" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,260" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,261" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,262" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,263" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,264" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,265" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,266" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,267" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,268" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,269" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,270" Action="WRITE"><Connection Source="["JSON1"]" Destination="FieldsToArrowheadService_1_2_1.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,271" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_2_1.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,272" Action="CREATE"><FB Name="F_EQ_4_1_2_1" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,273" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,274" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,275" Action="WRITE"><Connection Source="WSTRIGN#sameServiceTwiceReady" Destination="SUBL_0.ID" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,276" Action="CREATE"><FB Name="OnlyOneMetadata" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,277" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,278" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,279" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,280" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,281" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,282" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,283" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,284" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,285" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,286" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,287" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,288" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,289" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,290" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,291" Action="CREATE"><FB Name="F_EQ_4_1_2_1_1" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,292" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1_1.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,293" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_1" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,294" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_1.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,295" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1_2_1_1.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,296" Action="WRITE"><Connection Source="["key1=value1"]" Destination="FieldsToArrowheadService_1_2_1_1.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,297" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_1" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,298" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_1.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,299" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,300" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,301" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,302" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,303" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,304" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,305" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,306" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,307" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,308" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,309" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,310" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,311" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,312" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,313" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_1_1" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,314" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_1_1.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,315" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1_2_1_1_1.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,316" Action="CREATE"><FB Name="F_EQ_4_1_2_1_1_1" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,317" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1_1_1.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,318" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_1_1" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,319" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_1_1.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,320" Action="CREATE"><FB Name="NoMetadataAndAsked" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,321" Action="CREATE"><FB Name="F_EQ_4_1_2_1_2" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,322" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_4_1_2_1_2.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,323" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_2" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,324" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_2.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,325" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_2" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,326" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_2.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,327" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadService_1_2_1_2.serviceMetadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,328" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,329" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,330" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,331" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,332" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,333" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,334" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,335" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,336" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,337" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,338" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,339" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,340" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,341" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,342" Action="CREATE"><FB Name="NoInterface" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,343" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS" Type="WSTRING2WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,344" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S" Type="F_DINT_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,345" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,346" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,347" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort" Type="APPEND_STRING_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,348" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,349" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,350" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,351" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,352" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,353" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.member" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,354" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry" Type="ServiceRegistryEntry2ServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,355" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1" Type="F_WSTRING_TO_STRING" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,356" Action="CREATE"><FB Name="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI" Type="APPEND_STRING_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,357" Action="CREATE"><FB Name="GET_AT_INDEX_1_2_1_1_1_1" Type="GET_AT_INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,358" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_1_2_1_1_1_1.INDEX" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,359" Action="CREATE"><FB Name="F_EQ_4_1_2_1_1_1_1" Type="F_EQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,360" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_4_1_2_1_1_1_1.IN1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,361" Action="CREATE"><FB Name="WrongMetadaButNotAsked" Type="TEST_CONDITION" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,362" Action="CREATE"><FB Name="FieldsToArrowheadService_1_2_1_1_1_1" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,363" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="FieldsToArrowheadService_1_2_1_1_1_1.serviceDefinition" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,364" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="FieldsToArrowheadService_1_2_1_1_1_1.interfaces" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,365" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,366" Action="WRITE"><Connection Source="WSTRIGN#versionEnded" Destination="PUBL_0.ID" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,367" Action="CREATE"><FB Name="RegisterServiceFullHTTP.FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,368" Action="CREATE"><FB Name="RegisterServiceFullHTTP.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,369" Action="CREATE"><FB Name="RegisterServiceFullHTTP.E_SR" Type="E_SR" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,370" Action="CREATE"><FB Name="RegisterServiceFullHTTP.E_SWITCH" Type="E_SWITCH" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,371" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,372" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService" Type="RegisterService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,373" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SR" Type="E_SR" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,374" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SWITCH" Type="E_SWITCH" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,375" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND" Type="E_REND" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,376" Action="CREATE"><FB Name="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,377" Action="CREATE"><FB Name="QueryServiceHTTPSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,378" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,379" Action="CREATE"><FB Name="QueryServiceHTTPSub.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,380" Action="CREATE"><FB Name="QueryServiceHTTPSub_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,381" Action="CREATE"><FB Name="QueryServiceHTTPSub_1.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,382" Action="CREATE"><FB Name="QueryServiceHTTPSub_1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,383" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,384" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_1.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,385" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,386" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,387" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,388" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,389" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,390" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_2.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,391" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_2.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,392" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,393" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,394" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,395" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,396" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,397" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,398" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,399" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,400" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,401" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,402" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService" Type="QueryService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,403" Action="CREATE"><FB Name="QueryServiceHTTPSub_1_2_1_1_1_1.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,404" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.systemName" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,405" Action="WRITE"><Connection Source="localhost" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.address" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,406" Action="WRITE"><Connection Source="8090" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.port" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,406" Action="WRITE"><Connection Source="4840" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.port" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,407" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="RegisterServiceFullHTTP.FieldsToArrowheadService.serviceDefinition" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,408" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="RegisterServiceFullHTTP.FieldsToArrowheadService.interfaces" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,409" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="RegisterServiceFullHTTP.FieldsToArrowheadService.serviceMetadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,410" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.serviceURI" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,411" Action="WRITE"><Connection Source="1" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,412" Action="WRITE"><Connection Source="false" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.udp" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,413" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.metadata" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,414" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.endpoint" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,410" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.serviceURI" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,411" Action="WRITE"><Connection Source="1" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.version" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,412" Action="WRITE"><Connection Source="false" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.udp" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,413" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.metadata" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,414" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.endpoint" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,415" Action="WRITE"><Connection Source="0" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,416" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,416" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub.QueryService.address" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,417" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,418" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,418" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1.QueryService.address" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,419" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,420" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,421" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_1.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,421" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_1.QueryService.address" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,422" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.metadataSearch" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,423" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,424" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2.QueryService.address" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,425" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,426" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,427" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1.QueryService.address" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,428" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,429" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,430" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1.QueryService.address" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,431" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,432" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,433" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryService.address" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,434" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.metadataSearch" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,435" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,436" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_2.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,424" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_2.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,425" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.metadataSearch" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,426" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.version" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,427" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_2.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,428" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,429" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.version" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,430" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,431" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,432" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.version" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,433" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,434" Action="WRITE"><Connection Source="true" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,435" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.version" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,436" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryService.address" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,437" Action="WRITE"><Connection Source="false" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.metadataSearch" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,438" Action="WRITE"><Connection Source="1" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.version" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,439" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.address" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,440" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.doneRegister" Destination="FieldsToArrowheadService.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,441" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.doneUnregister" Destination="PUBL_0.INIT" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,442" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.register" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,443" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.unregister" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,444" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.CNF" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.EI2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,445" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.EO" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH.EI" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,446" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.EO" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.R" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,447" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.serviceRegistryEntry" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,448" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SR.Q" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SWITCH.G" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,449" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterService.registerService" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.RegisterServiceHTTP_1.registerService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,450" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadSystem.CNF" Destination="RegisterServiceFullHTTP.FieldsToArrowheadService.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,451" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadService.CNF" Destination="RegisterServiceFullHTTP.E_SWITCH.EI" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,452" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SR.S" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,453" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,454" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.EI1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,455" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_SR.R" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,456" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,457" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.E_REND.EI1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,458" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.provider" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,459" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SR.Q" Destination="RegisterServiceFullHTTP.E_SWITCH.G" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,460" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadService.arrowheadService" Destination="RegisterServiceFullHTTP.RegisterServicePartialHTTP.FieldsToServiceRegistryEntry.providedService" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,461" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,462" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,463" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,464" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,465" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queryServices" Destination="QueryServiceHTTPSub.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,466" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,467" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,468" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,469" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.CNF" Destination="F_EQ_4.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,470" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,471" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,472" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,473" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,474" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,475" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,476" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,477" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,478" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,479" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,480" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_4.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,481" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,482" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,483" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,484" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,485" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,486" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,487" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,488" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,489" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,490" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,491" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,492" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,493" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,494" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,495" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,496" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.CNF" Destination="F_EQ_4_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,497" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,498" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,499" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,500" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,501" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,502" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,503" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,504" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,505" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,506" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,507" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_4_1.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,508" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,509" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,510" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,511" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,512" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,513" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,514" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,515" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_1.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,516" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,517" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_1.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,518" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_1.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,519" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_1.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,520" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,521" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,522" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,523" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.CNF" Destination="F_EQ_4_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,524" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,525" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,526" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,527" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,528" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,529" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,530" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,531" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,532" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,533" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,534" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.OUT" Destination="F_EQ_4_1_1.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,535" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,536" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,537" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,538" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,539" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,540" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,541" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,542" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,543" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.QueryService.queried" Destination="GET_AT_INDEX_1_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,544" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,545" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,546" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,547" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,548" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,549" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,550" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.S2WS.CNF" Destination="F_EQ_4_1_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,551" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,552" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,553" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,554" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,555" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,556" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,557" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,558" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,559" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,560" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,561" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.S2WS.OUT" Destination="F_EQ_4_1_2.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,562" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,563" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,564" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,565" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,566" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,567" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,568" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,569" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,570" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,571" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,572" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,573" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,574" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,575" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,576" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,577" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.CNF" Destination="F_EQ_4_1_2_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,578" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,579" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,580" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,581" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,582" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,583" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,584" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,585" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,586" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,587" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,588" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.OUT" Destination="F_EQ_4_1_2_1.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,589" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,590" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,591" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,592" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,593" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,594" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,595" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,596" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,597" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,598" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,599" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.CNF" Destination="F_EQ_4_1_2_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,600" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,601" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,602" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,603" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,604" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,605" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,606" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,607" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,608" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,609" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,610" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.OUT" Destination="F_EQ_4_1_2_1_1.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,611" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,612" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,613" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,614" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,615" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,616" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,617" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,618" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_1.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,619" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,620" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_1.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,621" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_1.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,622" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_1.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,623" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,624" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,625" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,626" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_1_1.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,627" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,628" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,629" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,630" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,631" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.CNF" Destination="F_EQ_4_1_2_1_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,632" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,633" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,634" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,635" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,636" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,637" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,638" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,639" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,640" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,641" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,642" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.OUT" Destination="F_EQ_4_1_2_1_1_1.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,643" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,644" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,645" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,646" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,647" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,648" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,649" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,650" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,651" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,652" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,653" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.CNF" Destination="F_EQ_4_1_2_1_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,654" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,655" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,656" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,657" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,658" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,659" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,660" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,661" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,662" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,663" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,664" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.OUT" Destination="F_EQ_4_1_2_1_2.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,665" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,666" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,667" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,668" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,669" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,670" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,671" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,672" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_2.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,673" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,674" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_2.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,675" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_2.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,676" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_2.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,677" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.query" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,678" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_1_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,679" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.serviceQueryForm" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,680" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_1_1_1.IN_ARRAY" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,681" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryServiceHTTP.queryServices" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,682" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,683" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,684" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,685" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.CNF" Destination="F_EQ_4_1_2_1_1_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,686" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,687" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,688" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,689" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,690" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,691" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,692" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,693" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,694" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.IN_3" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,695" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,696" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.OUT" Destination="F_EQ_4_1_2_1_1_1_1.IN2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,697" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,698" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,699" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.in_struct" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,700" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,701" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.IN_1" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,702" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,703" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.IN_2" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,704" Action="CREATE"><Connection Source="FieldsToArrowheadService.CNF" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,705" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,706" Action="CREATE"><Connection Source="F_EQ_4.CNF" Destination="LowerVersion.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,707" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.CNF" Destination="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,708" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,709" Action="CREATE"><Connection Source="F_EQ_4_1.CNF" Destination="SameVersion.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,710" Action="CREATE"><Connection Source="F_EQ_4_1_1.CNF" Destination="OneInterfaceOutOfTwo.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,711" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_1.CNF" Destination="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,712" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,713" Action="CREATE"><Connection Source="F_EQ_4_1_2.CNF" Destination="OneInterfaceOutOfTwo_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,714" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2.CNF" Destination="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,715" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,716" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,717" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1.CNF" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,718" Action="CREATE"><Connection Source="F_EQ_4_1_2_1.CNF" Destination="WrongInterfaceProvided.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,719" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1.CNF" Destination="OnlyOneMetadata.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,720" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,721" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1.CNF" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,722" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,723" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,724" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1.CNF" Destination="NoMetadataAndAsked.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,725" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,726" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,727" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_2.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,728" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_2.CNF" Destination="NoInterfaceProvided.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,729" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_2.CNF" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,730" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1_1.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,731" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,732" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1_1.CNF" Destination="WrongMetadaButNotAsked.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,733" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,734" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="RegisterServiceFullHTTP.E_SR.S" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,735" Action="CREATE"><Connection Source="LowerVersion.CNF" Destination="FieldsToArrowheadService_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,736" Action="CREATE"><Connection Source="SameVersion.CNF" Destination="FieldsToArrowheadService_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,737" Action="CREATE"><Connection Source="OneInterfaceOutOfTwo.CNF" Destination="FieldsToArrowheadService_1_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,738" Action="CREATE"><Connection Source="OneInterfaceOutOfTwo_2.CNF" Destination="FieldsToArrowheadService_1_2_1_2.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,739" Action="CREATE"><Connection Source="NoInterfaceProvided.CNF" Destination="FieldsToArrowheadService_1_2_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,740" Action="CREATE"><Connection Source="WrongInterfaceProvided.CNF" Destination="FieldsToArrowheadService_1_2_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,741" Action="CREATE"><Connection Source="OnlyOneMetadata.CNF" Destination="FieldsToArrowheadService_1_2_1_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,742" Action="CREATE"><Connection Source="NoMetadataAndAsked.CNF" Destination="FieldsToArrowheadService_1_2_1_1_1_1.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,743" Action="CREATE"><Connection Source="WrongMetadaButNotAsked.CNF" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,744" Action="CREATE"><Connection Source="WrongMetadaButNotAsked.CNF" Destination="RegisterServiceFullHTTP.E_SR.R" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,745" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,746" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,747" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,748" Action="CREATE"><Connection Source="F_EQ_4.OUT" Destination="LowerVersion.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,749" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.arrowheadService" Destination="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,750" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,751" Action="CREATE"><Connection Source="F_EQ_4_1.OUT" Destination="SameVersion.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,752" Action="CREATE"><Connection Source="F_EQ_4_1_1.OUT" Destination="OneInterfaceOutOfTwo.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,753" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,754" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,755" Action="CREATE"><Connection Source="F_EQ_4_1_2.OUT" Destination="OneInterfaceOutOfTwo_2.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,756" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2.arrowheadService" Destination="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,757" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,758" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,759" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,760" Action="CREATE"><Connection Source="F_EQ_4_1_2_1.OUT" Destination="WrongInterfaceProvided.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,761" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1.OUT" Destination="OnlyOneMetadata.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,762" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,763" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,764" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,765" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,766" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1.OUT" Destination="NoMetadataAndAsked.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,767" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_2.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,768" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_2.OUT" Destination="NoInterfaceProvided.check" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,769" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_2.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,770" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.service" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,771" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
-VersionInterfaceAndMetadata;<Request ID="1,772" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1_1.OUT" Destination="WrongMetadaButNotAsked.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,439" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.address" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,440" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,441" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,442" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,443" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.CNF" Destination="F_EQ_4.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,444" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,445" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,446" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,447" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,448" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,449" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,450" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,451" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,452" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,453" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,454" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.S2WS.OUT" Destination="F_EQ_4.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,455" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,456" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,457" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,458" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,459" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,460" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,461" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,462" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,463" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,464" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,465" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.CNF" Destination="F_EQ_4_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,466" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,467" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,468" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,469" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,470" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,471" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,472" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,473" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,474" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,475" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,476" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.S2WS.OUT" Destination="F_EQ_4_1.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,477" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,478" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,479" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,480" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,481" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,482" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,483" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,484" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,485" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,486" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,487" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.CNF" Destination="F_EQ_4_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,488" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,489" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,490" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,491" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,492" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,493" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,494" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,495" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,496" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,497" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,498" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.S2WS.OUT" Destination="F_EQ_4_1_1.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,499" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,500" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,501" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,502" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,503" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,504" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,505" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,506" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,507" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,508" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,509" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.S2WS.CNF" Destination="F_EQ_4_1_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,510" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,511" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,512" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,513" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,514" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,515" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,516" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,517" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,518" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,519" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,520" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.S2WS.OUT" Destination="F_EQ_4_1_2.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,521" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,522" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,523" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,524" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,525" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,526" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,527" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,528" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,529" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,530" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,531" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.CNF" Destination="F_EQ_4_1_2_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,532" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,533" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,534" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,535" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,536" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,537" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,538" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,539" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,540" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,541" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,542" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.OUT" Destination="F_EQ_4_1_2_1.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,543" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,544" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,545" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,546" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,547" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,548" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,549" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,550" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,551" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,552" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,553" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.CNF" Destination="F_EQ_4_1_2_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,554" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,555" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,556" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,557" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,558" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,559" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,560" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,561" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,562" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,563" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,564" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.OUT" Destination="F_EQ_4_1_2_1_1.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,565" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,566" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,567" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,568" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,569" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,570" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,571" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,572" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,573" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,574" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,575" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.CNF" Destination="F_EQ_4_1_2_1_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,576" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,577" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,578" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,579" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,580" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,581" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,582" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,583" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,584" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,585" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,586" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.OUT" Destination="F_EQ_4_1_2_1_1_1.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,587" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,588" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,589" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,590" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,591" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,592" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,593" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,594" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,595" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,596" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,597" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.CNF" Destination="F_EQ_4_1_2_1_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,598" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,599" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,600" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,601" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,602" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,603" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,604" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,605" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,606" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,607" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,608" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.OUT" Destination="F_EQ_4_1_2_1_2.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,609" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,610" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,611" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,612" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,613" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,614" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,615" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,616" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,617" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,618" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,619" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.CNF" Destination="F_EQ_4_1_2_1_1_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,620" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,621" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,622" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,623" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,624" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,625" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,626" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,627" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,628" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.IN_3" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,629" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.DI2S.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,630" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.OUT" Destination="F_EQ_4_1_2_1_1_1_1.IN2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,631" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,632" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetPort.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,633" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetAddress.in_struct" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,634" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.GetURI.output" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,635" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.IN_1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,636" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.S2WS.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,637" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.IpPortURI.IN_2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,638" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.doneRegister" Destination="FieldsToArrowheadService.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,639" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.doneUnregister" Destination="PUBL_0.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,640" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.register" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,641" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.unregister" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,642" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.CNF" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND.EI2" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,643" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND.EO" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SWITCH.EI" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,644" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND.EO" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND.R" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,645" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.serviceRegistryEntry" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,646" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SR.Q" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SWITCH.G" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,647" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterService.registerService" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.RegisterServiceOpcUa.registerService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,648" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadSystem.CNF" Destination="RegisterServiceFullHTTP.FieldsToArrowheadService.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,649" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadService.CNF" Destination="RegisterServiceFullHTTP.E_SWITCH.EI" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,650" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SR.S" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,651" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,652" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO1" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND.EI1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,653" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_SR.R" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,654" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,655" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SWITCH.EO0" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.E_REND.EI1" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,656" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.E_SR.Q" Destination="RegisterServiceFullHTTP.E_SWITCH.G" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,657" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadService.arrowheadService" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.providedService" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,658" Action="CREATE"><Connection Source="RegisterServiceFullHTTP.FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterServiceFullHTTP.RegisterServicePartialOpcUa.FieldsToServiceRegistryEntry.provider" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,659" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,660" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,661" Action="CREATE"><Connection Source="QueryServiceHTTPSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,662" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,663" Action="CREATE"><Connection Source="QueryServiceHTTPSub.QueryService.queryServices" Destination="QueryServiceHTTPSub.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,664" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,665" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.QueryService.queried" Destination="GET_AT_INDEX_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,666" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,667" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,668" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,669" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_1.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,670" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,671" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_1.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,672" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_1.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,673" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_1.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,674" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,675" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.QueryService.queried" Destination="GET_AT_INDEX_1_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,676" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,677" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,678" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,679" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_2.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,680" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,681" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_2.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,682" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_2.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,683" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_2.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_2.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,684" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,685" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,686" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,687" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,688" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,689" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_1.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,690" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,691" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_1.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,692" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_1.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,693" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_1.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,694" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,695" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,696" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,697" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_1_1.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,698" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_1_1.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,699" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.query" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,700" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.queried" Destination="GET_AT_INDEX_1_2_1_1_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,701" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.serviceQueryForm" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,702" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_2_1_1_1_1.IN_ARRAY" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,703" Action="CREATE"><Connection Source="QueryServiceHTTPSub_1_2_1_1_1_1.QueryService.queryServices" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.QueryServiceOpcUa.queryServices" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,704" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,705" Action="CREATE"><Connection Source="F_EQ_4.CNF" Destination="LowerVersion.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,706" Action="CREATE"><Connection Source="LowerVersion.CNF" Destination="FieldsToArrowheadService_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,707" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,708" Action="CREATE"><Connection Source="F_EQ_4_1.CNF" Destination="SameVersion.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,709" Action="CREATE"><Connection Source="F_EQ_4_1_1.CNF" Destination="OneInterfaceOutOfTwo.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,710" Action="CREATE"><Connection Source="SameVersion.CNF" Destination="FieldsToArrowheadService_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,711" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,712" Action="CREATE"><Connection Source="F_EQ_4_1_2.CNF" Destination="OneInterfaceOutOfTwo_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,713" Action="CREATE"><Connection Source="OneInterfaceOutOfTwo.CNF" Destination="FieldsToArrowheadService_1_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,714" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,715" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,716" Action="CREATE"><Connection Source="F_EQ_4_1_2_1.CNF" Destination="WrongInterface.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,717" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1.CNF" Destination="OnlyOneMetadata.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,718" Action="CREATE"><Connection Source="WrongInterface.CNF" Destination="FieldsToArrowheadService_1_2_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,719" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,720" Action="CREATE"><Connection Source="OnlyOneMetadata.CNF" Destination="FieldsToArrowheadService_1_2_1_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,721" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,722" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1.CNF" Destination="NoMetadataAndAsked.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,723" Action="CREATE"><Connection Source="OneInterfaceOutOfTwo_2.CNF" Destination="FieldsToArrowheadService_1_2_1_2.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,724" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_2.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,725" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_2.CNF" Destination="NoInterface.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,726" Action="CREATE"><Connection Source="NoInterface.CNF" Destination="FieldsToArrowheadService_1_2_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,727" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,728" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1_1.CNF" Destination="WrongMetadaButNotAsked.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,729" Action="CREATE"><Connection Source="NoMetadataAndAsked.CNF" Destination="FieldsToArrowheadService_1_2_1_1_1_1.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,730" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,731" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,732" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,733" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="RegisterServiceFullHTTP.E_SR.S" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,734" Action="CREATE"><Connection Source="WrongMetadaButNotAsked.CNF" Destination="RegisterServiceFullHTTP.FieldsToArrowheadSystem.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,735" Action="CREATE"><Connection Source="WrongMetadaButNotAsked.CNF" Destination="RegisterServiceFullHTTP.E_SR.R" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,736" Action="CREATE"><Connection Source="FieldsToArrowheadService.CNF" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,737" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.CNF" Destination="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,738" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_1.CNF" Destination="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,739" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2.CNF" Destination="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,740" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_2.CNF" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,741" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1.CNF" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,742" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1.CNF" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,743" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,744" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1_1.CNF" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.REQ" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,745" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,746" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,747" Action="CREATE"><Connection Source="F_EQ_4.OUT" Destination="LowerVersion.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,748" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,749" Action="CREATE"><Connection Source="F_EQ_4_1.OUT" Destination="SameVersion.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,750" Action="CREATE"><Connection Source="F_EQ_4_1_1.OUT" Destination="OneInterfaceOutOfTwo.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,751" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,752" Action="CREATE"><Connection Source="F_EQ_4_1_2.OUT" Destination="OneInterfaceOutOfTwo_2.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,753" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,754" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,755" Action="CREATE"><Connection Source="F_EQ_4_1_2_1.OUT" Destination="WrongInterface.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,756" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1.OUT" Destination="OnlyOneMetadata.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,757" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,758" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,759" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1.OUT" Destination="NoMetadataAndAsked.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,760" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_2.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_2.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,761" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_2.OUT" Destination="NoInterface.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,762" Action="CREATE"><Connection Source="GET_AT_INDEX_1_2_1_1_1_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1_2_1_1_1_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,763" Action="CREATE"><Connection Source="F_EQ_4_1_2_1_1_1_1.OUT" Destination="WrongMetadaButNotAsked.check" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,764" Action="CREATE"><Connection Source="FieldsToArrowheadService.arrowheadService" Destination="QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,765" Action="CREATE"><Connection Source="FieldsToArrowheadService_1.arrowheadService" Destination="QueryServiceHTTPSub_1.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,766" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_1.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,767" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2.arrowheadService" Destination="QueryServiceHTTPSub_1_2.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,768" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_2.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_2.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,769" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,770" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_1.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,771" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_1_1.FieldsToServiceQueryForm.service" /></Request>
+VersionInterfaceAndMetadata;<Request ID="1,772" Action="CREATE"><Connection Source="FieldsToArrowheadService_1_2_1_1_1_1.arrowheadService" Destination="QueryServiceHTTPSub_1_2_1_1_1_1.FieldsToServiceQueryForm.service" /></Request>
VersionInterfaceAndMetadata;<Request ID="1,773" Action="START"/>
;<Request ID="1,774" Action="CREATE"><FB Name="RegisterMoreServicesSubApp" Type="EMB_RES" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,775" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
@@ -1807,7 +1807,7 @@
RegisterMoreServicesSubApp;<Request ID="1,807" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,808" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,809" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,810" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,810" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,811" Action="CREATE"><FB Name="F_EQ_2" Type="F_EQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,812" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_2.IN1" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,813" Action="CREATE"><FB Name="GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
@@ -1865,78 +1865,78 @@
RegisterMoreServicesSubApp;<Request ID="1,865" Action="WRITE"><Connection Source="0" Destination="GET_AT_INDEX_2.INDEX" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,866" Action="CREATE"><FB Name="Pos0Service1" Type="TEST_CONDITION" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,867" Action="CREATE"><FB Name="F_EQ_3" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,868" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_3.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,868" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_3.IN1" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,869" Action="CREATE"><FB Name="F_EQ_3_1" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,870" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start2" Destination="F_EQ_3_1.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,870" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start2" Destination="F_EQ_3_1.IN1" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,871" Action="CREATE"><FB Name="Pos0Service2" Type="TEST_CONDITION" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,872" Action="CREATE"><FB Name="PUBL_0_1" Type="PUBL_0" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,873" Action="WRITE"><Connection Source="test6Ended" Destination="PUBL_0_1.ID" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,874" Action="CREATE"><FB Name="QuerySecondService.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,875" Action="CREATE"><FB Name="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,876" Action="CREATE"><FB Name="QuerySecondService.QueryServiceHTTPSub.QueryService" Type="QueryService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,877" Action="CREATE"><FB Name="QuerySecondService.QueryServiceHTTPSub.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,878" Action="CREATE"><FB Name="QueryFirstService.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,879" Action="CREATE"><FB Name="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,880" Action="CREATE"><FB Name="QueryFirstService.QueryServiceHTTPSub.QueryService" Type="QueryService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,881" Action="CREATE"><FB Name="QueryFirstService.QueryServiceHTTPSub.QueryServiceHTTP" Type="QueryServiceHTTP" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,882" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,883" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1.IN1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,884" Action="CREATE"><FB Name="F_EQ_3_1_1" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,885" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3_1_1.IN1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,886" Action="CREATE"><FB Name="Pos1Empty3" Type="TEST_CONDITION" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,887" Action="CREATE"><FB Name="Pos0Empty3" Type="TEST_CONDITION" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,888" Action="CREATE"><FB Name="F_EQ_1_1_1" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,889" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1_1.IN1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,890" Action="CREATE"><FB Name="Pos0Empty4" Type="TEST_CONDITION" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,891" Action="CREATE"><FB Name="Pos1Empty4" Type="TEST_CONDITION" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,892" Action="CREATE"><FB Name="F_EQ_3_1_1_1" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,893" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3_1_1_1.IN1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,894" Action="CREATE"><FB Name="E_MERGE" Type="E_MERGE" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,895" Action="CREATE"><FB Name="E_MERGE_1" Type="E_MERGE" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,896" Action="CREATE"><FB Name="RegisterManyServices.Reset" Type="E_MERGE" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,897" Action="CREATE"><FB Name="RegisterManyServices.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,898" Action="CREATE"><FB Name="RegisterManyServices.RegUnreg" Type="E_SWITCH" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,899" Action="CREATE"><FB Name="RegisterManyServices.Register" Type="E_SR" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,900" Action="CREATE"><FB Name="RegisterManyServices.RegisterService" Type="RegisterService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,901" Action="CREATE"><FB Name="RegisterManyServices.RegisterServiceHTTP" Type="RegisterServiceHTTP" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,902" Action="CREATE"><FB Name="RegisterManyServices.RegUnregDone" Type="E_SWITCH" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,903" Action="CREATE"><FB Name="RegisterManyServices.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,904" Action="CREATE"><FB Name="RegisterManyServices.GetName" Type="GET_AT_INDEX" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,905" Action="CREATE"><FB Name="RegisterManyServices.E_CTU" Type="E_CTU" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,906" Action="CREATE"><FB Name="RegisterManyServices.E_SWITCH" Type="E_SWITCH" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,907" Action="CREATE"><FB Name="RegisterManyServices.WSTRING2WSTRING" Type="WSTRING2WSTRING" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,908" Action="CREATE"><FB Name="RegisterManyServices.IsLast" Type="F_EQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,909" Action="WRITE"><Connection Source="WSTRING#""" Destination="RegisterManyServices.IsLast.IN1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,910" Action="CREATE"><FB Name="RegisterManyServices.GetURI" Type="GET_AT_INDEX" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,911" Action="CREATE"><FB Name="RegisterManyServices.E_SPLIT" Type="E_SPLIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,912" Action="CREATE"><FB Name="RegisterManyServices.PermitUnreg" Type="E_PERMIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,913" Action="CREATE"><FB Name="RegisterManyServices.F_NOT" Type="F_NOT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,914" Action="CREATE"><FB Name="RegisterManyServices.PermitReg" Type="E_PERMIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,915" Action="CREATE"><FB Name="RegisterManyServices.Regblock" Type="E_SR" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,916" Action="CREATE"><FB Name="RegisterManyServices.F_NOT_1" Type="F_NOT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,917" Action="CREATE"><FB Name="RegisterManyServices.UnRegBlock" Type="E_SR" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,918" Action="CREATE"><FB Name="RegisterManyServices.ARRAY2ARRAY_10_WSTRING" Type="ARRAY2ARRAY_10_WSTRING" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,919" Action="CREATE"><FB Name="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1" Type="ARRAY2ARRAY_10_WSTRING" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,920" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="QuerySecondService.FieldsToArrowheadService.serviceDefinition" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,921" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="QuerySecondService.FieldsToArrowheadService.interfaces" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,922" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="QuerySecondService.FieldsToArrowheadService.serviceMetadata" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,923" Action="WRITE"><Connection Source="false" Destination="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm.metadataSearch" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,924" Action="WRITE"><Connection Source="1" Destination="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm.version" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,925" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QuerySecondService.QueryServiceHTTPSub.QueryService.address" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,926" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="QueryFirstService.FieldsToArrowheadService.serviceDefinition" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,927" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="QueryFirstService.FieldsToArrowheadService.interfaces" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,928" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="QueryFirstService.FieldsToArrowheadService.serviceMetadata" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,929" Action="WRITE"><Connection Source="false" Destination="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm.metadataSearch" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,930" Action="WRITE"><Connection Source="1" Destination="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm.version" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,931" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="QueryFirstService.QueryServiceHTTPSub.QueryService.address" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,932" Action="WRITE"><Connection Source="["serviceTest", "serviceTest2"]" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.IN" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,933" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="RegisterManyServices.FieldsToArrowheadService.interfaces" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,934" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="RegisterManyServices.FieldsToArrowheadService.serviceMetadata" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,935" Action="WRITE"><Connection Source="["/serviceTest/start", "/serviceTest/start2"]" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.IN" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,936" Action="WRITE"><Connection Source="1" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.version" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,937" Action="WRITE"><Connection Source="false" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.udp" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,938" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.metadata" /></Request>
-RegisterMoreServicesSubApp;<Request ID="1,939" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterManyServices.RegisterService.endpoint" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,874" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,875" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,876" Action="CREATE"><FB Name="F_EQ_3_1_1" Type="F_EQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,877" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3_1_1.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,878" Action="CREATE"><FB Name="Pos1Empty3" Type="TEST_CONDITION" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,879" Action="CREATE"><FB Name="Pos0Empty3" Type="TEST_CONDITION" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,880" Action="CREATE"><FB Name="F_EQ_1_1_1" Type="F_EQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,881" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_1_1_1.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,882" Action="CREATE"><FB Name="Pos0Empty4" Type="TEST_CONDITION" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,883" Action="CREATE"><FB Name="Pos1Empty4" Type="TEST_CONDITION" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,884" Action="CREATE"><FB Name="F_EQ_3_1_1_1" Type="F_EQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,885" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ_3_1_1_1.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,886" Action="CREATE"><FB Name="E_MERGE" Type="E_MERGE" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,887" Action="CREATE"><FB Name="E_MERGE_1" Type="E_MERGE" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,888" Action="CREATE"><FB Name="RegisterManyServices.Reset" Type="E_MERGE" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,889" Action="CREATE"><FB Name="RegisterManyServices.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,890" Action="CREATE"><FB Name="RegisterManyServices.RegUnreg" Type="E_SWITCH" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,891" Action="CREATE"><FB Name="RegisterManyServices.Register" Type="E_SR" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,892" Action="CREATE"><FB Name="RegisterManyServices.RegisterService" Type="RegisterService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,893" Action="CREATE"><FB Name="RegisterManyServices.RegUnregDone" Type="E_SWITCH" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,894" Action="CREATE"><FB Name="RegisterManyServices.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,895" Action="CREATE"><FB Name="RegisterManyServices.GetName" Type="GET_AT_INDEX" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,896" Action="CREATE"><FB Name="RegisterManyServices.E_CTU" Type="E_CTU" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,897" Action="CREATE"><FB Name="RegisterManyServices.E_SWITCH" Type="E_SWITCH" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,898" Action="CREATE"><FB Name="RegisterManyServices.WSTRING2WSTRING" Type="WSTRING2WSTRING" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,899" Action="CREATE"><FB Name="RegisterManyServices.IsLast" Type="F_EQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,900" Action="WRITE"><Connection Source="WSTRING#""" Destination="RegisterManyServices.IsLast.IN1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,901" Action="CREATE"><FB Name="RegisterManyServices.GetURI" Type="GET_AT_INDEX" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,902" Action="CREATE"><FB Name="RegisterManyServices.E_SPLIT" Type="E_SPLIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,903" Action="CREATE"><FB Name="RegisterManyServices.PermitUnreg" Type="E_PERMIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,904" Action="CREATE"><FB Name="RegisterManyServices.F_NOT" Type="F_NOT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,905" Action="CREATE"><FB Name="RegisterManyServices.PermitReg" Type="E_PERMIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,906" Action="CREATE"><FB Name="RegisterManyServices.Regblock" Type="E_SR" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,907" Action="CREATE"><FB Name="RegisterManyServices.F_NOT_1" Type="F_NOT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,908" Action="CREATE"><FB Name="RegisterManyServices.UnRegBlock" Type="E_SR" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,909" Action="CREATE"><FB Name="RegisterManyServices.ARRAY2ARRAY_10_WSTRING" Type="ARRAY2ARRAY_10_WSTRING" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,910" Action="CREATE"><FB Name="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1" Type="ARRAY2ARRAY_10_WSTRING" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,911" Action="CREATE"><FB Name="RegisterManyServices.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,912" Action="CREATE"><FB Name="QueryFirstService.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,913" Action="CREATE"><FB Name="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,914" Action="CREATE"><FB Name="QueryFirstService.QueryServiceOpcUaSub.QueryService" Type="QueryService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,915" Action="CREATE"><FB Name="QueryFirstService.QueryServiceOpcUaSub.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,916" Action="CREATE"><FB Name="QuerySecondService.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,917" Action="CREATE"><FB Name="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,918" Action="CREATE"><FB Name="QuerySecondService.QueryServiceOpcUaSub.QueryService" Type="QueryService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,919" Action="CREATE"><FB Name="QuerySecondService.QueryServiceOpcUaSub.QueryServiceOpcUa" Type="QueryServiceOpcUa" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,920" Action="WRITE"><Connection Source="["serviceTest", "serviceTest2"]" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.IN" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,921" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="RegisterManyServices.FieldsToArrowheadService.interfaces" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,922" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="RegisterManyServices.FieldsToArrowheadService.serviceMetadata" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,923" Action="WRITE"><Connection Source="["/serviceTest/start", "/serviceTest/start2"]" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.IN" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,924" Action="WRITE"><Connection Source="1" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.version" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,925" Action="WRITE"><Connection Source="false" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.udp" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,926" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.metadata" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,927" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterManyServices.RegisterService.endpoint" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,928" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="QueryFirstService.FieldsToArrowheadService.serviceDefinition" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,929" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="QueryFirstService.FieldsToArrowheadService.interfaces" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,930" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="QueryFirstService.FieldsToArrowheadService.serviceMetadata" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,931" Action="WRITE"><Connection Source="false" Destination="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.metadataSearch" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,932" Action="WRITE"><Connection Source="1" Destination="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.version" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,933" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QueryFirstService.QueryServiceOpcUaSub.QueryService.address" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,934" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="QuerySecondService.FieldsToArrowheadService.serviceDefinition" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,935" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="QuerySecondService.FieldsToArrowheadService.interfaces" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,936" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="QuerySecondService.FieldsToArrowheadService.serviceMetadata" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,937" Action="WRITE"><Connection Source="false" Destination="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.metadataSearch" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,938" Action="WRITE"><Connection Source="1" Destination="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.version" /></Request>
+RegisterMoreServicesSubApp;<Request ID="1,939" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="QuerySecondService.QueryServiceOpcUaSub.QueryService.address" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,940" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.DI2S.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.WS2WS.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,941" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.WS2WS.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.IpPort.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="1,942" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_1.GetAddress.CNF" Destination="GetEndpointFromServiceRegistryEntry_1.GetPort.REQ" /></Request>
@@ -2009,7 +2009,7 @@
RegisterMoreServicesSubApp;<Request ID="2,009" Action="CREATE"><Connection Source="Sequencer.F_SUB_1.CNF" Destination="Sequencer.E_DEMUX_1_1.EI" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,010" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="QuerySecondService.FieldsToArrowheadService.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,011" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="F_EQ_3_1_1_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,012" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0_1.INIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,012" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO2" Destination="PUBL_0_1.REQ" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,013" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1.EO3" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,014" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO0" Destination="Sequencer.E_MERGE.EI2" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,015" Action="CREATE"><Connection Source="Sequencer.E_DEMUX_1_1.EO1" Destination="Sequencer.E_MERGE.EI2" /></Request>
@@ -2070,100 +2070,100 @@
RegisterMoreServicesSubApp;<Request ID="2,070" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPort.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.IN_1" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,071" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.IpPortURI.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.S2WS.IN" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,072" Action="CREATE"><Connection Source="GetEndpointFromServiceRegistryEntry_2.WS2WS_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_2.IpPortURI.IN_2" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,073" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm.CNF" Destination="QuerySecondService.QueryServiceHTTPSub.QueryService.query" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,074" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceHTTPSub.QueryService.queried" Destination="GET_AT_INDEX_2.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,075" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QuerySecondService.QueryServiceHTTPSub.QueryService.serviceQueryForm" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,076" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_1.IN_ARRAY" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,077" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_2.IN_ARRAY" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,078" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceHTTPSub.QueryService.queryServices" Destination="QuerySecondService.QueryServiceHTTPSub.QueryServiceHTTP.queryServices" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,079" Action="CREATE"><Connection Source="QuerySecondService.FieldsToArrowheadService.CNF" Destination="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,080" Action="CREATE"><Connection Source="QuerySecondService.FieldsToArrowheadService.arrowheadService" Destination="QuerySecondService.QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,081" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm.CNF" Destination="QueryFirstService.QueryServiceHTTPSub.QueryService.query" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,082" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceHTTPSub.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,083" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryFirstService.QueryServiceHTTPSub.QueryService.serviceQueryForm" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,084" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,085" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceHTTPSub.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,086" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceHTTPSub.QueryService.queryServices" Destination="QueryFirstService.QueryServiceHTTPSub.QueryServiceHTTP.queryServices" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,087" Action="CREATE"><Connection Source="QueryFirstService.FieldsToArrowheadService.CNF" Destination="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,088" Action="CREATE"><Connection Source="QueryFirstService.FieldsToArrowheadService.arrowheadService" Destination="QueryFirstService.QueryServiceHTTPSub.FieldsToServiceQueryForm.service" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,089" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO0" Destination="RegisterManyServices.Reset.EI1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,090" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO1" Destination="RegisterManyServices.Reset.EI2" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,091" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToArrowheadService.CNF" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,092" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToServiceRegistryEntry.CNF" Destination="RegisterManyServices.RegUnreg.EI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,093" Action="CREATE"><Connection Source="RegisterManyServices.RegUnreg.EO0" Destination="RegisterManyServices.RegisterService.unregister" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,094" Action="CREATE"><Connection Source="RegisterManyServices.RegUnreg.EO1" Destination="RegisterManyServices.RegisterService.register" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,095" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO1" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,096" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO0" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,097" Action="CREATE"><Connection Source="RegisterManyServices.IsLast.CNF" Destination="RegisterManyServices.E_SWITCH.EI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,098" Action="CREATE"><Connection Source="RegisterManyServices.WSTRING2WSTRING.CNF" Destination="RegisterManyServices.IsLast.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,099" Action="CREATE"><Connection Source="RegisterManyServices.GetURI.CNF" Destination="RegisterManyServices.WSTRING2WSTRING.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,100" Action="CREATE"><Connection Source="RegisterManyServices.E_SPLIT.EO1" Destination="RegisterManyServices.E_CTU.CU" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,101" Action="CREATE"><Connection Source="RegisterManyServices.E_SWITCH.EO0" Destination="RegisterManyServices.E_SPLIT.EI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,102" Action="CREATE"><Connection Source="RegisterManyServices.E_SWITCH.EO1" Destination="RegisterManyServices.E_CTU.R" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,103" Action="CREATE"><Connection Source="RegisterManyServices.E_SPLIT.EO2" Destination="RegisterManyServices.FieldsToArrowheadService.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,104" Action="CREATE"><Connection Source="RegisterManyServices.RegisterService.doneRegister" Destination="RegisterManyServices.GetName.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,105" Action="CREATE"><Connection Source="RegisterManyServices.E_CTU.RO" Destination="RegisterManyServices.RegUnregDone.EI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,106" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT_1.CNF" Destination="RegisterManyServices.PermitReg.EI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,107" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT.CNF" Destination="RegisterManyServices.PermitUnreg.EI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,108" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.Register.R" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,109" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.Register.S" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,110" Action="CREATE"><Connection Source="RegisterManyServices.Reset.EO" Destination="RegisterManyServices.UnRegBlock.R" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,111" Action="CREATE"><Connection Source="RegisterManyServices.Reset.EO" Destination="RegisterManyServices.Regblock.R" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,112" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.UnRegBlock.S" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,113" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.Regblock.S" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,114" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.Regblock.S" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,115" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.UnRegBlock.S" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,116" Action="CREATE"><Connection Source="RegisterManyServices.RegisterService.doneUnregister" Destination="RegisterManyServices.GetName.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,117" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.CNF" Destination="RegisterManyServices.GetName.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,118" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.CNF" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,119" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,120" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,121" Action="CREATE"><Connection Source="RegisterManyServices.GetName.CNF" Destination="RegisterManyServices.GetURI.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,122" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToArrowheadService.arrowheadService" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.providedService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,123" Action="CREATE"><Connection Source="RegisterManyServices.Register.Q" Destination="RegisterManyServices.RegUnreg.G" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,124" Action="CREATE"><Connection Source="RegisterManyServices.Register.Q" Destination="RegisterManyServices.RegUnregDone.G" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,125" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterManyServices.RegisterService.serviceRegistryEntry" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,126" Action="CREATE"><Connection Source="RegisterManyServices.E_CTU.CV" Destination="RegisterManyServices.GetName.INDEX" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,127" Action="CREATE"><Connection Source="RegisterManyServices.GetName.OUT" Destination="RegisterManyServices.WSTRING2WSTRING.IN" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,128" Action="CREATE"><Connection Source="RegisterManyServices.E_CTU.CV" Destination="RegisterManyServices.GetURI.INDEX" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,129" Action="CREATE"><Connection Source="RegisterManyServices.IsLast.OUT" Destination="RegisterManyServices.E_SWITCH.G" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,130" Action="CREATE"><Connection Source="RegisterManyServices.WSTRING2WSTRING.OUT" Destination="RegisterManyServices.IsLast.IN2" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,131" Action="CREATE"><Connection Source="RegisterManyServices.GetURI.OUT" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.serviceURI" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,132" Action="CREATE"><Connection Source="RegisterManyServices.GetName.OUT" Destination="RegisterManyServices.FieldsToArrowheadService.serviceDefinition" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,133" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT.OUT" Destination="RegisterManyServices.PermitUnreg.PERMIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,134" Action="CREATE"><Connection Source="RegisterManyServices.UnRegBlock.Q" Destination="RegisterManyServices.F_NOT.IN" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,135" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT_1.OUT" Destination="RegisterManyServices.PermitReg.PERMIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,136" Action="CREATE"><Connection Source="RegisterManyServices.Regblock.Q" Destination="RegisterManyServices.F_NOT_1.IN" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,137" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.OUT" Destination="RegisterManyServices.GetURI.IN_ARRAY" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,138" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.OUT" Destination="RegisterManyServices.GetName.IN_ARRAY" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,139" Action="CREATE"><Connection Source="RegisterManyServices.RegisterService.registerService" Destination="RegisterManyServices.RegisterServiceHTTP.registerService" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,140" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,141" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,142" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,143" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,144" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GET_AT_INDEX_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,145" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,146" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,147" Action="CREATE"><Connection Source="GET_AT_INDEX_2.CNF" Destination="GET_AT_INDEX_1_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,148" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="Pos0Service1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,149" Action="CREATE"><Connection Source="Pos0Service1.CNF" Destination="Pos1Empty.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,150" Action="CREATE"><Connection Source="F_EQ_3.CNF" Destination="F_EQ_2.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,151" Action="CREATE"><Connection Source="F_EQ_3_1.CNF" Destination="F_EQ_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,152" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="Pos0Service2.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,153" Action="CREATE"><Connection Source="Pos0Service2.CNF" Destination="Pos1Empty2.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,154" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="Pos1Empty3.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,155" Action="CREATE"><Connection Source="F_EQ_3_1_1.CNF" Destination="Pos0Empty3.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,156" Action="CREATE"><Connection Source="Pos0Empty3.CNF" Destination="F_EQ_1_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,157" Action="CREATE"><Connection Source="Pos0Empty4.CNF" Destination="F_EQ_1_1_1.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,158" Action="CREATE"><Connection Source="F_EQ_1_1_1.CNF" Destination="Pos1Empty4.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,159" Action="CREATE"><Connection Source="F_EQ_3_1_1_1.CNF" Destination="Pos0Empty4.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,160" Action="CREATE"><Connection Source="Pos1Empty.CNF" Destination="E_MERGE.EI1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,161" Action="CREATE"><Connection Source="Pos1Empty2.CNF" Destination="E_MERGE.EI1" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,162" Action="CREATE"><Connection Source="Pos1Empty3.CNF" Destination="E_MERGE.EI2" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,163" Action="CREATE"><Connection Source="Pos1Empty4.CNF" Destination="E_MERGE.EI2" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,164" Action="CREATE"><Connection Source="E_MERGE.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,165" Action="CREATE"><Connection Source="E_MERGE_1.EO" Destination="Sequencer.F_GT.REQ" /></Request>
-RegisterMoreServicesSubApp;<Request ID="2,166" Action="CREATE"><Connection Source="PUBL_0_1.INITO" Destination="PUBL_0_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,073" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO0" Destination="RegisterManyServices.Reset.EI1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,074" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO1" Destination="RegisterManyServices.Reset.EI2" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,075" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToArrowheadService.CNF" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,076" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToServiceRegistryEntry.CNF" Destination="RegisterManyServices.RegUnreg.EI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,077" Action="CREATE"><Connection Source="RegisterManyServices.RegUnreg.EO0" Destination="RegisterManyServices.RegisterService.unregister" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,078" Action="CREATE"><Connection Source="RegisterManyServices.RegUnreg.EO1" Destination="RegisterManyServices.RegisterService.register" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,079" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO1" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,080" Action="CREATE"><Connection Source="RegisterManyServices.RegUnregDone.EO0" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,081" Action="CREATE"><Connection Source="RegisterManyServices.IsLast.CNF" Destination="RegisterManyServices.E_SWITCH.EI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,082" Action="CREATE"><Connection Source="RegisterManyServices.WSTRING2WSTRING.CNF" Destination="RegisterManyServices.IsLast.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,083" Action="CREATE"><Connection Source="RegisterManyServices.GetURI.CNF" Destination="RegisterManyServices.WSTRING2WSTRING.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,084" Action="CREATE"><Connection Source="RegisterManyServices.E_SPLIT.EO1" Destination="RegisterManyServices.E_CTU.CU" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,085" Action="CREATE"><Connection Source="RegisterManyServices.E_SWITCH.EO0" Destination="RegisterManyServices.E_SPLIT.EI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,086" Action="CREATE"><Connection Source="RegisterManyServices.E_SWITCH.EO1" Destination="RegisterManyServices.E_CTU.R" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,087" Action="CREATE"><Connection Source="RegisterManyServices.E_SPLIT.EO2" Destination="RegisterManyServices.FieldsToArrowheadService.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,088" Action="CREATE"><Connection Source="RegisterManyServices.RegisterService.doneRegister" Destination="RegisterManyServices.GetName.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,089" Action="CREATE"><Connection Source="RegisterManyServices.E_CTU.RO" Destination="RegisterManyServices.RegUnregDone.EI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,090" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT_1.CNF" Destination="RegisterManyServices.PermitReg.EI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,091" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT.CNF" Destination="RegisterManyServices.PermitUnreg.EI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,092" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.Register.R" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,093" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.Register.S" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,094" Action="CREATE"><Connection Source="RegisterManyServices.Reset.EO" Destination="RegisterManyServices.UnRegBlock.R" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,095" Action="CREATE"><Connection Source="RegisterManyServices.Reset.EO" Destination="RegisterManyServices.Regblock.R" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,096" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.UnRegBlock.S" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,097" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.Regblock.S" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,098" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.Regblock.S" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,099" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.UnRegBlock.S" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,100" Action="CREATE"><Connection Source="RegisterManyServices.RegisterService.doneUnregister" Destination="RegisterManyServices.GetName.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,101" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.CNF" Destination="RegisterManyServices.GetName.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,102" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.CNF" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,103" Action="CREATE"><Connection Source="RegisterManyServices.PermitReg.EO" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,104" Action="CREATE"><Connection Source="RegisterManyServices.PermitUnreg.EO" Destination="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,105" Action="CREATE"><Connection Source="RegisterManyServices.GetName.CNF" Destination="RegisterManyServices.GetURI.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,106" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToArrowheadService.arrowheadService" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.providedService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,107" Action="CREATE"><Connection Source="RegisterManyServices.Register.Q" Destination="RegisterManyServices.RegUnreg.G" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,108" Action="CREATE"><Connection Source="RegisterManyServices.Register.Q" Destination="RegisterManyServices.RegUnregDone.G" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,109" Action="CREATE"><Connection Source="RegisterManyServices.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterManyServices.RegisterService.serviceRegistryEntry" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,110" Action="CREATE"><Connection Source="RegisterManyServices.E_CTU.CV" Destination="RegisterManyServices.GetName.INDEX" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,111" Action="CREATE"><Connection Source="RegisterManyServices.GetName.OUT" Destination="RegisterManyServices.WSTRING2WSTRING.IN" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,112" Action="CREATE"><Connection Source="RegisterManyServices.E_CTU.CV" Destination="RegisterManyServices.GetURI.INDEX" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,113" Action="CREATE"><Connection Source="RegisterManyServices.IsLast.OUT" Destination="RegisterManyServices.E_SWITCH.G" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,114" Action="CREATE"><Connection Source="RegisterManyServices.WSTRING2WSTRING.OUT" Destination="RegisterManyServices.IsLast.IN2" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,115" Action="CREATE"><Connection Source="RegisterManyServices.GetURI.OUT" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.serviceURI" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,116" Action="CREATE"><Connection Source="RegisterManyServices.GetName.OUT" Destination="RegisterManyServices.FieldsToArrowheadService.serviceDefinition" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,117" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT.OUT" Destination="RegisterManyServices.PermitUnreg.PERMIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,118" Action="CREATE"><Connection Source="RegisterManyServices.UnRegBlock.Q" Destination="RegisterManyServices.F_NOT.IN" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,119" Action="CREATE"><Connection Source="RegisterManyServices.F_NOT_1.OUT" Destination="RegisterManyServices.PermitReg.PERMIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,120" Action="CREATE"><Connection Source="RegisterManyServices.Regblock.Q" Destination="RegisterManyServices.F_NOT_1.IN" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,121" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING.OUT" Destination="RegisterManyServices.GetURI.IN_ARRAY" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,122" Action="CREATE"><Connection Source="RegisterManyServices.ARRAY2ARRAY_10_WSTRING_1.OUT" Destination="RegisterManyServices.GetName.IN_ARRAY" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,123" Action="CREATE"><Connection Source="RegisterManyServices.RegisterService.registerService" Destination="RegisterManyServices.RegisterServiceOpcUa.registerService" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,124" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.CNF" Destination="QueryFirstService.QueryServiceOpcUaSub.QueryService.query" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,125" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceOpcUaSub.QueryService.queried" Destination="GET_AT_INDEX.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,126" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QueryFirstService.QueryServiceOpcUaSub.QueryService.serviceQueryForm" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,127" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceOpcUaSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_1.IN_ARRAY" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,128" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceOpcUaSub.QueryService.serviceEntries" Destination="GET_AT_INDEX.IN_ARRAY" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,129" Action="CREATE"><Connection Source="QueryFirstService.QueryServiceOpcUaSub.QueryService.queryServices" Destination="QueryFirstService.QueryServiceOpcUaSub.QueryServiceOpcUa.queryServices" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,130" Action="CREATE"><Connection Source="QueryFirstService.FieldsToArrowheadService.CNF" Destination="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,131" Action="CREATE"><Connection Source="QueryFirstService.FieldsToArrowheadService.arrowheadService" Destination="QueryFirstService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.service" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,132" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.CNF" Destination="QuerySecondService.QueryServiceOpcUaSub.QueryService.query" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,133" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceOpcUaSub.QueryService.queried" Destination="GET_AT_INDEX_2.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,134" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.serviceQueryForm" Destination="QuerySecondService.QueryServiceOpcUaSub.QueryService.serviceQueryForm" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,135" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceOpcUaSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_1_1.IN_ARRAY" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,136" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceOpcUaSub.QueryService.serviceEntries" Destination="GET_AT_INDEX_2.IN_ARRAY" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,137" Action="CREATE"><Connection Source="QuerySecondService.QueryServiceOpcUaSub.QueryService.queryServices" Destination="QuerySecondService.QueryServiceOpcUaSub.QueryServiceOpcUa.queryServices" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,138" Action="CREATE"><Connection Source="QuerySecondService.FieldsToArrowheadService.CNF" Destination="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,139" Action="CREATE"><Connection Source="QuerySecondService.FieldsToArrowheadService.arrowheadService" Destination="QuerySecondService.QueryServiceOpcUaSub.FieldsToServiceQueryForm.service" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,140" Action="CREATE"><Connection Source="GET_AT_INDEX_1.CNF" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,141" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,142" Action="CREATE"><Connection Source="GET_AT_INDEX.CNF" Destination="GET_AT_INDEX_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,143" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,144" Action="CREATE"><Connection Source="GET_AT_INDEX_1_1.CNF" Destination="GetEndpointFromServiceRegistryEntry_2.ServiceRegistryEntry2ServiceRegistryEntry.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,145" Action="CREATE"><Connection Source="GET_AT_INDEX_2.CNF" Destination="GET_AT_INDEX_1_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,146" Action="CREATE"><Connection Source="F_EQ_2.CNF" Destination="Pos0Service1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,147" Action="CREATE"><Connection Source="Pos0Service1.CNF" Destination="Pos1Empty.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,148" Action="CREATE"><Connection Source="F_EQ_3.CNF" Destination="F_EQ_2.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,149" Action="CREATE"><Connection Source="F_EQ_3_1.CNF" Destination="F_EQ_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,150" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="Pos0Service2.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,151" Action="CREATE"><Connection Source="Pos0Service2.CNF" Destination="Pos1Empty2.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,152" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="Pos1Empty3.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,153" Action="CREATE"><Connection Source="F_EQ_3_1_1.CNF" Destination="Pos0Empty3.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,154" Action="CREATE"><Connection Source="Pos0Empty3.CNF" Destination="F_EQ_1_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,155" Action="CREATE"><Connection Source="Pos0Empty4.CNF" Destination="F_EQ_1_1_1.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,156" Action="CREATE"><Connection Source="F_EQ_1_1_1.CNF" Destination="Pos1Empty4.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,157" Action="CREATE"><Connection Source="F_EQ_3_1_1_1.CNF" Destination="Pos0Empty4.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,158" Action="CREATE"><Connection Source="Pos1Empty.CNF" Destination="E_MERGE.EI1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,159" Action="CREATE"><Connection Source="Pos1Empty2.CNF" Destination="E_MERGE.EI1" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,160" Action="CREATE"><Connection Source="Pos1Empty3.CNF" Destination="E_MERGE.EI2" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,161" Action="CREATE"><Connection Source="Pos1Empty4.CNF" Destination="E_MERGE.EI2" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,162" Action="CREATE"><Connection Source="E_MERGE.EO" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,163" Action="CREATE"><Connection Source="E_MERGE_1.EO" Destination="Sequencer.F_GT.REQ" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,164" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,165" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+RegisterMoreServicesSubApp;<Request ID="2,166" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0_1.INIT" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,167" Action="CREATE"><Connection Source="GET_AT_INDEX_1.OUT" Destination="GetEndpointFromServiceRegistryEntry_1.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,168" Action="CREATE"><Connection Source="GET_AT_INDEX.OUT" Destination="GetEndpointFromServiceRegistryEntry.ServiceRegistryEntry2ServiceRegistryEntry.IN" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,169" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="Pos1Empty2.check" /></Request>
@@ -2179,69 +2179,69 @@
RegisterMoreServicesSubApp;<Request ID="2,179" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterManyServices.FieldsToServiceRegistryEntry.provider" /></Request>
RegisterMoreServicesSubApp;<Request ID="2,180" Action="START"/>
;<Request ID="2,181" Action="CREATE"><FB Name="OrchestratorNoRule" Type="EMB_RES" /></Request>
-OrchestratorNoRule;<Request ID="2,182" Action="CREATE"><FB Name="RequestOrchestrationHTTP" Type="RequestOrchestrationHTTP" /></Request>
-OrchestratorNoRule;<Request ID="2,183" Action="CREATE"><FB Name="FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" /></Request>
-OrchestratorNoRule;<Request ID="2,184" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-OrchestratorNoRule;<Request ID="2,185" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
-OrchestratorNoRule;<Request ID="2,186" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-OrchestratorNoRule;<Request ID="2,187" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
-OrchestratorNoRule;<Request ID="2,188" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
-OrchestratorNoRule;<Request ID="2,189" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="Service1.serviceDefinition" /></Request>
-OrchestratorNoRule;<Request ID="2,190" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
-OrchestratorNoRule;<Request ID="2,191" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service1.serviceMetadata" /></Request>
-OrchestratorNoRule;<Request ID="2,192" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-OrchestratorNoRule;<Request ID="2,193" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.WS2WS" Type="WSTRING2WSTRING" /></Request>
-OrchestratorNoRule;<Request ID="2,194" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.DI2S" Type="F_DINT_TO_STRING" /></Request>
-OrchestratorNoRule;<Request ID="2,195" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-OrchestratorNoRule;<Request ID="2,196" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromOrchestrationForm.GetAddress.member" /></Request>
-OrchestratorNoRule;<Request ID="2,197" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-OrchestratorNoRule;<Request ID="2,198" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromOrchestrationForm.GetPort.member" /></Request>
-OrchestratorNoRule;<Request ID="2,199" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-OrchestratorNoRule;<Request ID="2,200" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromOrchestrationForm.GetURI.member" /></Request>
-OrchestratorNoRule;<Request ID="2,201" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.IpPort" Type="APPEND_STRING_3" /></Request>
-OrchestratorNoRule;<Request ID="2,202" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromOrchestrationForm.IpPort.IN_2" /></Request>
-OrchestratorNoRule;<Request ID="2,203" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm" Type="OrchestrationForm2OrchestrationForm" /></Request>
-OrchestratorNoRule;<Request ID="2,204" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.WS2WS_1" Type="WSTRING2WSTRING" /></Request>
-OrchestratorNoRule;<Request ID="2,205" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.IpPortURI" Type="APPEND_STRING_2" /></Request>
-OrchestratorNoRule;<Request ID="2,206" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
-OrchestratorNoRule;<Request ID="2,207" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
-OrchestratorNoRule;<Request ID="2,208" Action="CREATE"><FB Name="NoServiceAvailable" Type="TEST_CONDITION" /></Request>
-OrchestratorNoRule;<Request ID="2,209" Action="CREATE"><FB Name="SERVER_1" Type="SERVER_1" /></Request>
-OrchestratorNoRule;<Request ID="2,210" Action="WRITE"><Connection Source="http[/serviceTest/start2]" Destination="SERVER_1.ID" /></Request>
-OrchestratorNoRule;<Request ID="2,211" Action="CREATE"><FB Name="E_SR" Type="E_SR" /></Request>
-OrchestratorNoRule;<Request ID="2,212" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-OrchestratorNoRule;<Request ID="2,213" Action="CREATE"><FB Name="RegisterService2.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-OrchestratorNoRule;<Request ID="2,214" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
-OrchestratorNoRule;<Request ID="2,215" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
-OrchestratorNoRule;<Request ID="2,216" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
-OrchestratorNoRule;<Request ID="2,217" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
-OrchestratorNoRule;<Request ID="2,218" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
-OrchestratorNoRule;<Request ID="2,219" Action="WRITE"><Connection Source="test6Ended" Destination="SUBL_0.ID" /></Request>
-OrchestratorNoRule;<Request ID="2,220" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-OrchestratorNoRule;<Request ID="2,221" Action="WRITE"><Connection Source="WSTRING#test7Ended" Destination="PUBL_0.ID" /></Request>
-OrchestratorNoRule;<Request ID="2,222" Action="CREATE"><FB Name="GET_STRUCT_VALUE1" Type="GET_AT_INDEX" /></Request>
-OrchestratorNoRule;<Request ID="2,223" Action="WRITE"><Connection Source="0" Destination="GET_STRUCT_VALUE1.INDEX" /></Request>
-OrchestratorNoRule;<Request ID="2,224" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX" Type="E_DEMUX" /></Request>
-OrchestratorNoRule;<Request ID="2,225" Action="CREATE"><FB Name="Sequencer_1.E_CTU" Type="E_CTU" /></Request>
-OrchestratorNoRule;<Request ID="2,226" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
-OrchestratorNoRule;<Request ID="2,227" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH" Type="E_SWITCH" /></Request>
-OrchestratorNoRule;<Request ID="2,228" Action="CREATE"><FB Name="Sequencer_1.F_GT" Type="F_GT" /></Request>
-OrchestratorNoRule;<Request ID="2,229" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer_1.F_GT.IN2" /></Request>
-OrchestratorNoRule;<Request ID="2,230" Action="CREATE"><FB Name="Sequencer_1.F_SUB" Type="F_SUB" /></Request>
-OrchestratorNoRule;<Request ID="2,231" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer_1.F_SUB.IN2" /></Request>
-OrchestratorNoRule;<Request ID="2,232" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
-OrchestratorNoRule;<Request ID="2,233" Action="CREATE"><FB Name="Sequencer_1.F_GT_1" Type="F_GT" /></Request>
-OrchestratorNoRule;<Request ID="2,234" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer_1.F_GT_1.IN2" /></Request>
-OrchestratorNoRule;<Request ID="2,235" Action="CREATE"><FB Name="Sequencer_1.F_SUB_1" Type="F_SUB" /></Request>
-OrchestratorNoRule;<Request ID="2,236" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer_1.F_SUB_1.IN2" /></Request>
-OrchestratorNoRule;<Request ID="2,237" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH_1" Type="E_SWITCH" /></Request>
-OrchestratorNoRule;<Request ID="2,238" Action="CREATE"><FB Name="RequestOrchestrationForm" Type="RequestOrchestrationForm" /></Request>
-OrchestratorNoRule;<Request ID="2,239" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8440/orchestrator" Destination="RequestOrchestrationForm.endpoint" /></Request>
+OrchestratorNoRule;<Request ID="2,182" Action="CREATE"><FB Name="FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" /></Request>
+OrchestratorNoRule;<Request ID="2,183" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+OrchestratorNoRule;<Request ID="2,184" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+OrchestratorNoRule;<Request ID="2,185" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+OrchestratorNoRule;<Request ID="2,186" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
+OrchestratorNoRule;<Request ID="2,187" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
+OrchestratorNoRule;<Request ID="2,188" Action="WRITE"><Connection Source="WSTRING#serviceTest2" Destination="Service1.serviceDefinition" /></Request>
+OrchestratorNoRule;<Request ID="2,189" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
+OrchestratorNoRule;<Request ID="2,190" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="Service1.serviceMetadata" /></Request>
+OrchestratorNoRule;<Request ID="2,191" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+OrchestratorNoRule;<Request ID="2,192" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.WS2WS" Type="WSTRING2WSTRING" /></Request>
+OrchestratorNoRule;<Request ID="2,193" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.DI2S" Type="F_DINT_TO_STRING" /></Request>
+OrchestratorNoRule;<Request ID="2,194" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+OrchestratorNoRule;<Request ID="2,195" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromOrchestrationForm.GetAddress.member" /></Request>
+OrchestratorNoRule;<Request ID="2,196" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+OrchestratorNoRule;<Request ID="2,197" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromOrchestrationForm.GetPort.member" /></Request>
+OrchestratorNoRule;<Request ID="2,198" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+OrchestratorNoRule;<Request ID="2,199" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromOrchestrationForm.GetURI.member" /></Request>
+OrchestratorNoRule;<Request ID="2,200" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.IpPort" Type="APPEND_STRING_3" /></Request>
+OrchestratorNoRule;<Request ID="2,201" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromOrchestrationForm.IpPort.IN_2" /></Request>
+OrchestratorNoRule;<Request ID="2,202" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm" Type="OrchestrationForm2OrchestrationForm" /></Request>
+OrchestratorNoRule;<Request ID="2,203" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.WS2WS_1" Type="WSTRING2WSTRING" /></Request>
+OrchestratorNoRule;<Request ID="2,204" Action="CREATE"><FB Name="GetEndpointFromOrchestrationForm.IpPortURI" Type="APPEND_STRING_2" /></Request>
+OrchestratorNoRule;<Request ID="2,205" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+OrchestratorNoRule;<Request ID="2,206" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
+OrchestratorNoRule;<Request ID="2,207" Action="CREATE"><FB Name="NoServiceAvailable" Type="TEST_CONDITION" /></Request>
+OrchestratorNoRule;<Request ID="2,208" Action="CREATE"><FB Name="E_SR" Type="E_SR" /></Request>
+OrchestratorNoRule;<Request ID="2,209" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+OrchestratorNoRule;<Request ID="2,210" Action="WRITE"><Connection Source="test6Ended" Destination="SUBL_0.ID" /></Request>
+OrchestratorNoRule;<Request ID="2,211" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+OrchestratorNoRule;<Request ID="2,212" Action="WRITE"><Connection Source="WSTRING#test7Ended" Destination="PUBL_0.ID" /></Request>
+OrchestratorNoRule;<Request ID="2,213" Action="CREATE"><FB Name="GET_STRUCT_VALUE1" Type="GET_AT_INDEX" /></Request>
+OrchestratorNoRule;<Request ID="2,214" Action="WRITE"><Connection Source="0" Destination="GET_STRUCT_VALUE1.INDEX" /></Request>
+OrchestratorNoRule;<Request ID="2,215" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX" Type="E_DEMUX" /></Request>
+OrchestratorNoRule;<Request ID="2,216" Action="CREATE"><FB Name="Sequencer_1.E_CTU" Type="E_CTU" /></Request>
+OrchestratorNoRule;<Request ID="2,217" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
+OrchestratorNoRule;<Request ID="2,218" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH" Type="E_SWITCH" /></Request>
+OrchestratorNoRule;<Request ID="2,219" Action="CREATE"><FB Name="Sequencer_1.F_GT" Type="F_GT" /></Request>
+OrchestratorNoRule;<Request ID="2,220" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer_1.F_GT.IN2" /></Request>
+OrchestratorNoRule;<Request ID="2,221" Action="CREATE"><FB Name="Sequencer_1.F_SUB" Type="F_SUB" /></Request>
+OrchestratorNoRule;<Request ID="2,222" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer_1.F_SUB.IN2" /></Request>
+OrchestratorNoRule;<Request ID="2,223" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
+OrchestratorNoRule;<Request ID="2,224" Action="CREATE"><FB Name="Sequencer_1.F_GT_1" Type="F_GT" /></Request>
+OrchestratorNoRule;<Request ID="2,225" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer_1.F_GT_1.IN2" /></Request>
+OrchestratorNoRule;<Request ID="2,226" Action="CREATE"><FB Name="Sequencer_1.F_SUB_1" Type="F_SUB" /></Request>
+OrchestratorNoRule;<Request ID="2,227" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer_1.F_SUB_1.IN2" /></Request>
+OrchestratorNoRule;<Request ID="2,228" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH_1" Type="E_SWITCH" /></Request>
+OrchestratorNoRule;<Request ID="2,229" Action="CREATE"><FB Name="RequestOrchestrationForm" Type="RequestOrchestrationForm" /></Request>
+OrchestratorNoRule;<Request ID="2,230" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62548/orchestrator" Destination="RequestOrchestrationForm.endpoint" /></Request>
+OrchestratorNoRule;<Request ID="2,231" Action="CREATE"><FB Name="RequestOrchestrationHTTP" Type="RequestOrchestrationOpcUa" /></Request>
+OrchestratorNoRule;<Request ID="2,232" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+OrchestratorNoRule;<Request ID="2,233" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
+OrchestratorNoRule;<Request ID="2,234" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
+OrchestratorNoRule;<Request ID="2,235" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
+OrchestratorNoRule;<Request ID="2,236" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
+OrchestratorNoRule;<Request ID="2,237" Action="CREATE"><FB Name="RegisterService2.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+OrchestratorNoRule;<Request ID="2,238" Action="CREATE"><FB Name="SERVER_1_1" Type="SERVER_0" /></Request>
+OrchestratorNoRule;<Request ID="2,239" Action="WRITE"><Connection Source="opc_ua[CREATE_METHOD;/Objects/serviceTest/start2]" Destination="SERVER_1_1.ID" /></Request>
OrchestratorNoRule;<Request ID="2,240" Action="WRITE"><Connection Source="/serviceTest/start2" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
OrchestratorNoRule;<Request ID="2,241" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
OrchestratorNoRule;<Request ID="2,242" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
-OrchestratorNoRule;<Request ID="2,243" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
-OrchestratorNoRule;<Request ID="2,244" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
+OrchestratorNoRule;<Request ID="2,243" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
+OrchestratorNoRule;<Request ID="2,244" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
OrchestratorNoRule;<Request ID="2,245" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationForm.DI2S.CNF" Destination="GetEndpointFromOrchestrationForm.WS2WS.REQ" /></Request>
OrchestratorNoRule;<Request ID="2,246" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationForm.GetPort.CNF" Destination="GetEndpointFromOrchestrationForm.GetURI.REQ" /></Request>
OrchestratorNoRule;<Request ID="2,247" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationForm.WS2WS.CNF" Destination="GetEndpointFromOrchestrationForm.IpPort.REQ" /></Request>
@@ -2264,90 +2264,90 @@
OrchestratorNoRule;<Request ID="2,264" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationForm.IpPort.OUT" Destination="GetEndpointFromOrchestrationForm.IpPortURI.IN_1" /></Request>
OrchestratorNoRule;<Request ID="2,265" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationForm.IpPortURI.OUT" Destination="GetEndpointFromOrchestrationForm.S2WS.IN" /></Request>
OrchestratorNoRule;<Request ID="2,266" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationForm.WS2WS_1.OUT" Destination="GetEndpointFromOrchestrationForm.IpPortURI.IN_2" /></Request>
-OrchestratorNoRule;<Request ID="2,267" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,268" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,269" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
-OrchestratorNoRule;<Request ID="2,270" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
-OrchestratorNoRule;<Request ID="2,271" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
-OrchestratorNoRule;<Request ID="2,272" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
-OrchestratorNoRule;<Request ID="2,273" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
-OrchestratorNoRule;<Request ID="2,274" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
-OrchestratorNoRule;<Request ID="2,275" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
-OrchestratorNoRule;<Request ID="2,276" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
-OrchestratorNoRule;<Request ID="2,277" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestratorNoRule;<Request ID="2,278" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="RegisterService2.E_SR.S" /></Request>
-OrchestratorNoRule;<Request ID="2,279" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,280" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="RegisterService2.E_REND.EI1" /></Request>
-OrchestratorNoRule;<Request ID="2,281" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestratorNoRule;<Request ID="2,282" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="E_SR.S" /></Request>
-OrchestratorNoRule;<Request ID="2,283" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestratorNoRule;<Request ID="2,284" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="E_SR.R" /></Request>
-OrchestratorNoRule;<Request ID="2,285" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestratorNoRule;<Request ID="2,286" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="E_SR.S" /></Request>
-OrchestratorNoRule;<Request ID="2,287" Action="CREATE"><Connection Source="Sequencer_1.F_GT.CNF" Destination="Sequencer_1.E_SWITCH.EI" /></Request>
-OrchestratorNoRule;<Request ID="2,288" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO0" Destination="Sequencer_1.E_DEMUX.EI" /></Request>
-OrchestratorNoRule;<Request ID="2,289" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.CNF" Destination="Sequencer_1.E_DEMUX_1.EI" /></Request>
-OrchestratorNoRule;<Request ID="2,290" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO1" Destination="Sequencer_1.F_GT_1.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,291" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.CNF" Destination="Sequencer_1.E_SWITCH_1.EI" /></Request>
-OrchestratorNoRule;<Request ID="2,292" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO0" Destination="Sequencer_1.F_SUB.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,293" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO1" Destination="Sequencer_1.F_SUB_1.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,294" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1.EI" /></Request>
-OrchestratorNoRule;<Request ID="2,295" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.E_SR.R" /></Request>
-OrchestratorNoRule;<Request ID="2,296" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,297" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.E_REND.EI1" /></Request>
-OrchestratorNoRule;<Request ID="2,298" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestratorNoRule;<Request ID="2,299" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
-OrchestratorNoRule;<Request ID="2,300" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="PUBL_0.INIT" /></Request>
-OrchestratorNoRule;<Request ID="2,301" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
-OrchestratorNoRule;<Request ID="2,302" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,303" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,304" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,305" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,306" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,307" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,308" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,309" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,310" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,311" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,312" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestratorNoRule;<Request ID="2,313" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.E_DEMUX.K" /></Request>
-OrchestratorNoRule;<Request ID="2,314" Action="CREATE"><Connection Source="Sequencer_1.F_GT.OUT" Destination="Sequencer_1.E_SWITCH.G" /></Request>
-OrchestratorNoRule;<Request ID="2,315" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.OUT" Destination="Sequencer_1.E_DEMUX_1.K" /></Request>
-OrchestratorNoRule;<Request ID="2,316" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT.IN1" /></Request>
-OrchestratorNoRule;<Request ID="2,317" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB.IN1" /></Request>
-OrchestratorNoRule;<Request ID="2,318" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1.IN1" /></Request>
-OrchestratorNoRule;<Request ID="2,319" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1.IN1" /></Request>
-OrchestratorNoRule;<Request ID="2,320" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.OUT" Destination="Sequencer_1.E_SWITCH_1.G" /></Request>
-OrchestratorNoRule;<Request ID="2,321" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1.K" /></Request>
+OrchestratorNoRule;<Request ID="2,267" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestratorNoRule;<Request ID="2,268" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="RegisterService2.E_SR.S" /></Request>
+OrchestratorNoRule;<Request ID="2,269" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,270" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="RegisterService2.E_REND.EI1" /></Request>
+OrchestratorNoRule;<Request ID="2,271" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestratorNoRule;<Request ID="2,272" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="E_SR.S" /></Request>
+OrchestratorNoRule;<Request ID="2,273" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestratorNoRule;<Request ID="2,274" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="E_SR.R" /></Request>
+OrchestratorNoRule;<Request ID="2,275" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestratorNoRule;<Request ID="2,276" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="E_SR.S" /></Request>
+OrchestratorNoRule;<Request ID="2,277" Action="CREATE"><Connection Source="Sequencer_1.F_GT.CNF" Destination="Sequencer_1.E_SWITCH.EI" /></Request>
+OrchestratorNoRule;<Request ID="2,278" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO0" Destination="Sequencer_1.E_DEMUX.EI" /></Request>
+OrchestratorNoRule;<Request ID="2,279" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.CNF" Destination="Sequencer_1.E_DEMUX_1.EI" /></Request>
+OrchestratorNoRule;<Request ID="2,280" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO1" Destination="Sequencer_1.F_GT_1.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,281" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.CNF" Destination="Sequencer_1.E_SWITCH_1.EI" /></Request>
+OrchestratorNoRule;<Request ID="2,282" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO0" Destination="Sequencer_1.F_SUB.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,283" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO1" Destination="Sequencer_1.F_SUB_1.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,284" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1.EI" /></Request>
+OrchestratorNoRule;<Request ID="2,285" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.E_SR.R" /></Request>
+OrchestratorNoRule;<Request ID="2,286" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,287" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="RegisterService2.E_REND.EI1" /></Request>
+OrchestratorNoRule;<Request ID="2,288" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestratorNoRule;<Request ID="2,289" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
+OrchestratorNoRule;<Request ID="2,290" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="PUBL_0.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,291" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
+OrchestratorNoRule;<Request ID="2,292" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,293" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,294" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,295" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,296" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,297" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,298" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,299" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,300" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,301" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,302" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestratorNoRule;<Request ID="2,303" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.E_DEMUX.K" /></Request>
+OrchestratorNoRule;<Request ID="2,304" Action="CREATE"><Connection Source="Sequencer_1.F_GT.OUT" Destination="Sequencer_1.E_SWITCH.G" /></Request>
+OrchestratorNoRule;<Request ID="2,305" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.OUT" Destination="Sequencer_1.E_DEMUX_1.K" /></Request>
+OrchestratorNoRule;<Request ID="2,306" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT.IN1" /></Request>
+OrchestratorNoRule;<Request ID="2,307" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB.IN1" /></Request>
+OrchestratorNoRule;<Request ID="2,308" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1.IN1" /></Request>
+OrchestratorNoRule;<Request ID="2,309" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1.IN1" /></Request>
+OrchestratorNoRule;<Request ID="2,310" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.OUT" Destination="Sequencer_1.E_SWITCH_1.G" /></Request>
+OrchestratorNoRule;<Request ID="2,311" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1.K" /></Request>
+OrchestratorNoRule;<Request ID="2,312" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,313" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,314" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
+OrchestratorNoRule;<Request ID="2,315" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
+OrchestratorNoRule;<Request ID="2,316" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
+OrchestratorNoRule;<Request ID="2,317" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
+OrchestratorNoRule;<Request ID="2,318" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
+OrchestratorNoRule;<Request ID="2,319" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
+OrchestratorNoRule;<Request ID="2,320" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
+OrchestratorNoRule;<Request ID="2,321" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceOpcUa.registerService" /></Request>
OrchestratorNoRule;<Request ID="2,322" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
OrchestratorNoRule;<Request ID="2,323" Action="CREATE"><Connection Source="Service1.CNF" Destination="FieldsToServiceRequestForm.REQ" /></Request>
OrchestratorNoRule;<Request ID="2,324" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoServiceAvailable.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,325" Action="CREATE"><Connection Source="E_SR.EO" Destination="SERVER_1.INIT" /></Request>
-OrchestratorNoRule;<Request ID="2,326" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,327" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,328" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-OrchestratorNoRule;<Request ID="2,329" Action="CREATE"><Connection Source="GET_STRUCT_VALUE1.CNF" Destination="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,330" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,331" Action="CREATE"><Connection Source="FieldsToServiceRequestForm.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,332" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-OrchestratorNoRule;<Request ID="2,333" Action="CREATE"><Connection Source="SERVER_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestratorNoRule;<Request ID="2,334" Action="CREATE"><Connection Source="RequestOrchestrationForm.responseReceived" Destination="GET_STRUCT_VALUE1.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,325" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,326" Action="CREATE"><Connection Source="GET_STRUCT_VALUE1.CNF" Destination="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,327" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,328" Action="CREATE"><Connection Source="FieldsToServiceRequestForm.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,329" Action="CREATE"><Connection Source="RequestOrchestrationForm.responseReceived" Destination="GET_STRUCT_VALUE1.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,330" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+OrchestratorNoRule;<Request ID="2,331" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+OrchestratorNoRule;<Request ID="2,332" Action="CREATE"><Connection Source="E_SR.EO" Destination="SERVER_1_1.INIT" /></Request>
+OrchestratorNoRule;<Request ID="2,333" Action="CREATE"><Connection Source="SERVER_1_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestratorNoRule;<Request ID="2,334" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
OrchestratorNoRule;<Request ID="2,335" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToServiceRequestForm.requesterSystem" /></Request>
OrchestratorNoRule;<Request ID="2,336" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="FieldsToServiceRequestForm.requestedService" /></Request>
OrchestratorNoRule;<Request ID="2,337" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoServiceAvailable.check" /></Request>
-OrchestratorNoRule;<Request ID="2,338" Action="CREATE"><Connection Source="E_SR.Q" Destination="SERVER_1.QI" /></Request>
-OrchestratorNoRule;<Request ID="2,339" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
-OrchestratorNoRule;<Request ID="2,340" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
-OrchestratorNoRule;<Request ID="2,341" Action="CREATE"><Connection Source="GET_STRUCT_VALUE1.OUT" Destination="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.IN" /></Request>
-OrchestratorNoRule;<Request ID="2,342" Action="CREATE"><Connection Source="FieldsToServiceRequestForm.serviceRequestForm" Destination="RequestOrchestrationForm.serviceRequestForm" /></Request>
-OrchestratorNoRule;<Request ID="2,343" Action="CREATE"><Connection Source="RequestOrchestrationForm.orchestrationResponse" Destination="GET_STRUCT_VALUE1.IN_ARRAY" /></Request>
+OrchestratorNoRule;<Request ID="2,338" Action="CREATE"><Connection Source="GET_STRUCT_VALUE1.OUT" Destination="GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.IN" /></Request>
+OrchestratorNoRule;<Request ID="2,339" Action="CREATE"><Connection Source="FieldsToServiceRequestForm.serviceRequestForm" Destination="RequestOrchestrationForm.serviceRequestForm" /></Request>
+OrchestratorNoRule;<Request ID="2,340" Action="CREATE"><Connection Source="RequestOrchestrationForm.orchestrationResponse" Destination="GET_STRUCT_VALUE1.IN_ARRAY" /></Request>
+OrchestratorNoRule;<Request ID="2,341" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
+OrchestratorNoRule;<Request ID="2,342" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
+OrchestratorNoRule;<Request ID="2,343" Action="CREATE"><Connection Source="E_SR.Q" Destination="SERVER_1_1.QI" /></Request>
OrchestratorNoRule;<Request ID="2,344" Action="CREATE"><Connection Source="RequestOrchestrationForm.requestOrchestration" Destination="RequestOrchestrationHTTP.requestOrchestration" /></Request>
OrchestratorNoRule;<Request ID="2,345" Action="START"/>
;<Request ID="2,346" Action="CREATE"><FB Name="OrchestrationWithRules" Type="EMB_RES" /></Request>
OrchestrationWithRules;<Request ID="2,347" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
OrchestrationWithRules;<Request ID="2,348" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
OrchestrationWithRules;<Request ID="2,349" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
-OrchestrationWithRules;<Request ID="2,350" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
+OrchestrationWithRules;<Request ID="2,350" Action="WRITE"><Connection Source="4840" Destination="FieldsToArrowheadSystem.port" /></Request>
OrchestrationWithRules;<Request ID="2,351" Action="CREATE"><FB Name="Service1" Type="FieldsToArrowheadService" /></Request>
OrchestrationWithRules;<Request ID="2,352" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="Service1.serviceDefinition" /></Request>
OrchestrationWithRules;<Request ID="2,353" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="Service1.interfaces" /></Request>
@@ -2355,223 +2355,387 @@
OrchestrationWithRules;<Request ID="2,355" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
OrchestrationWithRules;<Request ID="2,356" Action="WRITE"><Connection Source="WSTRING#:0" Destination="F_EQ.IN1" /></Request>
OrchestrationWithRules;<Request ID="2,357" Action="CREATE"><FB Name="NoServiceAvailable" Type="TEST_CONDITION" /></Request>
-OrchestrationWithRules;<Request ID="2,358" Action="CREATE"><FB Name="SERVER_1" Type="SERVER_1" /></Request>
-OrchestrationWithRules;<Request ID="2,359" Action="WRITE"><Connection Source="http[/serviceTest/start]" Destination="SERVER_1.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,360" Action="CREATE"><FB Name="E_SR" Type="E_SR" /></Request>
-OrchestrationWithRules;<Request ID="2,361" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
-OrchestrationWithRules;<Request ID="2,362" Action="CREATE"><FB Name="RegisterService2.RegisterServiceHTTP_1" Type="RegisterServiceHTTP" /></Request>
-OrchestrationWithRules;<Request ID="2,363" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
-OrchestrationWithRules;<Request ID="2,364" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
-OrchestrationWithRules;<Request ID="2,365" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
-OrchestrationWithRules;<Request ID="2,366" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
-OrchestrationWithRules;<Request ID="2,367" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
-OrchestrationWithRules;<Request ID="2,368" Action="WRITE"><Connection Source="WSTRING#test7Ended" Destination="SUBL_0.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,369" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
-OrchestrationWithRules;<Request ID="2,370" Action="WRITE"><Connection Source="WSTRIGN#allEnded" Destination="PUBL_0.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,371" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX" Type="E_DEMUX" /></Request>
-OrchestrationWithRules;<Request ID="2,372" Action="CREATE"><FB Name="Sequencer_1.E_CTU" Type="E_CTU" /></Request>
-OrchestrationWithRules;<Request ID="2,373" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
-OrchestrationWithRules;<Request ID="2,374" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH" Type="E_SWITCH" /></Request>
-OrchestrationWithRules;<Request ID="2,375" Action="CREATE"><FB Name="Sequencer_1.F_GT" Type="F_GT" /></Request>
-OrchestrationWithRules;<Request ID="2,376" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer_1.F_GT.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,377" Action="CREATE"><FB Name="Sequencer_1.F_SUB" Type="F_SUB" /></Request>
-OrchestrationWithRules;<Request ID="2,378" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer_1.F_SUB.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,379" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
-OrchestrationWithRules;<Request ID="2,380" Action="CREATE"><FB Name="Sequencer_1.F_GT_1" Type="F_GT" /></Request>
-OrchestrationWithRules;<Request ID="2,381" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer_1.F_GT_1.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,382" Action="CREATE"><FB Name="Sequencer_1.F_SUB_1" Type="F_SUB" /></Request>
-OrchestrationWithRules;<Request ID="2,383" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer_1.F_SUB_1.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,384" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH_1" Type="E_SWITCH" /></Request>
-OrchestrationWithRules;<Request ID="2,385" Action="CREATE"><FB Name="Sequencer_1.F_GT_1_1" Type="F_GT" /></Request>
-OrchestrationWithRules;<Request ID="2,386" Action="WRITE"><Connection Source="INT#11" Destination="Sequencer_1.F_GT_1_1.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,387" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH_1_1" Type="E_SWITCH" /></Request>
-OrchestrationWithRules;<Request ID="2,388" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1_1_1" Type="E_DEMUX" /></Request>
-OrchestrationWithRules;<Request ID="2,389" Action="CREATE"><FB Name="Sequencer_1.F_SUB_1_1" Type="F_SUB" /></Request>
-OrchestrationWithRules;<Request ID="2,390" Action="WRITE"><Connection Source="INT#12" Destination="Sequencer_1.F_SUB_1_1.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,391" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
-OrchestrationWithRules;<Request ID="2,392" Action="WRITE"><Connection Source="WSTRING#localhost:8090/serviceTest/start" Destination="F_EQ_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,393" Action="CREATE"><FB Name="ServiceAvailable" Type="TEST_CONDITION" /></Request>
-OrchestrationWithRules;<Request ID="2,394" Action="CREATE"><FB Name="E_SR_1" Type="E_SR" /></Request>
-OrchestrationWithRules;<Request ID="2,395" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
-OrchestrationWithRules;<Request ID="2,396" Action="CREATE"><FB Name="CLIENT_1_2" Type="CLIENT_1_2" /></Request>
-OrchestrationWithRules;<Request ID="2,397" Action="WRITE"><Connection Source="1" Destination="CLIENT_1_2.QI" /></Request>
-OrchestrationWithRules;<Request ID="2,398" Action="WRITE"><Connection Source="http[127.0.0.1:8444/authorization/mgmt/intracloud; POST; application/json]]" Destination="CLIENT_1_2.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,399" Action="WRITE"><Connection Source="STRING#{"consumer": {"systemName" : "systemTestName","address" : "localhost","port" : 8090},"providerList": [{"systemName" : "systemTestName","address" : "localhost","port" : 8090}],"serviceList": [{"serviceDefinition" : "serviceTest"}]}" Destination="CLIENT_1_2.SD_1" /></Request>
-OrchestrationWithRules;<Request ID="2,400" Action="CREATE"><FB Name="CLIENT_1_2_1" Type="CLIENT_1_2" /></Request>
-OrchestrationWithRules;<Request ID="2,401" Action="WRITE"><Connection Source="1" Destination="CLIENT_1_2_1.QI" /></Request>
-OrchestrationWithRules;<Request ID="2,402" Action="WRITE"><Connection Source="http[127.0.0.1:8440/orchestrator/mgmt/store; POST; application/json]]" Destination="CLIENT_1_2_1.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,403" Action="WRITE"><Connection Source="STRING#[{"service" : {"serviceDefinition" : "serviceTest","interfaces" : [ "XML", "JSON"],"serviceMetadata" : { "key1" : "value1", "key2" : "value2"}},"consumer" : {"systemName" : "systemTestName","address" :"localhost","port" : 8090, "authenticationInfo" : ""},"providerSystem" : {"systemName" : "systemTestName","address" : "localhost","port" : 8090,"authenticationInfo" : ""},"priority" : 1,"defaultEntry" : true,"name" : "","lastUpdated" : "","instruction" : "","attributes" : { },"serviceURI" : "serviceTest/start"} ]" Destination="CLIENT_1_2_1.SD_1" /></Request>
-OrchestrationWithRules;<Request ID="2,404" Action="CREATE"><FB Name="STRING2STRING" Type="STRING2STRING" /></Request>
-OrchestrationWithRules;<Request ID="2,405" Action="CREATE"><FB Name="PUBL_0_1" Type="PUBL_0" /></Request>
-OrchestrationWithRules;<Request ID="2,406" Action="WRITE"><Connection Source="WSTRING#allLoaded" Destination="PUBL_0_1.ID" /></Request>
-OrchestrationWithRules;<Request ID="2,407" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
-OrchestrationWithRules;<Request ID="2,408" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
-OrchestrationWithRules;<Request ID="2,409" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS" Type="WSTRING2WSTRING" /></Request>
-OrchestrationWithRules;<Request ID="2,410" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S" Type="F_DINT_TO_STRING" /></Request>
-OrchestrationWithRules;<Request ID="2,411" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
-OrchestrationWithRules;<Request ID="2,412" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.member" /></Request>
-OrchestrationWithRules;<Request ID="2,413" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort" Type="GET_STRUCT_VALUE" /></Request>
-OrchestrationWithRules;<Request ID="2,414" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.member" /></Request>
-OrchestrationWithRules;<Request ID="2,415" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI" Type="GET_STRUCT_VALUE" /></Request>
-OrchestrationWithRules;<Request ID="2,416" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.member" /></Request>
-OrchestrationWithRules;<Request ID="2,417" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort" Type="APPEND_STRING_3" /></Request>
-OrchestrationWithRules;<Request ID="2,418" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_2" /></Request>
-OrchestrationWithRules;<Request ID="2,419" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm" Type="OrchestrationForm2OrchestrationForm" /></Request>
-OrchestrationWithRules;<Request ID="2,420" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1" Type="WSTRING2WSTRING" /></Request>
-OrchestrationWithRules;<Request ID="2,421" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI" Type="APPEND_STRING_2" /></Request>
-OrchestrationWithRules;<Request ID="2,422" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud" Type="FieldsToArrowheadCloud" /></Request>
-OrchestrationWithRules;<Request ID="2,423" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
-OrchestrationWithRules;<Request ID="2,424" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationHTTP" Type="RequestOrchestrationHTTP" /></Request>
-OrchestrationWithRules;<Request ID="2,425" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" /></Request>
-OrchestrationWithRules;<Request ID="2,426" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
-OrchestrationWithRules;<Request ID="2,427" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm" Type="RequestOrchestrationForm" /></Request>
-OrchestrationWithRules;<Request ID="2,428" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
-OrchestrationWithRules;<Request ID="2,429" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
-OrchestrationWithRules;<Request ID="2,430" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
-OrchestrationWithRules;<Request ID="2,431" Action="WRITE"><Connection Source=""key1=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
-OrchestrationWithRules;<Request ID="2,432" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8442/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
-OrchestrationWithRules;<Request ID="2,433" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.systemName" /></Request>
-OrchestrationWithRules;<Request ID="2,434" Action="WRITE"><Connection Source="localhost" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.address" /></Request>
-OrchestrationWithRules;<Request ID="2,435" Action="WRITE"><Connection Source="8090" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.port" /></Request>
-OrchestrationWithRules;<Request ID="2,436" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.serviceDefinition" /></Request>
-OrchestrationWithRules;<Request ID="2,437" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.interfaces" /></Request>
-OrchestrationWithRules;<Request ID="2,438" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.serviceMetadata" /></Request>
-OrchestrationWithRules;<Request ID="2,439" Action="WRITE"><Connection Source="WSTRING#127.0.0.1:8440/orchestrator" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.endpoint" /></Request>
-OrchestrationWithRules;<Request ID="2,440" Action="WRITE"><Connection Source="0" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.INDEX" /></Request>
-OrchestrationWithRules;<Request ID="2,441" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,442" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,443" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
-OrchestrationWithRules;<Request ID="2,444" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
-OrchestrationWithRules;<Request ID="2,445" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
-OrchestrationWithRules;<Request ID="2,446" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,447" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
-OrchestrationWithRules;<Request ID="2,448" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
-OrchestrationWithRules;<Request ID="2,449" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
-OrchestrationWithRules;<Request ID="2,450" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceHTTP_1.registerService" /></Request>
-OrchestrationWithRules;<Request ID="2,451" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="CLIENT_1_2.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,452" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,453" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_SR.S" /></Request>
-OrchestrationWithRules;<Request ID="2,454" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,455" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_REND.EI1" /></Request>
-OrchestrationWithRules;<Request ID="2,456" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="E_SR_1.S" /></Request>
-OrchestrationWithRules;<Request ID="2,457" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,458" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="E_SR.S" /></Request>
-OrchestrationWithRules;<Request ID="2,459" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,460" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_SR.R" /></Request>
-OrchestrationWithRules;<Request ID="2,461" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,462" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_REND.EI1" /></Request>
-OrchestrationWithRules;<Request ID="2,463" Action="CREATE"><Connection Source="Sequencer_1.F_GT.CNF" Destination="Sequencer_1.E_SWITCH.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,464" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO0" Destination="Sequencer_1.E_DEMUX.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,465" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.CNF" Destination="Sequencer_1.E_DEMUX_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,466" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO1" Destination="Sequencer_1.F_GT_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,467" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.CNF" Destination="Sequencer_1.E_SWITCH_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,468" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO0" Destination="Sequencer_1.F_SUB.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,469" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,470" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="E_SR_1.R" /></Request>
-OrchestrationWithRules;<Request ID="2,471" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,472" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
-OrchestrationWithRules;<Request ID="2,473" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,474" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,475" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,476" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,477" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,478" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,479" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,480" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,481" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,482" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,483" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,484" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.CNF" Destination="Sequencer_1.E_SWITCH_1_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,485" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1_1.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,486" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="PUBL_0.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,487" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO1" Destination="Sequencer_1.F_GT_1_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,488" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO0" Destination="Sequencer_1.F_SUB_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,489" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO1" Destination="Sequencer_1.F_SUB_1_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,490" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
-OrchestrationWithRules;<Request ID="2,491" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,492" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,493" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,494" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,495" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,496" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
-OrchestrationWithRules;<Request ID="2,497" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.E_DEMUX.K" /></Request>
-OrchestrationWithRules;<Request ID="2,498" Action="CREATE"><Connection Source="Sequencer_1.F_GT.OUT" Destination="Sequencer_1.E_SWITCH.G" /></Request>
-OrchestrationWithRules;<Request ID="2,499" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.OUT" Destination="Sequencer_1.E_DEMUX_1.K" /></Request>
-OrchestrationWithRules;<Request ID="2,500" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,501" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,502" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,503" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,504" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.OUT" Destination="Sequencer_1.E_SWITCH_1.G" /></Request>
-OrchestrationWithRules;<Request ID="2,505" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1.K" /></Request>
-OrchestrationWithRules;<Request ID="2,506" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.OUT" Destination="Sequencer_1.E_SWITCH_1_1.G" /></Request>
-OrchestrationWithRules;<Request ID="2,507" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1_1.K" /></Request>
-OrchestrationWithRules;<Request ID="2,508" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,509" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1_1.IN1" /></Request>
-OrchestrationWithRules;<Request ID="2,510" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,511" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,512" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,513" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,514" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.CNF" Destination="E_SWITCH.EI" /></Request>
-OrchestrationWithRules;<Request ID="2,515" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,516" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,517" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,518" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,519" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,520" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_3" /></Request>
-OrchestrationWithRules;<Request ID="2,521" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_1" /></Request>
-OrchestrationWithRules;<Request ID="2,522" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,523" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,524" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,525" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ.IN2" /></Request>
-OrchestrationWithRules;<Request ID="2,526" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.in_struct" /></Request>
-OrchestrationWithRules;<Request ID="2,527" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.in_struct" /></Request>
-OrchestrationWithRules;<Request ID="2,528" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.in_struct" /></Request>
-OrchestrationWithRules;<Request ID="2,529" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,530" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_1" /></Request>
-OrchestrationWithRules;<Request ID="2,531" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,532" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_2" /></Request>
-OrchestrationWithRules;<Request ID="2,533" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,534" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.requestOrchestator" /></Request>
-OrchestrationWithRules;<Request ID="2,535" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.responseReceived" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,536" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.arrowheadService" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requestedService" /></Request>
-OrchestrationWithRules;<Request ID="2,537" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.serviceRequestForm" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.serviceRequestForm" /></Request>
-OrchestrationWithRules;<Request ID="2,538" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.orchestrationResponse" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.IN_ARRAY" /></Request>
-OrchestrationWithRules;<Request ID="2,539" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationForm.requestOrchestration" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.RequestOrchestrationHTTP.requestOrchestration" /></Request>
-OrchestrationWithRules;<Request ID="2,540" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,541" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToArrowheadService.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,542" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadSystem.arrowheadSystem" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requesterSystem" /></Request>
-OrchestrationWithRules;<Request ID="2,543" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.FieldsToArrowheadCloud.arrowheadCloud" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationHTTPPFull.RequestOrchestrationHTTPPartial.FieldsToServiceRequestForm.requesterCloud" /></Request>
-OrchestrationWithRules;<Request ID="2,544" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,545" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,546" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,547" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoServiceAvailable.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,548" Action="CREATE"><Connection Source="E_SR.EO" Destination="SERVER_1.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,549" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,550" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,551" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,552" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="ServiceAvailable.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,553" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,554" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,555" Action="CREATE"><Connection Source="E_SR_1.EO" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,556" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,557" Action="CREATE"><Connection Source="SERVER_1.INITO" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,558" Action="CREATE"><Connection Source="CLIENT_1_2.INITO" Destination="CLIENT_1_2.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,559" Action="CREATE"><Connection Source="CLIENT_1_2.CNF" Destination="CLIENT_1_2_1.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,560" Action="CREATE"><Connection Source="CLIENT_1_2_1.INITO" Destination="CLIENT_1_2_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,561" Action="CREATE"><Connection Source="CLIENT_1_2_1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,562" Action="CREATE"><Connection Source="SERVER_1.IND" Destination="STRING2STRING.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,563" Action="CREATE"><Connection Source="STRING2STRING.CNF" Destination="SERVER_1.RSP" /></Request>
-OrchestrationWithRules;<Request ID="2,564" Action="CREATE"><Connection Source="ServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,565" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,566" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,567" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0_1.INIT" /></Request>
-OrchestrationWithRules;<Request ID="2,568" Action="CREATE"><Connection Source="PUBL_0_1.INITO" Destination="PUBL_0_1.REQ" /></Request>
-OrchestrationWithRules;<Request ID="2,569" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoServiceAvailable.check" /></Request>
-OrchestrationWithRules;<Request ID="2,570" Action="CREATE"><Connection Source="E_SR.Q" Destination="SERVER_1.QI" /></Request>
-OrchestrationWithRules;<Request ID="2,571" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
-OrchestrationWithRules;<Request ID="2,572" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
-OrchestrationWithRules;<Request ID="2,573" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="ServiceAvailable.check" /></Request>
-OrchestrationWithRules;<Request ID="2,574" Action="CREATE"><Connection Source="E_SR_1.Q" Destination="E_SWITCH.G" /></Request>
-OrchestrationWithRules;<Request ID="2,575" Action="CREATE"><Connection Source="SERVER_1.RD_1" Destination="STRING2STRING.IN" /></Request>
-OrchestrationWithRules;<Request ID="2,576" Action="CREATE"><Connection Source="STRING2STRING.OUT" Destination="SERVER_1.SD_1" /></Request>
-OrchestrationWithRules;<Request ID="2,577" Action="START"/>
+OrchestrationWithRules;<Request ID="2,358" Action="CREATE"><FB Name="E_SR" Type="E_SR" /></Request>
+OrchestrationWithRules;<Request ID="2,359" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+OrchestrationWithRules;<Request ID="2,360" Action="WRITE"><Connection Source="WSTRING#test7Ended" Destination="SUBL_0.ID" /></Request>
+OrchestrationWithRules;<Request ID="2,361" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+OrchestrationWithRules;<Request ID="2,362" Action="WRITE"><Connection Source="test8Ended" Destination="PUBL_0.ID" /></Request>
+OrchestrationWithRules;<Request ID="2,363" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX" Type="E_DEMUX" /></Request>
+OrchestrationWithRules;<Request ID="2,364" Action="CREATE"><FB Name="Sequencer_1.E_CTU" Type="E_CTU" /></Request>
+OrchestrationWithRules;<Request ID="2,365" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
+OrchestrationWithRules;<Request ID="2,366" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH" Type="E_SWITCH" /></Request>
+OrchestrationWithRules;<Request ID="2,367" Action="CREATE"><FB Name="Sequencer_1.F_GT" Type="F_GT" /></Request>
+OrchestrationWithRules;<Request ID="2,368" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer_1.F_GT.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,369" Action="CREATE"><FB Name="Sequencer_1.F_SUB" Type="F_SUB" /></Request>
+OrchestrationWithRules;<Request ID="2,370" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer_1.F_SUB.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,371" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
+OrchestrationWithRules;<Request ID="2,372" Action="CREATE"><FB Name="Sequencer_1.F_GT_1" Type="F_GT" /></Request>
+OrchestrationWithRules;<Request ID="2,373" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer_1.F_GT_1.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,374" Action="CREATE"><FB Name="Sequencer_1.F_SUB_1" Type="F_SUB" /></Request>
+OrchestrationWithRules;<Request ID="2,375" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer_1.F_SUB_1.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,376" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH_1" Type="E_SWITCH" /></Request>
+OrchestrationWithRules;<Request ID="2,377" Action="CREATE"><FB Name="Sequencer_1.F_GT_1_1" Type="F_GT" /></Request>
+OrchestrationWithRules;<Request ID="2,378" Action="WRITE"><Connection Source="INT#11" Destination="Sequencer_1.F_GT_1_1.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,379" Action="CREATE"><FB Name="Sequencer_1.E_SWITCH_1_1" Type="E_SWITCH" /></Request>
+OrchestrationWithRules;<Request ID="2,380" Action="CREATE"><FB Name="Sequencer_1.E_DEMUX_1_1_1" Type="E_DEMUX" /></Request>
+OrchestrationWithRules;<Request ID="2,381" Action="CREATE"><FB Name="Sequencer_1.F_SUB_1_1" Type="F_SUB" /></Request>
+OrchestrationWithRules;<Request ID="2,382" Action="WRITE"><Connection Source="INT#12" Destination="Sequencer_1.F_SUB_1_1.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,383" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+OrchestrationWithRules;<Request ID="2,384" Action="WRITE"><Connection Source="WSTRING#localhost:4840/serviceTest/start" Destination="F_EQ_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,385" Action="CREATE"><FB Name="ServiceAvailable" Type="TEST_CONDITION" /></Request>
+OrchestrationWithRules;<Request ID="2,386" Action="CREATE"><FB Name="E_SR_1" Type="E_SR" /></Request>
+OrchestrationWithRules;<Request ID="2,387" Action="CREATE"><FB Name="E_SWITCH" Type="E_SWITCH" /></Request>
+OrchestrationWithRules;<Request ID="2,388" Action="CREATE"><FB Name="SERVER_1_1" Type="SERVER_0" /></Request>
+OrchestrationWithRules;<Request ID="2,389" Action="WRITE"><Connection Source="opc_ua[CREATE_METHOD;/Objects/serviceTest/start2]" Destination="SERVER_1_1.ID" /></Request>
+OrchestrationWithRules;<Request ID="2,390" Action="CREATE"><FB Name="RegisterService2.FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" /></Request>
+OrchestrationWithRules;<Request ID="2,391" Action="CREATE"><FB Name="RegisterService2.RegisterService" Type="RegisterService" /></Request>
+OrchestrationWithRules;<Request ID="2,392" Action="CREATE"><FB Name="RegisterService2.E_SR" Type="E_SR" /></Request>
+OrchestrationWithRules;<Request ID="2,393" Action="CREATE"><FB Name="RegisterService2.E_SWITCH" Type="E_SWITCH" /></Request>
+OrchestrationWithRules;<Request ID="2,394" Action="CREATE"><FB Name="RegisterService2.E_REND" Type="E_REND" /></Request>
+OrchestrationWithRules;<Request ID="2,395" Action="CREATE"><FB Name="RegisterService2.RegisterServiceOpcUa" Type="RegisterServiceOpcUa" /></Request>
+OrchestrationWithRules;<Request ID="2,396" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX" Type="GET_AT_INDEX" /></Request>
+OrchestrationWithRules;<Request ID="2,397" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS" Type="F_STRING_TO_WSTRING" /></Request>
+OrchestrationWithRules;<Request ID="2,398" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS" Type="WSTRING2WSTRING" /></Request>
+OrchestrationWithRules;<Request ID="2,399" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S" Type="F_DINT_TO_STRING" /></Request>
+OrchestrationWithRules;<Request ID="2,400" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress" Type="GET_STRUCT_VALUE" /></Request>
+OrchestrationWithRules;<Request ID="2,401" Action="WRITE"><Connection Source="STRING#provider.address" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.member" /></Request>
+OrchestrationWithRules;<Request ID="2,402" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort" Type="GET_STRUCT_VALUE" /></Request>
+OrchestrationWithRules;<Request ID="2,403" Action="WRITE"><Connection Source="STRING#provider.port" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.member" /></Request>
+OrchestrationWithRules;<Request ID="2,404" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI" Type="GET_STRUCT_VALUE" /></Request>
+OrchestrationWithRules;<Request ID="2,405" Action="WRITE"><Connection Source="STRING#serviceURI" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.member" /></Request>
+OrchestrationWithRules;<Request ID="2,406" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort" Type="APPEND_STRING_3" /></Request>
+OrchestrationWithRules;<Request ID="2,407" Action="WRITE"><Connection Source="STRING#:" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_2" /></Request>
+OrchestrationWithRules;<Request ID="2,408" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm" Type="OrchestrationForm2OrchestrationForm" /></Request>
+OrchestrationWithRules;<Request ID="2,409" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1" Type="WSTRING2WSTRING" /></Request>
+OrchestrationWithRules;<Request ID="2,410" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI" Type="APPEND_STRING_2" /></Request>
+OrchestrationWithRules;<Request ID="2,411" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadCloud" Type="FieldsToArrowheadCloud" /></Request>
+OrchestrationWithRules;<Request ID="2,412" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+OrchestrationWithRules;<Request ID="2,413" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" /></Request>
+OrchestrationWithRules;<Request ID="2,414" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService" Type="FieldsToArrowheadService" /></Request>
+OrchestrationWithRules;<Request ID="2,415" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm" Type="RequestOrchestrationForm" /></Request>
+OrchestrationWithRules;<Request ID="2,416" Action="CREATE"><FB Name="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationOpcUa" Type="RequestOrchestrationOpcUa" /></Request>
+OrchestrationWithRules;<Request ID="2,417" Action="CREATE"><FB Name="E_DELAY" Type="E_DELAY" /></Request>
+OrchestrationWithRules;<Request ID="2,418" Action="WRITE"><Connection Source="T#1s" Destination="E_DELAY.DT" /></Request>
+OrchestrationWithRules;<Request ID="2,419" Action="CREATE"><FB Name="E_DELAY_1" Type="E_DELAY" /></Request>
+OrchestrationWithRules;<Request ID="2,420" Action="WRITE"><Connection Source="T#1s" Destination="E_DELAY_1.DT" /></Request>
+OrchestrationWithRules;<Request ID="2,421" Action="CREATE"><FB Name="STRING2STRING_3_1" Type="STRING2STRING" /></Request>
+OrchestrationWithRules;<Request ID="2,422" Action="WRITE"><Connection Source="STRING#[{"service" : {"serviceDefinition" : "serviceTest","interfaces" : [ "XML", "JSON"],"serviceMetadata" : { "key1" : "value1", "key2" : "value2"}},"consumer" : {"systemName" : "systemTestName","address" :"localhost","port" : 4840, "authenticationInfo" : ""},"providerSystem" : {"systemName" : "systemTestName","address" : "localhost","port" : 4840,"authenticationInfo" : ""},"priority" : 1,"defaultEntry" : true,"name" : "","lastUpdated" : "","instruction" : "","attributes" : { },"serviceURI" : "serviceTest/start"} ]" Destination="STRING2STRING_3_1.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,423" Action="CREATE"><FB Name="STRING2STRING_3" Type="STRING2STRING" /></Request>
+OrchestrationWithRules;<Request ID="2,424" Action="WRITE"><Connection Source="STRING#{"consumer": {"systemName" : "systemTestName","address" : "localhost","port" : 4840},"providerList": [{"systemName" : "systemTestName","address" : "localhost","port" : 4840}],"serviceList": [{"serviceDefinition" : "serviceTest"}]}" Destination="STRING2STRING_3.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,425" Action="CREATE"><FB Name="CLIENT_1_2" Type="CLIENT_1_0" /></Request>
+OrchestrationWithRules;<Request ID="2,426" Action="WRITE"><Connection Source="1" Destination="CLIENT_1_2.QI" /></Request>
+OrchestrationWithRules;<Request ID="2,427" Action="WRITE"><Connection Source="opc_ua[CALL_METHOD; opc.tcp://127.0.0.1:62541/authorization/#; /Objects/2:Authorization/2:addSystemToAuthorized]" Destination="CLIENT_1_2.ID" /></Request>
+OrchestrationWithRules;<Request ID="2,428" Action="CREATE"><FB Name="CLIENT_1_2_1" Type="CLIENT_1_0" /></Request>
+OrchestrationWithRules;<Request ID="2,429" Action="WRITE"><Connection Source="1" Destination="CLIENT_1_2_1.QI" /></Request>
+OrchestrationWithRules;<Request ID="2,430" Action="WRITE"><Connection Source="opc_ua[CALL_METHOD; opc.tcp://127.0.0.1:62548/orchestrator#; /Objects/2:Orchestrator/2:store]" Destination="CLIENT_1_2_1.ID" /></Request>
+OrchestrationWithRules;<Request ID="2,431" Action="WRITE"><Connection Source="/serviceTest/start" Destination="RegisterService2.FieldsToServiceRegistryEntry.serviceURI" /></Request>
+OrchestrationWithRules;<Request ID="2,432" Action="WRITE"><Connection Source="1" Destination="RegisterService2.FieldsToServiceRegistryEntry.version" /></Request>
+OrchestrationWithRules;<Request ID="2,433" Action="WRITE"><Connection Source="false" Destination="RegisterService2.FieldsToServiceRegistryEntry.udp" /></Request>
+OrchestrationWithRules;<Request ID="2,434" Action="WRITE"><Connection Source=""key=value1, key2=value2"" Destination="RegisterService2.FieldsToServiceRegistryEntry.metadata" /></Request>
+OrchestrationWithRules;<Request ID="2,435" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62551/serviceregistry" Destination="RegisterService2.RegisterService.endpoint" /></Request>
+OrchestrationWithRules;<Request ID="2,436" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.systemName" /></Request>
+OrchestrationWithRules;<Request ID="2,437" Action="WRITE"><Connection Source="localhost" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.address" /></Request>
+OrchestrationWithRules;<Request ID="2,438" Action="WRITE"><Connection Source="4840" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.port" /></Request>
+OrchestrationWithRules;<Request ID="2,439" Action="WRITE"><Connection Source="WSTRING#serviceTest" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService.serviceDefinition" /></Request>
+OrchestrationWithRules;<Request ID="2,440" Action="WRITE"><Connection Source="["JSON", "XML"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService.interfaces" /></Request>
+OrchestrationWithRules;<Request ID="2,441" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService.serviceMetadata" /></Request>
+OrchestrationWithRules;<Request ID="2,442" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62548/orchestrator" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm.endpoint" /></Request>
+OrchestrationWithRules;<Request ID="2,443" Action="WRITE"><Connection Source="0" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.INDEX" /></Request>
+OrchestrationWithRules;<Request ID="2,444" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="STRING2STRING_3.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,445" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,446" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_SR.S" /></Request>
+OrchestrationWithRules;<Request ID="2,447" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,448" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="RegisterService2.E_REND.EI1" /></Request>
+OrchestrationWithRules;<Request ID="2,449" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="E_SR_1.S" /></Request>
+OrchestrationWithRules;<Request ID="2,450" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,451" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="E_SR.S" /></Request>
+OrchestrationWithRules;<Request ID="2,452" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,453" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_SR.R" /></Request>
+OrchestrationWithRules;<Request ID="2,454" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.FieldsToServiceRegistryEntry.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,455" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="RegisterService2.E_REND.EI1" /></Request>
+OrchestrationWithRules;<Request ID="2,456" Action="CREATE"><Connection Source="Sequencer_1.F_GT.CNF" Destination="Sequencer_1.E_SWITCH.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,457" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO0" Destination="Sequencer_1.E_DEMUX.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,458" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.CNF" Destination="Sequencer_1.E_DEMUX_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,459" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH.EO1" Destination="Sequencer_1.F_GT_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,460" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.CNF" Destination="Sequencer_1.E_SWITCH_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,461" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO0" Destination="Sequencer_1.F_SUB.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,462" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,463" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="E_SR_1.R" /></Request>
+OrchestrationWithRules;<Request ID="2,464" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,465" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="E_SR.R" /></Request>
+OrchestrationWithRules;<Request ID="2,466" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,467" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,468" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,469" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,470" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,471" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,472" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,473" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,474" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,475" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,476" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,477" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.CNF" Destination="Sequencer_1.E_SWITCH_1_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,478" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.CNF" Destination="Sequencer_1.E_DEMUX_1_1_1.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,479" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="PUBL_0.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,480" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1.EO1" Destination="Sequencer_1.F_GT_1_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,481" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO0" Destination="Sequencer_1.F_SUB_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,482" Action="CREATE"><Connection Source="Sequencer_1.E_SWITCH_1_1.EO1" Destination="Sequencer_1.F_SUB_1_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,483" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.R" /></Request>
+OrchestrationWithRules;<Request ID="2,484" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO0" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,485" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO1" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,486" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO2" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,487" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,488" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,489" Action="CREATE"><Connection Source="Sequencer_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1.E_CTU.CU" /></Request>
+OrchestrationWithRules;<Request ID="2,490" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.E_DEMUX.K" /></Request>
+OrchestrationWithRules;<Request ID="2,491" Action="CREATE"><Connection Source="Sequencer_1.F_GT.OUT" Destination="Sequencer_1.E_SWITCH.G" /></Request>
+OrchestrationWithRules;<Request ID="2,492" Action="CREATE"><Connection Source="Sequencer_1.F_SUB.OUT" Destination="Sequencer_1.E_DEMUX_1.K" /></Request>
+OrchestrationWithRules;<Request ID="2,493" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,494" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,495" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,496" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,497" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1.OUT" Destination="Sequencer_1.E_SWITCH_1.G" /></Request>
+OrchestrationWithRules;<Request ID="2,498" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1.K" /></Request>
+OrchestrationWithRules;<Request ID="2,499" Action="CREATE"><Connection Source="Sequencer_1.F_GT_1_1.OUT" Destination="Sequencer_1.E_SWITCH_1_1.G" /></Request>
+OrchestrationWithRules;<Request ID="2,500" Action="CREATE"><Connection Source="Sequencer_1.F_SUB_1_1.OUT" Destination="Sequencer_1.E_DEMUX_1_1_1.K" /></Request>
+OrchestrationWithRules;<Request ID="2,501" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_SUB_1_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,502" Action="CREATE"><Connection Source="Sequencer_1.E_CTU.CV" Destination="Sequencer_1.F_GT_1_1.IN1" /></Request>
+OrchestrationWithRules;<Request ID="2,503" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneRegister" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,504" Action="CREATE"><Connection Source="RegisterService2.RegisterService.doneUnregister" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,505" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO1" Destination="RegisterService2.RegisterService.register" /></Request>
+OrchestrationWithRules;<Request ID="2,506" Action="CREATE"><Connection Source="RegisterService2.E_SWITCH.EO0" Destination="RegisterService2.RegisterService.unregister" /></Request>
+OrchestrationWithRules;<Request ID="2,507" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.CNF" Destination="RegisterService2.E_REND.EI2" /></Request>
+OrchestrationWithRules;<Request ID="2,508" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_SWITCH.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,509" Action="CREATE"><Connection Source="RegisterService2.E_REND.EO" Destination="RegisterService2.E_REND.R" /></Request>
+OrchestrationWithRules;<Request ID="2,510" Action="CREATE"><Connection Source="RegisterService2.FieldsToServiceRegistryEntry.serviceRegistryEntry" Destination="RegisterService2.RegisterService.serviceRegistryEntry" /></Request>
+OrchestrationWithRules;<Request ID="2,511" Action="CREATE"><Connection Source="RegisterService2.E_SR.Q" Destination="RegisterService2.E_SWITCH.G" /></Request>
+OrchestrationWithRules;<Request ID="2,512" Action="CREATE"><Connection Source="RegisterService2.RegisterService.registerService" Destination="RegisterService2.RegisterServiceOpcUa.registerService" /></Request>
+OrchestrationWithRules;<Request ID="2,513" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,514" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,515" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,516" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,517" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.CNF" Destination="E_SWITCH.EI" /></Request>
+OrchestrationWithRules;<Request ID="2,518" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,519" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,520" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,521" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,522" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,523" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_3" /></Request>
+OrchestrationWithRules;<Request ID="2,524" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.IN_1" /></Request>
+OrchestrationWithRules;<Request ID="2,525" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.DI2S.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,526" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,527" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ_1.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,528" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.OUT" Destination="F_EQ.IN2" /></Request>
+OrchestrationWithRules;<Request ID="2,529" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetAddress.in_struct" /></Request>
+OrchestrationWithRules;<Request ID="2,530" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetPort.in_struct" /></Request>
+OrchestrationWithRules;<Request ID="2,531" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.in_struct" /></Request>
+OrchestrationWithRules;<Request ID="2,532" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.GetURI.output" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,533" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPort.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_1" /></Request>
+OrchestrationWithRules;<Request ID="2,534" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.S2WS.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,535" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.WS2WS_1.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.IpPortURI.IN_2" /></Request>
+OrchestrationWithRules;<Request ID="2,536" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,537" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm.requestOrchestator" /></Request>
+OrchestrationWithRules;<Request ID="2,538" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm.responseReceived" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,539" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService.arrowheadService" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm.requestedService" /></Request>
+OrchestrationWithRules;<Request ID="2,540" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm.serviceRequestForm" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm.serviceRequestForm" /></Request>
+OrchestrationWithRules;<Request ID="2,541" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm.orchestrationResponse" Destination="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.IN_ARRAY" /></Request>
+OrchestrationWithRules;<Request ID="2,542" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationForm.requestOrchestration" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.RequestOrchestrationOpcUa.requestOrchestration" /></Request>
+OrchestrationWithRules;<Request ID="2,543" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadCloud.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,544" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadCloud.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToArrowheadService.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,545" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadSystem.arrowheadSystem" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm.requesterSystem" /></Request>
+OrchestrationWithRules;<Request ID="2,546" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.FieldsToArrowheadCloud.arrowheadCloud" Destination="GetEndpointFromOrchestrationHTTPPFull.RequestOrchestrationOpcUaFull.RequestOrchestrationOpcUaPartial.FieldsToServiceRequestForm.requesterCloud" /></Request>
+OrchestrationWithRules;<Request ID="2,547" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.CNF" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,548" Action="CREATE"><Connection Source="GetEndpointFromOrchestrationHTTPPFull.GET_AT_INDEX.OUT" Destination="GetEndpointFromOrchestrationHTTPPFull.GetEndpointFromOrchestrationForm.OrchestrationForm2OrchestrationForm.IN" /></Request>
+OrchestrationWithRules;<Request ID="2,549" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="Service1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,550" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoServiceAvailable.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,551" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,552" Action="CREATE"><Connection Source="NoServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,553" Action="CREATE"><Connection Source="Service1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,554" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="ServiceAvailable.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,555" Action="CREATE"><Connection Source="ServiceAvailable.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,556" Action="CREATE"><Connection Source="E_SR_1.EO" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,557" Action="CREATE"><Connection Source="E_SWITCH.EO0" Destination="F_EQ.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,558" Action="CREATE"><Connection Source="E_SWITCH.EO1" Destination="F_EQ_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,559" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,560" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,561" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,562" Action="CREATE"><Connection Source="E_SR.EO" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,563" Action="CREATE"><Connection Source="STRING2STRING_3.CNF" Destination="CLIENT_1_2.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,564" Action="CREATE"><Connection Source="E_DELAY.EO" Destination="CLIENT_1_2.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,565" Action="CREATE"><Connection Source="CLIENT_1_2.INITO" Destination="E_DELAY.START" /></Request>
+OrchestrationWithRules;<Request ID="2,566" Action="CREATE"><Connection Source="CLIENT_1_2.CNF" Destination="STRING2STRING_3_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,567" Action="CREATE"><Connection Source="STRING2STRING_3_1.CNF" Destination="CLIENT_1_2_1.INIT" /></Request>
+OrchestrationWithRules;<Request ID="2,568" Action="CREATE"><Connection Source="E_DELAY_1.EO" Destination="CLIENT_1_2_1.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,569" Action="CREATE"><Connection Source="CLIENT_1_2_1.INITO" Destination="E_DELAY_1.START" /></Request>
+OrchestrationWithRules;<Request ID="2,570" Action="CREATE"><Connection Source="CLIENT_1_2_1.CNF" Destination="Sequencer_1.F_GT.REQ" /></Request>
+OrchestrationWithRules;<Request ID="2,571" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoServiceAvailable.check" /></Request>
+OrchestrationWithRules;<Request ID="2,572" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="ServiceAvailable.check" /></Request>
+OrchestrationWithRules;<Request ID="2,573" Action="CREATE"><Connection Source="E_SR_1.Q" Destination="E_SWITCH.G" /></Request>
+OrchestrationWithRules;<Request ID="2,574" Action="CREATE"><Connection Source="E_SR.Q" Destination="SERVER_1_1.QI" /></Request>
+OrchestrationWithRules;<Request ID="2,575" Action="CREATE"><Connection Source="Service1.arrowheadService" Destination="RegisterService2.FieldsToServiceRegistryEntry.providedService" /></Request>
+OrchestrationWithRules;<Request ID="2,576" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="RegisterService2.FieldsToServiceRegistryEntry.provider" /></Request>
+OrchestrationWithRules;<Request ID="2,577" Action="CREATE"><Connection Source="STRING2STRING_3.OUT" Destination="CLIENT_1_2.SD_1" /></Request>
+OrchestrationWithRules;<Request ID="2,578" Action="CREATE"><Connection Source="STRING2STRING_3_1.OUT" Destination="CLIENT_1_2_1.SD_1" /></Request>
+OrchestrationWithRules;<Request ID="2,579" Action="START"/>
+;<Request ID="2,580" Action="CREATE"><FB Name="PublishSubscribe" Type="EMB_RES" /></Request>
+PublishSubscribe;<Request ID="2,581" Action="CREATE"><FB Name="FieldsToPublishEvent" Type="FieldsToPublishEvent" /></Request>
+PublishSubscribe;<Request ID="2,582" Action="CREATE"><FB Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" /></Request>
+PublishSubscribe;<Request ID="2,583" Action="WRITE"><Connection Source="WSTRING#systemTestName" Destination="FieldsToArrowheadSystem.systemName" /></Request>
+PublishSubscribe;<Request ID="2,584" Action="WRITE"><Connection Source="localhost" Destination="FieldsToArrowheadSystem.address" /></Request>
+PublishSubscribe;<Request ID="2,585" Action="WRITE"><Connection Source="8090" Destination="FieldsToArrowheadSystem.port" /></Request>
+PublishSubscribe;<Request ID="2,586" Action="CREATE"><FB Name="ArrowheadPublish" Type="ArrowheadPublish" /></Request>
+PublishSubscribe;<Request ID="2,587" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62544/eventhandler" Destination="ArrowheadPublish.endpoint" /></Request>
+PublishSubscribe;<Request ID="2,588" Action="CREATE"><FB Name="PublishEventHTTP" Type="PublishEventOpcUa" /></Request>
+PublishSubscribe;<Request ID="2,589" Action="CREATE"><FB Name="FieldsToArrowheadEvent" Type="FieldsToArrowheadEvent" /></Request>
+PublishSubscribe;<Request ID="2,590" Action="WRITE"><Connection Source="WSTRING#eventType4diac" Destination="FieldsToArrowheadEvent.type" /></Request>
+PublishSubscribe;<Request ID="2,591" Action="WRITE"><Connection Source="WSTRING#This is the payload of the event" Destination="FieldsToArrowheadEvent.payload" /></Request>
+PublishSubscribe;<Request ID="2,592" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToArrowheadEvent.eventMetadata" /></Request>
+PublishSubscribe;<Request ID="2,593" Action="CREATE"><FB Name="FieldsToEventFilter" Type="FieldsToEventFilter" /></Request>
+PublishSubscribe;<Request ID="2,594" Action="WRITE"><Connection Source="WSTRING#eventType4diac" Destination="FieldsToEventFilter.eventType" /></Request>
+PublishSubscribe;<Request ID="2,595" Action="WRITE"><Connection Source="["key1=value1", "key2=value2"]" Destination="FieldsToEventFilter.filterMetadata" /></Request>
+PublishSubscribe;<Request ID="2,596" Action="WRITE"><Connection Source="WSTRING#/subscribePath" Destination="FieldsToEventFilter.notifyUri" /></Request>
+PublishSubscribe;<Request ID="2,597" Action="WRITE"><Connection Source="BOOL#TRUE" Destination="FieldsToEventFilter.matchMetadata" /></Request>
+PublishSubscribe;<Request ID="2,598" Action="CREATE"><FB Name="SubscribeEvent" Type="SubscribeEvent" /></Request>
+PublishSubscribe;<Request ID="2,599" Action="WRITE"><Connection Source="WSTRING#opc.tcp://127.0.0.1:62544/eventhandler" Destination="SubscribeEvent.endpoint" /></Request>
+PublishSubscribe;<Request ID="2,600" Action="CREATE"><FB Name="SubscribeEventHTTP" Type="SubscribeEventOpcUa" /></Request>
+PublishSubscribe;<Request ID="2,601" Action="CREATE"><FB Name="E_CTU" Type="E_CTU" /></Request>
+PublishSubscribe;<Request ID="2,602" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+PublishSubscribe;<Request ID="2,603" Action="WRITE"><Connection Source="UINT#0" Destination="F_EQ.IN2" /></Request>
+PublishSubscribe;<Request ID="2,604" Action="CREATE"><FB Name="E_DELAY" Type="E_DELAY" /></Request>
+PublishSubscribe;<Request ID="2,605" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY.DT" /></Request>
+PublishSubscribe;<Request ID="2,606" Action="CREATE"><FB Name="NoMessage" Type="TEST_CONDITION" /></Request>
+PublishSubscribe;<Request ID="2,607" Action="CREATE"><FB Name="F_EQ_1" Type="F_EQ" /></Request>
+PublishSubscribe;<Request ID="2,608" Action="WRITE"><Connection Source="UINT#1" Destination="F_EQ_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,609" Action="CREATE"><FB Name="OneMessage" Type="TEST_CONDITION" /></Request>
+PublishSubscribe;<Request ID="2,610" Action="CREATE"><FB Name="E_DELAY_1" Type="E_DELAY" /></Request>
+PublishSubscribe;<Request ID="2,611" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY_1.DT" /></Request>
+PublishSubscribe;<Request ID="2,612" Action="CREATE"><FB Name="E_DELAY_1_1" Type="E_DELAY" /></Request>
+PublishSubscribe;<Request ID="2,613" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY_1_1.DT" /></Request>
+PublishSubscribe;<Request ID="2,614" Action="CREATE"><FB Name="F_EQ_1_1" Type="F_EQ" /></Request>
+PublishSubscribe;<Request ID="2,615" Action="WRITE"><Connection Source="UINT#2" Destination="F_EQ_1_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,616" Action="CREATE"><FB Name="TwoMessages" Type="TEST_CONDITION" /></Request>
+PublishSubscribe;<Request ID="2,617" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,618" Action="CREATE"><FB Name="Sequencer_1_1.E_CTU" Type="E_CTU" /></Request>
+PublishSubscribe;<Request ID="2,619" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX_1" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,620" Action="CREATE"><FB Name="Sequencer_1_1.E_SWITCH" Type="E_SWITCH" /></Request>
+PublishSubscribe;<Request ID="2,621" Action="CREATE"><FB Name="Sequencer_1_1.F_GT" Type="F_GT" /></Request>
+PublishSubscribe;<Request ID="2,622" Action="WRITE"><Connection Source="INT#3" Destination="Sequencer_1_1.F_GT.IN2" /></Request>
+PublishSubscribe;<Request ID="2,623" Action="CREATE"><FB Name="Sequencer_1_1.F_SUB" Type="F_SUB" /></Request>
+PublishSubscribe;<Request ID="2,624" Action="WRITE"><Connection Source="INT#4" Destination="Sequencer_1_1.F_SUB.IN2" /></Request>
+PublishSubscribe;<Request ID="2,625" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX_1_1" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,626" Action="CREATE"><FB Name="Sequencer_1_1.F_GT_1" Type="F_GT" /></Request>
+PublishSubscribe;<Request ID="2,627" Action="WRITE"><Connection Source="INT#7" Destination="Sequencer_1_1.F_GT_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,628" Action="CREATE"><FB Name="Sequencer_1_1.F_SUB_1" Type="F_SUB" /></Request>
+PublishSubscribe;<Request ID="2,629" Action="WRITE"><Connection Source="INT#8" Destination="Sequencer_1_1.F_SUB_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,630" Action="CREATE"><FB Name="Sequencer_1_1.E_SWITCH_1" Type="E_SWITCH" /></Request>
+PublishSubscribe;<Request ID="2,631" Action="CREATE"><FB Name="Sequencer_1_1.F_GT_1_1" Type="F_GT" /></Request>
+PublishSubscribe;<Request ID="2,632" Action="WRITE"><Connection Source="INT#11" Destination="Sequencer_1_1.F_GT_1_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,633" Action="CREATE"><FB Name="Sequencer_1_1.E_SWITCH_1_1" Type="E_SWITCH" /></Request>
+PublishSubscribe;<Request ID="2,634" Action="CREATE"><FB Name="Sequencer_1_1.E_DEMUX_1_1_1" Type="E_DEMUX" /></Request>
+PublishSubscribe;<Request ID="2,635" Action="CREATE"><FB Name="Sequencer_1_1.F_SUB_1_1" Type="F_SUB" /></Request>
+PublishSubscribe;<Request ID="2,636" Action="WRITE"><Connection Source="INT#12" Destination="Sequencer_1_1.F_SUB_1_1.IN2" /></Request>
+PublishSubscribe;<Request ID="2,637" Action="CREATE"><FB Name="SUBL_0" Type="SUBL_0" /></Request>
+PublishSubscribe;<Request ID="2,638" Action="WRITE"><Connection Source="test8Ended" Destination="SUBL_0.ID" /></Request>
+PublishSubscribe;<Request ID="2,639" Action="CREATE"><FB Name="PUBL_0_1" Type="PUBL_0" /></Request>
+PublishSubscribe;<Request ID="2,640" Action="WRITE"><Connection Source="WSTRING#allLoaded" Destination="PUBL_0_1.ID" /></Request>
+PublishSubscribe;<Request ID="2,641" Action="CREATE"><FB Name="PUBL_0" Type="PUBL_0" /></Request>
+PublishSubscribe;<Request ID="2,642" Action="WRITE"><Connection Source="WSTRIGN#allEnded" Destination="PUBL_0.ID" /></Request>
+PublishSubscribe;<Request ID="2,643" Action="CREATE"><FB Name="SERVER_1_0" Type="SERVER_1" /></Request>
+PublishSubscribe;<Request ID="2,644" Action="WRITE"><Connection Source="1" Destination="SERVER_1_0.QI" /></Request>
+PublishSubscribe;<Request ID="2,645" Action="WRITE"><Connection Source="http[/subscribePath]" Destination="SERVER_1_0.ID" /></Request>
+PublishSubscribe;<Request ID="2,646" Action="CREATE"><FB Name="STRING2STRING" Type="STRING2STRING" /></Request>
+PublishSubscribe;<Request ID="2,647" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO0" Destination="FieldsToArrowheadSystem.REQ" /></Request>
+PublishSubscribe;<Request ID="2,648" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO1" Destination="FieldsToPublishEvent.REQ" /></Request>
+PublishSubscribe;<Request ID="2,649" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO2" Destination="E_DELAY.START" /></Request>
+PublishSubscribe;<Request ID="2,650" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO3" Destination="SubscribeEvent.Subscribe" /></Request>
+PublishSubscribe;<Request ID="2,651" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO0" Destination="E_DELAY.START" /></Request>
+PublishSubscribe;<Request ID="2,652" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO1" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,653" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO2" Destination="E_DELAY_1.START" /></Request>
+PublishSubscribe;<Request ID="2,654" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO3" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,655" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT.CNF" Destination="Sequencer_1_1.E_SWITCH.EI" /></Request>
+PublishSubscribe;<Request ID="2,656" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH.EO0" Destination="Sequencer_1_1.E_DEMUX.EI" /></Request>
+PublishSubscribe;<Request ID="2,657" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB.CNF" Destination="Sequencer_1_1.E_DEMUX_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,658" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH.EO1" Destination="Sequencer_1_1.F_GT_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,659" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1.CNF" Destination="Sequencer_1_1.E_SWITCH_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,660" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1.EO0" Destination="Sequencer_1_1.F_SUB.REQ" /></Request>
+PublishSubscribe;<Request ID="2,661" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1.CNF" Destination="Sequencer_1_1.E_DEMUX_1_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,662" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO0" Destination="E_DELAY_1_1.START" /></Request>
+PublishSubscribe;<Request ID="2,663" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO1" Destination="SubscribeEvent.Unsubscribe" /></Request>
+PublishSubscribe;<Request ID="2,664" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO2" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,665" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,666" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,667" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,668" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,669" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,670" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,671" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,672" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,673" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,674" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,675" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,676" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1_1.CNF" Destination="Sequencer_1_1.E_SWITCH_1_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,677" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1_1.CNF" Destination="Sequencer_1_1.E_DEMUX_1_1_1.EI" /></Request>
+PublishSubscribe;<Request ID="2,678" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO0" Destination="PUBL_0.REQ" /></Request>
+PublishSubscribe;<Request ID="2,679" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1.EO1" Destination="Sequencer_1_1.F_GT_1_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,680" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1_1.EO0" Destination="Sequencer_1_1.F_SUB_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,681" Action="CREATE"><Connection Source="Sequencer_1_1.E_SWITCH_1_1.EO1" Destination="Sequencer_1_1.F_SUB_1_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,682" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1_1.E_CTU.R" /></Request>
+PublishSubscribe;<Request ID="2,683" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO0" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,684" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO1" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,685" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO2" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,686" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1_1.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,687" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO3" Destination="E_DELAY_1_1.START" /></Request>
+PublishSubscribe;<Request ID="2,688" Action="CREATE"><Connection Source="Sequencer_1_1.E_DEMUX_1_1.EO3" Destination="Sequencer_1_1.E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,689" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.E_DEMUX.K" /></Request>
+PublishSubscribe;<Request ID="2,690" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT.OUT" Destination="Sequencer_1_1.E_SWITCH.G" /></Request>
+PublishSubscribe;<Request ID="2,691" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB.OUT" Destination="Sequencer_1_1.E_DEMUX_1.K" /></Request>
+PublishSubscribe;<Request ID="2,692" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_GT.IN1" /></Request>
+PublishSubscribe;<Request ID="2,693" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_SUB.IN1" /></Request>
+PublishSubscribe;<Request ID="2,694" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_SUB_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,695" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_GT_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,696" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1.OUT" Destination="Sequencer_1_1.E_SWITCH_1.G" /></Request>
+PublishSubscribe;<Request ID="2,697" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1.OUT" Destination="Sequencer_1_1.E_DEMUX_1_1.K" /></Request>
+PublishSubscribe;<Request ID="2,698" Action="CREATE"><Connection Source="Sequencer_1_1.F_GT_1_1.OUT" Destination="Sequencer_1_1.E_SWITCH_1_1.G" /></Request>
+PublishSubscribe;<Request ID="2,699" Action="CREATE"><Connection Source="Sequencer_1_1.F_SUB_1_1.OUT" Destination="Sequencer_1_1.E_DEMUX_1_1_1.K" /></Request>
+PublishSubscribe;<Request ID="2,700" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_SUB_1_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,701" Action="CREATE"><Connection Source="Sequencer_1_1.E_CTU.CV" Destination="Sequencer_1_1.F_GT_1_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,702" Action="CREATE"><Connection Source="FieldsToPublishEvent.CNF" Destination="ArrowheadPublish.publish" /></Request>
+PublishSubscribe;<Request ID="2,703" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.CNF" Destination="FieldsToArrowheadEvent.REQ" /></Request>
+PublishSubscribe;<Request ID="2,704" Action="CREATE"><Connection Source="E_DELAY.EO" Destination="F_EQ.REQ" /></Request>
+PublishSubscribe;<Request ID="2,705" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="NoMessage.REQ" /></Request>
+PublishSubscribe;<Request ID="2,706" Action="CREATE"><Connection Source="F_EQ_1.CNF" Destination="OneMessage.REQ" /></Request>
+PublishSubscribe;<Request ID="2,707" Action="CREATE"><Connection Source="E_DELAY_1.EO" Destination="F_EQ_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,708" Action="CREATE"><Connection Source="E_DELAY_1_1.EO" Destination="F_EQ_1_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,709" Action="CREATE"><Connection Source="F_EQ_1_1.CNF" Destination="TwoMessages.REQ" /></Request>
+PublishSubscribe;<Request ID="2,710" Action="CREATE"><Connection Source="TwoMessages.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,711" Action="CREATE"><Connection Source="OneMessage.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,712" Action="CREATE"><Connection Source="NoMessage.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,713" Action="CREATE"><Connection Source="FieldsToEventFilter.CNF" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,714" Action="CREATE"><Connection Source="ArrowheadPublish.published" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,715" Action="CREATE"><Connection Source="SubscribeEvent.Subscribed" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,716" Action="CREATE"><Connection Source="SubscribeEvent.Unsubscribed" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,717" Action="CREATE"><Connection Source="SUBL_0.IND" Destination="Sequencer_1_1.F_GT.REQ" /></Request>
+PublishSubscribe;<Request ID="2,718" Action="CREATE"><Connection Source="SUBL_0.INITO" Destination="PUBL_0_1.INIT" /></Request>
+PublishSubscribe;<Request ID="2,719" Action="CREATE"><Connection Source="START.COLD" Destination="SUBL_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,720" Action="CREATE"><Connection Source="START.WARM" Destination="SUBL_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,721" Action="CREATE"><Connection Source="PUBL_0_1.INITO" Destination="PUBL_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,722" Action="CREATE"><Connection Source="PUBL_0.INITO" Destination="PUBL_0_1.REQ" /></Request>
+PublishSubscribe;<Request ID="2,723" Action="CREATE"><Connection Source="FieldsToArrowheadEvent.CNF" Destination="SERVER_1_0.INIT" /></Request>
+PublishSubscribe;<Request ID="2,724" Action="CREATE"><Connection Source="E_CTU.CUO" Destination="SERVER_1_0.RSP" /></Request>
+PublishSubscribe;<Request ID="2,725" Action="CREATE"><Connection Source="SERVER_1_0.INITO" Destination="FieldsToEventFilter.REQ" /></Request>
+PublishSubscribe;<Request ID="2,726" Action="CREATE"><Connection Source="SERVER_1_0.IND" Destination="E_CTU.CU" /></Request>
+PublishSubscribe;<Request ID="2,727" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToPublishEvent.source" /></Request>
+PublishSubscribe;<Request ID="2,728" Action="CREATE"><Connection Source="FieldsToPublishEvent.publishEvent" Destination="ArrowheadPublish.publishEvent" /></Request>
+PublishSubscribe;<Request ID="2,729" Action="CREATE"><Connection Source="FieldsToArrowheadEvent.arrowheadEvent" Destination="FieldsToPublishEvent.event" /></Request>
+PublishSubscribe;<Request ID="2,730" Action="CREATE"><Connection Source="FieldsToArrowheadSystem.arrowheadSystem" Destination="FieldsToEventFilter.consumer" /></Request>
+PublishSubscribe;<Request ID="2,731" Action="CREATE"><Connection Source="FieldsToEventFilter.eventFilter" Destination="SubscribeEvent.eventFilter" /></Request>
+PublishSubscribe;<Request ID="2,732" Action="CREATE"><Connection Source="E_CTU.CV" Destination="F_EQ.IN1" /></Request>
+PublishSubscribe;<Request ID="2,733" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="NoMessage.check" /></Request>
+PublishSubscribe;<Request ID="2,734" Action="CREATE"><Connection Source="E_CTU.CV" Destination="F_EQ_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,735" Action="CREATE"><Connection Source="F_EQ_1.OUT" Destination="OneMessage.check" /></Request>
+PublishSubscribe;<Request ID="2,736" Action="CREATE"><Connection Source="E_CTU.CV" Destination="F_EQ_1_1.IN1" /></Request>
+PublishSubscribe;<Request ID="2,737" Action="CREATE"><Connection Source="F_EQ_1_1.OUT" Destination="TwoMessages.check" /></Request>
+PublishSubscribe;<Request ID="2,738" Action="CREATE"><Connection Source="STRING2STRING.OUT" Destination="SERVER_1_0.SD_1" /></Request>
+PublishSubscribe;<Request ID="2,739" Action="CREATE"><Connection Source="ArrowheadPublish.ArrowheadPublishAdp" Destination="PublishEventHTTP.publishEvent" /></Request>
+PublishSubscribe;<Request ID="2,740" Action="CREATE"><Connection Source="SubscribeEvent.SubscribeEventAdp" Destination="SubscribeEventHTTP.SubscribeEventAdp" /></Request>
+PublishSubscribe;<Request ID="2,741" Action="START"/>
diff --git a/src/modules/arrowhead/SystemTests/CMakeLists.txt b/systemtests/src/modules/arrowhead/CMakeLists.txt
similarity index 78%
rename from src/modules/arrowhead/SystemTests/CMakeLists.txt
rename to systemtests/src/modules/arrowhead/CMakeLists.txt
index 02fac84..ad7d82a 100644
--- a/src/modules/arrowhead/SystemTests/CMakeLists.txt
+++ b/systemtests/src/modules/arrowhead/CMakeLists.txt
@@ -17,8 +17,12 @@
#test are soft because of the https://github.com/arrowhead-f/core-java/issues/34
if(FORTE_COM_HTTP)
- forte_add_systemtest_soft(HTTPTests Arrowhead_HTTPTest.fboot 80)
+ forte_add_systemtest_soft(HTTPArrowheadTests Arrowhead_HTTPTest.fboot 80)
endif(FORTE_COM_HTTP)
+
+ if(FORTE_COM_OPC_UA)
+ forte_add_systemtest_soft(OpcUaArrowheadTests Arrowhead_OpcUaTest.fboot 80)
+ endif(FORTE_COM_OPC_UA)
#after compilation, run "make CTEST_OUTPUT_ON_FAILURE=1 test" on the binary folder
diff --git a/src/modules/arrowhead/SystemTests/cleanIntracloudAndRules.sh b/systemtests/src/modules/arrowhead/cleanIntracloudAndRules.sh
similarity index 100%
rename from src/modules/arrowhead/SystemTests/cleanIntracloudAndRules.sh
rename to systemtests/src/modules/arrowhead/cleanIntracloudAndRules.sh
diff --git a/systemtests/src/modules/opc_ua/CMakeLists.txt b/systemtests/src/modules/opc_ua/CMakeLists.txt
index cb59499..5b62035 100644
--- a/systemtests/src/modules/opc_ua/CMakeLists.txt
+++ b/systemtests/src/modules/opc_ua/CMakeLists.txt
@@ -39,3 +39,24 @@
forte_opcua_add_nodeset_without_generated(fordiacNamespace ${CMAKE_CURRENT_SOURCE_DIR}/nodespaceTest)
+#Config files for clients
+
+forte_add_2dev_systemtests(ClientConfigFailNonExistingFile clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/NonExistingFile.forte" "" 10 0)
+
+forte_add_2dev_systemtests(ClientConfigFailNoEqualSignal1 clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/failNoEqualSignal1.forte" "" 10 0)
+
+forte_add_2dev_systemtests(ClientConfigFailNoEqualSignal2 clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/failNoEqualSignal2.forte" "" 10 0)
+
+forte_add_2dev_systemtests(ClientConfigFailTwoEqualSignal1 clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/failTwoEqualSignal1.forte" "" 10 0)
+
+forte_add_2dev_systemtests(ClientConfigFailTwoEqualSignal2 clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/failTwoEqualSignal2.forte" "" 10 0)
+
+forte_add_2dev_systemtests(ClientConfigFailTwoEqualSignal3 clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/failTwoEqualSignal3.forte" "" 10 0)
+
+forte_add_2dev_systemtests(ClientConfigSuccessNoEndpoint clientAuthSuccess.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/successNoEndpoint.forte" "" 10 1)
+
+forte_add_2dev_systemtests(ClientConfigSuccessNonMatchEndpointFirst clientAuthSuccess.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/successNonMatchEndpointFirst.forte" "" 10 1)
+
+if(FORTE_COM_OPC_UA_ENCRYPTION AND FORTE_COM_OPC_UA_MASTER_BRANCH)
+ forte_add_2dev_systemtests(ClientConfigFailFailNoCertificateFile clientAuthFail.fboot serverForAuth.fboot "-oc ${CMAKE_CURRENT_SOURCE_DIR}/clientsConfigFiles/failNoCertificateFile.forte" "" 10 0)
+endif(FORTE_COM_OPC_UA_ENCRYPTION AND FORTE_COM_OPC_UA_MASTER_BRANCH)
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientAuthFail.fboot b/systemtests/src/modules/opc_ua/clientAuthFail.fboot
new file mode 100644
index 0000000..7d8da15
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientAuthFail.fboot
@@ -0,0 +1,21 @@
+;<Request ID="1" Action="CREATE"><FB Name="clientAuthFail" Type="EMB_RES" /></Request>
+clientAuthFail;<Request ID="2" Action="CREATE"><FB Name="CLIENT_0_1" Type="CLIENT_0_1" /></Request>
+clientAuthFail;<Request ID="3" Action="WRITE"><Connection Source="1" Destination="CLIENT_0_1.QI" /></Request>
+clientAuthFail;<Request ID="4" Action="WRITE"><Connection Source="opc_ua[READ;opc.tcp://localhost:4840#;/Objects/IsolatedTests/WRITEVariable]" Destination="CLIENT_0_1.ID" /></Request>
+clientAuthFail;<Request ID="5" Action="CREATE"><FB Name="E_DELAY" Type="E_DELAY" /></Request>
+clientAuthFail;<Request ID="6" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY.DT" /></Request>
+clientAuthFail;<Request ID="7" Action="CREATE"><FB Name="ClientShoulFail" Type="TEST_CONDITION" /></Request>
+clientAuthFail;<Request ID="8" Action="CREATE"><FB Name="STEST_END" Type="STEST_END" /></Request>
+clientAuthFail;<Request ID="9" Action="CREATE"><FB Name="F_NOT" Type="F_NOT" /></Request>
+clientAuthFail;<Request ID="10" Action="CREATE"><FB Name="DINT2DINT_1_1" Type="DINT2DINT" /></Request>
+clientAuthFail;<Request ID="11" Action="CREATE"><Connection Source="CLIENT_0_1.INITO" Destination="E_DELAY.START" /></Request>
+clientAuthFail;<Request ID="12" Action="CREATE"><Connection Source="E_DELAY.EO" Destination="CLIENT_0_1.REQ" /></Request>
+clientAuthFail;<Request ID="13" Action="CREATE"><Connection Source="ClientShoulFail.CNF" Destination="STEST_END.REQ" /></Request>
+clientAuthFail;<Request ID="14" Action="CREATE"><Connection Source="CLIENT_0_1.CNF" Destination="F_NOT.REQ" /></Request>
+clientAuthFail;<Request ID="15" Action="CREATE"><Connection Source="F_NOT.CNF" Destination="ClientShoulFail.REQ" /></Request>
+clientAuthFail;<Request ID="16" Action="CREATE"><Connection Source="START.COLD" Destination="CLIENT_0_1.INIT" /></Request>
+clientAuthFail;<Request ID="17" Action="CREATE"><Connection Source="START.WARM" Destination="CLIENT_0_1.INIT" /></Request>
+clientAuthFail;<Request ID="18" Action="CREATE"><Connection Source="CLIENT_0_1.QO" Destination="F_NOT.IN" /></Request>
+clientAuthFail;<Request ID="19" Action="CREATE"><Connection Source="F_NOT.OUT" Destination="ClientShoulFail.check" /></Request>
+clientAuthFail;<Request ID="20" Action="CREATE"><Connection Source="CLIENT_0_1.RD_1" Destination="DINT2DINT_1_1.IN" /></Request>
+clientAuthFail;<Request ID="21" Action="START"/>
diff --git a/systemtests/src/modules/opc_ua/clientAuthSuccess.fboot b/systemtests/src/modules/opc_ua/clientAuthSuccess.fboot
new file mode 100644
index 0000000..f529456
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientAuthSuccess.fboot
@@ -0,0 +1,23 @@
+;<Request ID="1" Action="CREATE"><FB Name="clientAuthSucess" Type="EMB_RES" /></Request>
+clientAuthSucess;<Request ID="2" Action="CREATE"><FB Name="E_DELAY_2" Type="E_DELAY" /></Request>
+clientAuthSucess;<Request ID="3" Action="WRITE"><Connection Source="T#2s" Destination="E_DELAY_2.DT" /></Request>
+clientAuthSucess;<Request ID="4" Action="CREATE"><FB Name="CLIENT_0_1_1" Type="CLIENT_0_1" /></Request>
+clientAuthSucess;<Request ID="5" Action="WRITE"><Connection Source="1" Destination="CLIENT_0_1_1.QI" /></Request>
+clientAuthSucess;<Request ID="6" Action="WRITE"><Connection Source="opc_ua[READ;opc.tcp://localhost:4840#;/Objects/IsolatedTests/WRITEVariable]" Destination="CLIENT_0_1_1.ID" /></Request>
+clientAuthSucess;<Request ID="7" Action="CREATE"><FB Name="DINT2DINT_1_1_1" Type="DINT2DINT" /></Request>
+clientAuthSucess;<Request ID="8" Action="CREATE"><FB Name="F_EQ" Type="F_EQ" /></Request>
+clientAuthSucess;<Request ID="9" Action="WRITE"><Connection Source="DINT#12" Destination="F_EQ.IN1" /></Request>
+clientAuthSucess;<Request ID="10" Action="CREATE"><FB Name="ClientAuthConnected" Type="TEST_CONDITION" /></Request>
+clientAuthSucess;<Request ID="11" Action="CREATE"><FB Name="STEST_END_2" Type="STEST_END" /></Request>
+clientAuthSucess;<Request ID="12" Action="CREATE"><Connection Source="E_DELAY_2.EO" Destination="CLIENT_0_1_1.REQ" /></Request>
+clientAuthSucess;<Request ID="13" Action="CREATE"><Connection Source="CLIENT_0_1_1.INITO" Destination="E_DELAY_2.START" /></Request>
+clientAuthSucess;<Request ID="14" Action="CREATE"><Connection Source="CLIENT_0_1_1.CNF" Destination="DINT2DINT_1_1_1.REQ" /></Request>
+clientAuthSucess;<Request ID="15" Action="CREATE"><Connection Source="DINT2DINT_1_1_1.CNF" Destination="F_EQ.REQ" /></Request>
+clientAuthSucess;<Request ID="16" Action="CREATE"><Connection Source="F_EQ.CNF" Destination="ClientAuthConnected.REQ" /></Request>
+clientAuthSucess;<Request ID="17" Action="CREATE"><Connection Source="ClientAuthConnected.CNF" Destination="STEST_END_2.REQ" /></Request>
+clientAuthSucess;<Request ID="18" Action="CREATE"><Connection Source="START.COLD" Destination="CLIENT_0_1_1.INIT" /></Request>
+clientAuthSucess;<Request ID="19" Action="CREATE"><Connection Source="START.WARM" Destination="CLIENT_0_1_1.INIT" /></Request>
+clientAuthSucess;<Request ID="20" Action="CREATE"><Connection Source="CLIENT_0_1_1.RD_1" Destination="DINT2DINT_1_1_1.IN" /></Request>
+clientAuthSucess;<Request ID="21" Action="CREATE"><Connection Source="DINT2DINT_1_1_1.OUT" Destination="F_EQ.IN2" /></Request>
+clientAuthSucess;<Request ID="22" Action="CREATE"><Connection Source="F_EQ.OUT" Destination="ClientAuthConnected.check" /></Request>
+clientAuthSucess;<Request ID="23" Action="START"/>
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoCertificateFile.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoCertificateFile.forte
new file mode 100644
index 0000000..9dcd2c7
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoCertificateFile.forte
@@ -0,0 +1,4 @@
+endpoint=opc.tcp://localhost:4840
+certificate=/unknownPath/unknownPathFile
+securityMode=3
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoEqualSignal1.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoEqualSignal1.forte
new file mode 100644
index 0000000..ed36321
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoEqualSignal1.forte
@@ -0,0 +1,5 @@
+username john
+
+endpoint=opc.tcp://localhost:4840
+securityMode=3
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoEqualSignal2.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoEqualSignal2.forte
new file mode 100644
index 0000000..092de66
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/failNoEqualSignal2.forte
@@ -0,0 +1,4 @@
+endpoint=opc.tcp://localhost:4840
+username:john
+securityMode=3
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal1.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal1.forte
new file mode 100644
index 0000000..0982ad5
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal1.forte
@@ -0,0 +1,4 @@
+endpoint=opc.tcp://localhost:4840
+username=john=
+securityMode=3
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal2.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal2.forte
new file mode 100644
index 0000000..dd2f9b2
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal2.forte
@@ -0,0 +1,4 @@
+username=john=
+endpoint=opc.tcp://localhost:4840
+securityMode=3
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal3.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal3.forte
new file mode 100644
index 0000000..9d342ea
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/failTwoEqualSignal3.forte
@@ -0,0 +1,8 @@
+endpoint=opc.tcp://localhost:4840
+securityMode=3
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
+username=john
+password=doe
+unknownKey=value
+
+username=john=
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/successNoEndpoint.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/successNoEndpoint.forte
new file mode 100644
index 0000000..fa50bfd
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/successNoEndpoint.forte
@@ -0,0 +1,3 @@
+endpoint=opc.tcp://nonMatchingEnpoint:4840
+username=john
+password=doe
diff --git a/systemtests/src/modules/opc_ua/clientsConfigFiles/successNonMatchEndpointFirst.forte b/systemtests/src/modules/opc_ua/clientsConfigFiles/successNonMatchEndpointFirst.forte
new file mode 100644
index 0000000..99e9df4
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/clientsConfigFiles/successNonMatchEndpointFirst.forte
@@ -0,0 +1,5 @@
+endpoint=opc.tcp://nonMatchingEnpoint:4840
+username=john
+password=doe
+
+endpoint=opc.tcp://localhost:4840
\ No newline at end of file
diff --git a/systemtests/src/modules/opc_ua/serverForAuth.fboot b/systemtests/src/modules/opc_ua/serverForAuth.fboot
new file mode 100644
index 0000000..f18f39d
--- /dev/null
+++ b/systemtests/src/modules/opc_ua/serverForAuth.fboot
@@ -0,0 +1,17 @@
+;<Request ID="1" Action="CREATE"><FB Name="serverForAuth" Type="EMB_RES" /></Request>
+serverForAuth;<Request ID="2" Action="CREATE"><FB Name="PUBLISH_1" Type="PUBLISH_1" /></Request>
+serverForAuth;<Request ID="3" Action="WRITE"><Connection Source="1" Destination="PUBLISH_1.QI" /></Request>
+serverForAuth;<Request ID="4" Action="WRITE"><Connection Source="opc_ua[WRITE;/Objects/IsolatedTests/WRITEVariable]" Destination="PUBLISH_1.ID" /></Request>
+serverForAuth;<Request ID="5" Action="CREATE"><FB Name="DINT2DINT_1" Type="DINT2DINT" /></Request>
+serverForAuth;<Request ID="6" Action="WRITE"><Connection Source="DINT#12" Destination="DINT2DINT_1.IN" /></Request>
+serverForAuth;<Request ID="7" Action="CREATE"><FB Name="E_DELAY_1" Type="E_DELAY" /></Request>
+serverForAuth;<Request ID="8" Action="WRITE"><Connection Source="T#4s" Destination="E_DELAY_1.DT" /></Request>
+serverForAuth;<Request ID="9" Action="CREATE"><FB Name="STEST_END_1" Type="STEST_END" /></Request>
+serverForAuth;<Request ID="10" Action="CREATE"><Connection Source="START.COLD" Destination="PUBLISH_1.INIT" /></Request>
+serverForAuth;<Request ID="11" Action="CREATE"><Connection Source="START.WARM" Destination="PUBLISH_1.INIT" /></Request>
+serverForAuth;<Request ID="12" Action="CREATE"><Connection Source="PUBLISH_1.CNF" Destination="E_DELAY_1.START" /></Request>
+serverForAuth;<Request ID="13" Action="CREATE"><Connection Source="E_DELAY_1.EO" Destination="STEST_END_1.REQ" /></Request>
+serverForAuth;<Request ID="14" Action="CREATE"><Connection Source="PUBLISH_1.INITO" Destination="DINT2DINT_1.REQ" /></Request>
+serverForAuth;<Request ID="15" Action="CREATE"><Connection Source="DINT2DINT_1.CNF" Destination="PUBLISH_1.REQ" /></Request>
+serverForAuth;<Request ID="16" Action="CREATE"><Connection Source="DINT2DINT_1.OUT" Destination="PUBLISH_1.SD_1" /></Request>
+serverForAuth;<Request ID="17" Action="START"/>
diff --git a/tests/core/cominfra/CMakeLists.txt b/tests/core/cominfra/CMakeLists.txt
index 34a7710..8908e13 100644
--- a/tests/core/cominfra/CMakeLists.txt
+++ b/tests/core/cominfra/CMakeLists.txt
@@ -16,4 +16,5 @@
forte_test_add_sourcefile_cpp(fbdkasn1layerser_test.cpp)
forte_test_add_sourcefile_cpp(fbdkasn1layerdeser_test.cpp)
+ forte_test_add_sourcefile_cpp(extractLayerAndParamsTest.cpp)
diff --git a/tests/core/cominfra/extractLayerAndParamsTest.cpp b/tests/core/cominfra/extractLayerAndParamsTest.cpp
new file mode 100644
index 0000000..45e83e9
--- /dev/null
+++ b/tests/core/cominfra/extractLayerAndParamsTest.cpp
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2019 fotiss GmbH
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jose Cabral- initial API and implementation and/or initial documentation
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+#include "../../../src/core/cominfra/basecommfb.h"
+#include <string>
+
+class CExtractLayerAndParamsCommFB : public forte::com_infra::CBaseCommFB {
+ public:
+ static char *extractLayerIdAndParams(char **paRemainingID, char **paLayerParams) {
+ return forte::com_infra::CBaseCommFB::extractLayerIdAndParams(paRemainingID, paLayerParams);
+ }
+};
+
+BOOST_AUTO_TEST_SUITE (extractLayerAndParams_test)
+
+BOOST_AUTO_TEST_CASE(noExtraSquareBrackets_test) {
+
+
+ const char* stringToTest = "id[normalParams].id2[openingBracket[].id3[twoOpeningBrackets[[].id4[closingBracket\\]].id5[twoClosingBrackes\\]\\]].id6[bothBrackets[\\]].id7[bothBracketsInverted\\][]";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id"));
+ BOOST_CHECK(0 == strcmp(layerParams, "normalParams"));
+ BOOST_CHECK(0 == strcmp(remainingId, "id2[openingBracket[].id3[twoOpeningBrackets[[].id4[closingBracket\\]].id5[twoClosingBrackes\\]\\]].id6[bothBrackets[\\]].id7[bothBracketsInverted\\][]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id2"));
+ BOOST_CHECK(0 == strcmp(layerParams, "openingBracket["));
+ BOOST_CHECK(0 == strcmp(remainingId, "id3[twoOpeningBrackets[[].id4[closingBracket\\]].id5[twoClosingBrackes\\]\\]].id6[bothBrackets[\\]].id7[bothBracketsInverted\\][]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id3"));
+ BOOST_CHECK(0 == strcmp(layerParams, "twoOpeningBrackets[["));
+ BOOST_CHECK(0 == strcmp(remainingId, "id4[closingBracket\\]].id5[twoClosingBrackes\\]\\]].id6[bothBrackets[\\]].id7[bothBracketsInverted\\][]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id4"));
+ BOOST_CHECK(0 == strcmp(layerParams, "closingBracket]"));
+ BOOST_CHECK(0 == strcmp(remainingId, "id5[twoClosingBrackes\\]\\]].id6[bothBrackets[\\]].id7[bothBracketsInverted\\][]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id5"));
+ BOOST_CHECK(0 == strcmp(layerParams, "twoClosingBrackes]]"));
+ BOOST_CHECK(0 == strcmp(remainingId, "id6[bothBrackets[\\]].id7[bothBracketsInverted\\][]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id6"));
+ BOOST_CHECK(0 == strcmp(layerParams, "bothBrackets[]"));
+ BOOST_CHECK(0 == strcmp(remainingId, "id7[bothBracketsInverted\\][]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id7"));
+ BOOST_CHECK(0 == strcmp(layerParams, "bothBracketsInverted]["));
+ BOOST_CHECK(0 == strcmp(remainingId, ""));
+
+}
+
+BOOST_AUTO_TEST_CASE(escapedSign_test) {
+
+ const char* stringToTest = "id[\\\\].id2[\\\\\\]]";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id"));
+ BOOST_CHECK(0 == strcmp(layerParams, "\\"));
+ BOOST_CHECK(0 == strcmp(remainingId, "id2[\\\\\\]]"));
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, "id2"));
+ BOOST_CHECK(0 == strcmp(layerParams, "\\]"));
+ BOOST_CHECK(0 == strcmp(remainingId, ""));
+
+}
+
+BOOST_AUTO_TEST_CASE(emptyId_test) {
+
+ const char* stringToTest = "";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(layerId == 0);
+
+}
+
+
+BOOST_AUTO_TEST_CASE(noOpeningBracket_test) {
+
+ const char* stringToTest = "id1]";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(layerId == 0);
+
+}
+
+BOOST_AUTO_TEST_CASE(noOpeningBracketWithScaped_test) {
+
+ const char* stringToTest = "id1\\[]";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(layerId == 0);
+
+}
+
+BOOST_AUTO_TEST_CASE(noClosingBracket_test) {
+
+ const char* stringToTest = "id1[";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(layerId == 0);
+
+}
+
+BOOST_AUTO_TEST_CASE(noClosingBracketWithScaped_test) {
+
+ const char* stringToTest = "id1[\\]";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(layerId == 0);
+
+}
+
+BOOST_AUTO_TEST_CASE(noId_test) {
+
+ const char* stringToTest = "[]";
+
+ char* remainingId = new char[strlen(stringToTest) + 1];
+ memcpy(remainingId, stringToTest, strlen(stringToTest) + 1);
+ char* layerParams = 0;
+ char* layerId = 0;
+
+ layerId = CExtractLayerAndParamsCommFB::extractLayerIdAndParams(&remainingId, &layerParams);
+
+ BOOST_CHECK(0 == strcmp(layerId, ""));
+ BOOST_CHECK(0 == strcmp(layerParams, ""));
+ BOOST_CHECK(0 == strcmp(remainingId, ""));
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/AT_VARIABLE/CIEC_BYTE_AT_test.cpp b/tests/core/datatypes/AT_VARIABLE/CIEC_BYTE_AT_test.cpp
new file mode 100644
index 0000000..e1bfe96
--- /dev/null
+++ b/tests/core/datatypes/AT_VARIABLE/CIEC_BYTE_AT_test.cpp
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - add at-variable tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+#include "../../../src/core/datatypes/forte_array_at.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE)
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE_BYTE)
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_READ)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ for(auto i=0;i<8;i++){
+ BOOST_CHECK_EQUAL(testArray[i], true);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TEMPORARY)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[0]=false;
+
+ BOOST_CHECK_EQUAL(testArray[0], false);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT0)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[0] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x01);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT1)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[1] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x02);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT2)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[2] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x04);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT3)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[3] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x08);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT4)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[4] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x10);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT5)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[5] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x20);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT6)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[6] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x40);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_BIT7)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[7] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF-0x80);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_WRITE_CHECK_TARGET_OUTOFRANGE)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ testArray[8] = false;
+
+ BOOST_CHECK_EQUAL((int)nTestByte, 0xFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_READ_OUTOFRANGE)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0xFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ BOOST_CHECK_EQUAL(testArray[8], testArray[8]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_BYTE_MOVING_BIT)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte = 0x0;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_BYTE, 0, 7> testArray(nTestByte);
+
+ for (size_t i=0; i < 8; i++) {
+ testArray[i] = true;
+ BOOST_CHECK_EQUAL(nTestByte, (TForteByte)1 << i);
+ testArray[i] = false;
+ }
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/AT_VARIABLE/CIEC_DWORD_AT_test.cpp b/tests/core/datatypes/AT_VARIABLE/CIEC_DWORD_AT_test.cpp
new file mode 100644
index 0000000..10b35ec
--- /dev/null
+++ b/tests/core/datatypes/AT_VARIABLE/CIEC_DWORD_AT_test.cpp
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - add at-variable tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+#include "../../../src/core/datatypes/forte_array_at.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE)
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE_DWORD)
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_READ_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0xFFFFFFFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_DWORD, 0, 31> testArray(nTestDWord);
+
+ for(auto i=0;i<32;i++){
+ BOOST_CHECK_EQUAL(testArray[i], true);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_READ_BIT_OUTOFBOUNDS)
+{
+ CIEC_DWORD nTestDWord;
+ ARRAY_AT<CIEC_BOOL, CIEC_DWORD, 0, 31> testArray(nTestDWord);
+
+ BOOST_CHECK_EQUAL(testArray[32], testArray[32]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_WRITE_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_DWORD, 0, 31> testArray(nTestDWord);
+
+ for(auto i=0;i<32;i++){
+ nTestDWord = 0xFFFFFFFF;
+ testArray[i] = false;
+ for(auto j=0;j<32;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_WRITE_BIT_OUTOFBOUNDS)
+{
+ CIEC_DWORD nTestDWord;
+ ARRAY_AT<CIEC_BOOL, CIEC_DWORD, 0, 31> testArray(nTestDWord);
+
+ testArray[32] = true;
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+ BOOST_CHECK_EQUAL(testArray[32], testArray[32]);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_READ_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0xFFFFFFFF;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_DWORD, 0, 3> testArray(nTestDWord);
+
+ for(auto i=0;i<4;i++){
+ BOOST_CHECK_EQUAL((int)testArray[i], 0xFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_READ_BYTE_OUTOFBOUNDS)
+{
+ CIEC_DWORD nTestDWord;
+ ARRAY_AT<CIEC_BYTE, CIEC_DWORD, 0, 3> testArray(nTestDWord);
+
+ BOOST_CHECK_EQUAL((int)testArray[4], (int)testArray[4]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_WRITE_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_DWORD, 0, 3> testArray(nTestDWord);
+
+ for(auto i=0;i<4;i++){
+ nTestDWord = 0xFFFFFFFF;
+ testArray[i] = false;
+ for(auto j=0;j<4;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j ? 0xFF : false);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_WRITE_BYTE_OUTOFBOUNDS)
+{
+ CIEC_DWORD nTestDWord;
+ ARRAY_AT<CIEC_BYTE, CIEC_DWORD, 0, 3> testArray(nTestDWord);
+
+ testArray[4] = true;
+ BOOST_CHECK_EQUAL(testArray[4], testArray[4]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_READ_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0xFFFFFFFF;
+
+ ARRAY_AT<CIEC_WORD, CIEC_DWORD, 0, 1> testArray(nTestDWord);
+
+ for(auto i=0;i<2;i++){
+ BOOST_CHECK_EQUAL((int)testArray[i], 0xFFFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_READ_WORD_OUTOFBOUNDS)
+{
+ CIEC_DWORD nTestDWord;
+ ARRAY_AT<CIEC_WORD, CIEC_DWORD, 0, 1> testArray(nTestDWord);
+
+ BOOST_CHECK_EQUAL((int)testArray[2], (int)testArray[2]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_WRITE_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ ARRAY_AT<CIEC_WORD, CIEC_DWORD, 0, 1> testArray(nTestDWord);
+
+ for(auto i=0;i<2;i++){
+ nTestDWord = 0xFFFFFFFF;
+ testArray[i] = false;
+ for(auto j=0;j<2;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j ? 0xFFFF : false);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_WRITE_WORD_OUTOFBOUNDS)
+{
+ CIEC_DWORD nTestDWord;
+ ARRAY_AT<CIEC_WORD, CIEC_DWORD, 0, 1> testArray(nTestDWord);
+
+ testArray[2] = true;
+ BOOST_CHECK_EQUAL(testArray[2], testArray[2]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_MOVING_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0x0;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_DWORD, 0, 31> testArray(nTestDWord);
+
+ for (size_t i=0; i < 32; i++) {
+ testArray[i] = true;
+ BOOST_CHECK_EQUAL(nTestDWord, (TForteDWord)1 << i);
+ testArray[i] = false;
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_MOVING_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0x0;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_DWORD, 0, 3> testArray(nTestDWord);
+
+ for (size_t i=0; i < 4; i++) {
+ testArray[i] = 0xFF;
+ BOOST_CHECK_EQUAL(nTestDWord, (TForteDWord)0xFF << i*8);
+ testArray[i] = 0;
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_DWORD_MOVING_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0x0;
+
+ ARRAY_AT<CIEC_WORD, CIEC_DWORD, 0, 1> testArray(nTestDWord);
+
+ for (size_t i=0; i < 2; i++) {
+ testArray[i] = 0xF00D;
+ BOOST_CHECK_EQUAL(nTestDWord, (TForteDWord)0xF00D << i*16);
+ testArray[i] = 0;
+ }
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/AT_VARIABLE/CIEC_LWORD_AT_test.cpp b/tests/core/datatypes/AT_VARIABLE/CIEC_LWORD_AT_test.cpp
new file mode 100644
index 0000000..645a1f8
--- /dev/null
+++ b/tests/core/datatypes/AT_VARIABLE/CIEC_LWORD_AT_test.cpp
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - add at-variable tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+#include "../../../src/core/datatypes/forte_array_at.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE)
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE_LWORD)
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_LWORD, 0, 63> testArray(nTestLWord);
+
+ for(auto i=0;i<64;i++){
+ BOOST_CHECK_EQUAL(testArray[i], true);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_BIT_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_BOOL, CIEC_LWORD, 0, 63> testArray(nTestLWord);
+
+ BOOST_CHECK_EQUAL(testArray[64], testArray[64]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_LWORD, 0, 63> testArray(nTestLWord);
+
+ for(auto i=0;i<64;i++){
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+ testArray[i] = false;
+ for(auto j=0;j<64;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_BIT_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_BOOL, CIEC_LWORD, 0, 63> testArray(nTestLWord);
+
+ testArray[64] = true;
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+ BOOST_CHECK_EQUAL(testArray[64], testArray[64]);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_LWORD, 0, 7> testArray(nTestLWord);
+
+ for(auto i=0;i<8;i++){
+ BOOST_CHECK_EQUAL((int)testArray[i], 0xFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_BYTE_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_BYTE, CIEC_LWORD, 0, 7> testArray(nTestLWord);
+
+ BOOST_CHECK_EQUAL((int)testArray[8], (int)testArray[8]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_LWORD, 0, 7> testArray(nTestLWord);
+
+ for(auto i=0;i<8;i++){
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+ testArray[i] = false;
+ for(auto j=0;j<8;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j ? 0xFF : false);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_BYTE_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_BYTE, CIEC_LWORD, 0, 7> testArray(nTestLWord);
+
+ testArray[8] = true;
+ BOOST_CHECK_EQUAL(testArray[8], testArray[8]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+
+ ARRAY_AT<CIEC_WORD, CIEC_LWORD, 0, 3> testArray(nTestLWord);
+
+ for(auto i=0;i<4;i++){
+ BOOST_CHECK_EQUAL((int)testArray[i], 0xFFFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_WORD_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_WORD, CIEC_LWORD, 0, 3> testArray(nTestLWord);
+
+ BOOST_CHECK_EQUAL((int)testArray[4], (int)testArray[4]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ ARRAY_AT<CIEC_WORD, CIEC_LWORD, 0, 3> testArray(nTestLWord);
+
+ for(auto i=0;i<4;i++){
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+ testArray[i] = false;
+ for(auto j=0;j<4;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j ? 0xFFFF : false);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_WORD_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_WORD, CIEC_LWORD, 0, 3> testArray(nTestLWord);
+
+ testArray[4] = true;
+ BOOST_CHECK_EQUAL(testArray[4], testArray[4]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+
+ ARRAY_AT<CIEC_DWORD, CIEC_LWORD, 0, 1> testArray(nTestLWord);
+
+ for(auto i=0;i<2;i++){
+ BOOST_CHECK_EQUAL(testArray[i], 0xFFFFFFFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_READ_DWORD_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_DWORD, CIEC_LWORD, 0, 1> testArray(nTestLWord);
+
+ BOOST_CHECK_EQUAL(testArray[2], testArray[2]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ ARRAY_AT<CIEC_DWORD, CIEC_LWORD, 0, 1> testArray(nTestLWord);
+
+ for(auto i=0;i<2;i++){
+ nTestLWord = 0xFFFFFFFFFFFFFFFFU;
+ testArray[i] = false;
+ for(auto j=0;j<2;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j ? 0xFFFFFFFF : false);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_WRITE_DWORD_OUTOFBOUNDS)
+{
+ CIEC_LWORD nTestLWord;
+ ARRAY_AT<CIEC_DWORD, CIEC_LWORD, 0, 1> testArray(nTestLWord);
+
+ testArray[2] = true;
+ BOOST_CHECK_EQUAL(testArray[2], testArray[2]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_MOVING_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x0;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_LWORD, 0, 63> testArray(nTestLWord);
+
+ for (size_t i=0; i < 64; i++) {
+ testArray[i] = true;
+ BOOST_CHECK_EQUAL(nTestLWord, (TForteLWord)1 << i);
+ testArray[i] = false;
+ }
+
+}
+
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_MOVING_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x0;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_LWORD, 0, 7> testArray(nTestLWord);
+
+ for (size_t i=0; i < 8; i++) {
+ testArray[i] = 0xFF;
+ BOOST_CHECK_EQUAL(nTestLWord, (TForteLWord)0xFF << i*8);
+ testArray[i] = 0;
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_MOVING_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x0;
+
+ ARRAY_AT<CIEC_WORD, CIEC_LWORD, 0, 3> testArray(nTestLWord);
+
+ for (size_t i=0; i < 4; i++) {
+ testArray[i] = 0xF00D;
+ BOOST_CHECK_EQUAL(nTestLWord, (TForteLWord)0xF00D << i*16);
+ testArray[i] = 0;
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_LWORD_MOVING_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x0;
+
+ ARRAY_AT<CIEC_DWORD, CIEC_LWORD, 0, 1> testArray(nTestLWord);
+
+ for (size_t i=0; i < 2; i++) {
+ testArray[i] = 0xFC0FFEEF;
+ BOOST_CHECK_EQUAL(nTestLWord, (TForteLWord)0xFC0FFEEF << i*32);
+ testArray[i] = 0;
+ }
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/AT_VARIABLE/CIEC_WORD_AT_test.cpp b/tests/core/datatypes/AT_VARIABLE/CIEC_WORD_AT_test.cpp
new file mode 100644
index 0000000..351af48
--- /dev/null
+++ b/tests/core/datatypes/AT_VARIABLE/CIEC_WORD_AT_test.cpp
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - add at-variable tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+#include "../../../src/core/datatypes/forte_array_at.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE)
+BOOST_AUTO_TEST_SUITE(AT_VARIABLE_WORD)
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_READ_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xFFFF;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_WORD, 0, 15> testArray(nTestWord);
+
+ for(auto i=0;i<16;i++){
+ BOOST_CHECK_EQUAL(testArray[i], true);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_READ_BIT_OUTOFBOUNDS)
+{
+ CIEC_WORD nTestWord;
+ ARRAY_AT<CIEC_BOOL, CIEC_WORD, 0, 15> testArray(nTestWord);
+
+ BOOST_CHECK_EQUAL(testArray[16], testArray[16]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_WRITE_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_WORD, 0, 15> testArray(nTestWord);
+
+ for(auto i=0;i<16;i++){
+ nTestWord = 0xFFFF;
+ testArray[i] = false;
+ for(auto j=0;j<16;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_WRITE_BIT_OUTOFBOUNDS)
+{
+ CIEC_WORD nTestWord;
+ ARRAY_AT<CIEC_BOOL, CIEC_WORD, 0, 15> testArray(nTestWord);
+
+ testArray[16] = true;
+ BOOST_CHECK_EQUAL(testArray[16], testArray[16]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_READ_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xFFFF;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_WORD, 0, 1> testArray(nTestWord);
+
+ for(auto i=0;i<2;i++){
+ BOOST_CHECK_EQUAL((int)testArray[i], 0xFF);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_READ_BYTE_OUTOFBOUNDS)
+{
+ CIEC_WORD nTestWord;
+ ARRAY_AT<CIEC_BYTE, CIEC_WORD, 0, 1> testArray(nTestWord);
+
+ BOOST_CHECK_EQUAL((int)testArray[2], (int)testArray[2]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_WRITE_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_WORD, 0, 1> testArray(nTestWord);
+
+ for(auto i=0;i<2;i++){
+ nTestWord = 0xFFFF;
+ testArray[i] = false;
+ for(auto j=0;j<2;j++){
+ BOOST_CHECK_EQUAL(testArray[j], i!=j ? 0xFF : false);
+ }
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), false);
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_WRITE_BYTE_OUTOFBOUNDS)
+{
+ CIEC_WORD nTestWord;
+ ARRAY_AT<CIEC_BYTE, CIEC_WORD, 0, 1> testArray(nTestWord);
+
+ testArray[2] = true;
+ BOOST_CHECK_EQUAL(testArray[2], testArray[2]);
+ BOOST_CHECK_EQUAL(testArray.getAccessedOutOfBounds(), true);
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_MOVING_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0x0;
+
+ ARRAY_AT<CIEC_BOOL, CIEC_WORD, 0, 15> testArray(nTestWord);
+
+ for (size_t i=0; i < 16; i++) {
+ testArray[i] = true;
+ BOOST_CHECK_EQUAL(nTestWord, (TForteWord)1 << i);
+ testArray[i] = false;
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE(AT_VARIABLE_WORD_MOVING_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0x0;
+
+ ARRAY_AT<CIEC_BYTE, CIEC_WORD, 0, 1> testArray(nTestWord);
+
+ for (size_t i=0; i < 2; i++) {
+ testArray[i] = 0xFF;
+ BOOST_CHECK_EQUAL(nTestWord, (TForteWord)0xFF << i*8);
+ testArray[i] = 0;
+ }
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/AT_VARIABLE/CMakeLists.txt b/tests/core/datatypes/AT_VARIABLE/CMakeLists.txt
new file mode 100644
index 0000000..8b865c3
--- /dev/null
+++ b/tests/core/datatypes/AT_VARIABLE/CMakeLists.txt
@@ -0,0 +1,26 @@
+#*******************************************************************************
+# Copyright (c) 2011 - 2014 nxtControl, ACIN, fortiss GmbH, Profactor GmbH
+# 2020 Johannes Kepler University Linz
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Stanislav Meduna, Ingo Hegny, Alois Zoitl, Monika Wenger, Matthias Plasch - initial API and implementation and/or initial documentation
+# Ernst Blecha - add at-variable tests
+# *******************************************************************************/
+
+#SET(SOURCE_GROUP ${SOURCE_GROUP}\\core)
+
+ forte_test_add_inc_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+#BIT-Datatypes
+ forte_test_add_sourcefile_cpp(CIEC_BYTE_AT_test.cpp)
+ forte_test_add_sourcefile_cpp(CIEC_WORD_AT_test.cpp)
+ forte_test_add_sourcefile_cpp(CIEC_DWORD_AT_test.cpp)
+IF (FORTE_USE_64BIT_DATATYPES)
+ forte_test_add_sourcefile_cpp(CIEC_LWORD_AT_test.cpp)
+ENDIF (FORTE_USE_64BIT_DATATYPES)
+
diff --git a/tests/core/datatypes/CIEC_PARTIAL/CIEC_BYTE_PARTIAL_test.cpp b/tests/core/datatypes/CIEC_PARTIAL/CIEC_BYTE_PARTIAL_test.cpp
new file mode 100644
index 0000000..0c79b07
--- /dev/null
+++ b/tests/core/datatypes/CIEC_PARTIAL/CIEC_BYTE_PARTIAL_test.cpp
@@ -0,0 +1,249 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - Adds partial access tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+/*#ifdef FORTE_USE_REAL_DATATYPE
+ #include <boost/test/floating_point_comparison.hpp>
+
+ #include "../../../src/core/datatypes/forte_real.h"
+#endif //FORTE_USE_REAL_DATATYPE*/
+
+//BOOLEAN
+#include "../../../src/core/datatypes/forte_bool.h"
+//BIT-Datatypes
+#include "../../../src/core/datatypes/forte_byte.h"
+
+#include "CIEC_PARTIAL_test.h"
+
+using namespace boost::unit_test;
+
+class CIEC_BYTE_PARTIAL_UNCHECKED : public CIEC_BYTE{
+public:
+ CIEC_BYTE_PARTIAL_UNCHECKED() {
+ }
+
+ CIEC_BYTE_PARTIAL_UNCHECKED(const CIEC_BYTE& paValue) : CIEC_BYTE(paValue) {
+ }
+
+ CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<CIEC_BOOL, CIEC_BYTE> x(size_t paIndex){
+ return CIEC_ANY_BIT::PARTIAL_ACCESS_TYPE<CIEC_BOOL, CIEC_BYTE>(*this, paIndex);
+ }
+};
+
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL)
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL_BYTE)
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_INITVALUES)
+{
+ CIEC_BYTE nTestByte;
+
+ test4X_0(nTestByte,4);
+ test4X_0(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_CONST_INIT)
+{
+ const CIEC_BOOL nTestBool(true);
+ CIEC_BYTE mTestByte;
+
+ mTestByte.partial<CIEC_BOOL,4>() = nTestBool;
+
+ BOOST_CHECK_EQUAL(mTestByte, 16);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_VALUE1_CHECK_BYTE)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte=0xBE;
+ BOOST_CHECK_EQUAL(nTestByte, 0xBEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_VALUE2_CHECK_BYTE)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte=0xBA;
+ BOOST_CHECK_EQUAL(nTestByte, 0xBAU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_VALUE1_CHECK_BIT)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte=0xBE;
+ test4X_B(nTestByte,4);
+ test4X_E(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_VALUE2_CHECK_BIT)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte=0xBA;
+ test4X_B(nTestByte,4);
+ test4X_A(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_VALUE_CHANGE_CHECK_BYTE)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte=0xBE;
+ nTestByte=0xBA;
+ BOOST_CHECK_EQUAL(nTestByte, 0xBAU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_VALUE_CHANGE_CHECK_BIT)
+{
+ CIEC_BYTE nTestByte;
+
+ nTestByte=0xBE;
+ nTestByte=0xBA;
+ test4X_B(nTestByte,4);
+ test4X_A(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_ASSIGN_BIT_CHANGE_BYTE_CHECK_BYTE_A)
+{
+ CIEC_BYTE nTestByte;
+
+ set4X_0(nTestByte,4);
+ set4X_D(nTestByte,0);
+
+ nTestByte = 0xFE;
+
+ BOOST_CHECK_EQUAL(nTestByte, 0xFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_ASSIGN_BIT_CHANGE_BYTE_CHECK_BYTE_B)
+{
+ CIEC_BYTE nTestByte;
+
+ set4X_0(nTestByte,4);
+ set4X_D(nTestByte,0);
+
+ nTestByte = 0xFE;
+
+ nTestByte = 0x22;
+
+ BOOST_CHECK_EQUAL(nTestByte, 0x22U);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_ASSIGN_BIT_CHECK_BIT)
+{
+ CIEC_BYTE nTestByte;
+
+ set4X_0(nTestByte,4);
+ set4X_D(nTestByte,0);
+
+ test4X_0(nTestByte,4);
+ test4X_D(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_ASSIGN_BIT_CHANGE_BYTE_CHECK_BIT_A)
+{
+ CIEC_BYTE nTestByte;
+
+ set4X_0(nTestByte,4);
+ set4X_D(nTestByte,0);
+
+ nTestByte = 0xFE;
+
+ test4X_F(nTestByte,4);
+ test4X_E(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_ASSIGN_BIT_CHANGE_BYTE_CHECK_BIT_B)
+{
+ CIEC_BYTE nTestByte;
+
+ set4X_0(nTestByte,4);
+ set4X_D(nTestByte,0);
+
+ nTestByte = 0xFE;
+
+ nTestByte = 0x22;
+
+ test4X_2(nTestByte,4);
+ test4X_2(nTestByte,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_ASSIGN_FROM_CONST)
+{
+ const CIEC_BOOL nTestBool(true);
+
+ CIEC_BYTE mTestByte;
+
+ mTestByte.partial<CIEC_BOOL,3>() = nTestBool;
+
+ BOOST_CHECK_EQUAL(mTestByte, 8);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_TYPE_WRITE_OUT_OF_BOUNDS)
+{
+ CIEC_BYTE_PARTIAL_UNCHECKED mTestByte;
+
+ auto tmp = mTestByte.x(8);
+
+ tmp = true;
+
+ BOOST_CHECK_EQUAL(mTestByte, 0);
+ BOOST_CHECK_EQUAL(tmp.getAccessedOutOfBounds(), true);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_TYPE_WRITE_OUT_OF_BOUNDS_FROM_CONST)
+{
+ const CIEC_BOOL nTestBool (true);
+
+ CIEC_BYTE_PARTIAL_UNCHECKED mTestByte;
+
+ auto tmp = mTestByte.x(8);
+
+ tmp = nTestBool;
+
+ BOOST_CHECK_EQUAL(mTestByte, 0);
+ BOOST_CHECK_EQUAL(tmp.getAccessedOutOfBounds(), true);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_BYTE_TYPE_READ_OUT_OF_BOUNDS)
+{
+ CIEC_BYTE nTestByte;
+ CIEC_BYTE_PARTIAL_UNCHECKED mTestByte;
+
+ nTestByte = 255;
+ mTestByte.setValue(nTestByte);
+
+ auto tmp = mTestByte.x(8);
+
+ BOOST_CHECK_EQUAL(mTestByte, 255);
+ BOOST_CHECK_EQUAL(tmp, 0);
+ BOOST_CHECK_EQUAL(tmp.getAccessedOutOfBounds(), true);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/CIEC_PARTIAL/CIEC_DWORD_PARTIAL_test.cpp b/tests/core/datatypes/CIEC_PARTIAL/CIEC_DWORD_PARTIAL_test.cpp
new file mode 100644
index 0000000..48f3f02
--- /dev/null
+++ b/tests/core/datatypes/CIEC_PARTIAL/CIEC_DWORD_PARTIAL_test.cpp
@@ -0,0 +1,1204 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - Adds partial access tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+/*#ifdef FORTE_USE_REAL_DATATYPE
+ #include <boost/test/floating_point_comparison.hpp>
+
+ #include "../../../src/core/datatypes/forte_real.h"
+#endif //FORTE_USE_REAL_DATATYPE*/
+
+//BOOLEAN
+#include "../../../src/core/datatypes/forte_bool.h"
+//BIT-Datatypes
+#include "../../../src/core/datatypes/forte_byte.h"
+#include "../../../src/core/datatypes/forte_word.h"
+#include "../../../src/core/datatypes/forte_dword.h"
+
+#include "CIEC_PARTIAL_test.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL)
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL_DWORD)
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ test4X_0(nTestDWord,28);
+ test4X_0(nTestDWord,24);
+ test4X_0(nTestDWord,20);
+ test4X_0(nTestDWord,16);
+ test4X_0(nTestDWord,12);
+ test4X_0(nTestDWord,8);
+ test4X_0(nTestDWord,4);
+ test4X_0(nTestDWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()),0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()),0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()),0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()),0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ BOOST_CHECK_EQUAL(nTestDWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CONST_INIT)
+{
+ const CIEC_WORD nTestWord(0x42);
+ CIEC_DWORD mTestDWord;
+
+ mTestDWord.partial<CIEC_WORD,0>() = nTestWord;
+
+ BOOST_CHECK_EQUAL(mTestDWord, 0x42);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord=0xCAFEBABE;
+
+ test4X_C(nTestDWord,28)
+ test4X_A(nTestDWord,24)
+ test4X_F(nTestDWord,20)
+ test4X_E(nTestDWord,16)
+
+ test4X_B(nTestDWord,12)
+ test4X_A(nTestDWord,8)
+ test4X_B(nTestDWord,4)
+ test4X_E(nTestDWord,0)
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord=0xCAFEBABE;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xBE);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xBA);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xFE);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCA);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord=0xCAFEBABE;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xBABE);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCAFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord=0xCAFEBABE;
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xCAFEBABE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ test4X_B(nTestDWord,28);
+ test4X_A(nTestDWord,24);
+ test4X_A(nTestDWord,20);
+ test4X_D(nTestDWord,16);
+ test4X_F(nTestDWord,12);
+ test4X_0(nTestDWord,8);
+ test4X_0(nTestDWord,4);
+ test4X_D(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xF0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0x0DU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAADU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xF00DU);
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAADF00DU);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ test4X_B(nTestDWord,28);
+ test4X_A(nTestDWord,24);
+ test4X_D(nTestDWord,20);
+ test4X_0(nTestDWord,16);
+ test4X_C(nTestDWord,12);
+ test4X_A(nTestDWord,8);
+ test4X_F(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xCAU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFEU);
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAD0CAFEU);
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ test4X_C(nTestDWord,28);
+ test4X_E(nTestDWord,24);
+ test4X_C(nTestDWord,20);
+ test4X_0(nTestDWord,16);
+ test4X_F(nTestDWord,12);
+ test4X_F(nTestDWord,8);
+ test4X_E(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xEEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCEC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xFFEEU);
+ BOOST_CHECK_EQUAL(nTestDWord, 0xCEC0FFEEU);
+
+ nTestDWord = 0xADD511FE;
+
+ test4X_A(nTestDWord,28);
+ test4X_D(nTestDWord,24);
+ test4X_D(nTestDWord,20);
+ test4X_5(nTestDWord,16);
+ test4X_1(nTestDWord,12);
+ test4X_1(nTestDWord,8);
+ test4X_F(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD5U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0x11U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xADD5U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x11FEU);
+ BOOST_CHECK_EQUAL(nTestDWord, 0xADD511FEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ test4X_B(nTestDWord,28);
+ test4X_A(nTestDWord,24);
+ test4X_A(nTestDWord,20);
+ test4X_D(nTestDWord,16);
+ test4X_F(nTestDWord,12);
+ test4X_0(nTestDWord,8);
+ test4X_0(nTestDWord,4);
+ test4X_D(nTestDWord,0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xF0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0x0DU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAADU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xF00DU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAADF00DU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ test4X_B(nTestDWord,28);
+ test4X_A(nTestDWord,24);
+ test4X_D(nTestDWord,20);
+ test4X_0(nTestDWord,16);
+ test4X_C(nTestDWord,12);
+ test4X_A(nTestDWord,8);
+ test4X_F(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xCAU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAD0CAFEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ test4X_C(nTestDWord,28);
+ test4X_E(nTestDWord,24);
+ test4X_C(nTestDWord,20);
+ test4X_0(nTestDWord,16);
+ test4X_F(nTestDWord,12);
+ test4X_F(nTestDWord,8);
+ test4X_E(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCEC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xFFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xCEC0FFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+
+ test4X_A(nTestDWord,28);
+ test4X_D(nTestDWord,24);
+ test4X_D(nTestDWord,20);
+ test4X_5(nTestDWord,16);
+ test4X_1(nTestDWord,12);
+ test4X_1(nTestDWord,8);
+ test4X_F(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD5U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0x11U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_B(nTestDWord,28);
+ set4X_A(nTestDWord,24);
+ set4X_A(nTestDWord,20);
+ set4X_D(nTestDWord,16);
+ set4X_F(nTestDWord,12);
+ set4X_0(nTestDWord,8);
+ set4X_0(nTestDWord,4);
+ set4X_D(nTestDWord,0);
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xADD5U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x11FEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xADD511FEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ test4X_C(nTestDWord,28);
+ test4X_E(nTestDWord,24);
+ test4X_C(nTestDWord,20);
+ test4X_0(nTestDWord,16);
+ test4X_F(nTestDWord,12);
+ test4X_F(nTestDWord,8);
+ test4X_E(nTestDWord,4);
+ test4X_E(nTestDWord,0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ test4X_C((nTestDWord.partial<CIEC_WORD,1>()),12);
+ test4X_E((nTestDWord.partial<CIEC_WORD,1>()),8);
+ test4X_C((nTestDWord.partial<CIEC_WORD,1>()),4);
+ test4X_0((nTestDWord.partial<CIEC_WORD,1>()),0);
+ test4X_F((nTestDWord.partial<CIEC_WORD,0>()),12);
+ test4X_F((nTestDWord.partial<CIEC_WORD,0>()),8);
+ test4X_E((nTestDWord.partial<CIEC_WORD,0>()),4);
+ test4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD_BYTE_BIT)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ test4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ test4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ test4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ test4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ test4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ test4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ test4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ test4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()), 0xEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCEC0U);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xFFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+
+ set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
+
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xCEC0FFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_A_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xCAFE;
+
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0x0000);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_A_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0x0000CAFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_B_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_B_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAD0CAFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_BYTE_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBA);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0x0B);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_BYTE_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0);
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x0BFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_BYTE_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAD00BFE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_CHECK_BYTE)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xAD);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_CHECK_WORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x0BAD);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_CHECK_DWORD)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAD00BAD);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BIT_A)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BOOL,0>()), false);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BYTE_A)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xAC);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_WORD_A)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x0BAC);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_DWORD_A)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAD00BAC);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BIT_B)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BOOL,0>()), false);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BYTE_B)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ nTestBool = true;
+ nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,5>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xF0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_WORD_B)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ nTestBool = true;
+ nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,5>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAF0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_DWORD_B)
+{
+ CIEC_DWORD nTestDWord;
+ CIEC_WORD nTestWord;
+ CIEC_BYTE nTestByte;
+ CIEC_BOOL nTestBool;
+
+ nTestWord = 0xCAFE;
+ nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xBAD0;
+ nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestByte = 0x0B;
+ nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
+
+ nTestByte = 0xAD;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
+
+ nTestBool = false;
+ nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
+
+ nTestBool = true;
+ nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,5>().setValue(nTestBool);
+
+ BOOST_CHECK_EQUAL(nTestDWord, 0xBAF00BAC);
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/CIEC_PARTIAL/CIEC_LWORD_PARTIAL_test.cpp b/tests/core/datatypes/CIEC_PARTIAL/CIEC_LWORD_PARTIAL_test.cpp
new file mode 100644
index 0000000..cefa7fb
--- /dev/null
+++ b/tests/core/datatypes/CIEC_PARTIAL/CIEC_LWORD_PARTIAL_test.cpp
@@ -0,0 +1,863 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - Adds partial access tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+/*#ifdef FORTE_USE_REAL_DATATYPE
+ #include <boost/test/floating_point_comparison.hpp>
+
+ #include "../../../src/core/datatypes/forte_real.h"
+#endif //FORTE_USE_REAL_DATATYPE*/
+
+//BOOLEAN
+#include "../../../src/core/datatypes/forte_bool.h"
+//BIT-Datatypes
+#include "../../../src/core/datatypes/forte_byte.h"
+#include "../../../src/core/datatypes/forte_word.h"
+#include "../../../src/core/datatypes/forte_dword.h"
+#ifdef FORTE_USE_64BIT_DATATYPES
+ #include "../../../src/core/datatypes/forte_lword.h"
+#endif //#ifdef FORTE_USE_64BIT_DATATYPES
+
+#include "CIEC_PARTIAL_test.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL)
+
+#ifdef FORTE_USE_64BIT_DATATYPES
+
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL_LWORD)
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_INITVALUES_CHECK_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ test4X_0(nTestLWord, 60);
+ test4X_0(nTestLWord, 56);
+ test4X_0(nTestLWord, 52);
+ test4X_0(nTestLWord, 48);
+
+ test4X_0(nTestLWord, 44);
+ test4X_0(nTestLWord, 40);
+ test4X_0(nTestLWord, 36);
+ test4X_0(nTestLWord, 32);
+
+ test4X_0(nTestLWord, 28);
+ test4X_0(nTestLWord, 24);
+ test4X_0(nTestLWord, 20);
+ test4X_0(nTestLWord, 16);
+
+ test4X_0(nTestLWord, 12);
+ test4X_0(nTestLWord, 8);
+ test4X_0(nTestLWord, 4);
+ test4X_0(nTestLWord, 0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_INITVALUES_CHECK_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,0>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,1>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,2>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,3>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,4>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,5>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,6>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,7>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_INITVALUES_CHECK_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,0>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,1>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,2>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,3>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_INITVALUES_CHECK_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>()),0);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_CONST_INIT)
+{
+ const CIEC_DWORD nTestDword(0x42);
+ CIEC_LWORD mTestLword;
+
+ mTestLword.partial<CIEC_DWORD,0>() = nTestDword;
+
+ BOOST_CHECK_EQUAL(mTestLword, 0x42);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_VALUE_CHECK_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord=0xDEADBEEFCAFEBABEU;
+
+ test4X_D(nTestLWord, 60)
+ test4X_E(nTestLWord, 56)
+ test4X_A(nTestLWord, 52)
+ test4X_D(nTestLWord, 48)
+
+ test4X_B(nTestLWord, 44)
+ test4X_E(nTestLWord, 40)
+ test4X_E(nTestLWord, 36)
+ test4X_F(nTestLWord, 32)
+
+ test4X_C(nTestLWord, 28)
+ test4X_A(nTestLWord, 24)
+ test4X_F(nTestLWord, 20)
+ test4X_E(nTestLWord, 16)
+
+ test4X_B(nTestLWord, 12)
+ test4X_A(nTestLWord, 8)
+ test4X_B(nTestLWord, 4)
+ test4X_E(nTestLWord, 0)
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_VALUE_CHECK_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord=0xDEADBEEFCAFEBABEU;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,0>()), 0xBE);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,1>()), 0xBA);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,2>()), 0xFE);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,3>()), 0xCA);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,4>()), 0xEF);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,5>()), 0xBE);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,6>()), 0xAD);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,7>()), 0xDE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_VALUE_CHECK_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord=0xDEADBEEFCAFEBABEU;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,0>()), 0xBABE);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,1>()), 0xCAFE);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,2>()), 0xBEEF);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,3>()), 0xDEAD);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_VALUE_CHECK_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord=0xDEADBEEFCAFEBABEU;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>()), 0xCAFEBABEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>()), 0xDEADBEEFU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BIT_CHECK_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_B(nTestLWord,60);
+ set4X_A(nTestLWord,56);
+ set4X_D(nTestLWord,52);
+ set4X_C(nTestLWord,48);
+ set4X_A(nTestLWord,44);
+ set4X_B(nTestLWord,40);
+ set4X_1(nTestLWord,36);
+ set4X_E(nTestLWord,32);
+ set4X_B(nTestLWord,28);
+ set4X_A(nTestLWord,24);
+ set4X_A(nTestLWord,20);
+ set4X_D(nTestLWord,16);
+ set4X_F(nTestLWord,12);
+ set4X_0(nTestLWord,8);
+ set4X_0(nTestLWord,4);
+ set4X_D(nTestLWord,0);
+
+ test4X_B(nTestLWord,60);
+ test4X_A(nTestLWord,56);
+ test4X_D(nTestLWord,52);
+ test4X_C(nTestLWord,48);
+ test4X_A(nTestLWord,44);
+ test4X_B(nTestLWord,40);
+ test4X_1(nTestLWord,36);
+ test4X_E(nTestLWord,32);
+ test4X_B(nTestLWord,28);
+ test4X_A(nTestLWord,24);
+ test4X_A(nTestLWord,20);
+ test4X_D(nTestLWord,16);
+ test4X_F(nTestLWord,12);
+ test4X_0(nTestLWord,8);
+ test4X_0(nTestLWord,4);
+ test4X_D(nTestLWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BIT_CHECK_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_B(nTestLWord,60);
+ set4X_A(nTestLWord,56);
+ set4X_D(nTestLWord,52);
+ set4X_C(nTestLWord,48);
+ set4X_A(nTestLWord,44);
+ set4X_B(nTestLWord,40);
+ set4X_1(nTestLWord,36);
+ set4X_E(nTestLWord,32);
+ set4X_B(nTestLWord,28);
+ set4X_A(nTestLWord,24);
+ set4X_A(nTestLWord,20);
+ set4X_D(nTestLWord,16);
+ set4X_F(nTestLWord,12);
+ set4X_0(nTestLWord,8);
+ set4X_0(nTestLWord,4);
+ set4X_D(nTestLWord,0);
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,7>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,6>()), 0xDCU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,5>()), 0xABU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,4>()), 0x1EU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,3>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,2>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,1>()), 0xF0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,0>()), 0x0DU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BIT_CHECK_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_B(nTestLWord,60);
+ set4X_A(nTestLWord,56);
+ set4X_D(nTestLWord,52);
+ set4X_C(nTestLWord,48);
+ set4X_A(nTestLWord,44);
+ set4X_B(nTestLWord,40);
+ set4X_1(nTestLWord,36);
+ set4X_E(nTestLWord,32);
+ set4X_B(nTestLWord,28);
+ set4X_A(nTestLWord,24);
+ set4X_A(nTestLWord,20);
+ set4X_D(nTestLWord,16);
+ set4X_F(nTestLWord,12);
+ set4X_0(nTestLWord,8);
+ set4X_0(nTestLWord,4);
+ set4X_D(nTestLWord,0);
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,3>()), 0xBADCU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,2>()), 0xAB1EU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,1>()), 0xBAADU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,0>()), 0xF00DU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BIT_CHECK_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_B(nTestLWord,60);
+ set4X_A(nTestLWord,56);
+ set4X_D(nTestLWord,52);
+ set4X_C(nTestLWord,48);
+ set4X_A(nTestLWord,44);
+ set4X_B(nTestLWord,40);
+ set4X_1(nTestLWord,36);
+ set4X_E(nTestLWord,32);
+ set4X_B(nTestLWord,28);
+ set4X_A(nTestLWord,24);
+ set4X_A(nTestLWord,20);
+ set4X_D(nTestLWord,16);
+ set4X_F(nTestLWord,12);
+ set4X_0(nTestLWord,8);
+ set4X_0(nTestLWord,4);
+ set4X_D(nTestLWord,0);
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>()), 0xBADCAB1EU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>()), 0xBAADF00DU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BIT_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_B(nTestLWord,60);
+ set4X_A(nTestLWord,56);
+ set4X_D(nTestLWord,52);
+ set4X_C(nTestLWord,48);
+ set4X_A(nTestLWord,44);
+ set4X_B(nTestLWord,40);
+ set4X_1(nTestLWord,36);
+ set4X_E(nTestLWord,32);
+ set4X_B(nTestLWord,28);
+ set4X_A(nTestLWord,24);
+ set4X_A(nTestLWord,20);
+ set4X_D(nTestLWord,16);
+ set4X_F(nTestLWord,12);
+ set4X_0(nTestLWord,8);
+ set4X_0(nTestLWord,4);
+ set4X_D(nTestLWord,0);
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xBADCAB1EBAADF00DU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BYTE_CHECK_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_BYTE,7>() = 0xDE;
+ nTestLWord.partial<CIEC_BYTE,6>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,5>() = 0xFB;
+ nTestLWord.partial<CIEC_BYTE,4>() = 0xAD;
+ nTestLWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestLWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestLWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ test4X_D(nTestLWord,60);
+ test4X_E(nTestLWord,56);
+ test4X_C(nTestLWord,52);
+ test4X_A(nTestLWord,48);
+ test4X_F(nTestLWord,44);
+ test4X_B(nTestLWord,40);
+ test4X_A(nTestLWord,36);
+ test4X_D(nTestLWord,32);
+ test4X_B(nTestLWord,28);
+ test4X_A(nTestLWord,24);
+ test4X_D(nTestLWord,20);
+ test4X_0(nTestLWord,16);
+ test4X_C(nTestLWord,12);
+ test4X_A(nTestLWord,8);
+ test4X_F(nTestLWord,4);
+ test4X_E(nTestLWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BYTE_CHECK_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_BYTE,7>() = 0xDE;
+ nTestLWord.partial<CIEC_BYTE,6>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,5>() = 0xFB;
+ nTestLWord.partial<CIEC_BYTE,4>() = 0xAD;
+ nTestLWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestLWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestLWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,7>()), 0xDEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,6>()), 0xCAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,5>()), 0xFBU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,4>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,3>()), 0xBAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,2>()), 0xD0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,1>()), 0xCAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,0>()), 0xFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BYTE_CHECK_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_BYTE,7>() = 0xDE;
+ nTestLWord.partial<CIEC_BYTE,6>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,5>() = 0xFB;
+ nTestLWord.partial<CIEC_BYTE,4>() = 0xAD;
+ nTestLWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestLWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestLWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,3>()), 0xDECAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,2>()), 0xFBADU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,1>()), 0xBAD0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,0>()), 0xCAFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BYTE_CHECK_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_BYTE,7>() = 0xDE;
+ nTestLWord.partial<CIEC_BYTE,6>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,5>() = 0xFB;
+ nTestLWord.partial<CIEC_BYTE,4>() = 0xAD;
+ nTestLWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestLWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestLWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>()), 0xDECAFBADU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>()), 0xBAD0CAFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_BYTE_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_BYTE,7>() = 0xDE;
+ nTestLWord.partial<CIEC_BYTE,6>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,5>() = 0xFB;
+ nTestLWord.partial<CIEC_BYTE,4>() = 0xAD;
+ nTestLWord.partial<CIEC_BYTE,3>() = 0xBA;
+ nTestLWord.partial<CIEC_BYTE,2>() = 0xD0;
+ nTestLWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestLWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xDECAFBADBAD0CAFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_WORD_CHECK_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_WORD,3>() = 0x00FE;
+ nTestLWord.partial<CIEC_WORD,2>() = 0xEDFA;
+ nTestLWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestLWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ test4X_0(nTestLWord,60);
+ test4X_0(nTestLWord,56);
+ test4X_F(nTestLWord,52);
+ test4X_E(nTestLWord,48);
+ test4X_E(nTestLWord,44);
+ test4X_D(nTestLWord,40);
+ test4X_F(nTestLWord,36);
+ test4X_A(nTestLWord,32);
+ test4X_C(nTestLWord,28);
+ test4X_E(nTestLWord,24);
+ test4X_C(nTestLWord,20);
+ test4X_0(nTestLWord,16);
+ test4X_F(nTestLWord,12);
+ test4X_F(nTestLWord,8);
+ test4X_E(nTestLWord,4);
+ test4X_E(nTestLWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_WORD_CHECK_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_WORD,3>() = 0x00FE;
+ nTestLWord.partial<CIEC_WORD,2>() = 0xEDFA;
+ nTestLWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestLWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,7>()), 0x00U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,6>()), 0xFEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,5>()), 0xEDU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,4>()), 0xFAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,3>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,2>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,0>()), 0xEEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_WORD_CHECK_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_WORD,3>() = 0x00FE;
+ nTestLWord.partial<CIEC_WORD,2>() = 0xEDFA;
+ nTestLWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestLWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,3>()), 0x00FEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,2>()), 0xEDFAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,1>()), 0xCEC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,0>()), 0xFFEEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_WORD_CHECK_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_WORD,3>() = 0x00FE;
+ nTestLWord.partial<CIEC_WORD,2>() = 0xEDFA;
+ nTestLWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestLWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>()), 0x00FEEDFAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>()), 0xCEC0FFEEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_WORD_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_WORD,3>() = 0x00FE;
+ nTestLWord.partial<CIEC_WORD,2>() = 0xEDFA;
+ nTestLWord.partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestLWord.partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0x00FEEDFACEC0FFEEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_DWORD_CHECK_BIT)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,0>() = 0xADD511FE;
+ nTestLWord.partial<CIEC_DWORD,1>() = 0xC0CAC01A;
+
+ test4X_C(nTestLWord,60);
+ test4X_0(nTestLWord,56);
+ test4X_C(nTestLWord,52);
+ test4X_A(nTestLWord,48);
+ test4X_C(nTestLWord,44);
+ test4X_0(nTestLWord,40);
+ test4X_1(nTestLWord,36);
+ test4X_A(nTestLWord,32);
+ test4X_A(nTestLWord,28);
+ test4X_D(nTestLWord,24);
+ test4X_D(nTestLWord,20);
+ test4X_5(nTestLWord,16);
+ test4X_1(nTestLWord,12);
+ test4X_1(nTestLWord,8);
+ test4X_F(nTestLWord,4);
+ test4X_E(nTestLWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_DWORD_CHECK_BYTE)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,0>() = 0xADD511FE;
+ nTestLWord.partial<CIEC_DWORD,1>() = 0xC0CAC01A;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,7>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,6>()), 0xCAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,5>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,4>()), 0x1AU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,3>()), 0xADU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,2>()), 0xD5U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,1>()), 0x11U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_BYTE,0>()), 0xFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_DWORD_CHECK_WORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,0>() = 0xADD511FE;
+ nTestLWord.partial<CIEC_DWORD,1>() = 0xC0CAC01A;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,3>()), 0xC0CAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,2>()), 0xC01AU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,1>()), 0xADD5U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_WORD,0>()), 0x11FEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_DWORD_CHECK_DWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,0>() = 0xADD511FE;
+ nTestLWord.partial<CIEC_DWORD,1>() = 0xC0CAC01A;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>()), 0xC0CAC01AU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>()), 0xADD511FEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_DWORD_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,0>() = 0xADD511FE;
+ nTestLWord.partial<CIEC_DWORD,1>() = 0xC0CAC01A;
+
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xC0CAC01AADD511FEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_SETVALUE_DWORD_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+ CIEC_DWORD nTestDWord;
+
+ nTestDWord = 0xADD511FE;
+ nTestLWord.partial<CIEC_DWORD,0>().setValue(nTestDWord);
+
+ nTestDWord = 0xC0CAC01A;
+ nTestLWord.partial<CIEC_DWORD,1>().setValue(nTestDWord);
+
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xC0CAC01AADD511FEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_SETVALUE_WORD_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+ CIEC_DWORD nTestWord;
+
+ nTestWord = 0x11FE;
+ nTestLWord.partial<CIEC_WORD,0>().setValue(nTestWord);
+
+ nTestWord = 0xADD5;
+ nTestLWord.partial<CIEC_WORD,1>().setValue(nTestWord);
+
+ nTestWord = 0xC01A;
+ nTestLWord.partial<CIEC_WORD,2>().setValue(nTestWord);
+
+ nTestWord = 0xC0CA;
+ nTestLWord.partial<CIEC_WORD,3>().setValue(nTestWord);
+
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xC0CAC01AADD511FEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHAIN_DWORD_BYTE_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,3>() = 0xDE;
+ nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,2>() = 0xCA;
+ nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,1>() = 0xFB;
+ nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,0>() = 0xAD;
+ nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,3>() = 0xBA;
+ nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,2>() = 0xD0;
+ nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,1>() = 0xCA;
+ nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xDECAFBADBAD0CAFEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHAIN_DWORD_WORD_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>() = 0x00FE;
+ nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>() = 0xEDFA;
+ nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>() = 0xCEC0;
+ nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>() = 0xFFEE;
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0x00FEEDFACEC0FFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHAIN_DWORD_WORD_BIT_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_C((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),12);
+ set4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),8);
+ set4X_C((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),4);
+ set4X_A((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),0);
+ set4X_C((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),12);
+ set4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),8);
+ set4X_1((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),4);
+ set4X_A((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),0);
+ set4X_A((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),12);
+ set4X_D((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),8);
+ set4X_D((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),4);
+ set4X_5((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),0);
+ set4X_1((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),12);
+ set4X_1((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),8);
+ set4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),4);
+ set4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),0);
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0xC0CAC01AADD511FEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHAIN_DWORD_WORD_BYTE_BIT_CHECK_LWORD)
+{
+ CIEC_LWORD nTestLWord;
+
+ set4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_F((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_E((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_D((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_F((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_A((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+ set4X_C((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ set4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ set4X_C((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ set4X_0((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ set4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ set4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ set4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ set4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+ BOOST_CHECK_EQUAL(nTestLWord, 0x00FEEDFACEC0FFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHECK_CHAIN_LWORD_DWORD_WORD)
+{
+
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x00FEEDFACEC0FFEEU;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()), 0x00FEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()), 0xEDFAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()), 0xCEC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()), 0xFFEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHECK_CHAIN_LWORD_DWORD_BYTE)
+{
+
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x00FEEDFACEC0FFEEU;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,3>()), 0x00U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,2>()), 0xFEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,1>()), 0xEDU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,0>()), 0xFAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,3>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,2>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,0>()), 0xEEU);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHECK_CHAIN_LWORD_DWORD_BIT)
+{
+
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x00FEEDFACEC0FFEEU;
+
+ test4X_0((nTestLWord.partial<CIEC_DWORD,1>()),28);
+ test4X_0((nTestLWord.partial<CIEC_DWORD,1>()),24);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,1>()),20);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,1>()),16);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,1>()),12);
+ test4X_D((nTestLWord.partial<CIEC_DWORD,1>()),8);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,1>()),4);
+ test4X_A((nTestLWord.partial<CIEC_DWORD,1>()),0);
+ test4X_C((nTestLWord.partial<CIEC_DWORD,0>()),28);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>()),24);
+ test4X_C((nTestLWord.partial<CIEC_DWORD,0>()),20);
+ test4X_0((nTestLWord.partial<CIEC_DWORD,0>()),16);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,0>()),12);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,0>()),8);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>()),4);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHECK_CHAIN_LWORD_DWORD_WORD_BIT)
+{
+
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x00FEEDFACEC0FFEEU;
+
+ test4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),12);
+ test4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),8);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),4);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>()),0);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),12);
+ test4X_D((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),8);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),4);
+ test4X_A((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>()),0);
+ test4X_C((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),12);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),8);
+ test4X_C((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),4);
+ test4X_0((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>()),0);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),12);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),8);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),4);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHECK_CHAIN_LWORD_DWORD_WORD_BYTE_BIT)
+{
+
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x00FEEDFACEC0FFEEU;
+
+ test4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ test4X_0((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ test4X_D((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ test4X_A((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+ test4X_C((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
+ test4X_C((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
+ test4X_0((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
+ test4X_F((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
+ test4X_E((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_LWORD_ASSIGN_CHECK_CHAIN_LWORD_DWORD_BYTE_BIT)
+{
+
+ CIEC_LWORD nTestLWord;
+
+ nTestLWord = 0x00FEEDFACEC0FFEEU;
+
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,3>()), 0x00U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,2>()), 0xFEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,1>()), 0xEDU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,1>().partial<CIEC_BYTE,0>()), 0xFAU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,3>()), 0xCEU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,2>()), 0xC0U);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestLWord.partial<CIEC_DWORD,0>().partial<CIEC_BYTE,0>()), 0xEEU);
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+#endif //#ifdef FORTE_USE_64BIT_DATATYPES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/CIEC_PARTIAL/CIEC_PARTIAL_test.h b/tests/core/datatypes/CIEC_PARTIAL/CIEC_PARTIAL_test.h
new file mode 100644
index 0000000..7a2f03f
--- /dev/null
+++ b/tests/core/datatypes/CIEC_PARTIAL/CIEC_PARTIAL_test.h
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - Adds partial access tests
+ *******************************************************************************/
+
+#ifndef CIEC_ANY_BIT_PARTIAL_TEST
+#define CIEC_ANY_BIT_PARTIAL_TEST
+
+#define test4X(var, offset, b3, b2, b1, b0) \
+ BOOST_CHECK_EQUAL((var.partial<CIEC_BOOL,0+offset>()),b0);\
+ BOOST_CHECK_EQUAL((var.partial<CIEC_BOOL,1+offset>()),b1);\
+ BOOST_CHECK_EQUAL((var.partial<CIEC_BOOL,2+offset>()),b2);\
+ BOOST_CHECK_EQUAL((var.partial<CIEC_BOOL,3+offset>()),b3);
+
+#define test4X_0(var, offset) test4X(var, offset, 0, 0, 0, 0)
+#define test4X_1(var, offset) test4X(var, offset, 0, 0, 0, 1)
+#define test4X_2(var, offset) test4X(var, offset, 0, 0, 1, 0)
+#define test4X_3(var, offset) test4X(var, offset, 0, 0, 1, 1)
+#define test4X_4(var, offset) test4X(var, offset, 0, 1, 0, 0)
+#define test4X_5(var, offset) test4X(var, offset, 0, 1, 0, 1)
+#define test4X_6(var, offset) test4X(var, offset, 0, 1, 1, 0)
+#define test4X_7(var, offset) test4X(var, offset, 0, 1, 1, 1)
+#define test4X_8(var, offset) test4X(var, offset, 1, 0, 0, 0)
+#define test4X_9(var, offset) test4X(var, offset, 1, 0, 0, 1)
+#define test4X_A(var, offset) test4X(var, offset, 1, 0, 1, 0)
+#define test4X_B(var, offset) test4X(var, offset, 1, 0, 1, 1)
+#define test4X_C(var, offset) test4X(var, offset, 1, 1, 0, 0)
+#define test4X_D(var, offset) test4X(var, offset, 1, 1, 0, 1)
+#define test4X_E(var, offset) test4X(var, offset, 1, 1, 1, 0)
+#define test4X_F(var, offset) test4X(var, offset, 1, 1, 1, 1)
+
+
+#define set4X(var, offset, b3, b2, b1, b0) \
+ var.partial<CIEC_BOOL,0+offset>()=b0;\
+ var.partial<CIEC_BOOL,1+offset>()=b1;\
+ var.partial<CIEC_BOOL,2+offset>()=b2;\
+ var.partial<CIEC_BOOL,3+offset>()=b3;
+
+#define set4X_0(var, offset) set4X(var, offset, 0, 0, 0, 0)
+#define set4X_1(var, offset) set4X(var, offset, 0, 0, 0, 1)
+#define set4X_2(var, offset) set4X(var, offset, 0, 0, 1, 0)
+#define set4X_3(var, offset) set4X(var, offset, 0, 0, 1, 1)
+#define set4X_4(var, offset) set4X(var, offset, 0, 1, 0, 0)
+#define set4X_5(var, offset) set4X(var, offset, 0, 1, 0, 1)
+#define set4X_6(var, offset) set4X(var, offset, 0, 1, 1, 0)
+#define set4X_7(var, offset) set4X(var, offset, 0, 1, 1, 1)
+#define set4X_8(var, offset) set4X(var, offset, 1, 0, 0, 0)
+#define set4X_9(var, offset) set4X(var, offset, 1, 0, 0, 1)
+#define set4X_A(var, offset) set4X(var, offset, 1, 0, 1, 0)
+#define set4X_B(var, offset) set4X(var, offset, 1, 0, 1, 1)
+#define set4X_C(var, offset) set4X(var, offset, 1, 1, 0, 0)
+#define set4X_D(var, offset) set4X(var, offset, 1, 1, 0, 1)
+#define set4X_E(var, offset) set4X(var, offset, 1, 1, 1, 0)
+#define set4X_F(var, offset) set4X(var, offset, 1, 1, 1, 1)
+
+#endif
diff --git a/tests/core/datatypes/CIEC_PARTIAL/CIEC_WORD_PARTIAL_test.cpp b/tests/core/datatypes/CIEC_PARTIAL/CIEC_WORD_PARTIAL_test.cpp
new file mode 100644
index 0000000..f191ad0
--- /dev/null
+++ b/tests/core/datatypes/CIEC_PARTIAL/CIEC_WORD_PARTIAL_test.cpp
@@ -0,0 +1,258 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
+ * 2020 Johannes Kepler University Linz
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
+ * Ernst Blecha - Adds partial access tests
+ *******************************************************************************/
+
+#include <boost/test/unit_test.hpp>
+
+/*#ifdef FORTE_USE_REAL_DATATYPE
+ #include <boost/test/floating_point_comparison.hpp>
+
+ #include "../../../src/core/datatypes/forte_real.h"
+#endif //FORTE_USE_REAL_DATATYPE*/
+
+//BOOLEAN
+#include "../../../src/core/datatypes/forte_bool.h"
+//BIT-Datatypes
+#include "../../../src/core/datatypes/forte_byte.h"
+#include "../../../src/core/datatypes/forte_word.h"
+
+#include "CIEC_PARTIAL_test.h"
+
+using namespace boost::unit_test;
+
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL)
+BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL_WORD)
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_INITVALUES_CHECK_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ test4X_0(nTestWord, 12)
+ test4X_0(nTestWord, 8)
+ test4X_0(nTestWord, 4)
+ test4X_0(nTestWord, 0)
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_INITVALUES_CHECK_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,0>()),0);
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,1>()),0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_CONST_INIT)
+{
+ const CIEC_BYTE nTestByte(0x42);
+ CIEC_WORD mTestWord;
+
+ mTestWord.partial<CIEC_BYTE,0>() = nTestByte;
+
+ BOOST_CHECK_EQUAL(mTestWord, 0x42);
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_VALUE_CHECK_WORD)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord=0xBABE;
+
+ BOOST_CHECK_EQUAL(nTestWord, 0xBABE);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_VALUE_CHECK_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord=0xBABE;
+
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,0>()), 0xBE);
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,1>()), 0xBA);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_VALUE_CHECK_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord=0xBABE;
+
+ test4X_B(nTestWord, 12)
+ test4X_A(nTestWord, 8)
+ test4X_B(nTestWord, 4)
+ test4X_E(nTestWord, 0)
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_BIT_CHECK_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ set4X_F(nTestWord,12);
+ set4X_0(nTestWord,8);
+ set4X_0(nTestWord,4);
+ set4X_D(nTestWord,0);
+
+ test4X_F(nTestWord,12);
+ test4X_0(nTestWord,8);
+ test4X_0(nTestWord,4);
+ test4X_D(nTestWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_BIT_CHECK_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ set4X_F(nTestWord,12);
+ set4X_0(nTestWord,8);
+ set4X_0(nTestWord,4);
+ set4X_D(nTestWord,0);
+
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,1>()), 0xF0U);
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,0>()), 0x0DU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_BIT_CHECK_WORD)
+{
+ CIEC_WORD nTestWord;
+
+ set4X_F(nTestWord,12);
+ set4X_0(nTestWord,8);
+ set4X_0(nTestWord,4);
+ set4X_D(nTestWord,0);
+
+ BOOST_CHECK_EQUAL(nTestWord, 0xF00DU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_BYTE_CHECK_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ test4X_C(nTestWord,12);
+ test4X_A(nTestWord,8);
+ test4X_F(nTestWord,4);
+ test4X_E(nTestWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_BYTE_CHECK_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,1>()), 0xCAU);
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,0>()), 0xFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_BYTE_CHECK_WORD)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord.partial<CIEC_BYTE,1>() = 0xCA;
+ nTestWord.partial<CIEC_BYTE,0>() = 0xFE;
+
+ BOOST_CHECK_EQUAL(nTestWord, 0xCAFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_WORD_CHECK_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xFFEE;
+
+ test4X_F(nTestWord,12);
+ test4X_F(nTestWord,8);
+ test4X_E(nTestWord,4);
+ test4X_E(nTestWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_WORD_CHECK_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xFFEE;
+
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,1>()), 0xFFU);
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,0>()), 0xEEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_WORD_CHECK_WORD)
+{
+ CIEC_WORD nTestWord;
+
+ nTestWord = 0xFFEE;
+
+ BOOST_CHECK_EQUAL(nTestWord, 0xFFEEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_CHAIN_BYTE_BIT_CHECK_BIT)
+{
+ CIEC_WORD nTestWord;
+
+ set4X_1(nTestWord,12);
+ set4X_1(nTestWord,8);
+ set4X_F(nTestWord,4);
+ set4X_E(nTestWord,0);
+
+ test4X_1(nTestWord,12);
+ test4X_1(nTestWord,8);
+ test4X_F(nTestWord,4);
+ test4X_E(nTestWord,0);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_CHAIN_BYTE_BIT_CHECK_BYTE)
+{
+ CIEC_WORD nTestWord;
+
+ set4X_1(nTestWord,12);
+ set4X_1(nTestWord,8);
+ set4X_F(nTestWord,4);
+ set4X_E(nTestWord,0);
+
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,1>()), 0x11U);
+ BOOST_CHECK_EQUAL((nTestWord.partial<CIEC_BYTE,0>()), 0xFEU);
+
+}
+
+BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_WORD_ASSIGN_CHAIN_BYTE_BIT_CHECK_WORD)
+{
+ CIEC_WORD nTestWord;
+
+ set4X_1(nTestWord,12);
+ set4X_1(nTestWord,8);
+ set4X_F(nTestWord,4);
+ set4X_E(nTestWord,0);
+
+ BOOST_CHECK_EQUAL(nTestWord, 0x11FEU);
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/core/datatypes/CIEC_PARTIAL/CMakeLists.txt b/tests/core/datatypes/CIEC_PARTIAL/CMakeLists.txt
new file mode 100644
index 0000000..bf48293
--- /dev/null
+++ b/tests/core/datatypes/CIEC_PARTIAL/CMakeLists.txt
@@ -0,0 +1,26 @@
+#*******************************************************************************
+# Copyright (c) 2011 - 2014 nxtControl, ACIN, fortiss GmbH, Profactor GmbH
+# 2020 Johannes Kepler University Linz
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Stanislav Meduna, Ingo Hegny, Alois Zoitl, Monika Wenger, Matthias Plasch - initial API and implementation and/or initial documentation
+# Ernst Blecha - add multibit partial access
+# *******************************************************************************/
+
+#SET(SOURCE_GROUP ${SOURCE_GROUP}\\core)
+
+ forte_test_add_inc_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+#BIT-Datatypes
+ forte_test_add_sourcefile_cpp(CIEC_BYTE_PARTIAL_test.cpp)
+ forte_test_add_sourcefile_cpp(CIEC_WORD_PARTIAL_test.cpp)
+ forte_test_add_sourcefile_cpp(CIEC_DWORD_PARTIAL_test.cpp)
+IF (FORTE_USE_64BIT_DATATYPES)
+ forte_test_add_sourcefile_cpp(CIEC_LWORD_PARTIAL_test.cpp)
+ENDIF (FORTE_USE_64BIT_DATATYPES)
+
diff --git a/tests/core/datatypes/CMakeLists.txt b/tests/core/datatypes/CMakeLists.txt
index 45e3f77..20a2c45 100644
--- a/tests/core/datatypes/CMakeLists.txt
+++ b/tests/core/datatypes/CMakeLists.txt
@@ -1,5 +1,6 @@
#*******************************************************************************
# Copyright (c) 2011 - 2014 nxtControl, ACIN, fortiss GmbH, Profactor GmbH
+# 2020 Johannes Kepler University Linz
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0.
@@ -8,6 +9,7 @@
#
# Contributors:
# Stanislav Meduna, Ingo Hegny, Alois Zoitl, Monika Wenger, Matthias Plasch - initial API and implementation and/or initial documentation
+# Ernst Blecha - add multibit partial access, add at-variable tests
# *******************************************************************************/
#SET(SOURCE_GROUP ${SOURCE_GROUP}\\core)
@@ -35,6 +37,8 @@
forte_test_add_sourcefile_cpp(CIEC_LWORD_test.cpp)
forte_test_add_sourcefile_cpp(CIEC_LWORD_CASTS_test.cpp)
ENDIF (FORTE_USE_64BIT_DATATYPES)
+ forte_test_add_subdirectory(CIEC_PARTIAL)
+ forte_test_add_subdirectory(AT_VARIABLE)
#INT-Datatypes
forte_test_add_sourcefile_cpp(CIEC_SINT_test.cpp)
@@ -82,4 +86,4 @@
forte_test_add_sourcefile_cpp(CIEC_STRUCT_test.cpp)
- forte_test_add_subdirectory(convert)
\ No newline at end of file
+ forte_test_add_subdirectory(convert)
diff --git a/tests/core/utils/string_utils_test.cpp b/tests/core/utils/string_utils_test.cpp
index a5016b7..2a80001 100644
--- a/tests/core/utils/string_utils_test.cpp
+++ b/tests/core/utils/string_utils_test.cpp
@@ -448,7 +448,7 @@
BOOST_AUTO_TEST_CASE(getExtraSizeForEscapedChars){
for(size_t i = 0; i < sizeof(sNonEscapedData) / sizeof(const char*); i++){
- BOOST_CHECK_EQUAL(forte::core::util::getExtraSizeForEscapedChars(sNonEscapedData[i]), sExtraSize[i]);
+ BOOST_CHECK_EQUAL(forte::core::util::getExtraSizeForXMLEscapedChars(sNonEscapedData[i]), sExtraSize[i]);
}
}