From a2edae5cee4254b933f42399edc0e092abd4f5cf Mon Sep 17 00:00:00 2001 From: Aleksandar Donchev Date: Mon, 2 Sep 2013 11:57:28 +0200 Subject: *PluginCommandInterfaceCAPI, PluginRoutingInterfaceCAPI, NodeStateCommunicatorCAPI with unit tests first version. Choosing between DBUS and Common-API via cmake. CommonAPI - legacy support for DBus properties (Set 1) Signed-off-by: Christian Linke (cherry picked from commit ea96ef59e29466667c90b506426e2a5a9cdb82d2) --- .../fidl/CommandInterface.fidl | 723 +++++++++++++++++++++ 1 file changed, 723 insertions(+) create mode 100755 PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl (limited to 'PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl') diff --git a/PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl b/PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl new file mode 100755 index 0000000..8f1a220 --- /dev/null +++ b/PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl @@ -0,0 +1,723 @@ +package org.genivi.audiomanager + +import org.genivi.audiomanager.am.* from "amTypes.fidl" + +<** + @author : J�rgen Gehring + + @description : CommandInterface AudioManager. + + @details : Source D-Bus specification org.genivi.audiomanager.CommandInterface + +**> + +interface CommandInterface { + version { + major 0 + minor 1 + } + method Connect { + in { + am_sourceID_t sourceID + am_sinkID_t sinkID + } + out { + am_Error_e result + am_mainConnectionID_t mainConnectionID + } + } + method Disconnect { + in { + am_mainConnectionID_t mainConnectionID + } + out { + am_Error_e result + } + } + method SetVolume { + in { + am_sinkID_t sinkID + am_mainVolume_t volume + } + out { + am_Error_e result + } + } + method VolumeStep { + in { + am_sinkID_t sinkID + am_mainVolume_t volumeStep + } + out { + am_Error_e result + } + } + method SetSinkMuteState { + in { + am_sinkID_t sinkID + am_MuteState_e muteState + } + out { + am_Error_e result + } + } + method SetMainSinkSoundProperty { + in { + am_sinkID_t sinkID + am_MainSoundProperty_s soundProperty + } + out { + am_Error_e result + } + } + method SetMainSourceSoundProperty { + in { + am_sourceID_t sourceID + am_MainSoundProperty_s soundProperty + } + out { + am_Error_e result + } + } + method SetSystemProperty { + in { + am_SystemProperty_s soundProperty + } + out { + am_Error_e result + } + } + method GetListMainConnections { + out { + am_Error_e result + am_MainConnectionType_l listConnections + } + } + method GetListMainSinks { + out { + am_Error_e result + am_SinkType_l listMainSinks + } + } + method GetListMainSources { + out { + am_Error_e result + am_SourceType_l listMainSources + } + } + method GetListMainSinkSoundProperties { + in { + am_sinkID_t sinkID + } + out { + am_Error_e result + am_MainSoundProperty_l listSoundProperties + } + } + method GetListMainSourceSoundProperties { + in { + am_sourceID_t sourceID + } + out { + am_Error_e result + am_MainSoundProperty_l listSourceProperties + } + } + method GetListSourceClasses { + out { + am_Error_e result + am_SourceClass_l listSourceClasses + } + } + method GetListSinkClasses { + out { + am_Error_e result + am_SinkClass_l listSinkClasses + } + } + method GetListSystemProperties { + out { + am_Error_e result + am_SystemProperty_l listSystemProperties + } + } + method GetTimingInformation { + in { + am_mainConnectionID_t mainConnectionID + } + out { + am_Error_e result + am_timeSync_t delay + } + } + broadcast NumberOfMainConnectionsChanged { + } + broadcast MainConnectionStateChanged { + out { + am_mainConnectionID_t connectionID + am_ConnectionState_e connectionState + } + } + broadcast NumberOfSourceClassesChanged { + } + broadcast SourceAdded { + out { + am_SourceType_s newSource + } + } + broadcast SourceRemoved { + out { + am_sourceID_t removedSourceID + } + } + broadcast MainSourceSoundPropertyChanged { + out { + am_sourceID_t sourceID + am_MainSoundProperty_s SoundProperty + } + } + broadcast SourceAvailabilityChanged { + out { + am_sourceID_t sourceID + am_Availability_s availability + } + } + broadcast NumberOfSinkClassesChanged { + } + broadcast SinkAdded { + out { + am_SinkType_s newSink + } + } + broadcast SinkRemoved { + out { + am_sinkID_t removedSinkID + } + } + broadcast MainSinkSoundPropertyChanged { + out { + am_sinkID_t sinkID + am_MainSoundProperty_s SoundProperty + } + } + broadcast SinkAvailabilityChanged { + out { + am_sinkID_t sinkID + am_Availability_s availability + } + } + broadcast VolumeChanged { + out { + am_sinkID_t sinkID + am_mainVolume_t volume + } + } + broadcast SinkMuteStateChanged { + out { + am_sinkID_t sinkID + am_MuteState_e muteState + } + } + broadcast SystemPropertyChanged { + out { + am_SystemProperty_s SystemProperty + } + } + broadcast TimingInformationChanged { + out { + am_mainConnectionID_t mainConnection + am_timeSync_t time + } + } + + broadcast SinkUpdated{ + out{ + am_sinkID_t sinkID + am_sinkClass_t sinkClassID + am_MainSoundProperty_l listMainSoundProperties + } + } + + broadcast SourceUpdated{ + out{ + am_sourceID_t sourceID + am_sourceClass_t sourceClassID + am_MainSoundProperty_l listMainSoundProperties + } + } + + broadcast SinkNotification{ + out{ + am_sinkID_t sinkID + am_NotificationPayload_s notification + } + } + + broadcast SourceNotification{ + out{ + am_sourceID_t sourceID + am_NotificationPayload_s notification + } + } + + broadcast MainSinkNotificationConfigurationChanged{ + out{ + am_sinkID_t sinkID + am_NotificationConfiguration_s mainNotificationConfiguration + } + } + + broadcast MainSourceNotificationConfigurationChanged{ + out{ + am_sourceID_t sourceID + am_NotificationConfiguration_s mainNotificationConfiguration + } + } + + typedef am_sourceID_t is UInt16 + + typedef am_sinkID_t is UInt16 + + typedef am_mainConnectionID_t is UInt16 + + typedef am_timeSync_t is Int16 + + typedef am_mainVolume_t is Int16 + + typedef am_sourceClass_t is UInt16 + + typedef am_sinkClass_t is UInt16 + + <** + @description : The errors of the audiomanager. All possible errors are in here. This enum is used widely as return parameter. + **> + enumeration am_Error_e { + + //E_UNKNOWN = "0x00" + + <** + @description : no error - positive reply + **> + E_OK = "0x00" + + <** + @description : value out of range + **> + E_OUT_OF_RANGE = "0x01" + + <** + @description : not used + **> + E_NOT_USED = "0x02" + + <** + @description : a database error occurred + **> + E_DATABASE_ERROR = "0x03" + + <** + @description : the desired object already exists + **> + E_ALREADY_EXISTS = "0x04" + + <** + @description : there is no change + **> + E_NO_CHANGE = "0x05" + + <** + @description : the desired action is not possible + **> + E_NOT_POSSIBLE = "0x06" + + <** + @description : the desired object is non existent + **> + E_NON_EXISTENT = "0x07" + + <** + @description : the asynchronous action was aborted + **> + E_ABORTED = "0x08" + + <** + @description : 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 = "0x09" + E_MAX = "0xA" + } + + enumeration am_MuteState_e { + + <** + @description : default + **> + MS_UNKNOWN = "0x00" + + <** + @description : the source / sink is muted + **> + MS_MUTED = "0x01" + + <** + @description : the source / sink is unmuted + **> + MS_UNMUTED = "0x02" + MS_MAX = "0x03" + } + + enumeration am_MainSoundPropertyType_e { + + <** + @description : default + **> + MSP_UNKNOWN = "0x00" + + <** + @description : example value between -10 and +10 + **> + MSP_EXAMPLE_TREBLE = "0x01" + + <** + @description : example value between -10 and +10 + **> + MSP_EXAMPLE_MID = "0x02" + + <** + @description : example value between -10 and +10 + **> + MSP_EXAMPLE_BASS = "0x03" + MSP_SOURCE_TYPE = "0x04" + MSP_MAX = "0x05" + } + + enumeration am_SystemPropertyType_e { + + <** + @description : default + **> + SYP_UNKNOWN = "0x00" + SYP_MAX = "0x01" + } + + enumeration am_ConnectionState_e { + CS_UNKNOWN = "0x00" + + <** + @description : This means the connection is just building up + **> + CS_CONNECTING = "0x01" + + <** + @description : the connection is ready to be used + **> + CS_CONNECTED = "0x02" + + <** + @description : the connection is in the course to be knocked down + **> + CS_DISCONNECTING = "0x03" + + <** + @description : only relevant for connectionStatechanged. Is send after the connection was removed + **> + CS_DISCONNECTED = "0x04" + + <** + @description : this means the connection is still build up but unused at the moment + **> + CS_SUSPENDED = "0x05" + CS_MAX = "0x06" + } + + enumeration am_Availablility_e { + + <** + @description : default + **> + A_UNKNOWN = "0x00" + + <** + @description : The source / sink is available + **> + A_AVAILABLE = "0x01" + + <** + @description : the source / sink is not available + **> + A_UNAVAILABLE = "0x02" + A_MAX = "0x03" + } + + enumeration am_AvailabilityReason_e { + + <** + @description : default + **> + AR_UNKNOWN = "0x00" + + <** + @description : the availability changed because an new media was entered. + **> + AR_GENIVI_NEWMEDIA = "0x01" + + <** + @description : the availability changed because the same media was entered. + **> + AR_GENIVI_SAMEMEDIA = "0x02" + + <** + @description : the availability changed because there is no media. + **> + AR_GENIVI_NOMEDIA = "0x03" + + <** + @description : the availability changed because of a temperature event. + **> + AR_GENIVI_TEMPERATURE = "0x04" + + <** + @description : the availability changed because of a voltage event. + **> + AR_GENIVI_VOLTAGE = "0x05" + + <** + @description : the availability changed because of fatal errors reading or accessing media. + **> + AR_GENIVI_ERRORMEDIA = "0x06" + AR_MAX = "0x07" + } + + enumeration am_ClassProperty_e { + + <** + @description : default + **> + CP_UNKNOWN = "0x00" + + <** + @description : defines the source type of a source. Project specific, could be for example differentiation between interrupt source and main source. + **> + CP_GENIVI_SOURCE_TYPE = "0x01" + /** + * defines the SINK_TYPE. Project specific + */ + <** + @description : defines the SINK_TYPE. Project specific. + **> + CP_GENIVI_SINK_TYPE = "0x02" + CP_MAX = "0x03" + } + + enumeration am_InterruptState_e + { + /** + * default + */ + IS_UNKNOWN = "0x00" + /** + * the interrupt state is off - no interrupt + */ + IS_OFF = "0x01" + /** + * the interrupt state is interrupted - the interrupt is active + */ + IS_INTERRUPTED = "0x02" + IS_MAX = "0x03" + } + + struct am_MainSoundProperty_s { + + <** + @description : the type of the property + **> + am_MainSoundPropertyType_e type + + <** + @description : the actual value + **> + Int16 value + } array am_MainSoundProperty_l of am_MainSoundProperty_s + + struct am_SystemProperty_s { + + <** + @description : the type that is set + **> + am_SystemPropertyType_e type + + <** + @description : the actual value + **> + Int16 value + } + + array am_SystemProperty_l of am_SystemProperty_s + + struct am_MainConnectionType_s { + + <** + @description : the ID of the mainconnection + **> + am_mainConnectionID_t mainConnectionID + + <** + @description : the sourceID where the connection starts + **> + am_sourceID_t sourceID + + <** + @description : the sinkID where the connection ends + **> + am_sinkID_t sinkID + + <** + @description : the delay of the mainconnection + **> + am_timeSync_t delay + + <** + @description : the current connection state + **> + am_ConnectionState_e connectionState + } + + array am_MainConnectionType_l of am_MainConnectionType_s + + struct am_Availability_s { + + <** + @description : the current availability state. + **> + am_Availablility_e availability + + <** + @description : the reason for the last change. This can be used to trigger events that deal with state changes. + **> + am_AvailabilityReason_e availabilityReason + } + + struct am_SourceType_s { + + <** + @description : his 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 + + <** + @description : The name of the source. Must be unique in the whole system. + **> + String name + + <** + @description : the availability of the source + **> + am_Availability_s availability + + <** + @description : 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 + } + + array am_SourceType_l of am_SourceType_s + + struct am_SinkType_s { + + <** + @description : 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 + + <** + @description : The name of the sink. Must be unique in the whole system. + **> + String name + + <** + @description : + 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 + + <** + @description : 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 + + <** + @description : the sinkClassID references to a sinkClass. With the help of classification, rules can be setup to define the system behaviour. + **> + am_sinkClass_t sinkClassID + } + + array am_SinkType_l of am_SinkType_s + + struct am_ClassProperty_s { + + <** + @description : he property as enum. + **> + am_ClassProperty_e classProperty + Int16 value + } + + array am_ClassProperty_l of am_ClassProperty_s + + struct am_SourceClass_s { + + <** + @description : the source ID. + **> + am_sourceClass_t sourceClassID + + <** + @description : the name of the sourceClass - must be unique in the system. + **> + String name + + <** + @description : 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. + **> + am_ClassProperty_l listClassProperties + } + + array am_SourceClass_l of am_SourceClass_s + + struct am_SinkClass_s { + + <** + @description : the ID of the sinkClass. + **> + am_sinkClass_t sinkClassID + + <** + @description : the name of the sinkClass - must be unique in the system. + **> + String name + + <** + @description : 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. + **> + am_ClassProperty_l listClassProperties + } + + array am_SinkClass_l of am_SinkClass_s + + struct am_NotificationPayload_s + { + am_NotificationType_e type + <** + @description : This is finally the value of the notification. It's meaning depends on the notificationType + **> + Int16 value + + } + +} -- cgit v1.2.1