am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const;
void setRoutingReady();
void setCommandReady();
+ void setCommandRundown();
+ void setRoutingRundown();
am_Error_e getSocketHandler(SocketHandler*& socketHandler);
uint16_t getInterfaceVersion() const;
#endif
}
+void am::ControlReceiver::setCommandRundown()
+{
+ logInfo("ControlReceiver::setCommandRundown got called");
+ mCommandSender->cbCommunicationRundown();
+}
+
+void am::ControlReceiver::setRoutingRundown()
+{
+ logInfo("ControlReceiver::setRoutingRundown got called");
+ mRoutingSender->routingInterfacesRundown();
+}
+
uint16_t ControlReceiver::getInterfaceVersion() const
{
return ControlReceiveVersion;
void cbAckSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error);
void cbAckSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error);
void cbAckSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error);
- am_Error_e getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats);
+ 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);
uint16_t getInterfaceVersion() const;
private:
assert(controlreceiveinterface);
mControlReceiveInterface = controlreceiveinterface;
//here is a good place to insert SystemProperties into the database...
+ //and might be a good place to insert the Source and Sink CLasses as well
return E_NOT_USED;
}
am_Error_e ControlSenderPlugin::hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s & soundProperty)
{
- if (sinkID==0) return E_NON_EXISTENT;
+ if (sinkID == 0)
+ return E_NON_EXISTENT;
mainSinkSoundPropertySet set;
set.sinkID = sinkID;
(void) handle;
}
-am_Error_e ControlSenderPlugin::getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats)
+am_Error_e ControlSenderPlugin::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)
{
(void) sourceID;
(void) sinkID;
+ (void) listRoute;
//ok, this is cheap. In a real product you have your preferences, right?
listPrioConnectionFormats = listPossibleConnectionFormats;
return (E_OK);
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_BB47505C_A541_4063_AF54_010D0AC22821__INCLUDED_)\r
-#define EA_BB47505C_A541_4063_AF54_010D0AC22821__INCLUDED_\r
+#if !defined(EA_6D2D8AED_B7CC_424e_8C3F_EB10C5EBDC21__INCLUDED_)\r
+#define EA_6D2D8AED_B7CC_424e_8C3F_EB10C5EBDC21__INCLUDED_\r
\r
#include <stdint.h>\r
#include "projecttypes.h"\r
* This is the domain type. Each domain has a unique identifier.\r
* \r
* \mainpage\r
- * \image html "Bild1.png"\r
- * Copyright Copyright (C) 2011, BMW AG\r
+ * Copyright Copyright (C) 2011,2012 BMW AG\r
* \r
- * \date 22.06.2011\r
+ * \date 21.2.2012 \r
* \r
* \author Christian Mueller (christian.ei.mueller@bmw.de)\r
* \r
* \r
* This interface is used by the AudioManager to control the RoutingAdapters and communicate with them. The communication is based on two interfaces, one is provided by the AudioManager for communication from the adapters towards the AudioManager and one for the opposite direction. The design of the AudioManager shall be done in such a way that several Interfaces are supported at the same time via a plug-in mechanism. The plug-ins are (either statically - due to performance reasons or dynamically) loaded at start-up. Due to this architecture, the number of buses and routing adapters that are supported are as low as possible for each system and as high as needed without the need of changing the AudioManager itself. The AudioManager expects a bus-like structure behind each plug-in, so that a plug-in can implement a bus interface and proxy the messages to the routing adapters - the AudioManager will be capable of addressing more than one adapter one each plug-in. The interface shall is asynchronous for all timely critical commands.\r
* \r
+ * \section interfaces Interfaces\r
+ * the calls to the interfaces of the AudioManagerDaemon are generally not threadsafe !\r
+ * Nevertheless if such calls from a different thread-context are needed, you may use the defered-call pattern that utilizes the mainloop (Sockethandler) to get self called in the next loop of the mainloop. For more infomation please check the audiomanger wiki page.\r
+ * \r
+ * \section deferred The deferred call pattern\r
+ * Create a unix pipe or socket and add the file descriptor to the Sockethandler. Whenever a call needs to be deferred you can store the necessary information protected by a mutex in a queue and write to the socket or pipe. This will lead to a callback in the next loop of the mainloop - when getting called by the callback that was registered at the Sockethandler execute your call with the information stored away.\r
+ * \r
+ * \r
* \section sources_sinks Sources & Sinks\r
* \subsection Visibility\r
* Sources and sinks can either be visible or not. If they are visible, the HMI is informed about their existence and can use them. \n\r
* It is the job of the AudioManager to retrieve all latency timing information from each connection, to aggregate this information and provide a latency information on a per MainConnection Basis. It is not the task of the AudioManager to actually delay or speed up video or audio signals to achieve a lipsync. The actual correction shall be done in the videoplayer with the information provided by the AudioManager.\r
* The time information is always reported by the routingadaptors for each connection. Delays that are introduced in a sink or a gateway are counting for the connection that connects to this sink or gateway.\n\r
* After the buildup of a connection the first timing information needs to be sent within 5 seconds, the timing information from the routing adaptors need to be sent via 4 seconds. If the latency for a connection is variable and changes over lifetime of the connection, the routing adaptors shall resend the value and the audiomanger will correct the over all latency.\n
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_domainID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_sourceID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_sinkID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_gatewayID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_crossfaderID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_connectionID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_mainConnectionID_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
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.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef int16_t am_volume_t;
/**
* 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.\r
* The range of this type is customer specific.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef int16_t am_mainVolume_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_sourceClass_t;
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_sinkClass_t;
/**
* time in ms!
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef uint16_t am_time_t;
/**
* offset time that is introduced in milli seconds.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
typedef int16_t am_timeSync_t;
/**
* with the help of this enum, sinks and sources can report their availability state
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_Availablility_e
{
/**
* represents the connection state
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_ConnectionState_e
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_DomainState_e
{
/**
* This enum characterizes the data of the EarlyData_t
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_EarlyDataType_e
{
/**
* the errors of the audiomanager. All possible errors are in here. This enum is used widely as return parameter.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_Error_e
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_MuteState_e
{
/**
* The source state reflects the state of the source
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_SourceState_e
{
/**
* This enumeration is used to define the type of the action that is correlated to a handle.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_Handle_e
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:31 PM
*/
enum am_InterruptState_e
{
/**
* describes the active sink of a crossfader.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
enum am_HotSink_e
{
/**
* this describes the availability of a sink or a source together with the latest change
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_Availability_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:50 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_ClassProperty_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_Crossfader_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_Gateway_s
{
/**
* This represents one "hopp" in a route
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_RoutingElement_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_Route_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:32 PM
*/
struct am_SoundProperty_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:33 PM
*/
struct am_SystemProperty_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:33 PM
*/
struct am_SinkClass_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:51 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:33 PM
*/
struct am_SourceClass_s
{
/**
* this type holds all information of sources relevant to the HMI
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:33 PM
*/
struct am_SourceType_s
{
/**
* this type holds all information of sinks relevant to the HMI
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:33 PM
*/
struct am_SinkType_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:33 PM
*/
struct am_Handle_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_MainSoundProperty_s
{
/**
* this type holds all information of connections relevant to the HMI
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_MainConnectionType_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_MainConnection_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:52 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_Sink_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:53 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_Source_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:53 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_Domain_s
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:53 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:34 PM
*/
struct am_Connection_s
{
* data type depends of am_EarlyDataType_e:\r
* volume_t in case of ED_SOURCE_VOLUME, ED_SINK_VOLUME \r
* soundProperty_t in case of ED_SOURCE_PROPERTY, ED_SINK_PROPERTY
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:53 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
union am_EarlyData_u
{
* data type depends of am_EarlyDataType_e:\r
* sourceID in case of ED_SOURCE_VOLUME, ED_SOURCE_PROPERTY\r
* sinkID in case of ED_SINK_VOLUME, ED_SINK_PROPERTY
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:53 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
union am_DataType_u
{
};
/**
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:53 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
struct am_EarlyData_s
{
};
}
-#endif // !defined(EA_BB47505C_A541_4063_AF54_010D0AC22821__INCLUDED_)
+#endif // !defined(EA_6D2D8AED_B7CC_424e_8C3F_EB10C5EBDC21__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_C6A85AF3_95A7_4c37_90ED_CA847BA7F31D__INCLUDED_)\r
-#define EA_C6A85AF3_95A7_4c37_90ED_CA847BA7F31D__INCLUDED_\r
+#if !defined(EA_241FAB0A_6108_4f68_8AAD_F2218B1C41D9__INCLUDED_)\r
+#define EA_241FAB0A_6108_4f68_8AAD_F2218B1C41D9__INCLUDED_\r
\r
#include <vector>\r
#include <string>\r
}\r
-#define CommandReceiveVersion 1
+#define CommandReceiveVersion 1.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.
- * @author christian
- * @version 1.0
- * @created 10-Feb-2012 1:31:04 PM
+ * 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.\r
+ * There are two rules that have to be kept in mind when implementing against this interface:\r
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \r
+ * 2. YOU MAY NOT THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\r
+ * 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.
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
class CommandReceiveInterface
{
};
}
-#endif // !defined(EA_C6A85AF3_95A7_4c37_90ED_CA847BA7F31D__INCLUDED_)
+#endif // !defined(EA_241FAB0A_6108_4f68_8AAD_F2218B1C41D9__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_1EBB5273_A222_43b8_B7C9_435405DF9AA2__INCLUDED_)\r
-#define EA_1EBB5273_A222_43b8_B7C9_435405DF9AA2__INCLUDED_\r
+#if !defined(EA_A230EB7E_1719_4470_BCC6_12B0606A80E6__INCLUDED_)\r
+#define EA_A230EB7E_1719_4470_BCC6_12B0606A80E6__INCLUDED_\r
\r
#include <vector>\r
#include <string>\r
#include "CommandReceiveInterface.h"
-#define CommandSendVersion 1
+#define CommandSendVersion 1.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.
- * @author christian
- * @version 1.0
- * @created 10-Feb-2012 1:31:05 PM
+ * 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.\r
+ * There are two rules that have to be kept in mind when implementing against this interface:\r
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \r
+ * 2. YOU MAY NOT THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\r
+ * 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.
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:36 PM
*/
class CommandSendInterface
{
};
}
-#endif // !defined(EA_1EBB5273_A222_43b8_B7C9_435405DF9AA2__INCLUDED_)
+#endif // !defined(EA_A230EB7E_1719_4470_BCC6_12B0606A80E6__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_C0D10ABE_48CA_4a18_9932_CB970D9C3723__INCLUDED_)\r
-#define EA_C0D10ABE_48CA_4a18_9932_CB970D9C3723__INCLUDED_\r
+#if !defined(EA_E6BEDBFE_083F_4174_8B46_FDDAEE627EB3__INCLUDED_)\r
+#define EA_E6BEDBFE_083F_4174_8B46_FDDAEE627EB3__INCLUDED_\r
\r
#include <vector>\r
#include <string>\r
}\r
-#define ControlReceiveVersion 1
+#define ControlReceiveVersion 1.0
namespace am {
/**
- * This interface gives access to all important functions of the audiomanager that are used by the AudioManagerController to control the system.
- * @author christian
- * @version 1.0
- * @created 10-Feb-2012 1:31:05 PM
+ * This interface gives access to all important functions of the audiomanager that are used by the AudioManagerController to control the system.\r
+ * There are two rules that have to be kept in mind when implementing against this interface:\r
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \r
+ * 2. YOU MAY NOT THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\r
+ * 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.
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:36 PM
*/
class ControlReceiveInterface
{
*/
virtual void setCommandReady() =0;
/**
+ * sets the command interface into the rundown state
+ */
+ virtual void setCommandRundown() =0;
+ /**
* sets the routinginterface to ready.
*/
virtual void setRoutingReady() =0;
/**
+ * sets the routinginterface to the rundown state
+ */
+ virtual void setRoutingRundown() =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.\r
* returns E_OK if pointer is valid, E_UNKNOWN in case AudioManager was compiled without socketHandler support,
*
};
}
-#endif // !defined(EA_C0D10ABE_48CA_4a18_9932_CB970D9C3723__INCLUDED_)
+#endif // !defined(EA_E6BEDBFE_083F_4174_8B46_FDDAEE627EB3__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_F931365D_53A0_4830_8B3E_29C95C767ADC__INCLUDED_)\r
-#define EA_F931365D_53A0_4830_8B3E_29C95C767ADC__INCLUDED_\r
+#if !defined(EA_71CB967F_6C92_467f_99BE_B9F5210165C2__INCLUDED_)\r
+#define EA_71CB967F_6C92_467f_99BE_B9F5210165C2__INCLUDED_\r
\r
#include <vector>\r
#include <string>\r
class ControlReceiveInterface;\r
}
-#define ControlSendVersion 1
+#define ControlSendVersion 1.0
namespace am {
/**
* This interface is presented by the AudioManager controller.\r
- * 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.
- * @author christian
- * @version 1.0
- * @created 10-Feb-2012 1:31:06 PM
+ * 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.\r
+ * There are two rules that have to be kept in mind when implementing against this interface:\r
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \r
+ * 2. YOU MAY NOT THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\r
+ * 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.
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:37 PM
*/
class ControlSendInterface
{
*
* @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 std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats) =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_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats) =0;
/**
* This function returns the version of the interface\r
* returns E_OK, E_UNKOWN if version is unknown.
};
}
-#endif // !defined(EA_F931365D_53A0_4830_8B3E_29C95C767ADC__INCLUDED_)
+#endif // !defined(EA_71CB967F_6C92_467f_99BE_B9F5210165C2__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_3D55671A_C1DC_4042_9EBF_5738C754BF63__INCLUDED_)\r
-#define EA_3D55671A_C1DC_4042_9EBF_5738C754BF63__INCLUDED_\r
+#if !defined(EA_8A329625_1F6F_478f_A704_D5359425FB4E__INCLUDED_)\r
+#define EA_8A329625_1F6F_478f_A704_D5359425FB4E__INCLUDED_\r
\r
namespace am {\r
/**\r
* 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.\r
- * @author christian\r
- * @version 1.0\r
- * @created 21-Feb-2012 10:06:54 AM\r
+ * @author Christian Mueller\r
+ * @created 21-Feb-2012 4:58:35 PM\r
*/\r
enum am_ConnectionFormat_e\r
{\r
\r
/**\r
* This enum gives the information about reason for reason for Source/Sink change\r
- * @author christian\r
- * @version 1.0\r
- * @created 21-Feb-2012 10:06:54 AM\r
+ * @author Christian Mueller\r
+ * @created 21-Feb-2012 4:58:35 PM\r
*/\r
enum am_AvailabilityReason_e\r
{\r
\r
/**\r
* product specific identifier of property\r
- * @author christian\r
- * @version 1.0\r
- * @created 21-Feb-2012 10:06:54 AM\r
+ * @author Christian Mueller\r
+ * @created 21-Feb-2012 4:58:35 PM\r
*/\r
enum am_ClassProperty_e\r
{\r
/**\r
* The given ramp types here are just a possiblity. for products, different ramp types can be defined here.\r
* It is in the responsibility of the product to make sure that the routing plugins are aware of the ramp types used.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:54 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
enum am_RampType_e
{
/**
* sound properties. Within genivi only the standard properties are defined, for products these need to be extended.
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:54 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
enum am_SoundPropertyType_e
{
/**
* Here are all SoundProperties that can be set via the CommandInterface. Product specific
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:54 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
enum am_MainSoundPropertyType_e
{
/**
* describes the different system properties. Project specific
- * @author christian
- * @version 1.0
- * @created 21-Feb-2012 10:06:54 AM
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:35 PM
*/
enum am_SystemPropertyType_e
{
SYP_MAX
};
}
-#endif // !defined(EA_3D55671A_C1DC_4042_9EBF_5738C754BF63__INCLUDED_)
+#endif // !defined(EA_8A329625_1F6F_478f_A704_D5359425FB4E__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_C1FDE688_5CB0_42b2_B2CC_C407D50C2D87__INCLUDED_)\r
-#define EA_C1FDE688_5CB0_42b2_B2CC_C407D50C2D87__INCLUDED_\r
+#if !defined(EA_3F1137F5_C65B_42b9_A805_A65B61A04AA1__INCLUDED_)\r
+#define EA_3F1137F5_C65B_42b9_A805_A65B61A04AA1__INCLUDED_\r
\r
#include <vector>\r
#include <string>\r
}\r
-#define RoutingReceiveVersion 1
+#define RoutingReceiveVersion 1.0
namespace am {
/**
- * Routing Receive sendInterface description. This class implements everything from RoutingAdapter -> Audiomanager
- * @author christian
- * @version 1.0
- * @created 10-Feb-2012 1:31:06 PM
+ * Routing Receive sendInterface description. This class implements everything from RoutingAdapter -> Audiomanager\r
+ * There are two rules that have to be kept in mind when implementing against this interface:\r
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \r
+ * 2. YOU MAY NOT THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\r
+ * 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.
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:37 PM
*/
class RoutingReceiveInterface
{
};
}
-#endif // !defined(EA_C1FDE688_5CB0_42b2_B2CC_C407D50C2D87__INCLUDED_)
+#endif // !defined(EA_3F1137F5_C65B_42b9_A805_A65B61A04AA1__INCLUDED_)
*\r
* \section License\r
* GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)\r
-* Copyright (C) 2011, BMW AG Christian M?ller Christian.ei.mueller@bmw.de\r
+* Copyright (C) 2011, BMW AG Christian Mueller Christian.ei.mueller@bmw.de\r
*\r
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.\r
*\r
* THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL. PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN\r
*/\r
-#if !defined(EA_E1ED14D4_6A57_4661_8587_FA302E2A9951__INCLUDED_)\r
-#define EA_E1ED14D4_6A57_4661_8587_FA302E2A9951__INCLUDED_\r
+#if !defined(EA_E6EBF9D0_B241_44f2_AABB_8DAE02D74E88__INCLUDED_)\r
+#define EA_E6EBF9D0_B241_44f2_AABB_8DAE02D74E88__INCLUDED_\r
\r
#include <vector>\r
#include <string>\r
#include "RoutingReceiveInterface.h"
-#define RoutingSendVersion 1
+#define RoutingSendVersion 1.0
namespace am {
/**
- * This class implements everything from Audiomanager -> RoutingAdapter
- * @author christian
- * @version 1.0
- * @created 10-Feb-2012 1:31:06 PM
+ * This class implements everything from Audiomanager -> RoutingAdapter\r
+ * There are two rules that have to be kept in mind when implementing against this interface:\r
+ * 1. CALLS TO THIS INTERFACE ARE NOT THREAD SAFE !!!! \r
+ * 2. YOU MAY NOT THE CALLING INTERFACE DURING AN SYNCHRONOUS OR ASYNCHRONOUS CALL THAT EXPECTS A RETURN VALUE.\r
+ * 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.
+ * @author Christian Mueller
+ * @created 21-Feb-2012 4:58:37 PM
*/
class RoutingSendInterface
{
};
}
-#endif // !defined(EA_E1ED14D4_6A57_4661_8587_FA302E2A9951__INCLUDED_)
+#endif // !defined(EA_E6EBF9D0_B241_44f2_AABB_8DAE02D74E88__INCLUDED_)