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