summaryrefslogtreecommitdiff
path: root/PluginRoutingInterfaceCAPI
diff options
context:
space:
mode:
authorAleksandar Donchev <aleksander.donchev@partner.bmw.de>2013-09-02 11:57:28 +0200
committerChristian Linke <Christian.Linke@bmw.de>2013-09-03 17:26:04 +0200
commita2edae5cee4254b933f42399edc0e092abd4f5cf (patch)
treeead58f525b947deed4b8c76ab9c89c80b5056227 /PluginRoutingInterfaceCAPI
parent7aee1baeea1777318932cc49a8eac18f194233cd (diff)
downloadaudiomanager-a2edae5cee4254b933f42399edc0e092abd4f5cf.tar.gz
*PluginCommandInterfaceCAPI, PluginRoutingInterfaceCAPI, NodeStateCommunicatorCAPI with unit tests first version.
Choosing between DBUS and Common-API via cmake. CommonAPI - legacy support for DBus properties (Set 1) Signed-off-by: Christian Linke <christian.linke@bmw.de> (cherry picked from commit ea96ef59e29466667c90b506426e2a5a9cdb82d2)
Diffstat (limited to 'PluginRoutingInterfaceCAPI')
-rw-r--r--PluginRoutingInterfaceCAPI/CMakeLists.txt97
-rw-r--r--PluginRoutingInterfaceCAPI/cmake/config.cmake6
-rwxr-xr-xPluginRoutingInterfaceCAPI/fidl/PluginRoutingInterfaceCAPI_dbus.conf8
-rw-r--r--PluginRoutingInterfaceCAPI/fidl/RoutingInterface.fidl462
-rwxr-xr-xPluginRoutingInterfaceCAPI/fidl/RoutingSender.fidl158
-rwxr-xr-xPluginRoutingInterfaceCAPI/fidl/amTypes.fidl399
-rw-r--r--PluginRoutingInterfaceCAPI/fidl/deployment.fdepl9
-rw-r--r--PluginRoutingInterfaceCAPI/include/CAmLookupData.h204
-rw-r--r--PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCAPI.h103
-rw-r--r--PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCommon.h59
-rw-r--r--PluginRoutingInterfaceCAPI/include/CAmRoutingService.h148
-rw-r--r--PluginRoutingInterfaceCAPI/include/configRoutingCAPI.h6
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterface.h66
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.cpp920
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.h201
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.cpp562
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.h59
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxy.h1594
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxyBase.h242
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStub.h198
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.cpp229
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.h160
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSender.h66
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.cpp344
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.h106
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.cpp237
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.h57
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxy.h611
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxyBase.h116
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStub.h123
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.cpp103
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.h98
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.cpp587
-rw-r--r--PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.h1764
-rw-r--r--PluginRoutingInterfaceCAPI/src/CAmLookupData.cpp669
-rw-r--r--PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCAPI.cpp266
-rw-r--r--PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCommon.cpp282
-rw-r--r--PluginRoutingInterfaceCAPI/src/CAmRoutingService.cpp435
-rw-r--r--PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.cpp2269
-rw-r--r--PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.h104
-rw-r--r--PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.cpp225
-rw-r--r--PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.h112
-rw-r--r--PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.cpp31
-rw-r--r--PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.h32
-rw-r--r--PluginRoutingInterfaceCAPI/test/CMakeLists.txt135
-rw-r--r--PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.cpp87
-rw-r--r--PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.h53
-rw-r--r--PluginRoutingInterfaceCAPI/test/MockIAmRoutingReceive.h126
-rwxr-xr-xPluginRoutingInterfaceCAPI/test/RoutingSender_dbus.conf8
-rwxr-xr-xPluginRoutingInterfaceCAPI/test/cmake/AmRoutingInterfaceCAPITests_dbus.conf.in3
-rw-r--r--PluginRoutingInterfaceCAPI/test/cmake/CAmRoutingSenderService.h.in112
-rwxr-xr-xPluginRoutingInterfaceCAPI/test/cmake/RoutingSender_dbus.conf.in8
-rw-r--r--PluginRoutingInterfaceCAPI/test/cmake/config.cmake8
53 files changed, 15067 insertions, 0 deletions
diff --git a/PluginRoutingInterfaceCAPI/CMakeLists.txt b/PluginRoutingInterfaceCAPI/CMakeLists.txt
new file mode 100644
index 0000000..cceb786
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/CMakeLists.txt
@@ -0,0 +1,97 @@
+# Copyright (c) 2012 GENIVI Alliance
+# Copyright (c) 2012 BMW
+#
+# author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+#
+# copyright
+# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+# THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# For further information see http://www.genivi.org/.
+#
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(PluginRoutingInterfaceCAPI)
+
+OPTION(WITH_ROUTING_INTERFACE_CAPI
+ "build with routing iterface common-api plugin" ON)
+
+IF(WITH_ROUTING_INTERFACE_CAPI AND WITH_CAPI_WRAPPER)
+
+set(LIBRARY_OUTPUT_PATH ${PLUGINS_OUTPUT_PATH}/routing)
+set(DOC_OUTPUT_PATH ${DOC_OUTPUT_PATH}/RoutingPlugin)
+set(INCLUDE_FOLDER "include")
+
+SET(SHARED_FOLDER "${CMAKE_INSTALL_PREFIX}/share")
+FILE(READ "${AUDIO_INCLUDE_FOLDER}/routing/IAmRoutingSend.h" VERSION_BUFFER LIMIT 6000)
+STRING(REGEX MATCH "RoutingSendVersion*.[^0-9]*[0-9].[0-9]*[0-9]" LIB_INTERFACE_VERSION_STRING ${VERSION_BUFFER})
+STRING(REGEX REPLACE "RoutingSendVersion*.." "" LIB_INTERFACE_VERSION ${LIB_INTERFACE_VERSION_STRING})
+MESSAGE(STATUS "Building against routing interface version ${LIB_INTERFACE_VERSION}")
+
+INSERT_DBUS_CONF_IF_NEEDED("@ROUTING_INTERFACE_DBUS_CONF@"
+ "${CMAKE_CURRENT_SOURCE_DIR}/fidl/PluginRoutingInterfaceCAPI_dbus.conf"
+ ROUTING_INTERFACE_DBUS_CONF)
+
+set(ROUTING_INTERFACE_DBUS_CONF ${ROUTING_INTERFACE_DBUS_CONF} PARENT_SCOPE)
+
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.cmake ${CMAKE_CURRENT_SOURCE_DIR}/include/configRoutingCAPI.h )
+
+FIND_PACKAGE(CommonAPI REQUIRED)
+FIND_PACKAGE(CommonAPI_DBus REQUIRED)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${AUDIO_INCLUDE_FOLDER}
+ ${PROJECT_INCLUDE_FOLDER}
+ ${COMMON_API_INCLUDE_DIRS}
+ ${COMMON_API_DBUS_INCLUDE_DIRS}
+ ${COMMON_API_GEN_INCLUDE_DIR}
+ ${INCLUDE_FOLDER}
+)
+
+# all source files go here
+file(GLOB PLUGINCAPI_SRCS_CXX "src/*.cpp" ${COMMON_API_GEN_SOURCES})
+
+
+add_library(PluginRoutingInterfaceCAPI MODULE ${PLUGINCAPI_SRCS_CXX})
+
+SET_TARGET_PROPERTIES(PluginRoutingInterfaceCAPI PROPERTIES
+ SOVERSION "${LIB_INTERFACE_VERSION}"
+)
+
+TARGET_LINK_LIBRARIES(PluginRoutingInterfaceCAPI
+ ${DLT_LIBRARIES}
+ ${COMMON_API_LIBRARIES}
+ ${COMMON_API_DBUS_LIBRARIES}
+)
+
+IF(WITH_TESTS)
+ add_subdirectory (test)
+ENDIF(WITH_TESTS)
+
+#IF(WITH_DOCUMENTATION)
+# file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH})
+# configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE)
+# add_custom_target (PluginRoutingInterfaceCAPIDocs ALL
+# COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH}
+# SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile
+# )
+#ENDIF(WITH_DOCUMENTATION)
+
+INSTALL(TARGETS PluginRoutingInterfaceCAPI
+ DESTINATION "lib/${LIB_INSTALL_SUFFIX}/routing"
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT sampleplugins
+)
+
+SET(ADD_DEPEND "audiomanager-bin" "dlt")
+set_property(GLOBAL APPEND PROPERTY sampleplugins_prop "${ADD_DEPEND}")
+
+ENDIF(WITH_ROUTING_INTERFACE_CAPI AND WITH_CAPI_WRAPPER)
diff --git a/PluginRoutingInterfaceCAPI/cmake/config.cmake b/PluginRoutingInterfaceCAPI/cmake/config.cmake
new file mode 100644
index 0000000..20ce881
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/cmake/config.cmake
@@ -0,0 +1,6 @@
+#ifndef _ROUTINGDBUS_CONFIG_H
+#define _ROUTINGDBUS_CONFIG_H
+
+#cmakedefine ROUTING_DBUS_INTROSPECTION_FILE "@ROUTING_DBUS_INTROSPECTION_FILE@"
+
+#endif /* _ROUTINGDBUS_CONFIG_H */
diff --git a/PluginRoutingInterfaceCAPI/fidl/PluginRoutingInterfaceCAPI_dbus.conf b/PluginRoutingInterfaceCAPI/fidl/PluginRoutingInterfaceCAPI_dbus.conf
new file mode 100755
index 0000000..799a9a3
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/fidl/PluginRoutingInterfaceCAPI_dbus.conf
@@ -0,0 +1,8 @@
+######################################### Routing interface configuration ########################################
+# PluginRoutingInterfaceCAPI_dbus.conf #
+# If you change something make sure you re-configure with 'ccmake..' which generates the *_dbus.conf file again. #
+##################################################################################################################
+[local:org.genivi.audiomanger.routinginterface:org.genivi.audiomanger]
+dbus_connection=org.genivi.audiomanager
+dbus_object=/org/genivi/audiomanager/routinginterface
+dbus_interface=org.genivi.audiomanager.routinginterface \ No newline at end of file
diff --git a/PluginRoutingInterfaceCAPI/fidl/RoutingInterface.fidl b/PluginRoutingInterfaceCAPI/fidl/RoutingInterface.fidl
new file mode 100644
index 0000000..6e1346b
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/fidl/RoutingInterface.fidl
@@ -0,0 +1,462 @@
+package org.genivi.audiomanager
+
+import org.genivi.audiomanager.am_gen.* from "amTypes.fidl"
+
+
+interface RoutingInterface
+{
+ version { major 0 minor 1 }
+
+ method ackConnect
+ {
+ in
+ {
+ UInt16 handle
+ am_connectionID_t connectionID
+ UInt16 ^error
+ }
+ }
+ method ackDisconnect
+ {
+ in
+ {
+ UInt16 handle
+ am_connectionID_t connectionID
+ UInt16 ^error
+ }
+ }
+ method ackSetSinkVolume
+ {
+ in
+ {
+ UInt16 handle
+ am_volume_t volume
+ UInt16 ^error
+ }
+ }
+ method ackSetSourceVolume
+ {
+ in
+ {
+ UInt16 handle
+ am_volume_t volume
+ UInt16 ^error
+ }
+ }
+ method ackSetSourceState
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method ackSetSinkSoundProperties
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method ackSetSinkSoundProperty
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method ackSetSourceSoundProperties
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method ackSetSourceSoundProperty
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method ackSourceVolumeTick
+ {
+ in
+ {
+ UInt16 handle
+ am_sourceID_t source
+ am_volume_t volume
+ }
+ }
+ method ackSinkVolumeTick
+ {
+ in
+ {
+ UInt16 handle
+ am_sinkID_t sink
+ am_volume_t volume
+ }
+ }
+ method ackCrossFading
+ {
+ in
+ {
+ UInt16 handle
+ am_HotSink_e hotSink
+ am_Error_e returnError
+ }
+ }
+ method peekDomain
+ {
+ in
+ {
+ String name
+ }
+
+ out
+ {
+ am_domainID_t domainID
+ am_Error_e ^error
+ }
+ }
+ method registerDomain
+ {
+ in
+ {
+ am_Domain_s domainData
+ String returnBusname
+ String returnPath
+ String returnInterface
+ }
+ out
+ {
+ am_domainID_t domainID
+ am_Error_e ^error
+ }
+ }
+ method deregisterDomain
+ {
+ in
+ {
+ am_domainID_t domainID
+ }
+ out
+ {
+ am_Error_e ^returnError
+ }
+ }
+ method registerGateway
+ {
+ in
+ {
+ am_Gateway_s gatewayData
+ }
+ out
+ {
+ am_gatewayID_t gatewayID
+ am_Error_e ^error
+ }
+ }
+ method deregisterGateway
+ {
+ in
+ {
+ am_gatewayID_t gatewayID
+ }
+ out
+ {
+ am_Error_e ^returnError
+ }
+ }
+ method peekSink
+ {
+ in
+ {
+ String name
+ }
+
+ out
+ {
+ am_sinkID_t sinkID
+ am_Error_e ^error
+ }
+ }
+ method registerSink
+ {
+ in
+ {
+ sinkData_s sinkData
+ }
+ out
+ {
+ am_sinkID_t sinkID
+ am_Error_e ^error
+ }
+ }
+ method deregisterSink
+ {
+ in
+ {
+ am_sinkID_t sinkID
+ }
+ out
+ {
+ am_Error_e ^returnError
+ }
+ }
+ method peekSource
+ {
+ in
+ {
+ String name
+ }
+
+ out
+ {
+ am_sourceID_t sourceID
+ am_Error_e ^error
+ }
+ }
+ method registerSource
+ {
+ in
+ {
+ sourceData_s sourceData
+ }
+ out
+ {
+ am_sourceID_t sourceID
+ am_Error_e ^error
+ }
+ }
+ method deregisterSource
+ {
+ in
+ {
+ am_sourceID_t sourceID
+ }
+ out
+ {
+ am_Error_e ^returnError
+ }
+ }
+ method registerCrossfader
+ {
+ in
+ {
+ crossfaderData_s crossfaderData
+ }
+ out
+ {
+ am_crossfaderID_t crossfaderID
+ am_Error_e ^error
+ }
+ }
+ method deregisterCrossfader
+ {
+ in
+ {
+ am_crossfaderID_t crossfaderID
+ }
+ out
+ {
+ am_Error_e ^returnError
+ }
+ }
+ method peekSourceClassID
+ {
+ in
+ {
+ String name
+ }
+
+ out
+ {
+ am_sourceClass_t sourceClassID
+ am_Error_e ^error
+ }
+ }
+ method peekSinkClassID
+ {
+ in
+ {
+ String name
+ }
+
+ out
+ {
+ am_sinkClass_t sinkClassID
+ am_Error_e ^error
+ }
+ }
+
+ method hookInterruptStatusChange
+ {
+ in
+ {
+ am_sourceID_t sourceID
+ UInt16 interruptState
+ }
+ }
+ method hookDomainRegistrationComplete
+ {
+ in
+ {
+ am_domainID_t domainID
+ }
+ }
+ method hookSinkAvailablityStatusChange
+ {
+ in
+ {
+ am_sinkID_t sinkID
+ am_Availability_s availability
+ }
+ }
+ method hookSourceAvailablityStatusChange
+ {
+ in
+ {
+ am_sourceID_t sourceID
+ am_Availability_s availability
+ }
+ }
+ method hookDomainStateChange
+ {
+ in
+ {
+ am_domainID_t domainID
+ am_DomainState_e domainState
+ }
+ }
+ method hookTimingInformationChanged
+ {
+ in
+ {
+ am_connectionID_t connectionID
+ Int16 delay
+ }
+ }
+ method sendChangedData
+ {
+ in
+ {
+ am_EarlyData_l earlyData_volumes
+ am_EarlyData_l earlyData_soundproperties
+ }
+ }
+ method confirmRoutingReady
+ {
+ in
+ {
+ am_domainID_t domainID
+ }
+ }
+
+ method confirmRoutingRundown
+ {
+ in
+ {
+ am_domainID_t domainID
+ }
+ }
+
+ method updateGateway
+ {
+ in
+ {
+ am_gatewayID_t gatewayID
+ am_ConnectionFormat_L listSourceFormats
+ am_ConnectionFormat_L listSinkFormats
+ bool_L convertionMatrix
+ }
+ }
+
+ method updateSink
+ {
+ in
+ {
+ am_sinkID_t sinkID
+ am_sinkClass_t sinkClassID
+ am_SoundProperty_L listSoundProperties
+ am_ConnectionFormat_L listConnectionFormats
+ am_MainSoundProperty_L listMainSoundProperties
+ }
+ }
+ method updateSource
+ {
+ in
+ {
+ am_sourceID_t sourceID
+ am_sourceClass_t sourceClassID
+ am_SoundProperty_L listSoundProperties
+ am_ConnectionFormat_L listConnectionFormats
+ am_MainSoundProperty_L listMainSoundProperties
+ }
+ }
+ method ackSetVolumes
+ {
+ in
+ {
+ UInt16 handle
+ am_Volumes_l listVolumes
+ UInt16 ^error
+ }
+ }
+ method ackSinkNotificationConfiguration
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method ackSourceNotificationConfiguration
+ {
+ in
+ {
+ UInt16 handle
+ UInt16 ^error
+ }
+ }
+ method hookSinkNotificationDataChange
+ {
+ in
+ {
+ am_sinkID_t sinkID
+ notificationPayload_s payload
+ }
+ }
+
+ method hookSourceNotificationDataChange
+ {
+ in
+ {
+ am_sourceID_t sourceID
+ notificationPayload_s payload
+ }
+ }
+
+ method getRoutingReadyState
+ {
+ out
+ {
+ Boolean readyState
+ }
+ }
+
+ broadcast setRoutingReady
+ {
+
+ }
+
+ broadcast setRoutingRundown
+ {
+
+ }
+
+} \ No newline at end of file
diff --git a/PluginRoutingInterfaceCAPI/fidl/RoutingSender.fidl b/PluginRoutingInterfaceCAPI/fidl/RoutingSender.fidl
new file mode 100755
index 0000000..035d96b
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/fidl/RoutingSender.fidl
@@ -0,0 +1,158 @@
+package org.genivi.audiomanager
+
+import org.genivi.audiomanager.am_gen.* from "amTypes.fidl"
+
+interface RoutingSender
+{
+ version { major 0 minor 1 }
+
+ method asyncSetSourceState
+ {
+ in
+ {
+ UInt16 handle
+ am_sourceID_t sourceID
+ am_SourceState_e sourceState
+ }
+ }
+
+ method setDomainState
+ {
+ in
+ {
+ am_domainID_t domainID
+ am_DomainState_e domainState
+ }
+ out
+ {
+ am_Error_e ^error
+ }
+ }
+ method asyncSetSourceVolume
+ {
+ in
+ {
+ am_handle_t handle
+ am_sourceID_t sourceID
+ am_volume_t volume
+ am_RampType_e ramp
+ am_time_t time
+ }
+ }
+ method asyncSetSinkVolume
+ {
+ in
+ {
+ am_handle_t handle
+ am_sinkID_t sinkID
+ am_volume_t volume
+ am_RampType_e ramp
+ am_time_t time
+ }
+ }
+ method asyncConnect
+ {
+ in
+ {
+ am_handle_t handle
+ am_connectionID_t connectionID
+ am_sourceID_t sourceID
+ am_sinkID_t sinkID
+ am_ConnectionFormat_e connectionFormat
+ }
+ }
+ method asyncDisconnect
+ {
+ in
+ {
+ am_handle_t handle
+ am_connectionID_t connectionID
+ }
+ }
+ method asyncAbort
+ {
+ in
+ {
+ am_handle_t handle
+ }
+ out
+ {
+ am_Error_e ^error
+ }
+ }
+ method asyncSetSinkSoundProperties
+ {
+ in
+ {
+ am_handle_t handle
+ am_sinkID_t sinkID
+ am_SoundProperty_L listSoundProperties
+ }
+ }
+ method asyncSetSinkSoundProperty
+ {
+ in
+ {
+ am_handle_t handle
+ am_sinkID_t sinkID
+ am_SoundProperty_s soundProperty
+ }
+ }
+ method asyncSetSourceSoundProperties
+ {
+ in
+ {
+ am_handle_t handle
+ am_sourceID_t sourceID
+ am_SoundProperty_L listSoundProperties
+ }
+ }
+ method asyncSetSourceSoundProperty
+ {
+ in
+ {
+ am_handle_t handle
+ am_sourceID_t sourceID
+ am_SoundProperty_s soundProperty
+ }
+
+ }
+ method asyncCrossFade
+ {
+ in
+ {
+ am_handle_t handle
+ am_crossfaderID_t crossfaderID
+ am_HotSink_e hotSink
+ am_RampType_e rampType
+ am_time_t time
+ }
+ }
+ method asyncSetVolumes
+ {
+ in
+ {
+ am_handle_t handle
+ am_Volumes_l volumes
+ }
+ }
+ method asyncSetSinkNotificationConfiguration
+ {
+ in
+ {
+ am_handle_t handle
+ am_sinkID_t sinkID
+ am_NotificationConfiguration_s notificationConfiguration
+ }
+ }
+ method asyncSetSourceNotificationConfiguration
+ {
+ in
+ {
+ am_handle_t handle
+ am_sourceID_t sourceID
+ am_NotificationConfiguration_s notificationConfiguration
+ }
+ }
+}
+
diff --git a/PluginRoutingInterfaceCAPI/fidl/amTypes.fidl b/PluginRoutingInterfaceCAPI/fidl/amTypes.fidl
new file mode 100755
index 0000000..60791c7
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/fidl/amTypes.fidl
@@ -0,0 +1,399 @@
+package org.genivi.audiomanager
+
+typeCollection am_gen
+{
+ typedef am_sourceID_t is UInt16
+ typedef am_sinkID_t is UInt16
+ typedef am_gatewayID_t is UInt16
+ typedef gongHandle is Int16
+ typedef am_sourceClass_t is UInt16
+ typedef am_sinkClass_t is UInt16
+ typedef am_volume_t is Int16
+ typedef am_mainVolume_t is Int16
+ typedef am_handle_t is UInt16
+ typedef am_time_t is UInt16
+ typedef am_connectionID_t is UInt16
+ typedef am_crossfaderID_t is UInt16
+
+
+ enumeration gp_indicatorDirection_e
+ {
+ INDICATOR_RIGHT ="0x00"
+ INDICATOR_LEFT="0x01"
+ INDICATOR_WARNING="0x02"
+ }
+
+ enumeration am_RampType_e
+ {
+ RAMP_UNKNOWN = "0x00"
+ RAMP_GENIVI_DIRECT = "0x01"
+ RAMP_GENIVI_NO_PLOP = "0x02"
+ RAMP_GENIVI_EXP_INV = "0x03"
+ RAMP_GENIVI_LINEAR = "0x04"
+ RAMP_GENIVI_EXP = "0x05"
+ RAMP_MAX = "0x06"
+ }
+
+ enumeration am_MuteState_e
+ {
+ MS_UNKNOWN = "0x00"
+ MS_MUTED = "0x01"
+ MS_UNMUTED = "0x02"
+ MS_MAX = "0x03"
+ }
+
+ enumeration am_SourceState_e
+ {
+ SS_UNKNNOWN = "0x00"
+ SS_ON = "0x01"
+ SS_OFF = "0x02"
+ SS_PAUSED = "0x03"
+ SS_MAX = "0x04"
+ }
+ enumeration am_Error_e
+ {
+ E_OK = "0x00"
+ E_UNKNOWN = "0x01"
+ E_OUT_OF_RANGE = "0x02"
+ E_NOT_USED = "0x03"
+ E_DATABASE_ERROR = "0x04"
+ E_ALREADY_EXISTS = "0x05"
+ E_NO_CHANGE = "0x06"
+ E_NOT_POSSIBLE = "0x07"
+ E_NON_EXISTENT = "0x08"
+ E_ABORTED = "0x09"
+ E_WRONG_FORMAT = "0xA"
+ E_MAX = "0xB"
+ }
+
+ enumeration am_DomainState_e
+ {
+
+ DS_UNKNOWN = "0"
+ DS_CONTROLLED = "1"
+ DS_INDEPENDENT_STARTUP = "2"
+ DS_INDEPENDENT_RUNDOWN = "3"
+ DS_MAX = "4"
+ }
+
+ enumeration gongType_e
+ {
+ AT_NUN = "0x01"
+ AT_POC = "0x02"
+ AT_QUE = "0x03"
+ AT_IWA = "0x04"
+ AT_WA = "0x05"
+ AT_ETC_F = "0x06"
+ AT_ETC_F2 = "0x07"
+ AT_ETC_ST = "0x08"
+ AT_ETC_S = "0x09"
+ AT_REV = "0x0A"
+ AT_ESU = "0x0B"
+ AT_ESD = "0x0C"
+ AT_DG = "0x0D"
+ AT_SG = "0x0E"
+ AT_IDG = "0x0F"
+ AT_ION = "0x10"
+ AT_IOFF = "0x11"
+ AT_FBS = "0x12"
+ AT_VFS = "0x13"
+ AT_GES = "0x14"
+ AT_UEE = "0x15"
+ }
+
+ enumeration am_EarlyDataType_e
+ {
+ ED_UNKNOWN = "0x00"
+ ED_SOURCE_VOLUME = "0x01"
+ ED_SINK_VOLUME = "0x02"
+ ED_SOURCE_PROPERTY = "0x03"
+ ED_SINK_PROPERTY = "0x04"
+ ED_MAX = "0x05"
+ }
+
+ enumeration gp_indicatorStatus_e
+ {
+ IS_ON = "0x00"
+ IS_OFF = "0x01"
+ }
+
+ enumeration gongStatus_e
+ {
+ NOT_PLAYING = "0x00"
+ PLAYING = "0x01"
+ INTERRUPTED = "0x02"
+ }
+
+ enumeration gongError_e
+ {
+ SUCCESS = "0x00"
+ ERROR = "0x01"
+ LOW_PRIORITY = "0x02"
+ }
+
+ enumeration gongClass_e
+ {
+ GONGCLASS_1 = "0x01"
+ GONGCLASS_2 = "0x02"
+ GONGCLASS_PDC = "0x03"
+ GONGCLASS_TURN = "0x04"
+ GONGCLASS_OBSTACLE = "0x05"
+ }
+
+ enumeration sampleSet_e
+ {
+ setBMW = "0x00"
+ setMini = "0x01"
+ setRR = "0x02"
+ }
+
+ enumeration am_Availability_e
+ {
+ A_UNKNOWN = "0x00"
+ A_AVAILABLE = "0x01"
+ A_UNAVAILABLE = "0x02"
+ A_MAX = "0x03"
+ }
+ enumeration am_AvailabilityReason_e
+ {
+ AR_UNKNOWN = "0x00"
+ AR_GENIVI_NEWMEDIA = "0x01"
+ AR_GENIVI_SAMEMEDIA = "0x02"
+ AR_GENIVI_NOMEDIA = "0x03"
+ AR_GENIVI_TEMPERATURE = "0x04"
+ AR_GENIVI_VOLTAGE = "0x05"
+ AR_GENIVI_ERRORMEDIA = "0x06"
+ AR_MAX = "0x07"
+ }
+
+ enumeration am_InterruptState_e
+ {
+ IS_UNKNOWN = "0x00"
+ IS_OFF = "0x01"
+ IS_INTERRUPTED = "0x02"
+ IS_MAX = "0x03"
+ }
+
+ enumeration am_SoundPropertyType_e
+ {
+ SP_UNKNOWN = "0x00"
+ SP_EXAMPLE_TREBLE = "0x01"
+ SP_EXAMPLE_MID = "0x02"
+ SP_EXAMPLE_BASS = "0x03"
+ SP_ENTER_SINKID = "0x04"
+ SP_INTERR_SUPERSEEDINGID = "0x05"
+ SP_INTERR_OVERLAYID = "0x06"
+ SP_PRIORITY = "0x07"
+ SP_MAX = "0x08"
+ }
+
+ enumeration am_ConnectionFormat_e
+ {
+ CF_UNKNOWN = "0x00"
+ CF_GENIVI_MONO = "0x01"
+ CF_GENIVI_STEREO = "0x02"
+ CF_GENIVI_ANALOG = "0x03"
+ CF_GENIVI_AUTO = "0x04"
+ CF_MAX = "0x05"
+ }
+ array am_ConnectionFormat_L of am_ConnectionFormat_e
+
+ enumeration am_MainSoundPropertyType_e
+ {
+ MSP_UNKNOWN = "0x00"
+ MSP_EXAMPLE_TREBLE = "0x01"
+ MSP_EXAMPLE_MID = "0x02"
+ MSP_EXAMPLE_BASS = "0x03"
+ MSP_SOURCE_TYPE = "0x04"
+ MSP_MAX = "0x05"
+ }
+
+ enumeration am_NotificationType_e
+ {
+ NT_UNKNOWN = "0x00"
+ NT_LOUDNESS = "0x01"
+ NT_MAX = "0x02"
+ }
+
+ enumeration am_NotificationStatus_e
+ {
+ NS_UNKNOWN = "0x00"
+ NS_OFF = "0x01"
+ NS_PERIODIC = "0x02"
+ NS_MINIMUM = "0x03"
+ NS_MAXIMUM = "0x04"
+ NS_CHANGE = "0x05"
+ NS_MAX = "0x06"
+ }
+
+ enumeration am_HotSink_e
+ {
+ HS_UNKNOWN = "0x00"
+ HS_SINKA = "0x01"
+ HS_SINKB = "0x02"
+ HS_INTERMEDIATE = "0x03"
+ HS_MAX = "0x04"
+ }
+
+ enumeration am_VolumeType_e
+ {
+ VT_UNKNOWN = "0x00"
+ VT_SINK = "0x01"
+ VT_SOURCE = "0x02"
+ VT_MAX = "0x03"
+ }
+
+ struct distanceInformation_s
+ {
+ Int32 FrontLeft
+ Int32 FrontRight
+ Int32 RearLeft
+ Int32 RearRight
+ }
+
+ struct sampleNames_s
+ {
+ sampleSet_e sample
+ String sampleName
+ } array listSampleNamesL of sampleNames_s
+
+ typedef am_domainID_t is UInt16
+
+ struct am_Domain_s
+ {
+ am_domainID_t domainID
+ String name
+ String busname
+ String nodename
+ Boolean early
+ Boolean complete
+ am_DomainState_e ^state
+ }
+
+ struct am_Volumes_s
+ {
+ am_VolumeType_e volumeType
+ am_DataType_u volumeID
+ am_volume_t volume
+ am_RampType_e ramp
+ am_time_t time
+ }
+ array am_Volumes_l of am_Volumes_s
+
+ struct notificationPayload_s
+ {
+ Int16 type
+ Int16 payload
+ }
+
+ struct am_Availability_s
+ {
+ am_Availability_e availability
+ am_AvailabilityReason_e availabilityReason
+ }
+
+ struct am_SoundProperty_s
+ {
+ am_SoundPropertyType_e type
+ Int16 value
+ }
+ array am_SoundProperty_L of am_SoundProperty_s
+
+ struct am_MainSoundProperty_s
+ {
+ am_MainSoundPropertyType_e type
+ Int16 value
+ }
+ array am_MainSoundProperty_L of am_MainSoundProperty_s
+
+ struct am_NotificationConfiguration_s
+ {
+ am_NotificationType_e type
+ am_NotificationStatus_e status
+ Int16 parameter
+ }
+ array am_NotificationConfiguration_L of am_NotificationConfiguration_s
+
+
+ array bool_L of Boolean
+
+ struct sourceData_s
+ {
+ am_sourceID_t sourceID
+ am_domainID_t domainID
+ String name
+ am_sourceClass_t sourceClassID
+ am_SourceState_e sourceState
+ am_volume_t volume
+ Boolean visible
+ am_Availability_s available
+ am_InterruptState_e interruptState
+ am_SoundProperty_L listSoundProperties
+ am_ConnectionFormat_L listConnectionFormats
+ am_MainSoundProperty_L listMainSoundProperties
+ am_NotificationConfiguration_L listMainNotificationConfigurations
+ am_NotificationConfiguration_L listNotificationConfigurations
+ }
+
+ struct sinkData_s
+ {
+ am_sinkID_t sinkID
+ String name
+ am_domainID_t domainID
+ am_sinkClass_t sinkClassID
+ am_volume_t volume
+ Boolean visible
+ am_Availability_s available
+ am_MuteState_e muteState
+ am_mainVolume_t mainVolume
+ am_SoundProperty_L listSoundProperties
+ am_ConnectionFormat_L listConnectionFormats
+ am_MainSoundProperty_L listMainSoundProperties
+ am_NotificationConfiguration_L listMainNotificationConfigurations
+ am_NotificationConfiguration_L listNotificationConfigurations
+ }
+
+ struct crossfaderData_s
+ {
+ am_crossfaderID_t crossfaderID
+ String name
+ am_sinkID_t sinkID_A
+ am_sinkID_t sinkID_B
+ am_sourceID_t sourceID
+ am_HotSink_e hotSink
+ }
+
+ struct am_Gateway_s
+ {
+ am_gatewayID_t gatewayID
+ String name
+ am_sinkID_t sinkID
+ am_sourceID_t sourceID
+ am_domainID_t domainSinkID
+ am_domainID_t domainSourceID
+ am_domainID_t controlDomainID
+ am_ConnectionFormat_L listSourceFormats
+ am_ConnectionFormat_L listSinkFormats
+ bool_L convertionMatrix
+ }
+
+ struct am_EarlyData_s
+ {
+ am_EarlyDataType_e type
+ am_DataType_u sinksource
+ am_EarlyData_u data
+
+ }
+ array am_EarlyData_l of am_EarlyData_s
+ union am_EarlyData_u
+ {
+ am_volume_t volume
+ am_SoundProperty_s soundProperty
+
+ }
+ union am_DataType_u
+ {
+ am_sinkID_t sink
+ am_sourceID_t source
+ }
+} \ No newline at end of file
diff --git a/PluginRoutingInterfaceCAPI/fidl/deployment.fdepl b/PluginRoutingInterfaceCAPI/fidl/deployment.fdepl
new file mode 100644
index 0000000..3846ed4
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/fidl/deployment.fdepl
@@ -0,0 +1,9 @@
+specification org.genivi.commonapi.core.deployment.deployment {
+ for interfaces {
+ DefaultEnumBackingType: {UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64} (default: UInt32);
+ }
+
+ for enumerations {
+ EnumBackingType: {UseDefault, UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64} (default: UseDefault);
+ }
+}
diff --git a/PluginRoutingInterfaceCAPI/include/CAmLookupData.h b/PluginRoutingInterfaceCAPI/include/CAmLookupData.h
new file mode 100644
index 0000000..c3bf93c
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/include/CAmLookupData.h
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAMLOOKUPDATA_H_
+#define CAMLOOKUPDATA_H_
+
+#include <map>
+#include <iostream>
+#include <cassert>
+#include <memory>
+#include <CommonAPI/CommonAPI.h>
+#include "audiomanagertypes.h"
+#include <org/genivi/audiomanager/RoutingSenderProxy.h>
+
+#ifdef UNIT_TEST
+#include "../test/IAmRoutingSenderBackdoor.h" //we need this for the unit test
+#endif
+
+namespace am {
+
+using namespace CommonAPI;
+using namespace org::genivi::audiomanager;
+
+/** A structure holding info for given domain.
+ * For every domain a single instance is created which is used by the lookup methods.
+ */
+
+struct rs_lookupData_s
+{
+private:
+ bool mIsConnected; //!< bool indicating whether the domain is reachable or not
+ std::shared_ptr<RoutingSenderProxy<>> mSenderProxy; //!< a pointer to the proxy object, which implements the connection out from AudioManager
+ CommonAPI::ProxyStatusEvent::Subscription mSubscription; //!< subscription for the proxy system events
+ void onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus); //!< proxy status event callback
+public:
+ rs_lookupData_s(const std::shared_ptr<RoutingSenderProxy<> > & aProxy);
+ ~rs_lookupData_s();
+
+ /**
+ * returns the proxy object.
+ */
+ std::shared_ptr<RoutingSenderProxy<>> & getProxy();
+ /**
+ * returns whether the proxy object is connected or not.
+ */
+ bool isConnected();
+ /**
+ * proxy wrapping methods.
+ */
+ am_Error_e asyncAbort(const uint16_t handle, RoutingSenderProxyBase::AsyncAbortAsyncCallback);
+ am_Error_e asyncConnect(const uint16_t handle, const am_connectionID_t, const am_sourceID_t, const am_sinkID_t, const am_ConnectionFormat_e, RoutingSenderProxyBase::AsyncConnectAsyncCallback);
+ am_Error_e asyncDisconnect(const uint16_t handle, const am_connectionID_t, RoutingSenderProxyBase::AsyncDisconnectAsyncCallback);
+ am_Error_e asyncSetSinkVolume(const uint16_t handle, const am_sinkID_t, const am_volume_t, const am_RampType_e, const am_time_t, RoutingSenderProxyBase::AsyncSetSinkVolumeAsyncCallback);
+ am_Error_e asyncSetSourceVolume(const uint16_t handle, const am_sourceID_t , const am_volume_t, const am_RampType_e, const am_time_t, RoutingSenderProxyBase::AsyncSetSourceVolumeAsyncCallback);
+ am_Error_e asyncSetSourceState(const uint16_t handle, const am_sourceID_t, const am_SourceState_e, RoutingSenderProxyBase::AsyncSetSourceStateAsyncCallback);
+ am_Error_e asyncSetSinkSoundProperties(const uint16_t handle, const am_sinkID_t, const std::vector<am_SoundProperty_s>&, RoutingSenderProxyBase::AsyncSetSinkSoundPropertiesAsyncCallback);
+ am_Error_e asyncSetSinkSoundProperty(const uint16_t handle, const am_sinkID_t, const am_SoundProperty_s&, RoutingSenderProxyBase::AsyncSetSinkSoundPropertyAsyncCallback);
+ am_Error_e asyncSetSourceSoundProperties(const uint16_t handle, const am_sourceID_t, const std::vector<am_SoundProperty_s>&, RoutingSenderProxyBase::AsyncSetSourceSoundPropertiesAsyncCallback);
+ am_Error_e asyncSetSourceSoundProperty(const uint16_t handle, const am_sourceID_t, const am_SoundProperty_s&, RoutingSenderProxyBase::AsyncSetSourceSoundPropertyAsyncCallback);
+ am_Error_e asyncCrossFade(const uint16_t handle, const am_crossfaderID_t, const am_HotSink_e, const am_RampType_e, const am_time_t, RoutingSenderProxyBase::AsyncCrossFadeAsyncCallback);
+ am_Error_e setDomainState(const am_domainID_t, const am_DomainState_e, RoutingSenderProxyBase::SetDomainStateAsyncCallback);
+ am_Error_e asyncSetVolumes(const uint16_t handle, const std::vector<am_Volumes_s>&, RoutingSenderProxyBase::AsyncSetVolumesAsyncCallback);
+ am_Error_e asyncSetSinkNotificationConfiguration(const uint16_t handle, const am_sinkID_t, const am_NotificationConfiguration_s&, RoutingSenderProxyBase::AsyncSetSinkNotificationConfigurationAsyncCallback);
+ am_Error_e asyncSetSourceNotificationConfiguration(const uint16_t handle, const am_sourceID_t, const am_NotificationConfiguration_s&, RoutingSenderProxyBase::AsyncSetSourceNotificationConfigurationAsyncCallback);
+};
+
+
+/**
+ * The class encapsulate the lookup mechanism and forwards the invocations to the appropriate lookup objects ( proxies ).
+ */
+class CAmLookupData {
+
+ typedef std::shared_ptr<rs_lookupData_s> RSLookupDataPtr;
+ /**
+ * Lookup maps.
+ */
+ typedef std::map<am_domainID_t,RSLookupDataPtr> mapDomain_t;
+ typedef std::map<am_sinkID_t,RSLookupDataPtr> mapSinks_t;
+ typedef std::map<am_sourceID_t,RSLookupDataPtr> mapSources_t;
+ typedef std::map<am_connectionID_t,RSLookupDataPtr> mapConnections_t;
+ typedef std::map<uint16_t,RSLookupDataPtr> mapHandles_t;
+ typedef std::map<am_crossfaderID_t,RSLookupDataPtr> mapCrossfaders_t;
+
+ mapDomain_t mMapDomains;
+ mapSinks_t mMapSinks;
+ mapSources_t mMapSources;
+ mapConnections_t mMapConnections;
+ mapHandles_t mMapHandles;
+ mapCrossfaders_t mMapCrossfaders;
+
+ /** \brief returns the value for given key if exists.
+ *
+ * @param key is a search key.
+ * @param map is a either domain, sink, source, connection, crossfader or handle map.
+ */
+ template <typename TKey> static const RSLookupDataPtr getValueForKey(const TKey & key, const std::map<TKey,RSLookupDataPtr> & map);
+
+ /** \brief removes all entries which contains given value.
+ *
+ * @param value is a search value.
+ * @param map is a either domain, sink, source, connection, crossfader or handle map.
+ */
+ template <typename TKey> static void removeEntriesForValue(const RSLookupDataPtr & value, std::map<TKey,RSLookupDataPtr> & map);
+
+public:
+ CAmLookupData();
+ virtual ~CAmLookupData();
+ /** \brief adds a lookup for given domain.
+ *
+ * @param domainID is a valid domain id.
+ * @param aProxy is a proxy object constructed by registerDomain
+ */
+ void addDomainLookup(am_domainID_t & domainID,
+ std::shared_ptr<RoutingSenderProxy<>> & aProxy);
+
+ /** \brief removes given handle from the list.
+ *
+ */
+ void removeHandle(uint16_t handle);
+
+ /** \brief adds a lookup for given source in a given domain.
+ *
+ * @param sourceID is a valid source id.
+ * @param domainID is a valid domain id
+ */
+ void addSourceLookup(am_sourceID_t sourceID, am_domainID_t domainID);
+
+ /** \brief adds a lookup for given sink in a given domain.
+ *
+ * @param sinkID is a valid sink id.
+ * @param domainID is a valid domain id
+ */
+ void addSinkLookup(am_sinkID_t sinkID, am_domainID_t domainID);
+
+ /** \brief adds a lookup for given crossfader in the domain wherein the given source belongs to.
+ *
+ * @param crossfaderID is a valid crossfader id.
+ * @param soucreID is a valid source id
+ */
+ void addCrossfaderLookup(am_crossfaderID_t crossfaderID, am_sourceID_t soucreID);
+
+ /** \brief removes a given domain lookup.
+ */
+ void removeDomainLookup(am_domainID_t domainID);
+
+ /** \brief removes a given source lookup.
+ */
+ void removeSourceLookup(am_sourceID_t sourceID);
+
+ /** \brief removes a given sink lookup.
+ */
+ void removeSinkLookup(am_sinkID_t sinkID);
+
+ /** \brief removes a given crossfader lookup.
+ */
+ void removeCrossfaderLookup(am_crossfaderID_t crossfaderID);
+
+ /** \brief removes a given connection lookup.
+ */
+ void removeConnectionLookup(am_connectionID_t connectionID);
+
+ size_t numberOfDomains() { return mMapDomains.size(); }
+
+ static const char * BUS_NAME;
+
+ /**
+ * Wrapping methods.
+ */
+ am_Error_e asyncAbort(const uint16_t, RoutingSenderProxyBase::AsyncAbortAsyncCallback);
+ am_Error_e asyncConnect(const uint16_t , const am_connectionID_t, const am_sourceID_t, const am_sinkID_t, const am_ConnectionFormat_e, RoutingSenderProxyBase::AsyncConnectAsyncCallback);
+ am_Error_e asyncDisconnect(const uint16_t , const am_connectionID_t, RoutingSenderProxyBase::AsyncDisconnectAsyncCallback);
+ am_Error_e asyncSetSinkVolume(const uint16_t , const am_sinkID_t, const am_volume_t, const am_RampType_e, const am_time_t, RoutingSenderProxyBase::AsyncSetSinkVolumeAsyncCallback);
+ am_Error_e asyncSetSourceVolume(const uint16_t , const am_sourceID_t , const am_volume_t, const am_RampType_e, const am_time_t, RoutingSenderProxyBase::AsyncSetSourceVolumeAsyncCallback);
+ am_Error_e asyncSetSourceState(const uint16_t , const am_sourceID_t, const am_SourceState_e, RoutingSenderProxyBase::AsyncSetSourceStateAsyncCallback);
+ am_Error_e asyncSetSinkSoundProperties(const uint16_t , const am_sinkID_t, const std::vector<am_SoundProperty_s>&, RoutingSenderProxyBase::AsyncSetSinkSoundPropertiesAsyncCallback);
+ am_Error_e asyncSetSinkSoundProperty(const uint16_t , const am_sinkID_t, const am_SoundProperty_s&, RoutingSenderProxyBase::AsyncSetSinkSoundPropertyAsyncCallback);
+ am_Error_e asyncSetSourceSoundProperties(const uint16_t , const am_sourceID_t, const std::vector<am_SoundProperty_s>&, RoutingSenderProxyBase::AsyncSetSourceSoundPropertiesAsyncCallback);
+ am_Error_e asyncSetSourceSoundProperty(const uint16_t , const am_sourceID_t, const am_SoundProperty_s&, RoutingSenderProxyBase::AsyncSetSourceSoundPropertyAsyncCallback);
+ am_Error_e asyncCrossFade(const uint16_t , const am_crossfaderID_t, const am_HotSink_e, const am_RampType_e, const am_time_t, RoutingSenderProxyBase::AsyncCrossFadeAsyncCallback);
+ am_Error_e setDomainState(const am_domainID_t, const am_DomainState_e, RoutingSenderProxyBase::SetDomainStateAsyncCallback);
+ am_Error_e asyncSetVolumes(const uint16_t , const std::vector<am_Volumes_s>&, RoutingSenderProxyBase::AsyncSetVolumesAsyncCallback);
+ am_Error_e asyncSetSinkNotificationConfiguration(const uint16_t , const am_sinkID_t, const am_NotificationConfiguration_s&, RoutingSenderProxyBase::AsyncSetSinkNotificationConfigurationAsyncCallback);
+ am_Error_e asyncSetSourceNotificationConfiguration(const uint16_t , const am_sourceID_t, const am_NotificationConfiguration_s&, RoutingSenderProxyBase::AsyncSetSourceNotificationConfigurationAsyncCallback);
+#ifdef UNIT_TEST
+ friend class IAmRoutingSenderBackdoor;
+#endif
+};
+
+} /* namespace am */
+#endif /* CAMLOOKUPDATA_H_ */
diff --git a/PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCAPI.h b/PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCAPI.h
new file mode 100644
index 0000000..dc7f081
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCAPI.h
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAPIROUTINGSENDER_H_
+#define CAPIROUTINGSENDER_H_
+
+#include "routing/IAmRoutingSend.h"
+#include "shared/CAmCommonAPIWrapper.h"
+#include "CAmRoutingService.h"
+#include "CAmLookupData.h"
+
+#ifdef UNIT_TEST
+#include "../test/IAmRoutingSenderBackdoor.h" //we need this for the unit test
+#endif
+
+namespace am
+{
+using namespace CommonAPI;
+using namespace org::genivi::audiomanager;
+
+#define ROUTING_NODE "routinginterface"
+
+class CAmRoutingSenderCAPI: public IAmRoutingSend
+{
+ bool mIsServiceStarted;
+ bool mReady; ///< bool indicating whether the plugin have got
+ CAmLookupData mLookupData; ///< an object which implements the lookup mechanism
+ CAmCommonAPIWrapper *mpCAmCAPIWrapper; ///< pointer to the common-api wrapper
+ IAmRoutingReceive *mpIAmRoutingReceive; ///< pointer to the routing receive interface
+ std::shared_ptr<CAmRoutingService> mService; ///< shared pointer to the routing service implementation
+ CAmRoutingSenderCAPI();
+public:
+ CAmRoutingSenderCAPI(CAmCommonAPIWrapper *aWrapper) ;
+ virtual ~CAmRoutingSenderCAPI();
+
+ /** \brief starts the plugin - registers the routing interface service.
+ *
+ * @param pIAmRoutingReceive pointer to the routing receive interface.
+ */
+ am_Error_e startService(IAmRoutingReceive* pIAmRoutingReceive);
+
+ /** \brief interface method which calls startService.
+ *
+ * @param pIAmRoutingReceive pointer to the routing receive interface.
+ */
+ am_Error_e startupInterface(IAmRoutingReceive* pIAmRoutingReceive);
+
+ /** \brief stops the service - deregister the routing interface service.
+ *
+ * @param pIAmRoutingReceive pointer to the routing receive interface.
+ */
+ am_Error_e tearDownInterface(IAmRoutingReceive*);
+
+ /** \brief sets and annotates the service ready state.
+ *
+ */
+ void setRoutingReady(const uint16_t handle);
+
+ /** \brief sets and annotates the service rundown state.
+ *
+ */
+ void setRoutingRundown(const uint16_t handle);
+ am_Error_e asyncAbort(const am_Handle_s handle);
+ am_Error_e asyncConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_ConnectionFormat_e connectionFormat);
+ am_Error_e asyncDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID);
+ am_Error_e asyncSetSinkVolume(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time);
+ am_Error_e asyncSetSourceVolume(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time);
+ am_Error_e asyncSetSourceState(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SourceState_e state);
+ am_Error_e asyncSetSinkSoundProperties(const am_Handle_s handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties);
+ am_Error_e asyncSetSinkSoundProperty(const am_Handle_s handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty);
+ am_Error_e asyncSetSourceSoundProperties(const am_Handle_s handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties);
+ am_Error_e asyncSetSourceSoundProperty(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty);
+ am_Error_e asyncCrossFade(const am_Handle_s handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_RampType_e rampType, const am_time_t time);
+ am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState);
+ am_Error_e returnBusName(std::string& BusName) const;
+ void getInterfaceVersion(std::string& version) const;
+ am_Error_e asyncSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes) ;
+ am_Error_e asyncSetSinkNotificationConfiguration(const am_Handle_s handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) ;
+ am_Error_e asyncSetSourceNotificationConfiguration(const am_Handle_s handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) ;
+
+ static const char * ROUTING_INTERFACE_SERVICE;
+#ifdef UNIT_TEST
+ friend class IAmRoutingSenderBackdoor;
+#endif
+
+};
+}
+
+#endif /* CAPIROUTINGSENDER_H_ */
diff --git a/PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCommon.h b/PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCommon.h
new file mode 100644
index 0000000..63c9ea8
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/include/CAmRoutingSenderCommon.h
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAMROUTINGSENDERCOMMON_H_
+#define CAMROUTINGSENDERCOMMON_H_
+
+#include <memory>
+#include "audiomanagertypes.h"
+#include <org/genivi/audiomanager/am_gen.h>
+
+using namespace am;
+using namespace org::genivi::audiomanager;
+using namespace CommonAPI;
+
+/**
+ * Utility functions
+ */
+extern void CAmConvertCAPI2AM(const am_gen::am_Domain_s &, am_Domain_s &);
+extern void CAmConvertCAPI2AM(const am_gen::sourceData_s & , am::am_Source_s & );
+extern void CAmConvertCAPI2AM(const am_gen::sinkData_s & , am::am_Sink_s & );
+extern void CAmConvertCAPI2AM(const am_gen::am_Availability_s & , am_Availability_s & );
+extern void CAmConvertCAPI2AM(const am_gen::am_SoundProperty_s &, am::am_SoundProperty_s &);
+extern void CAmConvertCAPI2AM(const am_gen::am_MainSoundProperty_s &, am::am_MainSoundProperty_s & );
+extern void CAmConvertCAPI2AM(const am_gen::am_NotificationConfiguration_s & , am::am_NotificationConfiguration_s & );
+extern void CAmConvertCAPI2AM(const am_gen::am_Gateway_s & , am::am_Gateway_s & );
+extern void CAmConvertCAPI2AM(const am_gen::crossfaderData_s & , am::am_Crossfader_s & );
+extern void CAmConvertCAPI2AM(const am_gen::am_EarlyData_s & , am::am_EarlyData_s & );
+extern void CAmConvertCAPI2AM(const am_gen::am_EarlyData_u &, am::am_EarlyData_u & );
+extern void CAmConvertCAPI2AM(const am_gen::am_DataType_u & , am::am_DataType_u & );
+extern void CAmConvertCAPI2AM(const am_gen::am_Volumes_s &, am::am_Volumes_s &);
+extern void CAmConvertCAPI2AM(const am_gen::notificationPayload_s & , am::am_NotificationPayload_s & );
+extern void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_NotificationConfiguration_s> & , std::vector<am::am_NotificationConfiguration_s> & );
+extern void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_SoundProperty_s> &, std::vector<am::am_SoundProperty_s> &);
+extern void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_ConnectionFormat_e> &, std::vector<am::am_ConnectionFormat_e> & );
+extern void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_MainSoundProperty_s> &, std::vector<am::am_MainSoundProperty_s> & );
+extern void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_Volumes_s> &, std::vector<am::am_Volumes_s> & );
+
+extern void CAmConvertAM2CAPI(const am_Availability_s & , am_gen::am_Availability_s & );
+extern void CAmConvertAM2CAPI(const am::am_SoundProperty_s &, am_gen::am_SoundProperty_s &);
+extern void CAmConvertAM2CAPI(const am::am_NotificationConfiguration_s &, am_gen::am_NotificationConfiguration_s &);
+extern void CAmConvertAM2CAPI(const am::am_Volumes_s &, am_gen::am_Volumes_s &);
+extern void CAmConvertAMVector2CAPI(const std::vector<am::am_SoundProperty_s> &, std::vector<am_gen::am_SoundProperty_s> &);
+extern void CAmConvertAMVector2CAPI(const std::vector<am::am_Volumes_s> & , std::vector<am_gen::am_Volumes_s> & );
+
+#endif /* CAMROUTINGSENDERCOMMON_H_ */
diff --git a/PluginRoutingInterfaceCAPI/include/CAmRoutingService.h b/PluginRoutingInterfaceCAPI/include/CAmRoutingService.h
new file mode 100644
index 0000000..d4d1382
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/include/CAmRoutingService.h
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAMROUTINGSERVICE_H_
+#define CAMROUTINGSERVICE_H_
+
+#include <org/genivi/audiomanager/RoutingInterfaceStubDefault.h>
+#include "../../include/routing/IAmRoutingReceive.h"
+#include "CAmLookupData.h"
+
+namespace am {
+
+class CAmCommonAPIWrapper;
+
+using namespace CommonAPI;
+using namespace org::genivi::audiomanager;
+
+/** Routing interface stub implementation.
+ * This class is the routing interface service for the Audio Manager.
+ */
+class CAmRoutingService: public RoutingInterfaceStubDefault {
+ CAmCommonAPIWrapper *mpCAmCAPIWrapper; ///< pointer to common-api wrapper
+ IAmRoutingReceive* mpIAmRoutingReceive; ///< pointer to the routing receive interface
+ CAmLookupData* mpLookpData; ///< pointer to the plugin's lookup mechanism implementation
+ int16_t mNumberDomains; ///< int number of registred domains
+ uint16_t mHandle; ///< unsigned current handle
+ bool mReady; ///< bool whether the service is in ready state or not
+ CAmRoutingService();
+public:
+
+ CAmRoutingService(IAmRoutingReceive *aReceiver, CAmLookupData* aLookpData, CAmCommonAPIWrapper *aCAPIWrapper);
+ virtual ~CAmRoutingService();
+
+
+ /** Stub overwritten methods.
+ *
+ */
+
+ virtual void ackConnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error);
+
+ virtual void ackDisconnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error);
+
+ virtual void ackSetSinkVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error);
+
+ virtual void ackSetSourceVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error);
+
+ virtual void ackSetSourceState(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSinkSoundProperties(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSinkSoundProperty(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSourceSoundProperties(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSourceSoundProperty(uint16_t handle, uint16_t error);
+
+ virtual void ackCrossFading(uint16_t handle, am_gen::am_HotSink_e hotSink, am_gen::am_Error_e returnError);
+
+ virtual void ackSourceVolumeTick(uint16_t handle, am_gen::am_sourceID_t source, am_gen::am_volume_t volume);
+
+ virtual void ackSinkVolumeTick(uint16_t handle, am_gen::am_sinkID_t sink, am_gen::am_volume_t volume);
+
+ virtual void peekDomain(std::string name, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+
+ virtual void registerDomain(am_gen::am_Domain_s domainData, std::string returnBusname, std::string returnPath, std::string returnInterface, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+
+ virtual void deregisterDomain(am_gen::am_domainID_t domainID, am_gen::am_Error_e& returnError);
+
+ virtual void registerGateway(am_gen::am_Gateway_s gatewayData, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error);
+
+ virtual void deregisterGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_Error_e& returnError);
+
+ virtual void peekSink(std::string name, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+
+ virtual void registerSink(am_gen::sinkData_s sinkData, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+
+ virtual void deregisterSink(am_gen::am_sinkID_t sinkID, am_gen::am_Error_e& returnError);
+
+ virtual void peekSource(std::string name, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+
+ virtual void registerSource(am_gen::sourceData_s sourceData, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+
+ virtual void deregisterSource(am_gen::am_sourceID_t sourceID, am_gen::am_Error_e& returnError);
+
+ virtual void registerCrossfader(am_gen::crossfaderData_s crossfaderData, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error);
+
+ virtual void deregisterCrossfader(am_gen::am_crossfaderID_t crossfaderID, am_gen::am_Error_e& returnError);
+
+ virtual void peekSourceClassID(std::string name, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error);
+
+ virtual void peekSinkClassID(std::string name, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error);
+
+ virtual void hookInterruptStatusChange(am_gen::am_sourceID_t sourceID, uint16_t interruptState);
+
+ virtual void hookDomainRegistrationComplete(am_gen::am_domainID_t domainID);
+
+ virtual void hookSinkAvailablityStatusChange(am_gen::am_sinkID_t sinkID, am_gen::am_Availability_s availability);
+
+ virtual void hookSourceAvailablityStatusChange(am_gen::am_sourceID_t sourceID, am_gen::am_Availability_s availability);
+
+ virtual void hookDomainStateChange(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState);
+
+ virtual void hookTimingInformationChanged(am_gen::am_connectionID_t connectionID, int16_t delay);
+
+ virtual void sendChangedData(am_gen::am_EarlyData_l earlyData_volumes, am_gen::am_EarlyData_l earlyData_soundproperties);
+
+ virtual void confirmRoutingReady(am_gen::am_domainID_t domainID);
+
+ virtual void confirmRoutingRundown(am_gen::am_domainID_t domainID);
+
+ virtual void updateGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_ConnectionFormat_L listSourceFormats, am_gen::am_ConnectionFormat_L listSinkFormats, am_gen::bool_L convertionMatrix);
+
+ virtual void updateSink(am_gen::am_sinkID_t sinkID, am_gen::am_sinkClass_t sinkClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties);
+
+ virtual void updateSource(am_gen::am_sourceID_t sourceID, am_gen::am_sourceClass_t sourceClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties);
+
+ virtual void ackSetVolumes(uint16_t handle, am_gen::am_Volumes_l listVolumes, uint16_t error);
+
+ virtual void ackSinkNotificationConfiguration(uint16_t handle, uint16_t error);
+
+ virtual void ackSourceNotificationConfiguration(uint16_t handle, uint16_t error);
+
+ virtual void hookSinkNotificationDataChange(am_gen::am_sinkID_t sinkID, am_gen::notificationPayload_s payload);
+
+ virtual void hookSourceNotificationDataChange(am_gen::am_sourceID_t sourceID, am_gen::notificationPayload_s payload);
+
+ virtual void getRoutingReadyState(bool& readyState);
+
+ void gotReady(int16_t numberDomains, uint16_t handle);
+ void gotRundown(int16_t numberDomains, uint16_t handle);
+};
+
+} /* namespace am */
+#endif /* CAMROUTINGSERVICE_H_ */
diff --git a/PluginRoutingInterfaceCAPI/include/configRoutingCAPI.h b/PluginRoutingInterfaceCAPI/include/configRoutingCAPI.h
new file mode 100644
index 0000000..214e75e
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/include/configRoutingCAPI.h
@@ -0,0 +1,6 @@
+#ifndef _ROUTINGDBUS_CONFIG_H
+#define _ROUTINGDBUS_CONFIG_H
+
+/* #undef ROUTING_DBUS_INTROSPECTION_FILE */
+
+#endif /* _ROUTINGDBUS_CONFIG_H */
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterface.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterface.h
new file mode 100644
index 0000000..50ececf
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterface.h
@@ -0,0 +1,66 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_H_
+
+
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/types.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+class RoutingInterface {
+ public:
+ virtual ~RoutingInterface() { }
+
+ static inline const char* getInterfaceId();
+ static inline CommonAPI::Version getInterfaceVersion();
+};
+
+const char* RoutingInterface::getInterfaceId() {
+ return "org.genivi.audiomanager.RoutingInterface";
+}
+
+CommonAPI::Version RoutingInterface::getInterfaceVersion() {
+ return CommonAPI::Version(0, 1);
+}
+
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+namespace CommonAPI {
+
+}
+
+
+namespace std {
+ //hashes for types
+
+ //hashes for error types
+}
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.cpp
new file mode 100644
index 0000000..2a19ff4
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.cpp
@@ -0,0 +1,920 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include "RoutingInterfaceDBusProxy.h"
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+std::shared_ptr<CommonAPI::DBus::DBusProxy> createRoutingInterfaceDBusProxy(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyConnection) {
+ return std::make_shared<RoutingInterfaceDBusProxy>(commonApiAddress, interfaceName, busName, objectPath, dbusProxyConnection);
+}
+
+__attribute__((constructor)) void registerRoutingInterfaceDBusProxy(void) {
+ CommonAPI::DBus::DBusFactory::registerProxyFactoryMethod(RoutingInterface::getInterfaceId(),
+ &createRoutingInterfaceDBusProxy);
+}
+
+RoutingInterfaceDBusProxy::RoutingInterfaceDBusProxy(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyconnection):
+ CommonAPI::DBus::DBusProxy(commonApiAddress, interfaceName, busName, objectPath, dbusProxyconnection)
+, setRoutingReady_(*this, "setRoutingReady", ""),
+ setRoutingRundown_(*this, "setRoutingRundown", "")
+ {
+}
+
+
+RoutingInterfaceDBusProxy::SetRoutingReadyEvent& RoutingInterfaceDBusProxy::getSetRoutingReadyEvent() {
+ return setRoutingReady_;
+}
+RoutingInterfaceDBusProxy::SetRoutingRundownEvent& RoutingInterfaceDBusProxy::getSetRoutingRundownEvent() {
+ return setRoutingRundown_;
+}
+
+void RoutingInterfaceDBusProxy::ackConnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_connectionID_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackConnect",
+ "qqq",
+ handle, connectionID, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackConnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckConnectAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_connectionID_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackConnect",
+ "qqq",
+ handle, connectionID, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackDisconnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_connectionID_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackDisconnect",
+ "qqq",
+ handle, connectionID, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackDisconnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckDisconnectAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_connectionID_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackDisconnect",
+ "qqq",
+ handle, connectionID, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSinkVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_volume_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSinkVolume",
+ "qnq",
+ handle, volume, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSinkVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSinkVolumeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_volume_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSinkVolume",
+ "qnq",
+ handle, volume, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSourceVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_volume_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSourceVolume",
+ "qnq",
+ handle, volume, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSourceVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSourceVolumeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_volume_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSourceVolume",
+ "qnq",
+ handle, volume, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSourceState(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSourceState",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSourceStateAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceStateAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSourceState",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSinkSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSinkSoundProperties",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSinkSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertiesAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSinkSoundProperties",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSinkSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSinkSoundProperty",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSinkSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertyAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSinkSoundProperty",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSourceSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSourceSoundProperties",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSourceSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertiesAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSourceSoundProperties",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetSourceSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetSourceSoundProperty",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetSourceSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertyAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetSourceSoundProperty",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSourceVolumeTick(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_sourceID_t, am_gen::am_volume_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSourceVolumeTick",
+ "qqn",
+ handle, source, volume,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSourceVolumeTickAsync(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, AckSourceVolumeTickAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_sourceID_t, am_gen::am_volume_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSourceVolumeTick",
+ "qqn",
+ handle, source, volume,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSinkVolumeTick(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_sinkID_t, am_gen::am_volume_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSinkVolumeTick",
+ "qqn",
+ handle, sink, volume,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSinkVolumeTickAsync(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, AckSinkVolumeTickAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_sinkID_t, am_gen::am_volume_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSinkVolumeTick",
+ "qqn",
+ handle, sink, volume,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackCrossFading(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_HotSink_e, am_gen::am_Error_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackCrossFading",
+ "qii",
+ handle, hotSink, returnError,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackCrossFadingAsync(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, AckCrossFadingAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_HotSink_e, am_gen::am_Error_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackCrossFading",
+ "qii",
+ handle, hotSink, returnError,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::peekDomain(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "peekDomain",
+ "s",
+ name,
+ callStatus
+ , domainID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::peekDomainAsync(const std::string& name, PeekDomainAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "peekDomain",
+ "s",
+ name,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::registerDomain(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Domain_s, std::string, std::string, std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "registerDomain",
+ "(qsssbbi)sss",
+ domainData, returnBusname, returnPath, returnInterface,
+ callStatus
+ , domainID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::registerDomainAsync(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, RegisterDomainAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Domain_s, std::string, std::string, std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "registerDomain",
+ "(qsssbbi)sss",
+ domainData, returnBusname, returnPath, returnInterface,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::deregisterDomain(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "deregisterDomain",
+ "q",
+ domainID,
+ callStatus
+ , returnError);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::deregisterDomainAsync(const am_gen::am_domainID_t& domainID, DeregisterDomainAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "deregisterDomain",
+ "q",
+ domainID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::registerGateway(const am_gen::am_Gateway_s& gatewayData, CommonAPI::CallStatus& callStatus, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Gateway_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_gatewayID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "registerGateway",
+ "(qsqqqqqaiaiab)",
+ gatewayData,
+ callStatus
+ , gatewayID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::registerGatewayAsync(const am_gen::am_Gateway_s& gatewayData, RegisterGatewayAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Gateway_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_gatewayID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "registerGateway",
+ "(qsqqqqqaiaiab)",
+ gatewayData,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::deregisterGateway(const am_gen::am_gatewayID_t& gatewayID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_gatewayID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "deregisterGateway",
+ "q",
+ gatewayID,
+ callStatus
+ , returnError);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::deregisterGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, DeregisterGatewayAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_gatewayID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "deregisterGateway",
+ "q",
+ gatewayID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::peekSink(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "peekSink",
+ "s",
+ name,
+ callStatus
+ , sinkID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::peekSinkAsync(const std::string& name, PeekSinkAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "peekSink",
+ "s",
+ name,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::registerSink(const am_gen::sinkData_s& sinkData, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::sinkData_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "registerSink",
+ "(qsqqnb(ii)ina(in)aia(in)a(iin)a(iin))",
+ sinkData,
+ callStatus
+ , sinkID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::registerSinkAsync(const am_gen::sinkData_s& sinkData, RegisterSinkAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::sinkData_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "registerSink",
+ "(qsqqnb(ii)ina(in)aia(in)a(iin)a(iin))",
+ sinkData,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::deregisterSink(const am_gen::am_sinkID_t& sinkID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "deregisterSink",
+ "q",
+ sinkID,
+ callStatus
+ , returnError);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::deregisterSinkAsync(const am_gen::am_sinkID_t& sinkID, DeregisterSinkAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "deregisterSink",
+ "q",
+ sinkID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::peekSource(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "peekSource",
+ "s",
+ name,
+ callStatus
+ , sourceID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::peekSourceAsync(const std::string& name, PeekSourceAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "peekSource",
+ "s",
+ name,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::registerSource(const am_gen::sourceData_s& sourceData, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::sourceData_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "registerSource",
+ "(qqsqinb(ii)ia(in)aia(in)a(iin)a(iin))",
+ sourceData,
+ callStatus
+ , sourceID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::registerSourceAsync(const am_gen::sourceData_s& sourceData, RegisterSourceAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::sourceData_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "registerSource",
+ "(qqsqinb(ii)ia(in)aia(in)a(iin)a(iin))",
+ sourceData,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::deregisterSource(const am_gen::am_sourceID_t& sourceID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "deregisterSource",
+ "q",
+ sourceID,
+ callStatus
+ , returnError);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::deregisterSourceAsync(const am_gen::am_sourceID_t& sourceID, DeregisterSourceAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "deregisterSource",
+ "q",
+ sourceID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::registerCrossfader(const am_gen::crossfaderData_s& crossfaderData, CommonAPI::CallStatus& callStatus, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::crossfaderData_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_crossfaderID_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "registerCrossfader",
+ "(qsqqqi)",
+ crossfaderData,
+ callStatus
+ , crossfaderID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::registerCrossfaderAsync(const am_gen::crossfaderData_s& crossfaderData, RegisterCrossfaderAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::crossfaderData_s>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_crossfaderID_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "registerCrossfader",
+ "(qsqqqi)",
+ crossfaderData,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::deregisterCrossfader(const am_gen::am_crossfaderID_t& crossfaderID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_crossfaderID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "deregisterCrossfader",
+ "q",
+ crossfaderID,
+ callStatus
+ , returnError);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::deregisterCrossfaderAsync(const am_gen::am_crossfaderID_t& crossfaderID, DeregisterCrossfaderAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_crossfaderID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "deregisterCrossfader",
+ "q",
+ crossfaderID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::peekSourceClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceClass_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "peekSourceClassID",
+ "s",
+ name,
+ callStatus
+ , sourceClassID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::peekSourceClassIDAsync(const std::string& name, PeekSourceClassIDAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceClass_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "peekSourceClassID",
+ "s",
+ name,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::peekSinkClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkClass_t, am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "peekSinkClassID",
+ "s",
+ name,
+ callStatus
+ , sinkClassID, error);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::peekSinkClassIDAsync(const std::string& name, PeekSinkClassIDAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<std::string>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkClass_t, am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "peekSinkClassID",
+ "s",
+ name,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookInterruptStatusChange(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookInterruptStatusChange",
+ "qq",
+ sourceID, interruptState,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookInterruptStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, HookInterruptStatusChangeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookInterruptStatusChange",
+ "qq",
+ sourceID, interruptState,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookDomainRegistrationComplete(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookDomainRegistrationComplete",
+ "q",
+ domainID,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookDomainRegistrationCompleteAsync(const am_gen::am_domainID_t& domainID, HookDomainRegistrationCompleteAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookDomainRegistrationComplete",
+ "q",
+ domainID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookSinkAvailablityStatusChange(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_Availability_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookSinkAvailablityStatusChange",
+ "q(ii)",
+ sinkID, availability,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookSinkAvailablityStatusChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, HookSinkAvailablityStatusChangeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_Availability_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookSinkAvailablityStatusChange",
+ "q(ii)",
+ sinkID, availability,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookSourceAvailablityStatusChange(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_Availability_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookSourceAvailablityStatusChange",
+ "q(ii)",
+ sourceID, availability,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookSourceAvailablityStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, HookSourceAvailablityStatusChangeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_Availability_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookSourceAvailablityStatusChange",
+ "q(ii)",
+ sourceID, availability,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookDomainStateChange(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_DomainState_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookDomainStateChange",
+ "qi",
+ domainID, domainState,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookDomainStateChangeAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, HookDomainStateChangeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_DomainState_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookDomainStateChange",
+ "qi",
+ domainID, domainState,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookTimingInformationChanged(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_connectionID_t, int16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookTimingInformationChanged",
+ "qn",
+ connectionID, delay,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookTimingInformationChangedAsync(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, HookTimingInformationChangedAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_connectionID_t, int16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookTimingInformationChanged",
+ "qn",
+ connectionID, delay,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::sendChangedData(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_EarlyData_l, am_gen::am_EarlyData_l>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "sendChangedData",
+ "a(i(yv)(yv))a(i(yv)(yv))",
+ earlyData_volumes, earlyData_soundproperties,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::sendChangedDataAsync(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, SendChangedDataAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_EarlyData_l, am_gen::am_EarlyData_l>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "sendChangedData",
+ "a(i(yv)(yv))a(i(yv)(yv))",
+ earlyData_volumes, earlyData_soundproperties,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::confirmRoutingReady(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "confirmRoutingReady",
+ "q",
+ domainID,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::confirmRoutingReadyAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingReadyAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "confirmRoutingReady",
+ "q",
+ domainID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::confirmRoutingRundown(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "confirmRoutingRundown",
+ "q",
+ domainID,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::confirmRoutingRundownAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingRundownAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "confirmRoutingRundown",
+ "q",
+ domainID,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::updateGateway(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_gatewayID_t, am_gen::am_ConnectionFormat_L, am_gen::am_ConnectionFormat_L, am_gen::bool_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "updateGateway",
+ "qaiaiab",
+ gatewayID, listSourceFormats, listSinkFormats, convertionMatrix,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::updateGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, UpdateGatewayAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_gatewayID_t, am_gen::am_ConnectionFormat_L, am_gen::am_ConnectionFormat_L, am_gen::bool_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "updateGateway",
+ "qaiaiab",
+ gatewayID, listSourceFormats, listSinkFormats, convertionMatrix,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::updateSink(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_sinkClass_t, am_gen::am_SoundProperty_L, am_gen::am_ConnectionFormat_L, am_gen::am_MainSoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "updateSink",
+ "qqa(in)aia(in)",
+ sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::updateSinkAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSinkAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::am_sinkClass_t, am_gen::am_SoundProperty_L, am_gen::am_ConnectionFormat_L, am_gen::am_MainSoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "updateSink",
+ "qqa(in)aia(in)",
+ sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::updateSource(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_sourceClass_t, am_gen::am_SoundProperty_L, am_gen::am_ConnectionFormat_L, am_gen::am_MainSoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "updateSource",
+ "qqa(in)aia(in)",
+ sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::updateSourceAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSourceAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::am_sourceClass_t, am_gen::am_SoundProperty_L, am_gen::am_ConnectionFormat_L, am_gen::am_MainSoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "updateSource",
+ "qqa(in)aia(in)",
+ sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSetVolumes(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_Volumes_l, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSetVolumes",
+ "qa(i(yv)niq)q",
+ handle, listVolumes, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSetVolumesAsync(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, AckSetVolumesAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_Volumes_l, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSetVolumes",
+ "qa(i(yv)niq)q",
+ handle, listVolumes, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSinkNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSinkNotificationConfiguration",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSinkNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSinkNotificationConfigurationAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSinkNotificationConfiguration",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::ackSourceNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "ackSourceNotificationConfiguration",
+ "qq",
+ handle, error,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::ackSourceNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSourceNotificationConfigurationAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, uint16_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "ackSourceNotificationConfiguration",
+ "qq",
+ handle, error,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookSinkNotificationDataChange(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::notificationPayload_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookSinkNotificationDataChange",
+ "q(nn)",
+ sinkID, payload,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookSinkNotificationDataChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, HookSinkNotificationDataChangeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sinkID_t, am_gen::notificationPayload_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookSinkNotificationDataChange",
+ "q(nn)",
+ sinkID, payload,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::hookSourceNotificationDataChange(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::notificationPayload_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "hookSourceNotificationDataChange",
+ "q(nn)",
+ sourceID, payload,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::hookSourceNotificationDataChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, HookSourceNotificationDataChangeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_sourceID_t, am_gen::notificationPayload_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "hookSourceNotificationDataChange",
+ "q(nn)",
+ sourceID, payload,
+ std::move(callback));
+}
+void RoutingInterfaceDBusProxy::getRoutingReadyState(CommonAPI::CallStatus& callStatus, bool& readyState) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<>,
+ CommonAPI::DBus::DBusSerializableArguments<bool> >::callMethodWithReply(
+ *this,
+ "getRoutingReadyState",
+ "",
+ callStatus
+ , readyState);
+}
+std::future<CommonAPI::CallStatus> RoutingInterfaceDBusProxy::getRoutingReadyStateAsync(GetRoutingReadyStateAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<>,
+ CommonAPI::DBus::DBusSerializableArguments<bool> >::callMethodAsync(
+ *this,
+ "getRoutingReadyState",
+ "",
+ std::move(callback));
+}
+
+void RoutingInterfaceDBusProxy::getOwnVersion(uint16_t& ownVersionMajor, uint16_t& ownVersionMinor) const {
+ ownVersionMajor = 0;
+ ownVersionMinor = 1;
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.h
new file mode 100644
index 0000000..893d736
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusProxy.h
@@ -0,0 +1,201 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_DBUS_PROXY_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_DBUS_PROXY_H_
+
+#include <org/genivi/audiomanager/RoutingInterfaceProxyBase.h>
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/DBus/DBusFactory.h>
+#include <CommonAPI/DBus/DBusProxy.h>
+#include <CommonAPI/DBus/DBusEvent.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+#include <string>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+class RoutingInterfaceDBusProxy: virtual public RoutingInterfaceProxyBase, virtual public CommonAPI::DBus::DBusProxy {
+ public:
+ RoutingInterfaceDBusProxy(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyconnection);
+
+ virtual ~RoutingInterfaceDBusProxy() { }
+
+
+ virtual SetRoutingReadyEvent& getSetRoutingReadyEvent();
+ virtual SetRoutingRundownEvent& getSetRoutingRundownEvent();
+
+
+ virtual void ackConnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackConnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckConnectAsyncCallback callback);
+
+ virtual void ackDisconnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackDisconnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckDisconnectAsyncCallback callback);
+
+ virtual void ackSetSinkVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSinkVolumeAsyncCallback callback);
+
+ virtual void ackSetSourceVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSourceVolumeAsyncCallback callback);
+
+ virtual void ackSetSourceState(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceStateAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceStateAsyncCallback callback);
+
+ virtual void ackSetSinkSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertiesAsyncCallback callback);
+
+ virtual void ackSetSinkSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertyAsyncCallback callback);
+
+ virtual void ackSetSourceSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertiesAsyncCallback callback);
+
+ virtual void ackSetSourceSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertyAsyncCallback callback);
+
+ virtual void ackSourceVolumeTick(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSourceVolumeTickAsync(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, AckSourceVolumeTickAsyncCallback callback);
+
+ virtual void ackSinkVolumeTick(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSinkVolumeTickAsync(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, AckSinkVolumeTickAsyncCallback callback);
+
+ virtual void ackCrossFading(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackCrossFadingAsync(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, AckCrossFadingAsyncCallback callback);
+
+ virtual void peekDomain(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> peekDomainAsync(const std::string& name, PeekDomainAsyncCallback callback);
+
+ virtual void registerDomain(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> registerDomainAsync(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, RegisterDomainAsyncCallback callback);
+
+ virtual void deregisterDomain(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ virtual std::future<CommonAPI::CallStatus> deregisterDomainAsync(const am_gen::am_domainID_t& domainID, DeregisterDomainAsyncCallback callback);
+
+ virtual void registerGateway(const am_gen::am_Gateway_s& gatewayData, CommonAPI::CallStatus& callStatus, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> registerGatewayAsync(const am_gen::am_Gateway_s& gatewayData, RegisterGatewayAsyncCallback callback);
+
+ virtual void deregisterGateway(const am_gen::am_gatewayID_t& gatewayID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ virtual std::future<CommonAPI::CallStatus> deregisterGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, DeregisterGatewayAsyncCallback callback);
+
+ virtual void peekSink(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> peekSinkAsync(const std::string& name, PeekSinkAsyncCallback callback);
+
+ virtual void registerSink(const am_gen::sinkData_s& sinkData, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> registerSinkAsync(const am_gen::sinkData_s& sinkData, RegisterSinkAsyncCallback callback);
+
+ virtual void deregisterSink(const am_gen::am_sinkID_t& sinkID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ virtual std::future<CommonAPI::CallStatus> deregisterSinkAsync(const am_gen::am_sinkID_t& sinkID, DeregisterSinkAsyncCallback callback);
+
+ virtual void peekSource(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> peekSourceAsync(const std::string& name, PeekSourceAsyncCallback callback);
+
+ virtual void registerSource(const am_gen::sourceData_s& sourceData, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> registerSourceAsync(const am_gen::sourceData_s& sourceData, RegisterSourceAsyncCallback callback);
+
+ virtual void deregisterSource(const am_gen::am_sourceID_t& sourceID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ virtual std::future<CommonAPI::CallStatus> deregisterSourceAsync(const am_gen::am_sourceID_t& sourceID, DeregisterSourceAsyncCallback callback);
+
+ virtual void registerCrossfader(const am_gen::crossfaderData_s& crossfaderData, CommonAPI::CallStatus& callStatus, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> registerCrossfaderAsync(const am_gen::crossfaderData_s& crossfaderData, RegisterCrossfaderAsyncCallback callback);
+
+ virtual void deregisterCrossfader(const am_gen::am_crossfaderID_t& crossfaderID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ virtual std::future<CommonAPI::CallStatus> deregisterCrossfaderAsync(const am_gen::am_crossfaderID_t& crossfaderID, DeregisterCrossfaderAsyncCallback callback);
+
+ virtual void peekSourceClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> peekSourceClassIDAsync(const std::string& name, PeekSourceClassIDAsyncCallback callback);
+
+ virtual void peekSinkClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> peekSinkClassIDAsync(const std::string& name, PeekSinkClassIDAsyncCallback callback);
+
+ virtual void hookInterruptStatusChange(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookInterruptStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, HookInterruptStatusChangeAsyncCallback callback);
+
+ virtual void hookDomainRegistrationComplete(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookDomainRegistrationCompleteAsync(const am_gen::am_domainID_t& domainID, HookDomainRegistrationCompleteAsyncCallback callback);
+
+ virtual void hookSinkAvailablityStatusChange(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookSinkAvailablityStatusChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, HookSinkAvailablityStatusChangeAsyncCallback callback);
+
+ virtual void hookSourceAvailablityStatusChange(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookSourceAvailablityStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, HookSourceAvailablityStatusChangeAsyncCallback callback);
+
+ virtual void hookDomainStateChange(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookDomainStateChangeAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, HookDomainStateChangeAsyncCallback callback);
+
+ virtual void hookTimingInformationChanged(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookTimingInformationChangedAsync(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, HookTimingInformationChangedAsyncCallback callback);
+
+ virtual void sendChangedData(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> sendChangedDataAsync(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, SendChangedDataAsyncCallback callback);
+
+ virtual void confirmRoutingReady(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> confirmRoutingReadyAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingReadyAsyncCallback callback);
+
+ virtual void confirmRoutingRundown(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> confirmRoutingRundownAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingRundownAsyncCallback callback);
+
+ virtual void updateGateway(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> updateGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, UpdateGatewayAsyncCallback callback);
+
+ virtual void updateSink(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> updateSinkAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSinkAsyncCallback callback);
+
+ virtual void updateSource(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> updateSourceAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSourceAsyncCallback callback);
+
+ virtual void ackSetVolumes(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSetVolumesAsync(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, AckSetVolumesAsyncCallback callback);
+
+ virtual void ackSinkNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSinkNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSinkNotificationConfigurationAsyncCallback callback);
+
+ virtual void ackSourceNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> ackSourceNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSourceNotificationConfigurationAsyncCallback callback);
+
+ virtual void hookSinkNotificationDataChange(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookSinkNotificationDataChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, HookSinkNotificationDataChangeAsyncCallback callback);
+
+ virtual void hookSourceNotificationDataChange(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> hookSourceNotificationDataChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, HookSourceNotificationDataChangeAsyncCallback callback);
+
+ virtual void getRoutingReadyState(CommonAPI::CallStatus& callStatus, bool& readyState);
+ virtual std::future<CommonAPI::CallStatus> getRoutingReadyStateAsync(GetRoutingReadyStateAsyncCallback callback);
+
+ virtual void getOwnVersion(uint16_t& ownVersionMajor, uint16_t& ownVersionMinor) const;
+
+ private:
+
+ CommonAPI::DBus::DBusEvent<SetRoutingReadyEvent> setRoutingReady_;
+ CommonAPI::DBus::DBusEvent<SetRoutingRundownEvent> setRoutingRundown_;
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_DBUS_PROXY_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.cpp
new file mode 100644
index 0000000..19ef262
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.cpp
@@ -0,0 +1,562 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include "RoutingInterfaceDBusStubAdapter.h"
+#include <org/genivi/audiomanager/RoutingInterface.h>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+std::shared_ptr<CommonAPI::DBus::DBusStubAdapter> createRoutingInterfaceDBusStubAdapter(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyConnection,
+ const std::shared_ptr<CommonAPI::StubBase>& stubBase) {
+ return std::make_shared<RoutingInterfaceDBusStubAdapter>(commonApiAddress, interfaceName, busName, objectPath, dbusProxyConnection, stubBase);
+}
+
+__attribute__((constructor)) void registerRoutingInterfaceDBusStubAdapter(void) {
+ CommonAPI::DBus::DBusFactory::registerAdapterFactoryMethod(RoutingInterface::getInterfaceId(),
+ &createRoutingInterfaceDBusStubAdapter);
+}
+
+RoutingInterfaceDBusStubAdapter::RoutingInterfaceDBusStubAdapter(
+ const std::string& commonApiAddress,
+ const std::string& dbusInterfaceName,
+ const std::string& dbusBusName,
+ const std::string& dbusObjectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusConnection,
+ const std::shared_ptr<CommonAPI::StubBase>& stub):
+ RoutingInterfaceDBusStubAdapterHelper(commonApiAddress, dbusInterfaceName, dbusBusName, dbusObjectPath, dbusConnection, std::dynamic_pointer_cast<RoutingInterfaceStub>(stub)) {
+}
+
+const char* RoutingInterfaceDBusStubAdapter::getMethodsDBusIntrospectionXmlData() const {
+ return
+ "<signal name=\"setRoutingReady\">\n"
+ "</signal>\n"
+ "<signal name=\"setRoutingRundown\">\n"
+ "</signal>\n"
+ "<method name=\"ackConnect\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"connectionID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackDisconnect\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"connectionID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSinkVolume\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volume\" type=\"n\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSourceVolume\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volume\" type=\"n\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSourceState\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSinkSoundProperties\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSinkSoundProperty\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSourceSoundProperties\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetSourceSoundProperty\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSourceVolumeTick\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"source\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volume\" type=\"n\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSinkVolumeTick\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sink\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volume\" type=\"n\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackCrossFading\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"hotSink\" type=\"i\" direction=\"in\" />\n"
+ "<arg name=\"returnError\" type=\"i\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"peekDomain\">\n"
+ "<arg name=\"name\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"registerDomain\">\n"
+ "<arg name=\"domainData\" type=\"(qsssbbi)\" direction=\"in\" />\n"
+ "<arg name=\"returnBusname\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"returnPath\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"returnInterface\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"deregisterDomain\">\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"returnError\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"registerGateway\">\n"
+ "<arg name=\"gatewayData\" type=\"(qsqqqqqaiaiab)\" direction=\"in\" />\n"
+ "<arg name=\"gatewayID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"deregisterGateway\">\n"
+ "<arg name=\"gatewayID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"returnError\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"peekSink\">\n"
+ "<arg name=\"name\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"registerSink\">\n"
+ "<arg name=\"sinkData\" type=\"(qsqqnb(ii)ina(in)aia(in)a(iin)a(iin))\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"deregisterSink\">\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"returnError\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"peekSource\">\n"
+ "<arg name=\"name\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"registerSource\">\n"
+ "<arg name=\"sourceData\" type=\"(qqsqinb(ii)ia(in)aia(in)a(iin)a(iin))\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"deregisterSource\">\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"returnError\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"registerCrossfader\">\n"
+ "<arg name=\"crossfaderData\" type=\"(qsqqqi)\" direction=\"in\" />\n"
+ "<arg name=\"crossfaderID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"deregisterCrossfader\">\n"
+ "<arg name=\"crossfaderID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"returnError\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"peekSourceClassID\">\n"
+ "<arg name=\"name\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"sourceClassID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"peekSinkClassID\">\n"
+ "<arg name=\"name\" type=\"s\" direction=\"in\" />\n"
+ "<arg name=\"sinkClassID\" type=\"q\" direction=\"out\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"hookInterruptStatusChange\">\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"interruptState\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookDomainRegistrationComplete\">\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookSinkAvailablityStatusChange\">\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"availability\" type=\"(ii)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookSourceAvailablityStatusChange\">\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"availability\" type=\"(ii)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookDomainStateChange\">\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"domainState\" type=\"i\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookTimingInformationChanged\">\n"
+ "<arg name=\"connectionID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"delay\" type=\"n\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"sendChangedData\">\n"
+ "<arg name=\"earlyData_volumes\" type=\"a(i(yv)(yv))\" direction=\"in\" />\n"
+ "<arg name=\"earlyData_soundproperties\" type=\"a(i(yv)(yv))\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"confirmRoutingReady\">\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"confirmRoutingRundown\">\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"updateGateway\">\n"
+ "<arg name=\"gatewayID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"listSourceFormats\" type=\"ai\" direction=\"in\" />\n"
+ "<arg name=\"listSinkFormats\" type=\"ai\" direction=\"in\" />\n"
+ "<arg name=\"convertionMatrix\" type=\"ab\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"updateSink\">\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sinkClassID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"listSoundProperties\" type=\"a(in)\" direction=\"in\" />\n"
+ "<arg name=\"listConnectionFormats\" type=\"ai\" direction=\"in\" />\n"
+ "<arg name=\"listMainSoundProperties\" type=\"a(in)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"updateSource\">\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceClassID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"listSoundProperties\" type=\"a(in)\" direction=\"in\" />\n"
+ "<arg name=\"listConnectionFormats\" type=\"ai\" direction=\"in\" />\n"
+ "<arg name=\"listMainSoundProperties\" type=\"a(in)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSetVolumes\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"listVolumes\" type=\"a(i(yv)niq)\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSinkNotificationConfiguration\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"ackSourceNotificationConfiguration\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookSinkNotificationDataChange\">\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"payload\" type=\"(nn)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"hookSourceNotificationDataChange\">\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"payload\" type=\"(nn)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"getRoutingReadyState\">\n"
+ "<arg name=\"readyState\" type=\"b\" direction=\"out\" />\n"
+ "</method>\n"
+ ;
+}
+
+
+
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_connectionID_t, uint16_t>,
+ std::tuple<>
+ > ackConnectStubDispatcher(&RoutingInterfaceStub::ackConnect, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_connectionID_t, uint16_t>,
+ std::tuple<>
+ > ackDisconnectStubDispatcher(&RoutingInterfaceStub::ackDisconnect, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_volume_t, uint16_t>,
+ std::tuple<>
+ > ackSetSinkVolumeStubDispatcher(&RoutingInterfaceStub::ackSetSinkVolume, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_volume_t, uint16_t>,
+ std::tuple<>
+ > ackSetSourceVolumeStubDispatcher(&RoutingInterfaceStub::ackSetSourceVolume, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSetSourceStateStubDispatcher(&RoutingInterfaceStub::ackSetSourceState, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSetSinkSoundPropertiesStubDispatcher(&RoutingInterfaceStub::ackSetSinkSoundProperties, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSetSinkSoundPropertyStubDispatcher(&RoutingInterfaceStub::ackSetSinkSoundProperty, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSetSourceSoundPropertiesStubDispatcher(&RoutingInterfaceStub::ackSetSourceSoundProperties, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSetSourceSoundPropertyStubDispatcher(&RoutingInterfaceStub::ackSetSourceSoundProperty, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_sourceID_t, am_gen::am_volume_t>,
+ std::tuple<>
+ > ackSourceVolumeTickStubDispatcher(&RoutingInterfaceStub::ackSourceVolumeTick, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_sinkID_t, am_gen::am_volume_t>,
+ std::tuple<>
+ > ackSinkVolumeTickStubDispatcher(&RoutingInterfaceStub::ackSinkVolumeTick, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_HotSink_e, am_gen::am_Error_e>,
+ std::tuple<>
+ > ackCrossFadingStubDispatcher(&RoutingInterfaceStub::ackCrossFading, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<std::string>,
+ std::tuple<am_gen::am_domainID_t, am_gen::am_Error_e>
+ > peekDomainStubDispatcher(&RoutingInterfaceStub::peekDomain, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_Domain_s, std::string, std::string, std::string>,
+ std::tuple<am_gen::am_domainID_t, am_gen::am_Error_e>
+ > registerDomainStubDispatcher(&RoutingInterfaceStub::registerDomain, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_domainID_t>,
+ std::tuple<am_gen::am_Error_e>
+ > deregisterDomainStubDispatcher(&RoutingInterfaceStub::deregisterDomain, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_Gateway_s>,
+ std::tuple<am_gen::am_gatewayID_t, am_gen::am_Error_e>
+ > registerGatewayStubDispatcher(&RoutingInterfaceStub::registerGateway, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_gatewayID_t>,
+ std::tuple<am_gen::am_Error_e>
+ > deregisterGatewayStubDispatcher(&RoutingInterfaceStub::deregisterGateway, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<std::string>,
+ std::tuple<am_gen::am_sinkID_t, am_gen::am_Error_e>
+ > peekSinkStubDispatcher(&RoutingInterfaceStub::peekSink, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::sinkData_s>,
+ std::tuple<am_gen::am_sinkID_t, am_gen::am_Error_e>
+ > registerSinkStubDispatcher(&RoutingInterfaceStub::registerSink, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sinkID_t>,
+ std::tuple<am_gen::am_Error_e>
+ > deregisterSinkStubDispatcher(&RoutingInterfaceStub::deregisterSink, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<std::string>,
+ std::tuple<am_gen::am_sourceID_t, am_gen::am_Error_e>
+ > peekSourceStubDispatcher(&RoutingInterfaceStub::peekSource, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::sourceData_s>,
+ std::tuple<am_gen::am_sourceID_t, am_gen::am_Error_e>
+ > registerSourceStubDispatcher(&RoutingInterfaceStub::registerSource, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sourceID_t>,
+ std::tuple<am_gen::am_Error_e>
+ > deregisterSourceStubDispatcher(&RoutingInterfaceStub::deregisterSource, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::crossfaderData_s>,
+ std::tuple<am_gen::am_crossfaderID_t, am_gen::am_Error_e>
+ > registerCrossfaderStubDispatcher(&RoutingInterfaceStub::registerCrossfader, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_crossfaderID_t>,
+ std::tuple<am_gen::am_Error_e>
+ > deregisterCrossfaderStubDispatcher(&RoutingInterfaceStub::deregisterCrossfader, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<std::string>,
+ std::tuple<am_gen::am_sourceClass_t, am_gen::am_Error_e>
+ > peekSourceClassIDStubDispatcher(&RoutingInterfaceStub::peekSourceClassID, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<std::string>,
+ std::tuple<am_gen::am_sinkClass_t, am_gen::am_Error_e>
+ > peekSinkClassIDStubDispatcher(&RoutingInterfaceStub::peekSinkClassID, "qi");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sourceID_t, uint16_t>,
+ std::tuple<>
+ > hookInterruptStatusChangeStubDispatcher(&RoutingInterfaceStub::hookInterruptStatusChange, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_domainID_t>,
+ std::tuple<>
+ > hookDomainRegistrationCompleteStubDispatcher(&RoutingInterfaceStub::hookDomainRegistrationComplete, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sinkID_t, am_gen::am_Availability_s>,
+ std::tuple<>
+ > hookSinkAvailablityStatusChangeStubDispatcher(&RoutingInterfaceStub::hookSinkAvailablityStatusChange, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sourceID_t, am_gen::am_Availability_s>,
+ std::tuple<>
+ > hookSourceAvailablityStatusChangeStubDispatcher(&RoutingInterfaceStub::hookSourceAvailablityStatusChange, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_domainID_t, am_gen::am_DomainState_e>,
+ std::tuple<>
+ > hookDomainStateChangeStubDispatcher(&RoutingInterfaceStub::hookDomainStateChange, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_connectionID_t, int16_t>,
+ std::tuple<>
+ > hookTimingInformationChangedStubDispatcher(&RoutingInterfaceStub::hookTimingInformationChanged, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_EarlyData_l, am_gen::am_EarlyData_l>,
+ std::tuple<>
+ > sendChangedDataStubDispatcher(&RoutingInterfaceStub::sendChangedData, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_domainID_t>,
+ std::tuple<>
+ > confirmRoutingReadyStubDispatcher(&RoutingInterfaceStub::confirmRoutingReady, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_domainID_t>,
+ std::tuple<>
+ > confirmRoutingRundownStubDispatcher(&RoutingInterfaceStub::confirmRoutingRundown, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_gatewayID_t, am_gen::am_ConnectionFormat_L, am_gen::am_ConnectionFormat_L, am_gen::bool_L>,
+ std::tuple<>
+ > updateGatewayStubDispatcher(&RoutingInterfaceStub::updateGateway, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sinkID_t, am_gen::am_sinkClass_t, am_gen::am_SoundProperty_L, am_gen::am_ConnectionFormat_L, am_gen::am_MainSoundProperty_L>,
+ std::tuple<>
+ > updateSinkStubDispatcher(&RoutingInterfaceStub::updateSink, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sourceID_t, am_gen::am_sourceClass_t, am_gen::am_SoundProperty_L, am_gen::am_ConnectionFormat_L, am_gen::am_MainSoundProperty_L>,
+ std::tuple<>
+ > updateSourceStubDispatcher(&RoutingInterfaceStub::updateSource, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, am_gen::am_Volumes_l, uint16_t>,
+ std::tuple<>
+ > ackSetVolumesStubDispatcher(&RoutingInterfaceStub::ackSetVolumes, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSinkNotificationConfigurationStubDispatcher(&RoutingInterfaceStub::ackSinkNotificationConfiguration, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<uint16_t, uint16_t>,
+ std::tuple<>
+ > ackSourceNotificationConfigurationStubDispatcher(&RoutingInterfaceStub::ackSourceNotificationConfiguration, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sinkID_t, am_gen::notificationPayload_s>,
+ std::tuple<>
+ > hookSinkNotificationDataChangeStubDispatcher(&RoutingInterfaceStub::hookSinkNotificationDataChange, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<am_gen::am_sourceID_t, am_gen::notificationPayload_s>,
+ std::tuple<>
+ > hookSourceNotificationDataChangeStubDispatcher(&RoutingInterfaceStub::hookSourceNotificationDataChange, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingInterfaceStub,
+ std::tuple<>,
+ std::tuple<bool>
+ > getRoutingReadyStateStubDispatcher(&RoutingInterfaceStub::getRoutingReadyState, "b");
+
+
+void RoutingInterfaceDBusStubAdapter::fireSetRoutingReadyEvent() {
+ CommonAPI::DBus::DBusStubSignalHelper<CommonAPI::DBus::DBusSerializableArguments<>>
+ ::sendSignal(
+ *this,
+ "setRoutingReady",
+ ""
+ );
+}
+void RoutingInterfaceDBusStubAdapter::fireSetRoutingRundownEvent() {
+ CommonAPI::DBus::DBusStubSignalHelper<CommonAPI::DBus::DBusSerializableArguments<>>
+ ::sendSignal(
+ *this,
+ "setRoutingRundown",
+ ""
+ );
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+template<>
+const org::genivi::audiomanager::RoutingInterfaceDBusStubAdapterHelper::StubDispatcherTable org::genivi::audiomanager::RoutingInterfaceDBusStubAdapterHelper::stubDispatcherTable_ = {
+ { { "ackConnect", "qqq" }, &org::genivi::audiomanager::ackConnectStubDispatcher },
+ { { "ackDisconnect", "qqq" }, &org::genivi::audiomanager::ackDisconnectStubDispatcher },
+ { { "ackSetSinkVolume", "qnq" }, &org::genivi::audiomanager::ackSetSinkVolumeStubDispatcher },
+ { { "ackSetSourceVolume", "qnq" }, &org::genivi::audiomanager::ackSetSourceVolumeStubDispatcher },
+ { { "ackSetSourceState", "qq" }, &org::genivi::audiomanager::ackSetSourceStateStubDispatcher },
+ { { "ackSetSinkSoundProperties", "qq" }, &org::genivi::audiomanager::ackSetSinkSoundPropertiesStubDispatcher },
+ { { "ackSetSinkSoundProperty", "qq" }, &org::genivi::audiomanager::ackSetSinkSoundPropertyStubDispatcher },
+ { { "ackSetSourceSoundProperties", "qq" }, &org::genivi::audiomanager::ackSetSourceSoundPropertiesStubDispatcher },
+ { { "ackSetSourceSoundProperty", "qq" }, &org::genivi::audiomanager::ackSetSourceSoundPropertyStubDispatcher },
+ { { "ackSourceVolumeTick", "qqn" }, &org::genivi::audiomanager::ackSourceVolumeTickStubDispatcher },
+ { { "ackSinkVolumeTick", "qqn" }, &org::genivi::audiomanager::ackSinkVolumeTickStubDispatcher },
+ { { "ackCrossFading", "qii" }, &org::genivi::audiomanager::ackCrossFadingStubDispatcher },
+ { { "peekDomain", "s" }, &org::genivi::audiomanager::peekDomainStubDispatcher },
+ { { "registerDomain", "(qsssbbi)sss" }, &org::genivi::audiomanager::registerDomainStubDispatcher },
+ { { "deregisterDomain", "q" }, &org::genivi::audiomanager::deregisterDomainStubDispatcher },
+ { { "registerGateway", "(qsqqqqqaiaiab)" }, &org::genivi::audiomanager::registerGatewayStubDispatcher },
+ { { "deregisterGateway", "q" }, &org::genivi::audiomanager::deregisterGatewayStubDispatcher },
+ { { "peekSink", "s" }, &org::genivi::audiomanager::peekSinkStubDispatcher },
+ { { "registerSink", "(qsqqnb(ii)ina(in)aia(in)a(iin)a(iin))" }, &org::genivi::audiomanager::registerSinkStubDispatcher },
+ { { "deregisterSink", "q" }, &org::genivi::audiomanager::deregisterSinkStubDispatcher },
+ { { "peekSource", "s" }, &org::genivi::audiomanager::peekSourceStubDispatcher },
+ { { "registerSource", "(qqsqinb(ii)ia(in)aia(in)a(iin)a(iin))" }, &org::genivi::audiomanager::registerSourceStubDispatcher },
+ { { "deregisterSource", "q" }, &org::genivi::audiomanager::deregisterSourceStubDispatcher },
+ { { "registerCrossfader", "(qsqqqi)" }, &org::genivi::audiomanager::registerCrossfaderStubDispatcher },
+ { { "deregisterCrossfader", "q" }, &org::genivi::audiomanager::deregisterCrossfaderStubDispatcher },
+ { { "peekSourceClassID", "s" }, &org::genivi::audiomanager::peekSourceClassIDStubDispatcher },
+ { { "peekSinkClassID", "s" }, &org::genivi::audiomanager::peekSinkClassIDStubDispatcher },
+ { { "hookInterruptStatusChange", "qq" }, &org::genivi::audiomanager::hookInterruptStatusChangeStubDispatcher },
+ { { "hookDomainRegistrationComplete", "q" }, &org::genivi::audiomanager::hookDomainRegistrationCompleteStubDispatcher },
+ { { "hookSinkAvailablityStatusChange", "q(ii)" }, &org::genivi::audiomanager::hookSinkAvailablityStatusChangeStubDispatcher },
+ { { "hookSourceAvailablityStatusChange", "q(ii)" }, &org::genivi::audiomanager::hookSourceAvailablityStatusChangeStubDispatcher },
+ { { "hookDomainStateChange", "qi" }, &org::genivi::audiomanager::hookDomainStateChangeStubDispatcher },
+ { { "hookTimingInformationChanged", "qn" }, &org::genivi::audiomanager::hookTimingInformationChangedStubDispatcher },
+ { { "sendChangedData", "a(i(yv)(yv))a(i(yv)(yv))" }, &org::genivi::audiomanager::sendChangedDataStubDispatcher },
+ { { "confirmRoutingReady", "q" }, &org::genivi::audiomanager::confirmRoutingReadyStubDispatcher },
+ { { "confirmRoutingRundown", "q" }, &org::genivi::audiomanager::confirmRoutingRundownStubDispatcher },
+ { { "updateGateway", "qaiaiab" }, &org::genivi::audiomanager::updateGatewayStubDispatcher },
+ { { "updateSink", "qqa(in)aia(in)" }, &org::genivi::audiomanager::updateSinkStubDispatcher },
+ { { "updateSource", "qqa(in)aia(in)" }, &org::genivi::audiomanager::updateSourceStubDispatcher },
+ { { "ackSetVolumes", "qa(i(yv)niq)q" }, &org::genivi::audiomanager::ackSetVolumesStubDispatcher },
+ { { "ackSinkNotificationConfiguration", "qq" }, &org::genivi::audiomanager::ackSinkNotificationConfigurationStubDispatcher },
+ { { "ackSourceNotificationConfiguration", "qq" }, &org::genivi::audiomanager::ackSourceNotificationConfigurationStubDispatcher },
+ { { "hookSinkNotificationDataChange", "q(nn)" }, &org::genivi::audiomanager::hookSinkNotificationDataChangeStubDispatcher },
+ { { "hookSourceNotificationDataChange", "q(nn)" }, &org::genivi::audiomanager::hookSourceNotificationDataChangeStubDispatcher },
+ { { "getRoutingReadyState", "" }, &org::genivi::audiomanager::getRoutingReadyStateStubDispatcher }
+};
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.h
new file mode 100644
index 0000000..7718954
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceDBusStubAdapter.h
@@ -0,0 +1,59 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_DBUS_STUB_ADAPTER_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_DBUS_STUB_ADAPTER_H_
+
+#include <org/genivi/audiomanager/RoutingInterfaceStub.h>
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/DBus/DBusStubAdapterHelper.h>
+#include <CommonAPI/DBus/DBusFactory.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+typedef CommonAPI::DBus::DBusStubAdapterHelper<RoutingInterfaceStub> RoutingInterfaceDBusStubAdapterHelper;
+
+class RoutingInterfaceDBusStubAdapter: public RoutingInterfaceStubAdapter, public RoutingInterfaceDBusStubAdapterHelper {
+ public:
+ RoutingInterfaceDBusStubAdapter(
+ const std::string& commonApiAddress,
+ const std::string& dbusInterfaceName,
+ const std::string& dbusBusName,
+ const std::string& dbusObjectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusConnection,
+ const std::shared_ptr<CommonAPI::StubBase>& stub);
+
+
+ void fireSetRoutingReadyEvent();
+ void fireSetRoutingRundownEvent();
+
+ protected:
+ virtual const char* getMethodsDBusIntrospectionXmlData() const;
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_DBUS_STUB_ADAPTER_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxy.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxy.h
new file mode 100644
index 0000000..7633ea6
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxy.h
@@ -0,0 +1,1594 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_PROXY_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_PROXY_H_
+
+#include "RoutingInterfaceProxyBase.h"
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+template <typename ... _AttributeExtensions>
+class RoutingInterfaceProxy: virtual public RoutingInterface, virtual public RoutingInterfaceProxyBase, public _AttributeExtensions... {
+ public:
+ RoutingInterfaceProxy(std::shared_ptr<CommonAPI::Proxy> delegate);
+ ~RoutingInterfaceProxy();
+
+
+ /// Returns the wrapper class that provides access to the broadcast setRoutingReady.
+ virtual SetRoutingReadyEvent& getSetRoutingReadyEvent() {
+ return delegate_->getSetRoutingReadyEvent();
+ }
+
+ /// Returns the wrapper class that provides access to the broadcast setRoutingRundown.
+ virtual SetRoutingRundownEvent& getSetRoutingRundownEvent() {
+ return delegate_->getSetRoutingRundownEvent();
+ }
+
+
+
+ /**
+ * Calls ackConnect with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackConnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackConnect with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackConnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckConnectAsyncCallback callback);
+
+ /**
+ * Calls ackDisconnect with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackDisconnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackDisconnect with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackDisconnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckDisconnectAsyncCallback callback);
+
+ /**
+ * Calls ackSetSinkVolume with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSinkVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSinkVolume with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSinkVolumeAsyncCallback callback);
+
+ /**
+ * Calls ackSetSourceVolume with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSourceVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSourceVolume with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSourceVolumeAsyncCallback callback);
+
+ /**
+ * Calls ackSetSourceState with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSourceState(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSourceState with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceStateAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceStateAsyncCallback callback);
+
+ /**
+ * Calls ackSetSinkSoundProperties with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSinkSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSinkSoundProperties with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertiesAsyncCallback callback);
+
+ /**
+ * Calls ackSetSinkSoundProperty with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSinkSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSinkSoundProperty with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertyAsyncCallback callback);
+
+ /**
+ * Calls ackSetSourceSoundProperties with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSourceSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSourceSoundProperties with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertiesAsyncCallback callback);
+
+ /**
+ * Calls ackSetSourceSoundProperty with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetSourceSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetSourceSoundProperty with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertyAsyncCallback callback);
+
+ /**
+ * Calls ackSourceVolumeTick with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSourceVolumeTick(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSourceVolumeTick with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSourceVolumeTickAsync(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, AckSourceVolumeTickAsyncCallback callback);
+
+ /**
+ * Calls ackSinkVolumeTick with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSinkVolumeTick(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSinkVolumeTick with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSinkVolumeTickAsync(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, AckSinkVolumeTickAsyncCallback callback);
+
+ /**
+ * Calls ackCrossFading with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackCrossFading(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackCrossFading with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackCrossFadingAsync(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, AckCrossFadingAsyncCallback callback);
+
+ /**
+ * Calls peekDomain with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void peekDomain(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+ /**
+ * Calls peekDomain with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> peekDomainAsync(const std::string& name, PeekDomainAsyncCallback callback);
+
+ /**
+ * Calls registerDomain with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void registerDomain(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+ /**
+ * Calls registerDomain with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> registerDomainAsync(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, RegisterDomainAsyncCallback callback);
+
+ /**
+ * Calls deregisterDomain with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void deregisterDomain(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ /**
+ * Calls deregisterDomain with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> deregisterDomainAsync(const am_gen::am_domainID_t& domainID, DeregisterDomainAsyncCallback callback);
+
+ /**
+ * Calls registerGateway with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void registerGateway(const am_gen::am_Gateway_s& gatewayData, CommonAPI::CallStatus& callStatus, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error);
+ /**
+ * Calls registerGateway with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> registerGatewayAsync(const am_gen::am_Gateway_s& gatewayData, RegisterGatewayAsyncCallback callback);
+
+ /**
+ * Calls deregisterGateway with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void deregisterGateway(const am_gen::am_gatewayID_t& gatewayID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ /**
+ * Calls deregisterGateway with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> deregisterGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, DeregisterGatewayAsyncCallback callback);
+
+ /**
+ * Calls peekSink with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void peekSink(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+ /**
+ * Calls peekSink with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> peekSinkAsync(const std::string& name, PeekSinkAsyncCallback callback);
+
+ /**
+ * Calls registerSink with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void registerSink(const am_gen::sinkData_s& sinkData, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+ /**
+ * Calls registerSink with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> registerSinkAsync(const am_gen::sinkData_s& sinkData, RegisterSinkAsyncCallback callback);
+
+ /**
+ * Calls deregisterSink with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void deregisterSink(const am_gen::am_sinkID_t& sinkID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ /**
+ * Calls deregisterSink with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> deregisterSinkAsync(const am_gen::am_sinkID_t& sinkID, DeregisterSinkAsyncCallback callback);
+
+ /**
+ * Calls peekSource with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void peekSource(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+ /**
+ * Calls peekSource with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> peekSourceAsync(const std::string& name, PeekSourceAsyncCallback callback);
+
+ /**
+ * Calls registerSource with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void registerSource(const am_gen::sourceData_s& sourceData, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+ /**
+ * Calls registerSource with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> registerSourceAsync(const am_gen::sourceData_s& sourceData, RegisterSourceAsyncCallback callback);
+
+ /**
+ * Calls deregisterSource with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void deregisterSource(const am_gen::am_sourceID_t& sourceID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ /**
+ * Calls deregisterSource with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> deregisterSourceAsync(const am_gen::am_sourceID_t& sourceID, DeregisterSourceAsyncCallback callback);
+
+ /**
+ * Calls registerCrossfader with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void registerCrossfader(const am_gen::crossfaderData_s& crossfaderData, CommonAPI::CallStatus& callStatus, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error);
+ /**
+ * Calls registerCrossfader with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> registerCrossfaderAsync(const am_gen::crossfaderData_s& crossfaderData, RegisterCrossfaderAsyncCallback callback);
+
+ /**
+ * Calls deregisterCrossfader with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void deregisterCrossfader(const am_gen::am_crossfaderID_t& crossfaderID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError);
+ /**
+ * Calls deregisterCrossfader with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> deregisterCrossfaderAsync(const am_gen::am_crossfaderID_t& crossfaderID, DeregisterCrossfaderAsyncCallback callback);
+
+ /**
+ * Calls peekSourceClassID with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void peekSourceClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error);
+ /**
+ * Calls peekSourceClassID with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> peekSourceClassIDAsync(const std::string& name, PeekSourceClassIDAsyncCallback callback);
+
+ /**
+ * Calls peekSinkClassID with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void peekSinkClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error);
+ /**
+ * Calls peekSinkClassID with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> peekSinkClassIDAsync(const std::string& name, PeekSinkClassIDAsyncCallback callback);
+
+ /**
+ * Calls hookInterruptStatusChange with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookInterruptStatusChange(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookInterruptStatusChange with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookInterruptStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, HookInterruptStatusChangeAsyncCallback callback);
+
+ /**
+ * Calls hookDomainRegistrationComplete with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookDomainRegistrationComplete(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookDomainRegistrationComplete with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookDomainRegistrationCompleteAsync(const am_gen::am_domainID_t& domainID, HookDomainRegistrationCompleteAsyncCallback callback);
+
+ /**
+ * Calls hookSinkAvailablityStatusChange with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookSinkAvailablityStatusChange(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookSinkAvailablityStatusChange with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookSinkAvailablityStatusChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, HookSinkAvailablityStatusChangeAsyncCallback callback);
+
+ /**
+ * Calls hookSourceAvailablityStatusChange with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookSourceAvailablityStatusChange(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookSourceAvailablityStatusChange with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookSourceAvailablityStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, HookSourceAvailablityStatusChangeAsyncCallback callback);
+
+ /**
+ * Calls hookDomainStateChange with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookDomainStateChange(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookDomainStateChange with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookDomainStateChangeAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, HookDomainStateChangeAsyncCallback callback);
+
+ /**
+ * Calls hookTimingInformationChanged with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookTimingInformationChanged(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookTimingInformationChanged with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookTimingInformationChangedAsync(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, HookTimingInformationChangedAsyncCallback callback);
+
+ /**
+ * Calls sendChangedData with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void sendChangedData(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls sendChangedData with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> sendChangedDataAsync(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, SendChangedDataAsyncCallback callback);
+
+ /**
+ * Calls confirmRoutingReady with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void confirmRoutingReady(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls confirmRoutingReady with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> confirmRoutingReadyAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingReadyAsyncCallback callback);
+
+ /**
+ * Calls confirmRoutingRundown with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void confirmRoutingRundown(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls confirmRoutingRundown with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> confirmRoutingRundownAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingRundownAsyncCallback callback);
+
+ /**
+ * Calls updateGateway with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void updateGateway(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls updateGateway with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> updateGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, UpdateGatewayAsyncCallback callback);
+
+ /**
+ * Calls updateSink with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void updateSink(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls updateSink with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> updateSinkAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSinkAsyncCallback callback);
+
+ /**
+ * Calls updateSource with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void updateSource(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls updateSource with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> updateSourceAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSourceAsyncCallback callback);
+
+ /**
+ * Calls ackSetVolumes with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSetVolumes(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSetVolumes with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSetVolumesAsync(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, AckSetVolumesAsyncCallback callback);
+
+ /**
+ * Calls ackSinkNotificationConfiguration with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSinkNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSinkNotificationConfiguration with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSinkNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSinkNotificationConfigurationAsyncCallback callback);
+
+ /**
+ * Calls ackSourceNotificationConfiguration with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void ackSourceNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls ackSourceNotificationConfiguration with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> ackSourceNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSourceNotificationConfigurationAsyncCallback callback);
+
+ /**
+ * Calls hookSinkNotificationDataChange with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookSinkNotificationDataChange(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookSinkNotificationDataChange with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookSinkNotificationDataChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, HookSinkNotificationDataChangeAsyncCallback callback);
+
+ /**
+ * Calls hookSourceNotificationDataChange with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void hookSourceNotificationDataChange(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls hookSourceNotificationDataChange with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> hookSourceNotificationDataChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, HookSourceNotificationDataChangeAsyncCallback callback);
+
+ /**
+ * Calls getRoutingReadyState with synchronous semantics.
+ *
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void getRoutingReadyState(CommonAPI::CallStatus& callStatus, bool& readyState);
+ /**
+ * Calls getRoutingReadyState with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> getRoutingReadyStateAsync(GetRoutingReadyStateAsyncCallback callback);
+
+ /// Returns the CommonAPI address of the remote partner this proxy communicates with.
+ virtual std::string getAddress() const;
+
+ /// Returns the domain of the remote partner this proxy communicates with.
+ virtual const std::string& getDomain() const;
+
+ /// Returns the service ID of the remote partner this proxy communicates with.
+ virtual const std::string& getServiceId() const;
+
+ /// Returns the instance ID of the remote partner this proxy communicates with.
+ virtual const std::string& getInstanceId() const;
+
+ /// Returns true if the remote partner for this proxy is available.
+ virtual bool isAvailable() const;
+
+ /**
+ * Returns the wrapper class that is used to (de-)register for notifications about
+ * the availability of the remote partner of this proxy.
+ */
+ virtual CommonAPI::ProxyStatusEvent& getProxyStatusEvent();
+
+ /**
+ * Returns the wrapper class that is used to access version information of the remote
+ * partner of this proxy.
+ */
+ virtual CommonAPI::InterfaceVersionAttribute& getInterfaceVersionAttribute();
+
+ private:
+ std::shared_ptr<RoutingInterfaceProxyBase> delegate_;
+};
+
+
+//
+// RoutingInterfaceProxy Implementation
+//
+template <typename ... _AttributeExtensions>
+RoutingInterfaceProxy<_AttributeExtensions...>::RoutingInterfaceProxy(std::shared_ptr<CommonAPI::Proxy> delegate):
+ delegate_(std::dynamic_pointer_cast<RoutingInterfaceProxyBase>(delegate)),
+ _AttributeExtensions(*(std::dynamic_pointer_cast<RoutingInterfaceProxyBase>(delegate)))... {
+}
+
+template <typename ... _AttributeExtensions>
+RoutingInterfaceProxy<_AttributeExtensions...>::~RoutingInterfaceProxy() {
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackConnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackConnect(handle, connectionID, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackConnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckConnectAsyncCallback callback) {
+ return delegate_->ackConnectAsync(handle, connectionID, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackDisconnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackDisconnect(handle, connectionID, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackDisconnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckDisconnectAsyncCallback callback) {
+ return delegate_->ackDisconnectAsync(handle, connectionID, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSinkVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSinkVolume(handle, volume, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSinkVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSinkVolumeAsyncCallback callback) {
+ return delegate_->ackSetSinkVolumeAsync(handle, volume, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSourceVolume(handle, volume, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSourceVolumeAsyncCallback callback) {
+ return delegate_->ackSetSourceVolumeAsync(handle, volume, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceState(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSourceState(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceStateAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceStateAsyncCallback callback) {
+ return delegate_->ackSetSourceStateAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSinkSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSinkSoundProperties(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSinkSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertiesAsyncCallback callback) {
+ return delegate_->ackSetSinkSoundPropertiesAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSinkSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSinkSoundProperty(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSinkSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertyAsyncCallback callback) {
+ return delegate_->ackSetSinkSoundPropertyAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSourceSoundProperties(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertiesAsyncCallback callback) {
+ return delegate_->ackSetSourceSoundPropertiesAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetSourceSoundProperty(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetSourceSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertyAsyncCallback callback) {
+ return delegate_->ackSetSourceSoundPropertyAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSourceVolumeTick(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSourceVolumeTick(handle, source, volume, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSourceVolumeTickAsync(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, AckSourceVolumeTickAsyncCallback callback) {
+ return delegate_->ackSourceVolumeTickAsync(handle, source, volume, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSinkVolumeTick(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSinkVolumeTick(handle, sink, volume, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSinkVolumeTickAsync(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, AckSinkVolumeTickAsyncCallback callback) {
+ return delegate_->ackSinkVolumeTickAsync(handle, sink, volume, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackCrossFading(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackCrossFading(handle, hotSink, returnError, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackCrossFadingAsync(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, AckCrossFadingAsyncCallback callback) {
+ return delegate_->ackCrossFadingAsync(handle, hotSink, returnError, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::peekDomain(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ delegate_->peekDomain(name, callStatus, domainID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::peekDomainAsync(const std::string& name, PeekDomainAsyncCallback callback) {
+ return delegate_->peekDomainAsync(name, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::registerDomain(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ delegate_->registerDomain(domainData, returnBusname, returnPath, returnInterface, callStatus, domainID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::registerDomainAsync(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, RegisterDomainAsyncCallback callback) {
+ return delegate_->registerDomainAsync(domainData, returnBusname, returnPath, returnInterface, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::deregisterDomain(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ delegate_->deregisterDomain(domainID, callStatus, returnError);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::deregisterDomainAsync(const am_gen::am_domainID_t& domainID, DeregisterDomainAsyncCallback callback) {
+ return delegate_->deregisterDomainAsync(domainID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::registerGateway(const am_gen::am_Gateway_s& gatewayData, CommonAPI::CallStatus& callStatus, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error) {
+ delegate_->registerGateway(gatewayData, callStatus, gatewayID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::registerGatewayAsync(const am_gen::am_Gateway_s& gatewayData, RegisterGatewayAsyncCallback callback) {
+ return delegate_->registerGatewayAsync(gatewayData, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::deregisterGateway(const am_gen::am_gatewayID_t& gatewayID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ delegate_->deregisterGateway(gatewayID, callStatus, returnError);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::deregisterGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, DeregisterGatewayAsyncCallback callback) {
+ return delegate_->deregisterGatewayAsync(gatewayID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::peekSink(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ delegate_->peekSink(name, callStatus, sinkID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::peekSinkAsync(const std::string& name, PeekSinkAsyncCallback callback) {
+ return delegate_->peekSinkAsync(name, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::registerSink(const am_gen::sinkData_s& sinkData, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ delegate_->registerSink(sinkData, callStatus, sinkID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::registerSinkAsync(const am_gen::sinkData_s& sinkData, RegisterSinkAsyncCallback callback) {
+ return delegate_->registerSinkAsync(sinkData, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::deregisterSink(const am_gen::am_sinkID_t& sinkID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ delegate_->deregisterSink(sinkID, callStatus, returnError);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::deregisterSinkAsync(const am_gen::am_sinkID_t& sinkID, DeregisterSinkAsyncCallback callback) {
+ return delegate_->deregisterSinkAsync(sinkID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::peekSource(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ delegate_->peekSource(name, callStatus, sourceID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::peekSourceAsync(const std::string& name, PeekSourceAsyncCallback callback) {
+ return delegate_->peekSourceAsync(name, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::registerSource(const am_gen::sourceData_s& sourceData, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ delegate_->registerSource(sourceData, callStatus, sourceID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::registerSourceAsync(const am_gen::sourceData_s& sourceData, RegisterSourceAsyncCallback callback) {
+ return delegate_->registerSourceAsync(sourceData, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::deregisterSource(const am_gen::am_sourceID_t& sourceID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ delegate_->deregisterSource(sourceID, callStatus, returnError);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::deregisterSourceAsync(const am_gen::am_sourceID_t& sourceID, DeregisterSourceAsyncCallback callback) {
+ return delegate_->deregisterSourceAsync(sourceID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::registerCrossfader(const am_gen::crossfaderData_s& crossfaderData, CommonAPI::CallStatus& callStatus, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error) {
+ delegate_->registerCrossfader(crossfaderData, callStatus, crossfaderID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::registerCrossfaderAsync(const am_gen::crossfaderData_s& crossfaderData, RegisterCrossfaderAsyncCallback callback) {
+ return delegate_->registerCrossfaderAsync(crossfaderData, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::deregisterCrossfader(const am_gen::am_crossfaderID_t& crossfaderID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) {
+ delegate_->deregisterCrossfader(crossfaderID, callStatus, returnError);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::deregisterCrossfaderAsync(const am_gen::am_crossfaderID_t& crossfaderID, DeregisterCrossfaderAsyncCallback callback) {
+ return delegate_->deregisterCrossfaderAsync(crossfaderID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::peekSourceClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error) {
+ delegate_->peekSourceClassID(name, callStatus, sourceClassID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::peekSourceClassIDAsync(const std::string& name, PeekSourceClassIDAsyncCallback callback) {
+ return delegate_->peekSourceClassIDAsync(name, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::peekSinkClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error) {
+ delegate_->peekSinkClassID(name, callStatus, sinkClassID, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::peekSinkClassIDAsync(const std::string& name, PeekSinkClassIDAsyncCallback callback) {
+ return delegate_->peekSinkClassIDAsync(name, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookInterruptStatusChange(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookInterruptStatusChange(sourceID, interruptState, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookInterruptStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, HookInterruptStatusChangeAsyncCallback callback) {
+ return delegate_->hookInterruptStatusChangeAsync(sourceID, interruptState, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookDomainRegistrationComplete(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookDomainRegistrationComplete(domainID, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookDomainRegistrationCompleteAsync(const am_gen::am_domainID_t& domainID, HookDomainRegistrationCompleteAsyncCallback callback) {
+ return delegate_->hookDomainRegistrationCompleteAsync(domainID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookSinkAvailablityStatusChange(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookSinkAvailablityStatusChange(sinkID, availability, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookSinkAvailablityStatusChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, HookSinkAvailablityStatusChangeAsyncCallback callback) {
+ return delegate_->hookSinkAvailablityStatusChangeAsync(sinkID, availability, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookSourceAvailablityStatusChange(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookSourceAvailablityStatusChange(sourceID, availability, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookSourceAvailablityStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, HookSourceAvailablityStatusChangeAsyncCallback callback) {
+ return delegate_->hookSourceAvailablityStatusChangeAsync(sourceID, availability, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookDomainStateChange(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookDomainStateChange(domainID, domainState, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookDomainStateChangeAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, HookDomainStateChangeAsyncCallback callback) {
+ return delegate_->hookDomainStateChangeAsync(domainID, domainState, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookTimingInformationChanged(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookTimingInformationChanged(connectionID, delay, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookTimingInformationChangedAsync(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, HookTimingInformationChangedAsyncCallback callback) {
+ return delegate_->hookTimingInformationChangedAsync(connectionID, delay, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::sendChangedData(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, CommonAPI::CallStatus& callStatus) {
+ delegate_->sendChangedData(earlyData_volumes, earlyData_soundproperties, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::sendChangedDataAsync(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, SendChangedDataAsyncCallback callback) {
+ return delegate_->sendChangedDataAsync(earlyData_volumes, earlyData_soundproperties, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::confirmRoutingReady(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) {
+ delegate_->confirmRoutingReady(domainID, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::confirmRoutingReadyAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingReadyAsyncCallback callback) {
+ return delegate_->confirmRoutingReadyAsync(domainID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::confirmRoutingRundown(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) {
+ delegate_->confirmRoutingRundown(domainID, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::confirmRoutingRundownAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingRundownAsyncCallback callback) {
+ return delegate_->confirmRoutingRundownAsync(domainID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::updateGateway(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, CommonAPI::CallStatus& callStatus) {
+ delegate_->updateGateway(gatewayID, listSourceFormats, listSinkFormats, convertionMatrix, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::updateGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, UpdateGatewayAsyncCallback callback) {
+ return delegate_->updateGatewayAsync(gatewayID, listSourceFormats, listSinkFormats, convertionMatrix, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::updateSink(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus) {
+ delegate_->updateSink(sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::updateSinkAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSinkAsyncCallback callback) {
+ return delegate_->updateSinkAsync(sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::updateSource(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus) {
+ delegate_->updateSource(sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::updateSourceAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSourceAsyncCallback callback) {
+ return delegate_->updateSourceAsync(sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSetVolumes(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSetVolumes(handle, listVolumes, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSetVolumesAsync(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, AckSetVolumesAsyncCallback callback) {
+ return delegate_->ackSetVolumesAsync(handle, listVolumes, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSinkNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSinkNotificationConfiguration(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSinkNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSinkNotificationConfigurationAsyncCallback callback) {
+ return delegate_->ackSinkNotificationConfigurationAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::ackSourceNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) {
+ delegate_->ackSourceNotificationConfiguration(handle, error, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::ackSourceNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSourceNotificationConfigurationAsyncCallback callback) {
+ return delegate_->ackSourceNotificationConfigurationAsync(handle, error, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookSinkNotificationDataChange(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookSinkNotificationDataChange(sinkID, payload, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookSinkNotificationDataChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, HookSinkNotificationDataChangeAsyncCallback callback) {
+ return delegate_->hookSinkNotificationDataChangeAsync(sinkID, payload, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::hookSourceNotificationDataChange(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus) {
+ delegate_->hookSourceNotificationDataChange(sourceID, payload, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::hookSourceNotificationDataChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, HookSourceNotificationDataChangeAsyncCallback callback) {
+ return delegate_->hookSourceNotificationDataChangeAsync(sourceID, payload, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingInterfaceProxy<_AttributeExtensions...>::getRoutingReadyState(CommonAPI::CallStatus& callStatus, bool& readyState) {
+ delegate_->getRoutingReadyState(callStatus, readyState);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingInterfaceProxy<_AttributeExtensions...>::getRoutingReadyStateAsync(GetRoutingReadyStateAsyncCallback callback) {
+ return delegate_->getRoutingReadyStateAsync(callback);
+}
+
+
+template <typename ... _AttributeExtensions>
+std::string RoutingInterfaceProxy<_AttributeExtensions...>::getAddress() const {
+ return delegate_->getAddress();
+}
+
+template <typename ... _AttributeExtensions>
+const std::string& RoutingInterfaceProxy<_AttributeExtensions...>::getDomain() const {
+ return delegate_->getDomain();
+}
+
+template <typename ... _AttributeExtensions>
+const std::string& RoutingInterfaceProxy<_AttributeExtensions...>::getServiceId() const {
+ return delegate_->getServiceId();
+}
+
+template <typename ... _AttributeExtensions>
+const std::string& RoutingInterfaceProxy<_AttributeExtensions...>::getInstanceId() const {
+ return delegate_->getInstanceId();
+}
+
+template <typename ... _AttributeExtensions>
+bool RoutingInterfaceProxy<_AttributeExtensions...>::isAvailable() const {
+ return delegate_->isAvailable();
+}
+
+template <typename ... _AttributeExtensions>
+CommonAPI::ProxyStatusEvent& RoutingInterfaceProxy<_AttributeExtensions...>::getProxyStatusEvent() {
+ return delegate_->getProxyStatusEvent();
+}
+
+template <typename ... _AttributeExtensions>
+CommonAPI::InterfaceVersionAttribute& RoutingInterfaceProxy<_AttributeExtensions...>::getInterfaceVersionAttribute() {
+ return delegate_->getInterfaceVersionAttribute();
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_PROXY_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxyBase.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxyBase.h
new file mode 100644
index 0000000..f0726f5
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceProxyBase.h
@@ -0,0 +1,242 @@
+ /*
+ * This file was generated by the CommonAPI Generators.
+ *
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+ #ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_PROXY_BASE_H_
+ #define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_PROXY_BASE_H_
+
+ #include "RoutingInterface.h"
+
+
+ #include <org/genivi/audiomanager/am_gen.h>
+
+ #define COMMONAPI_INTERNAL_COMPILATION
+
+ #include <CommonAPI/InputStream.h>
+ #include <CommonAPI/OutputStream.h>
+ #include <CommonAPI/SerializableStruct.h>
+ #include <cstdint>
+ #include <string>
+ #include <vector>
+
+ #include <CommonAPI/Event.h>
+ #include <CommonAPI/Proxy.h>
+ #include <functional>
+ #include <future>
+
+ #undef COMMONAPI_INTERNAL_COMPILATION
+
+ namespace org {
+ namespace genivi {
+ namespace audiomanager {
+
+ class RoutingInterfaceProxyBase: virtual public CommonAPI::Proxy {
+ public:
+ typedef CommonAPI::Event<> SetRoutingReadyEvent;
+ typedef CommonAPI::Event<> SetRoutingRundownEvent;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckConnectAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckDisconnectAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSinkVolumeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSourceVolumeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSourceStateAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSinkSoundPropertiesAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSinkSoundPropertyAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSourceSoundPropertiesAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetSourceSoundPropertyAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSourceVolumeTickAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSinkVolumeTickAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckCrossFadingAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_domainID_t&, const am_gen::am_Error_e&)> PeekDomainAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_domainID_t&, const am_gen::am_Error_e&)> RegisterDomainAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> DeregisterDomainAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_gatewayID_t&, const am_gen::am_Error_e&)> RegisterGatewayAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> DeregisterGatewayAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_sinkID_t&, const am_gen::am_Error_e&)> PeekSinkAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_sinkID_t&, const am_gen::am_Error_e&)> RegisterSinkAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> DeregisterSinkAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_sourceID_t&, const am_gen::am_Error_e&)> PeekSourceAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_sourceID_t&, const am_gen::am_Error_e&)> RegisterSourceAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> DeregisterSourceAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_crossfaderID_t&, const am_gen::am_Error_e&)> RegisterCrossfaderAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> DeregisterCrossfaderAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_sourceClass_t&, const am_gen::am_Error_e&)> PeekSourceClassIDAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_sinkClass_t&, const am_gen::am_Error_e&)> PeekSinkClassIDAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookInterruptStatusChangeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookDomainRegistrationCompleteAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookSinkAvailablityStatusChangeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookSourceAvailablityStatusChangeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookDomainStateChangeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookTimingInformationChangedAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> SendChangedDataAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> ConfirmRoutingReadyAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> ConfirmRoutingRundownAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> UpdateGatewayAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> UpdateSinkAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> UpdateSourceAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSetVolumesAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSinkNotificationConfigurationAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AckSourceNotificationConfigurationAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookSinkNotificationDataChangeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> HookSourceNotificationDataChangeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const bool&)> GetRoutingReadyStateAsyncCallback;
+
+
+ virtual SetRoutingReadyEvent& getSetRoutingReadyEvent() = 0;
+ virtual SetRoutingRundownEvent& getSetRoutingRundownEvent() = 0;
+
+
+ virtual void ackConnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackConnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckConnectAsyncCallback callback) = 0;
+
+ virtual void ackDisconnect(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackDisconnectAsync(const uint16_t& handle, const am_gen::am_connectionID_t& connectionID, const uint16_t& error, AckDisconnectAsyncCallback callback) = 0;
+
+ virtual void ackSetSinkVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSinkVolumeAsyncCallback callback) = 0;
+
+ virtual void ackSetSourceVolume(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceVolumeAsync(const uint16_t& handle, const am_gen::am_volume_t& volume, const uint16_t& error, AckSetSourceVolumeAsyncCallback callback) = 0;
+
+ virtual void ackSetSourceState(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceStateAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceStateAsyncCallback callback) = 0;
+
+ virtual void ackSetSinkSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertiesAsyncCallback callback) = 0;
+
+ virtual void ackSetSinkSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSinkSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSinkSoundPropertyAsyncCallback callback) = 0;
+
+ virtual void ackSetSourceSoundProperties(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceSoundPropertiesAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertiesAsyncCallback callback) = 0;
+
+ virtual void ackSetSourceSoundProperty(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetSourceSoundPropertyAsync(const uint16_t& handle, const uint16_t& error, AckSetSourceSoundPropertyAsyncCallback callback) = 0;
+
+ virtual void ackSourceVolumeTick(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSourceVolumeTickAsync(const uint16_t& handle, const am_gen::am_sourceID_t& source, const am_gen::am_volume_t& volume, AckSourceVolumeTickAsyncCallback callback) = 0;
+
+ virtual void ackSinkVolumeTick(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSinkVolumeTickAsync(const uint16_t& handle, const am_gen::am_sinkID_t& sink, const am_gen::am_volume_t& volume, AckSinkVolumeTickAsyncCallback callback) = 0;
+
+ virtual void ackCrossFading(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackCrossFadingAsync(const uint16_t& handle, const am_gen::am_HotSink_e& hotSink, const am_gen::am_Error_e& returnError, AckCrossFadingAsyncCallback callback) = 0;
+
+ virtual void peekDomain(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> peekDomainAsync(const std::string& name, PeekDomainAsyncCallback callback) = 0;
+
+ virtual void registerDomain(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, CommonAPI::CallStatus& callStatus, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> registerDomainAsync(const am_gen::am_Domain_s& domainData, const std::string& returnBusname, const std::string& returnPath, const std::string& returnInterface, RegisterDomainAsyncCallback callback) = 0;
+
+ virtual void deregisterDomain(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) = 0;
+ virtual std::future<CommonAPI::CallStatus> deregisterDomainAsync(const am_gen::am_domainID_t& domainID, DeregisterDomainAsyncCallback callback) = 0;
+
+ virtual void registerGateway(const am_gen::am_Gateway_s& gatewayData, CommonAPI::CallStatus& callStatus, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> registerGatewayAsync(const am_gen::am_Gateway_s& gatewayData, RegisterGatewayAsyncCallback callback) = 0;
+
+ virtual void deregisterGateway(const am_gen::am_gatewayID_t& gatewayID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) = 0;
+ virtual std::future<CommonAPI::CallStatus> deregisterGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, DeregisterGatewayAsyncCallback callback) = 0;
+
+ virtual void peekSink(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> peekSinkAsync(const std::string& name, PeekSinkAsyncCallback callback) = 0;
+
+ virtual void registerSink(const am_gen::sinkData_s& sinkData, CommonAPI::CallStatus& callStatus, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> registerSinkAsync(const am_gen::sinkData_s& sinkData, RegisterSinkAsyncCallback callback) = 0;
+
+ virtual void deregisterSink(const am_gen::am_sinkID_t& sinkID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) = 0;
+ virtual std::future<CommonAPI::CallStatus> deregisterSinkAsync(const am_gen::am_sinkID_t& sinkID, DeregisterSinkAsyncCallback callback) = 0;
+
+ virtual void peekSource(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> peekSourceAsync(const std::string& name, PeekSourceAsyncCallback callback) = 0;
+
+ virtual void registerSource(const am_gen::sourceData_s& sourceData, CommonAPI::CallStatus& callStatus, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> registerSourceAsync(const am_gen::sourceData_s& sourceData, RegisterSourceAsyncCallback callback) = 0;
+
+ virtual void deregisterSource(const am_gen::am_sourceID_t& sourceID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) = 0;
+ virtual std::future<CommonAPI::CallStatus> deregisterSourceAsync(const am_gen::am_sourceID_t& sourceID, DeregisterSourceAsyncCallback callback) = 0;
+
+ virtual void registerCrossfader(const am_gen::crossfaderData_s& crossfaderData, CommonAPI::CallStatus& callStatus, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> registerCrossfaderAsync(const am_gen::crossfaderData_s& crossfaderData, RegisterCrossfaderAsyncCallback callback) = 0;
+
+ virtual void deregisterCrossfader(const am_gen::am_crossfaderID_t& crossfaderID, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& returnError) = 0;
+ virtual std::future<CommonAPI::CallStatus> deregisterCrossfaderAsync(const am_gen::am_crossfaderID_t& crossfaderID, DeregisterCrossfaderAsyncCallback callback) = 0;
+
+ virtual void peekSourceClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> peekSourceClassIDAsync(const std::string& name, PeekSourceClassIDAsyncCallback callback) = 0;
+
+ virtual void peekSinkClassID(const std::string& name, CommonAPI::CallStatus& callStatus, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> peekSinkClassIDAsync(const std::string& name, PeekSinkClassIDAsyncCallback callback) = 0;
+
+ virtual void hookInterruptStatusChange(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookInterruptStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const uint16_t& interruptState, HookInterruptStatusChangeAsyncCallback callback) = 0;
+
+ virtual void hookDomainRegistrationComplete(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookDomainRegistrationCompleteAsync(const am_gen::am_domainID_t& domainID, HookDomainRegistrationCompleteAsyncCallback callback) = 0;
+
+ virtual void hookSinkAvailablityStatusChange(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookSinkAvailablityStatusChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_Availability_s& availability, HookSinkAvailablityStatusChangeAsyncCallback callback) = 0;
+
+ virtual void hookSourceAvailablityStatusChange(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookSourceAvailablityStatusChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_Availability_s& availability, HookSourceAvailablityStatusChangeAsyncCallback callback) = 0;
+
+ virtual void hookDomainStateChange(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookDomainStateChangeAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, HookDomainStateChangeAsyncCallback callback) = 0;
+
+ virtual void hookTimingInformationChanged(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookTimingInformationChangedAsync(const am_gen::am_connectionID_t& connectionID, const int16_t& delay, HookTimingInformationChangedAsyncCallback callback) = 0;
+
+ virtual void sendChangedData(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> sendChangedDataAsync(const am_gen::am_EarlyData_l& earlyData_volumes, const am_gen::am_EarlyData_l& earlyData_soundproperties, SendChangedDataAsyncCallback callback) = 0;
+
+ virtual void confirmRoutingReady(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> confirmRoutingReadyAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingReadyAsyncCallback callback) = 0;
+
+ virtual void confirmRoutingRundown(const am_gen::am_domainID_t& domainID, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> confirmRoutingRundownAsync(const am_gen::am_domainID_t& domainID, ConfirmRoutingRundownAsyncCallback callback) = 0;
+
+ virtual void updateGateway(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> updateGatewayAsync(const am_gen::am_gatewayID_t& gatewayID, const am_gen::am_ConnectionFormat_L& listSourceFormats, const am_gen::am_ConnectionFormat_L& listSinkFormats, const am_gen::bool_L& convertionMatrix, UpdateGatewayAsyncCallback callback) = 0;
+
+ virtual void updateSink(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> updateSinkAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::am_sinkClass_t& sinkClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSinkAsyncCallback callback) = 0;
+
+ virtual void updateSource(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> updateSourceAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::am_sourceClass_t& sourceClassID, const am_gen::am_SoundProperty_L& listSoundProperties, const am_gen::am_ConnectionFormat_L& listConnectionFormats, const am_gen::am_MainSoundProperty_L& listMainSoundProperties, UpdateSourceAsyncCallback callback) = 0;
+
+ virtual void ackSetVolumes(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSetVolumesAsync(const uint16_t& handle, const am_gen::am_Volumes_l& listVolumes, const uint16_t& error, AckSetVolumesAsyncCallback callback) = 0;
+
+ virtual void ackSinkNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSinkNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSinkNotificationConfigurationAsyncCallback callback) = 0;
+
+ virtual void ackSourceNotificationConfiguration(const uint16_t& handle, const uint16_t& error, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> ackSourceNotificationConfigurationAsync(const uint16_t& handle, const uint16_t& error, AckSourceNotificationConfigurationAsyncCallback callback) = 0;
+
+ virtual void hookSinkNotificationDataChange(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookSinkNotificationDataChangeAsync(const am_gen::am_sinkID_t& sinkID, const am_gen::notificationPayload_s& payload, HookSinkNotificationDataChangeAsyncCallback callback) = 0;
+
+ virtual void hookSourceNotificationDataChange(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> hookSourceNotificationDataChangeAsync(const am_gen::am_sourceID_t& sourceID, const am_gen::notificationPayload_s& payload, HookSourceNotificationDataChangeAsyncCallback callback) = 0;
+
+ virtual void getRoutingReadyState(CommonAPI::CallStatus& callStatus, bool& readyState) = 0;
+ virtual std::future<CommonAPI::CallStatus> getRoutingReadyStateAsync(GetRoutingReadyStateAsyncCallback callback) = 0;
+ };
+
+ } // namespace audiomanager
+ } // namespace genivi
+ } // namespace org
+
+ #endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_PROXY_BASE_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStub.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStub.h
new file mode 100644
index 0000000..a6fc8f3
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStub.h
@@ -0,0 +1,198 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_STUB_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_STUB_H_
+
+
+
+#include <org/genivi/audiomanager/am_gen.h>
+
+#include "RoutingInterface.h"
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/InputStream.h>
+#include <CommonAPI/OutputStream.h>
+#include <CommonAPI/SerializableStruct.h>
+#include <cstdint>
+#include <string>
+#include <vector>
+
+#include <CommonAPI/Stub.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+/**
+ * Receives messages from remote and handles all dispatching of deserialized calls
+ * to a stub for the service RoutingInterface. Also provides means to send broadcasts
+ * and attribute-changed-notifications of observable attributes as defined by this service.
+ * An application developer should not need to bother with this class.
+ */
+class RoutingInterfaceStubAdapter: virtual public CommonAPI::StubAdapter, public RoutingInterface {
+ public:
+
+ /**
+ * Sends a broadcast event for setRoutingReady. Should not be called directly.
+ * Instead, the "fire<broadcastName>Event" methods of the stub should be used.
+ */
+ virtual void fireSetRoutingReadyEvent() = 0;
+ /**
+ * Sends a broadcast event for setRoutingRundown. Should not be called directly.
+ * Instead, the "fire<broadcastName>Event" methods of the stub should be used.
+ */
+ virtual void fireSetRoutingRundownEvent() = 0;
+};
+
+
+/**
+ * Defines the necessary callbacks to handle remote set events related to the attributes
+ * defined in the IDL description for RoutingInterface.
+ * For each attribute two callbacks are defined:
+ * - a verification callback that allows to verify the requested value and to prevent setting
+ * e.g. an invalid value ("onRemoteSet<AttributeName>").
+ * - an action callback to do local work after the attribute value has been changed
+ * ("onRemote<AttributeName>Changed").
+ *
+ * This class and the one below are the ones an application developer needs to have
+ * a look at if he wants to implement a service.
+ */
+class RoutingInterfaceStubRemoteEvent {
+ public:
+ virtual ~RoutingInterfaceStubRemoteEvent() { }
+
+};
+
+
+/**
+ * Defines the interface that must be implemented by any class that should provide
+ * the service RoutingInterface to remote clients.
+ * This class and the one above are the ones an application developer needs to have
+ * a look at if he wants to implement a service.
+ */
+class RoutingInterfaceStub : public CommonAPI::Stub<RoutingInterfaceStubAdapter , RoutingInterfaceStubRemoteEvent> {
+ public:
+ virtual ~RoutingInterfaceStub() { }
+
+
+ /// This is the method that will be called on remote calls on the method ackConnect.
+ virtual void ackConnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackDisconnect.
+ virtual void ackDisconnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSinkVolume.
+ virtual void ackSetSinkVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSourceVolume.
+ virtual void ackSetSourceVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSourceState.
+ virtual void ackSetSourceState(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSinkSoundProperties.
+ virtual void ackSetSinkSoundProperties(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSinkSoundProperty.
+ virtual void ackSetSinkSoundProperty(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSourceSoundProperties.
+ virtual void ackSetSourceSoundProperties(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetSourceSoundProperty.
+ virtual void ackSetSourceSoundProperty(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSourceVolumeTick.
+ virtual void ackSourceVolumeTick(uint16_t handle, am_gen::am_sourceID_t source, am_gen::am_volume_t volume) = 0;
+ /// This is the method that will be called on remote calls on the method ackSinkVolumeTick.
+ virtual void ackSinkVolumeTick(uint16_t handle, am_gen::am_sinkID_t sink, am_gen::am_volume_t volume) = 0;
+ /// This is the method that will be called on remote calls on the method ackCrossFading.
+ virtual void ackCrossFading(uint16_t handle, am_gen::am_HotSink_e hotSink, am_gen::am_Error_e returnError) = 0;
+ /// This is the method that will be called on remote calls on the method peekDomain.
+ virtual void peekDomain(std::string name, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method registerDomain.
+ virtual void registerDomain(am_gen::am_Domain_s domainData, std::string returnBusname, std::string returnPath, std::string returnInterface, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method deregisterDomain.
+ virtual void deregisterDomain(am_gen::am_domainID_t domainID, am_gen::am_Error_e& returnError) = 0;
+ /// This is the method that will be called on remote calls on the method registerGateway.
+ virtual void registerGateway(am_gen::am_Gateway_s gatewayData, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method deregisterGateway.
+ virtual void deregisterGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_Error_e& returnError) = 0;
+ /// This is the method that will be called on remote calls on the method peekSink.
+ virtual void peekSink(std::string name, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method registerSink.
+ virtual void registerSink(am_gen::sinkData_s sinkData, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method deregisterSink.
+ virtual void deregisterSink(am_gen::am_sinkID_t sinkID, am_gen::am_Error_e& returnError) = 0;
+ /// This is the method that will be called on remote calls on the method peekSource.
+ virtual void peekSource(std::string name, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method registerSource.
+ virtual void registerSource(am_gen::sourceData_s sourceData, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method deregisterSource.
+ virtual void deregisterSource(am_gen::am_sourceID_t sourceID, am_gen::am_Error_e& returnError) = 0;
+ /// This is the method that will be called on remote calls on the method registerCrossfader.
+ virtual void registerCrossfader(am_gen::crossfaderData_s crossfaderData, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method deregisterCrossfader.
+ virtual void deregisterCrossfader(am_gen::am_crossfaderID_t crossfaderID, am_gen::am_Error_e& returnError) = 0;
+ /// This is the method that will be called on remote calls on the method peekSourceClassID.
+ virtual void peekSourceClassID(std::string name, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method peekSinkClassID.
+ virtual void peekSinkClassID(std::string name, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method hookInterruptStatusChange.
+ virtual void hookInterruptStatusChange(am_gen::am_sourceID_t sourceID, uint16_t interruptState) = 0;
+ /// This is the method that will be called on remote calls on the method hookDomainRegistrationComplete.
+ virtual void hookDomainRegistrationComplete(am_gen::am_domainID_t domainID) = 0;
+ /// This is the method that will be called on remote calls on the method hookSinkAvailablityStatusChange.
+ virtual void hookSinkAvailablityStatusChange(am_gen::am_sinkID_t sinkID, am_gen::am_Availability_s availability) = 0;
+ /// This is the method that will be called on remote calls on the method hookSourceAvailablityStatusChange.
+ virtual void hookSourceAvailablityStatusChange(am_gen::am_sourceID_t sourceID, am_gen::am_Availability_s availability) = 0;
+ /// This is the method that will be called on remote calls on the method hookDomainStateChange.
+ virtual void hookDomainStateChange(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState) = 0;
+ /// This is the method that will be called on remote calls on the method hookTimingInformationChanged.
+ virtual void hookTimingInformationChanged(am_gen::am_connectionID_t connectionID, int16_t delay) = 0;
+ /// This is the method that will be called on remote calls on the method sendChangedData.
+ virtual void sendChangedData(am_gen::am_EarlyData_l earlyData_volumes, am_gen::am_EarlyData_l earlyData_soundproperties) = 0;
+ /// This is the method that will be called on remote calls on the method confirmRoutingReady.
+ virtual void confirmRoutingReady(am_gen::am_domainID_t domainID) = 0;
+ /// This is the method that will be called on remote calls on the method confirmRoutingRundown.
+ virtual void confirmRoutingRundown(am_gen::am_domainID_t domainID) = 0;
+ /// This is the method that will be called on remote calls on the method updateGateway.
+ virtual void updateGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_ConnectionFormat_L listSourceFormats, am_gen::am_ConnectionFormat_L listSinkFormats, am_gen::bool_L convertionMatrix) = 0;
+ /// This is the method that will be called on remote calls on the method updateSink.
+ virtual void updateSink(am_gen::am_sinkID_t sinkID, am_gen::am_sinkClass_t sinkClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties) = 0;
+ /// This is the method that will be called on remote calls on the method updateSource.
+ virtual void updateSource(am_gen::am_sourceID_t sourceID, am_gen::am_sourceClass_t sourceClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties) = 0;
+ /// This is the method that will be called on remote calls on the method ackSetVolumes.
+ virtual void ackSetVolumes(uint16_t handle, am_gen::am_Volumes_l listVolumes, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSinkNotificationConfiguration.
+ virtual void ackSinkNotificationConfiguration(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method ackSourceNotificationConfiguration.
+ virtual void ackSourceNotificationConfiguration(uint16_t handle, uint16_t error) = 0;
+ /// This is the method that will be called on remote calls on the method hookSinkNotificationDataChange.
+ virtual void hookSinkNotificationDataChange(am_gen::am_sinkID_t sinkID, am_gen::notificationPayload_s payload) = 0;
+ /// This is the method that will be called on remote calls on the method hookSourceNotificationDataChange.
+ virtual void hookSourceNotificationDataChange(am_gen::am_sourceID_t sourceID, am_gen::notificationPayload_s payload) = 0;
+ /// This is the method that will be called on remote calls on the method getRoutingReadyState.
+ virtual void getRoutingReadyState(bool& readyState) = 0;
+
+ /// Sends a broadcast event for setRoutingReady.
+ virtual void fireSetRoutingReadyEvent() = 0;
+ /// Sends a broadcast event for setRoutingRundown.
+ virtual void fireSetRoutingRundownEvent() = 0;
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_STUB_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.cpp
new file mode 100644
index 0000000..ca0b6c2
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.cpp
@@ -0,0 +1,229 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include <org/genivi/audiomanager/RoutingInterfaceStubDefault.h>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+RoutingInterfaceStubDefault::RoutingInterfaceStubDefault():
+ remoteEventHandler_(this) {
+}
+
+RoutingInterfaceStubRemoteEvent* RoutingInterfaceStubDefault::initStubAdapter(const std::shared_ptr<RoutingInterfaceStubAdapter>& stubAdapter) {
+ stubAdapter_ = stubAdapter;
+ return &remoteEventHandler_;
+}
+
+
+void RoutingInterfaceStubDefault::ackConnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackDisconnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSinkVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSourceVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSourceState(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSinkSoundProperties(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSinkSoundProperty(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSourceSoundProperties(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetSourceSoundProperty(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSourceVolumeTick(uint16_t handle, am_gen::am_sourceID_t source, am_gen::am_volume_t volume) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSinkVolumeTick(uint16_t handle, am_gen::am_sinkID_t sink, am_gen::am_volume_t volume) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackCrossFading(uint16_t handle, am_gen::am_HotSink_e hotSink, am_gen::am_Error_e returnError) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::peekDomain(std::string name, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::registerDomain(am_gen::am_Domain_s domainData, std::string returnBusname, std::string returnPath, std::string returnInterface, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::deregisterDomain(am_gen::am_domainID_t domainID, am_gen::am_Error_e& returnError) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::registerGateway(am_gen::am_Gateway_s gatewayData, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::deregisterGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_Error_e& returnError) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::peekSink(std::string name, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::registerSink(am_gen::sinkData_s sinkData, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::deregisterSink(am_gen::am_sinkID_t sinkID, am_gen::am_Error_e& returnError) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::peekSource(std::string name, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::registerSource(am_gen::sourceData_s sourceData, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::deregisterSource(am_gen::am_sourceID_t sourceID, am_gen::am_Error_e& returnError) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::registerCrossfader(am_gen::crossfaderData_s crossfaderData, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::deregisterCrossfader(am_gen::am_crossfaderID_t crossfaderID, am_gen::am_Error_e& returnError) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::peekSourceClassID(std::string name, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::peekSinkClassID(std::string name, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookInterruptStatusChange(am_gen::am_sourceID_t sourceID, uint16_t interruptState) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookDomainRegistrationComplete(am_gen::am_domainID_t domainID) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookSinkAvailablityStatusChange(am_gen::am_sinkID_t sinkID, am_gen::am_Availability_s availability) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookSourceAvailablityStatusChange(am_gen::am_sourceID_t sourceID, am_gen::am_Availability_s availability) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookDomainStateChange(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookTimingInformationChanged(am_gen::am_connectionID_t connectionID, int16_t delay) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::sendChangedData(am_gen::am_EarlyData_l earlyData_volumes, am_gen::am_EarlyData_l earlyData_soundproperties) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::confirmRoutingReady(am_gen::am_domainID_t domainID) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::confirmRoutingRundown(am_gen::am_domainID_t domainID) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::updateGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_ConnectionFormat_L listSourceFormats, am_gen::am_ConnectionFormat_L listSinkFormats, am_gen::bool_L convertionMatrix) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::updateSink(am_gen::am_sinkID_t sinkID, am_gen::am_sinkClass_t sinkClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::updateSource(am_gen::am_sourceID_t sourceID, am_gen::am_sourceClass_t sourceClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSetVolumes(uint16_t handle, am_gen::am_Volumes_l listVolumes, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSinkNotificationConfiguration(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::ackSourceNotificationConfiguration(uint16_t handle, uint16_t error) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookSinkNotificationDataChange(am_gen::am_sinkID_t sinkID, am_gen::notificationPayload_s payload) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::hookSourceNotificationDataChange(am_gen::am_sourceID_t sourceID, am_gen::notificationPayload_s payload) {
+ // No operation in default
+}
+
+void RoutingInterfaceStubDefault::getRoutingReadyState(bool& readyState) {
+ // No operation in default
+}
+
+
+void RoutingInterfaceStubDefault::fireSetRoutingReadyEvent() {
+ stubAdapter_->fireSetRoutingReadyEvent();
+}
+void RoutingInterfaceStubDefault::fireSetRoutingRundownEvent() {
+ stubAdapter_->fireSetRoutingRundownEvent();
+}
+
+RoutingInterfaceStubDefault::RemoteEventHandler::RemoteEventHandler(RoutingInterfaceStubDefault* defaultStub):
+ defaultStub_(defaultStub) {
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.h
new file mode 100644
index 0000000..b5ecd98
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingInterfaceStubDefault.h
@@ -0,0 +1,160 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Interface_STUB_DEFAULT_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Interface_STUB_DEFAULT_H_
+
+#include <org/genivi/audiomanager/RoutingInterfaceStub.h>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+/**
+ * Provides a default implementation for RoutingInterfaceStubRemoteEvent and
+ * RoutingInterfaceStub. Method callbacks have an empty implementation,
+ * remote set calls on attributes will always change the value of the attribute
+ * to the one received.
+ *
+ * Override this stub if you only want to provide a subset of the functionality
+ * that would be defined for this service, and/or if you do not need any non-default
+ * behaviour.
+ */
+class RoutingInterfaceStubDefault : public RoutingInterfaceStub {
+ public:
+ RoutingInterfaceStubDefault();
+
+ RoutingInterfaceStubRemoteEvent* initStubAdapter(const std::shared_ptr<RoutingInterfaceStubAdapter>& stubAdapter);
+
+
+ virtual void ackConnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error);
+
+ virtual void ackDisconnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error);
+
+ virtual void ackSetSinkVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error);
+
+ virtual void ackSetSourceVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error);
+
+ virtual void ackSetSourceState(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSinkSoundProperties(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSinkSoundProperty(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSourceSoundProperties(uint16_t handle, uint16_t error);
+
+ virtual void ackSetSourceSoundProperty(uint16_t handle, uint16_t error);
+
+ virtual void ackSourceVolumeTick(uint16_t handle, am_gen::am_sourceID_t source, am_gen::am_volume_t volume);
+
+ virtual void ackSinkVolumeTick(uint16_t handle, am_gen::am_sinkID_t sink, am_gen::am_volume_t volume);
+
+ virtual void ackCrossFading(uint16_t handle, am_gen::am_HotSink_e hotSink, am_gen::am_Error_e returnError);
+
+ virtual void peekDomain(std::string name, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+
+ virtual void registerDomain(am_gen::am_Domain_s domainData, std::string returnBusname, std::string returnPath, std::string returnInterface, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error);
+
+ virtual void deregisterDomain(am_gen::am_domainID_t domainID, am_gen::am_Error_e& returnError);
+
+ virtual void registerGateway(am_gen::am_Gateway_s gatewayData, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error);
+
+ virtual void deregisterGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_Error_e& returnError);
+
+ virtual void peekSink(std::string name, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+
+ virtual void registerSink(am_gen::sinkData_s sinkData, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error);
+
+ virtual void deregisterSink(am_gen::am_sinkID_t sinkID, am_gen::am_Error_e& returnError);
+
+ virtual void peekSource(std::string name, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+
+ virtual void registerSource(am_gen::sourceData_s sourceData, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error);
+
+ virtual void deregisterSource(am_gen::am_sourceID_t sourceID, am_gen::am_Error_e& returnError);
+
+ virtual void registerCrossfader(am_gen::crossfaderData_s crossfaderData, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error);
+
+ virtual void deregisterCrossfader(am_gen::am_crossfaderID_t crossfaderID, am_gen::am_Error_e& returnError);
+
+ virtual void peekSourceClassID(std::string name, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error);
+
+ virtual void peekSinkClassID(std::string name, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error);
+
+ virtual void hookInterruptStatusChange(am_gen::am_sourceID_t sourceID, uint16_t interruptState);
+
+ virtual void hookDomainRegistrationComplete(am_gen::am_domainID_t domainID);
+
+ virtual void hookSinkAvailablityStatusChange(am_gen::am_sinkID_t sinkID, am_gen::am_Availability_s availability);
+
+ virtual void hookSourceAvailablityStatusChange(am_gen::am_sourceID_t sourceID, am_gen::am_Availability_s availability);
+
+ virtual void hookDomainStateChange(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState);
+
+ virtual void hookTimingInformationChanged(am_gen::am_connectionID_t connectionID, int16_t delay);
+
+ virtual void sendChangedData(am_gen::am_EarlyData_l earlyData_volumes, am_gen::am_EarlyData_l earlyData_soundproperties);
+
+ virtual void confirmRoutingReady(am_gen::am_domainID_t domainID);
+
+ virtual void confirmRoutingRundown(am_gen::am_domainID_t domainID);
+
+ virtual void updateGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_ConnectionFormat_L listSourceFormats, am_gen::am_ConnectionFormat_L listSinkFormats, am_gen::bool_L convertionMatrix);
+
+ virtual void updateSink(am_gen::am_sinkID_t sinkID, am_gen::am_sinkClass_t sinkClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties);
+
+ virtual void updateSource(am_gen::am_sourceID_t sourceID, am_gen::am_sourceClass_t sourceClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties);
+
+ virtual void ackSetVolumes(uint16_t handle, am_gen::am_Volumes_l listVolumes, uint16_t error);
+
+ virtual void ackSinkNotificationConfiguration(uint16_t handle, uint16_t error);
+
+ virtual void ackSourceNotificationConfiguration(uint16_t handle, uint16_t error);
+
+ virtual void hookSinkNotificationDataChange(am_gen::am_sinkID_t sinkID, am_gen::notificationPayload_s payload);
+
+ virtual void hookSourceNotificationDataChange(am_gen::am_sourceID_t sourceID, am_gen::notificationPayload_s payload);
+
+ virtual void getRoutingReadyState(bool& readyState);
+
+
+ virtual void fireSetRoutingReadyEvent();
+ virtual void fireSetRoutingRundownEvent();
+
+ protected:
+
+ private:
+ class RemoteEventHandler: public RoutingInterfaceStubRemoteEvent {
+ public:
+ RemoteEventHandler(RoutingInterfaceStubDefault* defaultStub);
+
+
+ private:
+ RoutingInterfaceStubDefault* defaultStub_;
+ };
+
+ RemoteEventHandler remoteEventHandler_;
+ std::shared_ptr<RoutingInterfaceStubAdapter> stubAdapter_;
+
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Interface_STUB_DEFAULT_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSender.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSender.h
new file mode 100644
index 0000000..077f1f0
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSender.h
@@ -0,0 +1,66 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_H_
+
+
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/types.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+class RoutingSender {
+ public:
+ virtual ~RoutingSender() { }
+
+ static inline const char* getInterfaceId();
+ static inline CommonAPI::Version getInterfaceVersion();
+};
+
+const char* RoutingSender::getInterfaceId() {
+ return "org.genivi.audiomanager.RoutingSender";
+}
+
+CommonAPI::Version RoutingSender::getInterfaceVersion() {
+ return CommonAPI::Version(0, 1);
+}
+
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+namespace CommonAPI {
+
+}
+
+
+namespace std {
+ //hashes for types
+
+ //hashes for error types
+}
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.cpp
new file mode 100644
index 0000000..00071a1
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.cpp
@@ -0,0 +1,344 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include "RoutingSenderDBusProxy.h"
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+std::shared_ptr<CommonAPI::DBus::DBusProxy> createRoutingSenderDBusProxy(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyConnection) {
+ return std::make_shared<RoutingSenderDBusProxy>(commonApiAddress, interfaceName, busName, objectPath, dbusProxyConnection);
+}
+
+__attribute__((constructor)) void registerRoutingSenderDBusProxy(void) {
+ CommonAPI::DBus::DBusFactory::registerProxyFactoryMethod(RoutingSender::getInterfaceId(),
+ &createRoutingSenderDBusProxy);
+}
+
+RoutingSenderDBusProxy::RoutingSenderDBusProxy(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyconnection):
+ CommonAPI::DBus::DBusProxy(commonApiAddress, interfaceName, busName, objectPath, dbusProxyconnection)
+ {
+}
+
+
+
+void RoutingSenderDBusProxy::asyncSetSourceState(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_sourceID_t, am_gen::am_SourceState_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSourceState",
+ "qqi",
+ handle, sourceID, sourceState,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSourceStateAsync(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, AsyncSetSourceStateAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<uint16_t, am_gen::am_sourceID_t, am_gen::am_SourceState_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSourceState",
+ "qqi",
+ handle, sourceID, sourceState,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::setDomainState(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_DomainState_e>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "setDomainState",
+ "qi",
+ domainID, domainState,
+ callStatus
+ , error);
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::setDomainStateAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, SetDomainStateAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_domainID_t, am_gen::am_DomainState_e>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "setDomainState",
+ "qi",
+ domainID, domainState,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSourceVolume(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_volume_t, am_gen::am_RampType_e, am_gen::am_time_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSourceVolume",
+ "qqniq",
+ handle, sourceID, volume, ramp, time,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSourceVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSourceVolumeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_volume_t, am_gen::am_RampType_e, am_gen::am_time_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSourceVolume",
+ "qqniq",
+ handle, sourceID, volume, ramp, time,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSinkVolume(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_volume_t, am_gen::am_RampType_e, am_gen::am_time_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSinkVolume",
+ "qqniq",
+ handle, sinkID, volume, ramp, time,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSinkVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSinkVolumeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_volume_t, am_gen::am_RampType_e, am_gen::am_time_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSinkVolume",
+ "qqniq",
+ handle, sinkID, volume, ramp, time,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncConnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_connectionID_t, am_gen::am_sourceID_t, am_gen::am_sinkID_t, am_gen::am_ConnectionFormat_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncConnect",
+ "qqqqi",
+ handle, connectionID, sourceID, sinkID, connectionFormat,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncConnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, AsyncConnectAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_connectionID_t, am_gen::am_sourceID_t, am_gen::am_sinkID_t, am_gen::am_ConnectionFormat_e>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncConnect",
+ "qqqqi",
+ handle, connectionID, sourceID, sinkID, connectionFormat,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncDisconnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_connectionID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncDisconnect",
+ "qq",
+ handle, connectionID,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncDisconnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, AsyncDisconnectAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_connectionID_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncDisconnect",
+ "qq",
+ handle, connectionID,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncAbort(const am_gen::am_handle_t& handle, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodWithReply(
+ *this,
+ "asyncAbort",
+ "q",
+ handle,
+ callStatus
+ , error);
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncAbortAsync(const am_gen::am_handle_t& handle, AsyncAbortAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t>,
+ CommonAPI::DBus::DBusSerializableArguments<am_gen::am_Error_e> >::callMethodAsync(
+ *this,
+ "asyncAbort",
+ "q",
+ handle,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSinkSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_SoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSinkSoundProperties",
+ "qqa(in)",
+ handle, sinkID, listSoundProperties,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSinkSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSinkSoundPropertiesAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_SoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSinkSoundProperties",
+ "qqa(in)",
+ handle, sinkID, listSoundProperties,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSinkSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_SoundProperty_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSinkSoundProperty",
+ "qq(in)",
+ handle, sinkID, soundProperty,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSinkSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSinkSoundPropertyAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_SoundProperty_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSinkSoundProperty",
+ "qq(in)",
+ handle, sinkID, soundProperty,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSourceSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_SoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSourceSoundProperties",
+ "qqa(in)",
+ handle, sourceID, listSoundProperties,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSourceSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSourceSoundPropertiesAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_SoundProperty_L>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSourceSoundProperties",
+ "qqa(in)",
+ handle, sourceID, listSoundProperties,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSourceSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_SoundProperty_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSourceSoundProperty",
+ "qq(in)",
+ handle, sourceID, soundProperty,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSourceSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSourceSoundPropertyAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_SoundProperty_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSourceSoundProperty",
+ "qq(in)",
+ handle, sourceID, soundProperty,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncCrossFade(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_crossfaderID_t, am_gen::am_HotSink_e, am_gen::am_RampType_e, am_gen::am_time_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncCrossFade",
+ "qqiiq",
+ handle, crossfaderID, hotSink, rampType, time,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncCrossFadeAsync(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, AsyncCrossFadeAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_crossfaderID_t, am_gen::am_HotSink_e, am_gen::am_RampType_e, am_gen::am_time_t>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncCrossFade",
+ "qqiiq",
+ handle, crossfaderID, hotSink, rampType, time,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetVolumes(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_Volumes_l>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetVolumes",
+ "qa(i(yv)niq)",
+ handle, volumes,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetVolumesAsync(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, AsyncSetVolumesAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_Volumes_l>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetVolumes",
+ "qa(i(yv)niq)",
+ handle, volumes,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSinkNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_NotificationConfiguration_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSinkNotificationConfiguration",
+ "qq(iin)",
+ handle, sinkID, notificationConfiguration,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSinkNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSinkNotificationConfigurationAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_NotificationConfiguration_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSinkNotificationConfiguration",
+ "qq(iin)",
+ handle, sinkID, notificationConfiguration,
+ std::move(callback));
+}
+void RoutingSenderDBusProxy::asyncSetSourceNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus) {
+ CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_NotificationConfiguration_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodWithReply(
+ *this,
+ "asyncSetSourceNotificationConfiguration",
+ "qq(iin)",
+ handle, sourceID, notificationConfiguration,
+ callStatus
+ );
+}
+std::future<CommonAPI::CallStatus> RoutingSenderDBusProxy::asyncSetSourceNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSourceNotificationConfigurationAsyncCallback callback) {
+ return CommonAPI::DBus::DBusProxyHelper<CommonAPI::DBus::DBusSerializableArguments<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_NotificationConfiguration_s>,
+ CommonAPI::DBus::DBusSerializableArguments<> >::callMethodAsync(
+ *this,
+ "asyncSetSourceNotificationConfiguration",
+ "qq(iin)",
+ handle, sourceID, notificationConfiguration,
+ std::move(callback));
+}
+
+void RoutingSenderDBusProxy::getOwnVersion(uint16_t& ownVersionMajor, uint16_t& ownVersionMinor) const {
+ ownVersionMajor = 0;
+ ownVersionMinor = 1;
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.h
new file mode 100644
index 0000000..af46069
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusProxy.h
@@ -0,0 +1,106 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_DBUS_PROXY_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_DBUS_PROXY_H_
+
+#include <org/genivi/audiomanager/RoutingSenderProxyBase.h>
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/DBus/DBusFactory.h>
+#include <CommonAPI/DBus/DBusProxy.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+#include <string>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+class RoutingSenderDBusProxy: virtual public RoutingSenderProxyBase, virtual public CommonAPI::DBus::DBusProxy {
+ public:
+ RoutingSenderDBusProxy(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyconnection);
+
+ virtual ~RoutingSenderDBusProxy() { }
+
+
+
+
+ virtual void asyncSetSourceState(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceStateAsync(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, AsyncSetSourceStateAsyncCallback callback);
+
+ virtual void setDomainState(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> setDomainStateAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, SetDomainStateAsyncCallback callback);
+
+ virtual void asyncSetSourceVolume(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSourceVolumeAsyncCallback callback);
+
+ virtual void asyncSetSinkVolume(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSinkVolumeAsyncCallback callback);
+
+ virtual void asyncConnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncConnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, AsyncConnectAsyncCallback callback);
+
+ virtual void asyncDisconnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncDisconnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, AsyncDisconnectAsyncCallback callback);
+
+ virtual void asyncAbort(const am_gen::am_handle_t& handle, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error);
+ virtual std::future<CommonAPI::CallStatus> asyncAbortAsync(const am_gen::am_handle_t& handle, AsyncAbortAsyncCallback callback);
+
+ virtual void asyncSetSinkSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSinkSoundPropertiesAsyncCallback callback);
+
+ virtual void asyncSetSinkSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSinkSoundPropertyAsyncCallback callback);
+
+ virtual void asyncSetSourceSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSourceSoundPropertiesAsyncCallback callback);
+
+ virtual void asyncSetSourceSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSourceSoundPropertyAsyncCallback callback);
+
+ virtual void asyncCrossFade(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncCrossFadeAsync(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, AsyncCrossFadeAsyncCallback callback);
+
+ virtual void asyncSetVolumes(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetVolumesAsync(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, AsyncSetVolumesAsyncCallback callback);
+
+ virtual void asyncSetSinkNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSinkNotificationConfigurationAsyncCallback callback);
+
+ virtual void asyncSetSourceNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus);
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSourceNotificationConfigurationAsyncCallback callback);
+
+ virtual void getOwnVersion(uint16_t& ownVersionMajor, uint16_t& ownVersionMinor) const;
+
+ private:
+
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_DBUS_PROXY_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.cpp
new file mode 100644
index 0000000..1c43bc6
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.cpp
@@ -0,0 +1,237 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include "RoutingSenderDBusStubAdapter.h"
+#include <org/genivi/audiomanager/RoutingSender.h>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+std::shared_ptr<CommonAPI::DBus::DBusStubAdapter> createRoutingSenderDBusStubAdapter(
+ const std::string& commonApiAddress,
+ const std::string& interfaceName,
+ const std::string& busName,
+ const std::string& objectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusProxyConnection,
+ const std::shared_ptr<CommonAPI::StubBase>& stubBase) {
+ return std::make_shared<RoutingSenderDBusStubAdapter>(commonApiAddress, interfaceName, busName, objectPath, dbusProxyConnection, stubBase);
+}
+
+__attribute__((constructor)) void registerRoutingSenderDBusStubAdapter(void) {
+ CommonAPI::DBus::DBusFactory::registerAdapterFactoryMethod(RoutingSender::getInterfaceId(),
+ &createRoutingSenderDBusStubAdapter);
+}
+
+RoutingSenderDBusStubAdapter::RoutingSenderDBusStubAdapter(
+ const std::string& commonApiAddress,
+ const std::string& dbusInterfaceName,
+ const std::string& dbusBusName,
+ const std::string& dbusObjectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusConnection,
+ const std::shared_ptr<CommonAPI::StubBase>& stub):
+ RoutingSenderDBusStubAdapterHelper(commonApiAddress, dbusInterfaceName, dbusBusName, dbusObjectPath, dbusConnection, std::dynamic_pointer_cast<RoutingSenderStub>(stub)) {
+}
+
+const char* RoutingSenderDBusStubAdapter::getMethodsDBusIntrospectionXmlData() const {
+ return
+ "<method name=\"asyncSetSourceState\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceState\" type=\"i\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"setDomainState\">\n"
+ "<arg name=\"domainID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"domainState\" type=\"i\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSourceVolume\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volume\" type=\"n\" direction=\"in\" />\n"
+ "<arg name=\"ramp\" type=\"i\" direction=\"in\" />\n"
+ "<arg name=\"time\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSinkVolume\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volume\" type=\"n\" direction=\"in\" />\n"
+ "<arg name=\"ramp\" type=\"i\" direction=\"in\" />\n"
+ "<arg name=\"time\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncConnect\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"connectionID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"connectionFormat\" type=\"i\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncDisconnect\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"connectionID\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncAbort\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"error\" type=\"i\" direction=\"out\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSinkSoundProperties\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"listSoundProperties\" type=\"a(in)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSinkSoundProperty\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"soundProperty\" type=\"(in)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSourceSoundProperties\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"listSoundProperties\" type=\"a(in)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSourceSoundProperty\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"soundProperty\" type=\"(in)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncCrossFade\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"crossfaderID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"hotSink\" type=\"i\" direction=\"in\" />\n"
+ "<arg name=\"rampType\" type=\"i\" direction=\"in\" />\n"
+ "<arg name=\"time\" type=\"q\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetVolumes\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"volumes\" type=\"a(i(yv)niq)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSinkNotificationConfiguration\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sinkID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"notificationConfiguration\" type=\"(iin)\" direction=\"in\" />\n"
+ "</method>\n"
+ "<method name=\"asyncSetSourceNotificationConfiguration\">\n"
+ "<arg name=\"handle\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"sourceID\" type=\"q\" direction=\"in\" />\n"
+ "<arg name=\"notificationConfiguration\" type=\"(iin)\" direction=\"in\" />\n"
+ "</method>\n"
+ ;
+}
+
+
+
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<uint16_t, am_gen::am_sourceID_t, am_gen::am_SourceState_e>,
+ std::tuple<>
+ > asyncSetSourceStateStubDispatcher(&RoutingSenderStub::asyncSetSourceState, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_domainID_t, am_gen::am_DomainState_e>,
+ std::tuple<am_gen::am_Error_e>
+ > setDomainStateStubDispatcher(&RoutingSenderStub::setDomainState, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_volume_t, am_gen::am_RampType_e, am_gen::am_time_t>,
+ std::tuple<>
+ > asyncSetSourceVolumeStubDispatcher(&RoutingSenderStub::asyncSetSourceVolume, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_volume_t, am_gen::am_RampType_e, am_gen::am_time_t>,
+ std::tuple<>
+ > asyncSetSinkVolumeStubDispatcher(&RoutingSenderStub::asyncSetSinkVolume, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_connectionID_t, am_gen::am_sourceID_t, am_gen::am_sinkID_t, am_gen::am_ConnectionFormat_e>,
+ std::tuple<>
+ > asyncConnectStubDispatcher(&RoutingSenderStub::asyncConnect, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_connectionID_t>,
+ std::tuple<>
+ > asyncDisconnectStubDispatcher(&RoutingSenderStub::asyncDisconnect, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t>,
+ std::tuple<am_gen::am_Error_e>
+ > asyncAbortStubDispatcher(&RoutingSenderStub::asyncAbort, "i");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_SoundProperty_L>,
+ std::tuple<>
+ > asyncSetSinkSoundPropertiesStubDispatcher(&RoutingSenderStub::asyncSetSinkSoundProperties, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_SoundProperty_s>,
+ std::tuple<>
+ > asyncSetSinkSoundPropertyStubDispatcher(&RoutingSenderStub::asyncSetSinkSoundProperty, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_SoundProperty_L>,
+ std::tuple<>
+ > asyncSetSourceSoundPropertiesStubDispatcher(&RoutingSenderStub::asyncSetSourceSoundProperties, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_SoundProperty_s>,
+ std::tuple<>
+ > asyncSetSourceSoundPropertyStubDispatcher(&RoutingSenderStub::asyncSetSourceSoundProperty, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_crossfaderID_t, am_gen::am_HotSink_e, am_gen::am_RampType_e, am_gen::am_time_t>,
+ std::tuple<>
+ > asyncCrossFadeStubDispatcher(&RoutingSenderStub::asyncCrossFade, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_Volumes_l>,
+ std::tuple<>
+ > asyncSetVolumesStubDispatcher(&RoutingSenderStub::asyncSetVolumes, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sinkID_t, am_gen::am_NotificationConfiguration_s>,
+ std::tuple<>
+ > asyncSetSinkNotificationConfigurationStubDispatcher(&RoutingSenderStub::asyncSetSinkNotificationConfiguration, "");
+static CommonAPI::DBus::DBusMethodWithReplyStubDispatcher<
+ RoutingSenderStub,
+ std::tuple<am_gen::am_handle_t, am_gen::am_sourceID_t, am_gen::am_NotificationConfiguration_s>,
+ std::tuple<>
+ > asyncSetSourceNotificationConfigurationStubDispatcher(&RoutingSenderStub::asyncSetSourceNotificationConfiguration, "");
+
+
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+template<>
+const org::genivi::audiomanager::RoutingSenderDBusStubAdapterHelper::StubDispatcherTable org::genivi::audiomanager::RoutingSenderDBusStubAdapterHelper::stubDispatcherTable_ = {
+ { { "asyncSetSourceState", "qqi" }, &org::genivi::audiomanager::asyncSetSourceStateStubDispatcher },
+ { { "setDomainState", "qi" }, &org::genivi::audiomanager::setDomainStateStubDispatcher },
+ { { "asyncSetSourceVolume", "qqniq" }, &org::genivi::audiomanager::asyncSetSourceVolumeStubDispatcher },
+ { { "asyncSetSinkVolume", "qqniq" }, &org::genivi::audiomanager::asyncSetSinkVolumeStubDispatcher },
+ { { "asyncConnect", "qqqqi" }, &org::genivi::audiomanager::asyncConnectStubDispatcher },
+ { { "asyncDisconnect", "qq" }, &org::genivi::audiomanager::asyncDisconnectStubDispatcher },
+ { { "asyncAbort", "q" }, &org::genivi::audiomanager::asyncAbortStubDispatcher },
+ { { "asyncSetSinkSoundProperties", "qqa(in)" }, &org::genivi::audiomanager::asyncSetSinkSoundPropertiesStubDispatcher },
+ { { "asyncSetSinkSoundProperty", "qq(in)" }, &org::genivi::audiomanager::asyncSetSinkSoundPropertyStubDispatcher },
+ { { "asyncSetSourceSoundProperties", "qqa(in)" }, &org::genivi::audiomanager::asyncSetSourceSoundPropertiesStubDispatcher },
+ { { "asyncSetSourceSoundProperty", "qq(in)" }, &org::genivi::audiomanager::asyncSetSourceSoundPropertyStubDispatcher },
+ { { "asyncCrossFade", "qqiiq" }, &org::genivi::audiomanager::asyncCrossFadeStubDispatcher },
+ { { "asyncSetVolumes", "qa(i(yv)niq)" }, &org::genivi::audiomanager::asyncSetVolumesStubDispatcher },
+ { { "asyncSetSinkNotificationConfiguration", "qq(iin)" }, &org::genivi::audiomanager::asyncSetSinkNotificationConfigurationStubDispatcher },
+ { { "asyncSetSourceNotificationConfiguration", "qq(iin)" }, &org::genivi::audiomanager::asyncSetSourceNotificationConfigurationStubDispatcher }
+};
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.h
new file mode 100644
index 0000000..cedcf9f
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderDBusStubAdapter.h
@@ -0,0 +1,57 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_DBUS_STUB_ADAPTER_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_DBUS_STUB_ADAPTER_H_
+
+#include <org/genivi/audiomanager/RoutingSenderStub.h>
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/DBus/DBusStubAdapterHelper.h>
+#include <CommonAPI/DBus/DBusFactory.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+typedef CommonAPI::DBus::DBusStubAdapterHelper<RoutingSenderStub> RoutingSenderDBusStubAdapterHelper;
+
+class RoutingSenderDBusStubAdapter: public RoutingSenderStubAdapter, public RoutingSenderDBusStubAdapterHelper {
+ public:
+ RoutingSenderDBusStubAdapter(
+ const std::string& commonApiAddress,
+ const std::string& dbusInterfaceName,
+ const std::string& dbusBusName,
+ const std::string& dbusObjectPath,
+ const std::shared_ptr<CommonAPI::DBus::DBusProxyConnection>& dbusConnection,
+ const std::shared_ptr<CommonAPI::StubBase>& stub);
+
+
+
+ protected:
+ virtual const char* getMethodsDBusIntrospectionXmlData() const;
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_DBUS_STUB_ADAPTER_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxy.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxy.h
new file mode 100644
index 0000000..b58f31a
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxy.h
@@ -0,0 +1,611 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_PROXY_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_PROXY_H_
+
+#include "RoutingSenderProxyBase.h"
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+template <typename ... _AttributeExtensions>
+class RoutingSenderProxy: virtual public RoutingSender, virtual public RoutingSenderProxyBase, public _AttributeExtensions... {
+ public:
+ RoutingSenderProxy(std::shared_ptr<CommonAPI::Proxy> delegate);
+ ~RoutingSenderProxy();
+
+
+
+
+ /**
+ * Calls asyncSetSourceState with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSourceState(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSourceState with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceStateAsync(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, AsyncSetSourceStateAsyncCallback callback);
+
+ /**
+ * Calls setDomainState with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void setDomainState(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error);
+ /**
+ * Calls setDomainState with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> setDomainStateAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, SetDomainStateAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSourceVolume with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSourceVolume(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSourceVolume with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSourceVolumeAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSinkVolume with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSinkVolume(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSinkVolume with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSinkVolumeAsyncCallback callback);
+
+ /**
+ * Calls asyncConnect with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncConnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncConnect with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncConnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, AsyncConnectAsyncCallback callback);
+
+ /**
+ * Calls asyncDisconnect with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncDisconnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncDisconnect with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncDisconnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, AsyncDisconnectAsyncCallback callback);
+
+ /**
+ * Calls asyncAbort with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * All non-const parameters will be filled with the returned values.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncAbort(const am_gen::am_handle_t& handle, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error);
+ /**
+ * Calls asyncAbort with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncAbortAsync(const am_gen::am_handle_t& handle, AsyncAbortAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSinkSoundProperties with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSinkSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSinkSoundProperties with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSinkSoundPropertiesAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSinkSoundProperty with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSinkSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSinkSoundProperty with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSinkSoundPropertyAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSourceSoundProperties with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSourceSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSourceSoundProperties with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSourceSoundPropertiesAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSourceSoundProperty with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSourceSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSourceSoundProperty with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSourceSoundPropertyAsyncCallback callback);
+
+ /**
+ * Calls asyncCrossFade with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncCrossFade(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncCrossFade with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncCrossFadeAsync(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, AsyncCrossFadeAsyncCallback callback);
+
+ /**
+ * Calls asyncSetVolumes with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetVolumes(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetVolumes with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetVolumesAsync(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, AsyncSetVolumesAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSinkNotificationConfiguration with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSinkNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSinkNotificationConfiguration with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSinkNotificationConfigurationAsyncCallback callback);
+
+ /**
+ * Calls asyncSetSourceNotificationConfiguration with synchronous semantics.
+ *
+ * All const parameters are input parameters to this method.
+ * The CallStatus will be filled when the method returns and indicate either
+ * "SUCCESS" or which type of error has occurred. In case of an error, ONLY the CallStatus
+ * will be set.
+ * Synchronous calls are not supported (will block indefinitely) when mainloop integration is used.
+ */
+ virtual void asyncSetSourceNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus);
+ /**
+ * Calls asyncSetSourceNotificationConfiguration with asynchronous semantics.
+ *
+ * The provided callback will be called when the reply to this call arrives or
+ * an error occurs during the call. The CallStatus will indicate either "SUCCESS"
+ * or which type of error has occurred. In case of any error, ONLY the CallStatus
+ * will have a defined value.
+ * The std::future returned by this method will be fulfilled at arrival of the reply.
+ * It will provide the same value for CallStatus as will be handed to the callback.
+ */
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSourceNotificationConfigurationAsyncCallback callback);
+
+ /// Returns the CommonAPI address of the remote partner this proxy communicates with.
+ virtual std::string getAddress() const;
+
+ /// Returns the domain of the remote partner this proxy communicates with.
+ virtual const std::string& getDomain() const;
+
+ /// Returns the service ID of the remote partner this proxy communicates with.
+ virtual const std::string& getServiceId() const;
+
+ /// Returns the instance ID of the remote partner this proxy communicates with.
+ virtual const std::string& getInstanceId() const;
+
+ /// Returns true if the remote partner for this proxy is available.
+ virtual bool isAvailable() const;
+
+ /**
+ * Returns the wrapper class that is used to (de-)register for notifications about
+ * the availability of the remote partner of this proxy.
+ */
+ virtual CommonAPI::ProxyStatusEvent& getProxyStatusEvent();
+
+ /**
+ * Returns the wrapper class that is used to access version information of the remote
+ * partner of this proxy.
+ */
+ virtual CommonAPI::InterfaceVersionAttribute& getInterfaceVersionAttribute();
+
+ private:
+ std::shared_ptr<RoutingSenderProxyBase> delegate_;
+};
+
+
+//
+// RoutingSenderProxy Implementation
+//
+template <typename ... _AttributeExtensions>
+RoutingSenderProxy<_AttributeExtensions...>::RoutingSenderProxy(std::shared_ptr<CommonAPI::Proxy> delegate):
+ delegate_(std::dynamic_pointer_cast<RoutingSenderProxyBase>(delegate)),
+ _AttributeExtensions(*(std::dynamic_pointer_cast<RoutingSenderProxyBase>(delegate)))... {
+}
+
+template <typename ... _AttributeExtensions>
+RoutingSenderProxy<_AttributeExtensions...>::~RoutingSenderProxy() {
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceState(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSourceState(handle, sourceID, sourceState, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceStateAsync(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, AsyncSetSourceStateAsyncCallback callback) {
+ return delegate_->asyncSetSourceStateAsync(handle, sourceID, sourceState, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::setDomainState(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error) {
+ delegate_->setDomainState(domainID, domainState, callStatus, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::setDomainStateAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, SetDomainStateAsyncCallback callback) {
+ return delegate_->setDomainStateAsync(domainID, domainState, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceVolume(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSourceVolume(handle, sourceID, volume, ramp, time, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSourceVolumeAsyncCallback callback) {
+ return delegate_->asyncSetSourceVolumeAsync(handle, sourceID, volume, ramp, time, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkVolume(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSinkVolume(handle, sinkID, volume, ramp, time, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSinkVolumeAsyncCallback callback) {
+ return delegate_->asyncSetSinkVolumeAsync(handle, sinkID, volume, ramp, time, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncConnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncConnect(handle, connectionID, sourceID, sinkID, connectionFormat, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncConnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, AsyncConnectAsyncCallback callback) {
+ return delegate_->asyncConnectAsync(handle, connectionID, sourceID, sinkID, connectionFormat, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncDisconnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncDisconnect(handle, connectionID, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncDisconnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, AsyncDisconnectAsyncCallback callback) {
+ return delegate_->asyncDisconnectAsync(handle, connectionID, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncAbort(const am_gen::am_handle_t& handle, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error) {
+ delegate_->asyncAbort(handle, callStatus, error);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncAbortAsync(const am_gen::am_handle_t& handle, AsyncAbortAsyncCallback callback) {
+ return delegate_->asyncAbortAsync(handle, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSinkSoundProperties(handle, sinkID, listSoundProperties, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSinkSoundPropertiesAsyncCallback callback) {
+ return delegate_->asyncSetSinkSoundPropertiesAsync(handle, sinkID, listSoundProperties, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSinkSoundProperty(handle, sinkID, soundProperty, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSinkSoundPropertyAsyncCallback callback) {
+ return delegate_->asyncSetSinkSoundPropertyAsync(handle, sinkID, soundProperty, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSourceSoundProperties(handle, sourceID, listSoundProperties, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSourceSoundPropertiesAsyncCallback callback) {
+ return delegate_->asyncSetSourceSoundPropertiesAsync(handle, sourceID, listSoundProperties, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSourceSoundProperty(handle, sourceID, soundProperty, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSourceSoundPropertyAsyncCallback callback) {
+ return delegate_->asyncSetSourceSoundPropertyAsync(handle, sourceID, soundProperty, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncCrossFade(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncCrossFade(handle, crossfaderID, hotSink, rampType, time, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncCrossFadeAsync(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, AsyncCrossFadeAsyncCallback callback) {
+ return delegate_->asyncCrossFadeAsync(handle, crossfaderID, hotSink, rampType, time, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetVolumes(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetVolumes(handle, volumes, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetVolumesAsync(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, AsyncSetVolumesAsyncCallback callback) {
+ return delegate_->asyncSetVolumesAsync(handle, volumes, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSinkNotificationConfiguration(handle, sinkID, notificationConfiguration, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSinkNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSinkNotificationConfigurationAsyncCallback callback) {
+ return delegate_->asyncSetSinkNotificationConfigurationAsync(handle, sinkID, notificationConfiguration, callback);
+}
+
+template <typename ... _AttributeExtensions>
+void RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus) {
+ delegate_->asyncSetSourceNotificationConfiguration(handle, sourceID, notificationConfiguration, callStatus);
+}
+
+template <typename ... _AttributeExtensions>
+std::future<CommonAPI::CallStatus> RoutingSenderProxy<_AttributeExtensions...>::asyncSetSourceNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSourceNotificationConfigurationAsyncCallback callback) {
+ return delegate_->asyncSetSourceNotificationConfigurationAsync(handle, sourceID, notificationConfiguration, callback);
+}
+
+
+template <typename ... _AttributeExtensions>
+std::string RoutingSenderProxy<_AttributeExtensions...>::getAddress() const {
+ return delegate_->getAddress();
+}
+
+template <typename ... _AttributeExtensions>
+const std::string& RoutingSenderProxy<_AttributeExtensions...>::getDomain() const {
+ return delegate_->getDomain();
+}
+
+template <typename ... _AttributeExtensions>
+const std::string& RoutingSenderProxy<_AttributeExtensions...>::getServiceId() const {
+ return delegate_->getServiceId();
+}
+
+template <typename ... _AttributeExtensions>
+const std::string& RoutingSenderProxy<_AttributeExtensions...>::getInstanceId() const {
+ return delegate_->getInstanceId();
+}
+
+template <typename ... _AttributeExtensions>
+bool RoutingSenderProxy<_AttributeExtensions...>::isAvailable() const {
+ return delegate_->isAvailable();
+}
+
+template <typename ... _AttributeExtensions>
+CommonAPI::ProxyStatusEvent& RoutingSenderProxy<_AttributeExtensions...>::getProxyStatusEvent() {
+ return delegate_->getProxyStatusEvent();
+}
+
+template <typename ... _AttributeExtensions>
+CommonAPI::InterfaceVersionAttribute& RoutingSenderProxy<_AttributeExtensions...>::getInterfaceVersionAttribute() {
+ return delegate_->getInterfaceVersionAttribute();
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_PROXY_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxyBase.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxyBase.h
new file mode 100644
index 0000000..457c8ae
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderProxyBase.h
@@ -0,0 +1,116 @@
+ /*
+ * This file was generated by the CommonAPI Generators.
+ *
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+ #ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_PROXY_BASE_H_
+ #define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_PROXY_BASE_H_
+
+ #include "RoutingSender.h"
+
+
+ #include <org/genivi/audiomanager/am_gen.h>
+
+ #define COMMONAPI_INTERNAL_COMPILATION
+
+ #include <CommonAPI/InputStream.h>
+ #include <CommonAPI/OutputStream.h>
+ #include <CommonAPI/SerializableStruct.h>
+ #include <cstdint>
+ #include <vector>
+
+ #include <CommonAPI/Proxy.h>
+ #include <functional>
+ #include <future>
+
+ #undef COMMONAPI_INTERNAL_COMPILATION
+
+ namespace org {
+ namespace genivi {
+ namespace audiomanager {
+
+ class RoutingSenderProxyBase: virtual public CommonAPI::Proxy {
+ public:
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSourceStateAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> SetDomainStateAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSourceVolumeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSinkVolumeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncConnectAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncDisconnectAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&, const am_gen::am_Error_e&)> AsyncAbortAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSinkSoundPropertiesAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSinkSoundPropertyAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSourceSoundPropertiesAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSourceSoundPropertyAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncCrossFadeAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetVolumesAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSinkNotificationConfigurationAsyncCallback;
+ typedef std::function<void(const CommonAPI::CallStatus&)> AsyncSetSourceNotificationConfigurationAsyncCallback;
+
+
+
+
+ virtual void asyncSetSourceState(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceStateAsync(const uint16_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SourceState_e& sourceState, AsyncSetSourceStateAsyncCallback callback) = 0;
+
+ virtual void setDomainState(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> setDomainStateAsync(const am_gen::am_domainID_t& domainID, const am_gen::am_DomainState_e& domainState, SetDomainStateAsyncCallback callback) = 0;
+
+ virtual void asyncSetSourceVolume(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSourceVolumeAsyncCallback callback) = 0;
+
+ virtual void asyncSetSinkVolume(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkVolumeAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_volume_t& volume, const am_gen::am_RampType_e& ramp, const am_gen::am_time_t& time, AsyncSetSinkVolumeAsyncCallback callback) = 0;
+
+ virtual void asyncConnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncConnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, const am_gen::am_sourceID_t& sourceID, const am_gen::am_sinkID_t& sinkID, const am_gen::am_ConnectionFormat_e& connectionFormat, AsyncConnectAsyncCallback callback) = 0;
+
+ virtual void asyncDisconnect(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncDisconnectAsync(const am_gen::am_handle_t& handle, const am_gen::am_connectionID_t& connectionID, AsyncDisconnectAsyncCallback callback) = 0;
+
+ virtual void asyncAbort(const am_gen::am_handle_t& handle, CommonAPI::CallStatus& callStatus, am_gen::am_Error_e& error) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncAbortAsync(const am_gen::am_handle_t& handle, AsyncAbortAsyncCallback callback) = 0;
+
+ virtual void asyncSetSinkSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSinkSoundPropertiesAsyncCallback callback) = 0;
+
+ virtual void asyncSetSinkSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSinkSoundPropertyAsyncCallback callback) = 0;
+
+ virtual void asyncSetSourceSoundProperties(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceSoundPropertiesAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_L& listSoundProperties, AsyncSetSourceSoundPropertiesAsyncCallback callback) = 0;
+
+ virtual void asyncSetSourceSoundProperty(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceSoundPropertyAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_SoundProperty_s& soundProperty, AsyncSetSourceSoundPropertyAsyncCallback callback) = 0;
+
+ virtual void asyncCrossFade(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncCrossFadeAsync(const am_gen::am_handle_t& handle, const am_gen::am_crossfaderID_t& crossfaderID, const am_gen::am_HotSink_e& hotSink, const am_gen::am_RampType_e& rampType, const am_gen::am_time_t& time, AsyncCrossFadeAsyncCallback callback) = 0;
+
+ virtual void asyncSetVolumes(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetVolumesAsync(const am_gen::am_handle_t& handle, const am_gen::am_Volumes_l& volumes, AsyncSetVolumesAsyncCallback callback) = 0;
+
+ virtual void asyncSetSinkNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSinkNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sinkID_t& sinkID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSinkNotificationConfigurationAsyncCallback callback) = 0;
+
+ virtual void asyncSetSourceNotificationConfiguration(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, CommonAPI::CallStatus& callStatus) = 0;
+ virtual std::future<CommonAPI::CallStatus> asyncSetSourceNotificationConfigurationAsync(const am_gen::am_handle_t& handle, const am_gen::am_sourceID_t& sourceID, const am_gen::am_NotificationConfiguration_s& notificationConfiguration, AsyncSetSourceNotificationConfigurationAsyncCallback callback) = 0;
+ };
+
+ } // namespace audiomanager
+ } // namespace genivi
+ } // namespace org
+
+ #endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_PROXY_BASE_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStub.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStub.h
new file mode 100644
index 0000000..bc61563
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStub.h
@@ -0,0 +1,123 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_STUB_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_STUB_H_
+
+
+
+#include <org/genivi/audiomanager/am_gen.h>
+
+#include "RoutingSender.h"
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/InputStream.h>
+#include <CommonAPI/OutputStream.h>
+#include <CommonAPI/SerializableStruct.h>
+#include <cstdint>
+#include <vector>
+
+#include <CommonAPI/Stub.h>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+/**
+ * Receives messages from remote and handles all dispatching of deserialized calls
+ * to a stub for the service RoutingSender. Also provides means to send broadcasts
+ * and attribute-changed-notifications of observable attributes as defined by this service.
+ * An application developer should not need to bother with this class.
+ */
+class RoutingSenderStubAdapter: virtual public CommonAPI::StubAdapter, public RoutingSender {
+ public:
+
+};
+
+
+/**
+ * Defines the necessary callbacks to handle remote set events related to the attributes
+ * defined in the IDL description for RoutingSender.
+ * For each attribute two callbacks are defined:
+ * - a verification callback that allows to verify the requested value and to prevent setting
+ * e.g. an invalid value ("onRemoteSet<AttributeName>").
+ * - an action callback to do local work after the attribute value has been changed
+ * ("onRemote<AttributeName>Changed").
+ *
+ * This class and the one below are the ones an application developer needs to have
+ * a look at if he wants to implement a service.
+ */
+class RoutingSenderStubRemoteEvent {
+ public:
+ virtual ~RoutingSenderStubRemoteEvent() { }
+
+};
+
+
+/**
+ * Defines the interface that must be implemented by any class that should provide
+ * the service RoutingSender to remote clients.
+ * This class and the one above are the ones an application developer needs to have
+ * a look at if he wants to implement a service.
+ */
+class RoutingSenderStub : public CommonAPI::Stub<RoutingSenderStubAdapter , RoutingSenderStubRemoteEvent> {
+ public:
+ virtual ~RoutingSenderStub() { }
+
+
+ /// This is the method that will be called on remote calls on the method asyncSetSourceState.
+ virtual void asyncSetSourceState(uint16_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SourceState_e sourceState) = 0;
+ /// This is the method that will be called on remote calls on the method setDomainState.
+ virtual void setDomainState(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSourceVolume.
+ virtual void asyncSetSourceVolume(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSinkVolume.
+ virtual void asyncSetSinkVolume(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time) = 0;
+ /// This is the method that will be called on remote calls on the method asyncConnect.
+ virtual void asyncConnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID, am_gen::am_sourceID_t sourceID, am_gen::am_sinkID_t sinkID, am_gen::am_ConnectionFormat_e connectionFormat) = 0;
+ /// This is the method that will be called on remote calls on the method asyncDisconnect.
+ virtual void asyncDisconnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID) = 0;
+ /// This is the method that will be called on remote calls on the method asyncAbort.
+ virtual void asyncAbort(am_gen::am_handle_t handle, am_gen::am_Error_e& error) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSinkSoundProperties.
+ virtual void asyncSetSinkSoundProperties(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_L listSoundProperties) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSinkSoundProperty.
+ virtual void asyncSetSinkSoundProperty(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_s soundProperty) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSourceSoundProperties.
+ virtual void asyncSetSourceSoundProperties(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_L listSoundProperties) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSourceSoundProperty.
+ virtual void asyncSetSourceSoundProperty(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_s soundProperty) = 0;
+ /// This is the method that will be called on remote calls on the method asyncCrossFade.
+ virtual void asyncCrossFade(am_gen::am_handle_t handle, am_gen::am_crossfaderID_t crossfaderID, am_gen::am_HotSink_e hotSink, am_gen::am_RampType_e rampType, am_gen::am_time_t time) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetVolumes.
+ virtual void asyncSetVolumes(am_gen::am_handle_t handle, am_gen::am_Volumes_l volumes) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSinkNotificationConfiguration.
+ virtual void asyncSetSinkNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_NotificationConfiguration_s notificationConfiguration) = 0;
+ /// This is the method that will be called on remote calls on the method asyncSetSourceNotificationConfiguration.
+ virtual void asyncSetSourceNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_NotificationConfiguration_s notificationConfiguration) = 0;
+
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_STUB_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.cpp
new file mode 100644
index 0000000..0f4f60a
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.cpp
@@ -0,0 +1,103 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include <org/genivi/audiomanager/RoutingSenderStubDefault.h>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+RoutingSenderStubDefault::RoutingSenderStubDefault():
+ remoteEventHandler_(this) {
+}
+
+RoutingSenderStubRemoteEvent* RoutingSenderStubDefault::initStubAdapter(const std::shared_ptr<RoutingSenderStubAdapter>& stubAdapter) {
+ stubAdapter_ = stubAdapter;
+ return &remoteEventHandler_;
+}
+
+
+void RoutingSenderStubDefault::asyncSetSourceState(uint16_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SourceState_e sourceState) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::setDomainState(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSourceVolume(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSinkVolume(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncConnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID, am_gen::am_sourceID_t sourceID, am_gen::am_sinkID_t sinkID, am_gen::am_ConnectionFormat_e connectionFormat) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncDisconnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncAbort(am_gen::am_handle_t handle, am_gen::am_Error_e& error) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSinkSoundProperties(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_L listSoundProperties) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSinkSoundProperty(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_s soundProperty) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSourceSoundProperties(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_L listSoundProperties) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSourceSoundProperty(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_s soundProperty) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncCrossFade(am_gen::am_handle_t handle, am_gen::am_crossfaderID_t crossfaderID, am_gen::am_HotSink_e hotSink, am_gen::am_RampType_e rampType, am_gen::am_time_t time) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetVolumes(am_gen::am_handle_t handle, am_gen::am_Volumes_l volumes) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSinkNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_NotificationConfiguration_s notificationConfiguration) {
+ // No operation in default
+}
+
+void RoutingSenderStubDefault::asyncSetSourceNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_NotificationConfiguration_s notificationConfiguration) {
+ // No operation in default
+}
+
+
+
+RoutingSenderStubDefault::RemoteEventHandler::RemoteEventHandler(RoutingSenderStubDefault* defaultStub):
+ defaultStub_(defaultStub) {
+}
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.h
new file mode 100644
index 0000000..d527ab0
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/RoutingSenderStubDefault.h
@@ -0,0 +1,98 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_Routing_Sender_STUB_DEFAULT_H_
+#define ORG_GENIVI_AUDIOMANAGER_Routing_Sender_STUB_DEFAULT_H_
+
+#include <org/genivi/audiomanager/RoutingSenderStub.h>
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+/**
+ * Provides a default implementation for RoutingSenderStubRemoteEvent and
+ * RoutingSenderStub. Method callbacks have an empty implementation,
+ * remote set calls on attributes will always change the value of the attribute
+ * to the one received.
+ *
+ * Override this stub if you only want to provide a subset of the functionality
+ * that would be defined for this service, and/or if you do not need any non-default
+ * behaviour.
+ */
+class RoutingSenderStubDefault : public RoutingSenderStub {
+ public:
+ RoutingSenderStubDefault();
+
+ RoutingSenderStubRemoteEvent* initStubAdapter(const std::shared_ptr<RoutingSenderStubAdapter>& stubAdapter);
+
+
+ virtual void asyncSetSourceState(uint16_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SourceState_e sourceState);
+
+ virtual void setDomainState(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState, am_gen::am_Error_e& error);
+
+ virtual void asyncSetSourceVolume(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time);
+
+ virtual void asyncSetSinkVolume(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time);
+
+ virtual void asyncConnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID, am_gen::am_sourceID_t sourceID, am_gen::am_sinkID_t sinkID, am_gen::am_ConnectionFormat_e connectionFormat);
+
+ virtual void asyncDisconnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID);
+
+ virtual void asyncAbort(am_gen::am_handle_t handle, am_gen::am_Error_e& error);
+
+ virtual void asyncSetSinkSoundProperties(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_L listSoundProperties);
+
+ virtual void asyncSetSinkSoundProperty(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_s soundProperty);
+
+ virtual void asyncSetSourceSoundProperties(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_L listSoundProperties);
+
+ virtual void asyncSetSourceSoundProperty(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_s soundProperty);
+
+ virtual void asyncCrossFade(am_gen::am_handle_t handle, am_gen::am_crossfaderID_t crossfaderID, am_gen::am_HotSink_e hotSink, am_gen::am_RampType_e rampType, am_gen::am_time_t time);
+
+ virtual void asyncSetVolumes(am_gen::am_handle_t handle, am_gen::am_Volumes_l volumes);
+
+ virtual void asyncSetSinkNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_NotificationConfiguration_s notificationConfiguration);
+
+ virtual void asyncSetSourceNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_NotificationConfiguration_s notificationConfiguration);
+
+
+
+ protected:
+
+ private:
+ class RemoteEventHandler: public RoutingSenderStubRemoteEvent {
+ public:
+ RemoteEventHandler(RoutingSenderStubDefault* defaultStub);
+
+
+ private:
+ RoutingSenderStubDefault* defaultStub_;
+ };
+
+ RemoteEventHandler remoteEventHandler_;
+ std::shared_ptr<RoutingSenderStubAdapter> stubAdapter_;
+
+};
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+#endif // ORG_GENIVI_AUDIOMANAGER_Routing_Sender_STUB_DEFAULT_H_
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.cpp b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.cpp
new file mode 100644
index 0000000..20bb29b
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.cpp
@@ -0,0 +1,587 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#include "am_gen.h"
+
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+namespace am_gen {
+
+distanceInformation_s::distanceInformation_s(const int32_t& FrontLeftValue, const int32_t& FrontRightValue, const int32_t& RearLeftValue, const int32_t& RearRightValue):
+ FrontLeft(FrontLeftValue),
+ FrontRight(FrontRightValue),
+ RearLeft(RearLeftValue),
+ RearRight(RearRightValue)
+{
+}
+
+
+bool operator==(const distanceInformation_s& lhs, const distanceInformation_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.FrontLeft == rhs.FrontLeft &&
+ lhs.FrontRight == rhs.FrontRight &&
+ lhs.RearLeft == rhs.RearLeft &&
+ lhs.RearRight == rhs.RearRight
+ ;
+}
+
+void distanceInformation_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> FrontLeft;
+ inputStream >> FrontRight;
+ inputStream >> RearLeft;
+ inputStream >> RearRight;
+}
+
+void distanceInformation_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << FrontLeft;
+ outputStream << FrontRight;
+ outputStream << RearLeft;
+ outputStream << RearRight;
+}
+sampleNames_s::sampleNames_s(const sampleSet_e& sampleValue, const std::string& sampleNameValue):
+ sample(sampleValue),
+ sampleName(sampleNameValue)
+{
+}
+
+
+bool operator==(const sampleNames_s& lhs, const sampleNames_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.sample == rhs.sample &&
+ lhs.sampleName == rhs.sampleName
+ ;
+}
+
+void sampleNames_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> sample;
+ inputStream >> sampleName;
+}
+
+void sampleNames_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << sample;
+ outputStream << sampleName;
+}
+am_Domain_s::am_Domain_s(const am_domainID_t& domainIDValue, const std::string& nameValue, const std::string& busnameValue, const std::string& nodenameValue, const bool& earlyValue, const bool& completeValue, const am_DomainState_e& stateValue):
+ domainID(domainIDValue),
+ name(nameValue),
+ busname(busnameValue),
+ nodename(nodenameValue),
+ early(earlyValue),
+ complete(completeValue),
+ state(stateValue)
+{
+}
+
+
+bool operator==(const am_Domain_s& lhs, const am_Domain_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.domainID == rhs.domainID &&
+ lhs.name == rhs.name &&
+ lhs.busname == rhs.busname &&
+ lhs.nodename == rhs.nodename &&
+ lhs.early == rhs.early &&
+ lhs.complete == rhs.complete &&
+ lhs.state == rhs.state
+ ;
+}
+
+void am_Domain_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> domainID;
+ inputStream >> name;
+ inputStream >> busname;
+ inputStream >> nodename;
+ inputStream >> early;
+ inputStream >> complete;
+ inputStream >> state;
+}
+
+void am_Domain_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << domainID;
+ outputStream << name;
+ outputStream << busname;
+ outputStream << nodename;
+ outputStream << early;
+ outputStream << complete;
+ outputStream << state;
+}
+am_Volumes_s::am_Volumes_s(const am_VolumeType_e& volumeTypeValue, const am_DataType_u& volumeIDValue, const am_volume_t& volumeValue, const am_RampType_e& rampValue, const am_time_t& timeValue):
+ volumeType(volumeTypeValue),
+ volumeID(volumeIDValue),
+ volume(volumeValue),
+ ramp(rampValue),
+ time(timeValue)
+{
+}
+
+
+bool operator==(const am_Volumes_s& lhs, const am_Volumes_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.volumeType == rhs.volumeType &&
+ lhs.volumeID == rhs.volumeID &&
+ lhs.volume == rhs.volume &&
+ lhs.ramp == rhs.ramp &&
+ lhs.time == rhs.time
+ ;
+}
+
+void am_Volumes_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> volumeType;
+ inputStream >> volumeID;
+ inputStream >> volume;
+ inputStream >> ramp;
+ inputStream >> time;
+}
+
+void am_Volumes_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << volumeType;
+ outputStream << volumeID;
+ outputStream << volume;
+ outputStream << ramp;
+ outputStream << time;
+}
+notificationPayload_s::notificationPayload_s(const int16_t& typeValue, const int16_t& payloadValue):
+ type(typeValue),
+ payload(payloadValue)
+{
+}
+
+
+bool operator==(const notificationPayload_s& lhs, const notificationPayload_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.type == rhs.type &&
+ lhs.payload == rhs.payload
+ ;
+}
+
+void notificationPayload_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> type;
+ inputStream >> payload;
+}
+
+void notificationPayload_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << type;
+ outputStream << payload;
+}
+am_Availability_s::am_Availability_s(const am_Availability_e& availabilityValue, const am_AvailabilityReason_e& availabilityReasonValue):
+ availability(availabilityValue),
+ availabilityReason(availabilityReasonValue)
+{
+}
+
+
+bool operator==(const am_Availability_s& lhs, const am_Availability_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.availability == rhs.availability &&
+ lhs.availabilityReason == rhs.availabilityReason
+ ;
+}
+
+void am_Availability_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> availability;
+ inputStream >> availabilityReason;
+}
+
+void am_Availability_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << availability;
+ outputStream << availabilityReason;
+}
+am_SoundProperty_s::am_SoundProperty_s(const am_SoundPropertyType_e& typeValue, const int16_t& valueValue):
+ type(typeValue),
+ value(valueValue)
+{
+}
+
+
+bool operator==(const am_SoundProperty_s& lhs, const am_SoundProperty_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.type == rhs.type &&
+ lhs.value == rhs.value
+ ;
+}
+
+void am_SoundProperty_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> type;
+ inputStream >> value;
+}
+
+void am_SoundProperty_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << type;
+ outputStream << value;
+}
+am_MainSoundProperty_s::am_MainSoundProperty_s(const am_MainSoundPropertyType_e& typeValue, const int16_t& valueValue):
+ type(typeValue),
+ value(valueValue)
+{
+}
+
+
+bool operator==(const am_MainSoundProperty_s& lhs, const am_MainSoundProperty_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.type == rhs.type &&
+ lhs.value == rhs.value
+ ;
+}
+
+void am_MainSoundProperty_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> type;
+ inputStream >> value;
+}
+
+void am_MainSoundProperty_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << type;
+ outputStream << value;
+}
+am_NotificationConfiguration_s::am_NotificationConfiguration_s(const am_NotificationType_e& typeValue, const am_NotificationStatus_e& statusValue, const int16_t& parameterValue):
+ type(typeValue),
+ status(statusValue),
+ parameter(parameterValue)
+{
+}
+
+
+bool operator==(const am_NotificationConfiguration_s& lhs, const am_NotificationConfiguration_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.type == rhs.type &&
+ lhs.status == rhs.status &&
+ lhs.parameter == rhs.parameter
+ ;
+}
+
+void am_NotificationConfiguration_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> type;
+ inputStream >> status;
+ inputStream >> parameter;
+}
+
+void am_NotificationConfiguration_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << type;
+ outputStream << status;
+ outputStream << parameter;
+}
+sourceData_s::sourceData_s(const am_sourceID_t& sourceIDValue, const am_domainID_t& domainIDValue, const std::string& nameValue, const am_sourceClass_t& sourceClassIDValue, const am_SourceState_e& sourceStateValue, const am_volume_t& volumeValue, const bool& visibleValue, const am_Availability_s& availableValue, const am_InterruptState_e& interruptStateValue, const am_SoundProperty_L& listSoundPropertiesValue, const am_ConnectionFormat_L& listConnectionFormatsValue, const am_MainSoundProperty_L& listMainSoundPropertiesValue, const am_NotificationConfiguration_L& listMainNotificationConfigurationsValue, const am_NotificationConfiguration_L& listNotificationConfigurationsValue):
+ sourceID(sourceIDValue),
+ domainID(domainIDValue),
+ name(nameValue),
+ sourceClassID(sourceClassIDValue),
+ sourceState(sourceStateValue),
+ volume(volumeValue),
+ visible(visibleValue),
+ available(availableValue),
+ interruptState(interruptStateValue),
+ listSoundProperties(listSoundPropertiesValue),
+ listConnectionFormats(listConnectionFormatsValue),
+ listMainSoundProperties(listMainSoundPropertiesValue),
+ listMainNotificationConfigurations(listMainNotificationConfigurationsValue),
+ listNotificationConfigurations(listNotificationConfigurationsValue)
+{
+}
+
+
+bool operator==(const sourceData_s& lhs, const sourceData_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.sourceID == rhs.sourceID &&
+ lhs.domainID == rhs.domainID &&
+ lhs.name == rhs.name &&
+ lhs.sourceClassID == rhs.sourceClassID &&
+ lhs.sourceState == rhs.sourceState &&
+ lhs.volume == rhs.volume &&
+ lhs.visible == rhs.visible &&
+ lhs.available == rhs.available &&
+ lhs.interruptState == rhs.interruptState &&
+ lhs.listSoundProperties == rhs.listSoundProperties &&
+ lhs.listConnectionFormats == rhs.listConnectionFormats &&
+ lhs.listMainSoundProperties == rhs.listMainSoundProperties &&
+ lhs.listMainNotificationConfigurations == rhs.listMainNotificationConfigurations &&
+ lhs.listNotificationConfigurations == rhs.listNotificationConfigurations
+ ;
+}
+
+void sourceData_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> sourceID;
+ inputStream >> domainID;
+ inputStream >> name;
+ inputStream >> sourceClassID;
+ inputStream >> sourceState;
+ inputStream >> volume;
+ inputStream >> visible;
+ inputStream >> available;
+ inputStream >> interruptState;
+ inputStream >> listSoundProperties;
+ inputStream >> listConnectionFormats;
+ inputStream >> listMainSoundProperties;
+ inputStream >> listMainNotificationConfigurations;
+ inputStream >> listNotificationConfigurations;
+}
+
+void sourceData_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << sourceID;
+ outputStream << domainID;
+ outputStream << name;
+ outputStream << sourceClassID;
+ outputStream << sourceState;
+ outputStream << volume;
+ outputStream << visible;
+ outputStream << available;
+ outputStream << interruptState;
+ outputStream << listSoundProperties;
+ outputStream << listConnectionFormats;
+ outputStream << listMainSoundProperties;
+ outputStream << listMainNotificationConfigurations;
+ outputStream << listNotificationConfigurations;
+}
+sinkData_s::sinkData_s(const am_sinkID_t& sinkIDValue, const std::string& nameValue, const am_domainID_t& domainIDValue, const am_sinkClass_t& sinkClassIDValue, const am_volume_t& volumeValue, const bool& visibleValue, const am_Availability_s& availableValue, const am_MuteState_e& muteStateValue, const am_mainVolume_t& mainVolumeValue, const am_SoundProperty_L& listSoundPropertiesValue, const am_ConnectionFormat_L& listConnectionFormatsValue, const am_MainSoundProperty_L& listMainSoundPropertiesValue, const am_NotificationConfiguration_L& listMainNotificationConfigurationsValue, const am_NotificationConfiguration_L& listNotificationConfigurationsValue):
+ sinkID(sinkIDValue),
+ name(nameValue),
+ domainID(domainIDValue),
+ sinkClassID(sinkClassIDValue),
+ volume(volumeValue),
+ visible(visibleValue),
+ available(availableValue),
+ muteState(muteStateValue),
+ mainVolume(mainVolumeValue),
+ listSoundProperties(listSoundPropertiesValue),
+ listConnectionFormats(listConnectionFormatsValue),
+ listMainSoundProperties(listMainSoundPropertiesValue),
+ listMainNotificationConfigurations(listMainNotificationConfigurationsValue),
+ listNotificationConfigurations(listNotificationConfigurationsValue)
+{
+}
+
+
+bool operator==(const sinkData_s& lhs, const sinkData_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.sinkID == rhs.sinkID &&
+ lhs.name == rhs.name &&
+ lhs.domainID == rhs.domainID &&
+ lhs.sinkClassID == rhs.sinkClassID &&
+ lhs.volume == rhs.volume &&
+ lhs.visible == rhs.visible &&
+ lhs.available == rhs.available &&
+ lhs.muteState == rhs.muteState &&
+ lhs.mainVolume == rhs.mainVolume &&
+ lhs.listSoundProperties == rhs.listSoundProperties &&
+ lhs.listConnectionFormats == rhs.listConnectionFormats &&
+ lhs.listMainSoundProperties == rhs.listMainSoundProperties &&
+ lhs.listMainNotificationConfigurations == rhs.listMainNotificationConfigurations &&
+ lhs.listNotificationConfigurations == rhs.listNotificationConfigurations
+ ;
+}
+
+void sinkData_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> sinkID;
+ inputStream >> name;
+ inputStream >> domainID;
+ inputStream >> sinkClassID;
+ inputStream >> volume;
+ inputStream >> visible;
+ inputStream >> available;
+ inputStream >> muteState;
+ inputStream >> mainVolume;
+ inputStream >> listSoundProperties;
+ inputStream >> listConnectionFormats;
+ inputStream >> listMainSoundProperties;
+ inputStream >> listMainNotificationConfigurations;
+ inputStream >> listNotificationConfigurations;
+}
+
+void sinkData_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << sinkID;
+ outputStream << name;
+ outputStream << domainID;
+ outputStream << sinkClassID;
+ outputStream << volume;
+ outputStream << visible;
+ outputStream << available;
+ outputStream << muteState;
+ outputStream << mainVolume;
+ outputStream << listSoundProperties;
+ outputStream << listConnectionFormats;
+ outputStream << listMainSoundProperties;
+ outputStream << listMainNotificationConfigurations;
+ outputStream << listNotificationConfigurations;
+}
+crossfaderData_s::crossfaderData_s(const am_crossfaderID_t& crossfaderIDValue, const std::string& nameValue, const am_sinkID_t& sinkID_AValue, const am_sinkID_t& sinkID_BValue, const am_sourceID_t& sourceIDValue, const am_HotSink_e& hotSinkValue):
+ crossfaderID(crossfaderIDValue),
+ name(nameValue),
+ sinkID_A(sinkID_AValue),
+ sinkID_B(sinkID_BValue),
+ sourceID(sourceIDValue),
+ hotSink(hotSinkValue)
+{
+}
+
+
+bool operator==(const crossfaderData_s& lhs, const crossfaderData_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.crossfaderID == rhs.crossfaderID &&
+ lhs.name == rhs.name &&
+ lhs.sinkID_A == rhs.sinkID_A &&
+ lhs.sinkID_B == rhs.sinkID_B &&
+ lhs.sourceID == rhs.sourceID &&
+ lhs.hotSink == rhs.hotSink
+ ;
+}
+
+void crossfaderData_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> crossfaderID;
+ inputStream >> name;
+ inputStream >> sinkID_A;
+ inputStream >> sinkID_B;
+ inputStream >> sourceID;
+ inputStream >> hotSink;
+}
+
+void crossfaderData_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << crossfaderID;
+ outputStream << name;
+ outputStream << sinkID_A;
+ outputStream << sinkID_B;
+ outputStream << sourceID;
+ outputStream << hotSink;
+}
+am_Gateway_s::am_Gateway_s(const am_gatewayID_t& gatewayIDValue, const std::string& nameValue, const am_sinkID_t& sinkIDValue, const am_sourceID_t& sourceIDValue, const am_domainID_t& domainSinkIDValue, const am_domainID_t& domainSourceIDValue, const am_domainID_t& controlDomainIDValue, const am_ConnectionFormat_L& listSourceFormatsValue, const am_ConnectionFormat_L& listSinkFormatsValue, const bool_L& convertionMatrixValue):
+ gatewayID(gatewayIDValue),
+ name(nameValue),
+ sinkID(sinkIDValue),
+ sourceID(sourceIDValue),
+ domainSinkID(domainSinkIDValue),
+ domainSourceID(domainSourceIDValue),
+ controlDomainID(controlDomainIDValue),
+ listSourceFormats(listSourceFormatsValue),
+ listSinkFormats(listSinkFormatsValue),
+ convertionMatrix(convertionMatrixValue)
+{
+}
+
+
+bool operator==(const am_Gateway_s& lhs, const am_Gateway_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.gatewayID == rhs.gatewayID &&
+ lhs.name == rhs.name &&
+ lhs.sinkID == rhs.sinkID &&
+ lhs.sourceID == rhs.sourceID &&
+ lhs.domainSinkID == rhs.domainSinkID &&
+ lhs.domainSourceID == rhs.domainSourceID &&
+ lhs.controlDomainID == rhs.controlDomainID &&
+ lhs.listSourceFormats == rhs.listSourceFormats &&
+ lhs.listSinkFormats == rhs.listSinkFormats &&
+ lhs.convertionMatrix == rhs.convertionMatrix
+ ;
+}
+
+void am_Gateway_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> gatewayID;
+ inputStream >> name;
+ inputStream >> sinkID;
+ inputStream >> sourceID;
+ inputStream >> domainSinkID;
+ inputStream >> domainSourceID;
+ inputStream >> controlDomainID;
+ inputStream >> listSourceFormats;
+ inputStream >> listSinkFormats;
+ inputStream >> convertionMatrix;
+}
+
+void am_Gateway_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << gatewayID;
+ outputStream << name;
+ outputStream << sinkID;
+ outputStream << sourceID;
+ outputStream << domainSinkID;
+ outputStream << domainSourceID;
+ outputStream << controlDomainID;
+ outputStream << listSourceFormats;
+ outputStream << listSinkFormats;
+ outputStream << convertionMatrix;
+}
+am_EarlyData_s::am_EarlyData_s(const am_EarlyDataType_e& typeValue, const am_DataType_u& sinksourceValue, const am_EarlyData_u& dataValue):
+ type(typeValue),
+ sinksource(sinksourceValue),
+ data(dataValue)
+{
+}
+
+
+bool operator==(const am_EarlyData_s& lhs, const am_EarlyData_s& rhs) {
+ if (&lhs == &rhs)
+ return true;
+
+ return
+ lhs.type == rhs.type &&
+ lhs.sinksource == rhs.sinksource &&
+ lhs.data == rhs.data
+ ;
+}
+
+void am_EarlyData_s::readFromInputStream(CommonAPI::InputStream& inputStream) {
+ inputStream >> type;
+ inputStream >> sinksource;
+ inputStream >> data;
+}
+
+void am_EarlyData_s::writeToOutputStream(CommonAPI::OutputStream& outputStream) const {
+ outputStream << type;
+ outputStream << sinksource;
+ outputStream << data;
+}
+
+} // namespace am_gen
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
diff --git a/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.h b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.h
new file mode 100644
index 0000000..be51398
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src-gen/org/genivi/audiomanager/am_gen.h
@@ -0,0 +1,1764 @@
+/*
+* This file was generated by the CommonAPI Generators.
+*
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+*/
+#ifndef ORG_GENIVI_AUDIOMANAGER_am_gen_H_
+#define ORG_GENIVI_AUDIOMANAGER_am_gen_H_
+
+
+
+#define COMMONAPI_INTERNAL_COMPILATION
+
+#include <CommonAPI/InputStream.h>
+#include <CommonAPI/OutputStream.h>
+#include <CommonAPI/SerializableStruct.h>
+#include <CommonAPI/SerializableVariant.h>
+#include <CommonAPI/types.h>
+#include <cstdint>
+#include <memory>
+#include <string>
+#include <vector>
+
+#undef COMMONAPI_INTERNAL_COMPILATION
+
+namespace org {
+namespace genivi {
+namespace audiomanager {
+
+namespace am_gen {
+ typedef uint16_t am_sourceID_t;
+
+ typedef uint16_t am_sinkID_t;
+
+ typedef uint16_t am_gatewayID_t;
+
+ typedef int16_t gongHandle;
+
+ typedef uint16_t am_sourceClass_t;
+
+ typedef uint16_t am_sinkClass_t;
+
+ typedef int16_t am_volume_t;
+
+ typedef int16_t am_mainVolume_t;
+
+ typedef uint16_t am_handle_t;
+
+ typedef uint16_t am_time_t;
+
+ typedef uint16_t am_connectionID_t;
+
+ typedef uint16_t am_crossfaderID_t;
+
+ enum class gp_indicatorDirection_e: int32_t {
+ INDICATOR_RIGHT = 0x0,
+ INDICATOR_LEFT = 0x1,
+ INDICATOR_WARNING = 0x2
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct gp_indicatorDirection_eComparator;
+
+ enum class am_RampType_e: int32_t {
+ RAMP_UNKNOWN = 0x0,
+ RAMP_GENIVI_DIRECT = 0x1,
+ RAMP_GENIVI_NO_PLOP = 0x2,
+ RAMP_GENIVI_EXP_INV = 0x3,
+ RAMP_GENIVI_LINEAR = 0x4,
+ RAMP_GENIVI_EXP = 0x5,
+ RAMP_MAX = 0x6
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_RampType_eComparator;
+
+ enum class am_MuteState_e: int32_t {
+ MS_UNKNOWN = 0x0,
+ MS_MUTED = 0x1,
+ MS_UNMUTED = 0x2,
+ MS_MAX = 0x3
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_MuteState_eComparator;
+
+ enum class am_SourceState_e: int32_t {
+ SS_UNKNNOWN = 0x0,
+ SS_ON = 0x1,
+ SS_OFF = 0x2,
+ SS_PAUSED = 0x3,
+ SS_MAX = 0x4
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_SourceState_eComparator;
+
+ enum class am_Error_e: int32_t {
+ E_OK = 0x0,
+ E_UNKNOWN = 0x1,
+ E_OUT_OF_RANGE = 0x2,
+ E_NOT_USED = 0x3,
+ E_DATABASE_ERROR = 0x4,
+ E_ALREADY_EXISTS = 0x5,
+ E_NO_CHANGE = 0x6,
+ E_NOT_POSSIBLE = 0x7,
+ E_NON_EXISTENT = 0x8,
+ E_ABORTED = 0x9,
+ E_WRONG_FORMAT = 0xa,
+ E_MAX = 0xb
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_Error_eComparator;
+
+ enum class am_DomainState_e: int32_t {
+ DS_UNKNOWN = 0,
+ DS_CONTROLLED = 1,
+ DS_INDEPENDENT_STARTUP = 2,
+ DS_INDEPENDENT_RUNDOWN = 3,
+ DS_MAX = 4
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_DomainState_eComparator;
+
+ enum class gongType_e: int32_t {
+ AT_NUN = 0x1,
+ AT_POC = 0x2,
+ AT_QUE = 0x3,
+ AT_IWA = 0x4,
+ AT_WA = 0x5,
+ AT_ETC_F = 0x6,
+ AT_ETC_F2 = 0x7,
+ AT_ETC_ST = 0x8,
+ AT_ETC_S = 0x9,
+ AT_REV = 0xa,
+ AT_ESU = 0xb,
+ AT_ESD = 0xc,
+ AT_DG = 0xd,
+ AT_SG = 0xe,
+ AT_IDG = 0xf,
+ AT_ION = 0x10,
+ AT_IOFF = 0x11,
+ AT_FBS = 0x12,
+ AT_VFS = 0x13,
+ AT_GES = 0x14,
+ AT_UEE = 0x15
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct gongType_eComparator;
+
+ enum class am_EarlyDataType_e: int32_t {
+ ED_UNKNOWN = 0x0,
+ ED_SOURCE_VOLUME = 0x1,
+ ED_SINK_VOLUME = 0x2,
+ ED_SOURCE_PROPERTY = 0x3,
+ ED_SINK_PROPERTY = 0x4,
+ ED_MAX = 0x5
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_EarlyDataType_eComparator;
+
+ enum class gp_indicatorStatus_e: int32_t {
+ IS_ON = 0x0,
+ IS_OFF = 0x1
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct gp_indicatorStatus_eComparator;
+
+ enum class gongStatus_e: int32_t {
+ NOT_PLAYING = 0x0,
+ PLAYING = 0x1,
+ INTERRUPTED = 0x2
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct gongStatus_eComparator;
+
+ enum class gongError_e: int32_t {
+ SUCCESS = 0x0,
+ ERROR = 0x1,
+ LOW_PRIORITY = 0x2
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct gongError_eComparator;
+
+ enum class gongClass_e: int32_t {
+ GONGCLASS_1 = 0x1,
+ GONGCLASS_2 = 0x2,
+ GONGCLASS_PDC = 0x3,
+ GONGCLASS_TURN = 0x4,
+ GONGCLASS_OBSTACLE = 0x5
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct gongClass_eComparator;
+
+ enum class sampleSet_e: int32_t {
+ setBMW = 0x0,
+ setMini = 0x1,
+ setRR = 0x2
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct sampleSet_eComparator;
+
+ enum class am_Availability_e: int32_t {
+ A_UNKNOWN = 0x0,
+ A_AVAILABLE = 0x1,
+ A_UNAVAILABLE = 0x2,
+ A_MAX = 0x3
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_Availability_eComparator;
+
+ enum class am_AvailabilityReason_e: int32_t {
+ AR_UNKNOWN = 0x0,
+ AR_GENIVI_NEWMEDIA = 0x1,
+ AR_GENIVI_SAMEMEDIA = 0x2,
+ AR_GENIVI_NOMEDIA = 0x3,
+ AR_GENIVI_TEMPERATURE = 0x4,
+ AR_GENIVI_VOLTAGE = 0x5,
+ AR_GENIVI_ERRORMEDIA = 0x6,
+ AR_MAX = 0x7
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_AvailabilityReason_eComparator;
+
+ enum class am_InterruptState_e: int32_t {
+ IS_UNKNOWN = 0x0,
+ IS_OFF = 0x1,
+ IS_INTERRUPTED = 0x2,
+ IS_MAX = 0x3
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_InterruptState_eComparator;
+
+ enum class am_SoundPropertyType_e: int32_t {
+ SP_UNKNOWN = 0x0,
+ SP_EXAMPLE_TREBLE = 0x1,
+ SP_EXAMPLE_MID = 0x2,
+ SP_EXAMPLE_BASS = 0x3,
+ SP_ENTER_SINKID = 0x4,
+ SP_INTERR_SUPERSEEDINGID = 0x5,
+ SP_INTERR_OVERLAYID = 0x6,
+ SP_PRIORITY = 0x7,
+ SP_MAX = 0x8
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_SoundPropertyType_eComparator;
+
+ enum class am_ConnectionFormat_e: int32_t {
+ CF_UNKNOWN = 0x0,
+ CF_GENIVI_MONO = 0x1,
+ CF_GENIVI_STEREO = 0x2,
+ CF_GENIVI_ANALOG = 0x3,
+ CF_GENIVI_AUTO = 0x4,
+ CF_MAX = 0x5
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_ConnectionFormat_eComparator;
+
+ typedef std::vector<am_ConnectionFormat_e> am_ConnectionFormat_L;
+
+ enum class am_MainSoundPropertyType_e: int32_t {
+ MSP_UNKNOWN = 0x0,
+ MSP_EXAMPLE_TREBLE = 0x1,
+ MSP_EXAMPLE_MID = 0x2,
+ MSP_EXAMPLE_BASS = 0x3,
+ MSP_SOURCE_TYPE = 0x4,
+ MSP_MAX = 0x5
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_MainSoundPropertyType_eComparator;
+
+ enum class am_NotificationType_e: int32_t {
+ NT_UNKNOWN = 0x0,
+ NT_LOUDNESS = 0x1,
+ NT_MAX = 0x2
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_NotificationType_eComparator;
+
+ enum class am_NotificationStatus_e: int32_t {
+ NS_UNKNOWN = 0x0,
+ NS_OFF = 0x1,
+ NS_PERIODIC = 0x2,
+ NS_MINIMUM = 0x3,
+ NS_MAXIMUM = 0x4,
+ NS_CHANGE = 0x5,
+ NS_MAX = 0x6
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_NotificationStatus_eComparator;
+
+ enum class am_HotSink_e: int32_t {
+ HS_UNKNOWN = 0x0,
+ HS_SINKA = 0x1,
+ HS_SINKB = 0x2,
+ HS_INTERMEDIATE = 0x3,
+ HS_MAX = 0x4
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_HotSink_eComparator;
+
+ enum class am_VolumeType_e: int32_t {
+ VT_UNKNOWN = 0x0,
+ VT_SINK = 0x1,
+ VT_SOURCE = 0x2,
+ VT_MAX = 0x3
+ };
+
+ // XXX Definition of a comparator still is necessary for GCC 4.4.1, topic is fixed since 4.5.1
+ struct am_VolumeType_eComparator;
+
+ struct distanceInformation_s: CommonAPI::SerializableStruct {
+ int32_t FrontLeft;
+ int32_t FrontRight;
+ int32_t RearLeft;
+ int32_t RearRight;
+
+ distanceInformation_s() = default;
+ distanceInformation_s(const int32_t& FrontLeft, const int32_t& FrontRight, const int32_t& RearLeft, const int32_t& RearRight);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt32Type();
+ }
+ };
+
+ struct sampleNames_s: CommonAPI::SerializableStruct {
+ sampleSet_e sample;
+ std::string sampleName;
+
+ sampleNames_s() = default;
+ sampleNames_s(const sampleSet_e& sample, const std::string& sampleName);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeStringType();
+ }
+ };
+
+ typedef std::vector<sampleNames_s> listSampleNamesL;
+
+ typedef uint16_t am_domainID_t;
+
+ struct am_Domain_s: CommonAPI::SerializableStruct {
+ am_domainID_t domainID;
+ std::string name;
+ std::string busname;
+ std::string nodename;
+ bool early;
+ bool complete;
+ am_DomainState_e state;
+
+ am_Domain_s() = default;
+ am_Domain_s(const am_domainID_t& domainID, const std::string& name, const std::string& busname, const std::string& nodename, const bool& early, const bool& complete, const am_DomainState_e& state);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeBoolType();
+ typeOutputStream.writeBoolType();
+ typeOutputStream.writeInt32Type();
+ }
+ };
+
+ typedef CommonAPI::Variant<am_sinkID_t, am_sourceID_t> am_DataType_u;
+
+ struct am_Volumes_s: CommonAPI::SerializableStruct {
+ am_VolumeType_e volumeType;
+ am_DataType_u volumeID;
+ am_volume_t volume;
+ am_RampType_e ramp;
+ am_time_t time;
+
+ am_Volumes_s() = default;
+ am_Volumes_s(const am_VolumeType_e& volumeType, const am_DataType_u& volumeID, const am_volume_t& volume, const am_RampType_e& ramp, const am_time_t& time);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeVariantType();
+ typeOutputStream.writeInt16Type();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeUInt16Type();
+ }
+ };
+
+ typedef std::vector<am_Volumes_s> am_Volumes_l;
+
+ struct notificationPayload_s: CommonAPI::SerializableStruct {
+ int16_t type;
+ int16_t payload;
+
+ notificationPayload_s() = default;
+ notificationPayload_s(const int16_t& type, const int16_t& payload);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt16Type();
+ typeOutputStream.writeInt16Type();
+ }
+ };
+
+ struct am_Availability_s: CommonAPI::SerializableStruct {
+ am_Availability_e availability;
+ am_AvailabilityReason_e availabilityReason;
+
+ am_Availability_s() = default;
+ am_Availability_s(const am_Availability_e& availability, const am_AvailabilityReason_e& availabilityReason);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt32Type();
+ }
+ };
+
+ struct am_SoundProperty_s: CommonAPI::SerializableStruct {
+ am_SoundPropertyType_e type;
+ int16_t value;
+
+ am_SoundProperty_s() = default;
+ am_SoundProperty_s(const am_SoundPropertyType_e& type, const int16_t& value);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt16Type();
+ }
+ };
+
+ typedef std::vector<am_SoundProperty_s> am_SoundProperty_L;
+
+ struct am_MainSoundProperty_s: CommonAPI::SerializableStruct {
+ am_MainSoundPropertyType_e type;
+ int16_t value;
+
+ am_MainSoundProperty_s() = default;
+ am_MainSoundProperty_s(const am_MainSoundPropertyType_e& type, const int16_t& value);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt16Type();
+ }
+ };
+
+ typedef std::vector<am_MainSoundProperty_s> am_MainSoundProperty_L;
+
+ struct am_NotificationConfiguration_s: CommonAPI::SerializableStruct {
+ am_NotificationType_e type;
+ am_NotificationStatus_e status;
+ int16_t parameter;
+
+ am_NotificationConfiguration_s() = default;
+ am_NotificationConfiguration_s(const am_NotificationType_e& type, const am_NotificationStatus_e& status, const int16_t& parameter);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt16Type();
+ }
+ };
+
+ typedef std::vector<am_NotificationConfiguration_s> am_NotificationConfiguration_L;
+
+ typedef std::vector<bool> bool_L;
+
+ struct sourceData_s: CommonAPI::SerializableStruct {
+ am_sourceID_t sourceID;
+ am_domainID_t domainID;
+ std::string name;
+ am_sourceClass_t sourceClassID;
+ am_SourceState_e sourceState;
+ am_volume_t volume;
+ bool visible;
+ am_Availability_s available;
+ am_InterruptState_e interruptState;
+ am_SoundProperty_L listSoundProperties;
+ am_ConnectionFormat_L listConnectionFormats;
+ am_MainSoundProperty_L listMainSoundProperties;
+ am_NotificationConfiguration_L listMainNotificationConfigurations;
+ am_NotificationConfiguration_L listNotificationConfigurations;
+
+ sourceData_s() = default;
+ sourceData_s(const am_sourceID_t& sourceID, const am_domainID_t& domainID, const std::string& name, const am_sourceClass_t& sourceClassID, const am_SourceState_e& sourceState, const am_volume_t& volume, const bool& visible, const am_Availability_s& available, const am_InterruptState_e& interruptState, const am_SoundProperty_L& listSoundProperties, const am_ConnectionFormat_L& listConnectionFormats, const am_MainSoundProperty_L& listMainSoundProperties, const am_NotificationConfiguration_L& listMainNotificationConfigurations, const am_NotificationConfiguration_L& listNotificationConfigurations);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt16Type();
+ typeOutputStream.writeBoolType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt32Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ }
+ };
+
+ struct sinkData_s: CommonAPI::SerializableStruct {
+ am_sinkID_t sinkID;
+ std::string name;
+ am_domainID_t domainID;
+ am_sinkClass_t sinkClassID;
+ am_volume_t volume;
+ bool visible;
+ am_Availability_s available;
+ am_MuteState_e muteState;
+ am_mainVolume_t mainVolume;
+ am_SoundProperty_L listSoundProperties;
+ am_ConnectionFormat_L listConnectionFormats;
+ am_MainSoundProperty_L listMainSoundProperties;
+ am_NotificationConfiguration_L listMainNotificationConfigurations;
+ am_NotificationConfiguration_L listNotificationConfigurations;
+
+ sinkData_s() = default;
+ sinkData_s(const am_sinkID_t& sinkID, const std::string& name, const am_domainID_t& domainID, const am_sinkClass_t& sinkClassID, const am_volume_t& volume, const bool& visible, const am_Availability_s& available, const am_MuteState_e& muteState, const am_mainVolume_t& mainVolume, const am_SoundProperty_L& listSoundProperties, const am_ConnectionFormat_L& listConnectionFormats, const am_MainSoundProperty_L& listMainSoundProperties, const am_NotificationConfiguration_L& listMainNotificationConfigurations, const am_NotificationConfiguration_L& listNotificationConfigurations);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeInt16Type();
+ typeOutputStream.writeBoolType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt32Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeInt16Type();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.beginWriteStructType();
+ typeOutputStream.writeInt32Type();typeOutputStream.writeInt32Type();typeOutputStream.writeInt16Type();
+ typeOutputStream.endWriteStructType();
+ typeOutputStream.endWriteVectorType();
+ }
+ };
+
+ struct crossfaderData_s: CommonAPI::SerializableStruct {
+ am_crossfaderID_t crossfaderID;
+ std::string name;
+ am_sinkID_t sinkID_A;
+ am_sinkID_t sinkID_B;
+ am_sourceID_t sourceID;
+ am_HotSink_e hotSink;
+
+ crossfaderData_s() = default;
+ crossfaderData_s(const am_crossfaderID_t& crossfaderID, const std::string& name, const am_sinkID_t& sinkID_A, const am_sinkID_t& sinkID_B, const am_sourceID_t& sourceID, const am_HotSink_e& hotSink);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeInt32Type();
+ }
+ };
+
+ struct am_Gateway_s: CommonAPI::SerializableStruct {
+ am_gatewayID_t gatewayID;
+ std::string name;
+ am_sinkID_t sinkID;
+ am_sourceID_t sourceID;
+ am_domainID_t domainSinkID;
+ am_domainID_t domainSourceID;
+ am_domainID_t controlDomainID;
+ am_ConnectionFormat_L listSourceFormats;
+ am_ConnectionFormat_L listSinkFormats;
+ bool_L convertionMatrix;
+
+ am_Gateway_s() = default;
+ am_Gateway_s(const am_gatewayID_t& gatewayID, const std::string& name, const am_sinkID_t& sinkID, const am_sourceID_t& sourceID, const am_domainID_t& domainSinkID, const am_domainID_t& domainSourceID, const am_domainID_t& controlDomainID, const am_ConnectionFormat_L& listSourceFormats, const am_ConnectionFormat_L& listSinkFormats, const bool_L& convertionMatrix);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeStringType();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.writeUInt16Type();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.endWriteVectorType();
+ typeOutputStream.beginWriteVectorType();
+ typeOutputStream.writeBoolType();
+ typeOutputStream.endWriteVectorType();
+ }
+ };
+
+ typedef CommonAPI::Variant<am_volume_t, am_SoundProperty_s> am_EarlyData_u;
+
+ struct am_EarlyData_s: CommonAPI::SerializableStruct {
+ am_EarlyDataType_e type;
+ am_DataType_u sinksource;
+ am_EarlyData_u data;
+
+ am_EarlyData_s() = default;
+ am_EarlyData_s(const am_EarlyDataType_e& type, const am_DataType_u& sinksource, const am_EarlyData_u& data);
+
+
+ virtual void readFromInputStream(CommonAPI::InputStream& inputStream);
+ virtual void writeToOutputStream(CommonAPI::OutputStream& outputStream) const;
+
+ static inline void writeToTypeOutputStream(CommonAPI::TypeOutputStream& typeOutputStream) {
+ typeOutputStream.writeInt32Type();
+ typeOutputStream.writeVariantType();
+ typeOutputStream.writeVariantType();
+ }
+ };
+
+ typedef std::vector<am_EarlyData_s> am_EarlyData_l;
+
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, gp_indicatorDirection_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const gp_indicatorDirection_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct gp_indicatorDirection_eComparator {
+ inline bool operator()(const gp_indicatorDirection_e& lhs, const gp_indicatorDirection_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_RampType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_RampType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_RampType_eComparator {
+ inline bool operator()(const am_RampType_e& lhs, const am_RampType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_MuteState_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_MuteState_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_MuteState_eComparator {
+ inline bool operator()(const am_MuteState_e& lhs, const am_MuteState_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_SourceState_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_SourceState_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_SourceState_eComparator {
+ inline bool operator()(const am_SourceState_e& lhs, const am_SourceState_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_Error_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_Error_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_Error_eComparator {
+ inline bool operator()(const am_Error_e& lhs, const am_Error_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_DomainState_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_DomainState_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_DomainState_eComparator {
+ inline bool operator()(const am_DomainState_e& lhs, const am_DomainState_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, gongType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const gongType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct gongType_eComparator {
+ inline bool operator()(const gongType_e& lhs, const gongType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_EarlyDataType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_EarlyDataType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_EarlyDataType_eComparator {
+ inline bool operator()(const am_EarlyDataType_e& lhs, const am_EarlyDataType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, gp_indicatorStatus_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const gp_indicatorStatus_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct gp_indicatorStatus_eComparator {
+ inline bool operator()(const gp_indicatorStatus_e& lhs, const gp_indicatorStatus_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, gongStatus_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const gongStatus_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct gongStatus_eComparator {
+ inline bool operator()(const gongStatus_e& lhs, const gongStatus_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, gongError_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const gongError_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct gongError_eComparator {
+ inline bool operator()(const gongError_e& lhs, const gongError_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, gongClass_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const gongClass_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct gongClass_eComparator {
+ inline bool operator()(const gongClass_e& lhs, const gongClass_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, sampleSet_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const sampleSet_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct sampleSet_eComparator {
+ inline bool operator()(const sampleSet_e& lhs, const sampleSet_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_Availability_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_Availability_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_Availability_eComparator {
+ inline bool operator()(const am_Availability_e& lhs, const am_Availability_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_AvailabilityReason_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_AvailabilityReason_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_AvailabilityReason_eComparator {
+ inline bool operator()(const am_AvailabilityReason_e& lhs, const am_AvailabilityReason_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_InterruptState_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_InterruptState_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_InterruptState_eComparator {
+ inline bool operator()(const am_InterruptState_e& lhs, const am_InterruptState_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_SoundPropertyType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_SoundPropertyType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_SoundPropertyType_eComparator {
+ inline bool operator()(const am_SoundPropertyType_e& lhs, const am_SoundPropertyType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_ConnectionFormat_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_ConnectionFormat_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_ConnectionFormat_eComparator {
+ inline bool operator()(const am_ConnectionFormat_e& lhs, const am_ConnectionFormat_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_MainSoundPropertyType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_MainSoundPropertyType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_MainSoundPropertyType_eComparator {
+ inline bool operator()(const am_MainSoundPropertyType_e& lhs, const am_MainSoundPropertyType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_NotificationType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_NotificationType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_NotificationType_eComparator {
+ inline bool operator()(const am_NotificationType_e& lhs, const am_NotificationType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_NotificationStatus_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_NotificationStatus_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_NotificationStatus_eComparator {
+ inline bool operator()(const am_NotificationStatus_e& lhs, const am_NotificationStatus_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_HotSink_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_HotSink_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_HotSink_eComparator {
+ inline bool operator()(const am_HotSink_e& lhs, const am_HotSink_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+inline CommonAPI::InputStream& operator>>(CommonAPI::InputStream& inputStream, am_VolumeType_e& enumValue) {
+ return inputStream.readEnumValue<int32_t>(enumValue);
+}
+
+inline CommonAPI::OutputStream& operator<<(CommonAPI::OutputStream& outputStream, const am_VolumeType_e& enumValue) {
+ return outputStream.writeEnumValue(static_cast<int32_t>(enumValue));
+}
+
+struct am_VolumeType_eComparator {
+ inline bool operator()(const am_VolumeType_e& lhs, const am_VolumeType_e& rhs) const {
+ return static_cast<int32_t>(lhs) < static_cast<int32_t>(rhs);
+ }
+};
+
+bool operator==(const distanceInformation_s& lhs, const distanceInformation_s& rhs);
+inline bool operator!=(const distanceInformation_s& lhs, const distanceInformation_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const sampleNames_s& lhs, const sampleNames_s& rhs);
+inline bool operator!=(const sampleNames_s& lhs, const sampleNames_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_Domain_s& lhs, const am_Domain_s& rhs);
+inline bool operator!=(const am_Domain_s& lhs, const am_Domain_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_Volumes_s& lhs, const am_Volumes_s& rhs);
+inline bool operator!=(const am_Volumes_s& lhs, const am_Volumes_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const notificationPayload_s& lhs, const notificationPayload_s& rhs);
+inline bool operator!=(const notificationPayload_s& lhs, const notificationPayload_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_Availability_s& lhs, const am_Availability_s& rhs);
+inline bool operator!=(const am_Availability_s& lhs, const am_Availability_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_SoundProperty_s& lhs, const am_SoundProperty_s& rhs);
+inline bool operator!=(const am_SoundProperty_s& lhs, const am_SoundProperty_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_MainSoundProperty_s& lhs, const am_MainSoundProperty_s& rhs);
+inline bool operator!=(const am_MainSoundProperty_s& lhs, const am_MainSoundProperty_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_NotificationConfiguration_s& lhs, const am_NotificationConfiguration_s& rhs);
+inline bool operator!=(const am_NotificationConfiguration_s& lhs, const am_NotificationConfiguration_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const sourceData_s& lhs, const sourceData_s& rhs);
+inline bool operator!=(const sourceData_s& lhs, const sourceData_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const sinkData_s& lhs, const sinkData_s& rhs);
+inline bool operator!=(const sinkData_s& lhs, const sinkData_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const crossfaderData_s& lhs, const crossfaderData_s& rhs);
+inline bool operator!=(const crossfaderData_s& lhs, const crossfaderData_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_Gateway_s& lhs, const am_Gateway_s& rhs);
+inline bool operator!=(const am_Gateway_s& lhs, const am_Gateway_s& rhs) {
+ return !(lhs == rhs);
+}
+bool operator==(const am_EarlyData_s& lhs, const am_EarlyData_s& rhs);
+inline bool operator!=(const am_EarlyData_s& lhs, const am_EarlyData_s& rhs) {
+ return !(lhs == rhs);
+}
+
+
+static inline const char* getTypeCollectionName() {
+ return "org.genivi.audiomanager.am_gen";
+}
+
+
+} // namespace am_gen
+
+} // namespace audiomanager
+} // namespace genivi
+} // namespace org
+
+namespace CommonAPI {
+
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::gp_indicatorDirection_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::gp_indicatorDirection_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::gp_indicatorDirection_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::gp_indicatorDirection_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::gp_indicatorDirection_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_RampType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_RampType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_RampType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_RampType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_RampType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_MuteState_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_MuteState_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_MuteState_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_MuteState_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_MuteState_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_SourceState_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_SourceState_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_SourceState_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_SourceState_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_SourceState_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_Error_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_Error_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_Error_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_Error_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_Error_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_DomainState_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_DomainState_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_DomainState_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_DomainState_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_DomainState_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::gongType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::gongType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::gongType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_EarlyDataType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_EarlyDataType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_EarlyDataType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_EarlyDataType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_EarlyDataType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::gp_indicatorStatus_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::gp_indicatorStatus_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::gp_indicatorStatus_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::gp_indicatorStatus_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::gp_indicatorStatus_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::gongStatus_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongStatus_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::gongStatus_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongStatus_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::gongStatus_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::gongError_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongError_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::gongError_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongError_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::gongError_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::gongClass_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongClass_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::gongClass_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::gongClass_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::gongClass_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::sampleSet_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::sampleSet_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::sampleSet_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::sampleSet_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::sampleSet_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_Availability_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_Availability_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_Availability_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_Availability_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_Availability_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_AvailabilityReason_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_AvailabilityReason_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_AvailabilityReason_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_AvailabilityReason_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_AvailabilityReason_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_InterruptState_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_InterruptState_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_InterruptState_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_InterruptState_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_InterruptState_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_SoundPropertyType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_SoundPropertyType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_SoundPropertyType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_SoundPropertyType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_SoundPropertyType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_ConnectionFormat_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_ConnectionFormat_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_ConnectionFormat_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_ConnectionFormat_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_ConnectionFormat_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_NotificationType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_NotificationType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_NotificationType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_NotificationType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_NotificationType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_NotificationStatus_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_NotificationStatus_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_NotificationStatus_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_NotificationStatus_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_NotificationStatus_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_HotSink_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_HotSink_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_HotSink_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_HotSink_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_HotSink_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+ template<>
+ struct BasicTypeWriter<org::genivi::audiomanager::am_gen::am_VolumeType_e> {
+ inline static void writeType (CommonAPI::TypeOutputStream& typeStream) {
+ typeStream.writeInt32EnumType();
+ }
+ };
+
+ template<>
+ struct InputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_VolumeType_e> {
+ static void beginReadVector(InputStream& inputStream, const std::vector<org::genivi::audiomanager::am_gen::am_VolumeType_e>& vectorValue) {
+ inputStream.beginReadInt32EnumVector();
+ }
+ };
+
+ template <>
+ struct OutputStreamVectorHelper<org::genivi::audiomanager::am_gen::am_VolumeType_e> {
+ static void beginWriteVector(OutputStream& outputStream, const std::vector<org::genivi::audiomanager::am_gen::am_VolumeType_e>& vectorValue) {
+ outputStream.beginWriteInt32EnumVector(vectorValue.size());
+ }
+ };
+
+}
+
+
+namespace std {
+ //Hash for gp_indicatorDirection_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::gp_indicatorDirection_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::gp_indicatorDirection_e& gp_indicatorDirection_e) const {
+ return static_cast<int32_t>(gp_indicatorDirection_e);
+ }
+ };
+ //Hash for am_RampType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_RampType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_RampType_e& am_RampType_e) const {
+ return static_cast<int32_t>(am_RampType_e);
+ }
+ };
+ //Hash for am_MuteState_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_MuteState_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_MuteState_e& am_MuteState_e) const {
+ return static_cast<int32_t>(am_MuteState_e);
+ }
+ };
+ //Hash for am_SourceState_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_SourceState_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_SourceState_e& am_SourceState_e) const {
+ return static_cast<int32_t>(am_SourceState_e);
+ }
+ };
+ //Hash for am_Error_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_Error_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_Error_e& am_Error_e) const {
+ return static_cast<int32_t>(am_Error_e);
+ }
+ };
+ //Hash for am_DomainState_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_DomainState_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_DomainState_e& am_DomainState_e) const {
+ return static_cast<int32_t>(am_DomainState_e);
+ }
+ };
+ //Hash for gongType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::gongType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::gongType_e& gongType_e) const {
+ return static_cast<int32_t>(gongType_e);
+ }
+ };
+ //Hash for am_EarlyDataType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_EarlyDataType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_EarlyDataType_e& am_EarlyDataType_e) const {
+ return static_cast<int32_t>(am_EarlyDataType_e);
+ }
+ };
+ //Hash for gp_indicatorStatus_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::gp_indicatorStatus_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::gp_indicatorStatus_e& gp_indicatorStatus_e) const {
+ return static_cast<int32_t>(gp_indicatorStatus_e);
+ }
+ };
+ //Hash for gongStatus_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::gongStatus_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::gongStatus_e& gongStatus_e) const {
+ return static_cast<int32_t>(gongStatus_e);
+ }
+ };
+ //Hash for gongError_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::gongError_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::gongError_e& gongError_e) const {
+ return static_cast<int32_t>(gongError_e);
+ }
+ };
+ //Hash for gongClass_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::gongClass_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::gongClass_e& gongClass_e) const {
+ return static_cast<int32_t>(gongClass_e);
+ }
+ };
+ //Hash for sampleSet_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::sampleSet_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::sampleSet_e& sampleSet_e) const {
+ return static_cast<int32_t>(sampleSet_e);
+ }
+ };
+ //Hash for am_Availability_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_Availability_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_Availability_e& am_Availability_e) const {
+ return static_cast<int32_t>(am_Availability_e);
+ }
+ };
+ //Hash for am_AvailabilityReason_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_AvailabilityReason_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_AvailabilityReason_e& am_AvailabilityReason_e) const {
+ return static_cast<int32_t>(am_AvailabilityReason_e);
+ }
+ };
+ //Hash for am_InterruptState_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_InterruptState_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_InterruptState_e& am_InterruptState_e) const {
+ return static_cast<int32_t>(am_InterruptState_e);
+ }
+ };
+ //Hash for am_SoundPropertyType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_SoundPropertyType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_SoundPropertyType_e& am_SoundPropertyType_e) const {
+ return static_cast<int32_t>(am_SoundPropertyType_e);
+ }
+ };
+ //Hash for am_ConnectionFormat_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_ConnectionFormat_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_ConnectionFormat_e& am_ConnectionFormat_e) const {
+ return static_cast<int32_t>(am_ConnectionFormat_e);
+ }
+ };
+ //Hash for am_MainSoundPropertyType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_MainSoundPropertyType_e& am_MainSoundPropertyType_e) const {
+ return static_cast<int32_t>(am_MainSoundPropertyType_e);
+ }
+ };
+ //Hash for am_NotificationType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_NotificationType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_NotificationType_e& am_NotificationType_e) const {
+ return static_cast<int32_t>(am_NotificationType_e);
+ }
+ };
+ //Hash for am_NotificationStatus_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_NotificationStatus_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_NotificationStatus_e& am_NotificationStatus_e) const {
+ return static_cast<int32_t>(am_NotificationStatus_e);
+ }
+ };
+ //Hash for am_HotSink_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_HotSink_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_HotSink_e& am_HotSink_e) const {
+ return static_cast<int32_t>(am_HotSink_e);
+ }
+ };
+ //Hash for am_VolumeType_e
+ template<>
+ struct hash<org::genivi::audiomanager::am_gen::am_VolumeType_e> {
+ inline size_t operator()(const org::genivi::audiomanager::am_gen::am_VolumeType_e& am_VolumeType_e) const {
+ return static_cast<int32_t>(am_VolumeType_e);
+ }
+ };
+}
+
+#endif // ORG_GENIVI_AUDIOMANAGER_am_gen_H_
diff --git a/PluginRoutingInterfaceCAPI/src/CAmLookupData.cpp b/PluginRoutingInterfaceCAPI/src/CAmLookupData.cpp
new file mode 100644
index 0000000..6788618
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src/CAmLookupData.cpp
@@ -0,0 +1,669 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#include <algorithm>
+#include "CAmLookupData.h"
+#include "CAmRoutingSenderCommon.h"
+#include "shared/CAmDltWrapper.h"
+
+
+namespace am {
+
+const char * CAmLookupData::BUS_NAME = "CAPIRoutingPlugin";
+
+/**
+ * rs_lookupData_s
+ */
+
+rs_lookupData_s::rs_lookupData_s(const std::shared_ptr<RoutingSenderProxy<> > & aProxy):mSenderProxy(aProxy)
+{
+ logInfo(__PRETTY_FUNCTION__);
+ mSubscription = mSenderProxy->getProxyStatusEvent().subscribe(std::bind(&rs_lookupData_s::onServiceStatusEvent,this,std::placeholders::_1));
+}
+
+rs_lookupData_s::~rs_lookupData_s()
+{
+ mSenderProxy->getProxyStatusEvent().unsubscribe(mSubscription);
+ mSenderProxy.reset();
+}
+
+std::shared_ptr<RoutingSenderProxy<>> & rs_lookupData_s::getProxy()
+{
+ return mSenderProxy;
+}
+
+bool rs_lookupData_s::isConnected()
+{
+ return mIsConnected;
+}
+
+am_Error_e rs_lookupData_s::asyncAbort(const uint16_t handle, RoutingSenderProxyBase::AsyncAbortAsyncCallback callback)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncAbortAsync(static_cast<am_gen::am_handle_t>(handle), callback);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncConnect(const uint16_t handle,
+ const am_connectionID_t connectionID,
+ const am_sourceID_t sourceID,
+ const am_sinkID_t sinkID,
+ const am_ConnectionFormat_e connectionFormat,
+ RoutingSenderProxyBase::AsyncConnectAsyncCallback callback)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncConnectAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_connectionID_t>(connectionID),
+ static_cast<am_gen::am_sourceID_t>(sourceID),
+ static_cast<am_gen::am_sinkID_t>(sinkID),
+ static_cast<am_gen::am_ConnectionFormat_e>(connectionFormat),
+ callback);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncDisconnect(const uint16_t handle,
+ const am_connectionID_t connectionID,
+ RoutingSenderProxyBase::AsyncDisconnectAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncDisconnectAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_connectionID_t>(connectionID),
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSinkVolume( const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const am_volume_t volume,
+ const am_RampType_e ramp,
+ const am_time_t time,
+ RoutingSenderProxyBase::AsyncSetSinkVolumeAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncSetSinkVolumeAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sinkID_t>(sinkID),
+ static_cast<am_gen::am_volume_t>(volume),
+ static_cast<am_gen::am_RampType_e>(ramp),
+ static_cast<am_gen::am_time_t>(time),
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSourceVolume(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_volume_t volume,
+ const am_RampType_e ramp,
+ const am_time_t time,
+ RoutingSenderProxyBase::AsyncSetSourceVolumeAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncSetSourceVolumeAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sourceID_t>(sourceID),
+ static_cast<am_gen::am_volume_t>(volume),
+ static_cast<am_gen::am_RampType_e>(ramp),
+ static_cast<am_gen::am_time_t>(time),
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSourceState( const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_SourceState_e state,
+ RoutingSenderProxyBase::AsyncSetSinkSoundPropertiesAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncSetSourceStateAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sourceID_t>(sourceID),
+ static_cast<am_gen::am_SourceState_e>(state),
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSinkSoundProperties( const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const std::vector<am_SoundProperty_s>& listSoundProperties,
+ RoutingSenderProxyBase::AsyncSetSinkSoundPropertiesAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_SoundProperty_L lsp;
+ CAmConvertAMVector2CAPI(listSoundProperties, lsp);
+ mSenderProxy->asyncSetSinkSoundPropertiesAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sinkID_t>(sinkID),
+ lsp,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSinkSoundProperty( const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const am_SoundProperty_s& soundProperty,
+ RoutingSenderProxyBase::AsyncSetSinkSoundPropertyAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_SoundProperty_s converted;
+ CAmConvertAM2CAPI(soundProperty, converted);
+ mSenderProxy->asyncSetSinkSoundPropertyAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sinkID_t>(sinkID),
+ converted,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSourceSoundProperties(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const std::vector<am_SoundProperty_s>& listSoundProperties,
+ RoutingSenderProxyBase::AsyncSetSourceSoundPropertiesAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_SoundProperty_L lsp;
+ CAmConvertAMVector2CAPI(listSoundProperties, lsp);
+ mSenderProxy->asyncSetSourceSoundPropertiesAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sourceID_t>(sourceID),
+ lsp,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSourceSoundProperty(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_SoundProperty_s& soundProperty,
+ RoutingSenderProxyBase::AsyncSetSourceSoundPropertyAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_SoundProperty_s converted;
+ CAmConvertAM2CAPI(soundProperty, converted);
+ mSenderProxy->asyncSetSourceSoundPropertyAsync( static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sourceID_t>(sourceID),
+ converted,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+
+am_Error_e rs_lookupData_s::asyncCrossFade(const uint16_t handle,
+ const am_crossfaderID_t crossfaderID,
+ const am_HotSink_e hotSink,
+ const am_RampType_e rampType,
+ const am_time_t time,
+ RoutingSenderProxyBase::AsyncCrossFadeAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->asyncCrossFadeAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_crossfaderID_t>(crossfaderID),
+ static_cast<am_gen::am_HotSink_e>(hotSink),
+ static_cast<am_gen::am_RampType_e>(rampType),
+ static_cast<am_gen::am_time_t>(time),
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState, RoutingSenderProxyBase::SetDomainStateAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ mSenderProxy->setDomainStateAsync(static_cast<am_gen::am_domainID_t>(domainID),
+ static_cast<am_gen::am_DomainState_e>(domainState),
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetVolumes(const uint16_t handle,
+ const std::vector<am_Volumes_s>& volumes ,
+ RoutingSenderProxyBase::AsyncSetVolumesAsyncCallback cb )
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_Volumes_l list;
+ CAmConvertAMVector2CAPI(volumes, list);
+ mSenderProxy->asyncSetVolumesAsync(static_cast<am_gen::am_handle_t>(handle),
+ list,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSinkNotificationConfiguration(const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const am_NotificationConfiguration_s& notificationConfiguration,
+ RoutingSenderProxyBase::AsyncSetSinkNotificationConfigurationAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_NotificationConfiguration_s converted;
+ CAmConvertAM2CAPI(notificationConfiguration, converted);
+ mSenderProxy->asyncSetSinkNotificationConfigurationAsync(static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sinkID_t>(sinkID),
+ converted,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e rs_lookupData_s::asyncSetSourceNotificationConfiguration(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_NotificationConfiguration_s& notificationConfiguration,
+ RoutingSenderProxyBase::AsyncSetSourceNotificationConfigurationAsyncCallback cb)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ isConnected : ", isConnected(), " ]");
+ if(isConnected())
+ {
+ am_gen::am_NotificationConfiguration_s converted;
+ CAmConvertAM2CAPI(notificationConfiguration, converted);
+ mSenderProxy->asyncSetSourceNotificationConfigurationAsync( static_cast<am_gen::am_handle_t>(handle),
+ static_cast<am_gen::am_sourceID_t>(sourceID),
+ converted,
+ cb);
+ return (E_OK);
+ }
+ return (E_UNKNOWN);
+}
+
+void rs_lookupData_s::onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus)
+{
+ std::string serviceID;
+ logInfo(__PRETTY_FUNCTION__, serviceID, " status : ", (int)serviceStatus );
+ mIsConnected = (serviceStatus==CommonAPI::AvailabilityStatus::AVAILABLE);
+}
+
+/**
+ * CAmLookupData
+ */
+
+CAmLookupData::CAmLookupData():mMapDomains(), mMapSinks(), mMapSources(),mMapConnections(),mMapHandles(), mMapCrossfaders() {
+ // TODO Auto-generated constructor stub
+
+}
+
+CAmLookupData::~CAmLookupData() {
+ // TODO Auto-generated destructor stub
+}
+
+void CAmLookupData::addDomainLookup(am_domainID_t & domainID,
+ std::shared_ptr<RoutingSenderProxy<>> & aProxy)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ domainID : ", domainID, " ]");
+ RSLookupDataPtr lookupData = std::make_shared<rs_lookupData_s>(aProxy);
+ mMapDomains.insert(std::make_pair(domainID, lookupData));
+}
+
+void CAmLookupData::removeHandle(uint16_t handle)
+{
+ mMapHandles.erase(handle);
+}
+
+void CAmLookupData::addSourceLookup(am_sourceID_t sourceID, am_domainID_t domainID)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ domainID : ", domainID, " ]", " [ sourceID : ", sourceID, " ]");
+ mapDomain_t::iterator iter(mMapDomains.begin());
+ iter = mMapDomains.find(domainID);
+ if (iter != mMapDomains.end())
+ {
+ mMapSources.insert(std::make_pair(sourceID, iter->second));
+ }
+}
+
+void CAmLookupData::addSinkLookup(am_sinkID_t sinkID, am_domainID_t domainID)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ domainID : ", domainID, " ]", " [ sinkID : ", sinkID, " ]");
+ mapDomain_t::iterator iter(mMapDomains.begin());
+ iter = mMapDomains.find(domainID);
+ if (iter != mMapDomains.end())
+ {
+ mMapSinks.insert(std::make_pair(sinkID, iter->second));
+ }
+}
+
+void CAmLookupData::addCrossfaderLookup(am_crossfaderID_t crossfaderID, am_sourceID_t soucreID)
+{
+ logInfo(__PRETTY_FUNCTION__, " [ crossfaderID : ", crossfaderID, " ]", " [ soucreID : ", soucreID, " ]");
+ mapSources_t::iterator iter(mMapSources.begin());
+ iter = mMapSources.find(soucreID);
+ if (iter != mMapSources.end())
+ {
+ mMapCrossfaders.insert(std::make_pair(crossfaderID, iter->second));
+ }
+}
+
+void CAmLookupData::removeDomainLookup(am_domainID_t domainID)
+{
+ mapDomain_t::iterator iter(mMapDomains.begin());
+ iter = mMapDomains.find(domainID);
+ if (iter != mMapDomains.end())
+ {
+ CAmLookupData::removeEntriesForValue(iter->second, mMapSources);
+ CAmLookupData::removeEntriesForValue(iter->second, mMapSinks);
+ CAmLookupData::removeEntriesForValue(iter->second, mMapCrossfaders);
+ CAmLookupData::removeEntriesForValue(iter->second, mMapHandles);
+ CAmLookupData::removeEntriesForValue(iter->second, mMapConnections);
+ mMapDomains.erase(domainID);
+ }
+}
+
+void CAmLookupData::removeSourceLookup(am_sourceID_t sourceID)
+{
+ mMapSources.erase(sourceID);
+}
+
+void CAmLookupData::removeSinkLookup(am_sinkID_t sinkID)
+{
+ mMapSinks.erase(sinkID);
+}
+
+void CAmLookupData::removeCrossfaderLookup(am_crossfaderID_t crossfaderID)
+{
+ mMapCrossfaders.erase(crossfaderID);
+}
+
+void CAmLookupData::removeConnectionLookup(am_connectionID_t connectionID)
+{
+ mMapConnections.erase(connectionID);
+}
+
+template <typename TKey> void CAmLookupData::removeEntriesForValue(const RSLookupDataPtr & value, std::map<TKey,RSLookupDataPtr> & map)
+{
+ typename std::map<TKey,RSLookupDataPtr>::iterator it = map.begin();
+ while ( it != map.end() )
+ {
+ if (it->second == value)
+ {
+ typename std::map<TKey,RSLookupDataPtr>::iterator it_tmp = it;
+ it++;
+ map.erase(it_tmp);
+ }
+ else
+ ++it;
+ }
+}
+
+template <typename TKey> const CAmLookupData::RSLookupDataPtr CAmLookupData::getValueForKey(const TKey & key, const std::map<TKey,CAmLookupData::RSLookupDataPtr> & map)
+{
+ mapHandles_t::const_iterator iter = map.find(key);
+ if (iter != map.end() )
+ {
+ return iter->second;
+ }
+ return NULL;
+}
+
+am_Error_e CAmLookupData::asyncAbort(const uint16_t handle, RoutingSenderProxyBase::AsyncAbortAsyncCallback callback)
+{
+ RSLookupDataPtr result = getValueForKey(handle, mMapHandles);
+ if(result)
+ return result->asyncAbort(handle, callback);
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncConnect(const uint16_t handle,
+ const am_connectionID_t connectionID,
+ const am_sourceID_t sourceID,
+ const am_sinkID_t sinkID,
+ const am_ConnectionFormat_e connectionFormat,
+ RoutingSenderProxyBase::AsyncConnectAsyncCallback callback)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sourceID, mMapSources);
+ if(result)
+ {
+ mMapConnections.insert(std::make_pair(connectionID, result));
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncConnect(handle, connectionID, sourceID, sinkID, connectionFormat, callback);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncDisconnect(const uint16_t handle,
+ const am_connectionID_t connectionID,
+ RoutingSenderProxyBase::AsyncDisconnectAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(connectionID, mMapConnections);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncDisconnect(handle, connectionID, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSinkVolume( const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const am_volume_t volume,
+ const am_RampType_e ramp,
+ const am_time_t time,
+ RoutingSenderProxyBase::AsyncSetSinkVolumeAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sinkID, mMapSinks);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSinkVolume(handle, sinkID, volume, ramp, time, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSourceVolume(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_volume_t volume,
+ const am_RampType_e ramp,
+ const am_time_t time,
+ RoutingSenderProxyBase::AsyncSetSourceVolumeAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sourceID, mMapSources);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSourceVolume(handle, sourceID, volume, ramp, time, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSourceState(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_SourceState_e state,
+ RoutingSenderProxyBase::AsyncSetSinkSoundPropertiesAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sourceID, mMapSources);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSourceState(handle, sourceID, state, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSinkSoundProperties( const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const std::vector<am_SoundProperty_s>& listSoundProperties,
+ RoutingSenderProxyBase::AsyncSetSinkSoundPropertiesAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sinkID, mMapSinks);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSinkSoundProperties(handle, sinkID, listSoundProperties, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSinkSoundProperty( const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const am_SoundProperty_s& soundProperty,
+ RoutingSenderProxyBase::AsyncSetSinkSoundPropertyAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sinkID, mMapSinks);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSinkSoundProperty(handle, sinkID, soundProperty, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSourceSoundProperties(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const std::vector<am_SoundProperty_s>& listSoundProperties,
+ RoutingSenderProxyBase::AsyncSetSourceSoundPropertiesAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sourceID, mMapSources);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSourceSoundProperties(handle, sourceID, listSoundProperties, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSourceSoundProperty(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_SoundProperty_s& soundProperty,
+ RoutingSenderProxyBase::AsyncSetSourceSoundPropertyAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sourceID, mMapSources);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSourceSoundProperty(handle, sourceID, soundProperty, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+
+am_Error_e CAmLookupData::asyncCrossFade(const uint16_t handle,
+ const am_crossfaderID_t crossfaderID,
+ const am_HotSink_e hotSink,
+ const am_RampType_e rampType,
+ const am_time_t time,
+ RoutingSenderProxyBase::AsyncCrossFadeAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(crossfaderID, mMapCrossfaders);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncCrossFade(handle, crossfaderID, hotSink, rampType, time, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState, RoutingSenderProxyBase::SetDomainStateAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(domainID, mMapDomains);
+ if(result)
+ return result->setDomainState(domainID, domainState, cb);
+ return (E_UNKNOWN);
+}
+
+
+am_Error_e CAmLookupData::asyncSetVolumes(const uint16_t handle,
+ const std::vector<am_Volumes_s>& volumes ,
+ RoutingSenderProxyBase::AsyncSetVolumesAsyncCallback cb )
+{
+
+ if(volumes.size())
+ {
+ am_Volumes_s volumeItem = volumes.at(0);
+ RSLookupDataPtr result = NULL;
+ if(volumeItem.volumeType == VT_SINK)
+ result = CAmLookupData::getValueForKey(volumeItem.volumeID.sink, mMapSinks);
+ else if(volumeItem.volumeType == VT_SOURCE)
+ result = CAmLookupData::getValueForKey(volumeItem.volumeID.source, mMapSources);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetVolumes(handle, volumes, cb);
+ }
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSinkNotificationConfiguration(const uint16_t handle,
+ const am_sinkID_t sinkID,
+ const am_NotificationConfiguration_s& notificationConfiguration,
+ RoutingSenderProxyBase::AsyncSetSinkNotificationConfigurationAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sinkID, mMapSinks);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSinkNotificationConfiguration(handle, sinkID, notificationConfiguration, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+am_Error_e CAmLookupData::asyncSetSourceNotificationConfiguration(const uint16_t handle,
+ const am_sourceID_t sourceID,
+ const am_NotificationConfiguration_s& notificationConfiguration,
+ RoutingSenderProxyBase::AsyncSetSourceNotificationConfigurationAsyncCallback cb)
+{
+ RSLookupDataPtr result = CAmLookupData::getValueForKey(sourceID, mMapSources);
+ if(result)
+ {
+ mMapHandles.insert(std::make_pair(+handle, result));
+ return result->asyncSetSourceNotificationConfiguration(handle, sourceID, notificationConfiguration, cb);
+ }
+ return (E_UNKNOWN);
+}
+
+} /* namespace am */
diff --git a/PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCAPI.cpp b/PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCAPI.cpp
new file mode 100644
index 0000000..55d2792
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCAPI.cpp
@@ -0,0 +1,266 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#include <cassert>
+#include <map>
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <set>
+#include "shared/CAmDltWrapper.h"
+#include "CAmRoutingSenderCAPI.h"
+
+
+namespace am
+{
+DLT_DECLARE_CONTEXT(ctxCommandCAPI)
+
+extern "C" IAmRoutingSend* PluginRoutingInterfaceCAPIFactory()
+{
+ CAmDltWrapper::instance()->registerContext(ctxCommandCAPI, "DRS", "Common-API Plugin");
+ return (new CAmRoutingSenderCAPI(Am_CAPI));
+}
+
+extern "C" void destroyPluginRoutingInterfaceCAPI(IAmRoutingSend* routingSendInterface)
+{
+ delete routingSendInterface;
+}
+
+const char * CAmRoutingSenderCAPI::ROUTING_INTERFACE_SERVICE = "local:org.genivi.audiomanger.routinginterface:org.genivi.audiomanger";
+
+CAmRoutingSenderCAPI::CAmRoutingSenderCAPI() :
+ mIsServiceStarted(false),
+ mReady(false),
+ mLookupData(),
+ mpCAmCAPIWrapper(NULL), //
+ mpIAmRoutingReceive(NULL),
+ mService()
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "RoutingSender constructed");
+}
+
+CAmRoutingSenderCAPI::CAmRoutingSenderCAPI(CAmCommonAPIWrapper *aWrapper) :
+ mIsServiceStarted(false),
+ mReady(false),
+ mLookupData(),
+ mpCAmCAPIWrapper(aWrapper), //
+ mpIAmRoutingReceive(NULL),
+ mService()
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CommandSenderCAPI constructor called");
+ assert(mpCAmCAPIWrapper!=NULL);
+}
+
+CAmRoutingSenderCAPI::~CAmRoutingSenderCAPI()
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "RoutingSender deallocate");
+ CAmDltWrapper::instance()->unregisterContext(ctxCommandCAPI);
+ tearDownInterface(mpIAmRoutingReceive);
+}
+
+am_Error_e CAmRoutingSenderCAPI::startService(IAmRoutingReceive* pIAmRoutingReceive)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__);
+ if(!mIsServiceStarted)
+ {
+ assert(pIAmRoutingReceive);
+ mService = std::make_shared<CAmRoutingService>(pIAmRoutingReceive, &mLookupData, mpCAmCAPIWrapper);
+ //Registers the service
+ if( false == mpCAmCAPIWrapper->registerStub(mService, CAmRoutingSenderCAPI::ROUTING_INTERFACE_SERVICE) )
+ {
+ return (E_NOT_POSSIBLE);
+ }
+ mIsServiceStarted = true;
+ }
+ return (E_OK);
+}
+
+am_Error_e CAmRoutingSenderCAPI::startupInterface(IAmRoutingReceive* pIAmRoutingReceive)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__);
+ mpIAmRoutingReceive = pIAmRoutingReceive;
+ return startService(mpIAmRoutingReceive);
+}
+
+am_Error_e CAmRoutingSenderCAPI::tearDownInterface(IAmRoutingReceive*)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__);
+ if(mpCAmCAPIWrapper)
+ {
+ if(mIsServiceStarted)
+ {
+ mIsServiceStarted = false;
+ mpCAmCAPIWrapper->unregisterStub(CAmRoutingSenderCAPI::ROUTING_INTERFACE_SERVICE);
+ mService.reset();
+ }
+ return (E_OK);
+ }
+ return (E_NOT_POSSIBLE);
+}
+
+void CAmRoutingSenderCAPI::getInterfaceVersion(std::string & version) const
+{
+ version = RoutingSendVersion;
+}
+
+void CAmRoutingSenderCAPI::setRoutingReady(const uint16_t handle)
+{
+ assert(mpIAmRoutingReceive);
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "sending routingReady signal");
+ mReady = true;
+ mpIAmRoutingReceive->confirmRoutingReady(handle,E_OK);
+ mService->fireSetRoutingReadyEvent();
+ mService->gotReady(mLookupData.numberOfDomains(),handle);
+}
+
+void CAmRoutingSenderCAPI::setRoutingRundown(const uint16_t handle)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__);
+ assert(mpIAmRoutingReceive);
+ mReady = false;
+ mpIAmRoutingReceive->confirmRoutingRundown(handle,E_OK);
+ mService->fireSetRoutingRundownEvent();
+ mService->gotRundown(mLookupData.numberOfDomains(),handle);
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncAbort(const am_Handle_s handle)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncAbort called");
+ return mLookupData.asyncAbort(handle.handle,[&](const CommonAPI::CallStatus& callStatus, const am_gen::am_Error_e& error){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_ConnectionFormat_e connectionFormat)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncConnect called");
+ return mLookupData.asyncConnect(handle.handle,connectionID, sourceID, sinkID, connectionFormat, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncDisconnect called");
+ return mLookupData.asyncDisconnect(handle.handle,connectionID, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSinkVolume(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSinkVolume called");
+ return mLookupData.asyncSetSinkVolume(handle.handle,sinkID, volume, ramp, time, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSourceVolume(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSourceVolume called");
+ return mLookupData.asyncSetSourceVolume(handle.handle,sourceID, volume, ramp, time, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSourceState(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SourceState_e state)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSourceState called");
+ return mLookupData.asyncSetSourceState(handle.handle,sourceID, state,[&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSinkSoundProperties(const am_Handle_s handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSinkSoundProperties called");
+ return mLookupData.asyncSetSinkSoundProperties(handle.handle,sinkID, listSoundProperties, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSinkSoundProperty(const am_Handle_s handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSinkSoundProperty called");
+ return mLookupData.asyncSetSinkSoundProperty(handle.handle, sinkID, soundProperty, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSourceSoundProperties(const am_Handle_s handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSourceSoundProperties called");
+ return mLookupData.asyncSetSourceSoundProperties(handle.handle, sourceID, listSoundProperties, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSourceSoundProperty(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSourceSoundProperty called");
+ return mLookupData.asyncSetSourceSoundProperty(handle.handle, sourceID, soundProperty, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncCrossFade(const am_Handle_s handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_RampType_e rampType, const am_time_t time)
+{
+ return mLookupData.asyncCrossFade(handle.handle, crossfaderID, hotSink, rampType, time, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::setDomainState called");
+ return mLookupData.setDomainState(domainID, domainState, [&](const CommonAPI::CallStatus& callStatus, const am_gen::am_Error_e& error){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::returnBusName(std::string& BusName) const
+{
+ BusName = CAmLookupData::BUS_NAME;
+ return (E_OK);
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& volumes)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetVolumes called");
+ return mLookupData.asyncSetVolumes(handle.handle, volumes, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSinkNotificationConfiguration(const am_Handle_s handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& nc)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSinkNotificationConfiguration called");
+ return mLookupData.asyncSetSinkNotificationConfiguration(handle.handle, sinkID, nc, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+am_Error_e CAmRoutingSenderCAPI::asyncSetSourceNotificationConfiguration(const am_Handle_s handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& nc)
+{
+ log(&ctxCommandCAPI, DLT_LOG_INFO, "CAmRoutingSenderDbus::asyncSetSourceNotificationConfiguration called");
+ return mLookupData.asyncSetSourceNotificationConfiguration(handle.handle, sourceID, nc, [&](const CommonAPI::CallStatus& callStatus){
+ log(&ctxCommandCAPI, DLT_LOG_INFO, __PRETTY_FUNCTION__, "Response with call status:", static_cast<int16_t>(callStatus));
+ });
+}
+
+}
+
diff --git a/PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCommon.cpp b/PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCommon.cpp
new file mode 100644
index 0000000..c9f5876
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src/CAmRoutingSenderCommon.cpp
@@ -0,0 +1,282 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+
+#include "CAmRoutingSenderCommon.h"
+
+/**
+ * Utility functions
+ */
+
+void CAmConvertCAPI2AM(const am_gen::am_Domain_s & source, am::am_Domain_s & destination)
+{
+ destination.domainID = source.domainID;
+ destination.name = source.name;
+ destination.busname = source.busname;
+ destination.nodename = source.nodename;
+ destination.early = source.early;
+ destination.complete = source.complete;
+ destination.state = static_cast<am::am_DomainState_e>(source.state);
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_SoundProperty_s & source, am::am_SoundProperty_s & destination)
+{
+ destination.type = static_cast<am::am_SoundPropertyType_e>(source.type);
+ destination.value = source.value;
+}
+
+void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_SoundProperty_s> & source, std::vector<am::am_SoundProperty_s> & destination)
+{
+ am::am_SoundProperty_s soundProp;
+ destination.clear();
+ for(std::vector<am_gen::am_SoundProperty_s>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ {
+ CAmConvertCAPI2AM(*iter, soundProp);
+ destination.push_back(soundProp);
+ }
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_MainSoundProperty_s & source, am::am_MainSoundProperty_s & destination)
+{
+ destination.type = static_cast<am::am_MainSoundPropertyType_e>(source.type);
+ destination.value = source.value;
+}
+
+
+void CAmConvertCAPI2AM(const am_gen::notificationPayload_s & source, am::am_NotificationPayload_s & destination)
+{
+ destination.type = static_cast<am::am_NotificationType_e>(source.type);
+ destination.value = source.payload;
+}
+
+void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_Volumes_s> & source, std::vector<am::am_Volumes_s> & destination)
+{
+ destination.clear();
+ for(std::vector<am_gen::am_Volumes_s>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ {
+ am::am_Volumes_s volume;
+ CAmConvertCAPI2AM(*iter, volume);
+ destination.push_back(volume);
+ }
+}
+
+void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_MainSoundProperty_s> & source, std::vector<am::am_MainSoundProperty_s> & destination)
+{
+ am::am_MainSoundProperty_s soundProp;
+ destination.clear();
+ for(std::vector<am_gen::am_MainSoundProperty_s>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ {
+ CAmConvertCAPI2AM(*iter, soundProp);
+ destination.push_back(soundProp);
+ }
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_NotificationConfiguration_s & source, am::am_NotificationConfiguration_s & destination)
+{
+ destination.type = static_cast<am::am_NotificationType_e>(source.type);
+ destination.status = static_cast<am::am_NotificationStatus_e>(source.status);
+ destination.parameter = source.parameter;
+}
+
+void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_NotificationConfiguration_s> & source, std::vector<am::am_NotificationConfiguration_s> & destination)
+{
+ am::am_NotificationConfiguration_s soundProp;
+ destination.clear();
+ for(std::vector<am_gen::am_NotificationConfiguration_s>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ {
+ CAmConvertCAPI2AM(*iter, soundProp);
+ destination.push_back(soundProp);
+ }
+}
+
+void CAmConvertCAPIVector2AM(const std::vector<am_gen::am_ConnectionFormat_e> & source, std::vector<am::am_ConnectionFormat_e> & destination)
+{
+ destination.clear();
+ for(std::vector<am_gen::am_ConnectionFormat_e>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ destination.push_back(static_cast<am::am_ConnectionFormat_e>(*iter));
+}
+
+
+
+void CAmConvertCAPI2AM(const am_gen::sourceData_s & source, am::am_Source_s & destination)
+{
+ destination.sourceID = source.sourceID;
+ destination.domainID = source.domainID;
+ destination.name = source.name;
+ destination.sourceClassID = source.sourceClassID;
+ destination.sourceState = static_cast<am::am_SourceState_e>(source.sourceState);
+ destination.volume = source.volume;
+ destination.visible = source.visible;
+ CAmConvertCAPI2AM(source.available, destination.available);
+ destination.interruptState = static_cast<am::am_InterruptState_e>(source.interruptState);
+ CAmConvertCAPIVector2AM(source.listSoundProperties, destination.listSoundProperties);
+ CAmConvertCAPIVector2AM(source.listConnectionFormats, destination.listConnectionFormats);
+ CAmConvertCAPIVector2AM(source.listMainSoundProperties, destination.listMainSoundProperties);
+ CAmConvertCAPIVector2AM(source.listNotificationConfigurations, destination.listNotificationConfigurations);
+ CAmConvertCAPIVector2AM(source.listMainNotificationConfigurations, destination.listMainNotificationConfigurations);
+}
+
+void CAmConvertCAPI2AM(const am_gen::sinkData_s & source, am::am_Sink_s & destination)
+{
+ destination.sinkID = source.sinkID;
+ destination.domainID = source.domainID;
+ destination.name = source.name;
+ destination.sinkClassID = source.sinkClassID;
+ destination.muteState = static_cast<am::am_MuteState_e>(source.muteState);
+ destination.volume = source.volume;
+ destination.visible = source.visible;
+ destination.mainVolume = source.mainVolume;
+ CAmConvertCAPI2AM(source.available, destination.available);
+ CAmConvertCAPIVector2AM(source.listSoundProperties, destination.listSoundProperties);
+ CAmConvertCAPIVector2AM(source.listConnectionFormats, destination.listConnectionFormats);
+ CAmConvertCAPIVector2AM(source.listMainSoundProperties, destination.listMainSoundProperties);
+ CAmConvertCAPIVector2AM(source.listNotificationConfigurations, destination.listNotificationConfigurations);
+ CAmConvertCAPIVector2AM(source.listMainNotificationConfigurations, destination.listMainNotificationConfigurations);
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_Volumes_s & source, am::am_Volumes_s & destination)
+{
+ CAmConvertCAPI2AM(source.volumeID, destination.volumeID);
+ destination.volume = source.volume;
+ destination.time = source.time;
+ destination.volumeType = static_cast<am::am_VolumeType_e>(source.volumeType);
+ destination.ramp = static_cast<am::am_RampType_e>(source.ramp);
+}
+
+
+void CAmConvertCAPI2AM(const am_gen::crossfaderData_s & source, am::am_Crossfader_s & destination)
+{
+ destination.crossfaderID = source.crossfaderID;
+ destination.sinkID_A = source.sinkID_A;
+ destination.sinkID_B = source.sinkID_B;
+ destination.name = source.name;
+ destination.sourceID = source.sourceID;
+ destination.hotSink = static_cast<am::am_HotSink_e>(source.hotSink);
+}
+
+
+void CAmConvertCAPI2AM(const am_gen::am_Gateway_s & source, am::am_Gateway_s & destination)
+{
+ destination.sinkID = source.sinkID;
+ destination.gatewayID = source.gatewayID;
+ destination.name = source.name;
+ destination.sourceID = source.sourceID;
+ destination.domainSinkID = source.domainSinkID;
+ destination.domainSourceID = source.domainSourceID;
+ destination.controlDomainID = source.controlDomainID;
+ CAmConvertCAPIVector2AM(source.listSourceFormats, destination.listSourceFormats);
+ CAmConvertCAPIVector2AM(source.listSinkFormats, destination.listSinkFormats);
+ destination.convertionMatrix = source.convertionMatrix;
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_EarlyData_u & source, am::am_EarlyData_u & destination)
+{
+ if(source.isType<am_gen::am_volume_t>())
+ {
+ am_volume_t value = static_cast<am_volume_t>(source.get<am_gen::am_volume_t>());
+ destination.volume = value;
+ }
+ else if(source.isType<am_gen::am_SoundProperty_s>())
+ {
+ am_gen::am_SoundProperty_s value = source.get<am_gen::am_SoundProperty_s>();
+ am_SoundProperty_s converted;
+ CAmConvertCAPI2AM(value, converted);
+ destination.soundProperty = converted;
+ }
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_DataType_u & source, am::am_DataType_u & destination)
+{
+ if(source.isType<am_gen::am_sinkID_t>())
+ {
+ am_sinkID_t value = static_cast<am_sinkID_t>(source.get<am_gen::am_sinkID_t>());
+ destination.sink = value;
+ }
+ else if(source.isType<am_gen::am_sourceID_t>())
+ {
+ am_sourceID_t value = static_cast<am_sourceID_t>(source.get<am_gen::am_sourceID_t>());
+ destination.source = value;
+ }
+}
+
+void CAmConvertCAPI2AM(const am_gen::am_EarlyData_s & source, am::am_EarlyData_s & destination)
+{
+ CAmConvertCAPI2AM(source.data, destination.data);
+ CAmConvertCAPI2AM(source.sinksource, destination.sinksource);
+ destination.type = static_cast<am_EarlyDataType_e>(source.type);
+}
+
+
+void CAmConvertCAPI2AM(const am_gen::am_Availability_s & source, am_Availability_s & destination)
+{
+ destination.availability = static_cast<am_Availability_e>(source.availability);
+ destination.availabilityReason = static_cast<am_AvailabilityReason_e>(source.availabilityReason);
+}
+
+void CAmConvertAM2CAPI(const am_Availability_s & source, am_gen::am_Availability_s & destination)
+{
+ destination.availability = static_cast<am_gen::am_Availability_e>(source.availability);
+ destination.availabilityReason = static_cast<am_gen::am_AvailabilityReason_e>(source.availabilityReason);
+}
+
+void CAmConvertAM2CAPI(const am::am_SoundProperty_s & source, am_gen::am_SoundProperty_s & destination)
+{
+ destination.type = static_cast<am_gen::am_SoundPropertyType_e>(source.type);
+ destination.value = source.value;
+}
+
+void CAmConvertAM2CAPI(const am::am_NotificationConfiguration_s & source, am_gen::am_NotificationConfiguration_s & destination)
+{
+ destination.type = static_cast<am_gen::am_NotificationType_e>(source.type);
+ destination.status = static_cast<am_gen::am_NotificationStatus_e>(source.status);
+ destination.parameter = source.parameter;
+}
+
+void CAmConvertAM2CAPI(const am::am_Volumes_s & source, am_gen::am_Volumes_s & destination)
+{
+ if(source.volumeType == VT_SINK)
+ destination.volumeID = am_gen::am_DataType_u(static_cast<am_gen::am_sinkID_t>(source.volumeID.sink));
+ else if(source.volumeType == VT_SOURCE)
+ destination.volumeID = am_gen::am_DataType_u(static_cast<am_gen::am_sourceID_t>(source.volumeID.source));
+ destination.volumeType = static_cast<am_gen::am_VolumeType_e>(source.volumeType);
+ destination.volume = static_cast<am_gen::am_volume_t>(source.volume);
+ destination.ramp = static_cast<am_gen::am_RampType_e>(source.ramp);
+ destination.time = static_cast<am_gen::am_time_t>(source.time);
+}
+
+
+void CAmConvertAMVector2CAPI(const std::vector<am::am_Volumes_s> & source, std::vector<am_gen::am_Volumes_s> & destination)
+{
+ destination.clear();
+ for(std::vector<am::am_Volumes_s>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ {
+ am_gen::am_Volumes_s volume;
+ CAmConvertAM2CAPI(*iter, volume);
+ destination.push_back(volume);
+ }
+}
+
+void CAmConvertAMVector2CAPI(const std::vector<am::am_SoundProperty_s> & source, std::vector<am_gen::am_SoundProperty_s> & destination)
+{
+ am_gen::am_SoundProperty_s soundProp;
+ destination.clear();
+ for(std::vector<am::am_SoundProperty_s>::const_iterator iter = source.begin(); iter!=source.end(); iter++)
+ {
+ CAmConvertAM2CAPI(*iter, soundProp);
+ destination.push_back(soundProp);
+ }
+}
diff --git a/PluginRoutingInterfaceCAPI/src/CAmRoutingService.cpp b/PluginRoutingInterfaceCAPI/src/CAmRoutingService.cpp
new file mode 100644
index 0000000..c50cfed
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/src/CAmRoutingService.cpp
@@ -0,0 +1,435 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+#include <memory>
+#include <assert.h>
+#include <algorithm>
+#include "CAmRoutingSenderCommon.h"
+#include "shared/CAmCommonAPIWrapper.h"
+#include "CAmRoutingService.h"
+
+
+namespace am {
+
+CAmRoutingService::CAmRoutingService():mpCAmCAPIWrapper(NULL), mpIAmRoutingReceive(NULL), mpLookpData(NULL), mNumberDomains(0), mHandle(0), mReady(false) {
+ // TODO Auto-generated constructor stub
+
+}
+
+CAmRoutingService::CAmRoutingService(IAmRoutingReceive *aReceiver, CAmLookupData* aLookpData, CAmCommonAPIWrapper *aCAPIWrapper):
+ mpCAmCAPIWrapper(aCAPIWrapper), mpIAmRoutingReceive(aReceiver), mpLookpData(aLookpData), mNumberDomains(0), mHandle(0), mReady(false) {
+ // TODO Auto-generated constructor stub
+
+}
+
+CAmRoutingService::~CAmRoutingService() {
+ // TODO Auto-generated destructor stub
+}
+
+void CAmRoutingService::ackConnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_CONNECT;
+ mpIAmRoutingReceive->ackConnect(handle_s, static_cast<am_connectionID_t>(connectionID), static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackDisconnect(uint16_t handle, am_gen::am_connectionID_t connectionID, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_DISCONNECT;
+ mpIAmRoutingReceive->ackDisconnect(handle_s, static_cast<am_connectionID_t>(connectionID), static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+ //todo: Check whether the connection should be removed here!
+ mpLookpData->removeConnectionLookup(connectionID);
+}
+
+void CAmRoutingService::ackSetSinkVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSINKVOLUME;
+ mpIAmRoutingReceive->ackSetSinkVolumeChange(handle_s, volume, static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSetSourceVolume(uint16_t handle, am_gen::am_volume_t volume, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSOURCEVOLUME;
+ mpIAmRoutingReceive->ackSetSourceVolumeChange(handle_s, volume, static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSetSourceState(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSOURCESTATE;
+ mpIAmRoutingReceive->ackSetSourceState(handle_s,static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSetSinkSoundProperties(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSINKSOUNDPROPERTIES;
+ mpIAmRoutingReceive->ackSetSinkSoundProperties(handle_s, static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSetSinkSoundProperty(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSINKSOUNDPROPERTY;
+ mpIAmRoutingReceive->ackSetSinkSoundProperty(handle_s, static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSetSourceSoundProperties(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSOURCESOUNDPROPERTIES;
+ mpIAmRoutingReceive->ackSetSourceSoundProperties(handle_s, static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSetSourceSoundProperty(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSOURCESOUNDPROPERTY;
+ mpIAmRoutingReceive->ackSetSourceSoundProperty(handle_s, static_cast<am_Error_e>(error));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackCrossFading(uint16_t handle, am_gen::am_HotSink_e hotSink, am_gen::am_Error_e returnError) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_CROSSFADE;
+ mpIAmRoutingReceive->ackCrossFading(handle_s, static_cast<am_HotSink_e>(hotSink), static_cast<am_Error_e>(returnError));
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSourceVolumeTick(uint16_t handle, am_gen::am_sourceID_t source, am_gen::am_volume_t volume) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSOURCEVOLUME;
+ mpIAmRoutingReceive->ackSourceVolumeTick(handle_s, source, volume);
+}
+
+void CAmRoutingService::ackSinkVolumeTick(uint16_t handle, am_gen::am_sinkID_t sink, am_gen::am_volume_t volume) {
+ assert(mpIAmRoutingReceive);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETSINKVOLUME;
+ mpIAmRoutingReceive->ackSinkVolumeTick(handle_s, sink, volume);
+}
+
+void CAmRoutingService::peekDomain(std::string name, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->peekDomain(name, domainID));
+}
+
+void CAmRoutingService::registerDomain(am_gen::am_Domain_s domainData, std::string returnBusname, std::string, std::string returnInterface, am_gen::am_domainID_t& domainID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ assert(mpCAmCAPIWrapper);
+ am_Domain_s converted;
+ CAmConvertCAPI2AM(domainData, converted);
+ converted.busname = CAmLookupData::BUS_NAME;
+ am_Error_e resultCode = mpIAmRoutingReceive->registerDomain(converted, domainID);
+ error = static_cast<am_gen::am_Error_e>(resultCode);
+ if(E_OK==resultCode)
+ {
+ std::shared_ptr<CommonAPI::Factory> factory = mpCAmCAPIWrapper->factory();
+ std::shared_ptr<RoutingSenderProxy<>> shpSenderProxy = factory->buildProxy<RoutingSenderProxy>(returnBusname, returnInterface , "local");
+ mpLookpData->addDomainLookup(domainID, shpSenderProxy);
+ }
+}
+
+void CAmRoutingService::deregisterDomain(am_gen::am_domainID_t domainID, am_gen::am_Error_e& returnError) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ returnError = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->deregisterDomain(domainID));
+ if(am_gen::am_Error_e::E_OK==returnError)
+ mpLookpData->removeDomainLookup(domainID);
+}
+
+void CAmRoutingService::registerGateway(am_gen::am_Gateway_s gatewayData, am_gen::am_gatewayID_t& gatewayID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ am_Gateway_s converted;
+ CAmConvertCAPI2AM(gatewayData, converted);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->registerGateway(converted, gatewayID));
+}
+
+void CAmRoutingService::deregisterGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_Error_e& returnError) {
+ returnError = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->deregisterGateway(gatewayID));
+}
+
+void CAmRoutingService::peekSink(std::string name, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->peekSink(name, sinkID));
+}
+
+void CAmRoutingService::registerSink(am_gen::sinkData_s sinkData, am_gen::am_sinkID_t& sinkID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Sink_s converted;
+ CAmConvertCAPI2AM(sinkData, converted);
+ am_Error_e result = mpIAmRoutingReceive->registerSink(converted, sinkID);
+ error = static_cast<am_gen::am_Error_e>(result);
+ if(E_OK==result)
+ mpLookpData->addSinkLookup(sinkID, converted.domainID);
+}
+
+void CAmRoutingService::deregisterSink(am_gen::am_sinkID_t sinkID, am_gen::am_Error_e& returnError) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ returnError = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->deregisterSink(sinkID));
+ if(returnError==am_gen::am_Error_e::E_OK)
+ mpLookpData->removeSinkLookup(sinkID);
+}
+
+void CAmRoutingService::peekSource(std::string name, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->peekSource(name, sourceID));
+}
+
+void CAmRoutingService::registerSource(am_gen::sourceData_s sourceData, am_gen::am_sourceID_t& sourceID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Source_s converted;
+ CAmConvertCAPI2AM(sourceData, converted);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->registerSource(converted, sourceID));
+ if(error==am_gen::am_Error_e::E_OK)
+ mpLookpData->addSourceLookup(sourceID, sourceData.domainID);
+}
+
+void CAmRoutingService::deregisterSource(am_gen::am_sourceID_t sourceID, am_gen::am_Error_e& returnError) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ returnError = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->deregisterSource(sourceID));
+ if(returnError==am_gen::am_Error_e::E_OK)
+ mpLookpData->removeSourceLookup(sourceID);
+}
+
+void CAmRoutingService::registerCrossfader(am_gen::crossfaderData_s crossfaderData, am_gen::am_crossfaderID_t& crossfaderID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ am_Crossfader_s converted;
+ CAmConvertCAPI2AM(crossfaderData, converted);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->registerCrossfader(converted, crossfaderID));
+ if(error==am_gen::am_Error_e::E_OK)
+ mpLookpData->addCrossfaderLookup(crossfaderID, crossfaderData.sourceID);
+}
+
+void CAmRoutingService::deregisterCrossfader(am_gen::am_crossfaderID_t crossfaderID, am_gen::am_Error_e& returnError) {
+ assert(mpIAmRoutingReceive);
+ returnError = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->deregisterCrossfader(crossfaderID));
+ if(returnError==am_gen::am_Error_e::E_OK)
+ mpLookpData->removeCrossfaderLookup(crossfaderID);
+}
+
+void CAmRoutingService::peekSourceClassID(std::string name, am_gen::am_sourceClass_t& sourceClassID, am_gen::am_Error_e& error) {
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->peekSourceClassID(name, sourceClassID));
+}
+
+void CAmRoutingService::peekSinkClassID(std::string name, am_gen::am_sinkClass_t& sinkClassID, am_gen::am_Error_e& error) {
+ assert(mpIAmRoutingReceive);
+ error = static_cast<am_gen::am_Error_e>(mpIAmRoutingReceive->peekSinkClassID(name, sinkClassID));
+}
+
+void CAmRoutingService::hookInterruptStatusChange(am_gen::am_sourceID_t sourceID, uint16_t interruptState) {
+ assert(mpIAmRoutingReceive);
+ mpIAmRoutingReceive->hookInterruptStatusChange(sourceID, static_cast<am_InterruptState_e>(interruptState));
+}
+
+void CAmRoutingService::hookDomainRegistrationComplete(am_gen::am_domainID_t domainID) {
+ assert(mpIAmRoutingReceive != NULL);
+ mpIAmRoutingReceive->hookDomainRegistrationComplete(domainID);
+}
+
+void CAmRoutingService::hookSinkAvailablityStatusChange(am_gen::am_sinkID_t sinkID, am_gen::am_Availability_s availability) {
+ assert(mpIAmRoutingReceive);
+ am_Availability_s am_avialabilty;
+ CAmConvertCAPI2AM(availability, am_avialabilty);
+ mpIAmRoutingReceive->hookSinkAvailablityStatusChange(sinkID, am_avialabilty);
+}
+
+void CAmRoutingService::hookSourceAvailablityStatusChange(am_gen::am_sourceID_t sourceID, am_gen::am_Availability_s availability) {
+ assert(mpIAmRoutingReceive);
+ am_Availability_s am_availabilty;
+ CAmConvertCAPI2AM(availability, am_availabilty);
+ mpIAmRoutingReceive->hookSourceAvailablityStatusChange(sourceID, am_availabilty);
+}
+
+void CAmRoutingService::hookDomainStateChange(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState) {
+ assert(mpIAmRoutingReceive);
+ am_DomainState_e am_domainState = static_cast<am_DomainState_e>(domainState);
+ mpIAmRoutingReceive->hookDomainStateChange(domainID, am_domainState);
+}
+
+void CAmRoutingService::hookTimingInformationChanged(am_gen::am_connectionID_t connectionID, int16_t delay) {
+ assert(mpIAmRoutingReceive);
+ mpIAmRoutingReceive->hookTimingInformationChanged(connectionID, delay);
+}
+
+void CAmRoutingService::sendChangedData(am_gen::am_EarlyData_l earlyData_volumes, am_gen::am_EarlyData_l earlyData_soundproperties) {
+
+ assert(mpIAmRoutingReceive);
+ std::vector<am_EarlyData_s> earlyData;
+ auto func = [&](const am_gen::am_EarlyData_s &refObject)
+ {
+ am_EarlyData_s object;
+ CAmConvertCAPI2AM(refObject, object);
+ earlyData.push_back(object);
+ };
+ std::for_each(earlyData_volumes.begin(), earlyData_volumes.end(), func);
+ std::for_each(earlyData_soundproperties.begin(), earlyData_soundproperties.end(), func);
+ mpIAmRoutingReceive->sendChangedData(earlyData);
+}
+
+void CAmRoutingService::gotReady(int16_t numberDomains, uint16_t handle)
+{
+ mReady=true;
+ mNumberDomains=numberDomains;
+ mHandle=handle;
+}
+
+void CAmRoutingService::gotRundown(int16_t numberDomains, uint16_t handle)
+{
+ mReady=false;
+ mNumberDomains=numberDomains;
+ mHandle=handle;
+}
+
+void CAmRoutingService::confirmRoutingReady(am_gen::am_domainID_t) {
+ mpIAmRoutingReceive->confirmRoutingReady(mHandle, E_OK);
+ mNumberDomains++;
+}
+
+void CAmRoutingService::confirmRoutingRundown(am_gen::am_domainID_t) {
+ assert(mpIAmRoutingReceive);
+ mpIAmRoutingReceive->confirmRoutingRundown(mHandle, E_OK);
+ mNumberDomains--;
+}
+
+void CAmRoutingService::updateGateway(am_gen::am_gatewayID_t gatewayID, am_gen::am_ConnectionFormat_L listSourceFormats, am_gen::am_ConnectionFormat_L listSinkFormats, am_gen::bool_L convertionMatrix) {
+
+ assert(mpIAmRoutingReceive);
+ std::vector<am_ConnectionFormat_e> destinationSourceConnectionFormats;
+ CAmConvertCAPIVector2AM(listSourceFormats, destinationSourceConnectionFormats);
+
+ std::vector<am_ConnectionFormat_e> destinationSinkConnectionFormats;
+ CAmConvertCAPIVector2AM(listSinkFormats, destinationSinkConnectionFormats);
+
+ mpIAmRoutingReceive->updateGateway(gatewayID, destinationSourceConnectionFormats, destinationSinkConnectionFormats, convertionMatrix);
+}
+
+void CAmRoutingService::updateSink(am_gen::am_sinkID_t sinkID, am_gen::am_sinkClass_t sinkClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties) {
+ assert(mpIAmRoutingReceive);
+ std::vector<am_SoundProperty_s> dstListSoundProperties;
+ CAmConvertCAPIVector2AM(listSoundProperties, dstListSoundProperties);
+ std::vector<am_ConnectionFormat_e> dstListSinkConnectionFormats;
+ CAmConvertCAPIVector2AM(listConnectionFormats, dstListSinkConnectionFormats);
+ std::vector<am_MainSoundProperty_s> dstListMainSoundProperties;
+ CAmConvertCAPIVector2AM(listMainSoundProperties, dstListMainSoundProperties);
+ mpIAmRoutingReceive->updateSink( sinkID, sinkClassID, dstListSoundProperties,dstListSinkConnectionFormats,dstListMainSoundProperties);
+}
+
+void CAmRoutingService::updateSource(am_gen::am_sourceID_t sourceID, am_gen::am_sourceClass_t sourceClassID, am_gen::am_SoundProperty_L listSoundProperties, am_gen::am_ConnectionFormat_L listConnectionFormats, am_gen::am_MainSoundProperty_L listMainSoundProperties) {
+ assert(mpIAmRoutingReceive);
+ std::vector<am_SoundProperty_s> dstListSoundProperties;
+ CAmConvertCAPIVector2AM(listSoundProperties, dstListSoundProperties);
+ std::vector<am_ConnectionFormat_e> dstListSinkConnectionFormats;
+ CAmConvertCAPIVector2AM(listConnectionFormats, dstListSinkConnectionFormats);
+ std::vector<am_MainSoundProperty_s> dstListMainSoundProperties;
+ CAmConvertCAPIVector2AM(listMainSoundProperties, dstListMainSoundProperties);
+ mpIAmRoutingReceive->updateSource( sourceID, sourceClassID, dstListSoundProperties,dstListSinkConnectionFormats,dstListMainSoundProperties);
+}
+
+void CAmRoutingService::ackSetVolumes(uint16_t handle, am_gen::am_Volumes_l listVolumes, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ am_Handle_s handle_s;
+ handle_s.handle = handle;
+ handle_s.handleType = H_SETVOLUMES;
+ std::vector<am_Volumes_s> list;
+ CAmConvertCAPIVector2AM(listVolumes, list);
+ am_Error_e amError = static_cast<am_Error_e>(error);
+ mpIAmRoutingReceive->ackSetVolumes(handle_s, list, amError);
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSinkNotificationConfiguration(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s myhandle;
+ myhandle.handleType = H_CONNECT;
+ myhandle.handle = handle;
+ am_Error_e amError = static_cast<am_Error_e>(error);
+ mpIAmRoutingReceive->ackSinkNotificationConfiguration(myhandle, amError);
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::ackSourceNotificationConfiguration(uint16_t handle, uint16_t error) {
+ assert(mpIAmRoutingReceive);
+ assert(mpLookpData);
+ am_Handle_s myhandle;
+ myhandle.handleType = H_CONNECT;
+ myhandle.handle = handle;
+ am_Error_e amError = static_cast<am_Error_e>(error);
+ mpIAmRoutingReceive->ackSourceNotificationConfiguration(myhandle, amError);
+ mpLookpData->removeHandle(handle);
+}
+
+void CAmRoutingService::hookSinkNotificationDataChange(am_gen::am_sinkID_t sinkID, am_gen::notificationPayload_s payload) {
+ assert(mpIAmRoutingReceive);
+ am_NotificationPayload_s converted;
+ CAmConvertCAPI2AM(payload, converted);
+ mpIAmRoutingReceive->hookSinkNotificationDataChange(sinkID, converted);
+}
+
+void CAmRoutingService::hookSourceNotificationDataChange(am_gen::am_sourceID_t sourceID, am_gen::notificationPayload_s payload) {
+ assert(mpIAmRoutingReceive);
+ am_NotificationPayload_s converted;
+ CAmConvertCAPI2AM(payload, converted);
+ mpIAmRoutingReceive->hookSourceNotificationDataChange(sourceID, converted);
+}
+
+void CAmRoutingService::getRoutingReadyState(bool& readyState) {
+ readyState = mReady;
+}
+
+} /* namespace am */
diff --git a/PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.cpp b/PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.cpp
new file mode 100644
index 0000000..5f1069e
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.cpp
@@ -0,0 +1,2269 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <set>
+#include <sys/time.h>
+#include <CommonAPI/CommonAPI.h>
+#include <org/genivi/audiomanager/am_gen.h>
+#include "CAmRoutingInterfaceCAPITests.h"
+#include "TAmPluginTemplate.h"
+#include "shared/CAmDltWrapper.h"
+#include "../include/CAmRoutingSenderCAPI.h"
+#include "../include/CAmRoutingSenderCommon.h"
+#include "CAmRoutingSenderService.h"
+#include "IAmRoutingSenderBackdoor.h"
+
+using namespace am;
+using namespace org::genivi::audiomanager;
+using namespace CommonAPI;
+using namespace testing;
+
+static CAmTestsEnvironment* env;
+
+/**
+ * Main thread synchronization
+ */
+pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * Common-API connection thread synchronization
+ */
+pthread_cond_t condPxy = PTHREAD_COND_INITIALIZER;
+pthread_mutex_t mutexPxy = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * Proxy initialization thread synchronization
+ */
+pthread_cond_t condSer = PTHREAD_COND_INITIALIZER;
+pthread_mutex_t mutexSer = PTHREAD_MUTEX_INITIALIZER;
+
+
+#define TEST_ID_1 102
+#define TEST_ID_2 103
+
+/**
+ * Initialize common-api and am sinks
+ */
+void initSink(am_gen::sinkData_s & newSink, am_Sink_s & newAmSink, const am_gen::am_domainID_t & domainID, const am_gen::am_sinkID_t & sinkID = 0)
+{
+ am_gen::am_MuteState_e muteState = am_gen::am_MuteState_e::MS_UNKNOWN;
+ am_gen::am_Availability_s available(am_gen::am_Availability_e::A_MAX, am_gen::am_AvailabilityReason_e::AR_MAX);
+ am_gen::am_SoundProperty_L listSoundProperties;
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_INTERR_OVERLAYID, 100));
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_EXAMPLE_BASS, 101));
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_MAX, 102));
+ am_gen::am_ConnectionFormat_L listConnectionFormats;
+ listConnectionFormats.push_back(am_gen::am_ConnectionFormat_e::CF_MAX);
+ am_gen::am_MainSoundProperty_L listMainSoundProperties;
+ listMainSoundProperties.push_back(am_gen::am_MainSoundProperty_s(am_gen::am_MainSoundPropertyType_e::MSP_MAX, 100));
+ am_gen::am_NotificationConfiguration_L listMainNotificationConfigurations;
+ listMainNotificationConfigurations.push_back(am_gen::am_NotificationConfiguration_s(am_gen::am_NotificationType_e::NT_MAX, am_gen::am_NotificationStatus_e::NS_MAX, 100));
+ am_gen::am_NotificationConfiguration_L listNotificationConfigurations;
+ listNotificationConfigurations.push_back(am_gen::am_NotificationConfiguration_s(am_gen::am_NotificationType_e::NT_MAX, am_gen::am_NotificationStatus_e::NS_MAX, 100));
+
+ am_gen::sinkData_s sink(sinkID, "name", domainID, 104, 50, true, available, muteState, 50,
+ listSoundProperties, listConnectionFormats, listMainSoundProperties, listMainNotificationConfigurations, listNotificationConfigurations);
+ newSink = sink;
+ CAmConvertCAPI2AM(sink, newAmSink);
+}
+
+/**
+ * Initialize common-api and am sources
+ */
+void initSource(am_gen::sourceData_s & newSource, am_Source_s & newAmSource, const am_gen::am_domainID_t & domainID, const am_gen::am_sourceID_t & sourceID = 0)
+{
+ am_gen::am_SourceState_e srcState = am_gen::am_SourceState_e::SS_MAX;
+ am_gen::am_Availability_s available(am_gen::am_Availability_e::A_MAX, am_gen::am_AvailabilityReason_e::AR_MAX);
+ am_gen::am_SoundProperty_L listSoundProperties;
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_INTERR_OVERLAYID, 100));
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_EXAMPLE_BASS, 101));
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_MAX, 102));
+ am_gen::am_ConnectionFormat_L listConnectionFormats;
+ listConnectionFormats.push_back(am_gen::am_ConnectionFormat_e::CF_MAX);
+ am_gen::am_MainSoundProperty_L listMainSoundProperties;
+ listMainSoundProperties.push_back(am_gen::am_MainSoundProperty_s(am_gen::am_MainSoundPropertyType_e::MSP_MAX, 100));
+ am_gen::am_NotificationConfiguration_L listMainNotificationConfigurations;
+ listMainNotificationConfigurations.push_back(am_gen::am_NotificationConfiguration_s(am_gen::am_NotificationType_e::NT_MAX, am_gen::am_NotificationStatus_e::NS_MAX, 100));
+ am_gen::am_NotificationConfiguration_L listNotificationConfigurations;
+ listNotificationConfigurations.push_back(am_gen::am_NotificationConfiguration_s(am_gen::am_NotificationType_e::NT_MAX, am_gen::am_NotificationStatus_e::NS_MAX, 100));
+
+ am_gen::sourceData_s source(sourceID, domainID, "name", 104, srcState, 50, true, available, am_gen::am_InterruptState_e::IS_MAX,
+ listSoundProperties, listConnectionFormats, listMainSoundProperties, listMainNotificationConfigurations, listNotificationConfigurations);
+ newSource = source;
+ CAmConvertCAPI2AM(source, newAmSource);
+}
+
+/**
+ * Initialize common-api and am crossfaders
+ */
+void initCrossfader(am_gen::crossfaderData_s & newCrossfader, am_Crossfader_s & newAmCrossfader, const am_gen::am_crossfaderID_t & crossfaderID = 0)
+{
+ am_gen::crossfaderData_s crossfader(crossfaderID, "name", TEST_ID_1, TEST_ID_2, TEST_ID_1, am_gen::am_HotSink_e::HS_MAX);
+ CAmConvertCAPI2AM(crossfader, newAmCrossfader);
+ newCrossfader = crossfader;
+}
+
+/**
+ * Client thread where the proxy and the routing test domain service run
+ */
+void* run_client(void*)
+{
+ CAmSocketHandler socketHandler;
+ CAmTestCAPIWrapper wrapper(&socketHandler);
+ env->mSocketHandlerClient = &socketHandler;
+ std::shared_ptr<CommonAPI::Factory> factory = wrapper.factory();
+
+ env->mProxy = factory->buildProxy<RoutingInterfaceProxy>(CAmRoutingSenderCAPI::ROUTING_INTERFACE_SERVICE);
+ env->mProxy->getProxyStatusEvent().subscribe(std::bind(&CAmTestsEnvironment::onServiceStatusEvent,env,std::placeholders::_1));
+
+ env->mDomainService = std::make_shared<CAmRoutingSenderService>(&wrapper, env->mProxy);
+
+ if( false == wrapper.registerStub(env->mDomainService, CAmRoutingSenderService::ROUTING_SENDER_SERVICE) )
+ {
+ printf("\n Can't register service -> %s \n", CAmRoutingSenderService::ROUTING_SENDER_SERVICE);
+ logInfo("Can't register service -> ", CAmRoutingSenderService::ROUTING_SENDER_SERVICE);
+ }
+
+ pthread_mutex_lock(&mutexSer);
+ env->mIsProxyInitilized = true;
+ pthread_mutex_unlock(&mutexSer);
+ pthread_cond_signal(&condSer);
+
+ socketHandler.start_listenting();
+
+//Cleanup
+ env->mProxy.reset();
+ env->mSocketHandlerClient = NULL;
+
+ return (NULL);
+}
+
+/**
+ * Service thread for the routing plugin
+ */
+void* run_service(void*)
+{
+ CAmSocketHandler socketHandler;
+ CAmTestCAPIWrapper wrapper(&socketHandler);
+ CAmRoutingSenderCAPI plugin(&wrapper);
+ env->mpPlugin = &plugin;
+ env->mSocketHandlerService = &socketHandler;
+ MockIAmRoutingReceive mock;
+ env->mpRoutingReceive = &mock;
+ if(plugin.startupInterface(env->mpRoutingReceive)!=E_OK)
+ {
+ logError("CommandSendInterface can't start!");
+ }
+ else
+ {
+ plugin.setRoutingReady(10);
+ socketHandler.start_listenting();
+ plugin.setRoutingRundown(10);
+ plugin.tearDownInterface(env->mpRoutingReceive);
+ }
+ //Cleanup
+ env->mpRoutingReceive = NULL;
+ env->mpPlugin = NULL;
+ env->mSocketHandlerClient = NULL;
+
+ return (NULL);
+}
+
+/**
+ * Helper thread that listens for signals from another threads in order to synchronize them.
+ * This thread starts actually the unit tests.
+ */
+void* run_listener(void*)
+{
+ pthread_mutex_lock(&mutexSer);
+ while (env->mIsProxyInitilized==false)
+ {
+ std::cout << "\n\r Intialize proxy..\n\r" ;
+ pthread_cond_wait(&condSer, &mutexSer);
+ }
+ pthread_mutex_unlock(&mutexSer);
+
+ time_t start = time(0);
+ time_t now = start;
+ pthread_mutex_lock(&mutexPxy);
+ while ( env->mIsServiceAvailable==false && now-start <= 15 )
+ {
+ std::cout << " Waiting for proxy..\n\r" ;
+ struct timespec ts = { 0, 0 };
+ clock_gettime(CLOCK_REALTIME, &ts);
+ ts.tv_sec += 5;
+ pthread_cond_timedwait(&condPxy, &mutexPxy, &ts);
+ now = time(0);
+ }
+ pthread_mutex_unlock(&mutexPxy);
+
+ pthread_cond_signal(&cond);
+
+ return NULL;
+}
+
+
+CAmRoutingInterfaceCAPITests::CAmRoutingInterfaceCAPITests()
+{
+
+}
+
+CAmRoutingInterfaceCAPITests::~CAmRoutingInterfaceCAPITests()
+{
+
+}
+
+void CAmRoutingInterfaceCAPITests::SetUp()
+{
+ ::testing::GTEST_FLAG(throw_on_failure) = false;
+}
+
+void CAmRoutingInterfaceCAPITests::TearDown()
+{
+ ::testing::GTEST_FLAG(throw_on_failure) = true;
+}
+
+
+CAmRoutingSenderCAPITests::CAmRoutingSenderCAPITests()
+{
+
+}
+
+CAmRoutingSenderCAPITests::~CAmRoutingSenderCAPITests()
+{
+
+}
+
+void CAmRoutingSenderCAPITests::SetUp()
+{
+ ::testing::GTEST_FLAG(throw_on_failure) = false;
+}
+
+void CAmRoutingSenderCAPITests::TearDown()
+{
+ ::testing::GTEST_FLAG(throw_on_failure) = true;
+}
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ ::testing::AddGlobalTestEnvironment(new CAmTestsEnvironment);
+ return RUN_ALL_TESTS();
+}
+
+CAmTestsEnvironment::CAmTestsEnvironment() :
+ mIsProxyInitilized(false),
+ mIsServiceAvailable(false),
+ mIsDomainAvailable(false),
+ mListenerThread(0),
+ mServicePThread(0),
+ mClientPThread(0),
+ mSocketHandlerService(NULL),
+ mSocketHandlerClient(NULL),
+ mpRoutingReceive(NULL),
+ mpPlugin(NULL),
+ mProxy(NULL),
+ mDomainService(NULL)
+{
+ env=this;
+ CAmDltWrapper::instance()->registerApp("capiTest", "capiTest");
+ pthread_create(&mListenerThread, NULL, run_listener, NULL);
+ pthread_create(&mServicePThread, NULL, run_service, NULL);
+ pthread_create(&mClientPThread, NULL, run_client, NULL);
+}
+
+CAmTestsEnvironment::~CAmTestsEnvironment()
+{
+
+}
+
+void CAmTestsEnvironment::SetUp()
+{
+ pthread_cond_wait(&cond, &mutex);
+}
+
+void CAmTestsEnvironment::TearDown()
+{
+ if(mSocketHandlerClient)
+ mSocketHandlerClient->exit_mainloop();
+ pthread_join(mClientPThread, NULL);
+
+ if(mSocketHandlerService)
+ mSocketHandlerService->exit_mainloop();
+ pthread_join(mServicePThread, NULL);
+ sleep(1);
+}
+
+void CAmTestsEnvironment::onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus)
+{
+ std::stringstream avail;
+ avail << "(" << static_cast<int>(serviceStatus) << ")";
+
+ logInfo("Service Status changed to ", avail.str());
+ std::cout << std::endl << "Service Status changed to " << avail.str() << std::endl;
+ pthread_mutex_lock(&mutexPxy);
+ mIsServiceAvailable = (serviceStatus==CommonAPI::AvailabilityStatus::AVAILABLE);
+ pthread_mutex_unlock(&mutexPxy);
+ pthread_cond_signal(&condPxy);
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ClientStartupTest)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsHandleEqual, value, "") {
+ am_Handle_s & lh = arg;
+ return lh.handle == value.handle && lh.handleType == value.handleType;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackConnect)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_connectionID_t connectionID = TEST_ID_1;
+ am_Error_e error = E_OK;
+ am_Handle_s handle = {H_CONNECT, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackConnect(IsHandleEqual(handle), connectionID, error)).Times(1);
+ env->mProxy->ackConnect(20, connectionID, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackDisconnect)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_connectionID_t connectionID = TEST_ID_1;
+ am_Error_e error = E_OK;
+ am_Handle_s handle = {H_DISCONNECT, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackDisconnect(IsHandleEqual(handle), connectionID, error)).Times(1);
+ env->mProxy->ackDisconnect(20, connectionID, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSinkVolumeChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSINKVOLUME, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSinkVolumeChange(IsHandleEqual(handle), volume, error)).Times(1);
+ env->mProxy->ackSetSinkVolume(20, volume, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSourceVolumeChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSOURCEVOLUME, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceVolumeChange(IsHandleEqual(handle), volume, error)).Times(1);
+ env->mProxy->ackSetSourceVolume(20, volume, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSourceState)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSOURCESTATE, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceState(IsHandleEqual(handle), error)).Times(1);
+ env->mProxy->ackSetSourceState(20, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSinkSoundProperties)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSINKSOUNDPROPERTIES, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSinkSoundProperties(IsHandleEqual(handle), error)).Times(1);
+ env->mProxy->ackSetSinkSoundProperties(20, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSinkSoundProperty)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSINKSOUNDPROPERTY, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSinkSoundProperty(IsHandleEqual(handle), error)).Times(1);
+ env->mProxy->ackSetSinkSoundProperty(20, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSourceSoundProperties)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSOURCESOUNDPROPERTIES, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceSoundProperties(IsHandleEqual(handle), error)).Times(1);
+ env->mProxy->ackSetSourceSoundProperties(20, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetSourceSoundProperty)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSOURCESOUNDPROPERTY, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceSoundProperty(IsHandleEqual(handle), error)).Times(1);
+ env->mProxy->ackSetSourceSoundProperty(20, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackCrossFading)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_HotSink_e hotSink = HS_UNKNOWN;
+ am_Handle_s handle = {H_CROSSFADE, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackCrossFading(IsHandleEqual(handle), hotSink, error)).Times(1);
+ env->mProxy->ackCrossFading(20, static_cast<am_gen::am_HotSink_e>(hotSink), (am_gen::am_Error_e)error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSourceVolumeTick)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_sourceID_t sourceID = TEST_ID_1;
+ am_Handle_s handle = {H_SETSOURCEVOLUME, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSourceVolumeTick(IsHandleEqual(handle), sourceID, error)).Times(1);
+ env->mProxy->ackSourceVolumeTick(20, sourceID, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSinkVolumeTick)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_sinkID_t sID = TEST_ID_1;
+ am_Handle_s handle = {H_SETSINKVOLUME, 20};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSinkVolumeTick(IsHandleEqual(handle), sID, error)).Times(1);
+ env->mProxy->ackSinkVolumeTick(20, sID, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+ACTION(actionRegister){
+ arg1=TEST_ID_1;
+}
+
+ACTION(actionPeekDomain){
+ arg1=TEST_ID_1;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, peekDomain)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ std::string name("domain name");
+ am_gen::am_domainID_t domainID = 0;
+ ON_CALL(*env->mpRoutingReceive, peekDomain(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, peekDomain(name, _)).WillOnce(DoAll(actionPeekDomain(), Return(E_OK)));
+ env->mProxy->peekDomain(name, callStatus, domainID, error);
+ ASSERT_EQ( domainID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsDomainDataEqualTo, value, "") {
+ auto lh = arg;
+ return lh.domainID == value.domainID &&
+ lh.name == value.name &&
+ lh.nodename == value.nodename &&
+ lh.early == value.early &&
+ lh.complete == value.complete &&
+ lh.state == value.state;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, registerDomain)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ std::string name("domain name");
+ std::string busname("busname");
+ std::string nodename("nodename");
+
+ am_gen::am_Domain_s domainData(0, name, busname, nodename, false, false, am_gen::am_DomainState_e::DS_CONTROLLED);
+ am::am_Domain_s amDomainData;
+ CAmConvertCAPI2AM(domainData, amDomainData);
+ am_gen:am_domainID_t domainID = 0;
+//If the result is E_OK, then the routing service will try to establish a connection with the domain via common-api.
+//For now we won't test common-api connection with the domain therefore E_ABORTED is returned.
+ ON_CALL(*env->mpRoutingReceive, registerDomain(_, _)).WillByDefault(Return(E_ABORTED));
+ EXPECT_CALL(*env->mpRoutingReceive, registerDomain(IsDomainDataEqualTo(amDomainData), _)).WillOnce(DoAll(actionRegister(), Return(E_ABORTED)));
+
+//example: [local:org.genivi.audiomanger.testdomaininterface:org.genivi.audiomanger]
+ env->mProxy->registerDomain(domainData,
+ "org.genivi.audiomanger", //(last part)
+ "",
+ "org.genivi.audiomanger.testdomaininterface", //(middle part)
+ callStatus,
+ domainID,
+ error);
+ ASSERT_EQ( domainID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_ABORTED );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, deregisterDomain)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_domainID_t domainID = TEST_ID_1;
+
+ ON_CALL(*env->mpRoutingReceive, deregisterDomain(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterDomain(domainID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterDomain(domainID, callStatus, error);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+ACTION(actionRegisterGateway){
+ arg1=TEST_ID_1;
+}
+
+MATCHER_P(IsGatewayDataEqualTo, value, "") {
+ auto lh = arg;
+ return lh.gatewayID == value.gatewayID &&
+ lh.name == value.name &&
+ lh.sinkID == value.sinkID &&
+ lh.sourceID == value.sourceID &&
+ lh.domainSinkID == value.domainSinkID &&
+ lh.controlDomainID == value.controlDomainID &&
+ lh.listSourceFormats == value.listSourceFormats &&
+ lh.listSinkFormats == value.listSinkFormats &&
+ lh.convertionMatrix == value.convertionMatrix;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, registerGateway)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen::am_ConnectionFormat_L listSourceFormats;
+ listSourceFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+ listSourceFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_AUTO);
+ am_gen::am_ConnectionFormat_L listSinkFormats;
+ listSinkFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_AUTO);
+ listSinkFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+ am_gen::bool_L convertionMatrix;
+ convertionMatrix.push_back(1);
+ convertionMatrix.push_back(0);
+
+ am_gen:am_gatewayID_t gatewayID = 0;
+ am_gen::am_Gateway_s gateway(gatewayID, "name", 103, 104, 105, 106, 107, listSourceFormats, listSinkFormats, convertionMatrix);
+ am_Gateway_s amGateway;
+ CAmConvertCAPI2AM(gateway, amGateway);
+
+ ON_CALL(*env->mpRoutingReceive, registerGateway(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerGateway(IsGatewayDataEqualTo(amGateway), _)).WillOnce(DoAll(actionRegisterGateway(), Return(E_OK)));
+ env->mProxy->registerGateway(gateway, callStatus, gatewayID, error);
+ ASSERT_EQ( gatewayID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, deregisterGateway)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_gatewayID_t gatewayID = TEST_ID_1;
+
+ ON_CALL(*env->mpRoutingReceive, deregisterGateway(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterGateway(gatewayID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterGateway(gatewayID, callStatus, error);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+ACTION(actionPeek){
+ arg1=TEST_ID_1;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, peekSink)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ std::string name("name");
+ am_gen::am_sinkID_t sinkID = 0;
+ ON_CALL(*env->mpRoutingReceive, peekSink(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, peekSink(name, _)).WillOnce(DoAll(actionPeek(), Return(E_OK)));
+ env->mProxy->peekSink(name, callStatus, sinkID, error);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+
+MATCHER_P(IsSinkDataEqualTo, value, "") {
+ auto lh = arg;
+
+ bool bMainSoundProperties = lh.listMainSoundProperties.size() == value.listMainSoundProperties.size();
+ for(int i=0; i<lh.listMainSoundProperties.size(); i++)
+ {
+ bMainSoundProperties &= (lh.listMainSoundProperties.at(i).type==value.listMainSoundProperties.at(i).type &&
+ lh.listMainSoundProperties.at(i).value==value.listMainSoundProperties.at(i).value);
+ }
+
+ bool bSoundProperties = lh.listSoundProperties.size() == value.listSoundProperties.size();
+ for(int i=0; i<lh.listSoundProperties.size(); i++)
+ {
+ bSoundProperties &= (lh.listSoundProperties.at(i).type==value.listSoundProperties.at(i).type &&
+ lh.listSoundProperties.at(i).value==value.listSoundProperties.at(i).value);
+ }
+
+ bool bMainNotificationConfigurations = lh.listMainNotificationConfigurations.size() == value.listMainNotificationConfigurations.size();
+ for(int i=0; i<lh.listMainNotificationConfigurations.size(); i++)
+ {
+ bMainNotificationConfigurations &= (lh.listMainNotificationConfigurations.at(i).type==value.listMainNotificationConfigurations.at(i).type &&
+ lh.listMainNotificationConfigurations.at(i).status==value.listMainNotificationConfigurations.at(i).status &&
+ lh.listMainNotificationConfigurations.at(i).parameter==value.listMainNotificationConfigurations.at(i).parameter);
+ }
+
+ bool bNotificationConfigurations = lh.listNotificationConfigurations.size() == value.listNotificationConfigurations.size();
+ for(int i=0; i<lh.listNotificationConfigurations.size(); i++)
+ {
+ bNotificationConfigurations &= (lh.listNotificationConfigurations.at(i).type==value.listNotificationConfigurations.at(i).type &&
+ lh.listNotificationConfigurations.at(i).status==value.listNotificationConfigurations.at(i).status &&
+ lh.listNotificationConfigurations.at(i).parameter==value.listNotificationConfigurations.at(i).parameter);
+ }
+
+ return bMainSoundProperties &&
+ bSoundProperties &&
+ bNotificationConfigurations &&
+ bMainNotificationConfigurations &&
+ lh.sinkID == value.sinkID &&
+ lh.name == value.name &&
+ lh.domainID == value.domainID &&
+ lh.sinkClassID == value.sinkClassID &&
+ lh.volume == value.volume &&
+ lh.visible == value.visible &&
+ lh.available.availability == value.available.availability &&
+ lh.available.availabilityReason == value.available.availabilityReason &&
+ lh.muteState == value.muteState &&
+ lh.mainVolume == value.mainVolume &&
+ lh.listConnectionFormats == value.listConnectionFormats;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, registerSink)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen::sinkData_s sink;
+ am_Sink_s amSink;
+ am_gen:am_sinkID_t sinkID = 0;
+ initSink(sink, amSink, TEST_ID_2, sinkID);
+
+ ON_CALL(*env->mpRoutingReceive, registerSink(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerSink(IsSinkDataEqualTo(amSink), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerSink(sink, callStatus, sinkID, error);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, deregisterSink)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_sinkID_t sinkID = TEST_ID_1;
+
+ ON_CALL(*env->mpRoutingReceive, deregisterSink(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterSink(sinkID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterSink(sinkID, callStatus, error);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, peekSource)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ std::string name("name");
+ am_gen::am_sourceID_t sinkID = 0;
+ ON_CALL(*env->mpRoutingReceive, peekSource(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, peekSource(name, _)).WillOnce(DoAll(actionPeek(), Return(E_OK)));
+ env->mProxy->peekSource(name, callStatus, sinkID, error);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+ACTION(actionRegisterSource){
+ arg1=TEST_ID_1;
+}
+
+MATCHER_P(IsSourceDataEqualTo, value, "") {
+ auto lh = arg;
+
+ bool bMainSoundProperties = lh.listMainSoundProperties.size() == value.listMainSoundProperties.size();
+ for(int i=0; i<lh.listMainSoundProperties.size(); i++)
+ {
+ bMainSoundProperties &= (lh.listMainSoundProperties.at(i).type==value.listMainSoundProperties.at(i).type &&
+ lh.listMainSoundProperties.at(i).value==value.listMainSoundProperties.at(i).value);
+ }
+
+ bool bSoundProperties = lh.listSoundProperties.size() == value.listSoundProperties.size();
+ for(int i=0; i<lh.listSoundProperties.size(); i++)
+ {
+ bSoundProperties &= (lh.listSoundProperties.at(i).type==value.listSoundProperties.at(i).type &&
+ lh.listSoundProperties.at(i).value==value.listSoundProperties.at(i).value);
+ }
+
+ bool bMainNotificationConfigurations = lh.listMainNotificationConfigurations.size() == value.listMainNotificationConfigurations.size();
+ for(int i=0; i<lh.listMainNotificationConfigurations.size(); i++)
+ {
+ bMainNotificationConfigurations &= (lh.listMainNotificationConfigurations.at(i).type==value.listMainNotificationConfigurations.at(i).type &&
+ lh.listMainNotificationConfigurations.at(i).status==value.listMainNotificationConfigurations.at(i).status &&
+ lh.listMainNotificationConfigurations.at(i).parameter==value.listMainNotificationConfigurations.at(i).parameter);
+ }
+
+ bool bNotificationConfigurations = lh.listNotificationConfigurations.size() == value.listNotificationConfigurations.size();
+ for(int i=0; i<lh.listNotificationConfigurations.size(); i++)
+ {
+ bNotificationConfigurations &= (lh.listNotificationConfigurations.at(i).type==value.listNotificationConfigurations.at(i).type &&
+ lh.listNotificationConfigurations.at(i).status==value.listNotificationConfigurations.at(i).status &&
+ lh.listNotificationConfigurations.at(i).parameter==value.listNotificationConfigurations.at(i).parameter);
+ }
+ return bMainSoundProperties &&
+ bSoundProperties &&
+ bNotificationConfigurations &&
+ bMainNotificationConfigurations &&
+ lh.sourceID == value.sourceID &&
+ lh.name == value.name &&
+ lh.domainID == value.domainID &&
+ lh.sourceClassID == value.sourceClassID &&
+ lh.volume == value.volume &&
+ lh.visible == value.visible &&
+ lh.available.availability == value.available.availability &&
+ lh.available.availabilityReason == value.available.availabilityReason &&
+ lh.sourceState == value.sourceState &&
+ lh.interruptState == value.interruptState &&
+ lh.listConnectionFormats == value.listConnectionFormats;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, registerSource)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen::sourceData_s source;
+ am_Source_s amSource;
+ am_gen:am_sourceID_t sinkID = 0;
+ initSource(source, amSource, TEST_ID_2, sinkID);
+
+ ON_CALL(*env->mpRoutingReceive, registerSource(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerSource(IsSourceDataEqualTo(amSource), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerSource(source, callStatus, sinkID, error);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, deregisterSource)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_sourceID_t sinkID = TEST_ID_1;
+
+ ON_CALL(*env->mpRoutingReceive, deregisterSource(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterSource(sinkID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterSource(sinkID, callStatus, error);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+ACTION(actionRegisterCrossfader){
+ arg1=TEST_ID_1;
+}
+
+MATCHER_P(IsCrossfaderDataEqualTo, value, "") {
+ auto lh = arg;
+ return lh.crossfaderID == value.crossfaderID &&
+ lh.name == value.name &&
+ lh.sinkID_A == value.sinkID_A &&
+ lh.sinkID_B == value.sinkID_B &&
+ lh.sinkID_B == value.sinkID_B &&
+ lh.sourceID == value.sourceID &&
+ lh.hotSink == value.hotSink;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, registerCrossfader)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen:am_crossfaderID_t crossfaderID = 0;
+ am_gen::crossfaderData_s crossfader;
+ am_Crossfader_s amCrossfader;
+ initCrossfader(crossfader, amCrossfader, crossfaderID);
+
+ ON_CALL(*env->mpRoutingReceive, registerCrossfader(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerCrossfader(IsCrossfaderDataEqualTo(amCrossfader), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerCrossfader(crossfader, callStatus, crossfaderID, error);
+ ASSERT_EQ( crossfaderID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, deregisterCrossfader)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_crossfaderID_t crossfaderID = TEST_ID_1;
+
+ ON_CALL(*env->mpRoutingReceive, deregisterCrossfader(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterCrossfader(crossfaderID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterCrossfader(crossfaderID, callStatus, error);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, peekSourceClassID)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ std::string name("name");
+ am_gen::am_sourceClass_t sinkID = 0;
+ ON_CALL(*env->mpRoutingReceive, peekSourceClassID(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, peekSourceClassID(name, _)).WillOnce(DoAll(actionPeek(), Return(E_OK)));
+ env->mProxy->peekSourceClassID(name, callStatus, sinkID, error);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, peekSinkClassID)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ std::string name("name");
+ am_gen::am_sinkClass_t sinkID = 0;
+ ON_CALL(*env->mpRoutingReceive, peekSinkClassID(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, peekSinkClassID(name, _)).WillOnce(DoAll(actionPeek(), Return(E_OK)));
+ env->mProxy->peekSinkClassID(name, callStatus, sinkID, error);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookInterruptStatusChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sourceID_t sourceID = TEST_ID_1;
+ am_InterruptState_e interruptState = am_InterruptState_e::IS_MAX;
+ EXPECT_CALL(*env->mpRoutingReceive, hookInterruptStatusChange(sourceID, interruptState)).Times(1);
+ env->mProxy->hookInterruptStatusChange(sourceID, interruptState, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookDomainRegistrationComplete)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_domainID_t testID = TEST_ID_1;
+ EXPECT_CALL(*env->mpRoutingReceive, hookDomainRegistrationComplete(testID)).Times(1);
+ env->mProxy->hookDomainRegistrationComplete(testID, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsAvailabilityEqualTo, value, "") {
+ am_Availability_s lh = arg;
+ return lh.availability == value.availability &&
+ lh.availabilityReason == value.availabilityReason;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookSinkAvailablityStatusChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sinkID_t testID = TEST_ID_1;
+
+ am_gen::am_Availability_s available(am_gen::am_Availability_e::A_MAX, am_gen::am_AvailabilityReason_e::AR_MAX);
+ am_Availability_s amAvailable;
+ CAmConvertCAPI2AM(available, amAvailable);
+
+ EXPECT_CALL(*env->mpRoutingReceive, hookSinkAvailablityStatusChange(testID, IsAvailabilityEqualTo(amAvailable))).Times(1);
+ env->mProxy->hookSinkAvailablityStatusChange(testID, available, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookSourceAvailablityStatusChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sourceID_t testID = TEST_ID_1;
+
+ am_gen::am_Availability_s available(am_gen::am_Availability_e::A_MAX, am_gen::am_AvailabilityReason_e::AR_MAX);
+ am_Availability_s amAvailable;
+ CAmConvertCAPI2AM(available, amAvailable);
+
+ EXPECT_CALL(*env->mpRoutingReceive, hookSourceAvailablityStatusChange(testID, IsAvailabilityEqualTo(amAvailable))).Times(1);
+ env->mProxy->hookSourceAvailablityStatusChange(testID, available, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookDomainStateChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_domainID_t testID = TEST_ID_1;
+ am_gen::am_DomainState_e domainState = am_gen::am_DomainState_e::DS_MAX;
+ EXPECT_CALL(*env->mpRoutingReceive, hookDomainStateChange(testID, (am_DomainState_e)domainState)).Times(1);
+ env->mProxy->hookDomainStateChange(testID, domainState, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookTimingInformationChanged)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_connectionID_t testID = TEST_ID_1;
+ int16_t delay = 10;
+ am_gen::am_DomainState_e domainState = am_gen::am_DomainState_e::DS_MAX;
+ EXPECT_CALL(*env->mpRoutingReceive, hookTimingInformationChanged(testID, delay)).Times(1);
+ env->mProxy->hookTimingInformationChanged(testID, delay, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsSinkEarlyDataEqualTo, value, "") {
+
+ std::vector<am_EarlyData_s> lh = arg;
+ bool result = lh.size() == value.size();
+ for(int i=0; result && i<lh.size(); i++)
+ {
+ am_EarlyData_s ed_lh = lh.at(i);
+ am_EarlyData_s ed_rh = value.at(i);
+ if(ed_lh.type != ed_rh.type)
+ {
+ result = false;
+ break;
+ }
+ else
+ {
+ if(ed_lh.type==ED_SINK_VOLUME)
+ {
+ result &= ed_lh.data.volume == ed_rh.data.volume;
+ result &= ed_lh.sinksource.sink == ed_rh.sinksource.sink;
+ }
+ else if(ed_lh.type==ED_SINK_PROPERTY)
+ {
+ result &= ed_lh.data.soundProperty.type == ed_rh.data.soundProperty.type;
+ result &= ed_lh.data.soundProperty.value == ed_rh.data.soundProperty.value;
+ result &= ed_lh.sinksource.sink == ed_rh.sinksource.sink;
+ }
+ else
+ {
+ result = false;
+ break;
+ }
+ }
+ }
+
+ return result;
+}
+
+MATCHER_P(IsSourceEarlyDataEqualTo, value, "") {
+
+ std::vector<am_EarlyData_s> lh = arg;
+ bool result = lh.size() == value.size();
+ for(int i=0; result && i<lh.size(); i++)
+ {
+ am_EarlyData_s ed_lh = lh.at(i);
+ am_EarlyData_s ed_rh = value.at(i);
+ if(ed_lh.type != ed_rh.type)
+ {
+ result = false;
+ break;
+ }
+ else
+ {
+ if(ed_lh.type==ED_SOURCE_VOLUME)
+ {
+ result &= ed_lh.data.volume == ed_rh.data.volume;
+ result &= ed_lh.sinksource.source == ed_rh.sinksource.source;
+ }
+ else if(ed_lh.type==ED_SOURCE_PROPERTY)
+ {
+ result &= ed_lh.data.soundProperty.type == ed_rh.data.soundProperty.type;
+ result &= ed_lh.data.soundProperty.value == ed_rh.data.soundProperty.value;
+ result &= ed_lh.sinksource.source == ed_rh.sinksource.source;
+ }
+ else
+ {
+ result = false;
+ break;
+ }
+ }
+ }
+
+ return result;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, sendChangedData)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_connectionID_t testID = TEST_ID_1;
+ am_gen::am_EarlyData_l earlyData_soundproperties;
+ am_gen::am_EarlyData_l earlyData_volumes;
+
+ am_gen::am_DataType_u dt11(static_cast<am_gen::am_sinkID_t>(103));
+ am_gen::am_EarlyData_u ed11(static_cast<am_gen::am_volume_t>(50));
+ earlyData_volumes.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SINK_VOLUME,
+ dt11,
+ ed11));
+ am_gen::am_DataType_u dt12(static_cast<am_gen::am_sinkID_t>(104));
+ earlyData_volumes.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SINK_VOLUME,
+ dt12,
+ ed11));
+
+ am_gen::am_DataType_u dt13(static_cast<am_gen::am_sinkID_t>(105));
+ am_gen::am_EarlyData_u ed12(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_MAX, 50));
+ earlyData_soundproperties.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SINK_PROPERTY,
+ dt13,
+ ed12));
+ am_gen::am_DataType_u dt14(static_cast<am_gen::am_sinkID_t>(106));
+ earlyData_soundproperties.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SINK_PROPERTY,
+ dt14,
+ ed12));
+
+ std::vector<am_EarlyData_s> earlyData;
+ am_EarlyData_s amEarlyData11;
+ amEarlyData11.type = am_EarlyDataType_e::ED_SINK_VOLUME;
+ amEarlyData11.data.volume = 50;
+ amEarlyData11.sinksource.sink = 103;
+ earlyData.push_back(amEarlyData11);
+ amEarlyData11.sinksource.sink = 104;
+ earlyData.push_back(amEarlyData11);
+
+ am_EarlyData_s amEarlyData12;
+ amEarlyData12.type = am_EarlyDataType_e::ED_SINK_PROPERTY;
+ amEarlyData12.sinksource.sink = 105;
+ amEarlyData12.data.soundProperty = (am_SoundProperty_s){SP_MAX, 50};
+ earlyData.push_back(amEarlyData12);
+ amEarlyData12.sinksource.sink = 106;
+ earlyData.push_back(amEarlyData12);
+
+ EXPECT_CALL(*env->mpRoutingReceive, sendChangedData(IsSinkEarlyDataEqualTo(earlyData))).Times(1);
+
+ env->mProxy->sendChangedData(earlyData_volumes, earlyData_soundproperties, callStatus);
+
+ earlyData_soundproperties.clear();
+ earlyData_volumes.clear();
+ earlyData.clear();
+
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+
+ am_gen::am_DataType_u dt21(static_cast<am_gen::am_sourceID_t>(103));
+ am_gen::am_EarlyData_u ed21(static_cast<am_gen::am_volume_t>(50));
+ earlyData_volumes.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SOURCE_VOLUME,
+ dt21,
+ ed21));
+ am_gen::am_DataType_u dt22(static_cast<am_gen::am_sourceID_t>(104));
+ earlyData_volumes.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SOURCE_VOLUME,
+ dt22,
+ ed21));
+
+ am_gen::am_DataType_u dt23(static_cast<am_gen::am_sourceID_t>(105));
+ am_gen::am_EarlyData_u ed22(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_MAX, 50));
+ earlyData_soundproperties.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SOURCE_PROPERTY,
+ dt23,
+ ed22));
+ am_gen::am_DataType_u dt24(static_cast<am_gen::am_sourceID_t>(106));
+ earlyData_soundproperties.push_back(am_gen::am_EarlyData_s(am_gen::am_EarlyDataType_e::ED_SOURCE_PROPERTY,
+ dt24,
+ ed22));
+
+ am_EarlyData_s amEarlyData21;
+ amEarlyData21.type = am_EarlyDataType_e::ED_SOURCE_VOLUME;
+ amEarlyData21.data.volume = 50;
+ amEarlyData21.sinksource.sink = 103;
+ earlyData.push_back(amEarlyData21);
+ amEarlyData21.sinksource.sink = 104;
+ earlyData.push_back(amEarlyData21);
+
+ am_EarlyData_s amEarlyData22;
+ amEarlyData22.type = am_EarlyDataType_e::ED_SOURCE_PROPERTY;
+ amEarlyData22.sinksource.sink = 105;
+ amEarlyData22.data.soundProperty = (am_SoundProperty_s){SP_MAX, 50};
+ earlyData.push_back(amEarlyData22);
+ amEarlyData22.sinksource.sink = 106;
+ earlyData.push_back(amEarlyData22);
+
+ EXPECT_CALL(*env->mpRoutingReceive, sendChangedData(IsSourceEarlyDataEqualTo(earlyData))).Times(1);
+
+ env->mProxy->sendChangedData(earlyData_volumes, earlyData_soundproperties, callStatus);
+
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, confirmRoutingReady)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_domainID_t testID = TEST_ID_1;
+ EXPECT_CALL(*env->mpRoutingReceive, confirmRoutingReady(10, error)).Times(1);
+ env->mProxy->confirmRoutingReady(testID, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, confirmRoutingRundown)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_domainID_t testID = TEST_ID_1;
+ EXPECT_CALL(*env->mpRoutingReceive, confirmRoutingRundown(10, error)).Times(1);
+ env->mProxy->confirmRoutingRundown(testID, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, updateGateway)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_gatewayID_t testID = TEST_ID_1;
+
+ am_gen::am_ConnectionFormat_L listSourceFormats;
+ listSourceFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+ listSourceFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_AUTO);
+
+ am_gen::am_ConnectionFormat_L listSinkFormats;
+ listSinkFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_AUTO);
+ listSinkFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+
+ am_gen::bool_L convertionMatrix;
+ convertionMatrix.push_back(1);
+ convertionMatrix.push_back(0);
+
+ std::vector<am_ConnectionFormat_e> am_listSourceFormats;
+ am_listSourceFormats.push_back(am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+ am_listSourceFormats.push_back(am_ConnectionFormat_e::CF_GENIVI_AUTO);
+
+ std::vector<am_ConnectionFormat_e> am_listSinkFormats;
+ am_listSinkFormats.push_back(am_ConnectionFormat_e::CF_GENIVI_AUTO);
+ am_listSinkFormats.push_back(am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+
+ std::vector<bool> am_convertionMatrix;
+ am_convertionMatrix.push_back(1);
+ am_convertionMatrix.push_back(0);
+ ON_CALL(*env->mpRoutingReceive, updateGateway(_, _, _, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, updateGateway(testID, am_listSourceFormats, am_listSinkFormats, am_convertionMatrix)).Times(1);
+
+ env->mProxy->updateGateway(testID, listSourceFormats, listSinkFormats, convertionMatrix, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsSoundPropertiesArrayEqualTo, value, "") {
+ auto lh = arg;
+
+ bool bSoundProperties = lh.size() == value.size();
+ for(int i=0; i<lh.size(); i++)
+ {
+ bSoundProperties &= (lh.at(i).type==value.at(i).type &&
+ lh.at(i).value==value.at(i).value);
+ }
+ return bSoundProperties;
+}
+
+void prepareArrays( am_gen::am_SoundProperty_L & listSoundProperties,
+ am_gen::am_ConnectionFormat_L & listSinkFormats,
+ am_gen::am_MainSoundProperty_L & listMainSoundProperties,
+ std::vector<am_ConnectionFormat_e> & am_listSinkFormats,
+ std::vector<am_SoundProperty_s> & am_listSoundProperties,
+ std::vector<am_MainSoundProperty_s> & am_listMainSoundProperties)
+{
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_MAX, 50));
+ listSoundProperties.push_back(am_gen::am_SoundProperty_s(am_gen::am_SoundPropertyType_e::SP_MAX, 51));
+
+ listSinkFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_AUTO);
+ listSinkFormats.push_back(am_gen::am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+
+ listMainSoundProperties.push_back(am_gen::am_MainSoundProperty_s(am_gen::am_MainSoundPropertyType_e::MSP_MAX, 50));
+ listMainSoundProperties.push_back(am_gen::am_MainSoundProperty_s(am_gen::am_MainSoundPropertyType_e::MSP_MAX, 51));
+
+ am_listSinkFormats.push_back(am_ConnectionFormat_e::CF_GENIVI_AUTO);
+ am_listSinkFormats.push_back(am_ConnectionFormat_e::CF_GENIVI_ANALOG);
+
+ am_listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_MAX, 50});
+ am_listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_MAX, 51});
+
+ am_listMainSoundProperties.push_back((am_MainSoundProperty_s){am_MainSoundPropertyType_e::MSP_MAX, 50});
+ am_listMainSoundProperties.push_back((am_MainSoundProperty_s){am_MainSoundPropertyType_e::MSP_MAX, 51});
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, updateSink)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sinkID_t testID = TEST_ID_1;
+
+ am_gen::am_SoundProperty_L listSoundProperties;
+ am_gen::am_ConnectionFormat_L listSinkFormats;
+ am_gen::am_MainSoundProperty_L listMainSoundProperties;
+ std::vector<am_ConnectionFormat_e> am_listSinkFormats;
+ std::vector<am_SoundProperty_s> am_listSoundProperties;
+ std::vector<am_MainSoundProperty_s> am_listMainSoundProperties;
+ prepareArrays(listSoundProperties, listSinkFormats, listMainSoundProperties, am_listSinkFormats, am_listSoundProperties, am_listMainSoundProperties);
+
+ ON_CALL(*env->mpRoutingReceive, updateSink(_, _, _, _, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, updateSink(testID, TEST_ID_2, IsSoundPropertiesArrayEqualTo(am_listSoundProperties), am_listSinkFormats, IsSoundPropertiesArrayEqualTo(am_listMainSoundProperties))).Times(1);
+ env->mProxy->updateSink(testID, TEST_ID_2, listSoundProperties, listSinkFormats, listMainSoundProperties, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, updateSource)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sourceID_t testID = TEST_ID_1;
+
+ am_gen::am_SoundProperty_L listSoundProperties;
+ am_gen::am_ConnectionFormat_L listSinkFormats;
+ am_gen::am_MainSoundProperty_L listMainSoundProperties;
+ std::vector<am_ConnectionFormat_e> am_listSinkFormats;
+ std::vector<am_SoundProperty_s> am_listSoundProperties;
+ std::vector<am_MainSoundProperty_s> am_listMainSoundProperties;
+ prepareArrays(listSoundProperties, listSinkFormats, listMainSoundProperties, am_listSinkFormats, am_listSoundProperties, am_listMainSoundProperties);
+
+ ON_CALL(*env->mpRoutingReceive, updateSource(_, _, _, _, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, updateSource(testID, TEST_ID_2, IsSoundPropertiesArrayEqualTo(am_listSoundProperties), am_listSinkFormats, IsSoundPropertiesArrayEqualTo(am_listMainSoundProperties))).Times(1);
+ env->mProxy->updateSource(testID, TEST_ID_2, listSoundProperties, listSinkFormats, listMainSoundProperties, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+
+MATCHER_P2(IsSinkVolumeArrayEqualTo, value, isSink, "") {
+
+ std::vector<am_Volumes_s> lh = arg;
+ bool bResult = lh.size() == value.size();
+ for(int i=0; i<lh.size(); i++)
+ {
+ bResult &= (((isSink && lh.at(i).volumeID.sink==value.at(i).volumeID.sink) || (!isSink && lh.at(i).volumeID.source==value.at(i).volumeID.source)) &&
+ lh.at(i).volume==value.at(i).volume &&
+ lh.at(i).ramp==value.at(i).ramp &&
+ lh.at(i).time==value.at(i).time);
+ }
+ return bResult;
+}
+
+MATCHER_P(IsHandleStructEqualTo, value, "") {
+ am_Handle_s lh = arg;
+ return lh.handle==value.handle &&
+ lh.handleType==value.handleType ;
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSetVolumes)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ uint16_t error = (uint16_t)E_OK;
+ uint16_t testID = 10;
+ am_gen::am_Volumes_l listVolumes;
+ am_gen::am_DataType_u dt(static_cast<am_gen::am_sinkID_t>(103));
+ listVolumes.push_back(am_gen::am_Volumes_s(am_gen::am_VolumeType_e::VT_MAX,
+ dt,
+ 50,
+ am_gen::am_RampType_e::RAMP_GENIVI_DIRECT,
+ 50));
+
+ std::vector<am_Volumes_s> am_listVolumes;
+ am_DataType_u dt1;
+ dt1.sink = 103;
+ am_listVolumes.push_back((am_Volumes_s){am_VolumeType_e::VT_MAX,
+ dt1,
+ 50,
+ am_RampType_e::RAMP_GENIVI_DIRECT,
+ 50});
+
+ am_Handle_s handle_s;
+ handle_s.handle = 10;
+ handle_s.handleType = H_SETVOLUMES;
+
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetVolumes(IsHandleStructEqualTo(handle_s), IsSinkVolumeArrayEqualTo(am_listVolumes, true), _)).Times(1);
+ env->mProxy->ackSetVolumes(testID, listVolumes, error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSinkNotificationConfiguration)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_OK;
+ uint16_t testID = TEST_ID_1;
+ am_Handle_s handle_s;
+ handle_s.handle = testID;
+ handle_s.handleType = H_CONNECT;
+ EXPECT_CALL(*env->mpRoutingReceive, ackSinkNotificationConfiguration(IsHandleStructEqualTo(handle_s), (am_Error_e)error)).Times(1);
+ env->mProxy->ackSinkNotificationConfiguration(testID, (uint16_t)error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, ackSourceNotificationConfiguration)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_OK;
+ uint16_t testID = TEST_ID_1;
+ am_Handle_s handle_s;
+ handle_s.handle = testID;
+ handle_s.handleType = H_CONNECT;
+ EXPECT_CALL(*env->mpRoutingReceive, ackSourceNotificationConfiguration(IsHandleStructEqualTo(handle_s), (am_Error_e)error)).Times(1);
+ env->mProxy->ackSourceNotificationConfiguration(testID, (uint16_t)error, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsPayloadEqualTo, value, "") {
+
+ auto lh = arg;
+ return lh.type == value.type && lh.value == value.value;
+}
+
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookSinkNotificationDataChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sinkID_t testID = TEST_ID_1;
+ am_gen::notificationPayload_s payload(am_NotificationType_e::NT_MAX, 50);
+
+ am_NotificationPayload_s am_payload = (am_NotificationPayload_s){am_NotificationType_e::NT_MAX, 50};
+
+ EXPECT_CALL(*env->mpRoutingReceive, hookSinkNotificationDataChange(testID, IsPayloadEqualTo(am_payload))).Times(1);
+ env->mProxy->hookSinkNotificationDataChange(testID, payload, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingInterfaceCAPITests, hookSourceNotificationDataChange)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_Error_e error = E_OK;
+ am_gen::am_sourceID_t testID = TEST_ID_1;
+ am_gen::notificationPayload_s payload(am_NotificationType_e::NT_MAX, 50);
+
+ am_NotificationPayload_s am_payload = (am_NotificationPayload_s){am_NotificationType_e::NT_MAX, 50};
+
+ EXPECT_CALL(*env->mpRoutingReceive, hookSourceNotificationDataChange(testID, IsPayloadEqualTo(am_payload))).Times(1);
+ env->mProxy->hookSourceNotificationDataChange(testID, payload, callStatus);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+ACTION(actionRegister2){
+ arg1=TEST_ID_2;
+}
+
+
+/** CAmRoutingSenderCAPITests
+ * The following methods must be executed in the given order.
+ * It is important that the TestDomain_register* methods are executed first because they make domain, sink, source and crossfader registrations.
+ * The last couple of methods are TestDomain_deregister* methods which check whether the 'deregistration' functionality works properly.
+ */
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_registerDomain)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_FALSE( backdoor.containsDomainWithID( (const am_domainID_t)TEST_ID_1) );
+
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_domainID_t domainID = 0;
+ am_gen::am_Domain_s domainData;
+ domainData.name = "TestDomain";
+ domainData.busname ="TestDomain";
+ domainData.complete = true;
+ domainData.domainID = domainID;
+ domainData.early = false;
+ domainData.nodename = "Test";
+ domainData.state = am_gen::am_DomainState_e::DS_CONTROLLED;
+
+ am::am_Domain_s amDomainData;
+ CAmConvertCAPI2AM(domainData, amDomainData);
+
+ ON_CALL(*env->mpRoutingReceive, registerDomain(_, _)).WillByDefault(Return(E_OK));
+
+ EXPECT_CALL(*env->mpRoutingReceive, registerDomain(IsDomainDataEqualTo(amDomainData), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerDomain(domainData,
+ CAPI_SENDER_INSTANCE,
+ CAPI_SENDER_PATH,
+ CAPI_SENDER_INTERFACE,
+ callStatus,
+ domainID,
+ error);
+ usleep(50000);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( domainID, TEST_ID_1 );
+ ASSERT_TRUE( backdoor.containsDomainWithID(domainID) );
+
+ domainID = 0;
+ domainData.domainID = 0;
+ domainData.name = "TestDomain2";
+ domainData.busname ="TestDomain2";
+ CAmConvertCAPI2AM(domainData, amDomainData);
+ EXPECT_CALL(*env->mpRoutingReceive, registerDomain(IsDomainDataEqualTo(amDomainData), _)).WillOnce(DoAll(actionRegister2(), Return(E_OK)));
+ env->mProxy->registerDomain(domainData,
+ CAPI_SENDER_INSTANCE,
+ CAPI_SENDER_PATH,
+ CAPI_SENDER_INTERFACE,
+ callStatus,
+ domainID,
+ error);
+ usleep(50000);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( domainID, TEST_ID_2 );
+ ASSERT_TRUE( backdoor.domainsCount()==2 );
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)TEST_ID_1) );
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)TEST_ID_2) );
+ ASSERT_FALSE( backdoor.containsDomainWithID( (const am_domainID_t)10000) );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_registerSource)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen::sourceData_s source;
+ am_Source_s amSource;
+ am_gen:am_sourceID_t sinkID = 0;
+ initSource(source, amSource, domainID, sinkID);
+
+ ON_CALL(*env->mpRoutingReceive, registerSource(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerSource(IsSourceDataEqualTo(amSource), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerSource(source, callStatus, sinkID, error);
+ usleep(50000);
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)TEST_ID_1) );
+
+ initSource(source, amSource, domainID, sinkID);
+ EXPECT_CALL(*env->mpRoutingReceive, registerSource(IsSourceDataEqualTo(amSource), _)).WillOnce(DoAll(actionRegister2(), Return(E_OK)));
+ env->mProxy->registerSource(source, callStatus, sinkID, error);
+ usleep(50000);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( sinkID, TEST_ID_2 );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)TEST_ID_2) );
+ ASSERT_TRUE( backdoor.sourcesCount()==2 );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_registerSink)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen::sinkData_s sink;
+ am_Sink_s amSink;
+ am_gen:am_sinkID_t sinkID = 0;
+ initSink(sink, amSink, domainID, sinkID);
+
+ ON_CALL(*env->mpRoutingReceive, registerSink(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerSink(IsSinkDataEqualTo(amSink), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerSink(sink, callStatus, sinkID, error);
+
+ usleep(50000);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( sinkID, TEST_ID_1 );
+ ASSERT_TRUE( backdoor.containsSinkWithID( (const am_sourceID_t)TEST_ID_1) );
+
+ initSink(sink, amSink, TEST_ID_1, 0);
+ EXPECT_CALL(*env->mpRoutingReceive, registerSink(IsSinkDataEqualTo(amSink), _)).WillOnce(DoAll(actionRegister2(), Return(E_OK)));
+ env->mProxy->registerSink(sink, callStatus, sinkID, error);
+
+ usleep(50000);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( sinkID, TEST_ID_2 );
+ ASSERT_TRUE( backdoor.containsSinkWithID( (const am_sourceID_t)TEST_ID_2) );
+ ASSERT_TRUE( backdoor.sinksCount()==2 );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_setDomainState)
+{
+//todo: Decide how to test
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSourceState)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sourceID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSOURCESTATE, 20};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceState(IsHandleEqual(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSourceState(handle, sID, state);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSourceVolume)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sourceID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_volume_t volume = 50;
+ am_time_t time = 10;
+ am_RampType_e ramp = am_RampType_e::RAMP_GENIVI_DIRECT;
+ am_Handle_s handle = {H_SETSOURCEVOLUME, 20};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceVolumeChange(IsHandleEqual(handle), volume, E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSourceVolume(handle, sID, volume, ramp, time);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_registerCrossfader)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ am_gen::am_crossfaderID_t crossfaderID = 0;
+ am_gen::crossfaderData_s crossfaderData;
+ am_Crossfader_s amCrossfaderData;
+ initCrossfader(crossfaderData, amCrossfaderData, crossfaderID);
+
+ ON_CALL(*env->mpRoutingReceive, registerCrossfader(_, _)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, registerCrossfader(IsCrossfaderDataEqualTo(amCrossfaderData), _)).WillOnce(DoAll(actionRegister(), Return(E_OK)));
+ env->mProxy->registerCrossfader(crossfaderData, callStatus, crossfaderID, error);
+
+ usleep(50000);
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( crossfaderID, TEST_ID_1 );
+ ASSERT_TRUE( backdoor.containsCrossfader( TEST_ID_1) );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSinkVolume)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sinkID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_volume_t volume = 50;
+ am_time_t time = 10;
+ am_RampType_e ramp = am_RampType_e::RAMP_GENIVI_DIRECT;
+ am_Handle_s handle = {H_SETSINKVOLUME, 20};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSinkVolumeChange(IsHandleEqual(handle), volume, E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSinkVolume(handle, sID, volume, ramp, time);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncConnect)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+// const am_gen::am_domainID_t domainID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsSinkWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsSourceWithID( TEST_ID_1 ));
+
+ am_gen::am_connectionID_t connectionID = TEST_ID_1;
+ am_Handle_s handle = {H_CONNECT, 20};
+ am_ConnectionFormat_e cf = am_ConnectionFormat_e::CF_GENIVI_STEREO;
+ EXPECT_CALL(*env->mpRoutingReceive, ackConnect(IsHandleEqual(handle), connectionID, E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncConnect(handle, connectionID, TEST_ID_1, TEST_ID_1, cf);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle ) );
+ ASSERT_EQ( backdoor.connectionsCount( ) , 1 );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncDisconnect)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsConnection( TEST_ID_1 ));
+
+ am_gen::am_connectionID_t connectionID = TEST_ID_1;
+ am_Handle_s handle = {H_DISCONNECT, 20};
+ am_ConnectionFormat_e cf = am_ConnectionFormat_e::CF_GENIVI_STEREO;
+ EXPECT_CALL(*env->mpRoutingReceive, ackDisconnect(IsHandleEqual(handle), connectionID, E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncDisconnect(handle, connectionID);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle ) );
+ ASSERT_FALSE( backdoor.containsConnection( TEST_ID_1 ) );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncAbort)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sourceID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_volume_t volume = 50;
+ am_Handle_s handle = {H_SETSOURCESTATE, 200};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+
+ //we set an abort handle in order to test the return status
+ env->mDomainService->setAbortHandle(handle.handle);
+
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceState(IsHandleEqual(handle), E_ABORTED)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSourceState(handle, sID, state);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+MATCHER_P(IsListMainSoundPropertiesEqualTo, value, "") {
+ auto lh = arg;
+
+ bool bMainSoundProperties = lh.size() == value.size();
+ for(int i=0; i<lh.size(); i++)
+ {
+ bMainSoundProperties &= (lh.at(i).type==value.at(i).type &&
+ lh.at(i).value==value.at(i).value);
+ }
+ return bMainSoundProperties;
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSinkSoundProperties)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sinkID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_Handle_s handle = {H_SETSINKSOUNDPROPERTIES, 200};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+
+ std::vector<am_SoundProperty_s> listSoundProperties;
+ listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_INTERR_OVERLAYID, 100});
+ listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_MAX, 101});
+ listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_PRIORITY, 100});
+
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSinkSoundProperties(IsHandleEqual(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSinkSoundProperties(handle, sID, listSoundProperties);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSinkSoundProperty)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sinkID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_Handle_s handle = {H_SETSINKSOUNDPROPERTY, 200};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSinkSoundProperty(IsHandleEqual(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSinkSoundProperty(handle, sID, (am_SoundProperty_s){am_SoundPropertyType_e::SP_INTERR_OVERLAYID, 100});
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSourceSoundProperties)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sourceID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_Handle_s handle = {H_SETSOURCESOUNDPROPERTIES, 200};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+
+ std::vector<am_SoundProperty_s> listSoundProperties;
+ listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_INTERR_OVERLAYID, 100});
+ listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_MAX, 101});
+ listSoundProperties.push_back((am_SoundProperty_s){am_SoundPropertyType_e::SP_PRIORITY, 100});
+
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceSoundProperties(IsHandleEqual(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSourceSoundProperties(handle, sID, listSoundProperties);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSourceSoundProperty)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_domainID_t domainID = TEST_ID_1;
+ const am_gen::am_sourceID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( (const am_domainID_t)domainID) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( (const am_sourceID_t)sID) );
+
+ am_Handle_s handle = {H_SETSOURCESOUNDPROPERTY, 200};
+ am_SourceState_e state = am_SourceState_e::SS_MAX;
+
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetSourceSoundProperty(IsHandleEqual(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSourceSoundProperty(handle, sID, (am_SoundProperty_s){am_SoundPropertyType_e::SP_INTERR_OVERLAYID, 100});
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncCrossFade)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ const am_gen::am_crossfaderID_t sID = TEST_ID_1;
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsSourceWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsCrossfader( TEST_ID_1 ));
+
+ am_Handle_s handle = {H_CROSSFADE, 200};
+ am_RampType_e state = am_RampType_e::RAMP_GENIVI_DIRECT;
+ am_HotSink_e hotSink = HS_UNKNOWN;
+ EXPECT_CALL(*env->mpRoutingReceive, ackCrossFading(IsHandleEqual(handle), hotSink, E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncCrossFade(handle, sID, hotSink, state, 50);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSinkNotificationConfiguration)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsSinkWithID( TEST_ID_1 ));
+
+ am_Handle_s handle = {H_CONNECT, 200};
+ am_NotificationConfiguration_s nc = (am_NotificationConfiguration_s){am_NotificationType_e::NT_MAX, am_NotificationStatus_e::NS_MAX};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSinkNotificationConfiguration(IsHandleStructEqualTo(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSinkNotificationConfiguration(handle, TEST_ID_1, nc);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetSourceNotificationConfiguration)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_1 ));
+ ASSERT_TRUE( backdoor.containsSinkWithID( TEST_ID_1 ));
+
+ am_Handle_s handle = {H_CONNECT, 200};
+ am_NotificationConfiguration_s nc = (am_NotificationConfiguration_s){am_NotificationType_e::NT_MAX, am_NotificationStatus_e::NS_MAX};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSourceNotificationConfiguration(IsHandleStructEqualTo(handle), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetSourceNotificationConfiguration(handle, TEST_ID_1, nc);
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+ }
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_asyncSetVolumes)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_1) );
+ ASSERT_TRUE( backdoor.containsSourceWithID( TEST_ID_1) );
+
+ am_gen::am_Volumes_l listVolumes;
+ am_gen::am_DataType_u dt(static_cast<am_gen::am_sourceID_t>(TEST_ID_1));
+ listVolumes.push_back(am_gen::am_Volumes_s(am_gen::am_VolumeType_e::VT_SOURCE,
+ dt,
+ 50,
+ am_gen::am_RampType_e::RAMP_GENIVI_DIRECT,
+ 50));
+
+ std::vector<am_Volumes_s> am_listVolumes;
+ am_DataType_u dt1;
+ dt1.source = TEST_ID_2;
+ am_listVolumes.push_back((am_Volumes_s){am_VolumeType_e::VT_SOURCE,
+ dt1,
+ 50,
+ am_RampType_e::RAMP_GENIVI_DIRECT,
+ 50});
+
+ am_Handle_s handle = {H_SETVOLUMES, 200};
+ EXPECT_CALL(*env->mpRoutingReceive, ackSetVolumes(IsHandleStructEqualTo(handle), IsSinkVolumeArrayEqualTo(am_listVolumes, false), E_OK)).Times(1);
+ am_Error_e error = env->mpPlugin->asyncSetVolumes(handle, am_listVolumes);
+
+ usleep(50000);
+ ASSERT_EQ( error, E_OK );
+ ASSERT_FALSE( backdoor.containsHandle( handle.handle) );
+
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_deregisterSink)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_sinkID_t sinkID = TEST_ID_2;
+
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsSinkWithID( sinkID ));
+
+ ON_CALL(*env->mpRoutingReceive, deregisterSink(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterSink(sinkID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterSink(sinkID, callStatus, error);
+ usleep(50000);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_FALSE( backdoor.containsSinkWithID( sinkID ));
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_deregisterSource)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_sourceID_t sID = TEST_ID_2;
+
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsSourceWithID( sID ));
+
+ ON_CALL(*env->mpRoutingReceive, deregisterSource(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterSource(sID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterSource(sID, callStatus, error);
+ usleep(50000);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_FALSE( backdoor.containsSourceWithID( sID ));
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_deregisterCrossfader)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+ am_gen:am_crossfaderID_t sID = TEST_ID_1;
+
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsCrossfader( sID ));
+
+ ON_CALL(*env->mpRoutingReceive, deregisterCrossfader(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterCrossfader(sID)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterCrossfader(sID, callStatus, error);
+ usleep(50000);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_FALSE( backdoor.containsCrossfader( sID ));
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
+
+TEST_F(CAmRoutingSenderCAPITests, TestDomain_deregisterDomain)
+{
+ ASSERT_TRUE(env->mIsServiceAvailable);
+ if(env->mIsServiceAvailable)
+ {
+ IAmRoutingSenderBackdoor backdoor(env->mpPlugin);
+ ASSERT_TRUE( backdoor.containsDomainWithID( TEST_ID_2 ));
+ CallStatus callStatus = CallStatus::NOT_AVAILABLE;
+ am_gen::am_Error_e error = am_gen::am_Error_e::E_UNKNOWN;
+
+ ON_CALL(*env->mpRoutingReceive, deregisterDomain(_)).WillByDefault(Return(E_OK));
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterDomain(TEST_ID_2)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterDomain(TEST_ID_2, callStatus, error);
+ usleep(50000);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_EQ( backdoor.domainsCount(), 1 );
+ ASSERT_FALSE( backdoor.containsDomainWithID( TEST_ID_2 ));
+
+ EXPECT_CALL(*env->mpRoutingReceive, deregisterDomain(TEST_ID_1)).WillOnce(Return(E_OK));
+ env->mProxy->deregisterDomain(TEST_ID_1, callStatus, error);
+ usleep(50000);
+ ASSERT_EQ( error, am_gen::am_Error_e::E_OK );
+ ASSERT_EQ( callStatus, CallStatus::SUCCESS );
+ ASSERT_FALSE( backdoor.containsDomainWithID( TEST_ID_1 ));
+ ASSERT_EQ( backdoor.domainsCount(), 0 );
+ ASSERT_EQ( backdoor.sourcesCount(), 0 );
+ ASSERT_EQ( backdoor.sinksCount(), 0 );
+ ASSERT_EQ( backdoor.crossfadersCount(), 0 );
+ ASSERT_EQ( backdoor.connectionsCount(), 0 );
+ }
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(env->mpRoutingReceive));
+}
diff --git a/PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.h b/PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.h
new file mode 100644
index 0000000..ee7cc1d
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CAmRoutingInterfaceCAPITests.h
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+
+#ifndef ROUTINGINTERFACETEST_H_
+#define ROUTINGINTERFACETEST_H_
+
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "shared/CAmSocketHandler.h"
+#include "CAmTestCAPIWrapper.h"
+#include "../include/CAmRoutingSenderCAPI.h"
+#include "MockIAmRoutingReceive.h"
+#include <../src-gen/org/genivi/audiomanager/RoutingInterfaceProxy.h>
+
+#define UNIT_TEST 1
+
+using namespace testing;
+using namespace CommonAPI;
+namespace am {
+
+using namespace org::genivi::audiomanager;
+
+class CAmCommandSenderDbusBackdoor;
+class IAmCommandSend;
+class CAmRoutingSenderService;
+
+/** Global test environment which sets the routing interface service and test domain service for all tests.
+ * The tests are executed after the connection have been successful established.
+ * If the connection is not available for some reason all tests will fail.
+ */
+class CAmTestsEnvironment : public ::testing::Environment
+{
+ pthread_t mListenerThread; ///< supporting sync thread
+ pthread_t mServicePThread; ///< plugin's thread
+ pthread_t mClientPThread; ///< thread for the routing interface proxy and test domain stub
+
+public:
+ bool mIsProxyInitilized;
+ bool mIsServiceAvailable;
+ bool mIsDomainAvailable;
+ CAmSocketHandler *mSocketHandlerService;
+ CAmSocketHandler *mSocketHandlerClient;
+ MockIAmRoutingReceive *mpRoutingReceive;
+ CAmRoutingSenderCAPI *mpPlugin;
+
+ std::shared_ptr<RoutingInterfaceProxy<>> mProxy; ///< pointer to routing interface proxy
+ std::shared_ptr<CAmRoutingSenderService> mDomainService; ///< pointer to the test domain service
+
+ CAmTestsEnvironment();
+ ~CAmTestsEnvironment();
+ void SetUp();
+ // Override this to define how to tear down the environment.
+ void TearDown();
+ void onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus);
+};
+
+/**
+ * Common tests - types and calls matching
+ */
+class CAmRoutingInterfaceCAPITests :public ::testing::Test
+{
+
+public:
+ CAmRoutingInterfaceCAPITests();
+ ~CAmRoutingInterfaceCAPITests();
+
+ void SetUp();
+ void TearDown();
+
+};
+
+/**
+ * Domain tests - connection to domain, registrations, deregistrations, lookups.
+ */
+class CAmRoutingSenderCAPITests :public ::testing::Test
+{
+
+public:
+ CAmRoutingSenderCAPITests();
+ ~CAmRoutingSenderCAPITests();
+
+ void SetUp();
+ void TearDown();
+
+};
+
+}
+
+#endif /* ROUTINGINTERFACETEST_H_ */
diff --git a/PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.cpp b/PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.cpp
new file mode 100644
index 0000000..3f2c7b3
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.cpp
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#include <stdint.h>
+#include <limits.h>
+#include "shared/CAmCommonAPIWrapper.h"
+#include "shared/CAmDltWrapper.h"
+#include "CAmRoutingSenderService.h"
+
+
+namespace am {
+
+#define CAPI_SENDER_ADDRESS "local:" CAPI_SENDER_INTERFACE ":" CAPI_SENDER_INSTANCE
+#define CAPI_ROUTING_ADDRESS "local:" CAPI_ROUTING_INTERFACE ":" CAPI_ROUTING_INSTANCE
+
+const char * CAmRoutingSenderService::ROUTING_SENDER_SERVICE = CAPI_SENDER_ADDRESS;
+const char * CAmRoutingSenderService::ROUTING_INTERFACE_SERVICE = CAPI_ROUTING_ADDRESS;
+
+CAmRoutingSenderService::CAmRoutingSenderService(CAmCommonAPIWrapper * aWrapper):
+ mDomainData(), mAbortedHandle(UINT_MAX), mIsDomainRegistred(false), mIsServiceAvailable(0), mIsReady(0), mpWrapper(aWrapper), mRoutingInterfaceProxy(NULL)
+{
+
+}
+
+CAmRoutingSenderService::CAmRoutingSenderService():
+ mDomainData(), mAbortedHandle(UINT_MAX), mIsDomainRegistred(false), mIsServiceAvailable(0), mIsReady(0), mpWrapper(NULL), mRoutingInterfaceProxy(NULL) {
+ // TODO Auto-generated constructor stub
+
+}
+
+CAmRoutingSenderService::CAmRoutingSenderService(CAmCommonAPIWrapper * aWrapper, std::shared_ptr<RoutingInterfaceProxy<> > aProxy):
+ mDomainData(), mAbortedHandle(UINT_MAX), mIsDomainRegistred(false), mIsServiceAvailable(0), mIsReady(0), mpWrapper(aWrapper), mRoutingInterfaceProxy(aProxy)
+{
+ mRoutingInterfaceProxy->getProxyStatusEvent().subscribe(std::bind(&CAmRoutingSenderService::onServiceStatusEvent,this,std::placeholders::_1));
+ mRoutingInterfaceProxy->getSetRoutingReadyEvent().subscribe(std::bind(&CAmRoutingSenderService::onRoutingReadyEvent,this));
+ mRoutingInterfaceProxy->getSetRoutingRundownEvent().subscribe(std::bind(&CAmRoutingSenderService::onRoutingReadyRundown,this));
+}
+
+CAmRoutingSenderService::~CAmRoutingSenderService() {
+ mpWrapper = NULL;
+ if(mRoutingInterfaceProxy)
+ mRoutingInterfaceProxy.reset();
+}
+
+void CAmRoutingSenderService::onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus)
+{
+ logInfo(__PRETTY_FUNCTION__);
+ std::stringstream avail;
+ avail << "(" << static_cast<int>(serviceStatus) << ")";
+ logInfo("Domain test service status changed to ", avail.str());
+ std::cout << std::endl << "Domain test service status changed to " << avail.str() << std::endl;
+ if(serviceStatus==CommonAPI::AvailabilityStatus::AVAILABLE)
+ {
+ mIsServiceAvailable = true;
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->getRoutingReadyState(callStatus, mIsReady);
+ }
+ else
+ {
+ mIsDomainRegistred = false;
+ mIsServiceAvailable = false;
+ mIsReady = false;
+ }
+}
+
+void CAmRoutingSenderService::onRoutingReadyEvent()
+{
+ logInfo(__PRETTY_FUNCTION__);
+ mIsReady = true;
+}
+
+void CAmRoutingSenderService::onRoutingReadyRundown()
+{
+ logInfo(__PRETTY_FUNCTION__);
+ mIsReady = true;
+ mIsDomainRegistred = false;
+}
+
+void CAmRoutingSenderService::setAbortHandle(uint16_t handle)
+{
+ mAbortedHandle = handle;
+}
+
+void CAmRoutingSenderService::registerDomain()
+{
+ if( mIsDomainRegistred || !mIsServiceAvailable || !mIsReady )
+ return;
+ mIsDomainRegistred = true;
+ logInfo(__PRETTY_FUNCTION__,"start registering Domain...");
+ am_gen::am_Error_e error;
+ mDomainData.name = "TestDomain";
+ mDomainData.busname ="TestDomain";
+ mDomainData.complete = true;
+ mDomainData.domainID = 0;
+ mDomainData.early = false;
+ mDomainData.nodename = "Test";
+ mDomainData.state = am_gen::am_DomainState_e::DS_CONTROLLED;
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->registerDomain(mDomainData,
+ CAPI_SENDER_INSTANCE,
+ CAPI_SENDER_PATH,
+ CAPI_SENDER_INTERFACE,
+ callStatus,
+ mDomainData.domainID,
+ error);
+ logInfo("Domain: got domainID", mDomainData.domainID);
+}
+
+uint16_t CAmRoutingSenderService::errorForHandle(const uint16_t & handle)
+{
+ uint16_t error = E_OK;
+ if(handle==mAbortedHandle && mAbortedHandle!=UINT_MAX)
+ {
+ error = (uint16_t)am_gen::am_Error_e::E_ABORTED;
+ mAbortedHandle = UINT_MAX;
+ }
+ return error;
+}
+
+void CAmRoutingSenderService::asyncSetSourceState(uint16_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SourceState_e sourceState) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSourceState(handle, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::setDomainState(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState, am_gen::am_Error_e& error) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ error = am_gen::am_Error_e::E_OK;
+ mRoutingInterfaceProxy->hookDomainStateChange(domainID, domainState, callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSourceVolume(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSourceVolume(handle, volume, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSinkVolume(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSinkVolume(handle, volume, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncConnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID, am_gen::am_sourceID_t sourceID, am_gen::am_sinkID_t sinkID, am_gen::am_ConnectionFormat_e connectionFormat) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackConnect(handle, connectionID, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncDisconnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackDisconnect(handle, connectionID, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncAbort(am_gen::am_handle_t handle, am_gen::am_Error_e& error) {
+ logInfo(__FUNCTION__, " called");
+ mAbortedHandle = handle;
+ error = am_gen::am_Error_e::E_OK;
+}
+
+void CAmRoutingSenderService::asyncSetSinkSoundProperties(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_L listSoundProperties) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSinkSoundProperties(handle, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSinkSoundProperty(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_s soundProperty) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSinkSoundProperty(handle, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSourceSoundProperties(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_L listSoundProperties) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSourceSoundProperties(handle, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSourceSoundProperty(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_s soundProperty) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetSourceSoundProperty(handle, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncCrossFade(am_gen::am_handle_t handle, am_gen::am_crossfaderID_t crossfaderID, am_gen::am_HotSink_e hotSink, am_gen::am_RampType_e rampType, am_gen::am_time_t time) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackCrossFading(handle, hotSink, (am_gen::am_Error_e)errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetVolumes(am_gen::am_handle_t handle, am_gen::am_Volumes_l volumes) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSetVolumes(handle, volumes, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSinkNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_NotificationConfiguration_s notificationConfiguration) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSinkNotificationConfiguration(handle, errorForHandle(handle), callStatus);
+}
+
+void CAmRoutingSenderService::asyncSetSourceNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_NotificationConfiguration_s notificationConfiguration) {
+ logInfo(__FUNCTION__, " called");
+ CommonAPI::CallStatus callStatus;
+ mRoutingInterfaceProxy->ackSourceNotificationConfiguration(handle, errorForHandle(handle), callStatus);
+}
+
+} /* namespace org */
diff --git a/PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.h b/PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.h
new file mode 100644
index 0000000..36ae646
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CAmRoutingSenderService.h
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAMROUTINGSENDERSERVICE_H_
+#define CAMROUTINGSENDERSERVICE_H_
+
+#include "audiomanagertypes.h"
+#include <org/genivi/audiomanager/RoutingSenderStubDefault.h>
+#include <org/genivi/audiomanager/RoutingInterfaceProxy.h>
+
+/**
+ * GENERATED FROM CMAKE. PLEASE USE cmake/CAmRoutingSenderService.h.in IF YOU WANT TO MAKE CHANGES.
+ */
+
+namespace am {
+
+using namespace CommonAPI;
+using namespace org::genivi::audiomanager;
+
+class CAmCommonAPIWrapper;
+
+/**
+ * THE FOLLOWING DEFINES ARE POPULATED FROM THE CMAKELISTS.TXT .
+ */
+#define CAPI_SENDER_INTERFACE "org.genivi.audiomanger.routingsender"
+#define CAPI_SENDER_INSTANCE "org.genivi.routingsender"
+#define CAPI_SENDER_PATH "/org/genivi/audiomanger/routingsender"
+
+#define CAPI_ROUTING_INTERFACE "org.genivi.audiomanger.routinginterface"
+#define CAPI_ROUTING_INSTANCE "org.genivi.audiomanger"
+#define CAPI_ROUTING_PATH "/org/genivi/audiomanger/routinginterface"
+
+
+/** Test class implementing the routing sender service.
+*
+* Please see cmake/CAmRoutingSenderService.h.in
+*/
+class CAmRoutingSenderService : public RoutingSenderStubDefault {
+
+ am_gen::am_Domain_s mDomainData;
+ uint16_t mAbortedHandle;
+ bool mIsServiceAvailable;
+ bool mIsDomainRegistred;
+ bool mIsReady;
+ CAmCommonAPIWrapper *mpWrapper;
+ std::shared_ptr<RoutingInterfaceProxy<> > mRoutingInterfaceProxy;
+
+public:
+
+ CAmRoutingSenderService();
+ CAmRoutingSenderService(CAmCommonAPIWrapper * aWrapper);
+ CAmRoutingSenderService(CAmCommonAPIWrapper * aWrapper, std::shared_ptr<RoutingInterfaceProxy<> > aProxy);
+ virtual ~CAmRoutingSenderService();
+
+ void onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus);
+ void onRoutingReadyRundown();
+ void onRoutingReadyEvent();
+ void registerDomain();
+ void setAbortHandle(uint16_t handle);
+ uint16_t errorForHandle(const uint16_t & handle);
+
+ virtual void asyncSetSourceState(uint16_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SourceState_e sourceState);
+
+ virtual void setDomainState(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState, am_gen::am_Error_e& error);
+
+ virtual void asyncSetSourceVolume(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time);
+
+ virtual void asyncSetSinkVolume(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time);
+
+ virtual void asyncConnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID, am_gen::am_sourceID_t sourceID, am_gen::am_sinkID_t sinkID, am_gen::am_ConnectionFormat_e connectionFormat);
+
+ virtual void asyncDisconnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID);
+
+ virtual void asyncAbort(am_gen::am_handle_t handle, am_gen::am_Error_e& error);
+
+ virtual void asyncSetSinkSoundProperties(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_L listSoundProperties);
+
+ virtual void asyncSetSinkSoundProperty(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_s soundProperty);
+
+ virtual void asyncSetSourceSoundProperties(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_L listSoundProperties);
+
+ virtual void asyncSetSourceSoundProperty(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_s soundProperty);
+
+ virtual void asyncCrossFade(am_gen::am_handle_t handle, am_gen::am_crossfaderID_t crossfaderID, am_gen::am_HotSink_e hotSink, am_gen::am_RampType_e rampType, am_gen::am_time_t time);
+
+ virtual void asyncSetVolumes(am_gen::am_handle_t handle, am_gen::am_Volumes_l volumes);
+
+ virtual void asyncSetSinkNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_NotificationConfiguration_s notificationConfiguration);
+
+ virtual void asyncSetSourceNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_NotificationConfiguration_s notificationConfiguration);
+
+ static const char * ROUTING_SENDER_SERVICE;
+ static const char * ROUTING_INTERFACE_SERVICE;
+};
+
+
+} /* namespace am */
+#endif /* CAMROUTINGSENDERSERVICE_H_ */
diff --git a/PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.cpp b/PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.cpp
new file mode 100644
index 0000000..6134d62
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.cpp
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#include "CAmTestCAPIWrapper.h"
+
+namespace am {
+
+CAmTestCAPIWrapper::CAmTestCAPIWrapper(CAmSocketHandler* socketHandler):CAmCommonAPIWrapper(socketHandler)
+{
+
+}
+
+CAmTestCAPIWrapper::~CAmTestCAPIWrapper() {
+ // TODO Auto-generated destructor stub
+}
+
+} /* namespace am */
diff --git a/PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.h b/PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.h
new file mode 100644
index 0000000..90499f9
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CAmTestCAPIWrapper.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAMTESTCAPIWRAPPER_H_
+#define CAMTESTCAPIWRAPPER_H_
+
+#include "shared/CAmCommonAPIWrapper.h"
+
+namespace am {
+
+class CAmTestCAPIWrapper: public am::CAmCommonAPIWrapper {
+public:
+ CAmTestCAPIWrapper(CAmSocketHandler* socketHandler);
+ virtual ~CAmTestCAPIWrapper();
+};
+
+} /* namespace am */
+#endif /* CAMTESTCAPIWRAPPER_H_ */
diff --git a/PluginRoutingInterfaceCAPI/test/CMakeLists.txt b/PluginRoutingInterfaceCAPI/test/CMakeLists.txt
new file mode 100644
index 0000000..26cdecf
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/CMakeLists.txt
@@ -0,0 +1,135 @@
+# Copyright (c) 2012 GENIVI Alliance
+# Copyright (c) 2012 BMW
+#
+# author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+#
+# copyright
+# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+# THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# For further information see http://www.genivi.org/.
+#
+
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(CAmRoutingInterfaceCAPITests)
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w -g -DUNIT_TEST=1 -DDLT_CONTEXT=AudioManager")
+
+string (REPLACE "-g -Wall -Wextra" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+string (REPLACE "-pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+
+set(STD_INCLUDE_DIRS "/usr/include")
+set(EXECUTABLE_OUTPUT_PATH ${TEST_EXECUTABLE_OUTPUT_PATH})
+
+FIND_PACKAGE(Threads)
+FIND_PACKAGE(PkgConfig)
+FIND_PACKAGE(PythonLibs REQUIRED)
+pkg_check_modules(PC_COMMON REQUIRED CommonAPI)
+pkg_check_modules(PC_COMMON_DBUS REQUIRED CommonAPI-DBus)
+
+IF(WITH_DLT)
+ pkg_check_modules(DLT REQUIRED automotive-dlt>=2.2.0)
+ENDIF(WITH_DLT)
+
+INCLUDE_DIRECTORIES(
+ ${STD_INCLUDE_DIRS}
+ ${CMAKE_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${AUDIO_INCLUDE_FOLDER}
+ ${CMAKE_SOURCE_DIR}
+ ${DLT_INCLUDE_DIRS}
+ ${PC_COMMON_INCLUDE_DIRS}
+ ${PC_COMMON_DBUS_INCLUDE_DIRS}
+ ${INCLUDE_FOLDER}
+ ${PYTHON_INCLUDE_DIRS}
+ ${GOOGLE_TEST_INCLUDE_DIR}
+ ${GMOCK_INCLUDE_DIR}
+ "../../AudioManagerDaemon/include"
+ "../include"
+)
+
+link_directories(
+ ${LINK_DIRECTORIES}
+ ${PC_COMMON_LIBRARY_DIRS}
+ ${PC_COMMON_DBUS_LIBRARY_DIRS}
+)
+
+file(GLOB CAPI_PLUGIN_INTERFACE_SRCS_CXX
+ "../../AudioManagerDaemon/src/CAmCommonAPIWrapper.cpp"
+ "../../AudioManagerDaemon/src/CAmSocketHandler.cpp"
+ "../../AudioManagerDaemon/src/CAmDltWrapper.cpp"
+ "../src/*.cpp"
+ "CAmRoutingInterfaceCAPITests.cpp"
+ "CAmTestCAPIWrapper.cpp"
+ "CAmCommandSenderCommon.cpp"
+ "CAmRoutingSenderService.cpp"
+ "IAmRoutingSenderBackdoor.cpp"
+)
+
+file(GLOB_RECURSE CAPI_PLUGIN_INTERFACE_GEN_SRCS_CXX
+ "../src-gen/*.cpp"
+)
+
+set (CAPI_SENDER_INTERFACE "org.genivi.audiomanger.routingsender")
+set (CAPI_SENDER_INSTANCE "org.genivi.routingsender")
+set (CAPI_SENDER_PATH "/org/genivi/audiomanger/routingsender")
+
+set (CAPI_SENDER_INTERFACE_H "\"${CAPI_SENDER_INTERFACE}\"")
+set (CAPI_SENDER_INSTANCE_H "\"${CAPI_SENDER_INSTANCE}\"")
+set (CAPI_SENDER_PATH_H "\"${CAPI_SENDER_PATH}\"")
+
+set (CAPI_ROUTING_INTERFACE "org.genivi.audiomanger.routinginterface")
+set (CAPI_ROUTING_INSTANCE "org.genivi.audiomanger")
+set (CAPI_ROUTING_PATH "/org/genivi/audiomanger/routinginterface")
+
+set (CAPI_ROUTING_INTERFACE_H "\"${CAPI_ROUTING_INTERFACE}\"")
+set (CAPI_ROUTING_INSTANCE_H "\"${CAPI_ROUTING_INSTANCE}\"")
+set (CAPI_ROUTING_PATH_H "\"${CAPI_ROUTING_PATH}\"")
+
+
+ADD_EXECUTABLE(AmRoutingInterfaceCAPITests ${CAPI_PLUGIN_INTERFACE_SRCS_CXX} ${CAPI_PLUGIN_INTERFACE_GEN_SRCS_CXX})
+
+TARGET_LINK_LIBRARIES(AmRoutingInterfaceCAPITests
+ ${DLT_LIBRARIES}
+ ${CMAKE_DL_LIBS}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${PYTHON_LIBRARY}
+ ${PC_GSTREAMER_LIBRARIES}
+ ${PC_COMMON_LIBRARIES}
+ ${PC_COMMON_DBUS_LIBRARIES}
+ gtest
+ gmock
+)
+
+add_custom_command(
+ PRE_BUILD
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/CAmRoutingSenderService.h
+ COMMAND generateheader ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CAmRoutingSenderService.h.in ${CMAKE_CURRENT_SOURCE_DIR}/CAmRoutingSenderService.h
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CAmRoutingSenderService.h.in
+)
+
+CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/RoutingSender_dbus.conf.in ${CMAKE_CURRENT_SOURCE_DIR}/RoutingSender_dbus.conf)
+CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CAmRoutingSenderService.h.in ${CMAKE_CURRENT_SOURCE_DIR}/CAmRoutingSenderService.h)
+
+FILE(READ ${CMAKE_CURRENT_SOURCE_DIR}/RoutingSender_dbus.conf ROUTING_TESTDOMAININTERFACE_DBUS_CONF)
+CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/AmRoutingInterfaceCAPITests_dbus.conf.in ${EXECUTABLE_OUTPUT_PATH}/AmRoutingInterfaceCAPITests_dbus.conf)
+CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/AmRoutingInterfaceCAPITests_dbus.conf.in ${EXECUTABLE_OUTPUT_PATH}/AmRoutingSenderTestDomain_dbus.conf)
+
+INSTALL(TARGETS AmRoutingInterfaceCAPITests
+ DESTINATION "~/AudioManagerTest/"
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT tests
+)
+
+#execute_process(
+# COMMAND cp "${CMAKE_SOURCE_DIR}/PluginCommandInterfaceCAPI/fidls/PluginCommandInterfaceCAPI_dbus.conf" ${EXECUTABLE_OUTPUT_PATH})
+
+SET(ADD_DEPEND "audiomanager-bin" "sqlite3(>=3.6.22)" "dlt" "gtest" "libpthread-stubs0")
+set_property(GLOBAL APPEND PROPERTY tests_prop "${ADD_DEPEND}")
+
diff --git a/PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.cpp b/PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.cpp
new file mode 100644
index 0000000..945a5e9
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.cpp
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#include "IAmRoutingSenderBackdoor.h"
+#include "../include/CAmRoutingSenderCAPI.h"
+
+
+namespace am {
+
+bool IAmRoutingSenderBackdoor::containsDomainWithID(const am_domainID_t & domainID)
+{
+ return NULL!=routingSender->mLookupData.getValueForKey(domainID, routingSender->mLookupData.mMapDomains);
+}
+
+bool IAmRoutingSenderBackdoor::containsSourceWithID(const am_sourceID_t & sourceID)
+{
+ return NULL!=routingSender->mLookupData.getValueForKey(sourceID, routingSender->mLookupData.mMapSources);
+}
+
+bool IAmRoutingSenderBackdoor::containsSinkWithID(const am_sinkID_t & sinkID)
+{
+ return NULL!=routingSender->mLookupData.getValueForKey(sinkID, routingSender->mLookupData.mMapSinks);
+}
+
+bool IAmRoutingSenderBackdoor::containsCrossfader(const am_crossfaderID_t & crossfaderID)
+{
+ return routingSender->mLookupData.mMapCrossfaders.find(crossfaderID)!=routingSender->mLookupData.mMapCrossfaders.end();
+}
+
+bool IAmRoutingSenderBackdoor::containsHandle(const uint16_t & handle)
+{
+ return routingSender->mLookupData.mMapHandles.find(handle)!=routingSender->mLookupData.mMapHandles.end();
+}
+
+bool IAmRoutingSenderBackdoor::containsConnection(const am_connectionID_t & connID)
+{
+ return NULL!=routingSender->mLookupData.getValueForKey(connID, routingSender->mLookupData.mMapConnections);
+}
+
+unsigned IAmRoutingSenderBackdoor::domainsCount()
+{
+ return routingSender->mLookupData.mMapDomains.size();
+}
+
+unsigned IAmRoutingSenderBackdoor::sourcesCount()
+{
+ return routingSender->mLookupData.mMapSources.size();
+}
+
+unsigned IAmRoutingSenderBackdoor::sinksCount()
+{
+ return routingSender->mLookupData.mMapSinks.size();
+}
+
+unsigned IAmRoutingSenderBackdoor::crossfadersCount()
+{
+ return routingSender->mLookupData.mMapCrossfaders.size();
+}
+
+unsigned IAmRoutingSenderBackdoor::handlesCount()
+{
+ return routingSender->mLookupData.mMapHandles.size();
+}
+
+unsigned IAmRoutingSenderBackdoor::connectionsCount()
+{
+ return routingSender->mLookupData.mMapConnections.size();
+}
+
+
+}
+
+
diff --git a/PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.h b/PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.h
new file mode 100644
index 0000000..80d0f4e
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/IAmRoutingSenderBackdoor.h
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+
+#ifndef ROUTINGSENDERINTERFACEBACKDOOR_H_
+#define ROUTINGSENDERINTERFACEBACKDOOR_H_
+
+#include "audiomanagertypes.h"
+
+namespace am
+{
+
+class CAmRoutingSenderCAPI;
+
+class IAmRoutingSenderBackdoor
+{
+ CAmRoutingSenderCAPI *routingSender;
+public:
+ IAmRoutingSenderBackdoor():routingSender(NULL){};
+ IAmRoutingSenderBackdoor(CAmRoutingSenderCAPI *aSender):routingSender(aSender){};
+ virtual ~IAmRoutingSenderBackdoor(){routingSender=NULL;};
+
+ bool containsDomainWithID(const am_domainID_t & domainID);
+ bool containsSourceWithID(const am_sourceID_t & sourceID);
+ bool containsSinkWithID(const am_sinkID_t & sinkID);
+ bool containsCrossfader(const am_crossfaderID_t & crossfaderID);
+ bool containsHandle(const uint16_t & handle);
+ bool containsConnection(const am_connectionID_t & connID);
+ unsigned domainsCount();
+ unsigned sourcesCount();
+ unsigned sinksCount();
+ unsigned crossfadersCount();
+ unsigned handlesCount();
+ unsigned connectionsCount();
+};
+
+}
+
+#endif /* ROUTINGSENDERINTERFACEBACKDOOR_H_ */
diff --git a/PluginRoutingInterfaceCAPI/test/MockIAmRoutingReceive.h b/PluginRoutingInterfaceCAPI/test/MockIAmRoutingReceive.h
new file mode 100644
index 0000000..77cded1
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/MockIAmRoutingReceive.h
@@ -0,0 +1,126 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef MOCKROUTINGRECEIVENTERFACE_H_
+#define MOCKROUTINGRECEIVENTERFACE_H_
+
+#include "routing/IAmRoutingReceive.h"
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+
+namespace am {
+
+class MockIAmRoutingReceive : public IAmRoutingReceive {
+ public:
+ MOCK_CONST_METHOD1(getInterfaceVersion,
+ void(std::string& version));
+ MOCK_METHOD3(ackConnect,
+ void(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error));
+ MOCK_METHOD3(ackDisconnect,
+ void(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error));
+ MOCK_METHOD3(ackSetSinkVolumeChange,
+ void(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error));
+ MOCK_METHOD3(ackSetSourceVolumeChange,
+ void(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error));
+ MOCK_METHOD2(ackSetSourceState,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(ackSetSinkSoundProperties,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(ackSetSinkSoundProperty,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(ackSetSourceSoundProperties,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(ackSetSourceSoundProperty,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD3(ackCrossFading,
+ void(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error));
+ MOCK_METHOD3(ackSourceVolumeTick,
+ void(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume));
+ MOCK_METHOD3(ackSinkVolumeTick,
+ void(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume));
+ MOCK_METHOD2(peekDomain,
+ am_Error_e(const std::string& name, am_domainID_t& domainID));
+ MOCK_METHOD2(registerDomain,
+ am_Error_e(const am_Domain_s& domainData, am_domainID_t& domainID));
+ MOCK_METHOD1(deregisterDomain,
+ am_Error_e(const am_domainID_t domainID));
+ MOCK_METHOD2(registerGateway,
+ am_Error_e(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID));
+ MOCK_METHOD1(deregisterGateway,
+ am_Error_e(const am_gatewayID_t gatewayID));
+ MOCK_METHOD2(peekSink,
+ am_Error_e(const std::string& name, am_sinkID_t& sinkID));
+ MOCK_METHOD2(registerSink,
+ am_Error_e(const am_Sink_s& sinkData, am_sinkID_t& sinkID));
+ MOCK_METHOD1(deregisterSink,
+ am_Error_e(const am_sinkID_t sinkID));
+ MOCK_METHOD2(peekSource,
+ am_Error_e(const std::string& name, am_sourceID_t& sourceID));
+ MOCK_METHOD2(registerSource,
+ am_Error_e(const am_Source_s& sourceData, am_sourceID_t& sourceID));
+ MOCK_METHOD1(deregisterSource,
+ am_Error_e(const am_sourceID_t sourceID));
+ MOCK_METHOD2(registerCrossfader,
+ am_Error_e(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID));
+ MOCK_METHOD1(deregisterCrossfader,
+ am_Error_e(const am_crossfaderID_t crossfaderID));
+ MOCK_METHOD2(peekSourceClassID,
+ am_Error_e(const std::string& name, am_sourceClass_t& sourceClassID));
+ MOCK_METHOD2(peekSinkClassID,
+ am_Error_e(const std::string& name, am_sinkClass_t& sinkClassID));
+ MOCK_METHOD2(hookInterruptStatusChange,
+ void(const am_sourceID_t sourceID, const am_InterruptState_e interruptState));
+ MOCK_METHOD1(hookDomainRegistrationComplete,
+ void(const am_domainID_t domainID));
+ MOCK_METHOD2(hookSinkAvailablityStatusChange,
+ void(const am_sinkID_t sinkID, const am_Availability_s& availability));
+ MOCK_METHOD2(hookSourceAvailablityStatusChange,
+ void(const am_sourceID_t sourceID, const am_Availability_s& availability));
+ MOCK_METHOD2(hookDomainStateChange,
+ void(const am_domainID_t domainID, const am_DomainState_e domainState));
+ MOCK_METHOD2(hookTimingInformationChanged,
+ void(const am_connectionID_t connectionID, const am_timeSync_t delay));
+ MOCK_METHOD1(sendChangedData,
+ void(const std::vector<am_EarlyData_s>& earlyData));
+ MOCK_CONST_METHOD1(getDBusConnectionWrapper,
+ am_Error_e(CAmDbusWrapper*& dbusConnectionWrapper));
+ MOCK_CONST_METHOD1(getSocketHandler,
+ am_Error_e(CAmSocketHandler*& socketHandler));
+ MOCK_METHOD2(confirmRoutingReady,
+ void(const uint16_t handle, const am_Error_e error));
+ MOCK_METHOD2(confirmRoutingRundown,
+ void(const uint16_t handle, const am_Error_e error));
+ MOCK_METHOD4(updateGateway,
+ am_Error_e(const am_gatewayID_t gatewayID, const std::vector<am_ConnectionFormat_e>& listSourceFormats, const std::vector<am_ConnectionFormat_e>& listSinkFormats, const std::vector<bool>& convertionMatrix));
+ MOCK_METHOD5(updateSink,
+ am_Error_e(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_ConnectionFormat_e>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties));
+ MOCK_METHOD5(updateSource,
+ am_Error_e(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_ConnectionFormat_e>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties));
+ MOCK_METHOD3(ackSetVolumes,
+ void(const am_Handle_s handle, const std::vector<am_Volumes_s>& listvolumes, const am_Error_e error));
+ MOCK_METHOD2(ackSinkNotificationConfiguration,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(ackSourceNotificationConfiguration,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(hookSinkNotificationDataChange,
+ void(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload));
+ MOCK_METHOD2(hookSourceNotificationDataChange,
+ void(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload));
+};
+
+} // namespace am
+#endif /* MOCKROUTINGRECEIVENTERFACE_H_ */
diff --git a/PluginRoutingInterfaceCAPI/test/RoutingSender_dbus.conf b/PluginRoutingInterfaceCAPI/test/RoutingSender_dbus.conf
new file mode 100755
index 0000000..f54fdd7
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/RoutingSender_dbus.conf
@@ -0,0 +1,8 @@
+##################################### Routing Test Domain Interface configuration ################################
+# RoutingSender_dbus.conf #
+# If you change something make sure you re-configure with 'ccmake..' which generates the *_dbus.conf file again. #
+##################################################################################################################
+[local:org.genivi.audiomanger.routingsender:org.genivi.routingsender]
+dbus_connection=org.genivi.routingsender
+dbus_object=/org/genivi/audiomanger/routingsender
+dbus_interface=org.genivi.audiomanger.routingsender
diff --git a/PluginRoutingInterfaceCAPI/test/cmake/AmRoutingInterfaceCAPITests_dbus.conf.in b/PluginRoutingInterfaceCAPI/test/cmake/AmRoutingInterfaceCAPITests_dbus.conf.in
new file mode 100755
index 0000000..95d09b2
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/cmake/AmRoutingInterfaceCAPITests_dbus.conf.in
@@ -0,0 +1,3 @@
+@ROUTING_INTERFACE_DBUS_CONF@
+
+@ROUTING_TESTDOMAININTERFACE_DBUS_CONF@ \ No newline at end of file
diff --git a/PluginRoutingInterfaceCAPI/test/cmake/CAmRoutingSenderService.h.in b/PluginRoutingInterfaceCAPI/test/cmake/CAmRoutingSenderService.h.in
new file mode 100644
index 0000000..2b23745
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/cmake/CAmRoutingSenderService.h.in
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2012 BMW
+ *
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ *
+ * \copyright
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For further information see http://www.genivi.org/.
+ */
+
+#ifndef CAMROUTINGSENDERSERVICE_H_
+#define CAMROUTINGSENDERSERVICE_H_
+
+#include "audiomanagertypes.h"
+#include <org/genivi/audiomanager/RoutingSenderStubDefault.h>
+#include <org/genivi/audiomanager/RoutingInterfaceProxy.h>
+
+/**
+ * GENERATED FROM CMAKE. PLEASE USE cmake/CAmRoutingSenderService.h.in IF YOU WANT TO MAKE CHANGES.
+ */
+
+namespace am {
+
+using namespace CommonAPI;
+using namespace org::genivi::audiomanager;
+
+class CAmCommonAPIWrapper;
+
+/**
+ * THE FOLLOWING DEFINES ARE POPULATED FROM THE CMAKELISTS.TXT .
+ */
+#define CAPI_SENDER_INTERFACE @CAPI_SENDER_INTERFACE_H@
+#define CAPI_SENDER_INSTANCE @CAPI_SENDER_INSTANCE_H@
+#define CAPI_SENDER_PATH @CAPI_SENDER_PATH_H@
+
+#define CAPI_ROUTING_INTERFACE @CAPI_ROUTING_INTERFACE_H@
+#define CAPI_ROUTING_INSTANCE @CAPI_ROUTING_INSTANCE_H@
+#define CAPI_ROUTING_PATH @CAPI_ROUTING_PATH_H@
+
+
+/** Test class implementing the routing sender service.
+*
+* Please see cmake/CAmRoutingSenderService.h.in
+*/
+class CAmRoutingSenderService : public RoutingSenderStubDefault {
+
+ am_gen::am_Domain_s mDomainData;
+ uint16_t mAbortedHandle;
+ bool mIsServiceAvailable;
+ bool mIsDomainRegistred;
+ bool mIsReady;
+ CAmCommonAPIWrapper *mpWrapper;
+ std::shared_ptr<RoutingInterfaceProxy<> > mRoutingInterfaceProxy;
+
+public:
+
+ CAmRoutingSenderService();
+ CAmRoutingSenderService(CAmCommonAPIWrapper * aWrapper);
+ CAmRoutingSenderService(CAmCommonAPIWrapper * aWrapper, std::shared_ptr<RoutingInterfaceProxy<> > aProxy);
+ virtual ~CAmRoutingSenderService();
+
+ void onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus);
+ void onRoutingReadyRundown();
+ void onRoutingReadyEvent();
+ void registerDomain();
+ void setAbortHandle(uint16_t handle);
+ uint16_t errorForHandle(const uint16_t & handle);
+
+ virtual void asyncSetSourceState(uint16_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SourceState_e sourceState);
+
+ virtual void setDomainState(am_gen::am_domainID_t domainID, am_gen::am_DomainState_e domainState, am_gen::am_Error_e& error);
+
+ virtual void asyncSetSourceVolume(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time);
+
+ virtual void asyncSetSinkVolume(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_volume_t volume, am_gen::am_RampType_e ramp, am_gen::am_time_t time);
+
+ virtual void asyncConnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID, am_gen::am_sourceID_t sourceID, am_gen::am_sinkID_t sinkID, am_gen::am_ConnectionFormat_e connectionFormat);
+
+ virtual void asyncDisconnect(am_gen::am_handle_t handle, am_gen::am_connectionID_t connectionID);
+
+ virtual void asyncAbort(am_gen::am_handle_t handle, am_gen::am_Error_e& error);
+
+ virtual void asyncSetSinkSoundProperties(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_L listSoundProperties);
+
+ virtual void asyncSetSinkSoundProperty(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_SoundProperty_s soundProperty);
+
+ virtual void asyncSetSourceSoundProperties(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_L listSoundProperties);
+
+ virtual void asyncSetSourceSoundProperty(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_SoundProperty_s soundProperty);
+
+ virtual void asyncCrossFade(am_gen::am_handle_t handle, am_gen::am_crossfaderID_t crossfaderID, am_gen::am_HotSink_e hotSink, am_gen::am_RampType_e rampType, am_gen::am_time_t time);
+
+ virtual void asyncSetVolumes(am_gen::am_handle_t handle, am_gen::am_Volumes_l volumes);
+
+ virtual void asyncSetSinkNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sinkID_t sinkID, am_gen::am_NotificationConfiguration_s notificationConfiguration);
+
+ virtual void asyncSetSourceNotificationConfiguration(am_gen::am_handle_t handle, am_gen::am_sourceID_t sourceID, am_gen::am_NotificationConfiguration_s notificationConfiguration);
+
+ static const char * ROUTING_SENDER_SERVICE;
+ static const char * ROUTING_INTERFACE_SERVICE;
+};
+
+
+} /* namespace am */
+#endif /* CAMROUTINGSENDERSERVICE_H_ */
diff --git a/PluginRoutingInterfaceCAPI/test/cmake/RoutingSender_dbus.conf.in b/PluginRoutingInterfaceCAPI/test/cmake/RoutingSender_dbus.conf.in
new file mode 100755
index 0000000..bcd29a6
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/cmake/RoutingSender_dbus.conf.in
@@ -0,0 +1,8 @@
+##################################### Routing Test Domain Interface configuration ################################
+# RoutingSender_dbus.conf #
+# If you change something make sure you re-configure with 'ccmake..' which generates the *_dbus.conf file again. #
+##################################################################################################################
+[local:@CAPI_SENDER_INTERFACE@:@CAPI_SENDER_INSTANCE@]
+dbus_connection=@CAPI_SENDER_INSTANCE@
+dbus_object=@CAPI_SENDER_PATH@
+dbus_interface=@CAPI_SENDER_INTERFACE@ \ No newline at end of file
diff --git a/PluginRoutingInterfaceCAPI/test/cmake/config.cmake b/PluginRoutingInterfaceCAPI/test/cmake/config.cmake
new file mode 100644
index 0000000..b2ef0b2
--- /dev/null
+++ b/PluginRoutingInterfaceCAPI/test/cmake/config.cmake
@@ -0,0 +1,8 @@
+#ifndef _ROUTINGDBUS_CONFIG_H
+#define _ROUTINGDBUS_CONFIG_H
+
+#cmakedefine CAPI_SENDER_INTERFACE "@CAPI_SENDER_INTERFACE@"
+#cmakedefine CAPI_SENDER_INSTANCE "@CAPI_SENDER_INSTANCE@"
+#cmakedefine CAPI_SENDER_PATH "@CAPI_SENDER_PATH@"
+
+#endif /* _ROUTINGDBUS_CONFIG_H */