* Bug #100 - removed projecttypes.h which causes compiling conflicts
[profile/ivi/genivi/genivi-audio-manager.git] / AudioManagerDaemon / fidls / AudioManagerTypes.fidl
1 package org.genivi\r
2 \r
3 <**\r
4         @author : Christian Linke
5 **>\r
6 typeCollection am {\r
7         version {
8                 major 1
9                 minor 0
10         }
11         array am_MainConnection_L of am_MainConnectionType_s
12 \r
13         array am_SinkClass_L of am_SinkClass_s
14 \r
15         array am_SinkType_L of am_SinkType_s
16 \r
17         array am_SourceClass_L of am_SourceClass_s
18 \r
19         array am_SourceType_L of am_SourceType_s
20 \r
21         array am_SystemProperty_L of am_SystemProperty_s
22 \r
23         array am_ClassProperty_L of am_ClassProperty_s
24 \r
25         array am_ConnectionID_L of am_connectionID_t
26 \r
27         array am_EarlyData_L of am_EarlyData_s
28 \r
29         array am_MainSoundProperty_L of am_MainSoundProperty_s
30 \r
31         array am_NotificationConfiguration_L of am_NotificationConfiguration_s
32 \r
33         array am_RoutingElement_L of am_RoutingElement_s
34 \r
35         array am_SoundProperty_L of am_SoundProperty_s
36 \r
37         array am_Volumes_L of am_Volumes_s
38 \r
39         array am_ConnectionFormat_L of am_CustomConnectionFormat_t
40 \r
41         array am_Convertion_L of am_bool_t
42 \r
43         <**
44                 @description : a source ID
45         **>
46         typedef am_sourceID_t is UInt16
47         typedef am_bool_t is Boolean
48 \r
49         <**
50                 @description : a domain ID
51         **>
52         typedef am_domainID_t is UInt16
53 \r
54         <**
55                 @description : a gateway ID
56         **>
57         typedef am_gatewayID_t is UInt16
58 \r
59         <**
60                 @description : a connection ID 
61         **>
62         typedef am_connectionID_t is UInt16
63 \r
64         <**
65                 @description : a crossfader ID
66         **>
67         typedef am_crossfaderID_t is UInt16
68 \r
69         <**
70                 @description : a mainConnection ID
71         **>
72         typedef am_mainConnectionID_t is UInt16
73 \r
74         <**
75                 @description : 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.
76 The range of this type is customer specific.\r
77         **>
78         typedef am_mainVolume_t is Int16
79
80         <**
81                 @description : The unit is 0.1 db steps,The smallest value -3000 (=AM_MUTE). The minimum and maximum can be limited by actual project.
82         **>
83         typedef am_volume_t is Int16
84
85         <**
86                 @description : time in ms!
87         **>
88         typedef am_time_t is Int16
89
90         <**
91                 @description : offset time that is introduced in milli seconds.
92         **>
93         typedef am_timeSync_t is Int16
94         typedef am_sourceClass_t is UInt16
95
96         <**
97                 @description : speed
98         **>
99         typedef am_speed_t is UInt16
100         typedef am_sinkClass_t is UInt16
101
102         <**
103                 @description : a sink ID 
104         **>
105         typedef am_sinkID_t is UInt16
106
107         <**
108                 @description : This project specific value classifies the format in which data is exchanged within a connection. 
109         **>
110         typedef am_CustomConnectionFormat_t is UInt16
111
112         <**
113                 @description : This  project specific value gives the information about reason for reason for Source/Sink change
114         **>
115         typedef am_CustomAvailabilityReason_t is UInt16
116
117         <**
118                 @description : product specific identifier of property
119         **>
120         typedef am_CustomClassProperty_t is UInt16
121
122         <**
123                 @description : For products, different ramp types can be defined here.
124 It is in the responsibility of the product to make sure that the routing plugins are aware of the ramp types used.\r
125         **>
126         typedef am_CustomRampType_t is UInt16
127
128         <**
129                 @description : Project specific sound properties.
130         **>
131         typedef am_CustomSoundPropertyType_t is UInt16
132
133         <**
134                 @description : Here are all SoundProperties that can be set via the CommandInterface. Product specific
135         **>
136         typedef am_CustomMainSoundPropertyType_t is UInt16
137
138         <**
139                 @description : describes the different system properties. Project specific
140         **>
141         typedef am_CustomSystemPropertyType_t is UInt16
142
143         <**
144                 @description : gives the type of the Notification.
145         **>
146         typedef am_CustomNotificationType_t is UInt16
147
148         <**
149                 @description : with the help of this enum, sinks and sources can report their availability state
150         **>
151         enumeration am_Availability_e {
152
153                 <**
154                         @description : default
155                 **>
156                 A_UNKNOWN = "0"
157
158                 <**
159                         @description : The source / sink is available
160                 **>
161                 A_AVAILABLE = "1"
162
163                 <**
164                         @description : the source / sink is not available
165                 **>
166                 A_UNAVAILABLE = "2"
167                 A_MAX
168         }
169
170         <**
171                 @description : describes the active sink of a crossfader.
172         **>
173         enumeration am_HotSink_e {
174
175                 <**
176                         @description : default
177                 **>
178                 HS_UNKNOWN = "0"
179
180                 <**
181                         @description : sinkA is active
182                 **>
183                 HS_SINKA = "1"
184
185                 <**
186                         @description : sinkB is active
187                 **>
188                 HS_SINKB = "2"
189
190                 <**
191                         @description : the crossfader is in the transition state
192                 **>
193                 HS_INTERMEDIATE = "3"
194                 HS_MAX
195         }
196
197         <**
198                 @description : represents the connection state
199         **>
200         enumeration am_ConnectionState_e {
201                 CS_UNKNOWN = "0"
202
203                 <**
204                         @description : This means the connection is just building up
205                 **>
206                 CS_CONNECTING = "1"
207
208                 <**
209                         @description : the connection is ready to be used
210                 **>
211                 CS_CONNECTED = "2"
212
213                 <**
214                         @description : the connection is in the course to be knocked down
215                 **>
216                 CS_DISCONNECTING = "3"
217
218                 <**
219                         @description : only relevant for connectionStatechanged. Is send after the connection was removed
220                 **>
221                 CS_DISCONNECTED = "4"
222
223                 <**
224                         @description : this means the connection is still build up but unused at the moment
225                 **>
226                 CS_SUSPENDED = "5"
227                 CS_MAX
228         }
229
230         enumeration am_DomainState_e {
231
232                 <**
233                         @description : default
234                 **>
235                 DS_UNKNOWN = "0"
236
237                 <**
238                         @description : the domain is controlled by the daemon
239                 **>
240                 DS_CONTROLLED = "1"
241
242                 <**
243                         @description : the domain is independent starting up
244                 **>
245                 DS_INDEPENDENT_STARTUP = "1"
246
247                 <**
248                         @description : the domain is independent running down
249                 **>
250                 DS_INDEPENDENT_RUNDOWN = "2"
251                 DS_MAX
252         }
253
254         <**
255                 @description : This enum characterizes the data of the EarlyData_t
256         **>
257         enumeration am_EarlyDataType_e {
258
259                 <**
260                         @description : default
261                 **>
262                 ES_UNKNOWN = "0"
263
264                 <**
265                         @description : the source volume
266                 **>
267                 ED_SOURCE_VOLUME = "1"
268
269                 <**
270                         @description : the sink volume
271                 **>
272                 ED_SINK_VOLUME = "2"
273
274                 <**
275                         @description : a source property
276                 **>
277                 ED_SOURCE_PROPERTY = "3"
278
279                 <**
280                         @description : a sink property
281                 **>
282                 ED_SINK_PROPERTY = "4"
283                 ED_MAX
284         }
285
286         <**
287                 @description : the errors of the audiomanager. All possible errors are in here. This enum is used widely as return parameter.
288         **>
289         enumeration am_Error_e {
290
291                 <**
292                         @description : no error - positive reply
293                 **>
294                 E_OK = "0"
295
296                 <**
297                         @description : default
298                 **>
299                 E_UNKNOWN = "1"
300
301                 <**
302                         @description : value out of range
303                 **>
304                 E_OUT_OF_RANGE = "2"
305
306                 <**
307                         @description : not used
308                 **>
309                 E_NOT_USED = "3"
310
311                 <**
312                         @description : a database error occurred 
313                 **>
314                 E_DATABASE_ERROR = "4"
315
316                 <**
317                         @description : the desired object already exists
318                 **>
319                 E_ALREADY_EXISTS = "5"
320
321                 <**
322                         @description : there is no change
323                 **>
324                 E_NO_CHANGE = "6"
325
326                 <**
327                         @description : the desired action is not possible
328                 **>
329                 E_NOT_POSSIBLE = "7"
330
331                 <**
332                         @description : the desired object is non existent
333                 **>
334                 E_NON_EXISTENT = "8"
335
336                 <**
337                         @description : the asynchronous action was aborted
338                 **>
339                 E_ABORTED = "9"
340
341                 <**
342                         @description : This error is returned in case a connect is issued with a connectionFormat that cannot be selected for the connection. This could be either due to the capabilities of a source or a sink or gateway compatibilities for example
343                 **>
344                 E_WRONG_FORMAT = "10"
345                 E_MAX
346         }
347
348         enumeration am_MuteState_e {
349
350                 <**
351                         @description : default
352                 **>
353                 MS_UNKNOWN = "0"
354
355                 <**
356                         @description : the source / sink is muted
357                 **>
358                 MS_MUTED = "1"
359
360                 <**
361                         @description : the source / sink is unmuted
362                 **>
363                 MS_UNMUTED = "2"
364                 MS_MAX
365         }
366
367         enumeration am_InterruptState_e {
368
369                 <**
370                         @description : default
371                 **>
372                 IS_UNKNOWN = "0"
373
374                 <**
375                         @description : the interrupt state is off - no interrupt 
376                 **>
377                 IS_OFF = "1"
378
379                 <**
380                         @description : the interrupt state is interrupted - the interrupt is active
381                 **>
382                 IS_INTERRUPTED = "2"
383                 IS_MAX
384         }
385
386         <**
387                 @description : This datatype determines if a sourceID or a sinkID is used in the union following
388         **>
389         enumeration am_VolumeType_e {
390                 VT_UNKNOWN = "0"
391
392                 <**
393                         @description : the following type is a sink
394                 **>
395                 VT_SINK = "1"
396
397                 <**
398                         @description : the following type is a source
399                 **>
400                 VT_SOURCE = "2"
401                 VT_MAX
402         }
403
404         enumeration am_NotificationStatus_e {
405                 NS_UNKNOWN = "0"
406
407                 <**
408                         @description : No notification, the function is turned off
409                 **>
410                 NS_OFF = "1"
411
412                 <**
413                         @description : Periodic notifications are sent out. The period in ms is given by am_NotificationParameter
414                 **>
415                 NS_PERIODIC = "2"
416
417                 <**
418                         @description : The notification is sent out when the minimum given by am_NotificationParameter is reached.
419                 **>
420                 NS_MINIMUM = "3"
421
422                 <**
423                         @description : The notification is sent out when the maximum given by am_NotificationParameter is reached.
424                 **>
425                 NS_MAXIMUM = "4"
426
427                 <**
428                         @description : The notification is sent out when a change happened. The Resolution of the change is defined by am_NotificationParameter.
429                 **>
430                 NS_CHANGE_ = "5"
431                 NS_MAX
432         }
433
434         <**
435                 @description : This enumeration is used to define the type of the action that is correlated to a handle.
436         **>
437         enumeration am_Handle_e {
438                 H_UNKNOWN = "0"
439                 H_CONNECT = "1"
440                 H_DISCONNECT = "2"
441                 H_SETSOURCESTATE = "3"
442                 H_SETSINKVOLUME = "4"
443                 H_SETSOURCEVOLUME = "5"
444                 H_SETSINKSOUNDPROPERTY = "6"
445                 H_SETSOURCESOUNDPROPERTY = "7"
446                 H_SETSINKSOUNDPROPERTIES = "8"
447                 H_SETSOURCESOUNDPROPERTIES = "9"
448                 H_CROSSFADE = "10"
449                 H_SETVOLUMES = "11"
450                 H_SETSINKNOTIFICATION = "12"
451                 H_SETSOURCENOTIFICATION = "13"
452                 H_MAX
453         }
454
455         <**
456                 @description : The source state reflects the state of the source
457         **>
458         enumeration am_SourceState_e {
459                 SS_UNKNNOWN = "0"
460
461                 <**
462                         @description : The source can be activly heared
463                 **>
464                 SS_ON = "1"
465
466                 <**
467                         @description : The source cannot be heared
468                 **>
469                 SS_OFF = "2"
470
471                 <**
472                         @description : The source is paused. Meaning it cannot be heared but should be prepared to play again soon.
473                 **>
474                 SS_PAUSED = "3"
475                 SS_MAX
476         }
477
478         <**
479                 @description : This enum describes the ready state of the routing part
480         **>
481         enumeration am_RoutingReady_e {
482                 RR_UNKNOWN = "0"
483                 RR_READY = "1"
484                 RR_RUNDOWN = "2"
485         }
486
487         <**
488                 @description : a list of routing elements that lead from source to sink
489         **>
490         struct am_Route_s {
491
492                 <**
493                         @description : the sourceID where the route starts
494                 **>
495                 am_sourceID_t sourceID
496
497                 <**
498                         @description : the sinkID where the route ends
499                 **>
500                 am_sinkID_t sinkID
501
502                 <**
503                         @description : the actual route as list of routing elements
504                 **>
505                 am_RoutingElement_L route
506         }
507
508         <**
509                 @description : this describes the availability of a sink or a source together with the latest change
510         **>
511         struct am_Availability_s {
512
513                 <**
514                         @description : the current availability state
515                 **>
516                 am_Availability_e availability
517
518                 <**
519                         @description : the reason for the last change. This can be used to trigger events that deal with state changes.
520                 **>
521                 am_CustomAvailabilityReason_t availabilityReason
522         }
523
524         <**
525                 @description : describes class properties
526         **>
527         struct am_ClassProperty_s {
528
529                 <**
530                         @description : the property as enum
531                 **>
532                 am_CustomClassProperty_t classProperty
533
534                 <**
535                         @description : the value of the property
536                 **>
537                 Int16 value
538         }
539
540         <**
541                 @description : This struct describes the attribiutes of a crossfader.
542         **>
543         struct am_Crossfader_s {
544
545                 <**
546                         @description : This is the ID of the crossfader, it is unique in the system. There are 2 ways, ID can be created: either it is assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManager daemon), or it is a fixed (the project has to ensure the uniqueness of the ID).
547                 **>
548                 am_crossfaderID_t crossfaderID
549
550                 <**
551                         @description : The name of the crossfader. Must be unique in the whole system. 
552                 **>
553                 String name
554
555                 <**
556                         @description : The sinkID of the SinkA. Sinks shall be registered before registering the crossfader.
557                 **>
558                 am_sinkID_t sinkID_A
559
560                 <**
561                         @description : The sinkID of the SinkB. Sinks shall be registered before registering the crossfader.
562                 **>
563                 am_sinkID_t sinkID_B
564
565                 <**
566                         @description : The sourceID of the crossfader source. The source shall be registered before the crossfader.
567                 **>
568                 am_sourceID_t sourceID
569
570                 <**
571                         @description : This enum can have 3 states:
572 \r
573     HS_SINKA sinkA is the current hot one, sinkB is not audible\r
574     HS_SINKB sinkB is the current hot one, sinkB is not audible\r
575     HS_INTERMEDIATE the fader is stuck in between a cross-fading action. This could be due to an abort or an error. Before using the crossfader, it must be set to either HS_SINKA or HS_SINKB.\r
576                 **>
577                 am_HotSink_e hotSink
578         }
579
580         <**
581                 @description : This struct describes the attributes of a gateway.
582         **>
583         struct am_Gateway_s {
584
585                 <**
586                         @description : This is the ID of the gateway, it is unique in the system. There are 2 ways, ID can be created: either it is assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is a fixed (the project has to ensure the uniqueness of the ID).
587                 **>
588                 am_gatewayID_t gatewayID
589
590                 <**
591                         @description : The name of the gateway. Must be unique in the whole system.
592                 **>
593                 String name
594
595                 <**
596                         @description : The sinkID of the gateway sink-end. The sink is a full blown sink with connectionFormats, sinkClassIDs etc... It makes sense to register the sinks of a gateway as non-visible. Care needs to be taken that the connectionsFormats match with the ones in the conversionMatrix. If the sink is located in the controllingDomain, the ID needs to be retrieved by registering the sink before registering the gateway. In case the sink is in a different domain, the ID needs to be retrieved via peeking.
597                 **>
598                 am_sinkID_t sinkID
599
600                 <**
601                         @description : The sourceID of the gateway sink-end. The sink is a full blown source with connectionFormats, sinkClassIDs etc... It makes sense to register the sources of a gateway as non-visible. Care needs to be taken that the connectionsFormats match with the ones in the conversionMatrix. If the source is located in the controllingDomain, the ID needs to be retrieved by registering the source before registering the gateway. In case the source is in a different domain, the ID needs to be retrieved via peeking.
602                 **>
603                 am_sourceID_t sourceID
604
605                 <**
606                         @description : The ID of the sink. If the domain is the same like the controlling domain, the ID is known due to registration. If the domain is different, the ID needs to be retrieved via peeking.
607                 **>
608                 am_domainID_t domainSinkID
609
610                 <**
611                         @description : The ID of the source. If the domain is the same like the controlling domain, the ID is known due to registration. If the domain is different, the ID needs to be retrieved via peeking.
612                 **>
613                 am_domainID_t domainSourceID
614
615                 <**
616                         @description : This is the ID of the domain that registers the gateway.
617                 **>
618                 am_domainID_t controlDomainID
619
620                 <**
621                         @description : This is the list of available formats on the source side of the gateway. It is not defined during the gateway registration but copied from the source registration.
622                 **>
623                 am_ConnectionFormat_L listSourceFormats
624
625                 <**
626                         @description : This is the list of available formats on the sink side of the gateway. It is not defined during the gateway registration but copied from the sink registration.
627                 **>
628                 am_ConnectionFormat_L listSinkFormats
629
630                 <**
631                         @description : This is matrix holding information about the conversion capability of the gateway, it's length is defined by the length(listSinkFormats) x length(listSourceFormats).
632 If a SinkFormat can be converted into a SourceFormat, the vector will hold a 1, if no conversion is possible, a 0.\r
633 The data is stored row orientated, where the rows are related to the sinksFormats and the columns to the sourceFormats. The first value will hold the conversion information from the first sourceFormat to the first sinkFormat for example and the seventh value the information about the 3rd sinkFormat to the 1st sourceFormat in case we would have 3 sourceFormats.\r
634                 **>
635                 am_Convertion_L convertionMatrix
636         }
637
638         <**
639                 @description : This represents one "hopp" in a route
640         **>
641         struct am_RoutingElement_s {
642
643                 <**
644                         @description : the source ID
645                 **>
646                 am_sourceID_t sourceID
647
648                 <**
649                         @description : the sinkID
650                 **>
651                 am_sinkID_t sinkID
652
653                 <**
654                         @description : the domainID the routeElement is in
655                 **>
656                 am_domainID_t domainID
657
658                 <**
659                         @description : the connectionformat that is used for the route
660                 **>
661                 am_CustomConnectionFormat_t connectionFormat
662         }
663
664         <**
665                 @description : struct describing the sound property
666         **>
667         struct am_SoundProperty_s {
668
669                 <**
670                         @description : the type of the property - a project specific enum
671                 **>
672                 am_CustomSoundPropertyType_t type
673
674                 <**
675                         @description : the actual value of the property
676                 **>
677                 Int16 value
678         }
679
680         <**
681                 @description : struct describing system properties
682         **>
683         struct am_SystemProperty_s {
684
685                 <**
686                         @description : the type that is set
687                 **>
688                 am_CustomSystemPropertyType_t type
689
690                 <**
691                         @description : the value
692                 **>
693                 Int16 value
694         }
695
696         <**
697                 @description : struct describing sinkclasses
698         **>
699         struct am_SinkClass_s {
700
701                 <**
702                         @description : the ID of the sinkClass
703                 **>
704                 am_sinkClass_t sinkClassID
705
706                 <**
707                         @description : the name of the sinkClass - must be unique in the system
708                 **>
709                 String name
710
711                 <**
712                         @description : the list of the class properties. These are pairs of  a project specific enum describing the type of the value and an integer holding the real value.
713                 **>
714                 am_ClassProperty_L listClassProperties
715         }
716
717         <**
718                 @description : struct describing source classes
719         **>
720         struct am_SourceClass_s {
721
722                 <**
723                         @description : the source ID
724                 **>
725                 am_sourceClass_t sourceClassID
726
727                 <**
728                         @description : the name of the sourceClass - must be unique in the system
729                 **>
730                 String name
731
732                 <**
733                         @description : the list of the class properties. These are pairs of  a project specific enum describing the type of the value and an integer holding the real value.
734                 **>
735                 am_ClassProperty_L listClassProperties
736         }
737
738         <**
739                 @description : this type holds all information of sources relevant to the HMI
740         **>
741         struct am_SourceType_s {
742
743                 <**
744                         @description : This is the ID of the source, it is unique in the system. There are 2 ways, ID can be created: either it is assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is a fixed (the project has to ensure the uniqueness of the ID).
745                 **>
746                 am_sourceID_t sourceID
747
748                 <**
749                         @description : The name of the source. Must be unique in the whole system.
750                 **>
751                 String name
752
753                 <**
754                         @description : the availability of the source
755                 **>
756                 am_Availability_s availability
757
758                 <**
759                         @description : the sourceClassID, indicates the class the source is in. This information can be used by the Controller to implement different behaviour for different classes.
760                 **>
761                 am_sourceClass_t sourceClassID
762         }
763
764         <**
765                 @description : this type holds all information of sinks relevant to the HMI
766         **>
767         struct am_SinkType_s {
768
769                 <**
770                         @description : This is the ID of the sink, it is unique in the system. There are 2 ways, ID can be created: either it is assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is a fixed (the project has to ensure the uniqueness of the ID).
771                 **>
772                 am_sinkID_t sinkID
773
774                 <**
775                         @description : The name of the sink. Must be unique in the whole system. 
776                 **>
777                 String name
778
779                 <**
780                         @description : This attribute reflects the availability of the sink. There are several reasons why a sink could be not available for the moment: for example the shutdown of a sink because of overtemperature or over- &amp; undervoltage. The availability consists of two pieces of information:
781 \r
782     Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or A_UNKNOWN\r
783     AvailabilityReason: this informs about the last reason for a change in availability. The reasons itself are product specific.\r
784                 **>
785                 am_Availability_s availability
786
787                 <**
788                         @description : This is the representation of the Volume for the commandInterface. It is used by the HMI to set the volume of a sink, the AudioManagerController has to transform this into real source and sink volumes.
789                 **>
790                 am_mainVolume_t volume
791                 am_MuteState_e muteState
792
793                 <**
794                         @description : The sinkClassID references to a sinkClass. With the help of classification, rules can be setup to define the system behaviour.
795                 **>
796                 am_sinkClass_t sinkClassID
797         }
798
799         <**
800                 @description : a handle is used for asynchronous operations and is uniquely assigned for each of this operations 
801         **>
802         struct am_Handle_s {
803
804                 <**
805                         @description : the handletype
806                 **>
807                 am_Handle_e handleType
808
809                 <**
810                         @description : the handle as value
811                 **>
812                 UInt16 handle
813         }
814
815         <**
816                 @description : struct describung mainsound property
817         **>
818         struct am_MainSoundProperty_s {
819
820                 <**
821                         @description : the type of the property 
822                 **>
823                 am_CustomMainSoundPropertyType_t type
824
825                 <**
826                         @description : the actual value
827                 **>
828                 Int16 value
829         }
830
831         <**
832                 @description : this type holds all information of connections relevant to the HMI
833         **>
834         struct am_MainConnectionType_s {
835
836                 <**
837                         @description : the ID of the mainconnection
838                 **>
839                 am_mainConnectionID_t mainConnectionID
840
841                 <**
842                         @description : the sourceID where the connection starts
843                 **>
844                 am_sourceID_t sourceID
845
846                 <**
847                         @description : the sinkID where the connection ends
848                 **>
849                 am_sinkID_t sinkID
850
851                 <**
852                         @description : the delay of the mainconnection
853                 **>
854                 am_timeSync_t delay
855
856                 <**
857                         @description : the current connection state
858                 **>
859                 am_ConnectionState_e connectionState
860         }
861
862         <**
863                 @description : struct that holds attribiutes of a mainconnection
864         **>
865         struct am_MainConnection_s {
866
867                 <**
868                         @description : the assigned ID
869                 **>
870                 am_mainConnectionID_t mainConnectionID
871
872                 <**
873                         @description : the current connection state
874                 **>
875                 am_ConnectionState_e connectionState
876
877                 <**
878                         @description : the sinkID
879                 **>
880                 am_sinkID_t sinkID
881
882                 <**
883                         @description : the sourceID
884                 **>
885                 am_sourceID_t sourceID
886
887                 <**
888                         @description : the delay of the connection
889                 **>
890                 am_timeSync_t delay
891
892                 <**
893                         @description : the list of sub connection IDs the mainconnection consists of 
894                 **>
895                 am_ConnectionID_L listConnectionID
896         }
897
898         <**
899                 @description : This struct holds the payload of a notification.
900         **>
901         struct am_NotificationPayload_s {
902
903                 <**
904                         @description : This defines the notification type
905                 **>
906                 am_CustomNotificationType_t type
907
908                 <**
909                         @description : This is finally the value of the notification. It's meaning depends on the notificationType
910                 **>
911                 Int16 value
912         }
913
914         <**
915                 @description : This struct holds information about the configuration for notifications
916         **>
917         struct am_NotificationConfiguration_s {
918
919                 <**
920                         @description : The notification type of the notification
921                 **>
922                 am_CustomNotificationType_t type
923
924                 <**
925                         @description : The Notification status. This can be periodic, min/max value based or even off for example
926                 **>
927                 am_NotificationStatus_e status
928
929                 <**
930                         @description : This gives additional information to the notification status. 
931 Relation between notification status and the value:\r
932 NS_PERIODIC - the period in ms\r
933 NS_MINIMUM - the minimum value that triggers the notification\r
934 NS_MAXIMUM - the maximum value that triggers the notifcation\r
935 NS_CHANGE - the resolution of the change value\r
936                 **>
937                 Int16 parameter
938         }
939
940         <**
941                 @description : This struct describes the attribiutes of a sink
942         **>
943         struct am_Sink_s {
944
945                 <**
946                         @description : This is the ID of the sink, it is unique in the system. There are 2 ways, ID can be created: either it is assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is a fixed (the project has to ensure the uniqueness of the ID).
947                 **>
948                 am_sinkID_t sinkID
949
950                 <**
951                         @description : The name of the sink. Must be unique in the whole system. 
952                 **>
953                 String name
954
955                 <**
956                         @description : The domainID is the domain the sink belongs to. A sink can only be in one domain.
957                 **>
958                 am_domainID_t domainID
959
960                 <**
961                         @description : The sinkClassID references to a sinkClass. With the help of classification, rules can be setup to define the system behaviour.
962                 **>
963                 am_sinkClass_t sinkClassID
964
965                 <**
966                         @description : This is the volume of the sink. It is set by the AudioManagerController. 
967                 **>
968                 am_volume_t volume
969
970                 <**
971                         @description : This Boolean flag indicates whether a sink is visible to the commandInterface or not. If the User must have the possibility to choose the source in the HMI, it must be visible. But there are also good reasons for invisible sinks, for example if the sink is part of a crossfader or gateway. HMI relevant changes in visible sinks will be automatically reported by the daemon to the commandInterface.
972                 **>
973                 Boolean visible
974
975                 <**
976                         @description : This attribute reflects the availability of the sink. There are several reasons why a sink could be not available for the moment: for example the shutdown of a sink because of overtemperature or over- &amp; undervoltage. The availability consists of two pieces of information:
977 \r
978     Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or A_UNKNOWN\r
979     AvailabilityReason: this informs about the last reason for a change in availability. The reasons itself are product specific.\r
980                 **>
981                 am_Availability_s available
982
983                 <**
984                         @description : This attribute reflects the muteState of the sink. The information is not the "real" state of the sink, but the HMI representation for he commandInterface controlled by the AudioManagerController.
985                 **>
986                 am_MuteState_e muteState
987
988                 <**
989                         @description : This is the representation of the Volume for the commandInterface. It is used by the HMI to set the volume of a sink, the AudioManagerController has to transform this into real source and sink volumes.
990                 **>
991                 am_mainVolume_t mainVolume
992
993                 <**
994                         @description : This is the list of soundProperties, that the sink is capable of. The soundProperties itself are project specific. For sinks, a possible soundProperty could be for example settings.
995                 **>
996                 am_SoundProperty_L listSoundProperties
997
998                 <**
999                         @description : This list holds information about the formats that the Source is capable of supporting when delivering audio.
1000                 **>
1001                 am_ConnectionFormat_L listConnectionFormats
1002
1003                 <**
1004                         @description : This is the list of the available mainSoundProperties. The principle is the same than with soundProperties, but they are only visible to the CommandInterface.
1005                 **>
1006                 am_MainSoundProperty_L listMainSoundProperties
1007
1008                 <**
1009                         @description : This is the list of the MainNotificationConfigurations. These notifications work on the level of command interface.
1010                 **>
1011                 am_NotificationConfiguration_L listMainNotificationConfigurations
1012
1013                 <**
1014                         @description : This is the list of the NotificationConfigurations. These notifications work on the level of RoutingPlugins.
1015                 **>
1016                 am_NotificationConfiguration_L listNotificationConfigurations
1017         }
1018
1019         <**
1020                 @description : This struct describes the attribiutes of a source
1021         **>
1022         struct am_Source_s {
1023
1024                 <**
1025                         @description : This is the ID of the source, it is unique in the system. There are 2 ways, ID can be created: either it is assigned during the registration process (in a dynamic context, uniqueness will be ensured by the AudioManagerDaemon), or it is a fixed (the project has to ensure the uniqueness of the ID).
1026                 **>
1027                 am_sourceID_t sourceID
1028
1029                 <**
1030                         @description : The domainID is the domain the source belongs to. A source can only be in one domain.
1031                 **>
1032                 am_domainID_t domainID
1033
1034                 <**
1035                         @description : The name of the source. Must be unique in the whole system.
1036                 **>
1037                 String name
1038
1039                 <**
1040                         @description : the sourceClassID, indicates the class the source is in. This information can be used by the Controller to implement different behaviour for different classes.
1041                 **>
1042                 am_sourceClass_t sourceClassID
1043
1044                 <**
1045                         @description : The source state is an indication towards the source if it is actively heard or not. The source can use this information to implement features like automatic spin down of CD's in case the CD is not the active source or AF following of a tuner that is not actively heard. The source state is set by the AudioManagerController.There are 3 possible states:
1046 \r
1047     SS_ON: the source is active\r
1048     SS_OFF: the source is off\r
1049     SS_PAUSED: the source is paused and not active.\r
1050                 **>
1051                 am_SourceState_e sourceState
1052 \r
1053                 <**
1054                         @description : This is the volume of the source. It is set by the AudioManagerController. It is used to adopt different audiolevels in a system and mixing of sources (e.g. navigation hints &amp; music). 
1055                 **>
1056                 am_volume_t volume
1057 \r
1058                 <**
1059                         @description : This Boolean flag indicates whether a source is visible to the commandInterface or not. If the User must have the possibility to choose the source in the HMI, it must be visible. But there are also good reasons for invisible sources, for example if the source is part of a crossfader or gateway. HMI relevant changes in visible sources will be automatically reported by the daemon to the commandInterface.
1060                 **>
1061                 Boolean visible
1062 \r
1063                 <**
1064                         @description : This attribute reflects the availability of the source. There are several reasons why a source could be not available for the moment. For example a CD player which has no CD entered in the slot can be unavailable, or a USB player with no or unreadable stick attached. Other scenarios involve the shutdown of a source because of overtemperature or over- &amp; undervoltage. The availability consists of two informations:
1065 \r
1066     Availablility: the status itself, can be A_AVAILABLE, A_UNAVAILABLE or A_UNKNOWN\r
1067     AvailabilityReason: this informs about the last reason for a change in availability. The reasons itself are product specific.\r
1068                 **>
1069                 am_Availability_s available
1070 \r
1071                 <**
1072                         @description : Some special sources can have special behaviors, the are so called "Low Level Interrupts". Here the current status is documented. The information can be used by the AudioManagerController to react to the changes by for example lowering the volume of the mainSources. The two states are
1073 \r
1074     IS_OFF: the interrupt is not active at the moment\r
1075     IS_INTERRUPTED: the interrupt is playing at the moment.\r
1076                 **>
1077                 am_InterruptState_e interruptState
1078
1079                 <**
1080                         @description : This is the list of soundProperties, that the source is capable of. The soundProperties itself are project specific. For sources, a possible soundProperty could be navigation volume offset, for example. 
1081                 **>
1082                 am_SoundProperty_L listSoundProperties
1083
1084                 <**
1085                         @description : This list holds information about the formats that the Source is capable of supporting when delivering audio.
1086                 **>
1087                 am_ConnectionFormat_L listConnectionFormats
1088
1089                 <**
1090                         @description : This is the list of the available mainSoundProperties. The principle is the same than with soundProperties, but they are only visible to the CommandInterface.
1091                 **>
1092                 am_MainSoundProperty_L listMainSoundProperties
1093
1094                 <**
1095                         @description : The list of MainNotificationConfigurations. These notifications work on the level of CommandInterface.
1096                 **>
1097                 am_NotificationConfiguration_L listMainNotificationConfigurations
1098
1099                 <**
1100                         @description : The list of MainNotificationConfigurations. These notifications work on the level of RoutingInterface.
1101                 **>
1102                 am_NotificationConfiguration_L listNotificationConfigurations
1103         }
1104
1105         <**
1106                 @description : This struct describes the attribiutes of a domain
1107         **>
1108         struct am_Domain_s {
1109
1110                 <**
1111                         @description : the domain ID
1112                 **>
1113                 am_domainID_t domainID
1114
1115                 <**
1116                         @description : the name of the domain
1117                 **>
1118                 String name
1119
1120                 <**
1121                         @description : the busname. This is equal to a plugin name and is used to dispatch messages to the elements of a plugin
1122                 **>
1123                 String busname
1124
1125                 <**
1126                         @description : the name of the node
1127                 **>
1128                 String nodename
1129
1130                 <**
1131                         @description : indicated if the domain is independent at startup or not
1132                 **>
1133                 Boolean early
1134
1135                 <**
1136                         @description : indicates if the domain registration is complete or not
1137                 **>
1138                 Boolean complete
1139
1140                 <**
1141                         @description : the current domain state
1142                 **>
1143                 am_DomainState_e ^state
1144         }
1145
1146         struct am_EarlyData_s {
1147                 am_EarlyDataType_e type
1148                 am_DataType_u sinksource
1149                 am_EarlyData_u data
1150         }
1151
1152         <**
1153                 @description : a connection
1154         **>
1155         struct am_Connection_s {
1156
1157                 <**
1158                         @description : the assigned ID
1159                 **>
1160                 am_connectionID_t connectionID
1161
1162                 <**
1163                         @description : the source the audio flows from
1164                 **>
1165                 am_sourceID_t sourceID
1166
1167                 <**
1168                         @description : the sink the audio flows to
1169                 **>
1170                 am_sinkID_t sinkID
1171
1172                 <**
1173                         @description : the delay of the conneciton
1174                 **>
1175                 am_timeSync_t delay
1176
1177                 <**
1178                         @description : the used connectionformat
1179                 **>
1180                 am_CustomConnectionFormat_t connectionFormat
1181         }
1182
1183         <**
1184                 @description : This types describe a mixed description for source and sinks volumes.
1185         **>
1186         struct am_Volumes_s {
1187
1188                 <**
1189                         @description : describes the type of the volume: source or sink.
1190                 **>
1191                 am_VolumeType_e volumeType
1192
1193                 <**
1194                         @description : either sourceID or sinkID
1195                 **>
1196                 am_DataType_u volumeID
1197
1198                 <**
1199                         @description : The volume
1200                 **>
1201                 am_volume_t volume
1202
1203                 <**
1204                         @description : the ramp that shall be driven
1205                 **>
1206                 am_CustomRampType_t ramp
1207
1208                 <**
1209                         @description : the time for the ramp
1210                 **>
1211                 am_time_t time
1212         }
1213
1214         <**
1215                 @description : data type depends of am_EarlyDataType_e:
1216 volume_t in case of ED_SOURCE_VOLUME, ED_SINK_VOLUME \r
1217 soundProperty_t in case of ED_SOURCE_PROPERTY, ED_SINK_PROPERTY \r
1218         **>
1219         union am_EarlyData_u {
1220                 am_volume_t volume
1221                 am_SoundProperty_s soundProperty
1222         }
1223
1224         <**
1225                 @description : data type depends of am_EarlyDataType_e:
1226 sourceID in case of ED_SOURCE_VOLUME, ED_SOURCE_PROPERTY\r
1227 sinkID in case of ED_SINK_VOLUME, ED_SINK_PROPERTY \r
1228         **>
1229         union am_DataType_u {
1230                 am_sinkID_t sink
1231                 am_sourceID_t source
1232         }
1233 \r
1234 }