2 * Copyright (C) 2012 - 2014, 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/.
15 * \author Christian Linke, christian.linke@bmw.de BMW 2011 - 2014
18 * For further information see http://projects.genivi.org/audio-manager
20 * THIS CODE HAS BEEN GENERATED BY ENTERPRISE ARCHITECT GENIVI MODEL.
21 * PLEASE CHANGE ONLY IN ENTERPRISE ARCHITECT AND GENERATE AGAIN.
23 #if !defined(EA_4FF89D4E_BF3C_465a_85C9_1DC47E4FA742__INCLUDED_)
24 #define EA_4FF89D4E_BF3C_465a_85C9_1DC47E4FA742__INCLUDED_
35 typedef uint16_t am_domainID_t;
40 typedef uint16_t am_crossfaderID_t;
45 typedef uint16_t am_connectionID_t;
50 typedef uint16_t am_sourceID_t;
55 typedef uint16_t am_sinkID_t;
60 typedef uint16_t am_gatewayID_t;
65 typedef uint16_t am_mainConnectionID_t;
70 typedef uint16_t am_speed_t;
73 * The unit is 0.1 db steps,The smallest value -3000 (=AM_MUTE). The minimum and
74 * maximum can be limited by actual project.
76 typedef int16_t am_volume_t;
77 static const am_volume_t AM_MUTE = -3000;
80 * This is the volume presented on the command interface. It is in the duty of the
81 * Controller to change the volumes given here into meaningful values on the
83 * The range of this type is customer specific.
85 typedef int16_t am_mainVolume_t;
87 typedef uint16_t am_sourceClass_t;
89 typedef uint16_t am_sinkClass_t;
94 typedef uint16_t am_time_t;
97 * offset time that is introduced in milli seconds.
99 typedef int16_t am_timeSync_t;
102 * This type gives the information about reason for reason for Source/Sink change
104 typedef uint16_t am_CustomAvailabilityReason_t;
105 static const am_CustomAvailabilityReason_t AR_UNKNOWN = 0;
106 /** new media was entered */
107 static const am_CustomAvailabilityReason_t AR_GENIVI_NEWMEDIA = 1;
108 /** same media was entered */
109 static const am_CustomAvailabilityReason_t AR_GENIVI_SAMEMEDIA = 2;
110 /** there is no media or media is removed */
111 static const am_CustomAvailabilityReason_t AR_GENIVI_NOMEDIA = 3;
112 /** there was a temperature event */
113 static const am_CustomAvailabilityReason_t AR_GENIVI_TEMPERATURE = 4;
114 /** there was a voltage event */
115 static const am_CustomAvailabilityReason_t AR_GENIVI_VOLTAGE = 5;
116 /** fatal errors on reading or accessing media */
117 static const am_CustomAvailabilityReason_t AR_GENIVI_ERRORMEDIA = 6;
120 * This is a custom specific identifier of property. It can be used to
121 * differentiate between interrupt source/sink, main source/sink, etc.
123 typedef uint16_t am_CustomClassProperty_t;
124 static const am_CustomClassProperty_t CP_UNKNOWN = 0;
125 static const am_CustomClassProperty_t CP_GENIVI_SOURCE_TYPE = 1;
126 static const am_CustomClassProperty_t CP_GENIVI_SINK_TYPE = 2;
129 * This type classifies the format in which data is exchanged within a connection.
130 * The type itself is project specific although there are some standard formats
133 typedef uint16_t am_CustomConnectionFormat_t;
134 static const am_CustomConnectionFormat_t CF_UNKNOWN = 0;
135 static const am_CustomConnectionFormat_t CF_GENIVI_MONO = 1;
136 static const am_CustomConnectionFormat_t CF_GENIVI_STEREO = 2;
137 static const am_CustomConnectionFormat_t CF_GENIVI_ANALOG = 3;
138 static const am_CustomConnectionFormat_t CF_GENIVI_AUTO = 4;
141 * Here are all SoundProperties that can be set via the CommandInterface.
142 * This type is product specific and can be changed or extended.
144 typedef uint16_t am_CustomMainSoundPropertyType_t;
145 static const am_CustomMainSoundPropertyType_t MSP_UNKNOWN = 0;
146 static const am_CustomMainSoundPropertyType_t MSP_GENIVI_TREBLE = 1;
147 static const am_CustomMainSoundPropertyType_t MSP_GENIVI_MID = 2;
148 static const am_CustomMainSoundPropertyType_t MSP_GENIVI_BASS = 3;
151 * The notification types are project specific.
153 typedef uint16_t am_CustomNotificationType_t;
154 static const am_CustomNotificationType_t NT_UNKNOWN = 0;
157 * The given ramp types here are just examples. For products, different ramp types
158 * can be defined here. It is in the responsibility of the product to make sure
159 * that the routing plugins are aware of the ramp types used.
161 typedef uint16_t am_CustomRampType_t;
162 static const am_CustomRampType_t RAMP_UNKNOWN = 0;
163 /** sets directly the value without a ramp */
164 static const am_CustomRampType_t RAMP_GENIVI_DIRECT = 1;
165 /** Sets the volume as fast as possible */
166 static const am_CustomRampType_t RAMP_GENIVI_NO_PLOP = 2;
167 /** inverted exponential update, high gradient at the start - soft end */
168 static const am_CustomRampType_t RAMP_GENIVI_EXP_INV = 3;
169 /** continues update of volume */
170 static const am_CustomRampType_t RAMP_GENIVI_LINEAR = 4;
171 /** exponential update, soft start - high gradient at the end */
172 static const am_CustomRampType_t RAMP_GENIVI_EXP = 5;
175 * Within genivi only the some example properties are defined.
176 * For products these should be changed or extended.
178 typedef uint16_t am_CustomSoundPropertyType_t;
179 static const am_CustomSoundPropertyType_t SP_UNKNOWN = 0;
180 static const am_CustomSoundPropertyType_t SP_GENIVI_TREBLE = 1;
181 static const am_CustomSoundPropertyType_t SP_GENIVI_MID = 2;
182 static const am_CustomSoundPropertyType_t SP_GENIVI_BASS = 3;
185 * Describes the different system properties which are project specific.
187 typedef uint16_t am_CustomSystemPropertyType_t;
188 static const am_CustomSystemPropertyType_t SYP_UNKNOWN = 0;
191 * describes the active sink of a crossfader.
208 * the crossfader is in the transition state
215 * with the help of this enum, sinks and sources can report their availability
218 enum am_Availability_e
225 * The source / sink is available
229 * the source / sink is not available
236 * represents the connection state
238 enum am_ConnectionState_e
242 * This means the connection is just building up
246 * the connection is ready to be used
250 * the connection is in the course to be knocked down
252 CS_DISCONNECTING = 3,
254 * only relevant for connectionStatechanged. Is send after the connection was
259 * this means the connection is still build up but unused at the moment
265 enum am_DomainState_e
272 * the domain is controlled by the daemon
276 * the domain is independent starting up
278 DS_INDEPENDENT_STARTUP = 1,
280 * the domain is independent running down
282 DS_INDEPENDENT_RUNDOWN = 2,
287 * This enum characterizes the data of the EarlyData_t
289 enum am_EarlyDataType_e
298 ED_SOURCE_VOLUME = 1,
306 ED_SOURCE_PROPERTY = 3,
310 ED_SINK_PROPERTY = 4,
312 * The interrupt state
314 ED_INTERRUPT_STATE = 5,
319 * the errors of the audiomanager. All possible errors are in here. This enum is
320 * used widely as return parameter.
325 * no error - positive reply
341 * a database error occurred
343 E_DATABASE_ERROR = 4,
345 * the desired object already exists
347 E_ALREADY_EXISTS = 5,
353 * the desired action is not possible
357 * the desired object is non existent
361 * the asynchronous action was aborted
365 * This error is returned in case a connect is issued with a connectionFormat that
366 * cannot be selected for the connection. This could be either due to the
367 * capabilities of a source or a sink or gateway compatibilities for example
380 * the source / sink is muted
384 * the source / sink is unmuted
391 * The source state reflects the state of the source
393 enum am_SourceState_e
397 * The source can be activly heared
401 * The source cannot be heared
405 * The source is paused. Meaning it cannot be heared but should be prepared to
413 * This enumeration is used to define the type of the action that is correlated to
421 H_SETSOURCESTATE = 3,
423 H_SETSOURCEVOLUME = 5,
424 H_SETSINKSOUNDPROPERTY = 6,
425 H_SETSOURCESOUNDPROPERTY = 7,
426 H_SETSINKSOUNDPROPERTIES = 8,
427 H_SETSOURCESOUNDPROPERTIES = 9,
430 H_SETSINKNOTIFICATION = 12,
431 H_SETSOURCENOTIFICATION = 13,
435 enum am_InterruptState_e
442 * the interrupt state is off - no interrupt
446 * the interrupt state is interrupted - the interrupt is active
453 * This datatype determines if a sourceID or a sinkID is used in the union
460 * the following type is a sink
464 * the following type is a source
470 enum am_NotificationStatus_e
474 * No notification, the function is turned off
478 * Periodic notifications are sent out. The period in ms is given by
479 * am_NotificationParameter
483 * The notification is sent out when the minimum given by am_NotificationParameter
488 * The notification is sent out when the maximum given by am_NotificationParameter
493 * The notification is sent out when a change happened. The Resolution of the
494 * change is defined by am_NotificationParameter.
501 * this describes the availability of a sink or a source together with the latest
504 struct am_Availability_s
509 * the current availability state
511 am_Availability_e availability;
513 * the reason for the last change. This can be used to trigger events that deal
514 * with state changes.
516 am_CustomAvailabilityReason_t availabilityReason;
521 * describes class properties
523 struct am_ClassProperty_s
528 * the property as enum
530 am_CustomClassProperty_t classProperty;
532 * the value of the property
539 * This struct describes the attribiutes of a crossfader.
541 struct am_Crossfader_s
546 * This is the ID of the crossfader, it is unique in the system. There are 2 ways,
547 * ID can be created: either it is assigned during the registration process (in a
548 * dynamic context, uniqueness will be ensured by the AudioManager daemon), or it
549 * is a fixed (the project has to ensure the uniqueness of the ID).
551 am_crossfaderID_t crossfaderID;
553 * The name of the crossfader. Must be unique in the whole system.
557 * The sinkID of the SinkA. Sinks shall be registered before registering the
560 am_sinkID_t sinkID_A;
562 * The sinkID of the SinkB. Sinks shall be registered before registering the
565 am_sinkID_t sinkID_B;
567 * The sourceID of the crossfader source. The source shall be registered before
570 am_sourceID_t sourceID;
572 * This enum can have 3 states:
574 * HS_SINKA sinkA is the current hot one, sinkB is not audible
575 * HS_SINKB sinkB is the current hot one, sinkB is not audible
576 * HS_INTERMEDIATE the fader is stuck in between a cross-fading action. This
577 * could be due to an abort or an error. Before using the crossfader, it must be
578 * set to either HS_SINKA or HS_SINKB.
580 am_HotSink_e hotSink;
585 * This struct describes the attributes of a gateway.
592 * This is the ID of the gateway, it is unique in the system. There are 2 ways, ID
593 * can be created: either it is assigned during the registration process (in a
594 * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
595 * is a fixed (the project has to ensure the uniqueness of the ID).
597 am_gatewayID_t gatewayID;
599 * The name of the gateway. Must be unique in the whole system.
603 * The sinkID of the gateway sink-end. The sink is a full blown sink with
604 * connectionFormats, sinkClassIDs etc... It makes sense to register the sinks of
605 * a gateway as non-visible. Care needs to be taken that the connectionsFormats
606 * match with the ones in the conversionMatrix. If the sink is located in the
607 * controllingDomain, the ID needs to be retrieved by registering the sink before
608 * registering the gateway. In case the sink is in a different domain, the ID
609 * needs to be retrieved via peeking.
613 * The sourceID of the gateway sink-end. The sink is a full blown source with
614 * connectionFormats, sinkClassIDs etc... It makes sense to register the sources
615 * of a gateway as non-visible. Care needs to be taken that the connectionsFormats
616 * match with the ones in the conversionMatrix. If the source is located in the
617 * controllingDomain, the ID needs to be retrieved by registering the source
618 * before registering the gateway. In case the source is in a different domain,
619 * the ID needs to be retrieved via peeking.
621 am_sourceID_t sourceID;
623 * The ID of the sink. If the domain is the same like the controlling domain, the
624 * ID is known due to registration. If the domain is different, the ID needs to be
625 * retrieved via peeking.
627 am_domainID_t domainSinkID;
629 * The ID of the source. If the domain is the same like the controlling domain,
630 * the ID is known due to registration. If the domain is different, the ID needs
631 * to be retrieved via peeking.
633 am_domainID_t domainSourceID;
635 * This is the ID of the domain that registers the gateway.
637 am_domainID_t controlDomainID;
639 * This is the list of available formats on the source side of the gateway. It is
640 * not defined during the gateway registration but copied from the source
643 std::vector<am_CustomConnectionFormat_t> listSourceFormats;
645 * This is the list of available formats on the sink side of the gateway. It is
646 * not defined during the gateway registration but copied from the sink
649 std::vector<am_CustomConnectionFormat_t> listSinkFormats;
651 * This is matrix holding information about the conversion capability of the
652 * gateway, it's length is defined by the length(listSinkFormats) x
653 * length(listSourceFormats).
654 * If a SinkFormat can be converted into a SourceFormat, the vector will hold a 1,
655 * if no conversion is possible, a 0.
656 * The data is stored row orientated, where the rows are related to the
657 * sinksFormats and the columns to the sourceFormats. The first value will hold
658 * the conversion information from the first sourceFormat to the first sinkFormat
659 * for example and the seventh value the information about the 3rd sinkFormat to
660 * the 1st sourceFormat in case we would have 3 sourceFormats.
663 * 110 011 000 111 001
668 * *********************
675 std::vector<bool> convertionMatrix;
680 * This represents one "hopp" in a route
682 struct am_RoutingElement_s
689 am_sourceID_t sourceID;
695 * the domainID the routeElement is in
697 am_domainID_t domainID;
699 * the connectionformat that is used for the route
701 am_CustomConnectionFormat_t connectionFormat;
706 * a list of routing elements that lead from source to sink
713 * the sourceID where the route starts
715 am_sourceID_t sourceID;
717 * the sinkID where the route ends
721 * the actual route as list of routing elements
723 std::vector<am_RoutingElement_s> route;
728 * struct describing the sound property
730 struct am_SoundProperty_s
735 * the type of the property - a project specific enum
737 am_CustomSoundPropertyType_t type;
739 * the actual value of the property
746 * struct describing system properties
748 struct am_SystemProperty_s
753 * the type that is set
755 am_CustomSystemPropertyType_t type;
764 * struct describing sinkclasses
766 struct am_SinkClass_s
771 * the ID of the sinkClass
773 am_sinkClass_t sinkClassID;
775 * the name of the sinkClass - must be unique in the system
779 * the list of the class properties. These are pairs of a project specific enum
780 * describing the type of the value and an integer holding the real value.
782 std::vector<am_ClassProperty_s> listClassProperties;
787 * struct describing source classes
789 struct am_SourceClass_s
796 am_sourceClass_t sourceClassID;
798 * the name of the sourceClass - must be unique in the system
802 * the list of the class properties. These are pairs of a project specific enum
803 * describing the type of the value and an integer holding the real value.
805 std::vector<am_ClassProperty_s> listClassProperties;
810 * this type holds all information of sources relevant to the HMI
812 struct am_SourceType_s
817 * This is the ID of the source, it is unique in the system. There are 2 ways, ID
818 * can be created: either it is assigned during the registration process (in a
819 * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
820 * is a fixed (the project has to ensure the uniqueness of the ID).
822 am_sourceID_t sourceID;
824 * The name of the source. Must be unique in the whole system.
828 * the availability of the source
830 am_Availability_s availability;
832 * the sourceClassID, indicates the class the source is in. This information can
833 * be used by the Controller to implement different behaviour for different
836 am_sourceClass_t sourceClassID;
841 * this type holds all information of sinks relevant to the HMI
848 * This is the ID of the sink, it is unique in the system. There are 2 ways, ID
849 * can be created: either it is assigned during the registration process (in a
850 * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
851 * is a fixed (the project has to ensure the uniqueness of the ID).
855 * The name of the sink. Must be unique in the whole system.
859 * This attribute reflects the availability of the sink. There are several reasons
860 * why a sink could be not available for the moment: for example the shutdown of a
861 * sink because of overtemperature or over- & undervoltage. The availability
862 * consists of two pieces of information:
864 * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or
866 * AvailabilityReason: this informs about the last reason for a change in
867 * availability. The reasons itself are product specific.
869 am_Availability_s availability;
871 * This is the representation of the Volume for the commandInterface. It is used
872 * by the HMI to set the volume of a sink, the AudioManagerController has to
873 * transform this into real source and sink volumes.
875 am_mainVolume_t volume;
876 am_MuteState_e muteState;
878 * The sinkClassID references to a sinkClass. With the help of classification,
879 * rules can be setup to define the system behaviour.
881 am_sinkClass_t sinkClassID;
886 * a handle is used for asynchronous operations and is uniquely assigned for each
896 am_Handle_e handleType:6;
898 * the handle as value
905 * struct describung mainsound property
907 struct am_MainSoundProperty_s
912 * the type of the property
914 am_CustomMainSoundPropertyType_t type;
923 * this type holds all information of connections relevant to the HMI
925 struct am_MainConnectionType_s
930 * the ID of the mainconnection
932 am_mainConnectionID_t mainConnectionID;
934 * the sourceID where the connection starts
936 am_sourceID_t sourceID;
938 * the sinkID where the connection ends
942 * the delay of the mainconnection
946 * the current connection state
948 am_ConnectionState_e connectionState;
953 * struct that holds attribiutes of a mainconnection
955 struct am_MainConnection_s
962 am_mainConnectionID_t mainConnectionID;
964 * the current connection state
966 am_ConnectionState_e connectionState;
974 am_sourceID_t sourceID;
976 * the delay of the connection
980 * the list of sub connection IDs the mainconnection consists of
982 std::vector<am_connectionID_t> listConnectionID;
987 * This struct holds the payload of a notification.
989 struct am_NotificationPayload_s
994 * This defines the notification type
996 am_CustomNotificationType_t type;
998 * This is finally the value of the notification. It's meaning depends on the
1006 * This struct holds information about the configuration for notifications
1008 struct am_NotificationConfiguration_s
1013 * The notification type of the notification
1015 am_CustomNotificationType_t type;
1017 * The Notification status. This can be periodic, min/max value based or even off
1020 am_NotificationStatus_e status;
1022 * This gives additional information to the notification status.
1023 * Relation between notification status and the value:
1024 * NS_PERIODIC - the period in ms
1025 * NS_MINIMUM - the minimum value that triggers the notification
1026 * NS_MAXIMUM - the maximum value that triggers the notifcation
1027 * NS_CHANGE - the resolution of the change value
1034 * This struct describes the attribiutes of a sink
1041 * This is the ID of the sink, it is unique in the system. There are 2 ways, ID
1042 * can be created: either it is assigned during the registration process (in a
1043 * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
1044 * is a fixed (the project has to ensure the uniqueness of the ID).
1048 * The name of the sink. Must be unique in the whole system.
1052 * The domainID is the domain the sink belongs to. A sink can only be in one
1055 am_domainID_t domainID;
1057 * The sinkClassID references to a sinkClass. With the help of classification,
1058 * rules can be setup to define the system behaviour.
1060 am_sinkClass_t sinkClassID;
1062 * This is the volume of the sink. It is set by the AudioManagerController.
1066 * This Boolean flag indicates whether a sink is visible to the commandInterface
1067 * or not. If the User must have the possibility to choose the source in the HMI,
1068 * it must be visible. But there are also good reasons for invisible sinks, for
1069 * example if the sink is part of a crossfader or gateway. HMI relevant changes in
1070 * visible sinks will be automatically reported by the daemon to the
1075 * This attribute reflects the availability of the sink. There are several reasons
1076 * why a sink could be not available for the moment: for example the shutdown of a
1077 * sink because of overtemperature or over- & undervoltage. The availability
1078 * consists of two pieces of information:
1080 * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or
1082 * AvailabilityReason: this informs about the last reason for a change in
1083 * availability. The reasons itself are product specific.
1085 am_Availability_s available;
1087 * This attribute reflects the muteState of the sink. The information is not the
1088 * "real" state of the sink, but the HMI representation for he commandInterface
1089 * controlled by the AudioManagerController.
1091 am_MuteState_e muteState;
1093 * This is the representation of the Volume for the commandInterface. It is used
1094 * by the HMI to set the volume of a sink, the AudioManagerController has to
1095 * transform this into real source and sink volumes.
1097 am_mainVolume_t mainVolume;
1099 * This is the list of soundProperties, that the sink is capable of. The
1100 * soundProperties itself are project specific. For sinks, a possible
1101 * soundProperty could be for example settings.
1103 std::vector<am_SoundProperty_s> listSoundProperties;
1105 * This list holds information about the formats that the Source is capable of
1106 * supporting when delivering audio.
1108 std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
1110 * This is the list of the available mainSoundProperties. The principle is the
1111 * same than with soundProperties, but they are only visible to the
1114 std::vector<am_MainSoundProperty_s> listMainSoundProperties;
1116 * This is the list of the MainNotificationConfigurations. These notifications
1117 * work on the level of command interface.
1119 std::vector<am_NotificationConfiguration_s> listMainNotificationConfigurations;
1121 * This is the list of the NotificationConfigurations. These notifications work on
1122 * the level of RoutingPlugins.
1124 std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
1129 * This struct describes the attribiutes of a source
1136 * This is the ID of the source, it is unique in the system. There are 2 ways, ID
1137 * can be created: either it is assigned during the registration process (in a
1138 * dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it
1139 * is a fixed (the project has to ensure the uniqueness of the ID).
1141 am_sourceID_t sourceID;
1143 * The domainID is the domain the source belongs to. A source can only be in one
1146 am_domainID_t domainID;
1148 * The name of the source. Must be unique in the whole system.
1152 * the sourceClassID, indicates the class the source is in. This information can
1153 * be used by the Controller to implement different behaviour for different
1156 am_sourceClass_t sourceClassID;
1158 * The source state is an indication towards the source if it is actively heard or
1159 * not. The source can use this information to implement features like automatic
1160 * spin down of CD's in case the CD is not the active source or AF following of a
1161 * tuner that is not actively heard. The source state is set by the
1162 * AudioManagerController.There are 3 possible states:
1164 * SS_ON: the source is active
1165 * SS_OFF: the source is off
1166 * SS_PAUSED: the source is paused and not active.
1168 am_SourceState_e sourceState;
1170 * This is the volume of the source. It is set by the AudioManagerController. It
1171 * is used to adopt different audiolevels in a system and mixing of sources (e.g.
1172 * navigation hints & music).
1176 * This Boolean flag indicates whether a source is visible to the commandInterface
1177 * or not. If the User must have the possibility to choose the source in the HMI,
1178 * it must be visible. But there are also good reasons for invisible sources, for
1179 * example if the source is part of a crossfader or gateway. HMI relevant changes
1180 * in visible sources will be automatically reported by the daemon to the
1185 * This attribute reflects the availability of the source. There are several
1186 * reasons why a source could be not available for the moment. For example a CD
1187 * player which has no CD entered in the slot can be unavailable, or a USB player
1188 * with no or unreadable stick attached. Other scenarios involve the shutdown of a
1189 * source because of overtemperature or over- & undervoltage. The availability
1190 * consists of two informations:
1192 * Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or
1194 * AvailabilityReason: this informs about the last reason for a change in
1195 * availability. The reasons itself are product specific.
1197 am_Availability_s available;
1199 * Some special sources can have special behaviors, the are so called "Low Level
1200 * Interrupts". Here the current status is documented. The information can be used
1201 * by the AudioManagerController to react to the changes by for example lowering
1202 * the volume of the mainSources. The two states are
1204 * IS_OFF: the interrupt is not active at the moment
1205 * IS_INTERRUPTED: the interrupt is playing at the moment.
1207 am_InterruptState_e interruptState;
1209 * This is the list of soundProperties, that the source is capable of. The
1210 * soundProperties itself are project specific. For sources, a possible
1211 * soundProperty could be navigation volume offset, for example.
1213 std::vector<am_SoundProperty_s> listSoundProperties;
1215 * This list holds information about the formats that the Source is capable of
1216 * supporting when delivering audio.
1218 std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
1220 * This is the list of the available mainSoundProperties. The principle is the
1221 * same than with soundProperties, but they are only visible to the
1224 std::vector<am_MainSoundProperty_s> listMainSoundProperties;
1226 * The list of MainNotificationConfigurations. These notifications work on the
1227 * level of CommandInterface.
1229 std::vector<am_NotificationConfiguration_s> listMainNotificationConfigurations;
1231 * The list of MainNotificationConfigurations. These notifications work on the
1232 * level of RoutingInterface.
1234 std::vector<am_NotificationConfiguration_s> listNotificationConfigurations;
1239 * This struct describes the attribiutes of a domain
1248 am_domainID_t domainID;
1250 * the name of the domain
1254 * the busname. This is equal to a plugin name and is used to dispatch messages to
1255 * the elements of a plugin
1257 std::string busname;
1259 * the name of the node
1261 std::string nodename;
1263 * indicated if the domain is independent at startup or not
1267 * indicates if the domain registration is complete or not
1271 * the current domain state
1273 am_DomainState_e state;
1280 struct am_Connection_s
1287 am_connectionID_t connectionID;
1289 * the source the audio flows from
1291 am_sourceID_t sourceID;
1293 * the sink the audio flows to
1297 * the delay of the conneciton
1299 am_timeSync_t delay;
1301 * the used connectionformat
1303 am_CustomConnectionFormat_t connectionFormat;
1308 * data type depends of am_EarlyDataType_e:
1309 * volume_t in case of ED_SOURCE_VOLUME, ED_SINK_VOLUME
1310 * soundProperty_t in case of ED_SOURCE_PROPERTY, ED_SINK_PROPERTY
1312 union am_EarlyData_u
1317 am_SoundProperty_s soundProperty;
1318 am_InterruptState_e interruptState;
1323 * data type depends of am_EarlyDataType_e:
1324 * sourceID in case of ED_SOURCE_VOLUME, ED_SOURCE_PROPERTY
1325 * sinkID in case of ED_SINK_VOLUME, ED_SINK_PROPERTY
1332 am_sourceID_t source;
1336 struct am_EarlyData_s
1340 am_EarlyDataType_e type;
1341 am_DataType_u sinksource;
1342 am_EarlyData_u data;
1347 * This types describe a mixed description for source and sinks volumes.
1354 * describes the type of the volume: source or sink.
1356 am_VolumeType_e volumeType;
1358 * either sourceID or sinkID
1360 am_DataType_u volumeID;
1366 * the ramp that shall be driven
1368 am_CustomRampType_t ramp;
1370 * the time for the ramp
1376 #endif // !defined(EA_4FF89D4E_BF3C_465a_85C9_1DC47E4FA742__INCLUDED_)