summaryrefslogtreecommitdiff
path: root/test/components/json_handler/test_JSONHandler_v4_protocol_v1_2_no_extra.xml
blob: c30e051f87f191ec60f3934ddf45e7f4ca89e99a (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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
<?xml version="1.0" standalone="no"?>
<!-- edited with XMLSpy v2011 rel. 3 sp1 (x64) (http://www.altova.com) by Olesksandr Leshchenko (HP) -->
<?xml-stylesheet type="text/xml" href="protocol2html.xsl"?>
<interface name="Ford Sync RAPI" version="1.2" date="2011-05-17">
	<enum name="Result">
		<element name="SUCCESS">
			<description>The request succeeded</description>
		</element>
		<element name="INVALID_DATA">
			<description>The data sent is invalid. For example</description>
			<description>Invalid Json syntax</description>
			<description>Parameters out of bounds (number or enum range)</description>
			<description>Mandatory parameters not provided</description>
			<description>Parameter provided with wrong type</description>
			<description>Invalid characters</description>
			<description>Empty string</description>
		</element>
		<element name="UNSUPPORTED_REQUEST">
			<description>The request is not supported by Sync</description>
		</element>
		<element name="OUT_OF_MEMORY">
			<description>The system could not process the request because the necessary memory couldn't be allocated</description>
		</element>
		<element name="TOO_MANY_PENDING_REQUESTS">
			<description>There are too many requests pending (means, that the response has not been delivered, yet).</description>
			<designdescription>There may be a maximum of 1000 pending requests at a time.</designdescription>
		</element>
		<element name="INVALID_ID">
			<description>One of the provided IDs is not valid. For example</description>
			<description>This applies to CorrelationID, SubscriptionID [@TODO if SubscriptionID is used], CommandID, MenuID, [@TODO: missed one?]</description>
		</element>
		<element name="DUPLICATE_NAME">
			<description>There was a conflict with an registered name (application or menu item) or vr command</description>
		</element>
		<element name="TOO_MANY_APPLICATIONS">
			<description>There are already too many registered applications</description>
		</element>
		<element name="APPLICATION_REGISTERED_ALREADY">
			<description>RegisterApplication has been called again, after a RegisterApplication was successful before.</description>
		</element>
		<element name="UNSUPPORTED_VERSION">
			<description>Sync doesn't support the protocol that is requested by the mobile application</description>
		</element>
		<element name="WRONG_LANGUAGE">
			<description>The requested language is currently not supported.</description>
			<description>Might be because of a mismatch of the currently active language on Sync and the requested language</description>
		</element>
		<element name="APPLICATION_NOT_REGISTERED">
			<description>An command can not be executed because no application has been registered with RegisterApplication.</description>
		</element>
		<element name="IN_USE">
			<description>The data may not be changed, because it is currently in use.</description>
			<description>For example when trying to delete a command set that is currently involved in an interaction.</description>
		</element>
		<element name="SUBSCRIBED_ALREADY">
			<description>The item to subscribe to is already subscribed to.</description>
		</element>
		<element name="REJECTED">
			<description>The requested command was rejected, e.g. because mobile app is in background and cannot perform any HMI commands.</description>
			<description>Or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.</description>
		</element>
		<element name="ABORTED">
			<description>A command was aborted, for example due to user interaction (e.g. user pressed button).</description>
			<description>Or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.</description>
		</element>
		<element name="IGNORED">
			<description>A command was ignored, because the intended result is already in effect.</description>
			<description>For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already.</description>
			<description>NOTE: potentially replaces SUBSCRIBED_ALREADY</description>
		</element>
		<element name="UNSUPPORTED_BUTTON">
			<description>A button that was requested for subscription is not supported under the current system.</description>
			<description>NOTE: could become a more generic UNSUPPORTED_RESOURCE by merging with VEHIVLE_DATA_NOT_AVAILABLE.</description>
		</element>
		<element name="FILE_NOT_FOUND">
			<description>A specified file could not be found on Sync.</description>
		</element>
		<element name="GENERIC_ERROR">
			<description>Provided data is valid but something went wrong in the lower layers.</description>
		</element>
	</enum>
	<enum name="ButtonPressMode">
		<element name="LONG">
			<description>A button was released, after it was pressed for a long time</description>
			<description>Actual timing is defined by Sync and may vary</description>
		</element>
		<element name="SHORT">
			<description>A button was released, after it was pressed for a short time</description>
			<description>Actual timing is defined by Sync and may vary</description>
		</element>
	</enum>
	<enum name="ButtonEventMode">
		<element name="BUTTONUP">
			<description>A button has been released up</description>
		</element>
		<element name="BUTTONDOWN">
			<description>A button has been pressed down</description>
		</element>
	</enum>
	<enum name="Language">
		<description>The set of potential languages</description>
		<element name="EN-US" internal_name="EN_US">
			<description>US English</description>
		</element>
		<element name="ES-MX" internal_name="ES_MX">
			<description>Mexican Spanish</description>
		</element>
		<element name="FR-CA" internal_name="FR_CA">
			<description>Canadian French</description>
		</element>
	</enum>
	<enum name="UpdateMode">
		<description>Describes how the media clock timer should behave on the platform</description>
		<element name="COUNTUP"/>
		<description>Starts the media clock timer counting upwards, as in time elapsed.</description>
		<element name="COUNTDOWN"/>
		<description>Starts the media clock timer counting downwards, as in time remaining.</description>
		<element name="PAUSE"/>
		<description>Pauses the media clock timer</description>
		<element name="RESUME"/>
		<description>Resume the media clock timer</description>
	</enum>
	<enum name="InteractionMode">
		<description>For application-requested interactions, this mode indicates the method in which the user is notified and uses the interaction.</description>
		<element name="MANUAL_ONLY"/>
		<description>This mode causes the interaction to only occur on the display, meaning the choices are provided only via the display.</description>
		<description>Selections are made with the OK and Seek Right and Left, Tune Up and Down buttons.</description>
		<element name="VR_ONLY"/>
		<description>This mode causes the interaction to only occur using V4.</description>
		<description>Selections are made by saying the command.</description>
		<element name="BOTH"/>
		<description>This mode causes both a VR and display selection option for an interaction.</description>
		<description>Selections can be made either from the menu display or by speaking the command.</description>
	</enum>
	<enum name="HMILevel">
		<description>Enumeraction that describes current levels of HMI.</description>
		<element name="FULL" internal_name="HMI_FULL"/>
		<element name="LIMITED" internal_name="HMI_LIMITED"/>
		<element name="BACKGROUND" internal_name="HMI_BACKGROUND"/>
		<element name="NONE" internal_name="HMI_NONE"/>
	</enum>
	<enum name="AudioStreamingState">
		<description>Enumeraction that describes possible states of audio streaming.</description>
		<element name="AUDIBLE"/>
		<element name="NOT_AUDIBLE"/>
	</enum>
	<enum name="SystemContext">
		<description>Enumeraction that describes possible contexts and app's HMI might be in.</description>
		<element name="MAIN" internal_name="SYSCTXT_MAIN"/>
		<element name="VRSESSION" internal_name="SYSCTXT_VRSESSION"/>
		<element name="MENU" internal_name="SYSCTXT_MENU"/>
	</enum>
	<enum name="AppInterfaceUnregisteredReason">
		<description>Error code, which comes from sync side.</description>
		<element name="USER_EXIT"/>
		<element name="IGNITION_OFF"/>
		<element name="BLUETOOTH_OFF"/>
		<element name="USB_DISCONNECTED"/>
		<element name="REQUEST_WHILE_IN_NONE_HMI_LEVEL"/>
		<element name="TOO_MANY_REQUESTS"/>
		<element name="DRIVER_DISTRACTION_VIOLATION"/>
		<element name="LANGUAGE_CHANGE"/>
		<element name="MASTER_RESET"/>
		<element name="FACTORY_DEFAULTS"/>
	</enum>
	<enum name="TriggerSource">
		<description>Indicates the source from where the command was triggered.</description>
		<element name="MENU" internal_name="TS_MENU"/>
		<element name="VR" internal_name="TS_VR"/>
	</enum>
	<enum name="HmiZoneCapabilities">
		<description>Contains information about the HMI zone capabilities.</description>
		<description>For future use.</description>
		<element name="FRONT"/>
		<element name="BACK"/>
	</enum>
	<enum name="SpeechCapabilities">
		<description>Contains information about the TTS capabilities.</description>
		<element name="TEXT"/>
		<element name="SAPI_PHONEMES"/>
		<element name="LHPLUS_PHONEMES"/>
		<element name="PRE_RECORDED"/>
		<element name="SILENCE"/>
	</enum>
	<enum name="VrCapabilities">
		<description>Contains information about the VR capabilities.</description>
		<element name="Text"/>
	</enum>
	<enum name="AudioCaptureQuality" platform="pending">
		<description>Describes different quality options for PerformAudioCapture.</description>
        <element name="8KHZ" internal_name="AudioCaptureQuality_8KHZ" />
        <element name="16KHZ" internal_name="AudioCaptureQuality_16KHZ" />
	</enum>
	<enum name="ButtonName">
		<description>Defines the hard (physical) and soft (touchscreen) buttons available from SYNC</description>
		<element name="OK"/>
		<element name="SEEKLEFT"/>
		<element name="SEEKRIGHT"/>
		<element name="TUNEUP"/>
		<element name="TUNEDOWN"/>
		<element name="PRESET_0"/>
		<element name="PRESET_1"/>
		<element name="PRESET_2"/>
		<element name="PRESET_3"/>
		<element name="PRESET_4"/>
		<element name="PRESET_5"/>
		<element name="PRESET_6"/>
		<element name="PRESET_7"/>
		<element name="PRESET_8"/>
		<element name="PRESET_9"/>
		<issue creator="rs">Are these all supported buttons?</issue>
	</enum>
	<enum name="MediaClockFormat">
		<element name="CLOCK1">
			<description>minutesFieldWidth = 2;minutesFieldMax = 19;secondsFieldWidth = 2;secondsFieldMax = 99;maxHours = 19;maxMinutes = 59;maxSeconds = 59;</description>
			<description>used for Type II and CID headunits</description>
		</element>
		<element name="CLOCK2">
			<description>minutesFieldWidth = 3;minutesFieldMax = 199;secondsFieldWidth = 2;secondsFieldMax = 99;maxHours = 59;maxMinutes = 59;maxSeconds = 59;</description>
			<description>used for Type V headunit</description>
		</element>
		<element name="CLOCKTEXT1">
			<description>5 characters possible</description>
			<description>Format:      1|sp   c   :|sp   c   c</description>
			<description>1|sp : digit "1" or space</description>
			<description>c    : character out of following character set: sp|0-9|[letters, see TypeII column in XLS. See [@TODO: create file ref]]</description>
			<description>:|sp : colon or space</description>
			<description>used for Type II headunit</description>
		</element>
		<element name="CLOCKTEXT2">
			<description>5 chars possible</description>
			<description>Format:      1|sp   c   :|sp   c   c</description>
			<description>1|sp : digit "1" or space</description>
			<description>c    : character out of following character set: sp|0-9|[letters, see CID column in XLS. See [@TODO: create file ref]]</description>
			<description>:|sp : colon or space</description>
			<description>used for CID headunit</description>
			<description>NOTE: difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character set</description>
		</element>
		<element name="CLOCKTEXT3">
			<description>6 chars possible</description>
			<description>Format:      1|sp   c   c   :|sp   c   c</description>
			<description>1|sp : digit "1" or space</description>
			<description>c    : character out of following character set: sp|0-9|[letters, see Type 5 column in XLS]. See [@TODO: create file ref]</description>
			<description>:|sp : colon or space</description>
			<description>used for Type V headunit</description>
		</element>
		<issue creator="mf">First complete values draft. Review needed.</issue>
	</enum>
	<enum name="DisplayType">
		<description>See DAES for further infos regarding the displays]</description>
		<issue creator="rs">Meaningful description is missing</issue>
		<element name="CID"/>
		<element name="TYPE2"/>
		<element name="TYPE5"/>
		<element name="NGN"/>
		<element name="GEN2_8_DMA"/>
		<element name="GEN2_6_DMA"/>
		<element name="MFD3"/>
		<element name="MFD4"/>
		<element name="MFD5"/>
	</enum>
	<enum name="TextFieldName">
		<element name="mainField1">
			<description>The first line of the main field of persistent display</description>
			<description>Applies to "Show"</description>
		</element>
		<element name="mainField2">
			<description>The second line of the main field of persistent display</description>
			<description>Applies to "Show"</description>
		</element>
		<element name="statusBar">
			<description>The status bar on Nav</description>
			<description>Applies to "Show"</description>
		</element>
		<element name="mediaClock">
			<description>Text value for MediaClock field. Has to be properly formatted by Mobile App according to Sync capabilities.</description>
			<description>Applies to "Show"</description>
		</element>
		<element name="mediaTrack">
			<description>The track field of NGN type ACMs.</description>
			<description>This field is only available for media applications.</description>
			<description>Applies to "Show"</description>
		</element>
		<element name="alertText1">
			<description>The first line of the alert text field</description>
			<description>Applies to "Alert"</description>
		</element>
		<element name="alertText2">
			<description>The second line of the alert text field</description>
			<description>Applies to "Alert"</description>
		</element>
	</enum>
	<enum name="CharacterSet">
		<description>The list of potential character sets</description>
		<element name="TYPE2SET">
			<description>See [@TODO: create file ref]</description>
		</element>
		<element name="TYPE5SET">
			<description>See [@TODO: create file ref]</description>
		</element>
		<element name="CID1SET">
			<description>See [@TODO: create file ref]</description>
		</element>
		<element name="CID2SET">
			<description>See [@TODO: create file ref]</description>
		</element>
		<issue creator="rs">Real sets have not been defined yet?</issue>
	</enum>
	<enum name="TextAlignment">
		<description>The list of possible alignments, left, right, or centered</description>
		<element name="LEFT_ALIGNED"/>
		<element name="RIGHT_ALIGNED"/>
		<element name="CENTERED"/>
	</enum>
	<enum name="TBTState">
		<description>Enumeration that describes possible states of turn-by-turn module.</description>
		<element name="ROUTE_UPDATE_REQUEST"/>
		<element name="ROUTE_ACCEPTED"/>
		<element name="ROUTE_REFUSED"/>
		<element name="ROUTE_CANCELLED"/>
	</enum>
	<enum name="DriverDistractionState">
		<description>Enumeration that describes possible states of driver distraction.</description>
		<element name="DD_ON"/>
		<element name="DD_OFF"/>
	</enum>
	<struct name="Choice">
		<description>A choice is an option given to the user, which can be selected either by menu, or through voice recognition system.</description>
		<param name="choiceID" type="Integer" minvalue="0" maxvalue="65535"/>
		<param name="menuName" type="String" maxlength="500"/>
		<param name="vrCommands" type="String" minsize="1" maxsize="100" maxlength="99" array="true"/>
	</struct>
	<struct name="SyncMsgVersion">
		<description>Specifies the version number of the SYNC V4 protocol, that is supported by the mobile application</description>
		<param name="majorVersion" type="Integer" minvalue="1" maxvalue="1">
			<description>The major version indicates versions that is not-compatible to previous versions.</description>
		</param>
		<param name="minorVersion" type="Integer" minvalue="0" maxvalue="1000">
			<description>The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)</description>
		</param>
	</struct>
	<enum name="GlobalProperty">
		<description>The different global properties.</description>
		<element name="HELPPROMPT">
			<description>The property helpPrompt of setGlobalProperties</description>
		</element>
		<element name="TIMEOUTPROMPT">
			<description>The property timeoutPrompt of setGlobalProperties</description>
		</element>
	</enum>
	<struct name="StartTime">
		<param name="hours" type="Integer" minvalue="0" maxvalue="59">
			<description>The hour of the media clock.</description>
			<description>Some radios only support a max of 19 hours. If out of range, it will be rejected.</description>
		</param>
		<param name="minutes" type="Integer" minvalue="0" maxvalue="59"/>
		<param name="seconds" type="Integer" minvalue="0" maxvalue="59"/>
	</struct>
	<struct name="TextField">
		<param name="name" type="TextFieldName">
			<description>The name that identifies the field. See TextFieldName.</description>
		</param>
		<param name="characterSet" type="CharacterSet">
			<description>The character set that is supported in this field. See CharacterSet.</description>
		</param>
		<param name="width" type="Integer" minvalue="1" maxvalue="40">
			<description>The number of characters in one row of this field.</description>
		</param>
		<param name="rows" type="Integer" minvalue="1" maxvalue="3">
			<description>The number of rows of this field.</description>
		</param>
	</struct>
	<struct name="DisplayCapabilities">
		<description>Contains information about the display capabilities.</description>
		<param name="displayType" type="DisplayType">
			<description>The type of the display. See DisplayType</description>
		</param>
		<param name="textFields" type="TextField" minsize="1" maxsize="100" array="true">
			<description>A set of all fields that support text data. See TextField</description>
		</param>
		<param name="mediaClockFormats" type="MediaClockFormat" minsize="1" maxsize="100" array="true">
			<description>A set of all supported formats of the media clock. See MediaClockFormat</description>
		</param>
	</struct>
	<struct name="ButtonCapabilities">
		<description>Contains information about a buttons capabilities.</description>
		<param name="name" type="ButtonName">
			<description>The name of the button. See ButtonName.</description>
		</param>
		<param name="shortPressAvailable" type="Boolean">
			<description>The button supports a short press.</description>
			<description>Whenever the button is pressed short, onButtonPressed( SHORT) will be invoked.</description>
		</param>
		<param name="longPressAvailable" type="Boolean">
			<description>The button supports a LONG press.</description>
			<description>Whenever the button is pressed long, onButtonPressed( LONG) will be invoked.</description>
		</param>
		<param name="upDownAvailable" type="Boolean">
			<description>The button supports "button down" and "button up".</description>
			<description>Whenever the button is pressed, onButtonEvent( DOWN) will be invoked.</description>
			<description>Whenever the button is released, onButtonEvent( UP) will be invoked.</description>
		</param>
	</struct>
	<struct name="MenuParams">
		<param name="parentID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
			<description>unique ID of the sub menu, the command will be added to.</description>
			<description>If not provided, it will be provided to the top level of the in application menu.</description>
		</param>
		<param name="position" type="Integer" minvalue="0" maxvalue="1000" mandatory="false">
			<description>Position within the items that are are at top level of the in application menu.</description>
			<description>0 will insert at the front.</description>
			<description>1 will insert at the second position.</description>
			<description>if position is greater or equal than the number of items on top level, the sub menu will be appended to the end.</description>
			<description>If this param was omitted the entry will be added at the end.</description>
		</param>
		<param name="menuName" type="String" maxlength="500">
			<description>Text to show in the menu for this sub menu.</description>
		</param>
	</struct>
	<struct name="TTSChunk">
		<description>A TTS chunk, that consists of the text/phonemes to speak and the type (like text or SAPI)</description>
		<param name="text" maxlength="500" type="String">
			<description>The text or phonemes to speak.</description>
			<description>May not be empty.</description>
		</param>
		<param name="type" type="SpeechCapabilities">
			<description>Describes, whether it is text or a specific phoneme set. See SpeechCapabilities</description>
		</param>
	</struct>
	<!-- Requests/Responses -->
	<function name="RegisterAppInterface" messagetype="request">
		<description>Establishes an interface with a mobile application.</description>
		<description>Before registerAppInterface no other commands will be accepted/executed.</description>
		<param name="syncMsgVersion" type="SyncMsgVersion">
			<description>See SyncMsgVersion</description>
		</param>
		<param name="appName" type="String" maxlength="100">
			<description>The mobile application name, e.g. "Ford Drive Green".</description>
			<description>Needs to be unique over all applications.</description>
			<description>May not be empty.</description>
			<description>May not start with a new line character.</description>
			<description>May not interfere with any name or synonym of previously registered applications and the following list of words @TODO: Create list(global commands)</description>
			<description>Needs to be unique over all applications. Applications with the same name will be rejected.</description>
			<description>Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.</description>
		</param>
		<param name="ngnMediaScreenAppName" type="String" maxlength="100" mandatory="false">
			<description>Provides an abbreviated version of the app name (if needed), that will be displayed on the NGN media screen.</description>
			<description>If not provided, the appName is used instead (and will be truncated if too long)</description>
			<description>Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.</description>
		</param>
		<param name="vrSynonyms" type="String" maxlength="40" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>Defines an additional voice recognition command.</description>
			<description>May not interfere with any name or synonym of previously registered applications and the following list of words @TODO: Create list(global commands)</description>
			<description>Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.</description>
		</param>
		<param name="usesVehicleData" type="Boolean" platform="pending" mandatory="false">
			<description>If not provided, the default is equal to False"</description>
			<description>Indicates if the mobile application wants to use vehicle data like GPS or speed.</description>
		</param>
		<param name="isMediaApplication" type="Boolean">
			<description>Indicates if the application is a media or a non-media application.</description>
			<description>Only media applications will be able to stream audio to Sync that is audible outside of the BT media source.</description>
		</param>
		<param name="languageDesired" type="Language">
			<description>See Language</description>
			<description>If the language doesn't match the active language on Sync, it will be rejected.</description>
			<description>If the language is changed, while an app is registered, it will get disconnected.</description>
		</param>
		<param name="autoActivateID" type="String" maxlength="16" mandatory="false">
			<description>Used to support auto activation after an initial successful registerAppInterface (for example after an ignition cycle).</description>
			<description>The app should always provide the id that was provided by the most recent registerAppInterface response.</description>
			<description>If this is the first call to registerAppInterface, then do not provide this parameter at all.</description>
			<description>If not provided or not matching with the id of the last registerAppInterface response, the app will not be automatically put into foreground on startup.</description>
		</param>
	</function>
	<function name="RegisterAppInterface" messagetype="response">
		<description>The response to registerAppInterface</description>
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="GENERIC_ERROR"/>
			<element name="DUPLICATE_NAME"/>
			<element name="TOO_MANY_APPLICATIONS"/>
			<element name="APPLICATION_REGISTERED_ALREADY"/>
			<element name="UNSUPPORTED_VERSION"/>
			<element name="WRONG_LANGUAGE"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
		<param name="syncMsgVersion" type="SyncMsgVersion" mandatory="false">
			<description>See SyncMsgVersion</description>
		</param>
		<param name="autoActivateID" type="String" maxlength="16" mandatory="false">
			<description>Provides an id that the app may use on a subsequent registerAppInterface to allow for auto activation (for example after an ignition cycle).</description>
		</param>
		<param name="language" type="Language" mandatory="false">
			<description>The currently active language on Sync. See "Language" for options.</description>
		</param>
		<param name="displayCapabilities" type="DisplayCapabilities" mandatory="false">
			<description>See DisplayCapabilities</description>
		</param>
		<param name="buttonCapabilities" type="ButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>See ButtonCapabilities</description>
		</param>
		<param name="hmiZoneCapabilities" type="HmiZoneCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
			<issue creator="rs">If not used yet => remove</issue>
			<description>See HmiZoneCapabilities</description>
		</param>
		<param name="speechCapabilities" type="SpeechCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>See SpeechCapabilities</description>
		</param>
		<param name="vrCapabilities" type="VrCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>See VrCapabilities</description>
		</param>
	</function>
	<function name="UnregisterAppInterface" messagetype="request">
		<description>Closes an interface from a mobile application.</description>
		<description>After unregisterAppInterface, no commands other than registerAppInterface will be accepted/executed.</description>
		<description>Will fail, if no registerAppInterface was completed successfully before.</description>
	</function>
	<function name="UnregisterAppInterface" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="SetGlobalProperties" messagetype="request">
		<description>Allows setting global properties.</description>
		<param name="helpPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>The help prompt.</description>
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
		<param name="timeoutPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>Help text for a wait timeout.</description>
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
		<issue creator="rs">Do we want to add VR threshold params?</issue>
	</function>
	<function name="SetGlobalProperties" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="ResetGlobalProperties" messagetype="request">
		<description>Allows resetting global properties.</description>
		<param name="properties" type="GlobalProperty" minsize="1" maxsize="100" array="true">
			<description>Contains the names of all global properties (like timeoutPrompt) that should be unset. Resetting means, that they have the same value as at start up (default)</description>
		</param>
	</function>
	<function name="ResetGlobalProperties" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="AddCommand" messagetype="request">
		<description>Adds a command to the in application menu.</description>
		<description>Either menuParams or vrCommands must be provided.</description>
		<param name="cmdID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>unique ID of the command to add.</description>
		</param>
		<param name="menuParams" type="MenuParams" mandatory="false">
			<description>Optional sub value containing menu parameters</description>
		</param>
		<param name="vrCommands" type="String" minsize="1" maxsize="100" maxlength="99" array="true" mandatory="false">
			<description>An array of strings to be used as VR sysnonyms for this command.</description>
			<description>If this array is provided, it may not be empty.</description>
		</param>
	</function>
	<function name="AddCommand" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="DUPLICATE_NAME"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="DeleteCommand" messagetype="request">
		<description>Deletes all commands from the in-application menu with the specified command id.</description>
		<param name="cmdID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>ID of the command(s) to delete.</description>
		</param>
	</function>
	<function name="DeleteCommand" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="IN_USE"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="AddSubMenu" messagetype="request">
		<description>Adds a sub menu to the in-application menu.</description>
		<param name="menuID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>unique ID of the sub menu to add.</description>
		</param>
		<param name="position" type="Integer" minvalue="0" maxvalue="1000" mandatory="false">
			<description>Position within the items that are are at top level of the in application menu.</description>
			<description>0 will insert at the front.</description>
			<description>1 will insert at the second position.</description>
			<description>If position is greater or equal than the number of items on top level, the sub menu will be appended to the end.</description>
			<description>Position of any submenu will always be located before the return and exit options</description>
			<description>If this param was omitted the entry will be added at the end.</description>
		</param>
		<param name="menuName" maxlength="500" type="String">
			<description>Text to show in the menu for this sub menu.</description>
		</param>
	</function>
	<function name="AddSubMenu" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="DUPLICATE_NAME"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="DeleteSubMenu" messagetype="request">
		<description>Deletes a submenu from the in-application menu.</description>
		<param name="menuID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>The "menuID" of the submenu to delete. (See addSubMenu.menuID)</description>
		</param>
	</function>
	<function name="DeleteSubMenu" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="IN_USE"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="CreateInteractionChoiceSet" messagetype="request">
		<description>creates interaction choice set to be used later by performInteraction</description>
		<param name="interactionChoiceSetID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>Unique ID used for this interaction choice set.</description>
		</param>
		<param name="choiceSet" type="Choice" minsize="1" maxsize="100" array="true"/>
	</function>
	<function name="CreateInteractionChoiceSet" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="DUPLICATE_NAME"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="PerformInteraction" messagetype="request">
		<description>Triggers an interaction (e.g. "Permit GPS?" - Yes, no, Always Allow).</description>
		<param name="initialText" type="String" maxlength="500">
			<description>Text to be displayed first.</description>
		</param>
		<param name="initialPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true">
			<description>This is the intial prompt spoken to the user at the start of an interaction</description>
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
		<param name="interactionMode" type="InteractionMode">
			<description>See InteractionMode.</description>
		</param>
		<param name="interactionChoiceSetIDList" type="Integer" minsize="1" maxsize="100" minvalue="0" maxvalue="2000000000" array="true">
			<description>List of interaction choice set IDs to use with an interaction.</description>
		</param>
		<param name="helpPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>Help text. This is the spoken string when a user speaks "help" when the interaction is occuring.</description>
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
		<param name="timeoutPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>Timeout text. This text is spoken when a VR interaction times out.</description>
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
		<param name="timeout" type="Integer" minvalue="5000" maxvalue="100000" mandatory="false">
			<description>Timeout in milliseconds.</description>
			<description>If omitted a standard value of 10000 milliseconds is used.</description>
		</param>
	</function>
	<function name="PerformInteraction" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="DUPLICATE_NAME"/>
            <!--<element name="REJECTED"/>-->
			<element name="ABORTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
		<param name="choiceID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
			<description>ID of the choice that was selected in response to PerformInteraction.</description>
		</param>
		<param name="triggerSource" type="TriggerSource" mandatory="false">
			<description>See TriggerSource</description>
		</param>
	</function>
	<function name="DeleteInteractionChoiceSet" messagetype="request">
		<description>Deletes interaction choice set that has been created with "CreateInteractionChoiceSet".</description>
		<description>The interaction may only be deleted when not currently in use by a "performInteraction".</description>
		<param name="interactionChoiceSetID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>ID of the interaction choice set to delete.</description>
		</param>
	</function>
	<function name="DeleteInteractionChoiceSet" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="INVALID_ID"/>
			<element name="IN_USE"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="Alert" messagetype="request">
		<description>Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or TTSChunks need to be provided.</description>
		<param name="alertText1" type="String" maxlength="500" mandatory="false">
			<description>The first line of the alert text field</description>
		</param>
		<param name="alertText2" type="String" maxlength="500" mandatory="false">
			<description>The second line of the alert text field</description>
		</param>
		<param name="ttsChunks" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
		<param name="duration" type="Integer" minvalue="3000" maxvalue="10000" mandatory="false">
			<description>Timeout in milliseconds.</description>
			<description>Typical timeouts are 3-5 seconds</description>
			<description>If omitted, timeout is set to 5s.</description>
		</param>
		<param name="playTone" type="Boolean" mandatory="false">
			<description>Defines if tone should be played. Tone is played before TTS.</description>
			<description>If omitted, no tone is played.</description>
		</param>
	</function>
	<function name="Alert" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="ABORTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="Show" messagetype="request">
		<description>Updates the persistent display. Supported fields depend on display capabilities.</description>
		<param name="mainField1" type="String" maxlength="500" mandatory="false">
			<description>The text that should be displayed in a single or upper display line.</description>
			<description>If this text is not set, the text of mainField1 stays unchanged.</description>
			<description>If this text is empty "", the field will be cleared.</description>
		</param>
		<param name="mainField2" type="String" maxlength="500" mandatory="false">
			<description>The text that should be displayed on the second dispay line.</description>
			<description>If this text is not set, the text of mainField2 stays unchanged.</description>
			<description>If this text is empty "", the field will be cleared.</description>
		</param>
		<param name="alignment" type="TextAlignment" mandatory="false">
			<description>Specifies how mainField1 and mainField2 texts should be aligned on display.</description>
			<description>If omitted, texts will be centered</description>
		</param>
		<param name="statusBar" type="String" maxlength="500" mandatory="false">
			<description>Requires investigation regarding the nav display capabilities. Potentially lower lowerStatusBar, upperStatusBar, titleBar, etc.</description>
		</param>
		<param name="mediaClock" type="String" maxlength="500" mandatory="false">
			<description>Text value for MediaClock field. Has to be properly formatted by Mobile App according to Sync capabilities.</description>
			<description>If this text is set, any automatic media clock updates previously set with SetMediaClockTimer will be stopped.</description>
		</param>
		<param name="mediaTrack" type="String" maxlength="500" mandatory="false">
			<description>The text that should be displayed in the track field.</description>
			<description>This field is only valid for media applications on NGN type ACMs.</description>
			<description>If this text is not set, the text of mediaTrack stays unchanged.</description>
			<description>If this text is empty "", the field will be cleared.</description>
		</param>
	</function>
	<function name="Show" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="Speak" messagetype="request">
		<description>Speaks a text.</description>
		<param name="ttsChunks" type="TTSChunk" minsize="1" maxsize="100" array="true">
			<description>An array of text chunks of type TTSChunk. See TTSChunk</description>
			<description>The array must have at least one item</description>
		</param>
	</function>
	<function name="Speak" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="ABORTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="SetMediaClockTimer" messagetype="request">
		<description>Sets the initial media clock value and automatic update method.</description>
		<param name="startTime" type="StartTime" mandatory="false">
			<description>See StartTime</description>
			<description>startTime must be provided for "run"</description>
			<description>startTime will be ignored for "pause" and "resum"</description>
		</param>
		<param name="updateMode" type="UpdateMode">
			<description>Enumeration to control the media clock.</description>
			<description>In case of pause or resume, the start time value is ignored and shall be left out.  For resume, the time continues with the same value as it was when paused.</description>
		</param>
	</function>
	<function name="SetMediaClockTimer" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
			<element name="IGNORED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="EncodedSyncPData" messagetype="request">
		<description>Allows encoded data in the form of SyncP packets to be sent to the SYNC module</description>
		<param name="data" type="String" maxlength="10000" minsize="1" maxsize="100" array="true" mandatory="true">
			<description>Contains base64 encoded string of SyncP packets.</description>
			<todo>What is the maxlength</todo>
		</param>
	</function>
	<function name="EncodedSyncPData" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="REJECTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="SubscribeButton" messagetype="request">
		<description>Subscribes to built-in HMI buttons.</description>
		<description>The application will be notified by the OnButtonEvent and OnButtonPress.</description>
		<description>To unsubscribe the notifications, use unsubscribeButton.</description>
		<param name="buttonName" type="ButtonName">
			<description>Name of the button to subscribe.</description>
		</param>
	</function>
	<function name="SubscribeButton" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="UNSUPPORTED_BUTTON"/>
			<element name="IGNORED"/>
			<element name="REJECTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="UnsubscribeButton" messagetype="request">
		<description>Unsubscribes from built-in HMI buttons.</description>
		<param name="buttonName" type="ButtonName">
			<description>Name of the button to unsubscribe.</description>
		</param>
	</function>
	<function name="UnsubscribeButton" messagetype="response">
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="SUCCESS"/>
			<element name="INVALID_DATA"/>
			<element name="OUT_OF_MEMORY"/>
			<element name="TOO_MANY_PENDING_REQUESTS"/>
			<element name="APPLICATION_NOT_REGISTERED"/>
			<element name="GENERIC_ERROR"/>
			<element name="UNSUPPORTED_BUTTON"/>
			<element name="IGNORED"/>
			<element name="REJECTED"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<function name="GenericResponse" messagetype="response">
		<description>Generic Response is sent, when the name of a received msg cannot be retrieved. Only used in case of an error.</description>
		<description>Currently, only resultCode INVALID_DATA is used.</description>
		<param name="success" type="Boolean">
			<description>true, if successful</description>
			<description>false, if failed</description>
		</param>
		<param name="resultCode" type="Result">
			<description>See Result</description>
			<element name="INVALID_DATA"/>
		</param>
		<param name="info" type="String" maxlength="1000" mandatory="false">
			<description>Provides additional human readable info regarding the result.</description>
		</param>
	</function>
	<!-- Notifications -->
	<function name="OnHMIStatus" messagetype="notification">
		<param name="hmiLevel" type="HMILevel">
			<description>See HMILevel</description>
		</param>
		<param name="audioStreamingState" type="AudioStreamingState">
			<description>See AudioStreamingState</description>
		</param>
		<param name="systemContext" type="SystemContext">
			<description>See SystemContext</description>
		</param>
	</function>
	<function name="OnAppInterfaceUnregistered" messagetype="notification">
		<param name="reason" type="AppInterfaceUnregisteredReason">
			<description>See AppInterfaceUnregisteredReason</description>
		</param>
	</function>
	<function name="OnButtonEvent" messagetype="notification">
		<description>Notifies application of UP/DOWN events for buttons to which the application is subscribed.</description>
		<param name="buttonName" type="ButtonName"/>
		<param name="buttonEventMode" type="ButtonEventMode">
			<description>Indicates whether this is an UP or DOWN event.</description>
		</param>
	</function>
	<function name="OnButtonPress" messagetype="notification">
		<description>Notifies application of LONG/SHORT press events for buttons to which the application is subscribed.</description>
		<param name="buttonName" type="ButtonName"/>
		<param name="buttonPressMode" type="ButtonPressMode">
			<description>Indicates whether this is a LONG or SHORT button press event.</description>
		</param>
	</function>
	<function name="OnCommand" messagetype="notification">
		<param name="cmdID" type="Integer" minvalue="0" maxvalue="2000000000">
			<description>Command ID, which is related to a specific menu entry.</description>
		</param>
		<param name="triggerSource" type="TriggerSource">
			<description>See TriggerSource</description>
		</param>
	</function>
	<function name="OnEncodedSyncPData" messagetype="notification">
		<description>Callback including encoded data of any SyncP packets that SYNC needs to send back to the mobile device.</description>
		<param name="data" type="String" maxlength="10000" minsize="1" maxsize="100" mandatory="true" array="true">
			<description>Contains base64 encoded string of SyncP packets.</description>
		</param>
	</function>
	<function name="OnTBTClientState" messagetype="notification">
		<description>Provides applications with notifications specific to the current TBT client status on the module</description>
		<param name="state" type="TBTState">
			<description>Current State of TBT client</description>
		</param>
	</function>
	<function name="OnDriverDistraction" messagetype="notification">
		<description>Provides driver distraction state to mobile applications</description>
		<param name="state" type="DriverDistractionState">
			<description>Current State of Driver Distraction</description>
		</param>
	</function>


</interface>