2 * Copyright (C) 2012, BMW AG
4 * This file is part of GENIVI Project AudioManager.
6 * Contributions are licensed to the GENIVI Alliance under one or more
7 * Contribution License Agreements.
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/.
14 * \\author Christian Linke (christian.linke@bmw.de)
19 \page sourcesink The relation of sources & sinks with the AudioManager
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 .
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:
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
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
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
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.
55 \image html VolumeChangesofSources.png
57 \image html VolumeChangesofSinks.png
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.
62 \image html SoundPropertyChangeofSink.png
64 \image html SoundPropertyChangeofSource.png
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