started 0.14 development
[profile/ivi/automotive-message-broker.git] / docs / amb.in.fidl
1 /*! amb.fidl
2 * \name @PROJECT_NAME@
3 * \version @PROJECT_VERSION@
4 * \brief This document describes the DBus interfaces and data types for the
5 * Automotive Message Broker API.  The data types are intended to as-close-as-
6 * possible be compatible with the W3C vehicle <a href="https://rawgit.com/w3c/automotive-bg/master/data_spec.html>data spec</a>.
7 */
8
9 /*!
10 * Variant
11 */
12 union Variant {
13   UInt8 uint8
14   Int8 int8
15   UInt16 uint16
16   Int16 int16
17   UInt32 uint32
18   Int32 int32
19   UInt32 uin32
20   Int64 int64
21   UInt64 uint64
22   Boolean boolean
23   Float float
24   Double double
25   String string
26   ByteBuffer bytebuffer
27 }
28
29 /*!
30 * Dictionary
31 */
32 map Dictionary {
33   String to Variant
34 }
35
36 /*!
37 * VehiclePropertyType
38 * \brief VehiclePropertyType is the base class for all Data types.
39 */
40 interface VehiclePropertyType {
41
42   /*!
43   * \brief time in seconds since system start when a property in the interface updated.
44   */
45   attribute Double Time readonly
46
47   /*!
48   * \brief Zone in which the interface is situated.
49   */
50   attribute Zone Zone readonly
51
52   /*!
53   * \brief return dictionary of objectName and values for data between
54   * 'beginTime' and 'endTime'
55   * \arg beginTime time stamp in Seconds since Unix Epoc
56   * \arg endTime time stamp in Seconds since Unix Epoc
57   */
58   method GetHistory(Double beginTime, Double endTime) {
59     out{ Dictionary result}
60   }
61 }
62
63 enumeration Zone {
64   None = 0,
65   Front = 1,
66   Middle = 1 << 1,
67   Right = 1 << 2,
68   Left = 1 << 3,
69   Rear = 1 << 4,
70   Center = 1 << 5
71 }
72
73 /*! org.automotive.Manager
74  * \brief Manager is a helper interface for discovering and finding available objects.
75  * Objects represent interfaces to data types.
76  */
77 interface org.automotive.Manager  {
78
79   /*! List
80    *  \brief return supported properties
81   */
82   method List {
83     out {array of String objectNames}
84   }
85
86   /*!
87    * FindObject
88    *  \brief find the DBus object path matching the given "objectName" (ie "VehicleSpeed" is the object name for
89    * the DBus object at path: "/path/to/VehicleSpeed") or org.automotive.Manager.ObjectNotFound if the object
90    * name is not supported.
91    *
92    *  If the object path does not exist, it will be created.  The object path will be removed
93    *  when the last proccess that calls Find* disconnects from DBus.
94    *
95    *  \arg String objectName to find
96    *  \return list of object paths that provide the given object Name.
97   */
98   method FindObject {
99     in {
100       String objectName
101     }
102     out {
103       array of String objectPaths
104     }
105   }
106
107   /*!
108    * FindObjectForZone
109    *  \brief find the DBus object path which matches "objectName" and "zone".  This has the same behavior as FindObject
110    * except that it takes an addition zone argument and only return the path for that zone.
111    *  \arg String property is the requested property to be retrieved.
112    *  \arg Zone zone is the zone which the object
113    *  \return string representing the DBus Object path.  
114    *  Possible errors:
115    * "org.automotive.Manager.InvalidZone"
116    * "org.automotive.Manager.ObjectNotFound"
117   */
118   method FindObjectForZone {
119     in {
120       String objectName
121       Zone zone
122     }
123     out {
124       String objectPath
125     }
126   }
127
128   /*!
129    * ZonesForObjectName
130    *  \brief get a list of zones for a given objectName.
131    *  \arg String objectName object name.
132    *  \return list of zones for the given objectName (@see Zone)
133   */
134   method ZonesForObjectName {
135     in {
136       String objectName
137     }
138     out {
139       array of UInt32 zones
140     }
141   }
142
143   /*!
144    * SupportsProperty
145    * \brief check whether a Property exists.
146    * \arg propertyName name of property of Object
147    * \return true if Property exists
148    */
149   method SupportsProperty {
150     in {
151       String propertyName
152     }
153     out {
154       Boolean supported
155     }
156   }
157
158 }
159
160 /*! org.automotive.VehicleSpeed
161  \brief contains information about VehicleSpeed
162  DBus Path: variable
163 */
164 interface org.automotive.VehicleSpeed extends VehiclePropertyType  {
165
166   /*!  Speed
167    *   \brief  MUST return Vehicle Speed in kilometers per hour.
168    */
169   attribute UInt16 Speed readonly
170 }
171
172 /*! org.automotive.EngineSpeed
173  \brief contains information about EngineSpeed
174  DBus Path: variable
175 */
176 interface org.automotive.EngineSpeed extends VehiclePropertyType  {
177
178   /*!  EngineSpeed
179    *   \brief  MUST return Engine Speed in rotations per minute.
180    */
181    attribute UInt16 Speed readonly
182 }
183
184 enumeration PowerMode {
185   Off = 0
186   Accessory1 = 1
187   Accessory2 = 2
188   Run = 3
189 }
190
191 interface org.automotive.VehiclePowerMode extends VehiclePropertyType  {
192
193   /*!  VehiclePowerMode
194    *   \brief  MUST return vehicle power mode
195    */
196   attribute PowerMode VehiclePowerMode readonly
197 }
198
199 /*! org.automotive.TripMeter
200  \brief contains information about TripMeter
201  DBus Path: variable
202 */
203 interface org.automotive.TripMeter extends VehiclePropertyType  {
204
205   /*!  TripMeters
206    *   \brief  MUST return trip meters.  Changing any items in the array will reset the item's value to '0'.
207    */
208    attribute array TripMeters of UInt16
209 }
210
211 /*! org.automotive.Acceleration
212  \brief contains information about Acceleration
213  DBus Path: variable
214 */
215 interface org.automotive.Acceleration extends VehiclePropertyType  {
216
217   /*!  X
218    *   \brief  return acceleration on the "X" axis (Unit: centimeters per second squared)
219    */
220   attribute Int16 X readonly
221
222   /*!  Y
223    *   \brief  return acceleration on the "Y" axis (Unit: centimeters per second squared)
224    */
225   attribute Int16 Y readonly
226
227   /*!  Z
228    *   \brief  return acceleration on the "Z" axis (Unit: centimeters per second squared)
229    */
230   attribute Int16 Z readonly
231 }
232
233 enumeration TransmissionMode {
234   park = "park",
235   reverse = "reverse",
236   neutral = "neutral",
237   low = "low",
238   drive = "drive",
239   overdrive = "overdrive"
240 }
241
242 /*! TransmissionPosition
243  * \brief Describes Transmission Pistion.  Deprecated.  Will disappear in 0.14
244  */
245 enumeration TransmissionPosition {
246   Neutral = 0,
247   First = 1,
248   Second = 2,
249   Third = 3,
250   Fourth = 4,
251   Fifth = 5,
252   Sixth = 6,
253   Seventh = 7,
254   Eighth = 8,
255   Ninth = 9,
256   Tenth = 10,
257   Cvt = 64,
258   Reverse = 128,
259   Park = 255
260 }
261
262 /*! TransmissionGearType
263  * \brief Describes the transmission gearbox type
264 */
265 enumeration TransmissionGearType
266 {
267   Auto = 0,
268   Manual = 1,
269   CVT = 2
270 }
271
272 interface org.automotive.Transmission extends VehiclePropertyType  {
273   /*!  GearPosition
274    *   \brief  MUST return transmission gear position (see TRANSMISSIONPOSITION) Deprecated.  Replaced with Gear
275    */
276    attribute TransmissionPosition GearPosition readonly
277
278   /*!  TransmissionGearType
279    *   \brief MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).
280    *   See TRANSMISSIONGEARTYPE
281    */
282    attribute TransmissionGearType Type
283
284   /*!  Gear
285    *   \brief  MUST return transmission gear position 1-10
286    */
287    attribute UInt8 Gear readonly
288
289   /*!  Mode
290    *   \brief  MUST return transmission Mode
291    */
292    attribute TransmissionMode Mode readonly
293 }
294
295
296 interface org.automotive.CruiseControlStatus extends VehiclePropertyType  {
297
298   /*!  Activated
299    *   \brief  MUST return whether or not the Cruise Control system is active (true) or inactive (false). Depricated.  Remove in 0.14.  Use "Status"
300    */
301    attribute Boolean Activated readonly
302
303   /*!  Speed
304    *   \brief  MUST return target Cruise Control speed in kilometers per hour (kph).
305    */
306    attribute UInt16 Speed readonly
307
308   /*!  Status
309    *   \brief  MUST return whether or not the Cruise Control system is active (true) or inactive (false).
310    */
311    attribute Boolean Status readonly
312 }
313
314 /*!
315  * Deprecated.  Use BrakeOperation.  Remove in 0.14
316  */
317 interface org.automotive.WheelBrake extends VehiclePropertyType  {
318
319   /*!  Engaged
320    *   \brief  MUST return Wheel Brake status: Engaged = true, disengaged = false
321    */
322    attribute Boolean Engaged readonly
323 }
324
325 interface org.automotive.BrakeOperation extends VehiclePropertyType  {
326
327   /*!  BrakePedalDepressed
328    *   \brief  MUST return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed
329    */
330    attribute Boolean BrakePedalDepressed readonly
331 }
332
333 interface org.automotive.LightStatus extends VehiclePropertyType  {
334
335   /*!  Head
336    *   \brief  MUST return headlight status: on = true, off = false.
337    */
338    attribute Boolean Head
339
340   /*!  RightTurn
341    *   \brief  MUST return right turn signal status: on = true, off = false.
342    */
343    attribute Boolean RightTurn
344
345   /*!  LeftTurn
346    *   \brief  MUST return left turn signal status: on = true, off = false.
347    */
348    attribute Boolean LeftTurn
349
350   /*!  Brake
351    *   \brief  MUST return  brake signal light status: on = true, off = false.
352    */
353    attribute Boolean Brake
354
355   /*!  Fog
356    *   \brief  MUST return fog light status: on = true, off = false.
357    */
358    attribute Boolean Fog
359
360   /*!  Hazard
361    *   \brief  MUST return hazard light status: on = true, off = false.
362    */
363    attribute Boolean Hazard
364
365   /*!  Parking
366    *   \brief  MUST return parking light status: on = true, off = false.
367    */
368    attribute Boolean Parking
369
370   /*!  HighBeam
371    *   \brief  MUST return high beam status: on = true, off = false.
372    */
373    attribute Boolean HighBeam
374
375   /*!  AutomaticHeadlights
376    *   \brief  MUST return automatic headlight status: on = true, off = false.
377    */
378   attribute Boolean AutomaticHeadlights
379
380   /*!  DynamicHighBeam
381    *   \brief  MUST return dynamic high beam status: on = true, off = false.
382    */
383   attribute Boolean DynamicHighBeam
384 }
385
386
387 interface org.automotive.InteriorLightStatus extends VehiclePropertyType  {
388
389   /*!  Passenger
390    *   \brief  MUST return passenger interior light status: on = true, off = false. Deprecated.  Remove in 0.14.   Use status and zone.
391    */
392    attribute Boolean Passenger readonly
393
394   /*!  Driver
395    *   \brief  MUST return driver interior light status: on = true, off = false. Deprecated.  Remove in 0.14.   Use status and zone.
396    */
397    attribute Boolean Driver readonly
398
399   /*!  Center
400    *   \brief  MUST return center interior light status: on = true, off = false. Deprecated.  Remove in 0.14.   Use status and zone.
401    */
402    attribute Boolean Center readonly
403
404   /*!  Status
405    *   \brief  MUST return interior light status for the zone. on = true, off = false
406    */
407     attribute Boolean Status
408 }
409
410
411 interface org.automotive.Horn extends VehiclePropertyType  {
412
413   /*!  On
414    *   \brief  MUST return horn status: on = true, off = false
415    */
416    attribute Boolean On readonly
417 }
418
419
420 interface org.automotive.Fuel extends VehiclePropertyType  {
421
422   /*!  Level
423    *   \brief  MUST return fuel level as a percentage of fullness.
424    */
425    attribute UInt16 Level readonly
426
427   /*!  Range
428    *   \brief  MUST return estimated fuel range in meters.
429    */
430    attribute UInt32 Range readonly
431
432   /*!  InstantConsumption
433    *   \brief  MUST return instant fuel consumption in per distance travelled (Unit: milliliters per 100 kilometers).
434    */
435    attribute UInt32 InstantConsumption readonly
436
437   /*!  InstantEconomy
438    *   \brief  MUST return instant fuel 'economy' in kilometers per liter of fuel.
439    */
440    attribute UInt16 InstantEconomy readonly
441
442   /*!  AverageEconomy
443    *   \brief  MUST return average fuel 'economy' in kilometers per liter of fuel since last reset.  Setting this to any value should reset the counter to '0'
444    */
445    attribute UInt16 AverageEconomy
446
447   /*!  AverageConsumption
448    *   \brief  MUST return average fuel consumption in per distance travelled (Unit: milliliters per 100 kilometers). Setting this to any value should reset the counter to '0'
449    */
450    attribute UInt32 AverageConsumption
451
452   /*!  FuelConsumedSinceRestart
453    *   \brief MUST return fuel consumed since engine start  (Unit: milliliters per 100 kilometers) resets to 0 each restart
454    */
455    attribute UInt32 FuelConsumedSinceRestart readonly
456
457   /*!  TimeSinceRestart
458    *   \brief MUST  return time elapsed since vehicle restart (Unit: seconds)
459    */
460    attribute UInt32 TimeSinceRestart readonly
461 }
462
463
464 interface org.automotive.EngineOil extends VehiclePropertyType  {
465
466   /*!  Remaining
467    *   \brief MUST return remaining engine oil as percentage of fullness.  Deprecated.  Remove in 0.14.  Use "Level"
468    */
469    attribute UInt16 Remaining readonly
470
471   /*!  Temperature
472    *   \brief MUST return Engine Oil Temperature in Celcius.
473    */
474    attribute long Temperature readonly
475
476   /*!  Pressure
477    *   \brief MUST return Engine Oil Pressure in kPa.
478    */
479    attribute UInt16 Pressure readonly
480
481   /*!  Level
482    *   \brief MUST return engine oil level (Unit: percentage, 0%: empty, 100%: full
483    */
484    attribute UInt16 Level readonly
485
486   /*!  Change
487    *   \brief MUST return engine oil change indicator status: change oil (true) or no change (false)
488    */
489    attribute boolean Change readonly
490
491   /*!  LifeRemaining
492    *   \brief MUST return engine oil change indicator status: change oil (true) or no change (false)
493    */
494    attribute boolean LifeRemaining readonly
495
496 }
497
498
499 interface org.automotive.Location extends VehiclePropertyType  {
500
501   /*!  Latitude
502    *   \brief  MUST return latitude in Deg.Min (-180, +180)
503    */
504    attribute Double Latitude readonly
505
506   /*!  Longitude
507    *   \brief  MUST return longitude in Deg.Min (-90, +90)
508    */
509    attribute Double Longitude readonly
510
511   /*!  Altitude
512    *   \brief  MUST return altitude in meters above sea-level (0).
513    */
514    attribute Double Altitude readonly
515
516   /*!  Direction
517    *   \brief  MUST return direction in Degrees  (0-360)
518    */
519    attribute UInt16 Direction readonly
520 }
521
522
523 interface org.automotive.ExteriorBrightness extends VehiclePropertyType  {
524
525   /*!  ExteriorBrightness
526    *   \brief MUST return the brightness outside the vehicle in lux.
527    */
528    attribute UInt16 ExteriorBrightness readonly
529 }
530
531
532 interface org.automotive.Temperature extends VehiclePropertyType  {
533
534   /*!  Interior
535    *   \brief MUST return the temperature of the interior of the vehicle in celcius.
536    */
537    /// Deprecated.  Use InteriorTemperature.  Remove in 0.14
538    attribute signed short Interior readonly
539
540   /*!  Exterior
541    *   \brief MUST return the temperature of the exterior of the vehicle in celcius.
542    */
543    /// Deprecated.  Use ExteriorTemperature.  Remove in 0.14
544    attribute signed short Exterior readonly
545
546   /*!  Interior
547    *   \brief MUST return the temperature of the interior of the vehicle in celcius.
548    */
549    attribute signed short InteriorTemperature readonly
550
551   /*!  Exterior
552    *   \brief MUST return the temperature of the exterior of the vehicle in celcius.
553    */
554    attribute signed short ExteriorTemperature readonly
555 }
556
557
558 interface org.automotive.RainSensor extends VehiclePropertyType  {
559
560   /*!  RainSensor
561    *   \brief MUST return level of rain intensity 0: No Rain - 10: Heaviest Rain.
562    *   Deprecated in 0.14.  Use rainIntensity
563    */
564    attribute UInt16 RainSensor readonly
565
566   /*!  RainIntensity
567    *   \brief MUST return level of rain intensity 0: No Rain - 10: Heaviest Rain.
568    */
569    attribute UInt16 RainIntensity readonly
570 }
571
572
573 /// TODO: Depricated in 0.14  Use WiperStatus
574 interface org.automotive.WindshieldWiper extends VehiclePropertyType  {
575
576   /*!  WindshieldWiper
577    *   \brief MUST return Level of windshield whiper speed (0-10)
578    */
579    attribute UInt16 WindshieldWiper readonly
580
581 }
582
583 enumeration WiperControl {
584   off = "off",
585   once = "once",
586   slowest = "slowest",
587   slow = "slow",
588   middle = "middle",
589   fast = "fast",
590   fastest = "fastest",
591   auto = "auto"
592 }
593
594 interface org.automotive.WiperStatus extends VehiclePropertyType  {
595
596   /*!  WiperSpeed
597    *   \brief MUST return current speed interval of wiping windshield
598    */
599    attribute WiperControl WiperSpeed readonly
600
601   /*!  WiperSetting
602    *   \brief MUST return current setting of the front wiper controller. It can be used to send user's request for changing setting.
603    */
604    attribute WiperControl WiperSetting
605 }
606
607 /*! Deprecated.  Use ClimateControl interface.  Remove in 0.14
608 */
609 interface org.automotive.HVAC extends VehiclePropertyType  {
610   const UInt16 AIRFLOWDIRECTION_FRONTPANEL = 0
611   const UInt16 AIRFLOWDIRECTION_FLOORDUCT= 1
612   const UInt16 AIRFLOWDIRECTION_FRONT = 0x02
613   const UInt16 AIRFLOWDIRECTION_DEFROSTER = 0x04
614
615   /*!  AirflowDirection
616    *   \brief MUST return airflow direction.  See
617    */
618   attribute UInt16 AirflowDirection
619
620   /*!  FanSpeed
621    *   \brief MUST return speed of the fan (0-7)
622    */
623   attribute UInt16 FanSpeed
624
625   /*!  TargetTemperature
626    *   \brief MUST return target desired temperature in celcius.
627    */
628   attribute UInt16 TargetTemperature
629
630   /*!  AirConditioning
631    *   \brief MUST return air conditioning on (true) / off (false).
632    */
633   attribute Boolean AirConditioning
634
635   /*!  AirRecirculation
636    *   \brief MUST return air recirculation on (true) / off (false).
637    */
638   attribute Boolean AirRecirculation
639
640   /*!  Heater
641    *   \brief MUST return heater on (true) / off (false).
642    */
643   attribute Boolean Heater
644
645   /*!  SteeringWheelHeater
646    *   \brief MUST return air recirculation on (true) / off (false).
647    */
648   attribute Boolean SteeringWheelHeater
649
650   /*!  SeatHeater
651    *   \brief MUST return seat heater status: 0-100%.
652    */
653   attribute UInt16 SeatHeater
654
655   /*!  SeatCooler
656    *   \brief MUST return seat heater status: on (true) / off (false).
657    */
658   attribute Boolean SeatCooler
659 }
660
661 enumeration AirflowDirectionType
662 {
663   frontpanel = "frontpanel",
664   floorduct = "floorduct",
665   bilevel = "bilevel",
666   defrostfloor = "defrostfloor"
667 }
668
669 interface org.automotive.ClimateControl extends VehiclePropertyType  {
670   /*!  AirflowDirection
671   *   \brief MUST return current status of the direction of the air flow through the ventilation system
672   */
673   attribute AirflowDirectionType AirflowDirection
674
675   /*!  FanSpeedLevel
676   *   \brief MUST return seat heater status: on (true) / off (false).
677   */
678   attribute UInt8 FanSpeedLevel
679
680   /*!  TargetTemperature
681   *   \brief MUST return current setting of the desired temperature (Unit: celsius)
682   */
683   attribute Int8 TargetTemperature
684
685   /*!  AirConditioning
686   *   \brief MUST return current status of the air conditioning system: on (true) or off (false)
687   */
688   attribute Boolean AirConditioning
689
690   /*!  Heater
691   *   \brief MUST return current status of the heating system: on (true) or off (false)
692   */
693   attribute Boolean Heater
694
695   /*!  SeatHeater
696   *   \brief MUST return current status of the seat warmer ( 0: off, 1: least warm, 10: warmest )
697   */
698   attribute UInt8 SeatHeater
699
700   /*!  SeatCooler
701   *   \brief MUST return current status of the seat ventilation ( 0: off, 1: least warm, 10: warmest )
702   */
703   attribute UInt8 SeatCooler
704
705   /*!  AirRecirculation
706   *   \brief MUST return current setting of air recirculation: on (true) or pulling in outside air (false).
707   */
708   attribute Boolean AirRecirculation
709
710   /*!  SteeringWheelHeater
711   *   \brief MUST return current status of steering wheel heater ( 0: off, 1: least warm, 10: warmest ).
712   */
713   attribute UInt8 SteeringWheelHeater
714 }
715
716 /// Deprecated in 0.14.  Use SideWindow
717 interface org.automotive.WindowStatus extends VehiclePropertyType  {
718
719   /*!  Openness
720    *   \brief MUST return window openness percentage (100% fully open, 0% fully closed)
721    *  for the window location see "zone" attribute
722    */
723   attribute UInt16 Openness
724
725   /*!  Defrost
726    *   \brief MUST return the defroster status of the window. On = true, Off = false.
727    *   Deprecated.  Use Defrost interface.  Remove in 0.14.
728    */
729   attribute Boolean Defrost
730 }
731
732 interface org.automotive.SideWindow extends VehiclePropertyType  {
733
734   /*!  Openness
735    *   \brief MUST return window openness percentage (100% fully open, 0% fully closed)
736    */
737   attribute UInt16 Openness
738
739   /*! Lock
740    * \brief MUST return whether or not the window is locked (true) or unlocked (false)
741    */
742   attribute Boolean Lock
743 }
744
745 interface org.automotive.Defrost extends VehiclePropertyType  {
746
747   /*! DefrostWindow
748    *  \brief MUST return current status of the defrost switch for mirrors. It can be
749    *  used to send user's request for changing setting.
750    */
751   attribute Boolean DefrostWindow
752
753   /*! DefrostMirrors
754    *  \brief MUST return current status of the defrost switch for window. It can be
755    *  used to send user's request for changing setting.
756    */
757   attribute Boolean DefrostMirrors
758 }
759
760 interface org.automotive.Sunroof extends VehiclePropertyType  {
761
762   /*!  Openness
763    *   \brief MUST return window status for sunroof openness percentage.
764    */
765   attribute UInt16 Openness
766
767   /*!  Tilt
768    *   \brief MUST return tilt status for sunroof percentage.
769    */
770   attribute UInt16 Tilt
771 }
772
773
774 enumeration ConvertibleRoofStatus {
775     closed = "closed",
776     closing = "closing",
777     opening = "opening",
778     opened = "opened"
779 }
780
781 interface org.automotive.ConvertibleRoof extends VehiclePropertyType  {
782   /*!  Status
783    *   \brief MUST return current status of Convertible Roof.
784    *
785    */
786    attribute ConvertibleRoofStatus Status readonly
787
788   /*!  Setting
789    *   \brief MUST return current setting of Convertible Roof.  This is used to open (true) and close (false).
790    *
791    */
792    attribute Boolean Setting
793 }
794
795
796 interface org.automotive.VehicleId extends VehiclePropertyType  {
797
798   /*!  WMI
799    *   \brief MUST return World Manufacturer Identifier (WMI)
800    *   WMI is defined by SAE ISO 3780:2009.  3 characters.
801    */
802    attribute String WMI readonly
803
804   /*!  VIN
805    *   \brief MUST return Vehicle Identification Number (VIN) as defined by ISO 3779. 17 characters.
806    */
807    attribute String VIN readonly
808 }
809
810
811 interface org.automotive.Size extends VehiclePropertyType  {
812
813   /*!  Width
814    *   \brief MUST return width of vehicle in mm
815    */
816    attribute UInt16 Width readonly
817
818   /*!  Height
819    *   \brief MUST return height of vehicle in mm
820    */
821    attribute UInt16 Height readonly
822
823   /*!  Length
824    *   \brief MUST return length of vehicle in mm
825    */
826    attribute UInt16 Length readonly
827 }
828
829
830 interface org.automotive.FuelInfo extends VehiclePropertyType  {
831   const UInt16 FUELTYPE_GASOLINE = 0
832   const UInt16 FUELTYPE_HIGH_OCTANE= 1
833   const UInt16 FUELTYPE_DIESEL = 2
834   const UInt16 FUELTYPE_ELECTRIC = 3
835   const UInt16 FUELTYPE_HYDROGEN = 4
836   const UInt16 REFUELPOSITION_LEFT = 0
837   const UInt16 REFUELPOSITION_RIGHT= 1
838   const UInt16 REFUELPOSITION_FRONT = 2
839   const UInt16 REFUELPOSITION_REAR = 3
840
841   /*!  Type
842    *   \brief MUST return type of fuel.  integer 0-4 (see
843    */
844    attribute UInt16 Type readonly
845
846   /*!  RefuelPosition
847    *   \brief MUST return position of refuling (see
848    */
849    attribute UInt16 RefuelPosition readonly
850 }
851
852
853 interface org.automotive.VehicleType extends VehiclePropertyType  {
854   const UInt16 VEHICLETYPE_SEDAN = 0
855   const UInt16 VEHICLETYPE_COUPE= 1
856   const UInt16 VEHICLETYPE_CABRIOLE = 2
857   const UInt16 VEHICLETYPE_ROADSTER = 3
858   const UInt16 VEHICLETYPE_SUV = 4
859   const UInt16 VEHICLETYPE_TRUCK = 5
860
861   /*!  Type
862    *   \brief MUST return type of Vehicle.  Integer 0-5 (see
863    */
864    attribute UInt16 Type readonly
865 }
866
867
868 interface org.automotive.Doors extends VehiclePropertyType  {
869
870   /*!  DoorsPerRow
871    *   \brief MUST return Number of doors in each row.  The index represents the row.  Position '0'
872    *   represents the first row, '1' the second row etc.
873    *   Example a common mini-van may have Doors[0] = 2 doors,
874    *   Doors[1] = 1 (side door), Doors[2] = 1 (trunk).
875    */
876    attribute array DoorsPerRow of UInt16 readonly
877 }
878
879
880 interface org.automotive.WheelInformation extends VehiclePropertyType  {
881
882   /*!  FrontWheelRadius
883    *   \brief MUST return Radius of Front Wheel(s) in mm.
884    */
885    attribute UInt16 FrontWheelRadius readonly
886
887   /*!  RearWheelRadius
888    *   \brief MUST return Radius of Rear Wheel(s) in mm.
889    */
890    attribute UInt16 RearWheelRadius readonly
891
892   /*!  WheelTrack
893    *   \brief MUST return Wheel Track in mm.
894    */
895    attribute UInt16 WheelTrack readonly
896
897   /*!  ABS
898    *   \brief MUST return Antilock Brake System status: on = true, off = false.
899    */
900    attribute Boolean ABS readonly
901 }
902
903
904 interface org.automotive.Odometer extends VehiclePropertyType  {
905
906   /*!  Odometer
907    *   \brief MUST return Distance traveled in km
908    */
909    /// Deprecated. Use DistanceTotal.  Remove in 0.14
910    attribute UInt32 Odometer readonly
911
912   /*!  DistnaceTotal
913    *   \brief MUST return Distance traveled in m
914    */
915    attribute UInt32 DistanceTotal readonly
916
917   /*!  DistanceSinceStart
918    *   \brief MUST return Distance traveled since start in m
919    */
920    attribute UInt32 DistanceSinceStart readonly
921
922 }
923
924 interface org.automotive.Fluid extends VehiclePropertyType  {
925
926   /*!  Transmission
927    *   \brief MUST return Transmission fluid level percentage. 0-100.
928    */
929    attribute UInt16 Transmission readonly
930
931   /*!  Brake
932    *   \brief MUST return Brake fluid level percentage. 0-100.
933    *   TODO: Deprecated.  use BrakeMaintenance::FluidLevel  Remove in 0.14
934    */
935    attribute UInt16 Brake readonly
936
937   /*!  Washer
938    *   \brief MUST return Washer fluid level percentage. 0-100.
939    *   TODO: Deprecated. use WasherFluid::Level.  Remove in 0.14
940    */
941    attribute UInt16 Washer readonly
942 }
943
944 ///TODO: Deprecated.  Use BatteryStatus.  Remove in 0.14
945 interface org.automotive.Battery extends VehiclePropertyType  {
946
947   /*!  Voltage
948    *   \brief MUST return battery voltage.
949    */
950    attribute Double Voltage readonly
951
952   /*!  Current
953    *   \brief MUST return battery current in Amperes
954    */
955    attribute Double Current readonly
956 }
957
958 interface org.automotive.BatteryStatus extends VehiclePropertyType  {
959
960   /*!  Voltage
961    *   \brief MUST return battery voltage.
962    */
963    attribute UInt8 Voltage readonly
964
965   /*!  Current
966    *   \brief MUST return battery current in Amperes
967    */
968    attribute UInt8 Current readonly
969
970   /*!  ChargeLevel
971    *   \brief MUST return battery charge level (Unit: percentage, 0%: empty, 100%: full).
972    */
973    attribute UInt8 ChargeLevel readonly
974 }
975
976
977 interface org.automotive.Tire extends VehiclePropertyType  {
978
979   /*!  Pressure
980    *   \brief MUST return tire pressure in kPa.
981    */
982    attribute UInt16 Pressure readonly
983
984   /*!  Temperature
985    *   \brief MUST return left front tire temperature in Celcius.
986    */
987    attribute Int16 Temperature readonly
988
989   /*!  Temperature
990    *   \brief MUST return true if any tire pressure is low: pressure low (true), pressure not low (false).
991    */
992    attribute Boolean PressureLow readonly
993 }
994
995
996 interface org.automotive.SecurityAlert extends VehiclePropertyType  {
997
998   /*!  SecurityAlert
999    *   \brief MUST return
1000    */
1001    attribute Boolean SecurityAlert readonly
1002 }
1003
1004 interface org.automotive.ParkingBrake extends VehiclePropertyType  {
1005
1006   /*!  ParkingBrake
1007    *   MUST return status of parking brake:  Engaged = true, Disengaged = false.
1008    TODO: Deprecated in 0.14.  Use Status
1009    */
1010    attribute Boolean ParkingBrake readonly
1011
1012   /*!
1013   * \brief MUST return the current status of parking brake.
1014   */
1015   attribute ParkingBrakeStatus Status
1016 }
1017
1018 /// Deprecated.  Use LightStatus.  remove in 0.14
1019 interface org.automotive.ParkingLight extends VehiclePropertyType  {
1020
1021   /*!  ParkingLight
1022    *   MUST return status of parking light:  Engaged = true, Disengaged = false.
1023    */
1024    attribute Boolean ParkingLight readonly
1025 }
1026
1027 /// Deprecated.  Use LightStatus.  remove in 0.14
1028 interface org.automotive.HazardLight extends VehiclePropertyType  {
1029
1030   /*!  HazardLight
1031    *   MUST return status of hazard light:  Engaged = true, Disengaged = false.
1032    */
1033    attribute Boolean HazardLight readonly
1034 }
1035
1036
1037 interface org.automotive.AntilockBrakingSystem extends VehiclePropertyType  {
1038
1039   /*!  AntilockBrakingSystem
1040    *   \brief MUST return whether Antilock Braking System is Idle (false) or Engaged (true)
1041    *   TODO: Deprecated.  Use Engaged.  Remove in 0.14
1042    */
1043    attribute Boolean AntilockBrakingSystem readonly
1044
1045   /*!
1046   * \brief MUST return whether or not the ABS Setting is enabled: enabled (true) or disabled (false)
1047   */
1048   attribute Boolean Enabled readonly
1049
1050   /*!
1051   * \brief MUST return whether or not the ABS is engaged: engaged (true) or idle (false)
1052   */
1053   attribute Boolean Engaged readonly
1054 }
1055
1056
1057 interface org.automotive.TractionControlSystem extends VehiclePropertyType  {
1058
1059   /*!  TractionControlSystem
1060    *   \brief MUST return whether Traction Control System is Off (false) or On (true)
1061    * TODO: Deprecated.  Use Engaged.  Remove in 0.14
1062    */
1063    attribute Boolean TractionControlSystem readonly
1064
1065   /*!
1066   * \brief MUST return whether or not the TCS Setting is enabled: enabled (true) or disabled (false)
1067   */
1068   attribute Boolean Enabled readonly
1069
1070   /*!
1071   * \brief MUST return whether or not the TCS is engaged: engaged (true) or idle (false)
1072   */
1073   attribute Boolean Engaged readonly
1074 }
1075
1076
1077 interface org.automotive.VehicleTopSpeedLimit extends VehiclePropertyType  {
1078
1079   /*!  VehicleTopSpeedLimit
1080    *   \brief MUST return top rated speed in km/h. 0 = no limit
1081    */
1082    attribute UInt16 VehicleTopSpeedLimit readonly
1083 }
1084
1085
1086 interface org.automotive.AirbagStatus extends VehiclePropertyType  {
1087
1088   /*!  AirbagStatus
1089    *   \brief MUST return Airbag status (byte) (see AIRBAGSTATUS_*)
1090    *  TODO: deprecated.  Remove in 0.14
1091    */
1092    attribute UInt16 AirbagStatus readonly
1093
1094   /*!
1095   * \brief MUST return whether or not the airbag is activaged: activated (true) or deactivated (false)
1096   */
1097   attribute Boolean Activated readonly
1098
1099   /*!
1100   * \brief MUST return whether the airbag is deployed: deployed (true) or not (false)
1101   */
1102   attribute Boolean Deployed readonly
1103 }
1104
1105 /// TODO: deprecated. Remove in 0.14
1106 enumeration AirbagStatus {
1107   inactive = 0,
1108   active = 1,
1109   deployed = 2
1110 }
1111
1112 /*!
1113  * Deprecated.  Use "Door".  Remove in 0.14
1114  */
1115 interface org.automotive.DoorStatus extends VehiclePropertyType  {
1116
1117   /*!  DoorStatus
1118    *   \brief MUST return Door status (byte).
1119    * CLOSED = 0
1120    * OPEN = 1
1121    * AJAR = 2
1122    */
1123    attribute UInt16 DoorStatus readonly
1124
1125   /*!  DoorLockStatus
1126    *   \brief MUST return Door status (bool locked = true, unlocked = false).
1127    */
1128   attribute Boolean DoorLockStatus
1129
1130   /*!  ChildLockStatus
1131    *   \brief MUST return Child lock status of rear doors.  active = true, inactive = false.
1132    *   Setting this to 'true' will prevent the rear doors from being opened
1133    *   from the inside.
1134    */
1135    ///TODO: Deprecated in 0.14.  Use org.automotive.ChildLockStatus
1136   attribute Boolean ChildLockStatus
1137 }
1138
1139 enumeration DoorStatus {
1140   open = "open",
1141   ajar = "ajar",
1142   closed = "closed"
1143 }
1144
1145 interface org.automotive.Door extends VehiclePropertyType  {
1146
1147   /*!  Status
1148    *   \brief MUST return Door status (byte).  See DOORSTATUS_*
1149    */
1150    attribute DoorStatus Status readonly
1151
1152   /*!  Lock
1153    *   \brief MUST return Door status (bool locked = true, unlocked = false).
1154    */
1155   attribute Boolean Lock
1156
1157   /*!  ChildLock
1158    *   \brief MUST return Child lock status of rear doors.  active = true, inactive = false.
1159    *   Setting this to 'true' will prevent the rear doors from being opened
1160    *   from the inside.
1161    */
1162   attribute Boolean ChildLock
1163 }
1164
1165 ///TODO: Deprecated in 0.14.  Use org.automotive.Seat
1166 interface org.automotive.SeatBelt extends VehiclePropertyType  {
1167
1168   /*! Status
1169    *  \brief MUST return Seat Belt Status (bool: Fasten = true, Unfastened = false)
1170    */
1171    attribute Boolean Status readonly
1172 }
1173
1174 ///TODO: Deprecated in 0.14.  Use org.automotive.Seat
1175 interface org.automotive.OccupantStatus extends VehiclePropertyType  {
1176
1177   /*!  OccupantStatus
1178    *   \brief MUST return status of Occupant (byte, see
1179    */
1180    attribute UInt16 OccupantStatus readonly
1181 }
1182
1183
1184 interface org.automotive.ObstacleDistance extends VehiclePropertyType  {
1185
1186   /*!  ObstacleDistance
1187    *   \brief MUST return Distance Sensor distance (Double) in m.
1188    */
1189    attribute Double ObstacleDistance readonly
1190 }
1191
1192
1193 interface org.automotive.NightMode extends VehiclePropertyType {
1194
1195   /*!
1196    * \brief MUST return whether or not the system is in NightMode or not.  True = Night time, False = Day time
1197    * Deprecated.  Will be removed in 0.14. Use "Mode"
1198    */
1199    attribute Boolean NightMode readonly
1200
1201   /*!
1202    * \brief MUST return whether or not the system is in NightMode or not.  True = Night time, False = Day time
1203    */
1204    attribute Boolean Mode readonly
1205 }
1206
1207
1208 interface org.automotive.DrivingMode extends VehiclePropertyType {
1209
1210   /*!
1211   * \brief MUST return whether or not the system is in DrivingMode or not.  1 = Driving, 0 = Not Driving
1212   */
1213    attribute UInt16 DrivingMode readonly
1214
1215   /*!
1216   * \brief MUST return true if vehicle is in driving mode
1217   */
1218    attribute Boolean Mode readonly
1219 }
1220
1221
1222 interface org.automotive.KeyId extends VehiclePropertyType {
1223
1224   /*!
1225   * \brief MUST return
1226   */
1227    attribute String KeyId readonly
1228 }
1229
1230 interface org.automotive.Language extends VehiclePropertyType {
1231
1232   /*!
1233   * \brief MUST return
1234   */
1235    attribute String Language readonly
1236 }
1237
1238
1239 interface org.automotive.MeasurementSystem extends VehiclePropertyType {
1240
1241   /*!
1242   * \brief MUST return 0 = Metric, 1 = ImperialUS, 2 = ImperialUK
1243   */
1244    attribute UInt16 MeasurementSystem readonly
1245 }
1246
1247
1248 ///TODO Deprecated.  Use org.automotive.Mirror.  Remove in 0.14
1249 interface org.automotive.MirrorSetting extends VehiclePropertyType {
1250
1251   /*!
1252   * \brief MUST return
1253   */
1254    attribute UInt8 Pan readonly
1255    attribute UInt8 Tilt readonly
1256 }
1257
1258
1259 ///TODO Deprecated.  Use org.automotive.SeadAdjustment.  Remove in 0.14
1260 interface org.automotive.SeatPosition extends VehiclePropertyType {
1261
1262   /*!
1263   * \brief MUST return
1264   */
1265    attribute UInt16 Recline readonly
1266
1267     /*!
1268   * \brief MUST return
1269   */
1270    attribute UInt16 Slide readonly
1271
1272   /*!
1273   * \brief MUST return
1274   */
1275    attribute UInt16 CushionHeight readonly
1276
1277   /*!
1278   * \brief MUST return
1279   */
1280    attribute UInt16 Headrest readonly
1281
1282   /*!
1283   * \brief MUST return
1284   */
1285    attribute UInt16 BackCushion readonly
1286
1287   /*!
1288   * \brief MUST return
1289   */
1290    attribute UInt16 SideCushion readonly
1291 }
1292
1293
1294 interface org.automotive.SteeringWheelPosition extends VehiclePropertyType {
1295
1296   /*!
1297   * \brief MUST return
1298   */
1299    attribute UInt16 Tilt readonly
1300
1301   /*!
1302   * \brief MUST return
1303   */
1304    attribute UInt16 Slide readonly
1305 }
1306
1307
1308 interface org.automotive.DashboardIllumination extends VehiclePropertyType {
1309
1310   /*!
1311   * \brief MUST return
1312   */
1313    attribute UInt16 DashboardIllumination readonly
1314 }
1315
1316 ///TODO Deprecated.  Use org.automotive.VehicleSound. Remove in 0.14
1317 interface org.automotive.GeneratedVehicleSoundMode extends VehiclePropertyType {
1318
1319   /*!
1320   * \brief MUST return Sound Mode: 0 = Normal, 1 = Quiet, 2 = Sportive
1321   */
1322    attribute UInt16 GeneratedVehicleSoundMode readonly
1323 }
1324
1325
1326 /*! SteeringWheelAngle
1327  *\brief
1328  * Deprecated.  Use SteeringWheel
1329  */
1330 interface org.automotive.SteeringWheelAngle extends VehiclePropertyType {
1331
1332   /*!
1333   * \brief MUST return angle of the steering wheel. 0-359 degrees.
1334   */
1335    attribute UInt16 SteeringWheelAngle readonly
1336 }
1337
1338 interface org.automotive.SteeringWheel extends VehiclePropertyType {
1339
1340   /*!
1341   * \brief MUST return angle of steering wheel off centerline (Unit: degrees -:degrees to the left, +:degrees to the right)
1342   */
1343    attribute Int16 Angle readonly
1344 }
1345
1346 interface org.automotive.DriverId extends VehiclePropertyType {
1347
1348   /*!
1349   * \brief MUST return driver ID.  Driver Id is an abstract and can be determined
1350   * from multiple sources including bluetooth, key, key fob, etc.
1351   */
1352    attribute String DriverId readonly
1353 }
1354
1355 interface org.automotive.ThrottlePosition extends VehiclePropertyType {
1356
1357   /*!
1358   * \brief MUST return throttle position as a percentage (Unit: percentage, 0%: closed, 100%: fully open)
1359   */
1360    attribute Uint8 Value readonly
1361 }
1362
1363 interface org.automotive.EngineCoolant extends VehiclePropertyType {
1364
1365   /*!
1366   * \brief MUST return engine coolant level (Unit: percentage 0%: empty, 100%: full)
1367   */
1368    attribute Uint16 Level readonly
1369
1370   /*!
1371   * \brief MUST return engine coolant temperature (Unit: celcius)
1372   */
1373    attribute Int16 Temperature readonly
1374 }
1375
1376 interface org.automotive.PowertrainTorque extends VehiclePropertyType {
1377
1378   /*!
1379    * \brief MUST return powertrain torque (Unit: newton meters)
1380    */
1381    attribute UInt16 Value readonly
1382 }
1383
1384 interface org.automotive.AcceleratorPedalPosition extends VehiclePropertyType {
1385
1386   /*!
1387    * \brief MUST  return accelerator pedal position as a percentage (Unit: percentage, 0%: released pedal, 100%: fully depressed)
1388    */
1389    attribute UInt8 Value readonly
1390 }
1391
1392 interface org.automotive.WheelTick extends VehiclePropertyType {
1393
1394   /*!
1395    * \brief MUST return number of ticks per second (Unit: ticks per second)
1396    */
1397    attribute UInt8 Value readonly
1398 }
1399
1400 interface IgnitionTime : VehicleCommonDataType {
1401    /*!
1402     * \brief MUST return time at ignition on
1403     */
1404     attribute UInt64 ignitionOnTime readonly
1405
1406     /*!
1407      * \brief MUST return time at ignition off
1408      */
1409      attribute UInt64 ignitionOffTime readonly
1410 }
1411
1412 interface org.automotive.YawRate extends VehiclePropertyType {
1413
1414   /*!
1415    * \brief MUST return yaw rate of vehicle. (Unit: degrees per second)
1416    */
1417    attribute Int16 Value readonly
1418 }
1419
1420 interface org.automotive.BrakeOperation extends VehiclePropertyType {
1421
1422   /*!
1423    * \brief MUST return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed
1424    */
1425    attribute Boolean BrakePedalDepressed readonly
1426 }
1427
1428 enumeration Button {
1429     home = "home",
1430     back = "back",
1431     search = "search",
1432     call = "call",
1433     end_call = "end_call",
1434     media_play = "media_play",
1435     media_next = "media_next",
1436     media_previous = "media_previous",
1437     media_pause = "media_pause",
1438     voice_recognize = "voice_recognize",
1439     enter = "enter",
1440     left = "left",
1441     right = "right",
1442     up = "up",
1443     down = "down"
1444 }
1445
1446 enumeration ButtonEventType {
1447     press = "press",
1448     long_press = "long_press",
1449     release = "release"
1450 }
1451
1452 interface VehicleButton {
1453     /*!
1454     * \brief MUST return the button corresponding to the event.
1455     */
1456         attribute Button button readonly
1457
1458     /*!
1459     * \brief MUST return the type of event
1460     */
1461         attribute ButtonEventType state readonly
1462 }
1463
1464 interface org.automotive.ButtonEvent extends VehiclePropertyType {
1465
1466   /*!
1467    * \brief MUST return the button events that occured. This supports multiple simultanious button events.
1468    */
1469    attribute array Button of VehicleButton readonly
1470 }
1471
1472 interface org.automotive.TransmissionOil extends VehiclePropertyType {
1473
1474   /*!
1475    * \brief MUST return current temperature of the transmission oil(Unit: celsius).
1476    */
1477    attribute Int8 Temperature readonly
1478
1479   /*!
1480    * \brief MUST return transmission oil wear (Unit: percentage, 0: no wear, 100: completely worn).
1481    */
1482    attribute UInt8 Wear readonly
1483 }
1484
1485 interface org.automotive.TransmissionClutch extends VehiclePropertyType {
1486
1487   /*!
1488    * \brief MUST return transmission clutch wear (Unit: percentage, 0: no wear, 100: completely worn).
1489    */
1490    attribute UInt8 Wear readonly
1491 }
1492
1493 interface org.automotive.BrakeMaintenance extends VehiclePropertyType {
1494
1495   /*!
1496    * \brief MUST return brake pad wear (Unit: percentage, 0%: no wear, 100%: completely worn).
1497    */
1498    attribute UInt8 PadWear readonly
1499
1500   /*!
1501    * \brief MUST return brake fluid level (Unit: percentage, 0%: empty, 100%: full).
1502    */
1503    attribute UInt8 FluidLevel readonly
1504
1505   /*!
1506    * \brief MUST return true if brake fluid level: low (true), not low (false)
1507    */
1508    attribute Boolean FluidLevelLow readonly
1509
1510   /*!
1511    * \brief MUST return true if brakes are worn: worn (true), not worn (false)
1512    */
1513    attribute Boolean BrakesWorn readonly
1514 }
1515
1516 interface org.automotive.WasherFluid extends VehiclePropertyType {
1517
1518   /*!
1519    * \brief MUST return washer fluid level (Unit: percentage, 0%: empty, 100%: full).
1520    */
1521    attribute UInt8 Level readonly
1522
1523   /*!
1524    * \brief MUST return true if washer fluid level is low: low (true), not low: (false)
1525    */
1526    attribute Boolean LevelLow readonly
1527 }
1528
1529 interface org.automotive.MalfunctionIndicator extends VehiclePropertyType {
1530
1531   /*!
1532    * \brief MUST return true if washer fluid level is low: low (true), not low: (false)
1533    */
1534    attribute Boolean On readonly
1535 }
1536
1537 interface org.automotive.Diagnostic extends VehiclePropertyType {
1538
1539   /*!
1540    * \brief MUST return engine runtime (Unit: seconds)
1541    */
1542    attribute UInt32 AccumulatedEngineRuntime readonly
1543
1544    /*!
1545     * \brief MUST return distance travelled since the codes were last cleared (Unit: meters)
1546     */
1547    attribute UInt32 DistanceSinceCodeCleared readonly
1548
1549    /*!
1550     * \brief MUST return distance travelled with the malfunction indicator light on (Unit: meters)
1551     */
1552    attribute UInt32 DistanceWithMILOn readonly
1553
1554    /*!
1555     * \brief MUST return time elapsed with the malfunction indicator light on (Unit: seconds)
1556     */
1557    attribute UInt32 TimeRunMILOn readonly
1558
1559    /*!
1560     * \brief MUST return time elapsed since the trouble codes were last cleared (Unit: seconds)
1561     */
1562    attribute UInt32 TimeTroubleCodeClear readonly
1563 }
1564
1565 interface org.automotive.Mirror extends VehiclePropertyType {
1566
1567   /*!
1568    * \brief MUST return mirror pan position in percentage distance travelled, from left to right position (Unit: percentage, %0: center position, -100%: fully left, 100%: fully right)
1569    */
1570    attribute UInt8 MirrorPan
1571
1572   /*!
1573    * \brief MUST return mirror tilt position in percentage distance travelled, from downward-facing to upward-facing position (Unit: percentage, 0%:center position, -100%:fully downward, 100%:full upward)
1574    */
1575    attribute UInt8 MirrorTilt
1576 }
1577
1578 interface org.automotive.SeatAdjustment extends VehiclePropertyType {
1579
1580   /*!
1581   * \brief MUST return seat back recline position as percent to completely reclined (Unit: percentage, 0%: fully forward, 100%: fully reclined)
1582   */
1583    attribute UInt8 ReclineSeatBack
1584
1585   /*!
1586   * \brief MUST return seat slide position as percentage of distance travelled away from forwardmost position (Unit: percentage, 0%: farthest forward, 100%: farthest back)
1587   */
1588    attribute UInt8 SeatSlide
1589
1590   /*!
1591   * \brief MUST return seat cushion height position as a percentage of upward distance travelled (Unit: percentage, 0%:lowest. 100%:highest)
1592   */
1593    attribute UInt8 SeatCushionHeight
1594
1595   /*!
1596   * \brief MUST return headrest position as a percentage of upward distance travelled (Unit: percentage, 0%: lowest, 100%: highest)
1597   */
1598    attribute UInt8 SeatHeadrest
1599
1600   /*!
1601   * \brief MUST return back cushion position as a percentage of lumbar curvature (Unit: percentage, 0%: flat, 100%: maximum curvature)
1602   */
1603    attribute UInt8 SeatBackCushion
1604
1605   /*!
1606   * \brief MUST return sides of back cushion position as a percentage of curvature (Unit: percentage, 0%: flat, 100%: maximum curvature)
1607   */
1608    attribute UInt8 SeatSideCushion
1609 }
1610
1611 enumeration DriveModeType {
1612   comfort = "comfort",
1613   auto = "auto",
1614   sport = "sport",
1615   eco = "eco",
1616   manual = "manual",
1617   winter = "winter"
1618 }
1619
1620 interface org.automotive.DriveMode extends VehiclePropertyType {
1621   /*!
1622   * \brief MUST return vehicle drive mode. See http://w3c.github.io/automotive-bg/data_spec.html#idl-def-DriveModeEnum
1623   */
1624   attribute DriveModeType DriveMode
1625 }
1626
1627 interface org.automotive.DashboardIllumination extends VehiclePropertyType {
1628   /*!
1629   * \brief MUST return illumination of dashboard as a percentage (Unit: percentage, 0%: none, 100%: maximum illumination)
1630   */
1631   attribute UInt8 DashboardIllumination
1632 }
1633
1634 interface org.automotive.VehicleSound extends VehiclePropertyType {
1635   /*!
1636   * \brief MUST return active noise control status: not-activated (false), activated (true)
1637   */
1638   attribute Boolean ActiveNoiseControlMode
1639
1640   /*!
1641   * \brief MUST return active noise control status: not-activated (false), activated (true)
1642   */
1643   attribute Boolean EngineSoundEnhancementMode
1644
1645   /*!
1646   * \brief MUST return array of available sounds. See EngineSoundEnhancementMode
1647   */
1648   attribute array EngineSoundEnhancementMode of String readonly
1649 }
1650
1651 interface org.automotive.ElectronicStabilityControl extends VehiclePropertyType {
1652   /*!
1653   * \brief MUST return whether or not the ESC Setting is enabled: enabled (true) or disabled (false)
1654   */
1655   attribute Boolean Enabled readonly
1656
1657   /*!
1658   * \brief MUST return whether or not the ESC is engaged: engaged (true) or idle (false)
1659   */
1660   attribute Boolean Engaged readonly
1661 }
1662
1663 interface org.automotive.TopSpeedLimit extends VehiclePropertyType {
1664   /*!
1665   * \brief MUST return whether or not the ESC Setting is enabled: enabled (true) or disabled (false)
1666   */
1667   attribute UInt16 Speed readonly
1668 }
1669
1670 interface org.automotive.ChildSafetyLock extends VehiclePropertyType {
1671   /*!
1672   * \brief MUST return whether or not the Child Safety Lock is locked: locked (true) or unlocked (false)
1673   */
1674   attribute Boolean Lock
1675 }
1676
1677 enumeration OccupantStatus {
1678   adult = "adult",
1679   child = "child",
1680   vacant = "vacant"
1681 }
1682
1683 enumeration IdentificationTypeEnum {
1684   pin = "pin",
1685   keyfob = "keyfob",
1686   Bluetooth = "Bluetooth",
1687   NFC = "NFC",
1688   fingerprint = "fingerprint",
1689   camera = "camera",
1690   voice = "voice"
1691 }
1692
1693 interface org.automotive.Seat extends VehiclePropertyType {
1694   /*!
1695   * \brief MUST return the status of seat occupant
1696   */
1697   attribute OccupantStatus Occupant
1698
1699   /*!
1700   * \brief MUST return whether or not the seat belt is fastened: fastened (true) or unfastened (false)
1701   */
1702   attribute Boolean SeatBelt
1703
1704   /*!
1705   * \brief MUST return occupant identifier
1706   */
1707   attribute String OccupantName
1708
1709   /*!
1710   * \brief MUST return identification type
1711   */
1712   attribute IdentificationTypeEnum IdentificationType
1713 }
1714
1715 interface org.automotive.AtmosphericPressure extends VehiclePropertyType {
1716   /*!
1717   * \brief MUST return the current atmospheric pressure outside of the vehicle (Unit: hectopascal)
1718   */
1719   attribute UInt16 Pressure
1720 }
1721
1722 enumeration LaneDepartureStatus {
1723     off = "off",
1724     pause = "pause",
1725     running = "running"
1726 }
1727
1728 interface org.automotive.LaneDepartureDetection extends VehiclePropertyType {
1729   /*!
1730   * \brief MUST return current status of Lane departure warning function.
1731   */
1732   attribute LaneDepartureStatus Status readonly
1733 }
1734
1735 enumeration AlarmStatus {
1736     disarmed = "disarmed",
1737     prearmed = "prearmed",
1738     armed = "armed",
1739     alarmed = "alarmed"
1740 }
1741
1742 interface org.automotive.Alarm extends VehiclePropertyType {
1743   /*!
1744   * \brief MUST return the current status of vehicle Alarm System.
1745   */
1746   attribute AlarmStatus Status
1747 }
1748
1749 enumeration ParkingBrakeStatus {
1750     inactive = "inactive",
1751     active = "active",
1752     error = "error"
1753 }
1754
1755 interface org.automotive.ParkingBrake extends VehiclePropertyType {
1756   /*!
1757   * \brief MUST return the current status of vehicle Alarm System.
1758   */
1759   attribute ParkingBrakeStatus Status readonly
1760 }