Merge pull request #30 from tripzero/master
[profile/ivi/automotive-message-broker.git] / docs / amb.idl
1 /*! amb.idl
2 * /brief This document describes the DBus interfaces and data types for the
3 * Automotive Message Broker API.  The data types are intended to as-close-as-
4 * possible be compatible with the W3C vehicle <a href="https://rawgit.com/w3c/automotive-bg/master/data_spec.html>data spec</a>.
5 */
6
7 /*!
8 * Variant
9 */
10 union Variant {
11   UInt8 uint8
12   Int8 int8
13   UInt16 uint16
14   Int16 int16
15   UInt32 uint32
16   Int32 int32
17   UInt32 uin32
18   Int64 int64
19   UInt64 uint64
20   Boolean boolean
21   Float float
22   Double double
23   String string
24   ByteBuffer bytebuffer
25 }
26
27 /*!
28 * Dictionary
29 */
30 map Dictionary {
31   String to Variant
32 }
33
34 /*!
35 * VehiclePropertyType
36 * \brief VehiclePropertyType is the base class for all Data types.
37 */
38 interface VehiclePropertyType {
39
40   /*!
41   * \brief time stamp marking the last time a property in the interface updated
42   */
43   attribute Double Time readonly
44
45   /*!
46   * \brief Zone in which the interface is situated.
47   */
48   attribute Zone Zone readonly
49
50   /*!
51   * \brief returns dictionary of objectName and values for data between
52   * 'beginTime' and 'endTime'
53   * \arg beginTime time stamp in Seconds since Unix Epoc
54   * \arg endTime time stamp in Seconds since Unix Epoc
55   */
56   method GetHistory(Double beginTime, Double endTime) {
57     out{ Dictionary result}
58   }
59 }
60
61 enumeration Zone {
62   None = 0,
63   Front = 1,
64   Middle = 1 << 1,
65   Right = 1 << 2,
66   Left = 1 << 3,
67   Rear = 1 << 4,
68   Center = 1 << 5
69 }
70
71 /*! org.automotive.Manager
72  * \brief Manager is a helper interface for discovering and finding available objects
73  * Manager is a helper interface that helps inform of supported data types and find
74  * specified data type objects' path on DBus
75  * DBus Path: /
76  */
77 interface org.automotive.Manager  {
78
79   /*! List
80    *  \brief returns supported properties
81   */
82   method List {
83     out { String[] }
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    *  \returns list of object paths that provide the given object Name.
97   */
98   method FindObject {
99     in {
100       String objectName
101     }
102     out {
103       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 returns 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    *  \returns string representing the DBus Object path.  Possible errors:
114    * "org.automotive.Manager.InvalidZone"
115    * "org.automotive.Manager.ObjectNotFound"
116   */
117   method FindObjectForZone {
118     in {
119       String objectName
120       Zone zone
121     }
122     out {
123       String objectPath
124     }
125   }
126
127   /*!
128    * ZonesForObjectName
129    *  \brief get a list of zones for a given objectName.
130    *  \arg String objectName object name.
131    *  \returns list of zones for the given objectName (@see Zone)
132   */
133   method ZonesForObjectName {
134     in {
135       String objectName
136     }
137     out {
138       UInt32[] zones
139     }
140   }
141
142 }
143
144 /*! org.automotive.VehicleSpeed
145  \brief contains information about VehicleSpeed
146  DBus Path: variable
147 */
148 interface org.automotive.VehicleSpeed extends VehiclePropertyType  {
149
150   /*!  Speed
151    *   \brief  Must return Vehicle Speed in kilometers per hour.
152    */
153   attribute UInt16 Speed readonly
154 }
155
156 /*! org.automotive.EngineSpeed
157  \brief contains information about EngineSpeed
158  DBus Path: variable
159 */
160 interface org.automotive.EngineSpeed extends VehiclePropertyType  {
161
162   /*!  EngineSpeed
163    *   \brief  Must return Engine Speed in rotations per minute.
164    */
165    attribute UInt16 Speed readonly
166 }
167
168 enumeration PowerMode {
169   Off = 0
170   Accessory1 = 1
171   Accessory2 = 2
172   Run = 3
173 }
174
175 interface org.automotive.VehiclePowerMode extends VehiclePropertyType  {
176
177   /*!  VehiclePowerMode
178    *   \brief  Must return vehicle power mode
179    */
180   attribute PowerMode VehiclePowerMode readonly
181 }
182
183 /*! org.automotive.TripMeter
184  \brief contains information about TripMeter
185  DBus Path: variable
186 */
187 interface org.automotive.TripMeter extends VehiclePropertyType  {
188
189   /*!  TripMeters
190    *   \brief  Must return trip meters.  Changing any items in the array will reset the item's value to '0'.
191    */
192    attribute UInt16[] TripMeters
193 }
194
195 /*! org.automotive.Acceleration
196  \brief contains information about Acceleration
197  DBus Path: variable
198 */
199 interface org.automotive.Acceleration extends VehiclePropertyType  {
200
201   /*!  X
202    *   \brief  return acceleration on the "X" axis (Unit: centimeters per second squared)
203    */
204   attribute Int16 X readonly
205
206   /*!  Y
207    *   \brief  return acceleration on the "Y" axis (Unit: centimeters per second squared)
208    */
209   attribute Int16 Y readonly
210
211   /*!  Z
212    *   \brief  return acceleration on the "Z" axis (Unit: centimeters per second squared)
213    */
214   attribute Int16 Z readonly
215 }
216
217 enumeration TransmissionMode {
218   park = "park",
219   reverse = "reverse",
220   neutral = "neutral",
221   low = "low",
222   drive = "drive",
223   overdrive = "overdrive"
224 }
225
226 /*! TransmissionPosition
227  * \brief Describes Transmission Pistion.  Deprecated.  Will disappear in 0.14
228  */
229 enumeration TransmissionPosition {
230   Neutral = 0,
231   First = 1,
232   Second = 2,
233   Third = 3,
234   Fourth = 4,
235   Fifth = 5,
236   Sixth = 6,
237   Seventh = 7,
238   Eighth = 8,
239   Ninth = 9,
240   Tenth = 10,
241   Cvt = 64,
242   Reverse = 128,
243   Park = 255
244 }
245
246 /*! TransmissionGearType
247  * \brief Describes the transmission gearbox type
248 */
249 enumeration TransmissionGearType
250 {
251   Auto = 0,
252   Manual = 1,
253   CVT = 2
254 }
255
256 interface org.automotive.Transmission extends VehiclePropertyType  {
257   /*!  GearPosition
258    *   \brief  Must return transmission gear position (see TRANSMISSIONPOSITION) Deprecated.  Replaced with Gear
259    */
260    attribute TransmissionPosition GearPosition readonly
261
262   /*!  TransmissionGearType
263    *   \brief MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).
264    *   See TRANSMISSIONGEARTYPE
265    */
266    attribute TransmissionGearType Type;
267
268   /*!  Gear
269    *   \brief  Must return transmission gear position 1-10
270    */
271    attribute UInt8 Gear readonly
272
273   /*!  Mode
274    *   \brief  Must return transmission Mode
275    */
276    attribute TransmissionMode Mode readonly
277 }
278
279
280 interface org.automotive.CruiseControlStatus extends VehiclePropertyType  {
281
282   /*!  Activated
283    *   \brief  Must return whether or not the Cruise Control system is active (true) or inactive (false). Depricated.  Remove in 0.14.  Use "Status"
284    */
285    attribute Boolean Activated readonly
286
287   /*!  Speed
288    *   \brief  Must return target Cruise Control speed in kilometers per hour (kph).
289    */
290    attribute UInt16 Speed readonly
291
292   /*!  Status
293    *   \brief  Must return whether or not the Cruise Control system is active (true) or inactive (false).
294    */
295    attribute Boolean Status readonly
296 }
297
298 /*!
299  * Deprecated.  Use BrakeOperation.  Remove in 0.14
300  */
301 interface org.automotive.WheelBrake extends VehiclePropertyType  {
302
303   /*!  Engaged
304    *   \brief  Must return Wheel Brake status: Engaged = true, disengaged = false
305    */
306    attribute Boolean Engaged readonly
307 }
308
309 interface org.automotive.BrakeOperation extends VehiclePropertyType  {
310
311   /*!  BrakePedalDepressed
312    *   \brief  must return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed
313    */
314    attribute Boolean BrakePedalDepressed readonly
315 }
316
317 interface org.automotive.LightStatus extends VehiclePropertyType  {
318
319   /*!  Head
320    *   \brief  Must return headlight status: on = true, off = false.
321    */
322    attribute Boolean Head
323
324   /*!  RightTurn
325    *   \brief  Must return right turn signal status: on = true, off = false.
326    */
327    attribute Boolean RightTurn
328
329   /*!  LeftTurn
330    *   \brief  Must return left turn signal status: on = true, off = false.
331    */
332    attribute Boolean LeftTurn
333
334   /*!  Brake
335    *   \brief  Must return  brake signal light status: on = true, off = false.
336    */
337    attribute Boolean Brake
338
339   /*!  Fog
340    *   \brief  Must return fog light status: on = true, off = false.
341    */
342    attribute Boolean Fog
343
344   /*!  Hazard
345    *   \brief  Must return hazard light status: on = true, off = false.
346    */
347    attribute Boolean Hazard
348
349   /*!  Parking
350    *   \brief  Must return parking light status: on = true, off = false.
351    */
352    attribute Boolean Parking
353
354   /*!  HighBeam
355    *   \brief  Must return high beam status: on = true, off = false.
356    */
357    attribute Boolean HighBeam
358
359   /*!  AutomaticHeadlights
360    *   \brief  Must return automatic headlight status: on = true, off = false.
361    */
362   attribute Boolean AutomaticHeadlights
363
364   /*!  DynamicHighBeam
365    *   \brief  Must return dynamic high beam status: on = true, off = false.
366    */
367   attribute Boolean DynamicHighBeam
368 }
369
370
371 interface org.automotive.InteriorLightStatus extends VehiclePropertyType  {
372
373   /*!  Passenger
374    *   \brief  Must return passenger interior light status: on = true, off = false. Deprecated.  Remove in 0.14.   Use status and zone.
375    */
376    attribute Boolean Passenger readonly
377
378   /*!  Driver
379    *   \brief  Must return driver interior light status: on = true, off = false. Deprecated.  Remove in 0.14.   Use status and zone.
380    */
381    attribute Boolean Driver readonly
382
383   /*!  Center
384    *   \brief  Must return center interior light status: on = true, off = false. Deprecated.  Remove in 0.14.   Use status and zone.
385    */
386    attribute Boolean Center readonly
387
388   /*!  Status
389    *   \brief  Must return interior light status for the zone. on = true, off = false
390    */
391     attribute Boolean Status
392 }
393
394
395 interface org.automotive.Horn extends VehiclePropertyType  {
396
397   /*!  On
398    *   \brief  Must return horn status: on = true, off = false
399    */
400    attribute Boolean On readonly
401 }
402
403
404 interface org.automotive.Fuel extends VehiclePropertyType  {
405
406   /*!  Level
407    *   \brief  Must return fuel level as a percentage of fullness.
408    */
409    attribute UInt16 Level readonly
410
411   /*!  Range
412    *   \brief  Must return estimated fuel range in meters.
413    */
414    attribute UInt32 Range readonly
415
416   /*!  InstantConsumption
417    *   \brief  Must return instant fuel consumption in per distance travelled (Unit: milliliters per 100 kilometers).
418    */
419    attribute UInt32 InstantConsumption readonly
420
421   /*!  InstantEconomy
422    *   \brief  Must return instant fuel 'economy' in kilometers per liter of fuel.
423    */
424    attribute UInt16 InstantEconomy readonly
425
426   /*!  AverageEconomy
427    *   \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'
428    */
429    attribute UInt16 AverageEconomy;
430
431   /*!  AverageConsumption
432    *   \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'
433    */
434    attribute UInt32 AverageConsumption;
435
436   /*!  FuelConsumedSinceRestart
437    *   \brief must return fuel consumed since engine start; (Unit: milliliters per 100 kilometers) resets to 0 each restart
438    */
439    attribute UInt32 FuelConsumedSinceRestart readonly;
440
441   /*!  TimeSinceRestart
442    *   \brief must  return time elapsed since vehicle restart (Unit: seconds)
443    */
444    attribute UInt32 TimeSinceRestart readonly;
445 }
446
447
448 interface org.automotive.EngineOil extends VehiclePropertyType  {
449
450   /*!  Remaining
451    *   \brief Must return remaining engine oil as percentage of fullness.  Deprecated.  Remove in 0.14.  Use "Level"
452    */
453    attribute UInt16 Remaining readonly
454
455   /*!  Temperature
456    *   \brief Must return Engine Oil Temperature in Celcius.
457    */
458    attribute long Temperature readonly
459
460   /*!  Pressure
461    *   \brief Must return Engine Oil Pressure in kPa.
462    */
463    attribute UInt16 Pressure readonly
464
465   /*!  Level
466    *   \brief Must return engine oil level (Unit: percentage, 0%: empty, 100%: full
467    */
468    attribute UInt16 Level readonly
469
470   /*!  Change
471    *   \brief Must return engine oil change indicator status: change oil (true) or no change (false)
472    */
473    attribute boolean Change readonly
474
475   /*!  LifeRemaining
476    *   \brief Must return engine oil change indicator status: change oil (true) or no change (false)
477    */
478    attribute boolean LifeRemaining readonly
479
480 }
481
482
483 interface org.automotive.Location extends VehiclePropertyType  {
484
485   /*!  Latitude
486    *   \brief  Must return latitude in Deg.Min (-180, +180)
487    */
488    attribute Double Latitude readonly
489
490   /*!  Longitude
491    *   \brief  Must return longitude in Deg.Min (-90, +90)
492    */
493    attribute Double Longitude readonly
494
495   /*!  Altitude
496    *   \brief  Must return altitude in meters above sea-level (0).
497    */
498    attribute Double Altitude readonly
499
500   /*!  Direction
501    *   \brief  Must return direction in Degrees  (0-360)
502    */
503    attribute UInt16 Direction readonly
504 }
505
506
507 interface org.automotive.ExteriorBrightness extends VehiclePropertyType  {
508
509   /*!  ExteriorBrightness
510    *   \brief Must return the brightness outside the vehicle in lux.
511    */
512    attribute UInt16 ExteriorBrightness readonly
513 }
514
515
516 interface org.automotive.Temperature extends VehiclePropertyType  {
517
518   /*!  Interior
519    *   \brief Must return the temperature of the interior of the vehicle in celcius.
520    */
521    /// Deprecated.  Use InteriorTemperature.  Remove in 0.14
522    attribute signed short Interior readonly
523
524   /*!  Exterior
525    *   \brief Must return the temperature of the exterior of the vehicle in celcius.
526    */
527    /// Deprecated.  Use ExteriorTemperature.  Remove in 0.14
528    attribute signed short Exterior readonly
529
530   /*!  Interior
531    *   \brief Must return the temperature of the interior of the vehicle in celcius.
532    */
533    attribute signed short InteriorTemperature readonly
534
535   /*!  Exterior
536    *   \brief Must return the temperature of the exterior of the vehicle in celcius.
537    */
538    attribute signed short ExteriorTemperature readonly
539 }
540
541
542 interface org.automotive.RainSensor extends VehiclePropertyType  {
543
544   /*!  RainSensor
545    *   \brief Must return level of rain intensity 0: No Rain - 10: Heaviest Rain.
546    */
547    attribute UInt16 RainSensor readonly
548 }
549
550
551 interface org.automotive.WindshieldWiper extends VehiclePropertyType  {
552   const UInt16 WIPERSPEED_OFF = 0;
553   const UInt16 WIPERSPEED_SLOWEST= 1;
554   const UInt16 WIPERSPEED_FASTEST = 5;
555   const UInt16 WIPERSPEED_AUTO = 10;
556
557   /*!  WindshieldWiper
558    *   \brief Must return Level of windshield whiper speed (see WIPERSPEED)
559    */
560    attribute UInt16 WindshieldWiper readonly
561 }
562
563 /*! Deprecated.  Use ClimateControl interface.  Remove in 0.14
564 */
565 interface org.automotive.HVAC extends VehiclePropertyType  {
566   const UInt16 AIRFLOWDIRECTION_FRONTPANEL = 0;
567   const UInt16 AIRFLOWDIRECTION_FLOORDUCT= 1;
568   const UInt16 AIRFLOWDIRECTION_FRONT = 0x02;
569   const UInt16 AIRFLOWDIRECTION_DEFROSTER = 0x04;
570
571   /*!  AirflowDirection
572    *   \brief Must return airflow direction.  See
573    */
574   attribute UInt16 AirflowDirection;
575
576   /*!  FanSpeed
577    *   \brief Must return speed of the fan (0-7)
578    */
579   attribute UInt16 FanSpeed;
580
581   /*!  TargetTemperature
582    *   \brief Must return target desired temperature in celcius.
583    */
584   attribute UInt16 TargetTemperature;
585
586   /*!  AirConditioning
587    *   \brief Must return air conditioning on (true) / off (false).
588    */
589   attribute Boolean AirConditioning;
590
591   /*!  AirRecirculation
592    *   \brief Must return air recirculation on (true) / off (false).
593    */
594   attribute Boolean AirRecirculation;
595
596   /*!  Heater
597    *   \brief Must return heater on (true) / off (false).
598    */
599   attribute Boolean Heater;
600
601   /*!  SteeringWheelHeater
602    *   \brief Must return air recirculation on (true) / off (false).
603    */
604   attribute Boolean SteeringWheelHeater;
605
606   /*!  SeatHeater
607    *   \brief Must return seat heater status: 0-100%.
608    */
609   attribute UInt16 SeatHeater;
610
611   /*!  SeatCooler
612    *   \brief Must return seat heater status: on (true) / off (false).
613    */
614   attribute Boolean SeatCooler;
615 }
616
617 enumeration AirflowDirectionType
618 {
619   frontpanel = "frontpanel",
620   floorduct = "floorduct",
621   bilevel = "bilevel",
622   defrostfloor = "defrostfloor"
623 }
624
625 interface org.automotive.ClimateControl extends VehiclePropertyType  {
626   /*!  AirflowDirection
627   *   \brief Must return current status of the direction of the air flow through the ventilation system
628   */
629   attribute AirflowDirectionType AirflowDirection;
630
631   /*!  FanSpeedLevel
632   *   \brief Must return seat heater status: on (true) / off (false).
633   */
634   attribute UInt8 FanSpeedLevel;
635
636   /*!  TargetTemperature
637   *   \brief Must return current setting of the desired temperature (Unit: celsius)
638   */
639   attribute Int8 TargetTemperature;
640
641   /*!  AirConditioning
642   *   \brief Must return current status of the air conditioning system: on (true) or off (false)
643   */
644   attribute Boolean AirConditioning;
645
646   /*!  Heater
647   *   \brief Must return current status of the heating system: on (true) or off (false)
648   */
649   attribute Boolean Heater;
650
651   /*!  SeatHeater
652   *   \brief Must return current status of the seat warmer ( 0: off, 1: least warm, 10: warmest )
653   */
654   attribute UInt8 SeatHeater;
655
656   /*!  SeatCooler
657   *   \brief Must return current status of the seat ventilation ( 0: off, 1: least warm, 10: warmest )
658   */
659   attribute UInt8 SeatCooler;
660
661   /*!  AirRecirculation
662   *   \brief Must return current setting of air recirculation: on (true) or pulling in outside air (false).
663   */
664   attribute Boolean AirRecirculation;
665
666   /*!  SteeringWheelHeater
667   *   \brief Must return current status of steering wheel heater ( 0: off, 1: least warm, 10: warmest ).
668   */
669   attribute UInt8 SteeringWheelHeater;
670 }
671
672 interface org.automotive.WindowStatus extends VehiclePropertyType  {
673
674   /*!  Openness
675    *   \brief Must return window openness percentage (100% fully open, 0% fully closed)
676    *  for the window location see "zone" attribute
677    */
678   attribute UInt16 Openness;
679
680   /*!  Defrost
681    *   \brief Must return the defroster status of the window. On = true, Off = false.
682    *   Deprecated.  Use Defrost interface.  Remove in 0.14.
683    */
684   attribute Boolean Defrost;
685 }
686
687 interface org.automotive.Defrost extends VehiclePropertyType  {
688
689   /*! DefrostWindow
690    *  \brief Must return current status of the defrost switch for mirrors. It can be
691    *  used to send user's request for changing setting.
692    */
693   attribute Boolean DefrostWindow;
694
695   /*! DefrostMirrors
696    *  \brief Must return current status of the defrost switch for window. It can be
697    *  used to send user's request for changing setting.
698    */
699   attribute Boolean DefrostMirrors;
700 }
701
702 interface org.automotive.Sunroof extends VehiclePropertyType  {
703
704   /*!  Openness
705    *   \brief Must return window status for sunroof openness percentage.
706    */
707   attribute UInt16 Openness;
708
709   /*!  Tilt
710    *   \brief Must return tilt status for sunroof percentage.
711    */
712   attribute UInt16 Tilt;
713 }
714
715
716 interface org.automotive.ConvertibleRoof extends VehiclePropertyType  {
717
718   /*!  Openness
719    *   \brief Must return convertible roof openness percentage.
720    */
721    attribute UInt16 Openness;
722 }
723
724
725 interface org.automotive.VehicleId extends VehiclePropertyType  {
726
727   /*!  WMI
728    *   \brief MUST return World Manufacturer Identifier (WMI)
729    *   WMI is defined by SAE ISO 3780:2009.  3 characters.
730    */
731    attribute String WMI readonly
732
733   /*!  VIN
734    *   \brief MUST return Vehicle Identification Number (VIN) as defined by ISO 3779. 17 characters.
735    */
736    attribute String VIN readonly
737 }
738
739
740 interface org.automotive.Size extends VehiclePropertyType  {
741
742   /*!  Width
743    *   \brief MUST return width of vehicle in mm
744    */
745    attribute UInt16 Width readonly
746
747   /*!  Height
748    *   \brief MUST return height of vehicle in mm
749    */
750    attribute UInt16 Height readonly
751
752   /*!  Length
753    *   \brief MUST return length of vehicle in mm
754    */
755    attribute UInt16 Length readonly
756 }
757
758
759 interface org.automotive.FuelInfo extends VehiclePropertyType  {
760   const UInt16 FUELTYPE_GASOLINE = 0;
761   const UInt16 FUELTYPE_HIGH_OCTANE= 1;
762   const UInt16 FUELTYPE_DIESEL = 2;
763   const UInt16 FUELTYPE_ELECTRIC = 3;
764   const UInt16 FUELTYPE_HYDROGEN = 4;
765   const UInt16 REFUELPOSITION_LEFT = 0;
766   const UInt16 REFUELPOSITION_RIGHT= 1;
767   const UInt16 REFUELPOSITION_FRONT = 2;
768   const UInt16 REFUELPOSITION_REAR = 3;
769
770   /*!  Type
771    *   \brief MUST return type of fuel.  integer 0-4 (see
772    */
773    attribute UInt16 Type readonly
774
775   /*!  RefuelPosition
776    *   \brief MUST return position of refuling (see
777    */
778    attribute UInt16 RefuelPosition readonly
779 }
780
781
782 interface org.automotive.VehicleType extends VehiclePropertyType  {
783   const UInt16 VEHICLETYPE_SEDAN = 0;
784   const UInt16 VEHICLETYPE_COUPE= 1;
785   const UInt16 VEHICLETYPE_CABRIOLE = 2;
786   const UInt16 VEHICLETYPE_ROADSTER = 3;
787   const UInt16 VEHICLETYPE_SUV = 4;
788   const UInt16 VEHICLETYPE_TRUCK = 5;
789
790   /*!  Type
791    *   \brief MUST return type of Vehicle.  Integer 0-5 (see
792    */
793    attribute UInt16 Type readonly
794 }
795
796
797 interface org.automotive.Doors extends VehiclePropertyType  {
798
799   /*!  DoorsPerRow
800    *   \brief MUST return Number of doors in each row.  The index represents the row.  Position '0'
801    *   represents the first row, '1' the second row etc.
802    *   Example a common mini-van may have Doors[0] = 2 doors,
803    *   Doors[1] = 1 (side door), Doors[2] = 1 (trunk).
804    */
805    attribute Array<UInt16> DoorsPerRow readonly
806 }
807
808
809 interface org.automotive.WheelInformation extends VehiclePropertyType  {
810
811   /*!  FrontWheelRadius
812    *   \brief MUST return Radius of Front Wheel(s) in mm.
813    */
814    attribute UInt16 FrontWheelRadius readonly
815
816   /*!  RearWheelRadius
817    *   \brief MUST return Radius of Rear Wheel(s) in mm.
818    */
819    attribute UInt16 RearWheelRadius readonly
820
821   /*!  WheelTrack
822    *   \brief MUST return Wheel Track in mm.
823    */
824    attribute UInt16 WheelTrack readonly
825
826   /*!  ABS
827    *   \brief MUST return Antilock Brake System status: on = true, off = false.
828    */
829    attribute Boolean ABS readonly
830 }
831
832
833 interface org.automotive.Odometer extends VehiclePropertyType  {
834
835   /*!  Odometer
836    *   \brief MUST return Distance traveled in km
837    */
838    /// Deprecated. Use DistanceTotal.  Remove in 0.14
839    attribute UInt32 Odometer readonly
840
841   /*!  DistnaceTotal
842    *   \brief MUST return Distance traveled in m
843    */
844    attribute UInt32 DistanceTotal readonly
845
846   /*!  DistanceSinceStart
847    *   \brief MUST return Distance traveled since start in m
848    */
849    attribute UInt32 DistanceSinceStart readonly
850
851 }
852
853
854 interface org.automotive.Fluid extends VehiclePropertyType  {
855
856   /*!  Transmission
857    *   \brief MUST return Transmission fluid level percentage. 0-100.
858    */
859    attribute UInt16 Transmission readonly
860
861   /*!  Brake
862    *   \brief MUST return Brake fluid level percentage. 0-100.
863    */
864    attribute UInt16 Brake readonly
865
866   /*!  Washer
867    *   \brief MUST return Washer fluid level percentage. 0-100.
868    */
869    attribute UInt16 Washer readonly
870 }
871
872 /// Deprecated.  Use BatteryStatus.  Remove in 0.14
873 interface org.automotive.Battery extends VehiclePropertyType  {
874
875   /*!  Voltage
876    *   \brief MUST return battery voltage.
877    */
878    attribute Double Voltage readonly
879
880   /*!  Current
881    *   \brief MUST return battery current in Amperes
882    */
883    attribute Double Current readonly
884 }
885
886 interface org.automotive.BatteryStatus extends VehiclePropertyType  {
887
888   /*!  Voltage
889    *   \brief MUST return battery voltage.
890    */
891    attribute UInt8 Voltage readonly
892
893   /*!  Current
894    *   \brief MUST return battery current in Amperes
895    */
896    attribute UInt8 Current readonly
897
898   /*!  ChargeLevel
899    *   \brief MUST return battery charge level (Unit: percentage, 0%: empty, 100%: full).
900    */
901    attribute UInt8 ChargeLevel readonly
902 }
903
904
905 interface org.automotive.Tire extends VehiclePropertyType  {
906
907   /*!  Pressure
908    *   \brief MUST return tire pressure in kPa.
909    */
910    attribute UInt16 Pressure readonly
911
912   /*!  Temperature
913    *   \brief MUST return left front tire temperature in Celcius.
914    */
915    attribute Int16 Temperature readonly
916
917   /*!  Temperature
918    *   \brief MUST return true if any tire pressure is low: pressure low (true), pressure not low (false).
919    */
920    attribute Boolean PressureLow readonly
921 }
922
923
924 interface org.automotive.SecurityAlert extends VehiclePropertyType  {
925
926   /*!  SecurityAlert
927    *   \brief MUST return
928    */
929    attribute Boolean SecurityAlert readonly
930 }
931
932 /// Deprecated.  Use LightStatus.  remove in 0.14
933 interface org.automotive.ParkingBrake extends VehiclePropertyType  {
934
935   /*!  ParkingBrake
936    *   must return status of parking brake:  Engaged = true, Disengaged = false.
937    */
938    attribute Boolean ParkingBrake readonly
939 }
940
941 /// Deprecated.  Use LightStatus.  remove in 0.14
942 interface org.automotive.ParkingLight extends VehiclePropertyType  {
943
944   /*!  ParkingLight
945    *   must return status of parking light:  Engaged = true, Disengaged = false.
946    */
947    attribute Boolean ParkingLight readonly
948 }
949
950 /// Deprecated.  Use LightStatus.  remove in 0.14
951 interface org.automotive.HazardLight extends VehiclePropertyType  {
952
953   /*!  HazardLight
954    *   must return status of hazard light:  Engaged = true, Disengaged = false.
955    */
956    attribute Boolean HazardLight readonly
957 }
958
959
960 interface org.automotive.AntilockBrakingSystem extends VehiclePropertyType  {
961
962   /*!  AntilockBrakingSystem
963    *   \brief MUST return whether Antilock Braking System is Idle (false) or Engaged (true)
964    */
965    attribute Boolean AntilockBrakingSystem readonly
966 }
967
968
969 interface org.automotive.TractionControlSystem extends VehiclePropertyType  {
970
971   /*!  TractionControlSystem
972    *   \brief MUST return whether Traction Control System is Off (false) or On (true)
973    */
974    attribute Boolean TractionControlSystem readonly
975 }
976
977
978 interface org.automotive.VehicleTopSpeedLimit extends VehiclePropertyType  {
979
980   /*!  VehicleTopSpeedLimit
981    *   \brief MUST returns top rated speed in km/h. 0 = no limit
982    */
983    attribute UInt16 VehicleTopSpeedLimit readonly
984 }
985
986
987 interface org.automotive.AirbagStatus extends VehiclePropertyType  {
988
989   const UInt16 AIRBAGSTATUS_INACTIVE = 0;
990   const UInt16 AIRBAGSTATUS_ACTIVE = 1;
991   const UInt16 AIRBAGSTATUS_DEPLOYED = 2;
992
993   /*!  AirbagStatus
994    *   \brief MUST returns Airbag status (byte) (see AIRBAGSTATUS_*)
995    */
996    attribute UInt16 AirbagStatus readonly
997 }
998
999 enumeration AirbagStatus {
1000   inactive = 0,
1001   active = 1,
1002   deployed = 2
1003 }
1004
1005 /*!
1006  * Deprecated.  Use "Door".  Remove in 0.14
1007  */
1008 interface org.automotive.DoorStatus extends VehiclePropertyType  {
1009
1010
1011
1012   /*!  DoorStatus
1013    *   \brief MUST returns Door status (byte).
1014    * CLOSED = 0
1015    * OPEN = 1
1016    * AJAR = 2
1017    */
1018    attribute UInt16 DoorStatus readonly
1019
1020   /*!  DoorLockStatus
1021    *   \brief MUST returns Door status (bool locked = true, unlocked = false).
1022    */
1023   attribute Boolean DoorLockStatus;
1024
1025   /*!  ChildLockStatus
1026    *   \brief MUST returns Child lock status of rear doors.  active = true, inactive = false.
1027    *   Setting this to 'true' will prevent the rear doors from being opened
1028    *   from the inside.
1029    */
1030   attribute Boolean ChildLockStatus;
1031 }
1032
1033 enumeration DoorStatus {
1034   open = "open",
1035   ajar = "ajar",
1036   closed = "closed"
1037 }
1038
1039 interface org.automotive.Door extends VehiclePropertyType  {
1040
1041   /*!  Status
1042    *   \brief MUST returns Door status (byte).  See DOORSTATUS_*
1043    */
1044    attribute DoorStatus Status readonly
1045
1046   /*!  Lock
1047    *   \brief MUST returns Door status (bool locked = true, unlocked = false).
1048    */
1049   attribute Boolean Lock;
1050
1051   /*!  ChildLock
1052    *   \brief MUST returns Child lock status of rear doors.  active = true, inactive = false.
1053    *   Setting this to 'true' will prevent the rear doors from being opened
1054    *   from the inside.
1055    */
1056   attribute Boolean ChildLock;
1057 }
1058
1059
1060 interface org.automotive.SeatBelt extends VehiclePropertyType  {
1061
1062   /*! Status
1063    *  \brief MUST return Seat Belt Status (bool: Fasten = true, Unfastened = false)
1064    */
1065    attribute Boolean Status readonly
1066 }
1067
1068
1069 interface org.automotive.OccupantStatus extends VehiclePropertyType  {
1070
1071   /*!  OccupantStatus
1072    *   \brief MUST returns status of Occupant (byte, see
1073    */
1074    attribute UInt16 OccupantStatus readonly
1075 }
1076
1077
1078 interface org.automotive.ObstacleDistance extends VehiclePropertyType  {
1079
1080   /*!  ObstacleDistance
1081    *   \brief MUST returns Distance Sensor distance (Double) in m.
1082    */
1083    attribute Double ObstacleDistance readonly
1084 }
1085
1086
1087 interface org.automotive.NightMode extends VehiclePropertyType {
1088
1089   /*!
1090    * \brief MUST return whether or not the system is in NightMode or not.  True = Night time, False = Day time
1091    * Deprecated.  Will be removed in 0.14. Use "Mode"
1092    */
1093    attribute Boolean NightMode readonly
1094
1095   /*!
1096    * \brief MUST return whether or not the system is in NightMode or not.  True = Night time, False = Day time
1097    */
1098    attribute Boolean Mode readonly
1099 }
1100
1101
1102 interface org.automotive.DrivingMode extends VehiclePropertyType {
1103
1104   /*!
1105   * \brief MUST return whether or not the system is in DrivingMode or not.  1 = Driving, 0 = Not Driving
1106   */
1107    attribute UInt16 DrivingMode readonly
1108
1109   /*!
1110   * \brief must return true if vehicle is in driving mode
1111   */
1112    attribute Boolean Mode readonly
1113 }
1114
1115
1116 interface org.automotive.KeyId extends VehiclePropertyType {
1117
1118   /*!
1119   * \brief MUST return
1120   */
1121    attribute String KeyId readonly
1122 }
1123
1124 interface org.automotive.Language extends VehiclePropertyType {
1125
1126   /*!
1127   * \brief MUST return
1128   */
1129    attribute String Language readonly
1130 }
1131
1132
1133 interface org.automotive.MeasurementSystem extends VehiclePropertyType {
1134
1135   /*!
1136   * \brief MUST return 0 = Metric, 1 = ImperialUS, 2 = ImperialUK
1137   */
1138    attribute UInt16 MeasurementSystem readonly
1139 }
1140
1141
1142 interface org.automotive.MirrorSetting extends VehiclePropertyType {
1143
1144   /*!
1145   * \brief MUST return
1146   */
1147    attribute UInt16 Pan readonly
1148    attribute UInt16 Tilt readonly
1149 }
1150
1151
1152 interface org.automotive.SeatPosition extends VehiclePropertyType {
1153
1154   /*!
1155   * \brief MUST return
1156   */
1157    attribute UInt16 Recline readonly
1158
1159     /*!
1160   * \brief MUST return
1161   */
1162    attribute UInt16 Slide readonly
1163
1164   /*!
1165   * \brief MUST return
1166   */
1167    attribute UInt16 CushionHeight readonly
1168
1169   /*!
1170   * \brief MUST return
1171   */
1172    attribute UInt16 Headrest readonly
1173
1174   /*!
1175   * \brief MUST return
1176   */
1177    attribute UInt16 BackCushion readonly
1178
1179   /*!
1180   * \brief MUST return
1181   */
1182    attribute UInt16 SideCushion readonly
1183 }
1184
1185
1186 interface org.automotive.SteeringWheelPosition extends VehiclePropertyType {
1187
1188   /*!
1189   * \brief MUST return
1190   */
1191    attribute UInt16 Tilt readonly
1192
1193   /*!
1194   * \brief MUST return
1195   */
1196    attribute UInt16 Slide readonly
1197 }
1198
1199
1200 interface org.automotive.DashboardIllumination extends VehiclePropertyType {
1201
1202   /*!
1203   * \brief MUST return
1204   */
1205    attribute UInt16 DashboardIllumination readonly
1206 }
1207
1208
1209 interface org.automotive.GeneratedVehicleSoundMode extends VehiclePropertyType {
1210
1211   /*!
1212   * \brief MUST return Sound Mode: 0 = Normal, 1 = Quiet, 2 = Sportive
1213   */
1214    attribute UInt16 GeneratedVehicleSoundMode readonly
1215 }
1216
1217
1218 /*! SteeringWheelAngle
1219  *\brief
1220  * Deprecated.  Use SteeringWheel
1221  */
1222 interface org.automotive.SteeringWheelAngle extends VehiclePropertyType {
1223
1224   /*!
1225   * \brief MUST return angle of the steering wheel. 0-359 degrees.
1226   */
1227    attribute UInt16 SteeringWheelAngle readonly
1228 }
1229
1230 interface org.automotive.SteeringWheel extends VehiclePropertyType {
1231
1232   /*!
1233   * \brief MUST return angle of steering wheel off centerline (Unit: degrees -:degrees to the left, +:degrees to the right)
1234   */
1235    attribute Int16 Angle readonly
1236 }
1237
1238
1239 interface org.automotive.ButtoneEvent extends VehiclePropertyType {
1240
1241   /*!
1242   * \brief MUST return button event:
1243   * NoButton =0
1244   * PlayButton = 1,
1245   * SkipButton = 1 << 1,
1246   * PrevButton = 1 << 2,
1247   * PauseButton = 1 << 3,
1248   * Preset1Button = 1 << 4,
1249   * Preset2Button = 1 << 5,
1250   * Preset3Button = 1 << 6,
1251   * Preset4Button = 1 << 7,
1252   * StopButton = 1 << 8,
1253   * NavigateUpButton = 1 << 9,
1254   * NavigateDownButton = 1 << 10,
1255   * NavigateLeftButton = 1 << 11,
1256   * NavigateRightButton = 1 << 12
1257   */
1258    attribute UInt32 ButtonEvent readonly
1259 }
1260
1261
1262 interface org.automotive.DriverId extends VehiclePropertyType {
1263
1264   /*!
1265   * \brief MUST return driver ID.  Driver Id is an abstract and can be determined
1266   * from multiple sources including bluetooth, key, key fob, etc.
1267   */
1268    attribute String DriverId readonly
1269 }
1270
1271 interface org.automotive.ThrottlePosition extends VehiclePropertyType {
1272
1273   /*!
1274   * \brief MUST return throttle position as a percentage (Unit: percentage, 0%: closed, 100%: fully open)
1275   */
1276    attribute Uint8 Value readonly
1277 }
1278
1279 interface org.automotive.EngineCoolant extends VehiclePropertyType {
1280
1281   /*!
1282   * \brief MUST return engine coolant level (Unit: percentage 0%: empty, 100%: full)
1283   */
1284    attribute Uint16 Level readonly
1285
1286   /*!
1287   * \brief MUST return engine coolant temperature (Unit: celcius)
1288   */
1289    attribute Int16 Temperature readonly
1290 }
1291
1292 interface org.automotive.PowertrainTorque extends VehiclePropertyType {
1293
1294   /*!
1295    * \brief must return powertrain torque (Unit: newton meters)
1296    */
1297    attribute UInt16 Value readonly
1298 }
1299
1300 interface org.automotive.AcceleratorPedalPosition extends VehiclePropertyType {
1301
1302   /*!
1303    * \brief must  return accelerator pedal position as a percentage (Unit: percentage, 0%: released pedal, 100%: fully depressed)
1304    */
1305    attribute UInt8 Value readonly
1306 }
1307
1308 interface org.automotive.WheelTick extends VehiclePropertyType {
1309
1310   /*!
1311    * \brief must return number of ticks per second (Unit: ticks per second)
1312    */
1313    attribute UInt8 Value readonly
1314 }
1315
1316 interface IgnitionTime : VehicleCommonDataType {
1317    /*!
1318     * \brief must return time at ignition on
1319     */
1320     attribute UInt64 ignitionOnTime readonly
1321
1322     /*!
1323      * \brief must return time at ignition off
1324      */
1325      attribute UInt64 ignitionOffTime readonly
1326 };
1327
1328 interface org.automotive.YawRate extends VehiclePropertyType {
1329
1330   /*!
1331    * \brief must return yaw rate of vehicle. (Unit: degrees per second)
1332    */
1333    attribute Int16 Value readonly
1334 }
1335
1336 interface org.automotive.BrakeOperation extends VehiclePropertyType {
1337
1338   /*!
1339    * \brief must return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed
1340    */
1341    attribute Boolean BrakePedalDepressed readonly
1342 }
1343
1344 enum Button {
1345     home = "home",
1346     back = "back",
1347     search = "search",
1348     call = "call",
1349     end_call = "end_call",
1350     media_play = "media_play",
1351     media_next = "media_next",
1352     media_previous = "media_previous",
1353     media_pause = "media_pause",
1354     voice_recognize = "voice_recognize",
1355     enter = "enter",
1356     left = "left",
1357     right = "right",
1358     up = "up",
1359     down = "down"
1360 }
1361
1362 enum ButtonEventType {
1363     press = "press",
1364     long_press = "long_press",
1365     release = "release"
1366 };
1367
1368 interface VehicleButton {
1369     /*!
1370     * \brief must return the button corresponding to the event.
1371     */
1372     attribute Button button readonly;
1373
1374     /*!
1375     * \brief must return the type of event
1376     */
1377     attribute ButtonEventType state readonly;
1378 }
1379
1380 interface org.automotive.ButtonEvent extends VehiclePropertyType {
1381
1382   /*!
1383    * \brief must return the button events that occured. This supports multiple simultanious button events.
1384    */
1385    attribute array Button of VehicleButton readonly;
1386 }
1387
1388 interface org.automotive.TransmissionOil extends VehiclePropertyType {
1389
1390   /*!
1391    * \brief must return current temperature of the transmission oil(Unit: celsius).
1392    */
1393    attribute Int8 Temperature readonly;
1394
1395   /*!
1396    * \brief must return transmission oil wear (Unit: percentage, 0: no wear, 100: completely worn).
1397    */
1398    attribute UInt8 Wear readonly
1399 }
1400
1401 interface org.automotive.TransmissionClutch extends VehiclePropertyType {
1402
1403   /*!
1404    * \brief must return transmission clutch wear (Unit: percentage, 0: no wear, 100: completely worn).
1405    */
1406    attribute UInt8 Wear readonly
1407 }
1408
1409 }
1410