summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJens Lorenz <jlorenz@de.adit-jv.com>2014-06-11 18:14:58 +0200
committerChristian Linke <christian.linke@bmw.de>2014-06-23 14:05:37 +0200
commit20491c0f31d70e254c56f171c69b95f3d4ad2813 (patch)
tree5409ce980ecf4285a21cf0f1b38ba19dafe3129a /include
parentb0bc6ede2d23dde9a177483aa9470871422fe9aa (diff)
downloadaudiomanager-20491c0f31d70e254c56f171c69b95f3d4ad2813.tar.gz
* Bug #100 - removed projecttypes.h which causes compiling conflicts5.1
Signed-off-by: Jens Lorenz <jlorenz@de.adit-jv.com>
Diffstat (limited to 'include')
-rwxr-xr-xinclude/audiomanagertypes.h2581
-rw-r--r--include/command/IAmCommandReceive.h290
-rw-r--r--include/command/IAmCommandSend.h280
-rw-r--r--include/control/IAmControlReceive.h929
-rw-r--r--include/control/IAmControlSend.h590
-rw-r--r--include/projecttypes.h219
-rw-r--r--include/routing/IAmRoutingReceive.h482
-rw-r--r--include/routing/IAmRoutingSend.h253
-rw-r--r--include/shared/CAmCommonAPIWrapper.h1
9 files changed, 1786 insertions, 3839 deletions
diff --git a/include/audiomanagertypes.h b/include/audiomanagertypes.h
index cf57933..2066222 100755
--- a/include/audiomanagertypes.h
+++ b/include/audiomanagertypes.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,1325 +12,1372 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_E6597B7D_75F2_4586_A193_B3C4EA5C6548__INCLUDED_)
-#define EA_E6597B7D_75F2_4586_A193_B3C4EA5C6548__INCLUDED_
+#if !defined(EA_FDF9AAA5_5FA3_4604_A7A4_865A9FD3AF11__INCLUDED_)
+#define EA_FDF9AAA5_5FA3_4604_A7A4_865A9FD3AF11__INCLUDED_
#include <stdint.h>
#include <string>
#include <vector>
-#define AM_MUTE -3000
+namespace am {
-#include "projecttypes.h"
+/**
+ * a domain ID
+ */
+typedef uint16_t am_domainID_t;
+
+/**
+ * a crossfader ID
+ */
+typedef uint16_t am_crossfaderID_t;
+
+/**
+ * a connection ID
+ */
+typedef uint16_t am_connectionID_t;
+
+/**
+ * a source ID
+ */
+typedef uint16_t am_sourceID_t;
+
+/**
+ * a sink ID
+ */
+typedef uint16_t am_sinkID_t;
+
+/**
+ * a gateway ID
+ */
+typedef uint16_t am_gatewayID_t;
+
+/**
+ * a mainConnection ID
+ */
+typedef uint16_t am_mainConnectionID_t;
+
+/**
+ * speed
+ */
+typedef uint16_t am_speed_t;
+
+/**
+ * The unit is 0.1 db steps,The smallest value -3000 (=AM_MUTE). The minimum and
+ * maximum can be limited by actual project.
+ */
+typedef int16_t am_volume_t;
+static const am_volume_t AM_MUTE = -3000;
+
+/**
+ * This is the volume presented on the command interface. It is in the duty of the
+ * Controller to change the volumes given here into meaningful values on the
+ * routing interface.
+ * The range of this type is customer specific.
+ */
+typedef int16_t am_mainVolume_t;
+
+typedef uint16_t am_sourceClass_t;
+
+typedef uint16_t am_sinkClass_t;
+
+/**
+ * time in ms!
+ */
+typedef uint16_t am_time_t;
+
+/**
+ * offset time that is introduced in milli seconds.
+ */
+typedef int16_t am_timeSync_t;
+
+/**
+ * This type gives the information about reason for reason for Source/Sink change
+ */
+typedef uint16_t am_CustomAvailabilityReason_t;
+static const am_CustomAvailabilityReason_t AR_UNKNOWN = 0;
+/** new media was entered */
+static const am_CustomAvailabilityReason_t AR_GENIVI_NEWMEDIA = 1;
+/** same media was entered */
+static const am_CustomAvailabilityReason_t AR_GENIVI_SAMEMEDIA = 2;
+/** there is no media or media is removed */
+static const am_CustomAvailabilityReason_t AR_GENIVI_NOMEDIA = 3;
+/** there was a temperature event */
+static const am_CustomAvailabilityReason_t AR_GENIVI_TEMPERATURE = 4;
+/** there was a voltage event */
+static const am_CustomAvailabilityReason_t AR_GENIVI_VOLTAGE = 5;
+/** fatal errors on reading or accessing media */
+static const am_CustomAvailabilityReason_t AR_GENIVI_ERRORMEDIA = 6;
+
+/**
+ * This is a custom specific identifier of property. It can be used to
+ * differentiate between interrupt source/sink, main source/sink, etc.
+ */
+typedef uint16_t am_CustomClassProperty_t;
+static const am_CustomClassProperty_t CP_UNKNOWN = 0;
+static const am_CustomClassProperty_t CP_GENIVI_SOURCE_TYPE = 1;
+static const am_CustomClassProperty_t CP_GENIVI_SINK_TYPE = 2;
+
+/**
+ * This type classifies the format in which data is exchanged within a connection.
+ * The type itself is project specific although there are some standard formats
+ * defined.
+ */
+typedef uint16_t am_CustomConnectionFormat_t;
+static const am_CustomConnectionFormat_t CF_UNKNOWN = 0;
+/** plain mono */
+static const am_CustomConnectionFormat_t CF_GENIVI_MONO = 1;
+/** stereo connection */
+static const am_CustomConnectionFormat_t CF_GENIVI_STEREO = 2;
+/** analog connection */
+static const am_CustomConnectionFormat_t CF_GENIVI_ANALOG = 3;
+/** automatic connection. */
+static const am_CustomConnectionFormat_t CF_GENIVI_AUTO = 4;
+
+/**
+ * Here are all SoundProperties that can be set via the CommandInterface.
+ * This type is product specific and can be changed or extended.
+ */
+typedef uint16_t am_CustomMainSoundPropertyType_t;
+static const am_CustomMainSoundPropertyType_t MSP_UNKNOWN = 0;
+/** example value between -10 and +10 */
+static const am_CustomMainSoundPropertyType_t MSP_GENIVI_TREBLE = 1;
+/** example value between -10 and +10 */
+static const am_CustomMainSoundPropertyType_t MSP_GENIVI_MID = 2;
+/** example value between -10 and +10 */
+static const am_CustomMainSoundPropertyType_t MSP_GENIVI_BASS = 3;
+
+/**
+ * The notification types are project specific.
+ */
+typedef uint16_t am_CustomNotificationType_t;
+static const am_CustomNotificationType_t NT_UNKNOWN = 0;
+
+/**
+ * The given ramp types here are just examples. For products, different ramp types
+ * can be defined here. It is in the responsibility of the product to make sure
+ * that the routing plugins are aware of the ramp types used.
+ */
+typedef uint16_t am_CustomRampType_t;
+static const am_CustomRampType_t RAMP_UNKNOWN = 0;
+/** sets directly the value without a ramp */
+static const am_CustomRampType_t RAMP_GENIVI_DIRECT = 1;
+/** Sets the volume as fast as possible */
+static const am_CustomRampType_t RAMP_GENIVI_NO_PLOP = 2;
+static const am_CustomRampType_t RAMP_GENIVI_EXP_INV = 3;
+static const am_CustomRampType_t RAMP_GENIVI_LINEAR = 4;
+static const am_CustomRampType_t RAMP_GENIVI_EXP = 5;
+
+/**
+ * Within genivi only the some example properties are defined.
+ * For products these should be changed or extended.
+ */
+typedef uint16_t am_CustomSoundPropertyType_t;
+static const am_CustomSoundPropertyType_t SP_UNKNOWN = 0;
+/** example treble value min =-10 max =10 */
+static const am_CustomSoundPropertyType_t SP_GENIVI_TREBLE = 1;
+/** example mid value min =-10 max =10 */
+static const am_CustomSoundPropertyType_t SP_GENIVI_MID = 2;
+/** example bass value min =-10 max =10 */
+static const am_CustomSoundPropertyType_t SP_GENIVI_BASS = 3;
+
+/**
+ * Describes the different system properties which are project specific.
+ */
+typedef uint16_t am_CustomSystemPropertyType_t;
+static const am_CustomSystemPropertyType_t SYP_UNKNOWN = 0;
+
+/**
+ * describes the active sink of a crossfader.
+ */
+enum am_HotSink_e
+{
+ /**
+ * default
+ */
+ HS_UNKNOWN = 0,
+ /**
+ * sinkA is active
+ */
+ HS_SINKA = 1,
+ /**
+ * sinkB is active
+ */
+ HS_SINKB = 2,
+ /**
+ * the crossfader is in the transition state
+ */
+ HS_INTERMEDIATE = 3,
+ HS_MAX
+};
+
+/**
+ * with the help of this enum, sinks and sources can report their availability
+ * state
+ */
+enum am_Availability_e
+{
+ /**
+ * default
+ */
+ A_UNKNOWN = 0,
+ /**
+ * The source / sink is available
+ */
+ A_AVAILABLE = 1,
+ /**
+ * the source / sink is not available
+ */
+ A_UNAVAILABLE = 2,
+ A_MAX
+};
+
+/**
+ * represents the connection state
+ */
+enum am_ConnectionState_e
+{
+ CS_UNKNOWN = 0,
+ /**
+ * This means the connection is just building up
+ */
+ CS_CONNECTING = 1,
+ /**
+ * the connection is ready to be used
+ */
+ CS_CONNECTED = 2,
+ /**
+ * the connection is in the course to be knocked down
+ */
+ CS_DISCONNECTING = 3,
+ /**
+ * only relevant for connectionStatechanged. Is send after the connection was
+ * removed
+ */
+ CS_DISCONNECTED = 4,
+ /**
+ * this means the connection is still build up but unused at the moment
+ */
+ CS_SUSPENDED = 5,
+ CS_MAX
+};
-namespace am {
+enum am_DomainState_e
+{
+ /**
+ * default
+ */
+ DS_UNKNOWN = 0,
+ /**
+ * the domain is controlled by the daemon
+ */
+ DS_CONTROLLED = 1,
+ /**
+ * the domain is independent starting up
+ */
+ DS_INDEPENDENT_STARTUP = 1,
+ /**
+ * the domain is independent running down
+ */
+ DS_INDEPENDENT_RUNDOWN = 2,
+ DS_MAX
+};
+
+/**
+ * This enum characterizes the data of the EarlyData_t
+ */
+enum am_EarlyDataType_e
+{
+ /**
+ * default
+ */
+ ES_UNKNOWN = 0,
+ /**
+ * the source volume
+ */
+ ED_SOURCE_VOLUME = 1,
+ /**
+ * the sink volume
+ */
+ ED_SINK_VOLUME = 2,
+ /**
+ * a source property
+ */
+ ED_SOURCE_PROPERTY = 3,
+ /**
+ * a sink property
+ */
+ ED_SINK_PROPERTY = 4,
+ /**
+ * The interrupt state
+ */
+ ED_INTERRUPT_STATE = 5,
+ ED_MAX
+};
+
+/**
+ * the errors of the audiomanager. All possible errors are in here. This enum is
+ * used widely as return parameter.
+ */
+enum am_Error_e
+{
+ /**
+ * no error - positive reply
+ */
+ E_OK = 0,
+ /**
+ * default
+ */
+ E_UNKNOWN = 1,
+ /**
+ * value out of range
+ */
+ E_OUT_OF_RANGE = 2,
+ /**
+ * not used
+ */
+ E_NOT_USED = 3,
+ /**
+ * a database error occurred
+ */
+ E_DATABASE_ERROR = 4,
+ /**
+ * the desired object already exists
+ */
+ E_ALREADY_EXISTS = 5,
+ /**
+ * there is no change
+ */
+ E_NO_CHANGE = 6,
+ /**
+ * the desired action is not possible
+ */
+ E_NOT_POSSIBLE = 7,
+ /**
+ * the desired object is non existent
+ */
+ E_NON_EXISTENT = 8,
+ /**
+ * the asynchronous action was aborted
+ */
+ E_ABORTED = 9,
+ /**
+ * This error is returned in case a connect is issued with a connectionFormat that
+ * cannot be selected for the connection. This could be either due to the
+ * capabilities of a source or a sink or gateway compatibilities for example
+ */
+ E_WRONG_FORMAT = 10,
+ E_MAX
+};
+
+enum am_MuteState_e
+{
+ /**
+ * default
+ */
+ MS_UNKNOWN = 0,
+ /**
+ * the source / sink is muted
+ */
+ MS_MUTED = 1,
+ /**
+ * the source / sink is unmuted
+ */
+ MS_UNMUTED = 2,
+ MS_MAX
+};
+
+/**
+ * The source state reflects the state of the source
+ */
+enum am_SourceState_e
+{
+ SS_UNKNNOWN = 0,
+ /**
+ * The source can be activly heared
+ */
+ SS_ON = 1,
+ /**
+ * The source cannot be heared
+ */
+ SS_OFF = 2,
+ /**
+ * The source is paused. Meaning it cannot be heared but should be prepared to
+ * play again soon.
+ */
+ SS_PAUSED = 3,
+ SS_MAX
+};
+
+/**
+ * This enumeration is used to define the type of the action that is correlated to
+ * a handle.
+ */
+enum am_Handle_e
+{
+ H_UNKNOWN = 0,
+ H_CONNECT = 1,
+ H_DISCONNECT = 2,
+ H_SETSOURCESTATE = 3,
+ H_SETSINKVOLUME = 4,
+ H_SETSOURCEVOLUME = 5,
+ H_SETSINKSOUNDPROPERTY = 6,
+ H_SETSOURCESOUNDPROPERTY = 7,
+ H_SETSINKSOUNDPROPERTIES = 8,
+ H_SETSOURCESOUNDPROPERTIES = 9,
+ H_CROSSFADE = 10,
+ H_SETVOLUMES = 11,
+ H_SETSINKNOTIFICATION = 12,
+ H_SETSOURCENOTIFICATION = 13,
+ H_MAX
+};
+
+enum am_InterruptState_e
+{
+ /**
+ * default
+ */
+ IS_UNKNOWN = 0,
+ /**
+ * the interrupt state is off - no interrupt
+ */
+ IS_OFF = 1,
+ /**
+ * the interrupt state is interrupted - the interrupt is active
+ */
+ IS_INTERRUPTED = 2,
+ IS_MAX
+};
+
+/**
+ * This datatype determines if a sourceID or a sinkID is used in the union
+ * following
+ */
+enum am_VolumeType_e
+{
+ VT_UNKNOWN = 0,
+ /**
+ * the following type is a sink
+ */
+ VT_SINK = 1,
+ /**
+ * the following type is a source
+ */
+ VT_SOURCE = 2,
+ VT_MAX
+};
+
+enum am_NotificationStatus_e
+{
+ NS_UNKNOWN = 0,
+ /**
+ * No notification, the function is turned off
+ */
+ NS_OFF = 1,
+ /**
+ * Periodic notifications are sent out. The period in ms is given by
+ * am_NotificationParameter
+ */
+ NS_PERIODIC = 2,
+ /**
+ * The notification is sent out when the minimum given by am_NotificationParameter
+ * is reached.
+ */
+ NS_MINIMUM = 3,
+ /**
+ * The notification is sent out when the maximum given by am_NotificationParameter
+ * is reached.
+ */
+ NS_MAXIMUM = 4,
+ /**
+ * The notification is sent out when a change happened. The Resolution of the
+ * change is defined by am_NotificationParameter.
+ */
+ NS_CHANGE = 5,
+ NS_MAX
+};
+
+/**
+ * this describes the availability of a sink or a source together with the latest
+ * change
+ */
+struct am_Availability_s
+{
+
+public:
+ /**
+ * the current availability state
+ */
+ am_Availability_e availability;
+ /**
+ * the reason for the last change. This can be used to trigger events that deal
+ * with state changes.
+ */
+ am_CustomAvailabilityReason_t availabilityReason;
+
+};
+
+/**
+ * describes class properties
+ */
+struct am_ClassProperty_s
+{
+
+public:
+ /**
+ * the property as enum
+ */
+ am_CustomClassProperty_t classProperty;
+ /**
+ * the value of the property
+ */
+ int16_t value;
+
+};
+
+/**
+ * This struct describes the attribiutes of a crossfader.
+ */
+struct am_Crossfader_s
+{
+
+public:
+ /**
+ * This is the ID of the crossfader, it is unique in the system. There are 2 ways,
+ * ID can be created: either it is assigned during the registration process (in a
+ * dynamic context, uniqueness will be ensured by the AudioManager daemon), or it
+ * is a fixed (the project has to ensure the uniqueness of the ID).
+ */
+ am_crossfaderID_t crossfaderID;
+ /**
+ * The name of the crossfader. Must be unique in the whole system.
+ */
+ std::string name;
+ /**
+ * The sinkID of the SinkA. Sinks shall be registered before registering the
+ * crossfader.
+ */
+ am_sinkID_t sinkID_A;
+ /**
+ * The sinkID of the SinkB. Sinks shall be registered before registering the
+ * crossfader.
+ */
+ am_sinkID_t sinkID_B;
+ /**
+ * The sourceID of the crossfader source. The source shall be registered before
+ * the crossfader.
+ */
+ am_sourceID_t sourceID;
+ /**
+ * This enum can have 3 states:
+ *
+ * HS_SINKA sinkA is the current hot one, sinkB is not audible
+ * HS_SINKB sinkB is the current hot one, sinkB is not audible
+ * HS_INTERMEDIATE the fader is stuck in between a cross-fading action. This
+ * could be due to an abort or an error. Before using the crossfader, it must be
+ * set to either HS_SINKA or HS_SINKB.
+ */
+ am_HotSink_e hotSink;
+
+};
+
+/**
+ * This struct describes the attributes of a gateway.
+ */
+struct am_Gateway_s
+{
+
+public:
+ /**
+ * This is the ID of the gateway, it is unique in the system. There are 2 ways, ID
+ * can be created: either it is assigned during the registration process (in a
+ * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
+ * is a fixed (the project has to ensure the uniqueness of the ID).
+ */
+ am_gatewayID_t gatewayID;
+ /**
+ * The name of the gateway. Must be unique in the whole system.
+ */
+ std::string name;
+ /**
+ * The sinkID of the gateway sink-end. The sink is a full blown sink with
+ * connectionFormats, sinkClassIDs etc... It makes sense to register the sinks of
+ * a gateway as non-visible. Care needs to be taken that the connectionsFormats
+ * match with the ones in the conversionMatrix. If the sink is located in the
+ * controllingDomain, the ID needs to be retrieved by registering the sink before
+ * registering the gateway. In case the sink is in a different domain, the ID
+ * needs to be retrieved via peeking.
+ */
+ am_sinkID_t sinkID;
+ /**
+ * The sourceID of the gateway sink-end. The sink is a full blown source with
+ * connectionFormats, sinkClassIDs etc... It makes sense to register the sources
+ * of a gateway as non-visible. Care needs to be taken that the connectionsFormats
+ * match with the ones in the conversionMatrix. If the source is located in the
+ * controllingDomain, the ID needs to be retrieved by registering the source
+ * before registering the gateway. In case the source is in a different domain,
+ * the ID needs to be retrieved via peeking.
+ */
+ am_sourceID_t sourceID;
+ /**
+ * The ID of the sink. If the domain is the same like the controlling domain, the
+ * ID is known due to registration. If the domain is different, the ID needs to be
+ * retrieved via peeking.
+ */
+ am_domainID_t domainSinkID;
+ /**
+ * The ID of the source. If the domain is the same like the controlling domain,
+ * the ID is known due to registration. If the domain is different, the ID needs
+ * to be retrieved via peeking.
+ */
+ am_domainID_t domainSourceID;
+ /**
+ * This is the ID of the domain that registers the gateway.
+ */
+ am_domainID_t controlDomainID;
+ /**
+ * This is the list of available formats on the source side of the gateway. It is
+ * not defined during the gateway registration but copied from the source
+ * registration.
+ */
+ std::vector<am_CustomConnectionFormat_t> listSourceFormats;
+ /**
+ * This is the list of available formats on the sink side of the gateway. It is
+ * not defined during the gateway registration but copied from the sink
+ * registration.
+ */
+ std::vector<am_CustomConnectionFormat_t> listSinkFormats;
+ /**
+ * This is matrix holding information about the conversion capability of the
+ * gateway, it's length is defined by the length(listSinkFormats) x
+ * length(listSourceFormats).
+ * If a SinkFormat can be converted into a SourceFormat, the vector will hold a 1,
+ * if no conversion is possible, a 0.
+ * The data is stored row orientated, where the rows are related to the
+ * sinksFormats and the columns to the sourceFormats. The first value will hold
+ * the conversion information from the first sourceFormat to the first sinkFormat
+ * for example and the seventh value the information about the 3rd sinkFormat to
+ * the 1st sourceFormat in case we would have 3 sourceFormats.
+ *
+ * This matrix
+ * 110 011 000 111 001
+ *
+ * reads as this:
+ * Source
+ * ** 1 2 3
+ * *********************
+ * S 1* 1 1 0
+ * i 2* 0 1 1
+ * n 3* 0 0 0
+ * k 4* 1 1 1
+ * 5* 0 0 1
+ */
+ std::vector<bool> convertionMatrix;
+
+};
+
+/**
+ * This represents one "hopp" in a route
+ */
+struct am_RoutingElement_s
+{
+
+public:
+ /**
+ * the source ID
+ */
+ am_sourceID_t sourceID;
+ /**
+ * the sinkID
+ */
+ am_sinkID_t sinkID;
+ /**
+ * the domainID the routeElement is in
+ */
+ am_domainID_t domainID;
+ /**
+ * the connectionformat that is used for the route
+ */
+ am_CustomConnectionFormat_t connectionFormat;
+
+};
+
+/**
+ * a list of routing elements that lead from source to sink
+ */
+struct am_Route_s
+{
+
+public:
+ /**
+ * the sourceID where the route starts
+ */
+ am_sourceID_t sourceID;
+ /**
+ * the sinkID where the route ends
+ */
+ am_sinkID_t sinkID;
+ /**
+ * the actual route as list of routing elements
+ */
+ std::vector<am_RoutingElement_s> route;
+
+};
+
+/**
+ * struct describing the sound property
+ */
+struct am_SoundProperty_s
+{
+
+public:
+ /**
+ * the type of the property - a project specific enum
+ */
+ am_CustomSoundPropertyType_t type;
+ /**
+ * the actual value of the property
+ */
+ int16_t value;
+
+};
+
+/**
+ * struct describing system properties
+ */
+struct am_SystemProperty_s
+{
+
+public:
/**
- * a domain ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the type that is set
*/
- typedef uint16_t am_domainID_t;
+ am_CustomSystemPropertyType_t type;
+ /**
+ * the value
+ */
+ int16_t value;
+
+};
+/**
+ * struct describing sinkclasses
+ */
+struct am_SinkClass_s
+{
+
+public:
+ /**
+ * the ID of the sinkClass
+ */
+ am_sinkClass_t sinkClassID;
/**
- * a source ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the name of the sinkClass - must be unique in the system
*/
- typedef uint16_t am_sourceID_t;
+ std::string name;
+ /**
+ * the list of the class properties. These are pairs of a project specific enum
+ * describing the type of the value and an integer holding the real value.
+ */
+ std::vector<am_ClassProperty_s> listClassProperties;
+
+};
+/**
+ * struct describing source classes
+ */
+struct am_SourceClass_s
+{
+
+public:
+ /**
+ * the source ID
+ */
+ am_sourceClass_t sourceClassID;
/**
- * a sink ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the name of the sourceClass - must be unique in the system
*/
- typedef uint16_t am_sinkID_t;
+ std::string name;
+ /**
+ * the list of the class properties. These are pairs of a project specific enum
+ * describing the type of the value and an integer holding the real value.
+ */
+ std::vector<am_ClassProperty_s> listClassProperties;
+
+};
+/**
+ * this type holds all information of sources relevant to the HMI
+ */
+struct am_SourceType_s
+{
+
+public:
+ /**
+ * This is the ID of the source, it is unique in the system. There are 2 ways, ID
+ * can be created: either it is assigned during the registration process (in a
+ * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
+ * is a fixed (the project has to ensure the uniqueness of the ID).
+ */
+ am_sourceID_t sourceID;
+ /**
+ * The name of the source. Must be unique in the whole system.
+ */
+ std::string name;
/**
- * a gateway ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the availability of the source
*/
- typedef uint16_t am_gatewayID_t;
+ am_Availability_s availability;
+ /**
+ * the sourceClassID, indicates the class the source is in. This information can
+ * be used by the Controller to implement different behaviour for different
+ * classes.
+ */
+ am_sourceClass_t sourceClassID;
+
+};
+/**
+ * this type holds all information of sinks relevant to the HMI
+ */
+struct am_SinkType_s
+{
+
+public:
+ /**
+ * This is the ID of the sink, it is unique in the system. There are 2 ways, ID
+ * can be created: either it is assigned during the registration process (in a
+ * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
+ * is a fixed (the project has to ensure the uniqueness of the ID).
+ */
+ am_sinkID_t sinkID;
+ /**
+ * The name of the sink. Must be unique in the whole system.
+ */
+ std::string name;
+ /**
+ * This attribute reflects the availability of the sink. There are several reasons
+ * why a sink could be not available for the moment: for example the shutdown of a
+ * sink because of overtemperature or over- & undervoltage. The availability
+ * consists of two pieces of information:
+ *
+ * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or
+ * A_UNKNOWN
+ * AvailabilityReason: this informs about the last reason for a change in
+ * availability. The reasons itself are product specific.
+ */
+ am_Availability_s availability;
+ /**
+ * This is the representation of the Volume for the commandInterface. It is used
+ * by the HMI to set the volume of a sink, the AudioManagerController has to
+ * transform this into real source and sink volumes.
+ */
+ am_mainVolume_t volume;
+ am_MuteState_e muteState;
/**
- * a crossfader ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * The sinkClassID references to a sinkClass. With the help of classification,
+ * rules can be setup to define the system behaviour.
*/
- typedef uint16_t am_crossfaderID_t;
+ am_sinkClass_t sinkClassID;
+
+};
+
+/**
+ * a handle is used for asynchronous operations and is uniquely assigned for each
+ * of this operations
+ */
+struct am_Handle_s
+{
+public:
/**
- * a connection ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the handletype
*/
- typedef uint16_t am_connectionID_t;
+ am_Handle_e handleType:6;
+ /**
+ * the handle as value
+ */
+ uint16_t handle:10;
+
+};
+/**
+ * struct describung mainsound property
+ */
+struct am_MainSoundProperty_s
+{
+
+public:
+ /**
+ * the type of the property
+ */
+ am_CustomMainSoundPropertyType_t type;
/**
- * a mainConnection ID
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the actual value
*/
- typedef uint16_t am_mainConnectionID_t;
+ int16_t value;
+
+};
+
+/**
+ * this type holds all information of connections relevant to the HMI
+ */
+struct am_MainConnectionType_s
+{
+public:
/**
- * speed
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the ID of the mainconnection
*/
- typedef uint16_t am_speed_t;
+ am_mainConnectionID_t mainConnectionID;
+ /**
+ * the sourceID where the connection starts
+ */
+ am_sourceID_t sourceID;
+ /**
+ * the sinkID where the connection ends
+ */
+ am_sinkID_t sinkID;
+ /**
+ * the delay of the mainconnection
+ */
+ am_timeSync_t delay;
+ /**
+ * the current connection state
+ */
+ am_ConnectionState_e connectionState;
+
+};
+
+/**
+ * struct that holds attribiutes of a mainconnection
+ */
+struct am_MainConnection_s
+{
+
+public:
+ /**
+ * the assigned ID
+ */
+ am_mainConnectionID_t mainConnectionID;
+ /**
+ * the current connection state
+ */
+ am_ConnectionState_e connectionState;
+ /**
+ * the sinkID
+ */
+ am_sinkID_t sinkID;
+ /**
+ * the sourceID
+ */
+ am_sourceID_t sourceID;
+ /**
+ * the delay of the connection
+ */
+ am_timeSync_t delay;
+ /**
+ * the list of sub connection IDs the mainconnection consists of
+ */
+ std::vector<am_connectionID_t> listConnectionID;
+
+};
+
+/**
+ * This struct holds the payload of a notification.
+ */
+struct am_NotificationPayload_s
+{
+public:
/**
- * The unit is 0.1 db steps,The smallest value -3000 (=AM_MUTE). The minimum and maximum can be limited by actual project.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * This defines the notification type
*/
- typedef int16_t am_volume_t;
+ am_CustomNotificationType_t type;
+ /**
+ * This is finally the value of the notification. It's meaning depends on the
+ * notificationType
+ */
+ int16_t value;
+
+};
+/**
+ * This struct holds information about the configuration for notifications
+ */
+struct am_NotificationConfiguration_s
+{
+
+public:
+ /**
+ * The notification type of the notification
+ */
+ am_CustomNotificationType_t type;
+ /**
+ * The Notification status. This can be periodic, min/max value based or even off
+ * for example
+ */
+ am_NotificationStatus_e status;
/**
- * This is the volume presented on the command interface. It is in the duty of the Controller to change the volumes given
- * here into meaningful values on the routing interface.
- * The range of this type is customer specific.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * This gives additional information to the notification status.
+ * Relation between notification status and the value:
+ * NS_PERIODIC - the period in ms
+ * NS_MINIMUM - the minimum value that triggers the notification
+ * NS_MAXIMUM - the maximum value that triggers the notifcation
+ * NS_CHANGE - the resolution of the change value
*/
- typedef int16_t am_mainVolume_t;
+ int16_t parameter;
+};
+
+/**
+ * This struct describes the attribiutes of a sink
+ */
+struct am_Sink_s
+{
+
+public:
+ /**
+ * This is the ID of the sink, it is unique in the system. There are 2 ways, ID
+ * can be created: either it is assigned during the registration process (in a
+ * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
+ * is a fixed (the project has to ensure the uniqueness of the ID).
+ */
+ am_sinkID_t sinkID;
+ /**
+ * The name of the sink. Must be unique in the whole system.
+ */
+ std::string name;
+ /**
+ * The domainID is the domain the sink belongs to. A sink can only be in one
+ * domain.
+ */
+ am_domainID_t domainID;
+ /**
+ * The sinkClassID references to a sinkClass. With the help of classification,
+ * rules can be setup to define the system behaviour.
+ */
+ am_sinkClass_t sinkClassID;
+ /**
+ * This is the volume of the sink. It is set by the AudioManagerController.
+ */
+ am_volume_t volume;
+ /**
+ * This Boolean flag indicates whether a sink is visible to the commandInterface
+ * or not. If the User must have the possibility to choose the source in the HMI,
+ * it must be visible. But there are also good reasons for invisible sinks, for
+ * example if the sink is part of a crossfader or gateway. HMI relevant changes in
+ * visible sinks will be automatically reported by the daemon to the
+ * commandInterface.
+ */
+ bool visible;
+ /**
+ * This attribute reflects the availability of the sink. There are several reasons
+ * why a sink could be not available for the moment: for example the shutdown of a
+ * sink because of overtemperature or over- & undervoltage. The availability
+ * consists of two pieces of information:
+ *
+ * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or
+ * A_UNKNOWN
+ * AvailabilityReason: this informs about the last reason for a change in
+ * availability. The reasons itself are product specific.
+ */
+ am_Availability_s available;
+ /**
+ * This attribute reflects the muteState of the sink. The information is not the
+ * "real" state of the sink, but the HMI representation for he commandInterface
+ * controlled by the AudioManagerController.
+ */
+ am_MuteState_e muteState;
+ /**
+ * This is the representation of the Volume for the commandInterface. It is used
+ * by the HMI to set the volume of a sink, the AudioManagerController has to
+ * transform this into real source and sink volumes.
+ */
+ am_mainVolume_t mainVolume;
/**
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * This is the list of soundProperties, that the sink is capable of. The
+ * soundProperties itself are project specific. For sinks, a possible
+ * soundProperty could be for example settings.
*/
- typedef uint16_t am_sourceClass_t;
+ std::vector<am_SoundProperty_s> listSoundProperties;
+ /**
+ * This list holds information about the formats that the Source is capable of
+ * supporting when delivering audio.
+ */
+ std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
+ /**
+ * This is the list of the available mainSoundProperties. The principle is the
+ * same than with soundProperties, but they are only visible to the
+ * CommandInterface.
+ */
+ std::vector<am_MainSoundProperty_s> listMainSoundProperties;
+ /**
+ * This is the list of the MainNotificationConfigurations. These notifications
+ * work on the level of command interface.
+ */
+ std::vector<am_NotificationConfiguration_s> listMainNotificationConfigurations;
+ /**
+ * This is the list of the NotificationConfigurations. These notifications work on
+ * the level of RoutingPlugins.
+ */
+ std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
+
+};
+/**
+ * This struct describes the attribiutes of a source
+ */
+struct am_Source_s
+{
+
+public:
+ /**
+ * This is the ID of the source, it is unique in the system. There are 2 ways, ID
+ * can be created: either it is assigned during the registration process (in a
+ * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
+ * is a fixed (the project has to ensure the uniqueness of the ID).
+ */
+ am_sourceID_t sourceID;
+ /**
+ * The domainID is the domain the source belongs to. A source can only be in one
+ * domain.
+ */
+ am_domainID_t domainID;
+ /**
+ * The name of the source. Must be unique in the whole system.
+ */
+ std::string name;
+ /**
+ * the sourceClassID, indicates the class the source is in. This information can
+ * be used by the Controller to implement different behaviour for different
+ * classes.
+ */
+ am_sourceClass_t sourceClassID;
+ /**
+ * The source state is an indication towards the source if it is actively heard or
+ * not. The source can use this information to implement features like automatic
+ * spin down of CD's in case the CD is not the active source or AF following of a
+ * tuner that is not actively heard. The source state is set by the
+ * AudioManagerController.There are 3 possible states:
+ *
+ * SS_ON: the source is active
+ * SS_OFF: the source is off
+ * SS_PAUSED: the source is paused and not active.
+ */
+ am_SourceState_e sourceState;
+ /**
+ * This is the volume of the source. It is set by the AudioManagerController. It
+ * is used to adopt different audiolevels in a system and mixing of sources (e.g.
+ * navigation hints & music).
+ */
+ am_volume_t volume;
+ /**
+ * This Boolean flag indicates whether a source is visible to the commandInterface
+ * or not. If the User must have the possibility to choose the source in the HMI,
+ * it must be visible. But there are also good reasons for invisible sources, for
+ * example if the source is part of a crossfader or gateway. HMI relevant changes
+ * in visible sources will be automatically reported by the daemon to the
+ * commandInterface.
+ */
+ bool visible;
+ /**
+ * This attribute reflects the availability of the source. There are several
+ * reasons why a source could be not available for the moment. For example a CD
+ * player which has no CD entered in the slot can be unavailable, or a USB player
+ * with no or unreadable stick attached. Other scenarios involve the shutdown of a
+ * source because of overtemperature or over- & undervoltage. The availability
+ * consists of two informations:
+ *
+ * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or
+ * A_UNKNOWN
+ * AvailabilityReason: this informs about the last reason for a change in
+ * availability. The reasons itself are product specific.
+ */
+ am_Availability_s available;
+ /**
+ * Some special sources can have special behaviors, the are so called "Low Level
+ * Interrupts". Here the current status is documented. The information can be used
+ * by the AudioManagerController to react to the changes by for example lowering
+ * the volume of the mainSources. The two states are
+ *
+ * IS_OFF: the interrupt is not active at the moment
+ * IS_INTERRUPTED: the interrupt is playing at the moment.
+ */
+ am_InterruptState_e interruptState;
+ /**
+ * This is the list of soundProperties, that the source is capable of. The
+ * soundProperties itself are project specific. For sources, a possible
+ * soundProperty could be navigation volume offset, for example.
+ */
+ std::vector<am_SoundProperty_s> listSoundProperties;
+ /**
+ * This list holds information about the formats that the Source is capable of
+ * supporting when delivering audio.
+ */
+ std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
+ /**
+ * This is the list of the available mainSoundProperties. The principle is the
+ * same than with soundProperties, but they are only visible to the
+ * CommandInterface.
+ */
+ std::vector<am_MainSoundProperty_s> listMainSoundProperties;
+ /**
+ * The list of MainNotificationConfigurations. These notifications work on the
+ * level of CommandInterface.
+ */
+ std::vector<am_NotificationConfiguration_s> listMainNotificationConfigurations;
/**
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * The list of MainNotificationConfigurations. These notifications work on the
+ * level of RoutingInterface.
*/
- typedef uint16_t am_sinkClass_t;
+ std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
+};
+
+/**
+ * This struct describes the attribiutes of a domain
+ */
+struct am_Domain_s
+{
+
+public:
+ /**
+ * the domain ID
+ */
+ am_domainID_t domainID;
+ /**
+ * the name of the domain
+ */
+ std::string name;
+ /**
+ * the busname. This is equal to a plugin name and is used to dispatch messages to
+ * the elements of a plugin
+ */
+ std::string busname;
+ /**
+ * the name of the node
+ */
+ std::string nodename;
+ /**
+ * indicated if the domain is independent at startup or not
+ */
+ bool early;
+ /**
+ * indicates if the domain registration is complete or not
+ */
+ bool complete;
/**
- * time in ms!
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the current domain state
*/
- typedef uint16_t am_time_t;
+ am_DomainState_e state;
+};
+
+/**
+ * a connection
+ */
+struct am_Connection_s
+{
+
+public:
+ /**
+ * the assigned ID
+ */
+ am_connectionID_t connectionID;
+ /**
+ * the source the audio flows from
+ */
+ am_sourceID_t sourceID;
+ /**
+ * the sink the audio flows to
+ */
+ am_sinkID_t sinkID;
/**
- * offset time that is introduced in milli seconds.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * the delay of the conneciton
*/
- typedef int16_t am_timeSync_t;
+ am_timeSync_t delay;
+ /**
+ * the used connectionformat
+ */
+ am_CustomConnectionFormat_t connectionFormat;
+
+};
+
+/**
+ * data type depends of am_EarlyDataType_e:
+ * volume_t in case of ED_SOURCE_VOLUME, ED_SINK_VOLUME
+ * soundProperty_t in case of ED_SOURCE_PROPERTY, ED_SINK_PROPERTY
+ */
+union am_EarlyData_u
+{
+
+public:
+ am_volume_t volume;
+ am_SoundProperty_s soundProperty;
+ am_InterruptState_e interruptState;
+
+};
+
+/**
+ * data type depends of am_EarlyDataType_e:
+ * sourceID in case of ED_SOURCE_VOLUME, ED_SOURCE_PROPERTY
+ * sinkID in case of ED_SINK_VOLUME, ED_SINK_PROPERTY
+ */
+union am_DataType_u
+{
+
+public:
+ am_sinkID_t sink;
+ am_sourceID_t source;
+
+};
+
+struct am_EarlyData_s
+{
+
+public:
+ am_EarlyDataType_e type;
+ am_DataType_u sinksource;
+ am_EarlyData_u data;
+};
+
+/**
+ * This types describe a mixed description for source and sinks volumes.
+ */
+struct am_Volumes_s
+{
+
+public:
+ /**
+ * describes the type of the volume: source or sink.
+ */
+ am_VolumeType_e volumeType;
+ /**
+ * either sourceID or sinkID
+ */
+ am_DataType_u volumeID;
/**
- * describes the active sink of a crossfader.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
+ * The volume
*/
- enum am_HotSink_e
- {
- /**
- * default
- */
- HS_UNKNOWN = 0,
- /**
- * sinkA is active
- */
- HS_SINKA = 1,
- /**
- * sinkB is active
- */
- HS_SINKB = 2,
- /**
- * the crossfader is in the transition state
- */
- HS_INTERMEDIATE = 3,
- HS_MAX
- };
-
- /**
- * with the help of this enum, sinks and sources can report their availability state
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_Availability_e
- {
- /**
- * default
- */
- A_UNKNOWN = 0,
- /**
- * The source / sink is available
- */
- A_AVAILABLE = 1,
- /**
- * the source / sink is not available
- */
- A_UNAVAILABLE = 2,
- A_MAX
- };
-
- /**
- * represents the connection state
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_ConnectionState_e
- {
- CS_UNKNOWN = 0,
- /**
- * This means the connection is just building up
- */
- CS_CONNECTING = 1,
- /**
- * the connection is ready to be used
- */
- CS_CONNECTED = 2,
- /**
- * the connection is in the course to be knocked down
- */
- CS_DISCONNECTING = 3,
- /**
- * only relevant for connectionStatechanged. Is send after the connection was removed
- */
- CS_DISCONNECTED = 4,
- /**
- * this means the connection is still build up but unused at the moment
- */
- CS_SUSPENDED = 5,
- CS_MAX
- };
-
- /**
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_DomainState_e
- {
- /**
- * default
- */
- DS_UNKNOWN = 0,
- /**
- * the domain is controlled by the daemon
- */
- DS_CONTROLLED = 1,
- /**
- * the domain is independent starting up
- */
- DS_INDEPENDENT_STARTUP = 1,
- /**
- * the domain is independent running down
- */
- DS_INDEPENDENT_RUNDOWN = 2,
- DS_MAX
- };
-
- /**
- * This enum characterizes the data of the EarlyData_t
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_EarlyDataType_e
- {
- /**
- * default
- */
- ES_UNKNOWN = 0,
- /**
- * the source volume
- */
- ED_SOURCE_VOLUME = 1,
- /**
- * the sink volume
- */
- ED_SINK_VOLUME = 2,
- /**
- * a source property
- */
- ED_SOURCE_PROPERTY = 3,
- /**
- * a sink property
- */
- ED_SINK_PROPERTY = 4,
- ED_MAX
- };
-
- /**
- * the errors of the audiomanager. All possible errors are in here. This enum is used widely as return parameter.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_Error_e
- {
- /**
- * no error - positive reply
- */
- E_OK = 0,
- /**
- * default
- */
- E_UNKNOWN = 1,
- /**
- * value out of range
- */
- E_OUT_OF_RANGE = 2,
- /**
- * not used
- */
- E_NOT_USED = 3,
- /**
- * a database error occurred
- */
- E_DATABASE_ERROR = 4,
- /**
- * the desired object already exists
- */
- E_ALREADY_EXISTS = 5,
- /**
- * there is no change
- */
- E_NO_CHANGE = 6,
- /**
- * the desired action is not possible
- */
- E_NOT_POSSIBLE = 7,
- /**
- * the desired object is non existent
- */
- E_NON_EXISTENT = 8,
- /**
- * the asynchronous action was aborted
- */
- E_ABORTED = 9,
- /**
- * This error is returned in case a connect is issued with a connectionFormat that cannot be selected for the connection.
- * This could be either due to the capabilities of a source or a sink or gateway compatibilities for example
- */
- E_WRONG_FORMAT = 10,
- E_MAX
- };
-
- /**
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_MuteState_e
- {
- /**
- * default
- */
- MS_UNKNOWN = 0,
- /**
- * the source / sink is muted
- */
- MS_MUTED = 1,
- /**
- * the source / sink is unmuted
- */
- MS_UNMUTED = 2,
- MS_MAX
- };
-
- /**
- * The source state reflects the state of the source
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_SourceState_e
- {
- SS_UNKNNOWN = 0,
- /**
- * The source can be activly heared
- */
- SS_ON = 1,
- /**
- * The source cannot be heared
- */
- SS_OFF = 2,
- /**
- * The source is paused. Meaning it cannot be heared but should be prepared to play again soon.
- */
- SS_PAUSED = 3,
- SS_MAX
- };
-
- /**
- * This enumeration is used to define the type of the action that is correlated to a handle.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_Handle_e
- {
- H_UNKNOWN = 0,
- H_CONNECT = 1,
- H_DISCONNECT = 2,
- H_SETSOURCESTATE = 3,
- H_SETSINKVOLUME = 4,
- H_SETSOURCEVOLUME = 5,
- H_SETSINKSOUNDPROPERTY = 6,
- H_SETSOURCESOUNDPROPERTY = 7,
- H_SETSINKSOUNDPROPERTIES = 8,
- H_SETSOURCESOUNDPROPERTIES = 9,
- H_CROSSFADE = 10,
- H_SETVOLUMES = 11,
- H_SETSINKNOTIFICATION = 12,
- H_SETSOURCENOTIFICATION = 13,
- H_MAX
- };
-
- /**
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- enum am_InterruptState_e
- {
- /**
- * default
- */
- IS_UNKNOWN = 0,
- /**
- * the interrupt state is off - no interrupt
- */
- IS_OFF = 1,
- /**
- * the interrupt state is interrupted - the interrupt is active
- */
- IS_INTERRUPTED = 2,
- IS_MAX
- };
-
- /**
- * This datatype determines if a sourceID or a sinkID is used in the union following
- * @author q232968
- * @version 1.0
- * @created 17-Jan-2013 10:00:22
- */
- enum am_VolumeType_e
- {
- VT_UNKNOWN = 0,
- /**
- * the following type is a sink
- */
- VT_SINK = 1,
- /**
- * the following type is a source
- */
- VT_SOURCE = 2,
- VT_MAX
- };
-
- /**
- * @author q232968
- * @version 1.0
- * @created 17-Jan-2013 10:00:22
- */
- enum am_NotificationStatus_e
- {
- NS_UNKNOWN = 0,
- /**
- * No notification, the function is turned off
- */
- NS_OFF = 1,
- /**
- * Periodic notifications are sent out. The period in ms is given by am_NotificationParameter
- */
- NS_PERIODIC = 2,
- /**
- * The notification is sent out when the minimum given by am_NotificationParameter is reached.
- */
- NS_MINIMUM = 3,
- /**
- * The notification is sent out when the maximum given by am_NotificationParameter is reached.
- */
- NS_MAXIMUM = 4,
- /**
- * The notification is sent out when a change happened. The Resolution of the change is defined by
- * am_NotificationParameter.
- */
- NS_CHANGE = 5,
- NS_MAX
- };
-
- /**
- * this describes the availability of a sink or a source together with the latest change
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_Availability_s
- {
-
- public:
- /**
- * the current availability state
- */
- am_Availability_e availability;
- /**
- * the reason for the last change. This can be used to trigger events that deal with state changes.
- */
- am_AvailabilityReason_e availabilityReason;
-
- };
-
- /**
- * describes class properties
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_ClassProperty_s
- {
-
- public:
- /**
- * the property as enum
- */
- am_ClassProperty_e classProperty;
- /**
- * the value of the property
- */
- int16_t value;
-
- };
-
- /**
- * This struct describes the attribiutes of a crossfader.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_Crossfader_s
- {
-
- public:
- /**
- * This is the ID of the crossfader, it is unique in the system. There are 2 ways, ID can be created: either it is
- * assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManager daemon),
- * or it is a fixed (the project has to ensure the uniqueness of the ID).
- */
- am_crossfaderID_t crossfaderID;
- /**
- * The name of the crossfader. Must be unique in the whole system.
- */
- std::string name;
- /**
- * The sinkID of the SinkA. Sinks shall be registered before registering the crossfader.
- */
- am_sinkID_t sinkID_A;
- /**
- * The sinkID of the SinkB. Sinks shall be registered before registering the crossfader.
- */
- am_sinkID_t sinkID_B;
- /**
- * The sourceID of the crossfader source. The source shall be registered before the crossfader.
- */
- am_sourceID_t sourceID;
- /**
- * This enum can have 3 states:
- *
- * HS_SINKA sinkA is the current hot one, sinkB is not audible
- * HS_SINKB sinkB is the current hot one, sinkB is not audible
- * HS_INTERMEDIATE the fader is stuck in between a cross-fading action. This could be due to an abort or an error.
- * Before using the crossfader, it must be set to either HS_SINKA or HS_SINKB.
- */
- am_HotSink_e hotSink;
-
- };
-
- /**
- * This struct describes the attributes of a gateway.
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_Gateway_s
- {
-
- public:
- /**
- * This is the ID of the gateway, it is unique in the system. There are 2 ways, ID can be created: either it is assigned
- * during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is
- * a fixed (the project has to ensure the uniqueness of the ID).
- */
- am_gatewayID_t gatewayID;
- /**
- * The name of the gateway. Must be unique in the whole system.
- */
- std::string name;
- /**
- * The sinkID of the gateway sink-end. The sink is a full blown sink with connectionFormats, sinkClassIDs etc... It makes
- * sense to register the sinks of a gateway as non-visible. Care needs to be taken that the connectionsFormats match with
- * the ones in the conversionMatrix. If the sink is located in the controllingDomain, the ID needs to be retrieved by
- * registering the sink before registering the gateway. In case the sink is in a different domain, the ID needs to be
- * retrieved via peeking.
- */
- am_sinkID_t sinkID;
- /**
- * The sourceID of the gateway sink-end. The sink is a full blown source with connectionFormats, sinkClassIDs etc... It
- * makes sense to register the sources of a gateway as non-visible. Care needs to be taken that the connectionsFormats
- * match with the ones in the conversionMatrix. If the source is located in the controllingDomain, the ID needs to be
- * retrieved by registering the source before registering the gateway. In case the source is in a different domain, the ID
- * needs to be retrieved via peeking.
- */
- am_sourceID_t sourceID;
- /**
- * The ID of the sink. If the domain is the same like the controlling domain, the ID is known due to registration. If the
- * domain is different, the ID needs to be retrieved via peeking.
- */
- am_domainID_t domainSinkID;
- /**
- * The ID of the source. If the domain is the same like the controlling domain, the ID is known due to registration. If
- * the domain is different, the ID needs to be retrieved via peeking.
- */
- am_domainID_t domainSourceID;
- /**
- * This is the ID of the domain that registers the gateway.
- */
- am_domainID_t controlDomainID;
- /**
- * This is the list of available formats on the source side of the gateway. It is not defined during the gateway
- * registration but copied from the source registration.
- */
- std::vector<am_ConnectionFormat_e> listSourceFormats;
- /**
- * This is the list of available formats on the sink side of the gateway. It is not defined during the gateway
- * registration but copied from the sink registration.
- */
- std::vector<am_ConnectionFormat_e> listSinkFormats;
- /**
- * This is matrix holding information about the conversion capability of the gateway, it's length is defined by the
- * length(listSinkFormats) x length(listSourceFormats).
- * If a SinkFormat can be converted into a SourceFormat, the vector will hold a 1, if no conversion is possible, a 0.
- * The data is stored row orientated, where the rows are related to the sinksFormats and the columns to the sourceFormats.
- * The first value will hold the conversion information from the first sourceFormat to the first sinkFormat for example
- * and the seventh value the information about the 3rd sinkFormat to the 1st sourceFormat in case we would have 3
- * sourceFormats.
- *
- * This matrix
- * 110 011 000 111 001
- *
- * reads as this:
- * Source
- * ** 1 2 3
- * *********************
- * S 1* 1 1 0
- * i 2* 0 1 1
- * n 3* 0 0 0
- * k 4* 1 1 1
- * 5* 0 0 1
- */
- std::vector<bool> convertionMatrix;
-
- };
-
- /**
- * This represents one "hopp" in a route
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_RoutingElement_s
- {
-
- public:
- /**
- * the source ID
- */
- am_sourceID_t sourceID;
- /**
- * the sinkID
- */
- am_sinkID_t sinkID;
- /**
- * the domainID the routeElement is in
- */
- am_domainID_t domainID;
- /**
- * the connectionformat that is used for the route
- */
- am_ConnectionFormat_e connectionFormat;
-
- };
-
- /**
- * a list of routing elements that lead from source to sink
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_Route_s
- {
-
- public:
- /**
- * the sourceID where the route starts
- */
- am_sourceID_t sourceID;
- /**
- * the sinkID where the route ends
- */
- am_sinkID_t sinkID;
- /**
- * the actual route as list of routing elements
- */
- std::vector<am_RoutingElement_s> route;
-
- };
-
- /**
- * struct describing the sound property
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_SoundProperty_s
- {
-
- public:
- /**
- * the type of the property - a project specific enum
- */
- am_SoundPropertyType_e type;
- /**
- * the actual value of the property
- */
- int16_t value;
-
- };
-
- /**
- * struct describing system properties
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_SystemProperty_s
- {
-
- public:
- /**
- * the type that is set
- */
- am_SystemPropertyType_e type;
- /**
- * the value
- */
- int16_t value;
-
- };
-
- /**
- * struct describing sinkclasses
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_SinkClass_s
- {
-
- public:
- /**
- * the ID of the sinkClass
- */
- am_sinkClass_t sinkClassID;
- /**
- * the name of the sinkClass - must be unique in the system
- */
- std::string name;
- /**
- * the list of the class properties. These are pairs of a project specific enum describing the type of the value and an
- * integer holding the real value.
- */
- std::vector<am_ClassProperty_s> listClassProperties;
-
- };
-
- /**
- * struct describing source classes
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:22
- */
- struct am_SourceClass_s
- {
-
- public:
- /**
- * the source ID
- */
- am_sourceClass_t sourceClassID;
- /**
- * the name of the sourceClass - must be unique in the system
- */
- std::string name;
- /**
- * the list of the class properties. These are pairs of a project specific enum describing the type of the value and an
- * integer holding the real value.
- */
- std::vector<am_ClassProperty_s> listClassProperties;
-
- };
-
- /**
- * this type holds all information of sources relevant to the HMI
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_SourceType_s
- {
-
- public:
- /**
- * This is the ID of the source, it is unique in the system. There are 2 ways, ID can be created: either it is assigned
- * during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is
- * a fixed (the project has to ensure the uniqueness of the ID).
- */
- am_sourceID_t sourceID;
- /**
- * The name of the source. Must be unique in the whole system.
- */
- std::string name;
- /**
- * the availability of the source
- */
- am_Availability_s availability;
- /**
- * the sourceClassID, indicates the class the source is in. This information can be used by the Controller to implement
- * different behaviour for different classes.
- */
- am_sourceClass_t sourceClassID;
-
- };
-
- /**
- * this type holds all information of sinks relevant to the HMI
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_SinkType_s
- {
-
- public:
- /**
- * This is the ID of the sink, it is unique in the system. There are 2 ways, ID can be created: either it is assigned
- * during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is
- * a fixed (the project has to ensure the uniqueness of the ID).
- */
- am_sinkID_t sinkID;
- /**
- * The name of the sink. Must be unique in the whole system.
- */
- std::string name;
- /**
- * This attribute reflects the availability of the sink. There are several reasons why a sink could be not available for
- * the moment: for example the shutdown of a sink because of overtemperature or over- & undervoltage. The availability
- * consists of two pieces of information:
- *
- * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or A_UNKNOWN
- * AvailabilityReason: this informs about the last reason for a change in availability. The reasons itself are product
- * specific.
- */
- am_Availability_s availability;
- /**
- * This is the representation of the Volume for the commandInterface. It is used by the HMI to set the volume of a sink,
- * the AudioManagerController has to transform this into real source and sink volumes.
- */
- am_mainVolume_t volume;
- am_MuteState_e muteState;
- /**
- * The sinkClassID references to a sinkClass. With the help of classification, rules can be setup to define the system
- * behaviour.
- */
- am_sinkClass_t sinkClassID;
-
- };
-
- /**
- * a handle is used for asynchronous operations and is uniquely assigned for each of this operations
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_Handle_s
- {
-
- public:
- /**
- * the handletype
- */
- am_Handle_e handleType:6;
- /**
- * the handle as value
- */
- uint16_t handle:10;
-
- };
-
- /**
- * struct describung mainsound property
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_MainSoundProperty_s
- {
-
- public:
- /**
- * the type of the property
- */
- am_MainSoundPropertyType_e type;
- /**
- * the actual value
- */
- int16_t value;
-
- };
-
- /**
- * this type holds all information of connections relevant to the HMI
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_MainConnectionType_s
- {
-
- public:
- /**
- * the ID of the mainconnection
- */
- am_mainConnectionID_t mainConnectionID;
- /**
- * the sourceID where the connection starts
- */
- am_sourceID_t sourceID;
- /**
- * the sinkID where the connection ends
- */
- am_sinkID_t sinkID;
- /**
- * the delay of the mainconnection
- */
- am_timeSync_t delay;
- /**
- * the current connection state
- */
- am_ConnectionState_e connectionState;
-
- };
-
- /**
- * struct that holds attribiutes of a mainconnection
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_MainConnection_s
- {
-
- public:
- /**
- * the assigned ID
- */
- am_mainConnectionID_t mainConnectionID;
- /**
- * the current connection state
- */
- am_ConnectionState_e connectionState;
- /**
- * the sinkID
- */
- am_sinkID_t sinkID;
- /**
- * the sourceID
- */
- am_sourceID_t sourceID;
- /**
- * the delay of the connection
- */
- am_timeSync_t delay;
- /**
- * the list of sub connection IDs the mainconnection consists of
- */
- std::vector<am_connectionID_t> listConnectionID;
-
- };
-
- /**
- * This struct holds the payload of a notification.
- * @author q232968
- * @version 1.0
- * @created 17-Jan-2013 10:00:23
- */
- struct am_NotificationPayload_s
- {
-
- public:
- /**
- * This defines the notification type
- */
- am_NotificationType_e type;
- /**
- * This is finally the value of the notification. It's meaning depends on the notificationType
- */
- int16_t value;
-
- };
-
- /**
- * This struct holds information about the configuration for notifications
- * @author q232968
- * @version 1.0
- * @created 17-Jan-2013 10:00:23
- */
- struct am_NotificationConfiguration_s
- {
-
- public:
- /**
- * The notification type of the notification
- */
- am_NotificationType_e type;
- /**
- * The Notification status. This can be periodic, min/max value based or even off for example
- */
- am_NotificationStatus_e status;
- /**
- * This gives additional information to the notification status.
- * Relation between notification status and the value:
- * NS_PERIODIC - the period in ms
- * NS_MINIMUM - the minimum value that triggers the notification
- * NS_MAXIMUM - the maximum value that triggers the notifcation
- * NS_CHANGE - the resolution of the change value
- */
- int16_t parameter;
-
- };
-
- /**
- * This struct describes the attribiutes of a sink
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_Sink_s
- {
-
- public:
- /**
- * This is the ID of the sink, it is unique in the system. There are 2 ways, ID can be created: either it is assigned
- * during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is
- * a fixed (the project has to ensure the uniqueness of the ID).
- */
- am_sinkID_t sinkID;
- /**
- * The name of the sink. Must be unique in the whole system.
- */
- std::string name;
- /**
- * The domainID is the domain the sink belongs to. A sink can only be in one domain.
- */
- am_domainID_t domainID;
- /**
- * The sinkClassID references to a sinkClass. With the help of classification, rules can be setup to define the system
- * behaviour.
- */
- am_sinkClass_t sinkClassID;
- /**
- * This is the volume of the sink. It is set by the AudioManagerController.
- */
- am_volume_t volume;
- /**
- * This Boolean flag indicates whether a sink is visible to the commandInterface or not. If the User must have the
- * possibility to choose the source in the HMI, it must be visible. But there are also good reasons for invisible sinks,
- * for example if the sink is part of a crossfader or gateway. HMI relevant changes in visible sinks will be automatically
- * reported by the daemon to the commandInterface.
- */
- bool visible;
- /**
- * This attribute reflects the availability of the sink. There are several reasons why a sink could be not available for
- * the moment: for example the shutdown of a sink because of overtemperature or over- & undervoltage. The availability
- * consists of two pieces of information:
- *
- * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or A_UNKNOWN
- * AvailabilityReason: this informs about the last reason for a change in availability. The reasons itself are product
- * specific.
- */
- am_Availability_s available;
- /**
- * This attribute reflects the muteState of the sink. The information is not the "real" state of the sink, but the HMI
- * representation for he commandInterface controlled by the AudioManagerController.
- */
- am_MuteState_e muteState;
- /**
- * This is the representation of the Volume for the commandInterface. It is used by the HMI to set the volume of a sink,
- * the AudioManagerController has to transform this into real source and sink volumes.
- */
- am_mainVolume_t mainVolume;
- /**
- * This is the list of soundProperties, that the sink is capable of. The soundProperties itself are project specific. For
- * sinks, a possible soundProperty could be for example settings.
- */
- std::vector<am_SoundProperty_s> listSoundProperties;
- /**
- * This list holds information about the formats that the Source is capable of supporting when delivering audio.
- */
- std::vector<am_ConnectionFormat_e> listConnectionFormats;
- /**
- * This is the list of the available mainSoundProperties. The principle is the same than with soundProperties, but they
- * are only visible to the CommandInterface.
- */
- std::vector<am_MainSoundProperty_s> listMainSoundProperties;
- /**
- * This is the list of the MainNotificationConfigurations. These notifications work on the level of command interface.
- */
- std::vector<am_NotificationConfiguration_s> listMainNotificationConfigurations;
- /**
- * This is the list of the NotificationConfigurations. These notifications work on the level of RoutingPlugins.
- */
- std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
-
- };
-
- /**
- * This struct describes the attribiutes of a source
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_Source_s
- {
-
- public:
- /**
- * This is the ID of the source, it is unique in the system. There are 2 ways, ID can be created: either it is assigned
- * during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is
- * a fixed (the project has to ensure the uniqueness of the ID).
- */
- am_sourceID_t sourceID;
- /**
- * The domainID is the domain the source belongs to. A source can only be in one domain.
- */
- am_domainID_t domainID;
- /**
- * The name of the source. Must be unique in the whole system.
- */
- std::string name;
- /**
- * the sourceClassID, indicates the class the source is in. This information can be used by the Controller to implement
- * different behaviour for different classes.
- */
- am_sourceClass_t sourceClassID;
- /**
- * The source state is an indication towards the source if it is actively heard or not. The source can use this
- * information to implement features like automatic spin down of CD's in case the CD is not the active source or AF
- * following of a tuner that is not actively heard. The source state is set by the AudioManagerController.There are 3
- * possible states:
- *
- * SS_ON: the source is active
- * SS_OFF: the source is off
- * SS_PAUSED: the source is paused and not active.
- */
- am_SourceState_e sourceState;
- /**
- * This is the volume of the source. It is set by the AudioManagerController. It is used to adopt different audiolevels in
- * a system and mixing of sources (e.g. navigation hints & music).
- */
- am_volume_t volume;
- /**
- * This Boolean flag indicates whether a source is visible to the commandInterface or not. If the User must have the
- * possibility to choose the source in the HMI, it must be visible. But there are also good reasons for invisible sources,
- * for example if the source is part of a crossfader or gateway. HMI relevant changes in visible sources will be
- * automatically reported by the daemon to the commandInterface.
- */
- bool visible;
- /**
- * This attribute reflects the availability of the source. There are several reasons why a source could be not available
- * for the moment. For example a CD player which has no CD entered in the slot can be unavailable, or a USB player with no
- * or unreadable stick attached. Other scenarios involve the shutdown of a source because of overtemperature or over- &
- * undervoltage. The availability consists of two informations:
- *
- * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or A_UNKNOWN
- * AvailabilityReason: this informs about the last reason for a change in availability. The reasons itself are product
- * specific.
- */
- am_Availability_s available;
- /**
- * Some special sources can have special behaviors, the are so called "Low Level Interrupts". Here the current status is
- * documented. The information can be used by the AudioManagerController to react to the changes by for example lowering
- * the volume of the mainSources. The two states are
- *
- * IS_OFF: the interrupt is not active at the moment
- * IS_INTERRUPTED: the interrupt is playing at the moment.
- */
- am_InterruptState_e interruptState;
- /**
- * This is the list of soundProperties, that the source is capable of. The soundProperties itself are project specific.
- * For sources, a possible soundProperty could be navigation volume offset, for example.
- */
- std::vector<am_SoundProperty_s> listSoundProperties;
- /**
- * This list holds information about the formats that the Source is capable of supporting when delivering audio.
- */
- std::vector<am_ConnectionFormat_e> listConnectionFormats;
- /**
- * This is the list of the available mainSoundProperties. The principle is the same than with soundProperties, but they
- * are only visible to the CommandInterface.
- */
- std::vector<am_MainSoundProperty_s> listMainSoundProperties;
- /**
- * The list of MainNotificationConfigurations. These notifications work on the level of CommandInterface.
- */
- std::vector<am_NotificationConfiguration_s> listMainNotificationConfigurations;
- /**
- * The list of MainNotificationConfigurations. These notifications work on the level of RoutingInterface.
- */
- std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
-
- };
-
- /**
- * This struct describes the attribiutes of a domain
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_Domain_s
- {
-
- public:
- /**
- * the domain ID
- */
- am_domainID_t domainID;
- /**
- * the name of the domain
- */
- std::string name;
- /**
- * the busname. This is equal to a plugin name and is used to dispatch messages to the elements of a plugin
- */
- std::string busname;
- /**
- * the name of the node
- */
- std::string nodename;
- /**
- * indicated if the domain is independent at startup or not
- */
- bool early;
- /**
- * indicates if the domain registration is complete or not
- */
- bool complete;
- /**
- * the current domain state
- */
- am_DomainState_e state;
-
- };
-
- /**
- * a connection
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_Connection_s
- {
-
- public:
- /**
- * the assigned ID
- */
- am_connectionID_t connectionID;
- /**
- * the source the audio flows from
- */
- am_sourceID_t sourceID;
- /**
- * the sink the audio flows to
- */
- am_sinkID_t sinkID;
- /**
- * the delay of the conneciton
- */
- am_timeSync_t delay;
- /**
- * the used connectionformat
- */
- am_ConnectionFormat_e connectionFormat;
-
- };
-
- /**
- * data type depends of am_EarlyDataType_e:
- * volume_t in case of ED_SOURCE_VOLUME, ED_SINK_VOLUME
- * soundProperty_t in case of ED_SOURCE_PROPERTY, ED_SINK_PROPERTY
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- union am_EarlyData_u
- {
-
- public:
- am_volume_t volume;
- am_SoundProperty_s soundProperty;
-
- };
-
- /**
- * data type depends of am_EarlyDataType_e:
- * sourceID in case of ED_SOURCE_VOLUME, ED_SOURCE_PROPERTY
- * sinkID in case of ED_SINK_VOLUME, ED_SINK_PROPERTY
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- union am_DataType_u
- {
-
- public:
- am_sinkID_t sink;
- am_sourceID_t source;
-
- };
-
- /**
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:23
- */
- struct am_EarlyData_s
- {
-
- public:
- am_EarlyDataType_e type;
- am_DataType_u sinksource;
- am_EarlyData_u data;
-
- };
-
- /**
- * This types describe a mixed description for source and sinks volumes.
- * @author q232968
- * @version 1.0
- * @created 17-Jan-2013 10:00:24
- */
- struct am_Volumes_s
- {
-
- public:
- /**
- * describes the type of the volume: source or sink.
- */
- am_VolumeType_e volumeType;
- /**
- * either sourceID or sinkID
- */
- am_DataType_u volumeID;
- /**
- * The volume
- */
- am_volume_t volume;
- /**
- * the ramp that shall be driven
- */
- am_RampType_e ramp;
- /**
- * the time for the ramp
- */
- am_time_t time;
-
- };
+ am_volume_t volume;
+ /**
+ * the ramp that shall be driven
+ */
+ am_CustomRampType_t ramp;
+ /**
+ * the time for the ramp
+ */
+ am_time_t time;
+
+};
}
-#endif // !defined(EA_E6597B7D_75F2_4586_A193_B3C4EA5C6548__INCLUDED_)
+#endif // !defined(EA_FDF9AAA5_5FA3_4604_A7A4_865A9FD3AF11__INCLUDED_)
diff --git a/include/command/IAmCommandReceive.h b/include/command/IAmCommandReceive.h
index c99fde6..4694e53 100644
--- a/include/command/IAmCommandReceive.h
+++ b/include/command/IAmCommandReceive.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,15 +12,16 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_52591199_D6BE_451e_92F8_032DA5493EF4__INCLUDED_)
-#define EA_52591199_D6BE_451e_92F8_032DA5493EF4__INCLUDED_
+#if !defined(EA_FA7CC74B_CBCB_4356_89AE_B7F88A8CEC7F__INCLUDED_)
+#define EA_FA7CC74B_CBCB_4356_89AE_B7F88A8CEC7F__INCLUDED_
#include <vector>
#include <string>
@@ -35,235 +36,62 @@ class CAmSocketHandler;
#define CommandReceiveVersion "2.0"
namespace am {
- /**
- * The interface towards the Controlling Instance (e.g HMI). It handles the communication towards the HMI and other system
- * components who need to interact with the audiomanagement.
- * There are two rules that have to be kept in mind when implementing against this interface:\n
- * \warning
- * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
- * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\n
- * \details
- * Violation these rules may lead to unexpected behavior! Nevertheless you can implement thread safe by using the deferred-
- * call pattern described on the wiki which also helps to implement calls that are forbidden.\n
- * For more information, please check CAmSerializer
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:24
- */
- class IAmCommandReceive
- {
- public:
- IAmCommandReceive() {
+/**
+ * The interface towards the Controlling Instance (e.g HMI). It handles the
+ * communication towards the HMI and other system components who need to interact
+ * with the audiomanagement.
+ * There are two rules that have to be kept in mind when implementing against this
+ * interface:\n
+ * \warning
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
+ * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS
+ * CALL THAT EXPECTS A RETURN VALUE.\n
+ * \details
+ * Violation these rules may lead to unexpected behavior! Nevertheless you can
+ * implement thread safe by using the deferred-call pattern described on the wiki
+ * which also helps to implement calls that are forbidden.\n
+ * For more information, please check CAmSerializer
+ */
+class IAmCommandReceive
+{
- }
+public:
+ IAmCommandReceive() {
- virtual ~IAmCommandReceive() {
+ }
- }
+ virtual ~IAmCommandReceive() {
- /**
- * This function returns the version of the interface.
- *
- * @param version
- */
- virtual void getInterfaceVersion(std::string& version) const =0;
- /**
- * connects a source to sink
- * @return E_OK on success, E_NOT_POSSIBLE on failure, E_ALREADY_EXISTS if the connection does already exists
- *
- * @param sourceID
- * @param sinkID
- * @param mainConnectionID
- */
- virtual am_Error_e connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID) =0;
- /**
- * disconnects a mainConnection
- * @return E_OK on successes, E_NON_EXISTENT if the connection does not exist, E_NOT_POSSIBLE on error.
- *
- * @param mainConnectionID
- */
- virtual am_Error_e disconnect(const am_mainConnectionID_t mainConnectionID) =0;
- /**
- * sets the volume for a sink
- * @return E_OK on success, E_UNKOWN on error, E_OUT_OF_RANGE in case the value is out of range
- *
- * @param sinkID the sink
- * @param volume the volume
- */
- virtual am_Error_e setVolume(const am_sinkID_t sinkID, const am_mainVolume_t volume) =0;
- /**
- * This function is used to increment or decrement the current volume for a sink.
- * @return E_OK on success, E_UNKNOWN on error and E_OUT_OF_RANGE if the value is not in the given volume range.
- *
- * @param sinkID
- * @param volumeStep indicated the number of steps that should be incremented or decremented. Positive values here
- * inkrement, negative values decrement
- */
- virtual am_Error_e volumeStep(const am_sinkID_t sinkID, const int16_t volumeStep) =0;
- /**
- * sets the mute state of a sink
- * @return E_OK on success, E_UNKNOWN on error. If the mute state is already the desired one, the Daemon will return E_OK.
- *
- * @param sinkID
- * @param muteState
- */
- virtual am_Error_e setSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState) =0;
- /**
- * This method is used to set sound properties, e.g. Equalizer Values. Since the capabilities of the system can differ,
- * the exact key value pairs can be extended in each product
- * @return E_OK on success, E_OUT_OF_RANGE if value exceeds range, E_UNKNOWN in case of an error
- *
- * @param soundProperty
- * @param sinkID
- */
- virtual am_Error_e setMainSinkSoundProperty(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID) =0;
- /**
- * This method is used to set sound properties, e.g. Equalizer Values. Since the capabilities of the system can differ,
- * the exact key value pairs can be extended in each product
- * @return E_OK on success, E_OUT_OF_RANGE if value exceeds range, E_UNKNOWN in case of an error
- *
- * @param soundProperty
- * @param sourceID
- */
- virtual am_Error_e setMainSourceSoundProperty(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID) =0;
- /**
- * is used to set a specific system property.
- * @return E_OK on success, E_OUT_OF_RANGE if value exceeds range, E_UNKNOWN in case of an error
- *
- * @param property the property that shall be set
- */
- virtual am_Error_e setSystemProperty(const am_SystemProperty_s& property) =0;
- /**
- * returns the actual list of MainConnections
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listConnections returns a list of all connections
- */
- virtual am_Error_e getListMainConnections(std::vector<am_MainConnectionType_s>& listConnections) const =0;
- /**
- * returns the actual list of Sinks
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listMainSinks the list of the sinks
- */
- virtual am_Error_e getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const =0;
- /**
- * returns the actual list of Sources
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listMainSources the list of sources
- */
- virtual am_Error_e getListMainSources(std::vector<am_SourceType_s>& listMainSources) const =0;
- /**
- * This is used to retrieve all source sound properties related to a source. Returns a vector of the sound properties and
- * values as pair
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param sinkID
- * @param listSoundProperties
- */
- virtual am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundProperties) const =0;
- /**
- * This is used to retrieve all source sound properties related to a source.
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param sourceID
- * @param listSourceProperties
- */
- virtual am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSourceProperties) const =0;
- /**
- * This is used to retrieve SourceClass Information of all source classes
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSourceClasses
- */
- virtual am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const =0;
- /**
- * This is used to retrieve SinkClass Information of all sink classes
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSinkClasses
- */
- virtual am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const =0;
- /**
- * Retrieves a complete list of all systemProperties.
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSystemProperties
- */
- virtual am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const =0;
- /**
- * returns the delay in ms that the audiopath for the given mainConnection has
- * @return E_OK on success, E_NOT_POSSIBLE if timing information is not yet retrieved, E_DATABASE_ERROR on read error on
- * the database
- *
- * @param mainConnectionID
- * @param delay
- */
- virtual am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const =0;
- /**
- * this function is used to retrieve a pointer to the dBusConnectionWrapper
- * @return E_OK if pointer is valid, E_UKNOWN if AudioManager was compiled without DBus Support
- *
- * @param dbusConnectionWrapper This is a wrapper class that is needed to keep dbus inclusions away from the interface.
- * The DBusWrapperClass will return the pointer to the DbusConnection call (getDBusConnection)
- */
- virtual am_Error_e getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const =0;
- /**
- * This function returns the pointer to the socketHandler. This can be used to integrate socket-based activites like
- * communication with the mainloop of the AudioManager.
- * returns E_OK if pointer is valid, E_UNKNOWN in case AudioManager was compiled without socketHandler support,
- *
- * @param socketHandler
- */
- virtual am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) const =0;
- /**
- * asynchronous confirmation of setCommandReady.
- *
- * @param handle the handle that was handed over by setCommandReady
- * @param error E_OK if the ready command succeeded. E_UNKNOWN if an error happened.
- */
- virtual void confirmCommandReady(const uint16_t handle, const am_Error_e error) =0;
- /**
- * asynchronous confirmation of setCommandRundown
- *
- * @param handle the handle that was given via setCommandRundown
- * @param error E_OK if the ready command succeeded. E_UNKNOWN if an error happened.
- */
- virtual void confirmCommandRundown(const uint16_t handle, const am_Error_e error) =0;
- /**
- * Retrieves the list of MainNotifications for a sink. Does not return the possible ones.
- *
- * @param sinkID The sinkID
- * @param listMainNotificationConfigurations
- */
- virtual am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const =0;
- /**
- * Retrieves the list of MainNotifications for a source. Does not return the possible ones.
- *
- * @param sourceID The sourceID
- * @param listMainNotificationConfigurations
- */
- virtual am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const =0;
- /**
- * sets a MainNotificationConfiuration. This can be used to turn on an off notifications an to change the mode of the
- * configuration.
- * @return E_OK on success, E_NON_EXISTENT if sinkID does not exists, E_DATABASE_ERROR on error
- *
- * @param sinkID The sinkID of the MainNotification to be changed
- * @param mainNotificationConfiguration The MainNotifiication that needs to be set
- */
- virtual am_Error_e setMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
- /**
- * sets a MainNotificationConfiuration. This can be used to turn on an off notifications an to change the mode of the
- * configuration.
- * @return E_OK on success, E_NON_EXISTENT if sourceID does not exists, E_DATABASE_ERROR on error
- *
- * @param sourceID The sourceID of the MainNotification to be changed
- * @param mainNotificationConfiguration The MainNotifiication that needs to be set
- */
- virtual am_Error_e setMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+ }
- };
+ virtual void getInterfaceVersion(std::string& version) const =0;
+ virtual am_Error_e connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID) =0;
+ virtual am_Error_e disconnect(const am_mainConnectionID_t mainConnectionID) =0;
+ virtual am_Error_e setVolume(const am_sinkID_t sinkID, const am_mainVolume_t volume) =0;
+ virtual am_Error_e volumeStep(const am_sinkID_t sinkID, const int16_t volumeStep) =0;
+ virtual am_Error_e setSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState) =0;
+ virtual am_Error_e setMainSinkSoundProperty(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID) =0;
+ virtual am_Error_e setMainSourceSoundProperty(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID) =0;
+ virtual am_Error_e setSystemProperty(const am_SystemProperty_s& property) =0;
+ virtual am_Error_e getListMainConnections(std::vector<am_MainConnectionType_s>& listConnections) const =0;
+ virtual am_Error_e getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const =0;
+ virtual am_Error_e getListMainSources(std::vector<am_SourceType_s>& listMainSources) const =0;
+ virtual am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundProperties) const =0;
+ virtual am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSourceProperties) const =0;
+ virtual am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const =0;
+ virtual am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const =0;
+ virtual am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const =0;
+ virtual am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const =0;
+ virtual am_Error_e getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const =0;
+ virtual am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) const =0;
+ virtual void confirmCommandReady(const uint16_t handle, const am_Error_e error) =0;
+ virtual void confirmCommandRundown(const uint16_t handle, const am_Error_e error) =0;
+ virtual am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const =0;
+ virtual am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const =0;
+ virtual am_Error_e setMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+ virtual am_Error_e setMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+
+};
}
-#endif // !defined(EA_52591199_D6BE_451e_92F8_032DA5493EF4__INCLUDED_)
+#endif // !defined(EA_FA7CC74B_CBCB_4356_89AE_B7F88A8CEC7F__INCLUDED_)
diff --git a/include/command/IAmCommandSend.h b/include/command/IAmCommandSend.h
index 15577ed..9023bfd 100644
--- a/include/command/IAmCommandSend.h
+++ b/include/command/IAmCommandSend.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,15 +12,16 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_37AC20B5_5E6D_4a3f_BA5F_B3F3CBB21C36__INCLUDED_)
-#define EA_37AC20B5_5E6D_4a3f_BA5F_B3F3CBB21C36__INCLUDED_
+#if !defined(EA_68F78255_5C2E_4b32_A21C_E8CEDD4641B3__INCLUDED_)
+#define EA_68F78255_5C2E_4b32_A21C_E8CEDD4641B3__INCLUDED_
#include <vector>
#include <string>
@@ -35,221 +36,66 @@ class IAmCommandReceive;
#define CommandSendVersion "2.0"
namespace am {
- /**
- * This interface handles all communication from the AudioManagerDaemon towards the system. It is designed in such a way
- * that only callbacks with no return types are implemented. So when the CommandInterfacePlugins are designed in such a
- * way that they broadcast signals to any node who is interested in the particular information (like signals on Dbus for
- * example), more information can be retrieved via the CommandReceiveInterface.
- * There are two rules that have to be kept in mind when implementing against this interface:\n
- * \warning
- * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
- * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\n
- * \details
- * Violation these rules may lead to unexpected behavior! Nevertheless you can implement thread safe by using the deferred-
- * call pattern described on the wiki which also helps to implement calls that are forbidden.\n
- * For more information, please check CAmSerializer
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:24
- */
- class IAmCommandSend
- {
- public:
- IAmCommandSend() {
+/**
+ * This interface handles all communication from the AudioManagerDaemon towards
+ * the system. It is designed in such a way that only callbacks with no return
+ * types are implemented. So when the CommandInterfacePlugins are designed in such
+ * a way that they broadcast signals to any node who is interested in the
+ * particular information (like signals on Dbus for example), more information can
+ * be retrieved via the CommandReceiveInterface.
+ * There are two rules that have to be kept in mind when implementing against this
+ * interface:\n
+ * \warning
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
+ * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS
+ * CALL THAT EXPECTS A RETURN VALUE.\n
+ * \details
+ * Violation these rules may lead to unexpected behavior! Nevertheless you can
+ * implement thread safe by using the deferred-call pattern described on the wiki
+ * which also helps to implement calls that are forbidden.\n
+ * For more information, please check CAmSerializer
+ */
+class IAmCommandSend
+{
- }
+public:
+ IAmCommandSend() {
- virtual ~IAmCommandSend() {
+ }
- }
+ virtual ~IAmCommandSend() {
- /**
- * returns the interface version as string.
- *
- * @param version
- */
- virtual void getInterfaceVersion(std::string& version) const =0;
- /**
- * This command starts the interface, the plugin itself. This is not meant to start communication with the HMI itself. It
- * is a good idea to implement here everything that sets up the basic communication like DbusCommunication etc...
- * Be aware of side effects with systemd and socketbased communication!
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param commandreceiveinterface pointer to the receive interface. Is used to call the audiomanagerdaemon
- */
- virtual am_Error_e startupInterface(IAmCommandReceive* commandreceiveinterface) =0;
- /**
- * This function will indirectly be called by the Controller and is used to start the Communication. Before this command,
- * all communication will be ignored by the AudioManager.
- * After the Plugin is ready, it will asynchronously answer with condfirmCommandReady, the handle that is handed over must
- * be returned.
- *
- * @param handle the handle uniquely idenfies the request
- */
- virtual void setCommandReady(const uint16_t handle) =0;
- /**
- * This function will indirectly be called by the Controller and is used to stop the Communication. After this command,
- * all communication will be ignored by the AudioManager. The plugin has to be prepared that either the power will be
- * switched off or the Interface is started again with setCommandReady
- * After the Plugin is ready to rundown, it will asynchronously answer with condfirmCommandRundown, the handle that is
- * handed over must be returned.
- *
- * @param handle This handle uniquly idenfies the request
- */
- virtual void setCommandRundown(const uint16_t handle) =0;
- /**
- * Callback that is called when the number of connections change
- *
- * @param mainConnection
- */
- virtual void cbNewMainConnection(const am_MainConnectionType_s& mainConnection) =0;
- /**
- * Callback that is called when the number of connections change
- *
- * @param mainConnection
- */
- virtual void cbRemovedMainConnection(const am_mainConnectionID_t mainConnection) =0;
- /**
- * Callback that is called when the number of sinks change
- *
- * @param sink
- */
- virtual void cbNewSink(const am_SinkType_s& sink) =0;
- /**
- * Callback that is called when the number of sinks change
- *
- * @param sinkID
- */
- virtual void cbRemovedSink(const am_sinkID_t sinkID) =0;
- /**
- * Callback that is called when the number of sources change
- *
- * @param source
- */
- virtual void cbNewSource(const am_SourceType_s& source) =0;
- /**
- * Callback that is called when the number of sources change
- *
- * @param source
- */
- virtual void cbRemovedSource(const am_sourceID_t source) =0;
- /**
- * this callback is fired if the number of sink classes changed
- */
- virtual void cbNumberOfSinkClassesChanged() =0;
- /**
- * this callback is fired if the number of source classes changed
- */
- virtual void cbNumberOfSourceClassesChanged() =0;
- /**
- * This callback is called when the ConnectionState of a connection changed.
- *
- * @param connectionID
- * @param connectionState
- */
- virtual void cbMainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState) =0;
- /**
- * this callback indicates that a sinkSoundProperty has changed.
- *
- * @param sinkID
- * @param soundProperty
- */
- virtual void cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty) =0;
- /**
- * this callback indicates that a sourceSoundProperty has changed.
- *
- * @param sourceID
- * @param soundProperty
- */
- virtual void cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty) =0;
- /**
- * this callback is called when the availability of a sink has changed
- *
- * @param sinkID
- * @param availability
- */
- virtual void cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s& availability) =0;
- /**
- * this callback is called when the availability of source has changed.
- *
- * @param sourceID
- * @param availability
- */
- virtual void cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s& availability) =0;
- /**
- * this callback indicates a volume change on the indicated sink
- *
- * @param sinkID
- * @param volume
- */
- virtual void cbVolumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume) =0;
- /**
- * this callback indicates a mute state change on a sink.
- *
- * @param sinkID
- * @param muteState
- */
- virtual void cbSinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState) =0;
- /**
- * is fired if a systemProperty changed
- *
- * @param systemProperty
- */
- virtual void cbSystemPropertyChanged(const am_SystemProperty_s& systemProperty) =0;
- /**
- * This callback is fired if the timinginformation for a mainConnectionID changed
- *
- * @param mainConnectionID
- * @param time
- */
- virtual void cbTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time) =0;
- /**
- * This callback is called when a sink is updated.
- *
- * @param sinkID The sinkID that is updated
- * @param sinkClassID The sinkClassID of the updated sink. gives the current value even if not updated
- * @param listMainSoundProperties The list of mainSoundProperties. Gives the actual list of MainSoundProperties even if
- * not changed
- */
- virtual void cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
- /**
- * This callback is called when a source is updated.
- *
- * @param sourceID The sourceID that is updated
- * @param sourceClassID The sourceClassID of the updated source. Gives the current value even if not updated
- * @param listMainSoundProperties The list of mainSoundProperties. Gives the actual list of MainSoundProperties even if
- * not changed
- */
- virtual void cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
- /**
- * This callback is called when a notificated value of a sink changes.
- *
- * @param sinkID The sinkID
- * @param notification The payload of the notification
- */
- virtual void cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s& notification) =0;
- /**
- * This callback is called when a notifcated value of a source changes.
- *
- * @param sourceID The sourceID
- * @param notification The payload of the notification
- */
- virtual void cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s& notification) =0;
- /**
- * This callback is triggered when a mainNotificationConfiguration is changed.
- *
- * @param sinkID
- * @param mainNotificationConfiguration The MainNotificationConfiguration that changed
- */
- virtual void cbMainSinkNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
- /**
- * This callback is triggered when a mainNotificationConfiguration is changed.
- *
- * @param sourceID
- * @param mainNotificationConfiguration The MainNotificationConfiguration that changed
- */
- virtual void cbMainSourceNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+ }
- };
+ virtual void getInterfaceVersion(std::string& version) const =0;
+ virtual am_Error_e startupInterface(IAmCommandReceive* commandreceiveinterface) =0;
+ virtual void setCommandReady(const uint16_t handle) =0;
+ virtual void setCommandRundown(const uint16_t handle) =0;
+ virtual void cbNewMainConnection(const am_MainConnectionType_s& mainConnection) =0;
+ virtual void cbRemovedMainConnection(const am_mainConnectionID_t mainConnection) =0;
+ virtual void cbNewSink(const am_SinkType_s& sink) =0;
+ virtual void cbRemovedSink(const am_sinkID_t sinkID) =0;
+ virtual void cbNewSource(const am_SourceType_s& source) =0;
+ virtual void cbRemovedSource(const am_sourceID_t source) =0;
+ virtual void cbNumberOfSinkClassesChanged() =0;
+ virtual void cbNumberOfSourceClassesChanged() =0;
+ virtual void cbMainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState) =0;
+ virtual void cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty) =0;
+ virtual void cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty) =0;
+ virtual void cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s& availability) =0;
+ virtual void cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s& availability) =0;
+ virtual void cbVolumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume) =0;
+ virtual void cbSinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState) =0;
+ virtual void cbSystemPropertyChanged(const am_SystemProperty_s& systemProperty) =0;
+ virtual void cbTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time) =0;
+ virtual void cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual void cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual void cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s& notification) =0;
+ virtual void cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s& notification) =0;
+ virtual void cbMainSinkNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+ virtual void cbMainSourceNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+
+};
}
-#endif // !defined(EA_37AC20B5_5E6D_4a3f_BA5F_B3F3CBB21C36__INCLUDED_)
+#endif // !defined(EA_68F78255_5C2E_4b32_A21C_E8CEDD4641B3__INCLUDED_)
diff --git a/include/control/IAmControlReceive.h b/include/control/IAmControlReceive.h
index b5ed674..cafa6fa 100644
--- a/include/control/IAmControlReceive.h
+++ b/include/control/IAmControlReceive.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,15 +12,16 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_D485A61C_B7C5_4803_B4BD_2AD92893E9CA__INCLUDED_)
-#define EA_D485A61C_B7C5_4803_B4BD_2AD92893E9CA__INCLUDED_
+#if !defined(EA_55795AA7_FC6F_4fa0_81B9_5AF40198B73A__INCLUDED_)
+#define EA_55795AA7_FC6F_4fa0_81B9_5AF40198B73A__INCLUDED_
#include <vector>
#include <string>
@@ -31,813 +32,131 @@ class CAmSocketHandler;
#include "audiomanagertypes.h"
-#include "projecttypes.h"
#include "NodeStateManager.h"
#define ControlReceiveVersion "2.0"
namespace am {
- /**
- * This interface gives access to all important functions of the audiomanager that are used by the AudioManagerController
- * to control the system.
- * There are two rules that have to be kept in mind when implementing against this interface:\n
- * \warning
- * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
- * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\n
- * \details
- * Violation these rules may lead to unexpected behavior! Nevertheless you can implement thread safe by using the deferred-
- * call pattern described on the wiki which also helps to implement calls that are forbidden.\n
- * For more information, please check CAmSerializer
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:24
- */
- class IAmControlReceive
- {
- public:
- IAmControlReceive() {
+/**
+ * This interface gives access to all important functions of the audiomanager that
+ * are used by the AudioManagerController to control the system.
+ * There are two rules that have to be kept in mind when implementing against this
+ * interface:\n
+ * \warning
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
+ * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS
+ * CALL THAT EXPECTS A RETURN VALUE.\n
+ * \details
+ * Violation these rules may lead to unexpected behavior! Nevertheless you can
+ * implement thread safe by using the deferred-call pattern described on the wiki
+ * which also helps to implement calls that are forbidden.\n
+ * For more information, please check CAmSerializer
+ */
+class IAmControlReceive
+{
- }
+public:
+ IAmControlReceive() {
- virtual ~IAmControlReceive() {
+ }
- }
+ virtual ~IAmControlReceive() {
- /**
- * This function returns the version of the interface
- *
- * @param version
- */
- virtual void getInterfaceVersion(std::string& version) const =0;
- /**
- * calculates a route from source to sink.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param onlyfree if true return only routes which use gateways that are not in use at the moment
- * @param sourceID
- * @param sinkID
- * @param returnList this is a list of routes that are possible to take. unsorted! The longest could be first.
- * In case not route can be found, the list will return empty.
- */
- virtual am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList) =0;
- /**
- * With this function, elementary connects can be triggered by the controller.
- * @return E_OK on success, E_UNKNOWN on error, E_WRONG_FORMAT of connectionFormats do not match, E_NO_CHANGE if the
- * desired connection is already build up
- *
- * @param handle
- * @param connectionID
- * @param format
- * @param sourceID
- * @param sinkID
- */
- virtual am_Error_e connect(am_Handle_s& handle, am_connectionID_t& connectionID, const am_ConnectionFormat_e format, const am_sourceID_t sourceID, const am_sinkID_t sinkID) =0;
- /**
- * is used to disconnect a connection
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if connection was not found, E_NO_CHANGE if no change is
- * neccessary
- *
- * @param handle
- * @param connectionID
- */
- virtual am_Error_e disconnect(am_Handle_s& handle, const am_connectionID_t connectionID) =0;
- /**
- * triggers a cross fade.
- * @return E_OK on success, E_UNKNOWN on error E_NO_CHANGE if no change is neccessary
- *
- * @param handle
- * @param hotSource this is the source that is going to be the active one after the fading
- * @param crossfaderID
- * @param rampType
- * @param rampTime rampTime 0 means default value
- */
- virtual am_Error_e crossfade(am_Handle_s& handle, const am_HotSink_e hotSource, const am_crossfaderID_t crossfaderID, const am_RampType_e rampType, const am_time_t rampTime) =0;
- /**
- * with this method, all actions that have a handle assigned can be stopped.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param handle the handle of the action to be stopped
- */
- virtual am_Error_e abortAction(const am_Handle_s handle) =0;
- /**
- * this method sets a source state for a source. This function will trigger the callback cbAckSetSourceState
- * @return E_OK on success, E_NO_CHANGE if the desired value is already correct, E_UNKNOWN on error, E_NO_CHANGE if no
- * change is neccessary
- *
- * @param handle
- * @param sourceID
- * @param state
- */
- virtual am_Error_e setSourceState(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SourceState_e state) =0;
- /**
- * with this function, setting of sinks volumes is done. The behavior of the volume set is depended on the given ramp and
- * time information.
- * This function is not only used to ramp volume, but also to mute and direct set the level. Exact behavior is depended on
- * the selected mute ramps.
- * @return E_OK on success, E_NO_CHANGE if the volume is already on the desired value, E_OUT_OF_RANGE is the volume is out
- * of range, E_UNKNOWN on every other error.
- *
- * @param handle
- * @param sinkID
- * @param volume
- * @param ramp
- * @param time
- */
- virtual am_Error_e setSinkVolume(am_Handle_s& handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time) =0;
- /**
- * with this function, setting of source volumes is done. The behavior of the volume set is depended on the given ramp and
- * time information.
- * This function is not only used to ramp volume, but also to mute and direct set the level. Exact behavior is depended on
- * the selected mute ramps.
- * @return E_OK on success, E_NO_CHANGE if the volume is already on the desired value, E_OUT_OF_RANGE is the volume is out
- * of range, E_UNKNOWN on every other error.
- *
- * @param handle
- * @param sourceID
- * @param volume
- * @param rampType
- * @param time
- */
- virtual am_Error_e setSourceVolume(am_Handle_s& handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_RampType_e rampType, const am_time_t time) =0;
- /**
- * is used to set several sinkSoundProperties at a time
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE if property is out of range, E_NO_CHANGE if no change is
- * neccessary
- *
- * @param handle
- * @param sinkID
- * @param soundProperty
- */
- virtual am_Error_e setSinkSoundProperties(am_Handle_s& handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& soundProperty) =0;
- /**
- * is used to set sinkSoundProperties
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE if property is out of range, E_NO_CHANGE if no change is
- * neccessary
- *
- * @param handle
- * @param sinkID
- * @param soundProperty
- */
- virtual am_Error_e setSinkSoundProperty(am_Handle_s& handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty) =0;
- /**
- * is used to set several SourceSoundProperties at a time
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE if property is out of range. E_NO_CHANGE if no change is
- * neccessary
- *
- * @param handle
- * @param sourceID
- * @param soundProperty
- */
- virtual am_Error_e setSourceSoundProperties(am_Handle_s& handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& soundProperty) =0;
- /**
- * is used to set sourceSoundProperties
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE if property is out of range. E_NO_CHANGE if no change is
- * neccessary
- *
- * @param handle
- * @param sourceID
- * @param soundProperty
- */
- virtual am_Error_e setSourceSoundProperty(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty) =0;
- /**
- * sets the domain state of a domain
- * @return E_OK on success, E_UNKNOWN on error, E_NO_CHANGE if no change is neccessary
- *
- * @param domainID
- * @param domainState
- */
- virtual am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState) =0;
- /**
- * enters a domain in the database, creates and ID
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param domainData domainID in am_Domain_s must be 0 here
- * @param domainID
- */
- virtual am_Error_e enterDomainDB(const am_Domain_s& domainData, am_domainID_t& domainID) =0;
- /**
- * enters a mainconnection in the database, creates and ID
- * @return E_OK on success, E_DATABASE_ERROR if the database had an error
- *
- * @param mainConnectionData the MainConnectionID is omitted since it is created during the registration
- * @param connectionID
- */
- virtual am_Error_e enterMainConnectionDB(const am_MainConnection_s& mainConnectionData, am_mainConnectionID_t& connectionID) =0;
- /**
- * enters a sink in the database.
- * The sinkID in am_Sink_s shall be 0 in case of a dynamic added source A sinkID greater than 100 will be assigned. If a
- * specific sinkID with a value <100 is given, the given value will be used. This is for a static setup where the ID's are
- * predefined.
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param sinkData the sinkID will be omitted since it is created during the registration
- * @param sinkID
- */
- virtual am_Error_e enterSinkDB(const am_Sink_s& sinkData, am_sinkID_t& sinkID) =0;
- /**
- * enters a crossfader in the database.
- * The crossfaderID in am_Crossfader_s shall be 0 in case of a dynamic added source A crossfaderID greater than 100 will
- * be assigned. If a specific crossfaderID with a value <100 is given, the given value will be used. This is for a static
- * setup where the ID's are predefined.
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param crossfaderData the ID in the data will be ignored since it is created during the registration
- * @param crossfaderID
- */
- virtual am_Error_e enterCrossfaderDB(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) =0;
- /**
- * enters a gateway in the database.
- * The gatewayID in am_Gateway_s shall be 0 in case of a dynamic added source A gatewayID greater than 100 will be
- * assigned. If a specific gatewayID with a value <100 is given, the given value will be used. This is for a static setup
- * where the ID's are predefined.
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param gatewayData In a fixed setup, the gatewayID must be below 100. In a dynamic setup, the gatewayID shall be 0!
- * listSourceFormats and listSinkFormats are empty at registration time. Values are taken over when sources and sinks are
- * registered.
- * @param gatewayID
- */
- virtual am_Error_e enterGatewayDB(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) =0;
- /**
- * enters a source in the database.
- * The sourceID in am_Source_s shall be 0 in case of a dynamic added source A sourceID greater than 100 will be assigned.
- * If a specific sourceID with a value <100 is given, the given value will be used. This is for a static setup where the
- * ID's are predefined.
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param sourceData sourceID is omitted here since it is created during registration
- * @param sourceID
- */
- virtual am_Error_e enterSourceDB(const am_Source_s& sourceData, am_sourceID_t& sourceID) =0;
- /**
- * Enters a sourceClass into the database.
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param sinkClass IDs given with the SinkCLassID are valid below 100 (static). If given as 0, sinkClass will be
- * enterd dynamic and ID above 100 will be created.
- * @param sinkClassID
- */
- virtual am_Error_e enterSinkClassDB(const am_SinkClass_s& sinkClass, am_sinkClass_t& sinkClassID) =0;
- /**
- * Enters a sourceClass into the database.
- * The sourceClassID in am_sourceClass_s shall be 0 in case of a dynamic added source A sourceClassID greater than 100
- * will be assigned. If a specific sourceClassID with a value <100 is given, the given value will be used. This is for a
- * static setup where the ID's are predefined.
- * @return E_OK on success, E_ALREADY_EXISTENT if the ID or name is already in the database, E_DATABASE_ERROR if the
- * database had an error
- *
- * @param sourceClassID
- * @param sourceClass IDs given with the SourceCLassID are valid below 100 (static). If given as 0, sourceClass will be
- * enterd dynamic and ID above 100 will be created.
- */
- virtual am_Error_e enterSourceClassDB(am_sourceClass_t& sourceClassID, const am_SourceClass_s& sourceClass) =0;
- /**
- * changes class information of a sinkclass.
- * The properties will overwrite the values of the sinkClassID given in the sinkClass.
- * It is the duty of the controller to check if the property is valid. If it does not exist, the daemon will not return an
- * error.
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sinkClassID was not found.
- *
- * @param sinkClass if a SourceClass ID other than 0 is given, the classInformation replaces the existing one. In case
- * of ClassID 0, a new classID is created and returned
- */
- virtual am_Error_e changeSinkClassInfoDB(const am_SinkClass_s& sinkClass) =0;
- /**
- * changes class information of a sourceClass.
- * The properties will overwrite the values of the sourceClassID given in the sourceClass.
- * It is the duty of the controller to check if the property is valid. If it does not exist, the daemon will not return an
- * error.
- * @return E_OK on success, E_DATABASE_ERROR on error and E_NON_EXISTENT if the ClassID does not exist.
- *
- * @param sourceClass if a SourceClass ID other than 0 is given, the classInformation replaces the existing one. In
- * case of ClassID 0, a new classID is created and returned
- */
- virtual am_Error_e changeSourceClassInfoDB(const am_SourceClass_s& sourceClass) =0;
- /**
- * This function is used to enter the system Properties into the database.
- * All entries in the database will be erased before entering the new List. It should only be called once at system
- * startup.
- * @return E_OK on success, E_DATABASE_ERROR if the database had an error
- *
- * @param listSystemProperties
- */
- virtual am_Error_e enterSystemPropertiesListDB(const std::vector<am_SystemProperty_s>& listSystemProperties) =0;
- /**
- * changes the mainConnectionState of MainConnection
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if mainconnection
- *
- * @param mainconnectionID
- * @param listConnectionID
- */
- virtual am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID) =0;
- /**
- * changes the mainConnectionState of MainConnection
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if mainconnection
- *
- * @param mainconnectionID
- * @param connectionState
- */
- virtual am_Error_e changeMainConnectionStateDB(const am_mainConnectionID_t mainconnectionID, const am_ConnectionState_e connectionState) =0;
- /**
- * changes the sink volume of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param mainVolume
- * @param sinkID
- */
- virtual am_Error_e changeSinkMainVolumeDB(const am_mainVolume_t mainVolume, const am_sinkID_t sinkID) =0;
- /**
- * changes the availablility of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param availability
- * @param sinkID
- */
- virtual am_Error_e changeSinkAvailabilityDB(const am_Availability_s& availability, const am_sinkID_t sinkID) =0;
- /**
- * changes the domainstate of a domain
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if domain was not found
- *
- * @param domainState
- * @param domainID
- */
- virtual am_Error_e changDomainStateDB(const am_DomainState_e domainState, const am_domainID_t domainID) =0;
- /**
- * changes the mute state of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param muteState
- * @param sinkID
- */
- virtual am_Error_e changeSinkMuteStateDB(const am_MuteState_e muteState, const am_sinkID_t sinkID) =0;
- /**
- * changes the mainsinksoundproperty of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param soundProperty
- * @param sinkID
- */
- virtual am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID) =0;
- /**
- * changes the mainsourcesoundproperty of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if source was not found
- *
- * @param soundProperty
- * @param sourceID
- */
- virtual am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID) =0;
- /**
- * changes the availablility of a source
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if source was not found
- *
- * @param availability
- * @param sourceID
- */
- virtual am_Error_e changeSourceAvailabilityDB(const am_Availability_s& availability, const am_sourceID_t sourceID) =0;
- /**
- * changes a systemProperty
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if property was not found
- *
- * @param property
- */
- virtual am_Error_e changeSystemPropertyDB(const am_SystemProperty_s& property) =0;
- /**
- * removes a mainconnection from the DB
- * @return E_OK on success, E_NON_EXISTENT if main connection was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param mainConnectionID
- */
- virtual am_Error_e removeMainConnectionDB(const am_mainConnectionID_t mainConnectionID) =0;
- /**
- * removes a sink from the DB
- * @return E_OK on success, E_NON_EXISTENT if sink was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param sinkID
- */
- virtual am_Error_e removeSinkDB(const am_sinkID_t sinkID) =0;
- /**
- * removes a source from the DB
- * @return E_OK on success, E_NON_EXISTENT if source was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param sourceID
- */
- virtual am_Error_e removeSourceDB(const am_sourceID_t sourceID) =0;
- /**
- * removes a gateway from the DB
- * @return E_OK on success, E_NON_EXISTENT if gateway was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param gatewayID
- */
- virtual am_Error_e removeGatewayDB(const am_gatewayID_t gatewayID) =0;
- /**
- * removes a crossfader from the DB
- * @return E_OK on success, E_NON_EXISTENT if crossfader was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param crossfaderID
- */
- virtual am_Error_e removeCrossfaderDB(const am_crossfaderID_t crossfaderID) =0;
- /**
- * removes a domain from the DB
- * @return E_OK on success, E_NON_EXISTENT if domain was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param domainID
- */
- virtual am_Error_e removeDomainDB(const am_domainID_t domainID) =0;
- /**
- * removes a domain from the DB
- * @return E_OK on success, E_NON_EXISTENT if domain was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param sinkClassID
- */
- virtual am_Error_e removeSinkClassDB(const am_sinkClass_t sinkClassID) =0;
- /**
- * removes a domain from the DB
- * @return E_OK on success, E_NON_EXISTENT if domain was not found, E_DATABASE_ERROR if the database had an error
- *
- * @param sourceClassID
- */
- virtual am_Error_e removeSourceClassDB(const am_sourceClass_t sourceClassID) =0;
- /**
- * returns the ClassInformation of a source
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if source was not found
- *
- * @param sourceID
- * @param classInfo
- */
- virtual am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s& classInfo) const =0;
- /**
- * returns the ClassInformation of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param sinkID
- * @param sinkClass
- */
- virtual am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s& sinkClass) const =0;
- /**
- * returns the sinkData of a sink
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param sinkID
- * @param sinkData
- */
- virtual am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s& sinkData) const =0;
- /**
- * returns the sourcekData of a source
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if sink was not found
- *
- * @param sourceID
- * @param sourceData
- */
- virtual am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s& sourceData) const =0;
- /**
- * return source and sink of a gateway
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if gateway was not found
- *
- * @param gatewayID
- * @param gatewayData
- */
- virtual am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s& gatewayData) const =0;
- /**
- * returns sources and the sink of a crossfader
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if crossfader was not found
- *
- * @param crossfaderID
- * @param crossfaderData
- */
- virtual am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s& crossfaderData) const =0;
- /**
- * returns sources and the sink of a crossfader
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if crossfader was not found
- *
- * @param mainConnectionID
- * @param mainConnectionData
- */
- virtual am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s& mainConnectionData) const =0;
- /**
- * returns all sinks of a domain
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if domain was not found
- *
- * @param domainID
- * @param listSinkID
- */
- virtual am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t>& listSinkID) const =0;
- /**
- * returns all source of a domain
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if domain was not found
- *
- * @param domainID
- * @param listSourceID
- */
- virtual am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t>& listSourceID) const =0;
- /**
- * returns all crossfaders of a domain
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if domain was not found
- *
- * @param domainID
- * @param listCrossfadersID
- */
- virtual am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t>& listCrossfadersID) const =0;
- /**
- * returns all gateways of a domain
- * @return E_OK on success, E_DATABASE_ERROR on error, E_NON_EXISTENT if domain was not found
- *
- * @param domainID
- * @param listGatewaysID
- */
- virtual am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t>& listGatewaysID) const =0;
- /**
- * returns a complete list of all MainConnections
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listMainConnections
- */
- virtual am_Error_e getListMainConnections(std::vector<am_MainConnection_s>& listMainConnections) const =0;
- /**
- * returns a complete list of all domains
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listDomains
- */
- virtual am_Error_e getListDomains(std::vector<am_Domain_s>& listDomains) const =0;
- /**
- * returns a complete list of all Connections
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listConnections
- */
- virtual am_Error_e getListConnections(std::vector<am_Connection_s>& listConnections) const =0;
- /**
- * returns a list of all sinks
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSinks
- */
- virtual am_Error_e getListSinks(std::vector<am_Sink_s>& listSinks) const =0;
- /**
- * returns a list of all sources
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSources
- */
- virtual am_Error_e getListSources(std::vector<am_Source_s>& listSources) const =0;
- /**
- * returns a list of all source classes
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSourceClasses
- */
- virtual am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const =0;
- /**
- * returns a list of all handles
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listHandles
- */
- virtual am_Error_e getListHandles(std::vector<am_Handle_s>& listHandles) const =0;
- /**
- * returns a list of all crossfaders
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listCrossfaders
- */
- virtual am_Error_e getListCrossfaders(std::vector<am_Crossfader_s>& listCrossfaders) const =0;
- /**
- * returns a list of gateways
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listGateways
- */
- virtual am_Error_e getListGateways(std::vector<am_Gateway_s>& listGateways) const =0;
- /**
- * returns a list of all sink classes
- * @return E_OK on success, E_DATABASE_ERROR on error
- *
- * @param listSinkClasses
- */
- virtual am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const =0;
- /**
- * returns the list of SystemProperties
- *
- * @param listSystemProperties
- */
- virtual am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const =0;
- /**
- * sets the command interface to ready. Will send setCommandReady to each of the plugins. The corresponding answer is
- * confirmCommandReady.
- */
- virtual void setCommandReady() =0;
- /**
- * sets the command interface into the rundown state. Will send setCommandRundown to each of the plugins. The
- * corresponding answer is confirmCommandRundown.
- */
- virtual void setCommandRundown() =0;
- /**
- * sets the routinginterface to ready. Will send the command setRoutingReady to each of the plugins. The related answer
- * is confirmRoutingReady.
- */
- virtual void setRoutingReady() =0;
- /**
- * sets the routinginterface to the rundown state. Will send the command setRoutingRundown to each of the plugins. The
- * related answer is confirmRoutingRundown.
- */
- virtual void setRoutingRundown() =0;
- /**
- * acknowledges the setControllerReady call.
- *
- * @param error E_OK if the ready command succeeded. E_UNKNOWN if an error happened.
- */
- virtual void confirmControllerReady(const am_Error_e error) =0;
- /**
- * Acknowledges the setControllerRundown call.
- *
- * @param error E_OK if the ready command succeeded. E_UNKNOWN if an error happened.
- * If an error !=E_OK is returned than the AudioManager will terminate with an exception.
- * If E_OK is returned, the AudioManager will exit clean
- */
- virtual void confirmControllerRundown(const am_Error_e error) =0;
- /**
- * This function returns the pointer to the socketHandler. This can be used to integrate socket-based activites like
- * communication with the mainloop of the AudioManager.
- * returns E_OK if pointer is valid, E_UNKNOWN in case AudioManager was compiled without socketHandler support,
- *
- * @param socketHandler
- */
- virtual am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) =0;
- /**
- * Change the data of the source.
- *
- * @param sourceID The sourceID of the source that needs to be changed.
- * @param sourceClassID If this sourceClassID !=0, the sourceClassID of the source will be changed.
- * @param listSoundProperties If the size of the list !=0, the list replaces the current one.
- * @param listConnectionFormats If the size of the list !=0, the list replaces the current one.
- * @param listMainSoundProperties If the size of the list !=0, the list replaces the current one.
- */
- virtual am_Error_e changeSourceDB(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) =0;
- /**
- * Change the data of the sink.
- *
- * @param sinkID the sinkID of the sink to be changed
- * @param sinkClassID If !=0, the sinkClass will replace the current one.
- * @param listSoundProperties The list of the sound properties. If The lenght of the list !=0, the current
- * soundProperties will be changed.
- * @param listConnectionFormats The list of the connectionformats to be changed. They will only be changed, if length
- * of the list !=0
- * @param listMainSoundProperties The list of the mainsoundproperties that need to be changed. Will be changed. if the
- * length of the list !=0
- */
- virtual am_Error_e changeSinkDB(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) =0;
- /**
- * changes Gateway Data
- *
- * @param gatewayID the gatewayData to be changed
- * @param listSourceConnectionFormats The list of the sourceConnectionFormats. Will be changed it the lenght of the
- * list !=0.
- * @param listSinkConnectionFormats The list of the sinkConnectionFormats. Will be changed it the lenght of the list
- * !=0.
- * @param convertionMatrix the convertionmatrix
- */
- virtual am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_ConnectionFormat_e>& listSourceConnectionFormats, const std::vector<am_ConnectionFormat_e>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) =0;
- /**
- * with this function, setting of multiple volumes at a time is done. The behavior of the volume set is depended on the
- * given ramp and time information.
- * This function is not only used to ramp volume, but also to mute and direct set the level. Exact behavior is depended on
- * the selected mute ramps.
- * @return E_OK on success, E_NO_CHANGE if the volume is already on the desired value, E_OUT_OF_RANGE is the volume is out
- * of range, E_UNKNOWN on every other error.
- *
- * @param handle
- * @param listVolumes
- */
- virtual am_Error_e setVolumes(am_Handle_s& handle, const std::vector<am_Volumes_s>& listVolumes) =0;
- /**
- * set a sink notification configuration
- *
- * @param handle the handle that will be assigned for this operation
- * @param sinkID the sinkID
- * @param notificationConfiguration
- */
- virtual am_Error_e setSinkNotificationConfiguration(am_Handle_s& handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
- /**
- * set a source notification configuration
- *
- * @param handle the handle that will be assigned for this operation
- * @param sourceID the sinkID
- * @param notificationConfiguration
- */
- virtual am_Error_e setSourceNotificationConfiguration(am_Handle_s& handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
- /**
- * Sends out the main notificiation of a sink
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param sinkID
- * @param notificationPayload the payload
- */
- virtual void sendMainSinkNotificationPayload(const am_sinkID_t sinkID, const am_NotificationPayload_s& notificationPayload) =0;
- /**
- * Sends out the main notificiation of a source
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param sourceID
- * @param notificationPayload the payload
- */
- virtual void sendMainSourceNotificationPayload(const am_sourceID_t sourceID, const am_NotificationPayload_s& notificationPayload) =0;
- /**
- * change the mainNotificationConfiguration of a sink
- * @return E_OK when successful, E_DATABASE on error
- *
- * @param sinkID the sinkID
- * @param mainNotificationConfiguration the mainNotificationConfiguration
- */
- virtual am_Error_e changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
- /**
- * change the mainNotificationConfiguration of a source
- * @return E_OK when successful, E_DATABASE on error
- *
- * @param sourceID the sourceID
- * @param mainNotificationConfiguration the mainNotificationConfiguration
- */
- virtual am_Error_e changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
- /**
- * Retrieves the Restart Reason Property
- * @return E_OK on success E_UNKNOWN if property could not be retrieved.
- *
- * @param restartReason the restart reason
- */
- virtual am_Error_e getRestartReasonPropertyNSM(NsmRestartReason_e& restartReason) =0;
- /**
- * Retrieves the shutdown reason property
- * @return E_OK on success E_UNKNOWN if property could not be retrieved.
- *
- * @param ShutdownReason The shutdown reason
- */
- virtual am_Error_e getShutdownReasonPropertyNSM(NsmShutdownReason_e& ShutdownReason) =0;
- /**
- * Retrieves the running reason
- * @return E_OK on success E_UNKNOWN if property could not be retrieved.
- *
- * @param nsmRunningReason the running reson
- */
- virtual am_Error_e getRunningReasonPropertyNSM(NsmRunningReason_e& nsmRunningReason) =0;
- /**
- * @return NsmErrorStatus_Ok in case of success
- *
- * @param nsmNodeState The current node state
- */
- virtual NsmErrorStatus_e getNodeStateNSM(NsmNodeState_e& nsmNodeState) =0;
- /**
- * Retrieves the current session state
- * @return NsmErrorStatus_Ok on success E_UNKNOWN if property could not be retrieved.
- *
- * @param sessionName The current session state
- * @param seatID
- * @param sessionState The sessionState
- */
- virtual NsmErrorStatus_e getSessionStateNSM(const std::string& sessionName, const NsmSeat_e seatID, NsmSessionState_e& sessionState) =0;
- /**
- * Retrieves the current applicationmode
- * @return NsmErrorStatus_Ok on success E_UNKNOWN if property could not be retrieved.
- *
- * @param applicationMode The current application Mode
- */
- virtual NsmErrorStatus_e getApplicationModeNSM(NsmApplicationMode_e& applicationMode) =0;
- /**
- * Registers the AudioManager as shutdown client
- * @return NsmErrorStatus_Ok on success
- * The interface for the client will be provided by the AudioManagerDeamon, therefore is no need to mention it here.
- *
- * @param shutdownMode The shutdown mode that the controller wants to register for.
- * @param timeoutMs Max. Timeout to wait for response from shutdown client in ms
- */
- virtual NsmErrorStatus_e registerShutdownClientNSM(const uint32_t shutdownMode, const uint32_t timeoutMs) =0;
- /**
- * unregisters the AudioManager as shutdown client
- * @return NsmErrorStatus_Ok on success
- *
- * @param shutdownMode Shutdown mode for which client wants to unregister (NSM_SHUTDOWNTYPE_NORMAL,
- * NSM_SHUTDOWNTYPE_FAST)
- */
- virtual NsmErrorStatus_e unRegisterShutdownClientNSM(const uint32_t shutdownMode) =0;
- /**
- * @return E_OK on success, E_UNKOWN if interface could not be reached
- *
- * @param version
- */
- virtual am_Error_e getInterfaceVersionNSM(uint32_t& version) =0;
- /**
- * Sends out the lifecyclerequest complete to the NSM
- * @return NsmErrorStatus_Ok in case of success
- *
- * @param RequestId The request ID of the request.
- * @param status The result of the call to "LifecycleRequest". NsmErrorStatus_Ok: Request successfully processed.
- * NsmErrorStatus_Error: An error occured while processing the "LifecycleRequest".
- */
- virtual NsmErrorStatus_e sendLifecycleRequestCompleteNSM(const uint32_t RequestId, const NsmErrorStatus_e status) =0;
+ }
- };
+ virtual void getInterfaceVersion(std::string& version) const =0;
+ virtual am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList) =0;
+ virtual am_Error_e connect(am_Handle_s& handle, am_connectionID_t& connectionID, const am_CustomConnectionFormat_t format, const am_sourceID_t sourceID, const am_sinkID_t sinkID) =0;
+ virtual am_Error_e disconnect(am_Handle_s& handle, const am_connectionID_t connectionID) =0;
+ virtual am_Error_e crossfade(am_Handle_s& handle, const am_HotSink_e hotSource, const am_crossfaderID_t crossfaderID, const am_CustomRampType_t rampType, const am_time_t rampTime) =0;
+ virtual am_Error_e abortAction(const am_Handle_s handle) =0;
+ virtual am_Error_e setSourceState(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SourceState_e state) =0;
+ virtual am_Error_e setSinkVolume(am_Handle_s& handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time) =0;
+ virtual am_Error_e setSourceVolume(am_Handle_s& handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t rampType, const am_time_t time) =0;
+ virtual am_Error_e setSinkSoundProperties(am_Handle_s& handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& soundProperty) =0;
+ virtual am_Error_e setSinkSoundProperty(am_Handle_s& handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty) =0;
+ virtual am_Error_e setSourceSoundProperties(am_Handle_s& handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& soundProperty) =0;
+ virtual am_Error_e setSourceSoundProperty(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty) =0;
+ virtual am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState) =0;
+ virtual am_Error_e enterDomainDB(const am_Domain_s& domainData, am_domainID_t& domainID) =0;
+ virtual am_Error_e enterMainConnectionDB(const am_MainConnection_s& mainConnectionData, am_mainConnectionID_t& connectionID) =0;
+ virtual am_Error_e enterSinkDB(const am_Sink_s& sinkData, am_sinkID_t& sinkID) =0;
+ virtual am_Error_e enterCrossfaderDB(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) =0;
+ virtual am_Error_e enterGatewayDB(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) =0;
+ virtual am_Error_e enterSourceDB(const am_Source_s& sourceData, am_sourceID_t& sourceID) =0;
+ virtual am_Error_e enterSinkClassDB(const am_SinkClass_s& sinkClass, am_sinkClass_t& sinkClassID) =0;
+ virtual am_Error_e enterSourceClassDB(am_sourceClass_t& sourceClassID, const am_SourceClass_s& sourceClass) =0;
+ virtual am_Error_e changeSinkClassInfoDB(const am_SinkClass_s& sinkClass) =0;
+ virtual am_Error_e changeSourceClassInfoDB(const am_SourceClass_s& sourceClass) =0;
+ virtual am_Error_e enterSystemPropertiesListDB(const std::vector<am_SystemProperty_s>& listSystemProperties) =0;
+ virtual am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID) =0;
+ virtual am_Error_e changeMainConnectionStateDB(const am_mainConnectionID_t mainconnectionID, const am_ConnectionState_e connectionState) =0;
+ virtual am_Error_e changeSinkMainVolumeDB(const am_mainVolume_t mainVolume, const am_sinkID_t sinkID) =0;
+ virtual am_Error_e changeSinkAvailabilityDB(const am_Availability_s& availability, const am_sinkID_t sinkID) =0;
+ virtual am_Error_e changDomainStateDB(const am_DomainState_e domainState, const am_domainID_t domainID) =0;
+ virtual am_Error_e changeSinkMuteStateDB(const am_MuteState_e muteState, const am_sinkID_t sinkID) =0;
+ virtual am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID) =0;
+ virtual am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID) =0;
+ virtual am_Error_e changeSourceAvailabilityDB(const am_Availability_s& availability, const am_sourceID_t sourceID) =0;
+ virtual am_Error_e changeSystemPropertyDB(const am_SystemProperty_s& property) =0;
+ virtual am_Error_e removeMainConnectionDB(const am_mainConnectionID_t mainConnectionID) =0;
+ virtual am_Error_e removeSinkDB(const am_sinkID_t sinkID) =0;
+ virtual am_Error_e removeSourceDB(const am_sourceID_t sourceID) =0;
+ virtual am_Error_e removeGatewayDB(const am_gatewayID_t gatewayID) =0;
+ virtual am_Error_e removeCrossfaderDB(const am_crossfaderID_t crossfaderID) =0;
+ virtual am_Error_e removeDomainDB(const am_domainID_t domainID) =0;
+ virtual am_Error_e removeSinkClassDB(const am_sinkClass_t sinkClassID) =0;
+ virtual am_Error_e removeSourceClassDB(const am_sourceClass_t sourceClassID) =0;
+ virtual am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s& classInfo) const =0;
+ virtual am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s& sinkClass) const =0;
+ virtual am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s& sinkData) const =0;
+ virtual am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s& sourceData) const =0;
+ virtual am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s& gatewayData) const =0;
+ virtual am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s& crossfaderData) const =0;
+ virtual am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s& mainConnectionData) const =0;
+ virtual am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t>& listSinkID) const =0;
+ virtual am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t>& listSourceID) const =0;
+ virtual am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t>& listCrossfadersID) const =0;
+ virtual am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t>& listGatewaysID) const =0;
+ virtual am_Error_e getListMainConnections(std::vector<am_MainConnection_s>& listMainConnections) const =0;
+ virtual am_Error_e getListDomains(std::vector<am_Domain_s>& listDomains) const =0;
+ virtual am_Error_e getListConnections(std::vector<am_Connection_s>& listConnections) const =0;
+ virtual am_Error_e getListSinks(std::vector<am_Sink_s>& listSinks) const =0;
+ virtual am_Error_e getListSources(std::vector<am_Source_s>& listSources) const =0;
+ virtual am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const =0;
+ virtual am_Error_e getListHandles(std::vector<am_Handle_s>& listHandles) const =0;
+ virtual am_Error_e getListCrossfaders(std::vector<am_Crossfader_s>& listCrossfaders) const =0;
+ virtual am_Error_e getListGateways(std::vector<am_Gateway_s>& listGateways) const =0;
+ virtual am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const =0;
+ virtual am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const =0;
+ virtual void setCommandReady() =0;
+ virtual void setCommandRundown() =0;
+ virtual void setRoutingReady() =0;
+ virtual void setRoutingRundown() =0;
+ virtual void confirmControllerReady(const am_Error_e error) =0;
+ virtual void confirmControllerRundown(const am_Error_e error) =0;
+ virtual am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) =0;
+ virtual am_Error_e changeSourceDB(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual am_Error_e changeSinkDB(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) =0;
+ virtual am_Error_e setVolumes(am_Handle_s& handle, const std::vector<am_Volumes_s>& listVolumes) =0;
+ virtual am_Error_e setSinkNotificationConfiguration(am_Handle_s& handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+ virtual am_Error_e setSourceNotificationConfiguration(am_Handle_s& handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+ virtual void sendMainSinkNotificationPayload(const am_sinkID_t sinkID, const am_NotificationPayload_s& notificationPayload) =0;
+ virtual void sendMainSourceNotificationPayload(const am_sourceID_t sourceID, const am_NotificationPayload_s& notificationPayload) =0;
+ virtual am_Error_e changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+ virtual am_Error_e changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) =0;
+ virtual am_Error_e getRestartReasonPropertyNSM(NsmRestartReason_e& restartReason) =0;
+ virtual am_Error_e getShutdownReasonPropertyNSM(NsmShutdownReason_e& ShutdownReason) =0;
+ virtual am_Error_e getRunningReasonPropertyNSM(NsmRunningReason_e& nsmRunningReason) =0;
+ virtual NsmErrorStatus_e getNodeStateNSM(NsmNodeState_e& nsmNodeState) =0;
+ virtual NsmErrorStatus_e getSessionStateNSM(const std::string& sessionName, const NsmSeat_e seatID, NsmSessionState_e& sessionState) =0;
+ virtual NsmErrorStatus_e getApplicationModeNSM(NsmApplicationMode_e& applicationMode) =0;
+ virtual NsmErrorStatus_e registerShutdownClientNSM(const uint32_t shutdownMode, const uint32_t timeoutMs) =0;
+ virtual NsmErrorStatus_e unRegisterShutdownClientNSM(const uint32_t shutdownMode) =0;
+ virtual am_Error_e getInterfaceVersionNSM(uint32_t& version) =0;
+ virtual NsmErrorStatus_e sendLifecycleRequestCompleteNSM(const uint32_t RequestId, const NsmErrorStatus_e status) =0;
+
+};
}
-#endif // !defined(EA_D485A61C_B7C5_4803_B4BD_2AD92893E9CA__INCLUDED_)
+#endif // !defined(EA_55795AA7_FC6F_4fa0_81B9_5AF40198B73A__INCLUDED_)
diff --git a/include/control/IAmControlSend.h b/include/control/IAmControlSend.h
index 6e2fdc4..c102074 100644
--- a/include/control/IAmControlSend.h
+++ b/include/control/IAmControlSend.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,15 +12,16 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_89F9440C_319B_486f_BAB5_91FED9A658C2__INCLUDED_)
-#define EA_89F9440C_319B_486f_BAB5_91FED9A658C2__INCLUDED_
+#if !defined(EA_D17C9A1A_AB65_4f6e_A787_51033D190C21__INCLUDED_)
+#define EA_D17C9A1A_AB65_4f6e_A787_51033D190C21__INCLUDED_
#include <vector>
#include <string>
@@ -36,499 +37,98 @@ class IAmControlReceive;
#define ControlSendVersion "2.0"
namespace am {
- /**
- * This interface is presented by the AudioManager controller.
- * All the hooks represent system events that need to be handled. The callback functions are used to handle for example
- * answers to function calls on the AudioManagerCoreInterface.
- * There are two rules that have to be kept in mind when implementing against this interface:\n
- * \warning
- * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
- * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\n
- * \details
- * Violation these rules may lead to unexpected behavior! Nevertheless you can implement thread safe by using the deferred-
- * call pattern described on the wiki which also helps to implement calls that are forbidden.\n
- * For more information, please check CAmSerializer
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:25
- */
- class IAmControlSend
- {
- public:
- IAmControlSend() {
+/**
+ * This interface is presented by the AudioManager controller.
+ * All the hooks represent system events that need to be handled. The callback
+ * functions are used to handle for example answers to function calls on the
+ * AudioManagerCoreInterface.
+ * There are two rules that have to be kept in mind when implementing against this
+ * interface:\n
+ * \warning
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
+ * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS
+ * CALL THAT EXPECTS A RETURN VALUE.\n
+ * \details
+ * Violation these rules may lead to unexpected behavior! Nevertheless you can
+ * implement thread safe by using the deferred-call pattern described on the wiki
+ * which also helps to implement calls that are forbidden.\n
+ * For more information, please check CAmSerializer
+ */
+class IAmControlSend
+{
- }
+public:
+ IAmControlSend() {
- virtual ~IAmControlSend() {
+ }
- }
+ virtual ~IAmControlSend() {
- /**
- * This function returns the version of the interface
- * returns E_OK, E_UNKOWN if version is unknown.
- *
- * @param version
- */
- virtual void getInterfaceVersion(std::string& version) const =0;
- /**
- * Starts up the controller.
- *
- * @param controlreceiveinterface This is a pointer to the ControlReceiveInterface so that the controller knows to whom
- * to communicate.
- */
- virtual am_Error_e startupController(IAmControlReceive* controlreceiveinterface) =0;
- /**
- * this message is used tell the controller that it should get ready. This message must be acknowledged via
- * confirmControllerReady.
- */
- virtual void setControllerReady() =0;
- /**
- * This message tells the controller that he should prepare everything for the power to be switched off. This message must
- * be acknowledged via confirmControllerRundown.
- * The method will give the signal as integer that was responsible for calling the setControllerRundown.
- * This function is called from the signal handler, either direct (when the program is killed) or from within the mainloop
- * (if the program is terminated).
- *
- * @param signal The signal NO that was responsible for the rundown. Can be:
- * SIGINT
- * SIGQUIT
- * SIGTERM
- * SIGHUP
- */
- virtual void setControllerRundown(const int16_t signal) =0;
- /**
- * is called when a connection request comes in via the command interface
- * @return E_OK on success, E_NOT_POSSIBLE on error, E_ALREADY_EXISTENT if already exists
- *
- * @param sourceID
- * @param sinkID
- * @param mainConnectionID
- */
- virtual am_Error_e hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID) =0;
- /**
- * is called when a disconnection request comes in via the command interface
- * @return E_OK on success, E_NOT_POSSIBLE on error, E_NON_EXISTENT if connection does not exists
- *
- * @param connectionID
- */
- virtual am_Error_e hookUserDisconnectionRequest(const am_mainConnectionID_t connectionID) =0;
- /**
- * sets a user MainSinkSoundProperty
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param sinkID
- * @param soundProperty
- */
- virtual am_Error_e hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty) =0;
- /**
- * sets a user MainSourceSoundProperty
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param sourceID
- * @param soundProperty
- */
- virtual am_Error_e hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty) =0;
- /**
- * sets a user SystemProperty
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param property
- */
- virtual am_Error_e hookUserSetSystemProperty(const am_SystemProperty_s& property) =0;
- /**
- * sets a user volume
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param SinkID
- * @param newVolume
- */
- virtual am_Error_e hookUserVolumeChange(const am_sinkID_t SinkID, const am_mainVolume_t newVolume) =0;
- /**
- * sets a user volume as increment
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param SinkID
- * @param increment the steps
- */
- virtual am_Error_e hookUserVolumeStep(const am_sinkID_t SinkID, const int16_t increment) =0;
- /**
- * sets the mute state of a sink
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param sinkID
- * @param muteState true=muted
- */
- virtual am_Error_e hookUserSetSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState) =0;
- /**
- * is called when a routing adaptor registers its domain
- * @return E_OK on success, E_UNKNOWN on error, E_ALREADY_EXISTENT if already exists
- *
- * @param domainData ID is omitted here since it has not been created yet
- * @param domainID
- */
- virtual am_Error_e hookSystemRegisterDomain(const am_Domain_s& domainData, am_domainID_t& domainID) =0;
- /**
- * is called when a routing adaptor wants to derigister a domain
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if not found
- *
- * @param domainID
- */
- virtual am_Error_e hookSystemDeregisterDomain(const am_domainID_t domainID) =0;
- /**
- * is called when a domain registered all the elements
- *
- * @param domainID
- */
- virtual void hookSystemDomainRegistrationComplete(const am_domainID_t domainID) =0;
- /**
- * is called when a routing adaptor registers a sink
- * @return E_OK on success, E_UNKNOWN on error, E_ALREADY_EXISTENT if already exists
- *
- * @param sinkData Id is omitted here, since it has not been created yet
- * @param sinkID
- */
- virtual am_Error_e hookSystemRegisterSink(const am_Sink_s& sinkData, am_sinkID_t& sinkID) =0;
- /**
- * is called when a routing adaptor deregisters a sink
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if not found
- *
- * @param sinkID
- */
- virtual am_Error_e hookSystemDeregisterSink(const am_sinkID_t sinkID) =0;
- /**
- * is called when a routing adaptor registers a source
- * @return E_OK on success, E_UNKNOWN on error, E_ALREADY_EXISTENT if already exists
- *
- * @param sourceData ID is omitted here since it is not yet created
- * @param sourceID
- */
- virtual am_Error_e hookSystemRegisterSource(const am_Source_s& sourceData, am_sourceID_t& sourceID) =0;
- /**
- * is called when a routing adaptor deregisters a source
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if not found
- *
- * @param sourceID
- */
- virtual am_Error_e hookSystemDeregisterSource(const am_sourceID_t sourceID) =0;
- /**
- * is called when a routing adaptor registers a gateway
- * @return E_OK on success, E_UNKNOWN on error, E_ALREADY_EXISTENT if already exists
- *
- * @param gatewayData gatewayID is not set here since it is not created at this point of time
- * @param gatewayID
- */
- virtual am_Error_e hookSystemRegisterGateway(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) =0;
- /**
- * is called when a routing adaptor deregisters a gateway
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if not found
- *
- * @param gatewayID
- */
- virtual am_Error_e hookSystemDeregisterGateway(const am_gatewayID_t gatewayID) =0;
- /**
- * is called when a routing adaptor registers a crossfader
- * @return E_OK on success, E_UNKNOWN on error, E_ALREADY_EXISTENT if already exists
- *
- * @param crossfaderData gatewayID is not set here since it is not created at this point of time
- * @param crossfaderID
- */
- virtual am_Error_e hookSystemRegisterCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) =0;
- /**
- * is called when a routing adaptor deregisters a crossfader
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if not found
- *
- * @param crossfaderID
- */
- virtual am_Error_e hookSystemDeregisterCrossfader(const am_crossfaderID_t crossfaderID) =0;
- /**
- * volumeticks. therse are used to indicate volumechanges during a ramp
- *
- * @param handle
- * @param sinkID
- * @param volume
- */
- virtual void hookSystemSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume) =0;
- /**
- * volumeticks. therse are used to indicate volumechanges during a ramp
- *
- * @param handle
- * @param sourceID
- * @param volume
- */
- virtual void hookSystemSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume) =0;
- /**
- * is called when an low level interrupt changed its state
- *
- * @param sourceID
- * @param interruptState
- */
- virtual void hookSystemInterruptStateChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState) =0;
- /**
- * id called when a sink changed its availability
- *
- * @param sinkID
- * @param availability
- */
- virtual void hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s& availability) =0;
- /**
- * id called when a source changed its availability
- *
- * @param sourceID
- * @param availability
- */
- virtual void hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s& availability) =0;
- /**
- * id called when domainstate was changed
- *
- * @param domainID
- * @param state
- */
- virtual void hookSystemDomainStateChange(const am_domainID_t domainID, const am_DomainState_e state) =0;
- /**
- * when early data was received
- *
- * @param data
- */
- virtual void hookSystemReceiveEarlyData(const std::vector<am_EarlyData_s>& data) =0;
- /**
- * this hook provides information about speed changes.
- * The quantization and sampling rate of the speed can be adjusted at compile time of the AudioManagerDaemon.
- *
- * @param speed
- */
- virtual void hookSystemSpeedChange(const am_speed_t speed) =0;
- /**
- * this hook is fired whenever the timing information of a mainconnection has changed.
- *
- * @param mainConnectionID
- * @param time
- */
- virtual void hookSystemTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time) =0;
- /**
- * ack for connect
- *
- * @param handle
- * @param errorID
- */
- virtual void cbAckConnect(const am_Handle_s handle, const am_Error_e errorID) =0;
- /**
- * ack for disconnect
- *
- * @param handle
- * @param errorID
- */
- virtual void cbAckDisconnect(const am_Handle_s handle, const am_Error_e errorID) =0;
- /**
- * ack for crossfading
- *
- * @param handle
- * @param hostsink
- * @param error
- */
- virtual void cbAckCrossFade(const am_Handle_s handle, const am_HotSink_e hostsink, const am_Error_e error) =0;
- /**
- * ack for sink volume changes
- *
- * @param handle
- * @param volume
- * @param error
- */
- virtual void cbAckSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error) =0;
- /**
- * ack for source volume changes
- *
- * @param handle the handle that is connected to the volume change
- * @param voulme the volume after the action ended (the desired volume if everything went right, the actual one in case
- * of abortion)
- * @param error
- */
- virtual void cbAckSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error) =0;
- /**
- * ack for setting of source states
- *
- * @param handle
- * @param error
- */
- virtual void cbAckSetSourceState(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * ack for setting of sourcesoundproperties
- *
- * @param handle
- * @param error
- */
- virtual void cbAckSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * ack for setting of sourcesoundproperties
- *
- * @param handle
- * @param error
- */
- virtual void cbAckSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * ack for setting of sinksoundproperties
- *
- * @param handle
- * @param error
- */
- virtual void cbAckSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * ack for setting of sinksoundproperties
- *
- * @param handle
- * @param error
- */
- virtual void cbAckSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * This function is used by the routing algorithm to retrieve a priorized list of connectionFormats from the Controller.
- * @return E_OK in case of successfull priorisation.
- *
- * @param sourceID sourceID of source that shall be connected
- * @param sinkID sinkID of sink that shall be connected
- * @param listRoute This route is the one the priorized connectionFormats is for.
- * @param listPossibleConnectionFormats list of possible connectionformats
- * @param listPrioConnectionFormats the list return with prioos from the controller. Best choice on first position.
- */
- virtual am_Error_e getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats) =0;
- /**
- * confirms the setCommandReady call
- *
- * @param error E_OK if everything went right. If a plugin returns an error, it will be forwared here
- */
- virtual void confirmCommandReady(const am_Error_e error) =0;
- /**
- * confirms the setRoutingReady call
- *
- * @param error E_OK if everything went right. If a plugin returns an error, it will be forwared here
- */
- virtual void confirmRoutingReady(const am_Error_e error) =0;
- /**
- * confirms the setCommandRundown call
- *
- * @param error E_OK if everything went right. If a plugin returns an error, it will be forwared here
- */
- virtual void confirmCommandRundown(const am_Error_e error) =0;
- /**
- * confirms the setRoutingRundown command
- *
- * @param error E_OK if everything went right. If a plugin returns an error, it will be forwared here
- */
- virtual void confirmRoutingRundown(const am_Error_e error) =0;
- /**
- * update form the SinkData
- *
- * @param sinkID the sinkID
- * @param sinkClassID
- * @param listSoundProperties
- * @param listConnectionFormats
- * @param listMainSoundProperties
- */
- virtual am_Error_e hookSystemUpdateSink(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) =0;
- /**
- * update from the source Data
- *
- * @param sourceID the sourceID
- * @param sourceClassID
- * @param listSoundProperties
- * @param listConnectionFormats
- * @param listMainSoundProperties
- */
- virtual am_Error_e hookSystemUpdateSource(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) =0;
- /**
- * updates the Gateway Data
- *
- * @param gatewayID the gatewayID
- * @param listSourceConnectionFormats
- * @param listSinkConnectionFormats
- * @param convertionMatrix
- */
- virtual am_Error_e hookSystemUpdateGateway(const am_gatewayID_t gatewayID, const std::vector<am_ConnectionFormat_e>& listSourceConnectionFormats, const std::vector<am_ConnectionFormat_e>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) =0;
- /**
- * ack for mulitple volume changes
- *
- * @param handle
- * @param listVolumes the list of volumes with the current status
- * @param error
- */
- virtual void cbAckSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes, const am_Error_e error) =0;
- /**
- * The acknowledge of the sink notification configuration
- *
- * @param handle the handle
- * @param error the error
- */
- virtual void cbAckSetSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * The acknowledge of the source notification configuration
- *
- * @param handle the handle
- * @param error the error
- */
- virtual void cbAckSetSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * new sinkNotification data is there!
- *
- * @param sinkID the sinkID of the changed notification
- * @param payload the payload
- */
- virtual void hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload) =0;
- /**
- * new sourceNotification data is there!
- *
- * @param sourceID the sourceID of the changed notification
- * @param payload the payload
- */
- virtual void hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload) =0;
- /**
- * sets a user MainSinkNotificationConfiguration
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param sinkID
- * @param notificationConfiguration
- */
- virtual am_Error_e hookUserSetMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
- /**
- * sets a user MainSourceNotificationConfiguration
- * @return E_OK on success, E_OUT_OF_RANGE if out of range, E_UNKNOWN on error
- *
- * @param sourceID
- * @param notificationConfiguration
- */
- virtual am_Error_e hookUserSetMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
- /**
- * This hook is connected to the NodeState signal of the NodeStateManager
- *
- * @param NodeStateId The new current state of the node
- */
- virtual void hookSystemNodeStateChanged(const NsmNodeState_e NodeStateId) =0;
- /**
- * This hook is connected to the NodeApplicationMode signal of the NodeStateManager
- *
- * @param ApplicationModeId The new ApplicationMode
- */
- virtual void hookSystemNodeApplicationModeChanged(const NsmApplicationMode_e ApplicationModeId) =0;
- /**
- * the sessionstate change was send by the NSM
- *
- * @param sessionName
- * @param seatID
- * @param sessionStateID
- */
- virtual void hookSystemSessionStateChanged(const std::string& sessionName, const NsmSeat_e seatID, const NsmSessionState_e sessionStateID) =0;
- /**
- * A lifecycle request comes in from the NSM and must be processed.
- * @return NsmErrorStatus_Ok if successful
- * The controller has to respond to this message with LifecycleRequestComplete.
- *
- * @param Request the shutdown request from the NSM. One of the types
- *
- * NSM_SHUTDOWNTYPE_RUNUP, NSM_SHUTDOWNTYPE_NORMAL
- * NSM_SHUTDOWNTYPE_FAST
- *
- * In order to receive this request, the controller needs to register for this request first via RegisterShutdownClient
- * @param RequestId the requestID
- */
- virtual NsmErrorStatus_e hookSystemLifecycleRequest(const uint32_t Request, const uint32_t RequestId) =0;
+ }
- };
+ virtual void getInterfaceVersion(std::string& version) const =0;
+ virtual am_Error_e startupController(IAmControlReceive* controlreceiveinterface) =0;
+ virtual void setControllerReady() =0;
+ virtual void setControllerRundown(const int16_t signal) =0;
+ virtual am_Error_e hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID) =0;
+ virtual am_Error_e hookUserDisconnectionRequest(const am_mainConnectionID_t connectionID) =0;
+ virtual am_Error_e hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty) =0;
+ virtual am_Error_e hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty) =0;
+ virtual am_Error_e hookUserSetSystemProperty(const am_SystemProperty_s& property) =0;
+ virtual am_Error_e hookUserVolumeChange(const am_sinkID_t SinkID, const am_mainVolume_t newVolume) =0;
+ virtual am_Error_e hookUserVolumeStep(const am_sinkID_t SinkID, const int16_t increment) =0;
+ virtual am_Error_e hookUserSetSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState) =0;
+ virtual am_Error_e hookSystemRegisterDomain(const am_Domain_s& domainData, am_domainID_t& domainID) =0;
+ virtual am_Error_e hookSystemDeregisterDomain(const am_domainID_t domainID) =0;
+ virtual void hookSystemDomainRegistrationComplete(const am_domainID_t domainID) =0;
+ virtual am_Error_e hookSystemRegisterSink(const am_Sink_s& sinkData, am_sinkID_t& sinkID) =0;
+ virtual am_Error_e hookSystemDeregisterSink(const am_sinkID_t sinkID) =0;
+ virtual am_Error_e hookSystemRegisterSource(const am_Source_s& sourceData, am_sourceID_t& sourceID) =0;
+ virtual am_Error_e hookSystemDeregisterSource(const am_sourceID_t sourceID) =0;
+ virtual am_Error_e hookSystemRegisterGateway(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) =0;
+ virtual am_Error_e hookSystemDeregisterGateway(const am_gatewayID_t gatewayID) =0;
+ virtual am_Error_e hookSystemRegisterCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) =0;
+ virtual am_Error_e hookSystemDeregisterCrossfader(const am_crossfaderID_t crossfaderID) =0;
+ virtual void hookSystemSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume) =0;
+ virtual void hookSystemSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume) =0;
+ virtual void hookSystemInterruptStateChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState) =0;
+ virtual void hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s& availability) =0;
+ virtual void hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s& availability) =0;
+ virtual void hookSystemDomainStateChange(const am_domainID_t domainID, const am_DomainState_e state) =0;
+ virtual void hookSystemReceiveEarlyData(const std::vector<am_EarlyData_s>& data) =0;
+ virtual void hookSystemSpeedChange(const am_speed_t speed) =0;
+ virtual void hookSystemTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time) =0;
+ virtual void cbAckConnect(const am_Handle_s handle, const am_Error_e errorID) =0;
+ virtual void cbAckDisconnect(const am_Handle_s handle, const am_Error_e errorID) =0;
+ virtual void cbAckCrossFade(const am_Handle_s handle, const am_HotSink_e hostsink, const am_Error_e error) =0;
+ virtual void cbAckSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error) =0;
+ virtual void cbAckSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error) =0;
+ virtual void cbAckSetSourceState(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void cbAckSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void cbAckSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void cbAckSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void cbAckSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual am_Error_e getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_CustomConnectionFormat_t> listPossibleConnectionFormats, std::vector<am_CustomConnectionFormat_t>& listPrioConnectionFormats) =0;
+ virtual void confirmCommandReady(const am_Error_e error) =0;
+ virtual void confirmRoutingReady(const am_Error_e error) =0;
+ virtual void confirmCommandRundown(const am_Error_e error) =0;
+ virtual void confirmRoutingRundown(const am_Error_e error) =0;
+ virtual am_Error_e hookSystemUpdateSink(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual am_Error_e hookSystemUpdateSource(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual am_Error_e hookSystemUpdateGateway(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) =0;
+ virtual void cbAckSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes, const am_Error_e error) =0;
+ virtual void cbAckSetSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void cbAckSetSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload) =0;
+ virtual void hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload) =0;
+ virtual am_Error_e hookUserSetMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+ virtual am_Error_e hookUserSetMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+ virtual void hookSystemNodeStateChanged(const NsmNodeState_e NodeStateId) =0;
+ virtual void hookSystemNodeApplicationModeChanged(const NsmApplicationMode_e ApplicationModeId) =0;
+ virtual void hookSystemSessionStateChanged(const std::string& sessionName, const NsmSeat_e seatID, const NsmSessionState_e sessionStateID) =0;
+ virtual NsmErrorStatus_e hookSystemLifecycleRequest(const uint32_t Request, const uint32_t RequestId) =0;
+
+};
}
-#endif // !defined(EA_89F9440C_319B_486f_BAB5_91FED9A658C2__INCLUDED_)
+#endif // !defined(EA_D17C9A1A_AB65_4f6e_A787_51033D190C21__INCLUDED_)
diff --git a/include/projecttypes.h b/include/projecttypes.h
deleted file mode 100644
index 00919a0..0000000
--- a/include/projecttypes.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/**
- * Copyright (C) 2012, BMW AG
- *
- * This file is part of GENIVI Project AudioManager.
- *
- * Contributions are licensed to the GENIVI Alliance under one or more
- * Contribution License Agreements.
- *
- * \copyright
- * This Source Code Form is subject to the terms of the
- * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
- * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- *
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
- *
- * \file
- * For further information see http://www.genivi.org/.
- *
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
- */
-#if !defined(EA_793BA955_1445_4da2_9C22_4EFA92A026C5__INCLUDED_)
-#define EA_793BA955_1445_4da2_9C22_4EFA92A026C5__INCLUDED_
-
-namespace am {
- /**
- * This enum classifies the format in which data is exchanged within a connection. The enum itself is project specific
- * although there are some Genivi standard formats defined.
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_ConnectionFormat_e
- {
- /**
- * default
- */
- CF_UNKNOWN = 0,
- /**
- * plain mono
- */
- CF_GENIVI_MONO = 1,
- /**
- * stereo connection
- */
- CF_GENIVI_STEREO = 2,
- /**
- * analog connection
- */
- CF_GENIVI_ANALOG = 3,
- /**
- * automatic connection.
- */
- CF_GENIVI_AUTO = 4,
- CF_MAX
- };
-
- /**
- * This enum gives the information about reason for reason for Source/Sink change
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_AvailabilityReason_e
- {
- /**
- * default
- */
- AR_UNKNOWN = 0,
- /**
- * the availability changed because an new media was entered
- */
- AR_GENIVI_NEWMEDIA = 1,
- /**
- * the availability changed because the same media was entered
- */
- AR_GENIVI_SAMEMEDIA = 2,
- /**
- * the availability changed because there is no media
- */
- AR_GENIVI_NOMEDIA = 3,
- /**
- * the availability changed because of a temperature event
- */
- AR_GENIVI_TEMPERATURE = 4,
- /**
- * the availability changed because of a voltage event
- */
- AR_GENIVI_VOLTAGE = 5,
- /**
- * the availability changed because of fatal errors reading or accessing media
- */
- AR_GENIVI_ERRORMEDIA = 6,
- AR_MAX
- };
-
- /**
- * product specific identifier of property
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_ClassProperty_e
- {
- /**
- * default
- */
- CP_UNKNOWN = 0,
- /**
- * defines the source type of a source. Project specific, could be for example differentiation between interrupt source
- * and main source.
- */
- CP_GENIVI_SOURCE_TYPE = 1,
- /**
- * defines the SINK_TYPE. Project specific
- */
- CP_GENIVI_SINK_TYPE = 2,
- CP_MAX
- };
-
- /**
- * The given ramp types here are just a possiblity. for products, different ramp types can be defined here.
- * It is in the responsibility of the product to make sure that the routing plugins are aware of the ramp types used.
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_RampType_e
- {
- RAMP_UNKNOWN = 0,
- /**
- * this ramp type triggers a direct setting of the value without a ramp
- */
- RAMP_GENIVI_DIRECT = 1,
- /**
- * This ramp type will set the volume as fast as possible.
- */
- RAMP_GENIVI_NO_PLOP = 2,
- RAMP_GENIVI_EXP_INV = 3,
- RAMP_GENIVI_LINEAR = 4,
- RAMP_GENIVI_EXP = 5,
- RAMP_MAX
- };
-
- /**
- * sound properties. Within genivi only the standard properties are defined, for products these need to be extended.
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_SoundPropertyType_e
- {
- /**
- * default
- */
- SP_UNKNOWN = 0,
- /**
- * example treble value min =-10 max =10
- */
- SP_EXAMPLE_TREBLE = 1,
- /**
- * example mid value min =-10 max =10
- */
- SP_EXAMPLE_MID = 2,
- /**
- * example bass value min =-10 max =10
- */
- SP_EXAMPLE_BASS = 3,
- SP_MAX
- };
-
- /**
- * Here are all SoundProperties that can be set via the CommandInterface. Product specific
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_MainSoundPropertyType_e
- {
- /**
- * default
- */
- MSP_UNKNOWN = 0,
- /**
- * example value between -10 and +10
- */
- MSP_EXAMPLE_TREBLE = 1,
- /**
- * example value between -10 and +10
- */
- MSP_EXAMPLE_MID = 2,
- /**
- * example value between -10 and +10
- */
- MSP_EXAMPLE_BASS = 3,
- MSP_MAX
- };
-
- /**
- * describes the different system properties. Project specific
- * @author Christian Mueller
- * @created 16-Dez-2012 15:58:14
- */
- enum am_SystemPropertyType_e
- {
- /**
- * default
- */
- SYP_UNKNOWN = 0,
- SYP_MAX
- };
-
- /**
- * gives the type of the Notification.
- * @author q232968
- * @version 1.0
- * @created 16-Dez-2012 15:58:14
- */
- enum am_NotificationType_e
- {
- NT_UNKNOWN = 0,
- NT_MAX
- };
-}
-#endif // !defined(EA_793BA955_1445_4da2_9C22_4EFA92A026C5__INCLUDED_)
diff --git a/include/routing/IAmRoutingReceive.h b/include/routing/IAmRoutingReceive.h
index 2d61f9e..dd86531 100644
--- a/include/routing/IAmRoutingReceive.h
+++ b/include/routing/IAmRoutingReceive.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,15 +12,16 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_B7A11CC8_9777_4421_8677_D9CE084D5E2B__INCLUDED_)
-#define EA_B7A11CC8_9777_4421_8677_D9CE084D5E2B__INCLUDED_
+#if !defined(EA_6ECD9991_3219_4bf4_B9F7_DDE15D8683C6__INCLUDED_)
+#define EA_6ECD9991_3219_4bf4_B9F7_DDE15D8683C6__INCLUDED_
#include <vector>
#include <string>
@@ -36,407 +37,82 @@ class CAmSocketHandler;
#define RoutingReceiveVersion "2.0"
namespace am {
- /**
- * Routing Receive sendInterface description. This class implements everything from RoutingAdapter -> Audiomanager
- * There are two rules that have to be kept in mind when implementing against this interface:\n
- * \warning
- * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
- * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\n
- * \details
- * Violation these rules may lead to unexpected behavior! Nevertheless you can implement thread safe by using the deferred-
- * call pattern described on the wiki which also helps to implement calls that are forbidden.\n
- * For more information, please check CAmSerializer
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:25
- */
- class IAmRoutingReceive
- {
- public:
- IAmRoutingReceive() {
+/**
+ * Routing Receive sendInterface description. This class implements everything
+ * from RoutingAdapter -> Audiomanager
+ * There are two rules that have to be kept in mind when implementing against this
+ * interface:\n
+ * \warning
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
+ * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS
+ * CALL THAT EXPECTS A RETURN VALUE.\n
+ * \details
+ * Violation these rules may lead to unexpected behavior! Nevertheless you can
+ * implement thread safe by using the deferred-call pattern described on the wiki
+ * which also helps to implement calls that are forbidden.\n
+ * For more information, please check CAmSerializer
+ */
+class IAmRoutingReceive
+{
- }
+public:
+ IAmRoutingReceive() {
- virtual ~IAmRoutingReceive() {
+ }
- }
+ virtual ~IAmRoutingReceive() {
- /**
- * This function returns the version of the interface
- *
- * @param version retrieves the verison of the interface
- */
- virtual void getInterfaceVersion(std::string& version) const =0;
- /**
- * acknowledges a asyncConnect
- *
- * @param handle
- * @param connectionID
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error) =0;
- /**
- * acknowledges a asyncDisconnect
- *
- * @param handle
- * @param connectionID
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error) =0;
- /**
- * acknowledges a asyncsetSinkVolume
- *
- * @param handle
- * @param volume The current actual value that is set
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error) =0;
- /**
- * acknowledges a asyncsetSourceVolume
- *
- * @param handle handle that belongs to the change
- * @param volume the current volume
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error) =0;
- /**
- * acknowlegde for asyncSetSourceState
- *
- * @param handle
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSourceState(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * acknowledges asyncSetSinkSoundProperties
- *
- * @param handle
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * acknowledges asyncSetSinkSoundProperty
- *
- * @param handle
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * acknowledges asyncSetSourceSoundProperties
- *
- * @param handle
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * acknowledges asyncSetSourceSoundProperty
- *
- * @param handle
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * acknowledges asyncCrossFade
- *
- * @param handle
- * @param hotSink this is the current hot sink, HS_INTERMEDIATE is here when a crossfading action did not reach the end
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackCrossFading(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error) =0;
- /**
- * acknowledges a volume tick. This can be used to display volumechanges during ramps
- *
- * @param handle
- * @param sourceID
- * @param volume
- */
- virtual void ackSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume) =0;
- /**
- * acknowledges a volume tick. This can be used to display volumechanges during ramps
- *
- * @param handle
- * @param sinkID
- * @param volume
- */
- virtual void ackSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume) =0;
- /**
- * This function returns the ID to the given domainName. If already a domain is registered with this name, it will return
- * the corresponding ID, if not it will reserve an ID but not register the domain. The other parameters of the domain will
- * be overwritten when the domain is registered.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param name
- * @param domainID
- */
- virtual am_Error_e peekDomain(const std::string& name, am_domainID_t& domainID) =0;
- /**
- * registers a domain
- * @return E_OK on succes, E_ALREADY_EXISTENT if already registered E_UNKOWN on error
- *
- * @param domainData domainID in am_Domain_s must be 0!
- * @param domainID
- */
- virtual am_Error_e registerDomain(const am_Domain_s& domainData, am_domainID_t& domainID) =0;
- /**
- * deregisters a domain. All sources, sinks, gateways and crossfaders from that domain will be removed as well.
- * @return E_OK on succes, E_NON_EXISTENT if not found E_UNKOWN on error
- *
- * @param domainID < the nonde of the bus
- */
- virtual am_Error_e deregisterDomain(const am_domainID_t domainID) =0;
- /**
- * registers a gateway. @return E_OK on succes, E_ALREADY_EXISTENT if already registered E_UNKOWN on error
- *
- * @param gatewayData In a fixed setup, the gatewayID must be below 100. In a dynamic setup, the gatewayID shall be 0.
- * listSourceFormats and listSinkFormats are empty at registration time. Values are taken over when sources and sinks are
- * registered.
- *
- *
- * @param gatewayID
- */
- virtual am_Error_e registerGateway(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) =0;
- /**
- * deregisters a gateway. Also removes all sinks and sources of the controlling domain.
- * @return E_OK on succes, E_NON_EXISTENT if not found E_UNKOWN on error
- *
- * @param gatewayID domainID of the control domain
- */
- virtual am_Error_e deregisterGateway(const am_gatewayID_t gatewayID) =0;
- /**
- * This function returns the ID to the given sinkName. If already a sink is registered with this name, it will return the
- * corresponding ID, if not it will reserve an ID but not register the sink. The other parameters of the sink will be
- * overwritten when the sink is registered.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param name ID is not valid since not created yet
- * @param sinkID
- */
- virtual am_Error_e peekSink(const std::string& name, am_sinkID_t& sinkID) =0;
- /**
- * Registers a sink. If the sink is part of a gateway, the listconnectionFormats is copied to the gatewayInformation
- * @return E_OK on succes, E_ALREADY_EXISTENT if already registered E_UNKOWN on error
- *
- * @param sinkData In a fixed setup, the sinkID within am_Sink_s must be below 100. In a dynamic setup the sinkID must
- * be 0 in am_Sink_s.
- * @param sinkID
- */
- virtual am_Error_e registerSink(const am_Sink_s& sinkData, am_sinkID_t& sinkID) =0;
- /**
- * deregisters a sink.
- * @return E_OK on succes, E_NON_EXISTENT if not found E_UNKOWN on error
- *
- * @param sinkID
- */
- virtual am_Error_e deregisterSink(const am_sinkID_t sinkID) =0;
- /**
- * This function returns the ID to the given sourceName. If already a source is registered with this name, it will return
- * the corresponding ID, if not it will reserve an ID but not register the source. The other parameters of the source will
- * be overwritten when the source is registered.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param name
- * @param sourceID
- */
- virtual am_Error_e peekSource(const std::string& name, am_sourceID_t& sourceID) =0;
- /**
- * registers a source. If the source is part of a gateway, the listconnectionFormats is copied to the gatewayInformation
- * @return E_OK on success, E_UNKNOWN on error, E_ALREADY_EXIST if either name or sourceID already exists
- *
- * @param sourceData In a fixed setup, the sourceID within am_Source_s must be below 100. In a dynamic setup the
- * sourceID must be 0 in am_Source_s
- * @param sourceID
- */
- virtual am_Error_e registerSource(const am_Source_s& sourceData, am_sourceID_t& sourceID) =0;
- /**
- * deregisters a source
- * @return E_OK on succes, E_NON_EXISTENT if not found E_UNKOWN on error
- *
- * @param sourceID
- */
- virtual am_Error_e deregisterSource(const am_sourceID_t sourceID) =0;
- /**
- * this function registers a crossfader.
- * @return E_OK on succes, E_ALREADY_EXISTENT if already registered E_UNKOWN on error
- *
- * @param crossfaderData in a fixed setup, the crossfaderID must be below 100. In a dynamic setup the crossfasderID
- * shall be 0
- * @param crossfaderID
- */
- virtual am_Error_e registerCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) =0;
- /**
- * this function deregisters a crossfader. removes all sources and sinks assiated as well.
- * @return E_OK on succes, E_NON_EXISTENT if not found E_UNKOWN on error
- *
- * @param crossfaderID
- */
- virtual am_Error_e deregisterCrossfader(const am_crossfaderID_t crossfaderID) =0;
- /**
- * this function peeks a sourceclassID. It is used by the RoutingPlugins to determine the SinkClassIDs of a sinkClass.
- * @return E_OK on succes, E_DATABASE_ERROR on error
- *
- * @param name
- * @param sourceClassID
- */
- virtual am_Error_e peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID) =0;
- /**
- * this function peeks a sourceclassID. It is used by the RoutingPlugins to determine the SinkClassIDs of a sinkClass.
- * @return E_OK on succes, E_DATABASE_ERROR on error
- *
- * @param name
- * @param sinkClassID
- */
- virtual am_Error_e peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID) =0;
- /**
- * is called when a low level interrupt changes it status.
- *
- * @param sourceID
- * @param interruptState
- */
- virtual void hookInterruptStatusChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState) =0;
- /**
- * This hook is called when all elements from a domain are registered.
- * Is used by the Controller to know when all expected domains are finally registered
- *
- * @param domainID
- */
- virtual void hookDomainRegistrationComplete(const am_domainID_t domainID) =0;
- /**
- * is called when a sink changes its availability
- *
- * @param sinkID
- * @param availability
- */
- virtual void hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s& availability) =0;
- /**
- * is called when a source changes its availability
- *
- * @param sourceID
- * @param availability
- */
- virtual void hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s& availability) =0;
- /**
- * is called when a domain changes its status. This used for early domains only
- *
- * @param domainID
- * @param domainState
- */
- virtual void hookDomainStateChange(const am_domainID_t domainID, const am_DomainState_e domainState) =0;
- /**
- * is called when the timinginformation (delay) changed for a connection.
- *
- * @param connectionID
- * @param delay
- */
- virtual void hookTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t delay) =0;
- /**
- * this function is used to send out all data that has been changed in an early state.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param earlyData
- */
- virtual void sendChangedData(const std::vector<am_EarlyData_s>& earlyData) =0;
- /**
- * this function is used to retrieve a pointer to the dBusConnectionWrapper
- * @return E_OK if pointer is valid, E_UKNOWN if AudioManager was compiled without DBus Support
- *
- * @param dbusConnectionWrapper This is a wrapper class that is needed to keep dbus inclusions away from the interface.
- * The DBusWrapperClass will return the pointer to the DbusConnection call (getDBusConnection)
- */
- virtual am_Error_e getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const =0;
- /**
- * This function returns the pointer to the socketHandler. This can be used to integrate socket-based activites like
- * communication with the mainloop of the AudioManager.
- * returns E_OK if pointer is valid, E_UNKNOWN in case AudioManager was compiled without socketHandler support,
- *
- * @param socketHandler
- */
- virtual am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) const =0;
- /**
- * confirms the setRoutingReady Command
- *
- * @param handle the handle that was given via setRoutingReady
- * @param error E_OK if the ready command succeeded. E_UNKNOWN if an error happened.
- */
- virtual void confirmRoutingReady(const uint16_t handle, const am_Error_e error) =0;
- /**
- * confirms the setRoutingRundown Command
- *
- * @param handle handle that was given via setRoutingRundown
- * @param error E_OK if the ready command succeeded. E_UNKNOWN if an error happened.
- */
- virtual void confirmRoutingRundown(const uint16_t handle, const am_Error_e error) =0;
- /**
- * updates data of an gateway. @return E_OK on success, E_NON_EXISTENT if the gatewayID is not valid.
- *
- * @param gatewayID This is the new gateway data that has been updated. Please note that changing source and sink IDs,
- *
- * @param listSourceFormats
- * @param listSinkFormats
- * @param convertionMatrix
- */
- virtual am_Error_e updateGateway(const am_gatewayID_t gatewayID, const std::vector<am_ConnectionFormat_e>& listSourceFormats, const std::vector<am_ConnectionFormat_e>& listSinkFormats, const std::vector<bool>& convertionMatrix) =0;
- /**
- * updates data of an gateway. @return E_OK on success, E_NON_EXISTENT if the sinkID is not valid.
- *
- * @param sinkID The sinkID of the sink
- * @param sinkClassID
- * @param listSoundProperties
- * @param listConnectionFormats
- * @param listMainSoundProperties
- */
- virtual am_Error_e updateSink(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) =0;
- /**
- * updates data of an source. @return E_OK on success, E_NON_EXISTENT if the sourceID in the struct is not valid.
- * Please note that only the following data out of am_Source_s have effect when they are changed:
- * sourceClassID,
- * listSoundProperties,
- * listConnectionFormats,
- * listMainSoundProperties
- *
- * @param sourceID the sourceID of the source
- * @param sourceClassID
- * @param listSoundProperties
- * @param listConnectionFormats
- * @param listMainSoundProperties
- */
- virtual am_Error_e updateSource(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) =0;
- /**
- * acknowledges a asyncSetSinkVolumes
- *
- * @param handle
- * @param listvolumes The list of volumes that have been set. ramp and time values have no meaning when the struct is
- * used here.
- * @param error E_OK on success, E_ABORTED if action was aborted, E_UNKNOWN on error
- */
- virtual void ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listvolumes, const am_Error_e error) =0;
- /**
- * The acknowledge of the SinkNotificationConfiguration
- *
- * @param handle
- * @param error
- */
- virtual void ackSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * The acknowledge of the SourceNotificationConfiguration
- *
- * @param handle
- * @param error
- */
- virtual void ackSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
- /**
- * is called whenever a notified value needs to be send
- *
- * @param sinkID The sinkID of the sink where the data changed
- * @param payload The payload
- */
- virtual void hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload) =0;
- /**
- * is called whenever a notified value needs to be send
- *
- * @param sourceID The sinkID of the sink where the data changed
- * @param payload The payload
- */
- virtual void hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload) =0;
+ }
- };
+ virtual void getInterfaceVersion(std::string& version) const =0;
+ virtual void ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error) =0;
+ virtual void ackDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error) =0;
+ virtual void ackSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error) =0;
+ virtual void ackSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error) =0;
+ virtual void ackSetSourceState(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void ackSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void ackSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void ackSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void ackSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void ackCrossFading(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error) =0;
+ virtual void ackSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume) =0;
+ virtual void ackSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume) =0;
+ virtual am_Error_e peekDomain(const std::string& name, am_domainID_t& domainID) =0;
+ virtual am_Error_e registerDomain(const am_Domain_s& domainData, am_domainID_t& domainID) =0;
+ virtual am_Error_e deregisterDomain(const am_domainID_t domainID) =0;
+ virtual am_Error_e registerGateway(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) =0;
+ virtual am_Error_e deregisterGateway(const am_gatewayID_t gatewayID) =0;
+ virtual am_Error_e peekSink(const std::string& name, am_sinkID_t& sinkID) =0;
+ virtual am_Error_e registerSink(const am_Sink_s& sinkData, am_sinkID_t& sinkID) =0;
+ virtual am_Error_e deregisterSink(const am_sinkID_t sinkID) =0;
+ virtual am_Error_e peekSource(const std::string& name, am_sourceID_t& sourceID) =0;
+ virtual am_Error_e registerSource(const am_Source_s& sourceData, am_sourceID_t& sourceID) =0;
+ virtual am_Error_e deregisterSource(const am_sourceID_t sourceID) =0;
+ virtual am_Error_e registerCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) =0;
+ virtual am_Error_e deregisterCrossfader(const am_crossfaderID_t crossfaderID) =0;
+ virtual am_Error_e peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID) =0;
+ virtual am_Error_e peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID) =0;
+ virtual void hookInterruptStatusChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState) =0;
+ virtual void hookDomainRegistrationComplete(const am_domainID_t domainID) =0;
+ virtual void hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s& availability) =0;
+ virtual void hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s& availability) =0;
+ virtual void hookDomainStateChange(const am_domainID_t domainID, const am_DomainState_e domainState) =0;
+ virtual void hookTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t delay) =0;
+ virtual void sendChangedData(const std::vector<am_EarlyData_s>& earlyData) =0;
+ virtual am_Error_e getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const =0;
+ virtual am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) const =0;
+ virtual void confirmRoutingReady(const uint16_t handle, const am_Error_e error) =0;
+ virtual void confirmRoutingRundown(const uint16_t handle, const am_Error_e error) =0;
+ virtual am_Error_e updateGateway(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkFormats, const std::vector<bool>& convertionMatrix) =0;
+ virtual am_Error_e updateSink(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual am_Error_e updateSource(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) =0;
+ virtual void ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listvolumes, const am_Error_e error) =0;
+ virtual void ackSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void ackSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) =0;
+ virtual void hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload) =0;
+ virtual void hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload) =0;
+
+};
}
-#endif // !defined(EA_B7A11CC8_9777_4421_8677_D9CE084D5E2B__INCLUDED_)
+#endif // !defined(EA_6ECD9991_3219_4bf4_B9F7_DDE15D8683C6__INCLUDED_)
diff --git a/include/routing/IAmRoutingSend.h b/include/routing/IAmRoutingSend.h
index 35024e5..697bc0f 100644
--- a/include/routing/IAmRoutingSend.h
+++ b/include/routing/IAmRoutingSend.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2012, BMW AG
+ * Copyright (C) 2012 - 2014, BMW AG
*
* This file is part of GENIVI Project AudioManager.
*
@@ -12,15 +12,16 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Christian Mueller, christian.linke@bmw.de BMW 2011,2012
+ * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
*
* \file
- * For further information see http://www.genivi.org/.
+ * For further information see http://projects.genivi.org/audio-manager
*
- * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN
+ * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
+ * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
*/
-#if !defined(EA_19B3916A_5323_4939_B585_FE9193DA3FAD__INCLUDED_)
-#define EA_19B3916A_5323_4939_B585_FE9193DA3FAD__INCLUDED_
+#if !defined(EA_3AD07676_42DA_4ba9_A6E8_DA06F23BC8EB__INCLUDED_)
+#define EA_3AD07676_42DA_4ba9_A6E8_DA06F23BC8EB__INCLUDED_
#include <vector>
#include <string>
@@ -32,209 +33,57 @@ class IAmRoutingReceive;
#include "audiomanagertypes.h"
#include "IAmRoutingReceive.h"
-#include "projecttypes.h"
#define RoutingSendVersion "2.0"
namespace am {
- /**
- * This class implements everything from Audiomanager -> RoutingAdapter
- * There are two rules that have to be kept in mind when implementing against this interface:\n
- * \warning
- * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
- * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\n
- * \details
- * Violation these rules may lead to unexpected behavior! Nevertheless you can implement thread safe by using the deferred-
- * call pattern described on the wiki which also helps to implement calls that are forbidden.\n
- * For more information, please check CAmSerializer
- * @author Christian Mueller
- * @created 17-Jan-2013 10:00:26
- */
- class IAmRoutingSend
- {
- public:
- IAmRoutingSend() {
+/**
+ * This class implements everything from Audiomanager -> RoutingAdapter
+ * There are two rules that have to be kept in mind when implementing against this
+ * interface:\n
+ * \warning
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \n
+ * 2. YOU MAY NOT CALL THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS
+ * CALL THAT EXPECTS A RETURN VALUE.\n
+ * \details
+ * Violation these rules may lead to unexpected behavior! Nevertheless you can
+ * implement thread safe by using the deferred-call pattern described on the wiki
+ * which also helps to implement calls that are forbidden.\n
+ * For more information, please check CAmSerializer
+ */
+class IAmRoutingSend
+{
- }
+public:
+ IAmRoutingSend() {
- virtual ~IAmRoutingSend() {
+ }
- }
+ virtual ~IAmRoutingSend() {
- /**
- * This function returns the version of the interface
- *
- * @param version
- */
- virtual void getInterfaceVersion(std::string& version) const =0;
- /**
- * starts up the interface. In the implementations, here is the best place for init routines.
- *
- * @param routingreceiveinterface pointer to the receive interface
- */
- virtual am_Error_e startupInterface(IAmRoutingReceive* routingreceiveinterface) =0;
- /**
- * indicates that the routing now ready to be used. Should be used as trigger to register all sinks, sources, etc...
- *
- * @param handle handle that uniquely identifies the request
- */
- virtual void setRoutingReady(const uint16_t handle) =0;
- /**
- * indicates that the routing plugins need to be prepared to switch the power off or be ready again.
- *
- * @param handle the handle that uniquely identifies the request
- */
- virtual void setRoutingRundown(const uint16_t handle) =0;
- /**
- * aborts an asynchronous action.
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if handle was not found
- *
- * @param handle
- */
- virtual am_Error_e asyncAbort(const am_Handle_s handle) =0;
- /**
- * connects a source to a sink
- * @return E_OK on success, E_UNKNOWN on error, E_WRONG_FORMAT in case am_ConnectionFormat_e does not match
- *
- * @param handle
- * @param connectionID
- * @param sourceID
- * @param sinkID
- * @param connectionFormat
- */
- virtual 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) =0;
- /**
- * disconnect a connection with given connectionID
- * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if connection was not found
- *
- * @param handle
- * @param connectionID
- */
- virtual am_Error_e asyncDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID) =0;
- /**
- * this method is used to set the volume of a sink. This function is used to drive ramps, to mute or unmute or directly
- * set the value. The difference is made through the ramptype.
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE if new volume is out of range
- *
- * @param handle
- * @param sinkID
- * @param volume
- * @param ramp
- * @param time
- */
- virtual 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) =0;
- /**
- * sets the volume of a source. This method is used to set the volume of a sink. This function is used to drive ramps, to
- * mute or unmute or directly set the value. The difference is made through the ramptype.
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE if volume is out of range.
- * triggers the acknowledge ackSourceVolumeChange
- *
- * @param handle
- * @param sourceID
- * @param volume
- * @param ramp
- * @param time
- */
- virtual 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) =0;
- /**
- * This function is used to set the source state of a particular source.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param handle
- * @param sourceID
- * @param state
- */
- virtual am_Error_e asyncSetSourceState(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SourceState_e state) =0;
- /**
- * this function sets the sinksoundproperty.
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE in case the propery value is out of range
- *
- * @param handle
- * @param sinkID
- * @param listSoundProperties
- */
- virtual am_Error_e asyncSetSinkSoundProperties(const am_Handle_s handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties) =0;
- /**
- * this function sets the sinksoundproperty.
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE in case the propery value is out of range
- *
- * @param handle
- * @param sinkID
- * @param soundProperty
- */
- virtual am_Error_e asyncSetSinkSoundProperty(const am_Handle_s handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty) =0;
- /**
- * this function sets the sourcesoundproperty.
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE in case the propery value is out of range
- *
- * @param handle
- * @param sourceID
- * @param listSoundProperties
- */
- virtual am_Error_e asyncSetSourceSoundProperties(const am_Handle_s handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties) =0;
- /**
- * this function sets the sourcesoundproperty.
- * @return E_OK on success, E_UNKNOWN on error, E_OUT_OF_RANGE in case the propery value is out of range
- *
- * @param handle
- * @param sourceID
- * @param soundProperty
- */
- virtual am_Error_e asyncSetSourceSoundProperty(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty) =0;
- /**
- * this function triggers crossfading.
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param handle
- * @param crossfaderID
- * @param hotSink
- * @param rampType
- * @param time
- */
- virtual 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) =0;
- /**
- * this function is used for early and late audio functions to set the domain state
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param domainID
- * @param domainState
- */
- virtual am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState) =0;
- /**
- * this method is used to retrieve the busname during startup of the plugin. Needs to be implemented
- * @return E_OK on success, E_UNKNOWN on error
- *
- * @param BusName
- */
- virtual am_Error_e returnBusName(std::string& BusName) const =0;
- /**
- * This command sets multiple source or and sink volumes within a domain at a time. It can be used to synchronize volume
- * setting events.
- * @return E_OK on success, E_UNKNOWN on error.
- *
- * @param handle the handle
- * @param listVolumes a list of volumes that shall be set a the same time
- */
- virtual am_Error_e asyncSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes) =0;
- /**
- * sets the notification configuration of a sink.
- * @return E_OK on success, E_UNKNOWN on error.
- *
- * @param handle The handle for this operation.
- * @param sinkID the sourceID of the source the notification should be set
- * @param notificationConfiguration The notification configuration
- */
- virtual am_Error_e asyncSetSinkNotificationConfiguration(const am_Handle_s handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
- /**
- * sets the notification configuration of a source.
- * @return E_OK on success, E_UNKNOWN on error.
- *
- * @param handle The handle for this operation.
- * @param sourceID the sourceID of the source the notification should be set
- * @param notificationConfiguration The notification configuration
- */
- virtual am_Error_e asyncSetSourceNotificationConfiguration(const am_Handle_s handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+ }
- };
+ virtual void getInterfaceVersion(std::string& version) const =0;
+ virtual am_Error_e startupInterface(IAmRoutingReceive* routingreceiveinterface) =0;
+ virtual void setRoutingReady(const uint16_t handle) =0;
+ virtual void setRoutingRundown(const uint16_t handle) =0;
+ virtual am_Error_e asyncAbort(const am_Handle_s handle) =0;
+ virtual 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_CustomConnectionFormat_t connectionFormat) =0;
+ virtual am_Error_e asyncDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID) =0;
+ virtual am_Error_e asyncSetSinkVolume(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time) =0;
+ virtual am_Error_e asyncSetSourceVolume(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time) =0;
+ virtual am_Error_e asyncSetSourceState(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SourceState_e state) =0;
+ virtual am_Error_e asyncSetSinkSoundProperties(const am_Handle_s handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties) =0;
+ virtual am_Error_e asyncSetSinkSoundProperty(const am_Handle_s handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty) =0;
+ virtual am_Error_e asyncSetSourceSoundProperties(const am_Handle_s handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties) =0;
+ virtual am_Error_e asyncSetSourceSoundProperty(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty) =0;
+ virtual am_Error_e asyncCrossFade(const am_Handle_s handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_CustomRampType_t rampType, const am_time_t time) =0;
+ virtual am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState) =0;
+ virtual am_Error_e returnBusName(std::string& BusName) const =0;
+ virtual am_Error_e asyncSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes) =0;
+ virtual am_Error_e asyncSetSinkNotificationConfiguration(const am_Handle_s handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+ virtual am_Error_e asyncSetSourceNotificationConfiguration(const am_Handle_s handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;
+
+};
}
-#endif // !defined(EA_19B3916A_5323_4939_B585_FE9193DA3FAD__INCLUDED_)
+#endif // !defined(EA_3AD07676_42DA_4ba9_A6E8_DA06F23BC8EB__INCLUDED_)
diff --git a/include/shared/CAmCommonAPIWrapper.h b/include/shared/CAmCommonAPIWrapper.h
index d6b8476..dd0d983 100644
--- a/include/shared/CAmCommonAPIWrapper.h
+++ b/include/shared/CAmCommonAPIWrapper.h
@@ -86,6 +86,7 @@ public:
}
bool unregisterStub(const std::string & aCommonAPIAddress)
{
+ (void)aCommonAPIAddress;
/** Not implemented yet
todo: Check whether the appropriate method is available and uncomment...