summaryrefslogtreecommitdiff
path: root/include/routing/IAmRoutingSend.h
blob: d9aeb3c21e86e1fb54eed7730c2817afbec66e81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/**
 * Copyright (C) 2012 - 2014, 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 Linke, christian.linke@bmw.de BMW 2011 - 2014
 *
 * \file
 * 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.
 */
#if !defined(EA_75F8849C_0F4B_4641_B0B9_01DE137E6938__INCLUDED_)
#define EA_75F8849C_0F4B_4641_B0B9_01DE137E6938__INCLUDED_

#include <vector>
#include <string>
#include "audiomanagertypes.h"
namespace am {
class IAmRoutingReceive;
}

#include "audiomanagertypes.h"
#include "IAmRoutingReceive.h"

#define RoutingSendVersion "3.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
 */
class IAmRoutingSend
{

public:
	IAmRoutingSend() {

	}

	virtual ~IAmRoutingSend() {

	}

	/**
	 * This function returns the version of the interface
	 */
	virtual void getInterfaceVersion(std::string& version) const =0;
	/**
	 * starts up the interface. In the implementations, here is the best place for
	 * init routines.
	 */
	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...
	 */
	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.
	 */
	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
	 */
	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
	 */
	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;
	/**
	 * disconnect a connection with given connectionID
	 * @return E_OK on success, E_UNKNOWN on error, E_NON_EXISTENT if connection was
	 * not found
	 */
	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
	 */
	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;
	/**
	 * 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
	 */
	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;
	/**
	 * This function is used to set the source state of a particular source.
	 * @return E_OK on success, E_UNKNOWN on error
	 */
	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
	 */
	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
	 */
	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
	 */
	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
	 */
	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
	 */
	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;
	/**
	 * this function is used for early and late audio functions to set the domain
	 * state
	 * @return E_OK on success, E_UNKNOWN on error
	 */
	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
	 */
	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.
	 */
	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.
	 */
	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.
	 */
	virtual am_Error_e asyncSetSourceNotificationConfiguration(const am_Handle_s handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) =0;

};
}
#endif // !defined(EA_75F8849C_0F4B_4641_B0B9_01DE137E6938__INCLUDED_)