* Bug #100 - removed projecttypes.h which causes compiling conflicts
[profile/ivi/genivi/genivi-audio-manager.git] / AudioManagerDaemon / docx / 04_y_audiomanager_and_sources.dox
1  /*
2  * Copyright (C) 2012, BMW AG
3  *
4  * This file is part of GENIVI Project AudioManager.
5  *
6  * Contributions are licensed to the GENIVI Alliance under one or more
7  * Contribution License Agreements.
8  *
9  * \copyright
10  * This Source Code Form is subject to the terms of the
11  * Mozilla Public License, v. 2.0. If a  copy of the MPL was not distributed with
12  * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
13  *
14  * \\author Christian Linke (christian.linke@bmw.de)
15  *
16  */
17  
18 /*!
19 \page sourcesink The relation of sources & sinks with the AudioManager
20
21 \section claDi Class diagramm of the relation between sources, sinks and the AudioManager
22 In general, the relationship is defined as well as the interfaces that are used to communicate the informations back and forth. But since the
23 exchange of these informations is abstracted by the RoutingPlugins, the architecture cannot define explicit mechanisms here.\n
24 A lot of attributes that are part of sources and sinks belong logical to them and might be implemented by the RoutingPlugin. The relation between
25 sources, sinks and the AudioManagerDaemon is shown in this \ref cDiag .
26
27 \section boil The REAL interaction
28 A lot of information is related to sources and sinks as can be seen here: \ref cDiag . But not all informations are actually communicated to the
29 sources and sinks since the routing adaptor will take care of handling some of these informations.\n
30 Here are some informations that is believed to be actually communicated to the sources and sinks:
31
32  \section conFormats Connection Formats
33  The am::am_CustomAvailabilityReason_t formats for a connection are chosen when the connection is build up. So if there are more than one possbilities 
34  that can be used for a connection (am::am_Sink_s::listConnectionFormats and am::am_Source_s::listConnectionFormats) the correct one is chosen
35  upon a connect. If this is relevant to the sources and sinks, the routingAdaptor must communicate to the sources and sinks accordingly.
36  \image html SettingConnectionFormats.png
37  
38  
39  \section sstates Source States
40  This diagrams shows the sequence that is used to set the sources states am::am_SourceState_e. Since the source states are set by the 
41  AudioManagerController, the exact behavior is product specific.
42  \image html SourceStates.png
43  
44  \section avail Availability
45  This diagram shows the sequence that is used to communicate the availability am::am_Availability_s. from the sources. Please note that the availability reasons 
46  am::am_CustomAvailabilityReason_t are product specific.
47  \image html AvailabilityofSources.png 
48  Here is the same for the sinks:
49  \image html AvailabilityofSinks.png
50  
51  \section vol Volumes
52  Volumes am::am_volume_t are set to the sinks, mainly, but depending on the used audio routing system it might be that they can be set on the source level as well. 
53  If this is not the case, proper measures must be taken to do this.
54   Changes of a source:
55  \image html VolumeChangesofSources.png
56   Changes of a sink:
57  \image html VolumeChangesofSinks.png
58  
59  \section SoundProperties
60  The am::am_SoundProperty_s are set to the sources and sinks. More information about SoundProperties can be found here: \ref prop.
61   Changes of a sink:
62  \image html SoundPropertyChangeofSink.png
63  Changes of a source:
64  \image html SoundPropertyChangeofSource.png
65  
66  \section in Interrupt States
67  The am::am_InterruptState_e are reported by low level interrupts from the sources to the AudioManagement. More details here: \ref interrupts .
68  \image html InterruptStatusChange.png
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92 */