summaryrefslogtreecommitdiff
path: root/docs/amb.in.fidl
diff options
context:
space:
mode:
Diffstat (limited to 'docs/amb.in.fidl')
-rw-r--r--docs/amb.in.fidl1864
1 files changed, 1864 insertions, 0 deletions
diff --git a/docs/amb.in.fidl b/docs/amb.in.fidl
new file mode 100644
index 00000000..6d36c5a6
--- /dev/null
+++ b/docs/amb.in.fidl
@@ -0,0 +1,1864 @@
+/**
+ * \addtogroup dbus_api_module
+ * @{
+ */
+
+/*!
+* \file amb.fidl
+* \section dbus_api Automotive Message Broker DBus API Documentation
+* \version @PROJECT_VERSION@
+*
+* \section dbus_api_intro Introduction
+* This document describes the DBus interfaces and data types for the
+* Automotive Message Broker API. The data types are intended to as-close-as-
+* possible be compatible with the W3C vehicle <a href="https://rawgit.com/w3c/automotive-bg/master/data_spec.html">data spec</a>.
+*
+* AMB organizes the API into two general interface categories. First the Manager interface (see manager.txt)
+* which includes tools for using the other interfaces. Second is a number of interfaces that
+* represent vehicle data. The latter follows the schema of "org.automotive.DataType" and are
+* contained in verious DBus paths. The DBus paths are generally organized by
+* /{source}/{zone}/DataType. "source" refers to the AMB source that produces the data. "zone"
+* refers to the zone in which the data type is located in the vehicle or "0" for no zone.
+*
+* The interfaces and data types are documented in <a href="amb.fidl">amb.fidl</a>. Franca IDL
+* tools can be used to generate DBus introspection xml which can be used to generate bindings
+* for your language of choice. These interfaces types map to internal AMB properties. To understand the mappings,
+* see the <a href="ambdbusmappings_8idl.html">mapping documentation</a>
+*
+* \section dbus_api_basic_usage Basic Recommended Usage
+*
+* It is recommended that the Manager interface be used to find the DBus Object that contains the
+* data type you need. This is done through the FindObject() call. It is expected that DBus
+* Object Paths may change and so it is not appropriate to hard code DBus Object Paths.
+*
+* Here is a pseudo-code example of how the api is to be used:
+*
+* \code
+* var manager = dbus.interface("org.automotive.Manager", "/");
+*
+* var speedObjectPaths = manager.FindObject("VehicleSpeed");
+*
+* var speedObject = dbus.interface("org.automotive.VehicleSpeed", speedObjectPaths[0]);
+*
+* console.log("Vehicle Speed: " + speedObject.Speed);
+* \endcode
+* \section dbus_api_automotive_manager Automotive Manager
+* Manager is a helper interface for discovering and finding available objects. Manager also helps users look up objects by zone and get additional information about a data type (ieorg.automotive.Manager.ZonesForObjectName).
+* \section dbus_api_zones Zones
+*
+* 'Zone' describes the position in the vehicle where the object is located. The Zone type is a bitfield of values that can be combined to describe a specific location. For example
+*
+* \code
+* Zone.Front | Zone.Left
+* \endcode
+*
+* (which is '9') may represent the driver position.
+*
+* \code
+* enumeration Zone {
+* None = 0,
+* Front = 1,
+* Middle = 1 << 1,
+* Right = 1 << 2,
+* Left = 1 << 3,
+* Rear = 1 << 4,
+* Center = 1 << 5
+* }
+* \endcode
+*
+* \section dbus_api_vehicle_property_type Vehicle Property Type
+* Vehicle Property Type is the common interface which all Data types are derived. This interface is as follows:
+*
+* \code
+* interface VehiclePropertyType {
+* attribute Double Time readonly
+* attribute Zone Zone readonly
+* method GetHistory(Double beginTime, Double endTime) {
+* out{ Dictionary result}
+* }
+* }
+* \endcode
+*
+* \section dbus_api_data_types Data types
+*
+* The data types try to conform to the [http://w3c.github.io/automotive-bg/data_spec.html W3C Automotive Business Group Vehicle Data Specification] as much as possible. There are differences in the Zone type, and this vehicle API contains some additional data types that the W3C Business Group has not yet defined. 'Time' also represents relative time in seconds rather than time in ms since epoch (DOMTimeStamp). The names of the attributes are also different because of Web vs. DBus conventions. In this Vehicle API, DBus properties use CamelCase (ie Speed vs speed) vs lowerCamelCase. Units and types are the same where possible.
+*
+* Also note that many types have been marked "deprecated" and replaced with the W3C version of the type. Deprecated types should not be used in new projects.
+*
+*/
+
+/** @} */
+
+/*!
+* Variant
+*/
+union Variant {
+ UInt8 uint8
+ Int8 int8
+ UInt16 uint16
+ Int16 int16
+ UInt32 uint32
+ Int32 int32
+ UInt32 uin32
+ Int64 int64
+ UInt64 uint64
+ Boolean boolean
+ Float float
+ Double double
+ String string
+ ByteBuffer bytebuffer
+}
+
+/*!
+* Dictionary
+*/
+map Dictionary {
+ String to Variant
+}
+
+/*!
+ * \brief HistoryObject is returned with GetHistory call
+ */
+interface HistoryObject {
+
+ /*!
+ * \brief Name of property
+ */
+ attribute String Name readonly
+
+ /*!
+ * \brief Value of property
+ */
+ attribute Variant Value readonly
+
+ /*!
+ * \brief Time in seconds since unix epoch.
+ */
+ attribute Double Time readonly
+}
+
+/*!
+* VehiclePropertyType
+* \brief VehiclePropertyType is the base class for all Data types.
+*/
+interface VehiclePropertyType {
+
+ /*!
+ * \brief time in seconds since system start when a property in the interface updated.
+ */
+ attribute Double Time readonly
+
+ /*!
+ * \brief Zone in which the interface is situated.
+ */
+ attribute Zone Zone readonly
+
+ /*!
+ * \brief return dictionary of objectName and values for data between
+ * 'beginTime' and 'endTime'
+ * \arg beginTime time stamp in Seconds since Unix Epoc
+ * \arg endTime time stamp in Seconds since Unix Epoc
+ */
+ method GetHistory(Double beginTime, Double endTime) {
+ out{ array of HistoryObject result }
+ }
+}
+
+enumeration Zone {
+ None = 0,
+ Front = 1,
+ Middle = 1 << 1,
+ Right = 1 << 2,
+ Left = 1 << 3,
+ Rear = 1 << 4,
+ Center = 1 << 5
+}
+
+/*! org.automotive.Manager
+ * \brief Manager is a helper interface for discovering and finding available objects.
+ * Objects represent interfaces to data types.
+ */
+interface org.automotive.Manager {
+
+ /*! List
+ * \brief return supported properties
+ */
+ method List {
+ out {array of String objectNames}
+ }
+
+ /*!
+ * FindObject
+ * \brief find the DBus object path matching the given "objectName" (ie "VehicleSpeed" is the object name for
+ * the DBus object at path: "/path/to/VehicleSpeed") or org.automotive.Manager.ObjectNotFound if the object
+ * name is not supported.
+ *
+ * If the object path does not exist, it will be created. The object path will be removed
+ * when the last proccess that calls Find* disconnects from DBus.
+ *
+ * \arg String objectName to find
+ * \return list of object paths that provide the given object Name.
+ */
+ method FindObject {
+ in {
+ String objectName
+ }
+ out {
+ array of String objectPaths
+ }
+ }
+
+ /*!
+ * FindObjectForZone
+ * \brief find the DBus object path which matches "objectName" and "zone". This has the same behavior as FindObject
+ * except that it takes an addition zone argument and only return the path for that zone.
+ * \arg String property is the requested property to be retrieved.
+ * \arg Zone zone is the zone which the object
+ * \return string representing the DBus Object path.
+ * Possible errors:
+ * "org.automotive.Manager.InvalidZone"
+ * "org.automotive.Manager.ObjectNotFound"
+ */
+ method FindObjectForZone {
+ in {
+ String objectName
+ Zone zone
+ }
+ out {
+ String objectPath
+ }
+ }
+
+ /*!
+ * ZonesForObjectName
+ * \brief get a list of zones for a given objectName.
+ * \arg String objectName object name.
+ * \return list of zones for the given objectName (@see Zone)
+ */
+ method ZonesForObjectName {
+ in {
+ String objectName
+ }
+ out {
+ array of UInt32 zones
+ }
+ }
+
+ /*!
+ * SupportsProperty
+ * \brief check whether a Property exists.
+ * \arg propertyName name of property of Object
+ * \return true if Property exists
+ */
+ method SupportsProperty {
+ in {
+ String propertyName
+ }
+ out {
+ Boolean supported
+ }
+ }
+
+}
+
+/*! org.automotive.VehicleSpeed
+ \brief contains information about VehicleSpeed
+ DBus Path: variable
+*/
+interface org.automotive.VehicleSpeed extends VehiclePropertyType {
+
+ /*! Speed
+ * \brief MUST return Vehicle Speed in kilometers per hour.
+ */
+ attribute UInt16 Speed readonly
+}
+
+/*! org.automotive.EngineSpeed
+ \brief contains information about EngineSpeed
+ DBus Path: variable
+*/
+interface org.automotive.EngineSpeed extends VehiclePropertyType {
+
+ /*! EngineSpeed
+ * \brief MUST return Engine Speed in rotations per minute.
+ */
+ attribute UInt16 Speed readonly
+}
+
+enumeration PowerMode {
+ Off = 0
+ Accessory1 = 1
+ Accessory2 = 2
+ Run = 3
+}
+
+interface org.automotive.VehiclePowerMode extends VehiclePropertyType {
+
+ /*! VehiclePowerMode
+ * \brief MUST return vehicle power mode
+ */
+ attribute PowerMode VehiclePowerMode readonly
+}
+
+/*! org.automotive.TripMeter
+ \brief contains information about TripMeter
+ DBus Path: variable
+*/
+interface org.automotive.TripMeter extends VehiclePropertyType {
+
+ /*! TripMeters
+ * \brief MUST return trip meters. Changing any items in the array will reset the item's value to '0'.
+ */
+ attribute array TripMeters of UInt16
+}
+
+/*! org.automotive.Acceleration
+ \brief contains information about Acceleration
+ DBus Path: variable
+*/
+interface org.automotive.Acceleration extends VehiclePropertyType {
+
+ /*! X
+ * \brief return acceleration on the "X" axis (Unit: centimeters per second squared)
+ */
+ attribute Int16 X readonly
+
+ /*! Y
+ * \brief return acceleration on the "Y" axis (Unit: centimeters per second squared)
+ */
+ attribute Int16 Y readonly
+
+ /*! Z
+ * \brief return acceleration on the "Z" axis (Unit: centimeters per second squared)
+ */
+ attribute Int16 Z readonly
+}
+
+enumeration TransmissionMode {
+ park = "park",
+ reverse = "reverse",
+ neutral = "neutral",
+ low = "low",
+ drive = "drive",
+ overdrive = "overdrive"
+}
+
+/*! TransmissionPosition
+ * \brief Describes Transmission Pistion. Deprecated. Will disappear in 0.14
+ */
+enumeration TransmissionPosition {
+ Neutral = 0,
+ First = 1,
+ Second = 2,
+ Third = 3,
+ Fourth = 4,
+ Fifth = 5,
+ Sixth = 6,
+ Seventh = 7,
+ Eighth = 8,
+ Ninth = 9,
+ Tenth = 10,
+ Cvt = 64,
+ Reverse = 128,
+ Park = 255
+}
+
+/*! TransmissionGearType
+ * \brief Describes the transmission gearbox type
+*/
+enumeration TransmissionGearType
+{
+ Auto = 0,
+ Manual = 1,
+ CVT = 2
+}
+
+interface org.automotive.Transmission extends VehiclePropertyType {
+ /*! GearPosition
+ * \brief MUST return transmission gear position (see TRANSMISSIONPOSITION) Deprecated. Replaced with Gear
+ */
+ attribute TransmissionPosition GearPosition readonly
+
+ /*! TransmissionGearType
+ * \brief MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).
+ * See TRANSMISSIONGEARTYPE
+ */
+ attribute TransmissionGearType Type
+
+ /*! Gear
+ * \brief MUST return transmission gear position 1-10
+ */
+ attribute UInt8 Gear readonly
+
+ /*! Mode
+ * \brief MUST return transmission Mode
+ */
+ attribute TransmissionMode Mode readonly
+}
+
+
+interface org.automotive.CruiseControlStatus extends VehiclePropertyType {
+
+ /*! Activated
+ * \brief MUST return whether or not the Cruise Control system is active (true) or inactive (false). Depricated. Remove in 0.14. Use "Status"
+ */
+ attribute Boolean Activated readonly
+
+ /*! Speed
+ * \brief MUST return target Cruise Control speed in kilometers per hour (kph).
+ */
+ attribute UInt16 Speed readonly
+
+ /*! Status
+ * \brief MUST return whether or not the Cruise Control system is active (true) or inactive (false).
+ */
+ attribute Boolean Status readonly
+}
+
+/*!
+ * Deprecated. Use BrakeOperation. Remove in 0.14
+ */
+interface org.automotive.WheelBrake extends VehiclePropertyType {
+
+ /*! Engaged
+ * \brief MUST return Wheel Brake status: Engaged = true, disengaged = false
+ */
+ attribute Boolean Engaged readonly
+}
+
+interface org.automotive.BrakeOperation extends VehiclePropertyType {
+
+ /*! BrakePedalDepressed
+ * \brief MUST return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed
+ */
+ attribute Boolean BrakePedalDepressed readonly
+}
+
+interface org.automotive.LightStatus extends VehiclePropertyType {
+
+ /*! Head
+ * \brief MUST return headlight status: on = true, off = false.
+ */
+ attribute Boolean Head
+
+ /*! RightTurn
+ * \brief MUST return right turn signal status: on = true, off = false.
+ */
+ attribute Boolean RightTurn
+
+ /*! LeftTurn
+ * \brief MUST return left turn signal status: on = true, off = false.
+ */
+ attribute Boolean LeftTurn
+
+ /*! Brake
+ * \brief MUST return brake signal light status: on = true, off = false.
+ */
+ attribute Boolean Brake
+
+ /*! Fog
+ * \brief MUST return fog light status: on = true, off = false.
+ */
+ attribute Boolean Fog
+
+ /*! Hazard
+ * \brief MUST return hazard light status: on = true, off = false.
+ */
+ attribute Boolean Hazard
+
+ /*! Parking
+ * \brief MUST return parking light status: on = true, off = false.
+ */
+ attribute Boolean Parking
+
+ /*! HighBeam
+ * \brief MUST return high beam status: on = true, off = false.
+ */
+ attribute Boolean HighBeam
+
+ /*! AutomaticHeadlights
+ * \brief MUST return automatic headlight status: on = true, off = false.
+ */
+ attribute Boolean AutomaticHeadlights
+
+ /*! DynamicHighBeam
+ * \brief MUST return dynamic high beam status: on = true, off = false.
+ */
+ attribute Boolean DynamicHighBeam
+}
+
+
+interface org.automotive.InteriorLightStatus extends VehiclePropertyType {
+
+ /*! Passenger
+ * \brief MUST return passenger interior light status: on = true, off = false. Deprecated. Remove in 0.14. Use status and zone.
+ */
+ attribute Boolean Passenger readonly
+
+ /*! Driver
+ * \brief MUST return driver interior light status: on = true, off = false. Deprecated. Remove in 0.14. Use status and zone.
+ */
+ attribute Boolean Driver readonly
+
+ /*! Center
+ * \brief MUST return center interior light status: on = true, off = false. Deprecated. Remove in 0.14. Use status and zone.
+ */
+ attribute Boolean Center readonly
+
+ /*! Status
+ * \brief MUST return interior light status for the zone. on = true, off = false
+ */
+ attribute Boolean Status
+}
+
+
+interface org.automotive.Horn extends VehiclePropertyType {
+
+ /*! On
+ * \brief MUST return horn status: on = true, off = false
+ */
+ attribute Boolean On readonly
+}
+
+
+interface org.automotive.Fuel extends VehiclePropertyType {
+
+ /*! Level
+ * \brief MUST return fuel level as a percentage of fullness.
+ */
+ attribute UInt16 Level readonly
+
+ /*! Range
+ * \brief MUST return estimated fuel range in meters.
+ */
+ attribute UInt32 Range readonly
+
+ /*! InstantConsumption
+ * \brief MUST return instant fuel consumption in per distance travelled (Unit: milliliters per 100 kilometers).
+ */
+ attribute UInt32 InstantConsumption readonly
+
+ /*! InstantEconomy
+ * \brief MUST return instant fuel 'economy' in kilometers per liter of fuel.
+ */
+ attribute UInt16 InstantEconomy readonly
+
+ /*! AverageEconomy
+ * \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'
+ */
+ attribute UInt16 AverageEconomy
+
+ /*! AverageConsumption
+ * \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'
+ */
+ attribute UInt32 AverageConsumption
+
+ /*! FuelConsumedSinceRestart
+ * \brief MUST return fuel consumed since engine start (Unit: milliliters per 100 kilometers) resets to 0 each restart
+ */
+ attribute UInt32 FuelConsumedSinceRestart readonly
+
+ /*! TimeSinceRestart
+ * \brief MUST return time elapsed since vehicle restart (Unit: seconds)
+ */
+ attribute UInt32 TimeSinceRestart readonly
+}
+
+
+interface org.automotive.EngineOil extends VehiclePropertyType {
+
+ /*! Remaining
+ * \brief MUST return remaining engine oil as percentage of fullness. Deprecated. Remove in 0.14. Use "Level"
+ */
+ attribute UInt16 Remaining readonly
+
+ /*! Temperature
+ * \brief MUST return Engine Oil Temperature in Celcius.
+ */
+ attribute long Temperature readonly
+
+ /*! Pressure
+ * \brief MUST return Engine Oil Pressure in kPa.
+ */
+ attribute UInt16 Pressure readonly
+
+ /*! Level
+ * \brief MUST return engine oil level (Unit: percentage, 0%: empty, 100%: full
+ */
+ attribute UInt16 Level readonly
+
+ /*! Change
+ * \brief MUST return engine oil change indicator status: change oil (true) or no change (false)
+ */
+ attribute boolean Change readonly
+
+ /*! LifeRemaining
+ * \brief MUST return engine oil change indicator status: change oil (true) or no change (false)
+ */
+ attribute boolean LifeRemaining readonly
+
+}
+
+
+interface org.automotive.Location extends VehiclePropertyType {
+
+ /*! Latitude
+ * \brief MUST return latitude in Deg.Min (-180, +180)
+ */
+ attribute Double Latitude readonly
+
+ /*! Longitude
+ * \brief MUST return longitude in Deg.Min (-90, +90)
+ */
+ attribute Double Longitude readonly
+
+ /*! Altitude
+ * \brief MUST return altitude in meters above sea-level (0).
+ */
+ attribute Double Altitude readonly
+
+ /*! Direction
+ * \brief MUST return direction in Degrees (0-360)
+ */
+ attribute UInt16 Direction readonly
+}
+
+
+interface org.automotive.ExteriorBrightness extends VehiclePropertyType {
+
+ /*! ExteriorBrightness
+ * \brief MUST return the brightness outside the vehicle in lux.
+ */
+ attribute UInt16 ExteriorBrightness readonly
+}
+
+
+interface org.automotive.Temperature extends VehiclePropertyType {
+
+ /*! Interior
+ * \brief MUST return the temperature of the interior of the vehicle in celcius.
+ */
+ /// Deprecated. Use InteriorTemperature. Remove in 0.14
+ attribute signed short Interior readonly
+
+ /*! Exterior
+ * \brief MUST return the temperature of the exterior of the vehicle in celcius.
+ */
+ /// Deprecated. Use ExteriorTemperature. Remove in 0.14
+ attribute signed short Exterior readonly
+
+ /*! Interior
+ * \brief MUST return the temperature of the interior of the vehicle in celcius.
+ */
+ attribute signed short InteriorTemperature readonly
+
+ /*! Exterior
+ * \brief MUST return the temperature of the exterior of the vehicle in celcius.
+ */
+ attribute signed short ExteriorTemperature readonly
+}
+
+
+interface org.automotive.RainSensor extends VehiclePropertyType {
+
+ /*! RainSensor
+ * \brief MUST return level of rain intensity 0: No Rain - 10: Heaviest Rain.
+ * Deprecated in 0.14. Use rainIntensity
+ */
+ attribute UInt16 RainSensor readonly
+
+ /*! RainIntensity
+ * \brief MUST return level of rain intensity 0: No Rain - 10: Heaviest Rain.
+ */
+ attribute UInt16 RainIntensity readonly
+}
+
+
+/// TODO: Depricated in 0.14 Use WiperStatus
+interface org.automotive.WindshieldWiper extends VehiclePropertyType {
+
+ /*! WindshieldWiper
+ * \brief MUST return Level of windshield whiper speed (0-10)
+ */
+ attribute UInt16 WindshieldWiper readonly
+
+}
+
+enumeration WiperControl {
+ off = "off",
+ once = "once",
+ slowest = "slowest",
+ slow = "slow",
+ middle = "middle",
+ fast = "fast",
+ fastest = "fastest",
+ auto = "auto"
+}
+
+interface org.automotive.WiperStatus extends VehiclePropertyType {
+
+ /*! WiperSpeed
+ * \brief MUST return current speed interval of wiping windshield
+ */
+ attribute WiperControl WiperSpeed readonly
+
+ /*! WiperSetting
+ * \brief MUST return current setting of the front wiper controller. It can be used to send user's request for changing setting.
+ */
+ attribute WiperControl WiperSetting
+}
+
+/*! Deprecated. Use ClimateControl interface. Remove in 0.14
+*/
+interface org.automotive.HVAC extends VehiclePropertyType {
+ const UInt16 AIRFLOWDIRECTION_FRONTPANEL = 0
+ const UInt16 AIRFLOWDIRECTION_FLOORDUCT= 1
+ const UInt16 AIRFLOWDIRECTION_FRONT = 0x02
+ const UInt16 AIRFLOWDIRECTION_DEFROSTER = 0x04
+
+ /*! AirflowDirection
+ * \brief MUST return airflow direction. See
+ */
+ attribute UInt16 AirflowDirection
+
+ /*! FanSpeed
+ * \brief MUST return speed of the fan (0-7)
+ */
+ attribute UInt16 FanSpeed
+
+ /*! TargetTemperature
+ * \brief MUST return target desired temperature in celcius.
+ */
+ attribute UInt16 TargetTemperature
+
+ /*! AirConditioning
+ * \brief MUST return air conditioning on (true) / off (false).
+ */
+ attribute Boolean AirConditioning
+
+ /*! AirRecirculation
+ * \brief MUST return air recirculation on (true) / off (false).
+ */
+ attribute Boolean AirRecirculation
+
+ /*! Heater
+ * \brief MUST return heater on (true) / off (false).
+ */
+ attribute Boolean Heater
+
+ /*! SteeringWheelHeater
+ * \brief MUST return air recirculation on (true) / off (false).
+ */
+ attribute Boolean SteeringWheelHeater
+
+ /*! SeatHeater
+ * \brief MUST return seat heater status: 0-100%.
+ */
+ attribute UInt16 SeatHeater
+
+ /*! SeatCooler
+ * \brief MUST return seat heater status: on (true) / off (false).
+ */
+ attribute Boolean SeatCooler
+}
+
+enumeration AirflowDirectionType
+{
+ frontpanel = "frontpanel",
+ floorduct = "floorduct",
+ bilevel = "bilevel",
+ defrostfloor = "defrostfloor"
+}
+
+interface org.automotive.ClimateControl extends VehiclePropertyType {
+ /*! AirflowDirection
+ * \brief MUST return current status of the direction of the air flow through the ventilation system
+ */
+ attribute AirflowDirectionType AirflowDirection
+
+ /*! FanSpeedLevel
+ * \brief MUST return seat heater status: on (true) / off (false).
+ */
+ attribute UInt8 FanSpeedLevel
+
+ /*! TargetTemperature
+ * \brief MUST return current setting of the desired temperature (Unit: celsius)
+ */
+ attribute Int8 TargetTemperature
+
+ /*! AirConditioning
+ * \brief MUST return current status of the air conditioning system: on (true) or off (false)
+ */
+ attribute Boolean AirConditioning
+
+ /*! Heater
+ * \brief MUST return current status of the heating system: on (true) or off (false)
+ */
+ attribute Boolean Heater
+
+ /*! SeatHeater
+ * \brief MUST return current status of the seat warmer ( 0: off, 1: least warm, 10: warmest )
+ */
+ attribute UInt8 SeatHeater
+
+ /*! SeatCooler
+ * \brief MUST return current status of the seat ventilation ( 0: off, 1: least warm, 10: warmest )
+ */
+ attribute UInt8 SeatCooler
+
+ /*! AirRecirculation
+ * \brief MUST return current setting of air recirculation: on (true) or pulling in outside air (false).
+ */
+ attribute Boolean AirRecirculation
+
+ /*! SteeringWheelHeater
+ * \brief MUST return current status of steering wheel heater ( 0: off, 1: least warm, 10: warmest ).
+ */
+ attribute UInt8 SteeringWheelHeater
+}
+
+/// Deprecated in 0.14. Use SideWindow
+interface org.automotive.WindowStatus extends VehiclePropertyType {
+
+ /*! Openness
+ * \brief MUST return window openness percentage (100% fully open, 0% fully closed)
+ * for the window location see "zone" attribute
+ */
+ attribute UInt16 Openness
+
+ /*! Defrost
+ * \brief MUST return the defroster status of the window. On = true, Off = false.
+ * Deprecated. Use Defrost interface. Remove in 0.14.
+ */
+ attribute Boolean Defrost
+}
+
+interface org.automotive.SideWindow extends VehiclePropertyType {
+
+ /*! Openness
+ * \brief MUST return window openness percentage (100% fully open, 0% fully closed)
+ */
+ attribute UInt16 Openness
+
+ /*! Lock
+ * \brief MUST return whether or not the window is locked (true) or unlocked (false)
+ */
+ attribute Boolean Lock
+}
+
+interface org.automotive.Defrost extends VehiclePropertyType {
+
+ /*! DefrostWindow
+ * \brief MUST return current status of the defrost switch for mirrors. It can be
+ * used to send user's request for changing setting.
+ */
+ attribute Boolean DefrostWindow
+
+ /*! DefrostMirrors
+ * \brief MUST return current status of the defrost switch for window. It can be
+ * used to send user's request for changing setting.
+ */
+ attribute Boolean DefrostMirrors
+}
+
+interface org.automotive.Sunroof extends VehiclePropertyType {
+
+ /*! Openness
+ * \brief MUST return window status for sunroof openness percentage.
+ */
+ attribute UInt16 Openness
+
+ /*! Tilt
+ * \brief MUST return tilt status for sunroof percentage.
+ */
+ attribute UInt16 Tilt
+}
+
+
+enumeration ConvertibleRoofStatus {
+ closed = "closed",
+ closing = "closing",
+ opening = "opening",
+ opened = "opened"
+}
+
+interface org.automotive.ConvertibleRoof extends VehiclePropertyType {
+ /*! Status
+ * \brief MUST return current status of Convertible Roof.
+ *
+ */
+ attribute ConvertibleRoofStatus Status readonly
+
+ /*! Setting
+ * \brief MUST return current setting of Convertible Roof. This is used to open (true) and close (false).
+ *
+ */
+ attribute Boolean Setting
+}
+
+
+interface org.automotive.VehicleId extends VehiclePropertyType {
+
+ /*! WMI
+ * \brief MUST return World Manufacturer Identifier (WMI)
+ * WMI is defined by SAE ISO 3780:2009. 3 characters.
+ */
+ attribute String WMI readonly
+
+ /*! VIN
+ * \brief MUST return Vehicle Identification Number (VIN) as defined by ISO 3779. 17 characters.
+ */
+ attribute String VIN readonly
+}
+
+
+interface org.automotive.Size extends VehiclePropertyType {
+
+ /*! Width
+ * \brief MUST return width of vehicle in mm
+ */
+ attribute UInt16 Width readonly
+
+ /*! Height
+ * \brief MUST return height of vehicle in mm
+ */
+ attribute UInt16 Height readonly
+
+ /*! Length
+ * \brief MUST return length of vehicle in mm
+ */
+ attribute UInt16 Length readonly
+}
+
+
+interface org.automotive.FuelInfo extends VehiclePropertyType {
+ const UInt16 FUELTYPE_GASOLINE = 0
+ const UInt16 FUELTYPE_HIGH_OCTANE= 1
+ const UInt16 FUELTYPE_DIESEL = 2
+ const UInt16 FUELTYPE_ELECTRIC = 3
+ const UInt16 FUELTYPE_HYDROGEN = 4
+ const UInt16 REFUELPOSITION_LEFT = 0
+ const UInt16 REFUELPOSITION_RIGHT= 1
+ const UInt16 REFUELPOSITION_FRONT = 2
+ const UInt16 REFUELPOSITION_REAR = 3
+
+ /*! Type
+ * \brief MUST return type of fuel. integer 0-4 (see
+ */
+ attribute UInt16 Type readonly
+
+ /*! RefuelPosition
+ * \brief MUST return position of refuling (see
+ */
+ attribute UInt16 RefuelPosition readonly
+}
+
+
+interface org.automotive.VehicleType extends VehiclePropertyType {
+ const UInt16 VEHICLETYPE_SEDAN = 0
+ const UInt16 VEHICLETYPE_COUPE= 1
+ const UInt16 VEHICLETYPE_CABRIOLE = 2
+ const UInt16 VEHICLETYPE_ROADSTER = 3
+ const UInt16 VEHICLETYPE_SUV = 4
+ const UInt16 VEHICLETYPE_TRUCK = 5
+
+ /*! Type
+ * \brief MUST return type of Vehicle. Integer 0-5 (see
+ */
+ attribute UInt16 Type readonly
+}
+
+
+interface org.automotive.Doors extends VehiclePropertyType {
+
+ /*! DoorsPerRow
+ * \brief MUST return Number of doors in each row. The index represents the row. Position '0'
+ * represents the first row, '1' the second row etc.
+ * Example a common mini-van may have Doors[0] = 2 doors,
+ * Doors[1] = 1 (side door), Doors[2] = 1 (trunk).
+ */
+ attribute array DoorsPerRow of UInt16 readonly
+}
+
+
+interface org.automotive.WheelInformation extends VehiclePropertyType {
+
+ /*! FrontWheelRadius
+ * \brief MUST return Radius of Front Wheel(s) in mm.
+ */
+ attribute UInt16 FrontWheelRadius readonly
+
+ /*! RearWheelRadius
+ * \brief MUST return Radius of Rear Wheel(s) in mm.
+ */
+ attribute UInt16 RearWheelRadius readonly
+
+ /*! WheelTrack
+ * \brief MUST return Wheel Track in mm.
+ */
+ attribute UInt16 WheelTrack readonly
+
+ /*! ABS
+ * \brief MUST return Antilock Brake System status: on = true, off = false.
+ */
+ attribute Boolean ABS readonly
+}
+
+
+interface org.automotive.Odometer extends VehiclePropertyType {
+
+ /*! Odometer
+ * \brief MUST return Distance traveled in km
+ */
+ /// Deprecated. Use DistanceTotal. Remove in 0.14
+ attribute UInt32 Odometer readonly
+
+ /*! DistnaceTotal
+ * \brief MUST return Distance traveled in m
+ */
+ attribute UInt32 DistanceTotal readonly
+
+ /*! DistanceSinceStart
+ * \brief MUST return Distance traveled since start in m
+ */
+ attribute UInt32 DistanceSinceStart readonly
+
+}
+
+interface org.automotive.Fluid extends VehiclePropertyType {
+
+ /*! Transmission
+ * \brief MUST return Transmission fluid level percentage. 0-100.
+ */
+ attribute UInt16 Transmission readonly
+
+ /*! Brake
+ * \brief MUST return Brake fluid level percentage. 0-100.
+ * TODO: Deprecated. use BrakeMaintenance::FluidLevel Remove in 0.14
+ */
+ attribute UInt16 Brake readonly
+
+ /*! Washer
+ * \brief MUST return Washer fluid level percentage. 0-100.
+ * TODO: Deprecated. use WasherFluid::Level. Remove in 0.14
+ */
+ attribute UInt16 Washer readonly
+}
+
+///TODO: Deprecated. Use BatteryStatus. Remove in 0.14
+interface org.automotive.Battery extends VehiclePropertyType {
+
+ /*! Voltage
+ * \brief MUST return battery voltage.
+ */
+ attribute Double Voltage readonly
+
+ /*! Current
+ * \brief MUST return battery current in Amperes
+ */
+ attribute Double Current readonly
+}
+
+interface org.automotive.BatteryStatus extends VehiclePropertyType {
+
+ /*! Voltage
+ * \brief MUST return battery voltage.
+ */
+ attribute UInt8 Voltage readonly
+
+ /*! Current
+ * \brief MUST return battery current in Amperes
+ */
+ attribute UInt8 Current readonly
+
+ /*! ChargeLevel
+ * \brief MUST return battery charge level (Unit: percentage, 0%: empty, 100%: full).
+ */
+ attribute UInt8 ChargeLevel readonly
+}
+
+
+interface org.automotive.Tire extends VehiclePropertyType {
+
+ /*! Pressure
+ * \brief MUST return tire pressure in kPa.
+ */
+ attribute UInt16 Pressure readonly
+
+ /*! Temperature
+ * \brief MUST return left front tire temperature in Celcius.
+ */
+ attribute Int16 Temperature readonly
+
+ /*! Temperature
+ * \brief MUST return true if any tire pressure is low: pressure low (true), pressure not low (false).
+ */
+ attribute Boolean PressureLow readonly
+}
+
+
+interface org.automotive.SecurityAlert extends VehiclePropertyType {
+
+ /*! SecurityAlert
+ * \brief MUST return
+ */
+ attribute Boolean SecurityAlert readonly
+}
+
+interface org.automotive.ParkingBrake extends VehiclePropertyType {
+
+ /*! ParkingBrake
+ * MUST return status of parking brake: Engaged = true, Disengaged = false.
+ TODO: Deprecated in 0.14. Use Status
+ */
+ attribute Boolean ParkingBrake readonly
+
+ /*!
+ * \brief MUST return the current status of parking brake.
+ */
+ attribute ParkingBrakeStatus Status
+}
+
+/// Deprecated. Use LightStatus. remove in 0.14
+interface org.automotive.ParkingLight extends VehiclePropertyType {
+
+ /*! ParkingLight
+ * MUST return status of parking light: Engaged = true, Disengaged = false.
+ */
+ attribute Boolean ParkingLight readonly
+}
+
+/// Deprecated. Use LightStatus. remove in 0.14
+interface org.automotive.HazardLight extends VehiclePropertyType {
+
+ /*! HazardLight
+ * MUST return status of hazard light: Engaged = true, Disengaged = false.
+ */
+ attribute Boolean HazardLight readonly
+}
+
+
+interface org.automotive.AntilockBrakingSystem extends VehiclePropertyType {
+
+ /*! AntilockBrakingSystem
+ * \brief MUST return whether Antilock Braking System is Idle (false) or Engaged (true)
+ * TODO: Deprecated. Use Engaged. Remove in 0.14
+ */
+ attribute Boolean AntilockBrakingSystem readonly
+
+ /*!
+ * \brief MUST return whether or not the ABS Setting is enabled: enabled (true) or disabled (false)
+ */
+ attribute Boolean Enabled readonly
+
+ /*!
+ * \brief MUST return whether or not the ABS is engaged: engaged (true) or idle (false)
+ */
+ attribute Boolean Engaged readonly
+}
+
+
+interface org.automotive.TractionControlSystem extends VehiclePropertyType {
+
+ /*! TractionControlSystem
+ * \brief MUST return whether Traction Control System is Off (false) or On (true)
+ * TODO: Deprecated. Use Engaged. Remove in 0.14
+ */
+ attribute Boolean TractionControlSystem readonly
+
+ /*!
+ * \brief MUST return whether or not the TCS Setting is enabled: enabled (true) or disabled (false)
+ */
+ attribute Boolean Enabled readonly
+
+ /*!
+ * \brief MUST return whether or not the TCS is engaged: engaged (true) or idle (false)
+ */
+ attribute Boolean Engaged readonly
+}
+
+
+interface org.automotive.VehicleTopSpeedLimit extends VehiclePropertyType {
+
+ /*! VehicleTopSpeedLimit
+ * \brief MUST return top rated speed in km/h. 0 = no limit
+ */
+ attribute UInt16 VehicleTopSpeedLimit readonly
+}
+
+
+interface org.automotive.AirbagStatus extends VehiclePropertyType {
+
+ /*! AirbagStatus
+ * \brief MUST return Airbag status (byte) (see AIRBAGSTATUS_*)
+ * TODO: deprecated. Remove in 0.14
+ */
+ attribute UInt16 AirbagStatus readonly
+
+ /*!
+ * \brief MUST return whether or not the airbag is activaged: activated (true) or deactivated (false)
+ */
+ attribute Boolean Activated readonly
+
+ /*!
+ * \brief MUST return whether the airbag is deployed: deployed (true) or not (false)
+ */
+ attribute Boolean Deployed readonly
+}
+
+/// TODO: deprecated. Remove in 0.14
+enumeration AirbagStatus {
+ inactive = 0,
+ active = 1,
+ deployed = 2
+}
+
+/*!
+ * Deprecated. Use "Door". Remove in 0.14
+ */
+interface org.automotive.DoorStatus extends VehiclePropertyType {
+
+ /*! DoorStatus
+ * \brief MUST return Door status (byte).
+ * CLOSED = 0
+ * OPEN = 1
+ * AJAR = 2
+ */
+ attribute UInt16 DoorStatus readonly
+
+ /*! DoorLockStatus
+ * \brief MUST return Door status (bool locked = true, unlocked = false).
+ */
+ attribute Boolean DoorLockStatus
+
+ /*! ChildLockStatus
+ * \brief MUST return Child lock status of rear doors. active = true, inactive = false.
+ * Setting this to 'true' will prevent the rear doors from being opened
+ * from the inside.
+ */
+ ///TODO: Deprecated in 0.14. Use org.automotive.ChildLockStatus
+ attribute Boolean ChildLockStatus
+}
+
+enumeration DoorStatus {
+ open = "open",
+ ajar = "ajar",
+ closed = "closed"
+}
+
+interface org.automotive.Door extends VehiclePropertyType {
+
+ /*! Status
+ * \brief MUST return Door status (byte). See DOORSTATUS_*
+ */
+ attribute DoorStatus Status readonly
+
+ /*! Lock
+ * \brief MUST return Door status (bool locked = true, unlocked = false).
+ */
+ attribute Boolean Lock
+
+ /*! ChildLock
+ * \brief MUST return Child lock status of rear doors. active = true, inactive = false.
+ * Setting this to 'true' will prevent the rear doors from being opened
+ * from the inside.
+ */
+ attribute Boolean ChildLock
+}
+
+///TODO: Deprecated in 0.14. Use org.automotive.Seat
+interface org.automotive.SeatBelt extends VehiclePropertyType {
+
+ /*! Status
+ * \brief MUST return Seat Belt Status (bool: Fasten = true, Unfastened = false)
+ */
+ attribute Boolean Status readonly
+}
+
+///TODO: Deprecated in 0.14. Use org.automotive.Seat
+interface org.automotive.OccupantStatus extends VehiclePropertyType {
+
+ /*! OccupantStatus
+ * \brief MUST return status of Occupant (byte, see
+ */
+ attribute UInt16 OccupantStatus readonly
+}
+
+
+interface org.automotive.ObstacleDistance extends VehiclePropertyType {
+
+ /*! ObstacleDistance
+ * \brief MUST return Distance Sensor distance (Double) in m.
+ */
+ attribute Double ObstacleDistance readonly
+}
+
+
+interface org.automotive.NightMode extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return whether or not the system is in NightMode or not. True = Night time, False = Day time
+ * Deprecated. Will be removed in 0.14. Use "Mode"
+ */
+ attribute Boolean NightMode readonly
+
+ /*!
+ * \brief MUST return whether or not the system is in NightMode or not. True = Night time, False = Day time
+ */
+ attribute Boolean Mode readonly
+}
+
+
+interface org.automotive.DrivingMode extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return whether or not the system is in DrivingMode or not. 1 = Driving, 0 = Not Driving
+ */
+ attribute UInt16 DrivingMode readonly
+
+ /*!
+ * \brief MUST return true if vehicle is in driving mode
+ */
+ attribute Boolean Mode readonly
+}
+
+
+interface org.automotive.KeyId extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute String KeyId readonly
+}
+
+interface org.automotive.Language extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute String Language readonly
+}
+
+
+interface org.automotive.MeasurementSystem extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return 0 = Metric, 1 = ImperialUS, 2 = ImperialUK
+ */
+ attribute UInt16 MeasurementSystem readonly
+}
+
+
+///TODO Deprecated. Use org.automotive.Mirror. Remove in 0.14
+interface org.automotive.MirrorSetting extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt8 Pan readonly
+ attribute UInt8 Tilt readonly
+}
+
+
+///TODO Deprecated. Use org.automotive.SeadAdjustment. Remove in 0.14
+interface org.automotive.SeatPosition extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 Recline readonly
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 Slide readonly
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 CushionHeight readonly
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 Headrest readonly
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 BackCushion readonly
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 SideCushion readonly
+}
+
+
+interface org.automotive.SteeringWheelPosition extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 Tilt readonly
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 Slide readonly
+}
+
+
+interface org.automotive.DashboardIllumination extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 DashboardIllumination readonly
+}
+
+///TODO Deprecated. Use org.automotive.VehicleSound. Remove in 0.14
+interface org.automotive.GeneratedVehicleSoundMode extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return Sound Mode: 0 = Normal, 1 = Quiet, 2 = Sportive
+ */
+ attribute UInt16 GeneratedVehicleSoundMode readonly
+}
+
+
+/*! SteeringWheelAngle
+ *\brief
+ * Deprecated. Use SteeringWheel
+ */
+interface org.automotive.SteeringWheelAngle extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return angle of the steering wheel. 0-359 degrees.
+ */
+ attribute UInt16 SteeringWheelAngle readonly
+}
+
+interface org.automotive.SteeringWheel extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return angle of steering wheel off centerline (Unit: degrees -:degrees to the left, +:degrees to the right)
+ */
+ attribute Int16 Angle readonly
+}
+
+interface org.automotive.DriverId extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return driver ID. Driver Id is an abstract and can be determined
+ * from multiple sources including bluetooth, key, key fob, etc.
+ */
+ attribute String DriverId readonly
+}
+
+interface org.automotive.ThrottlePosition extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return throttle position as a percentage (Unit: percentage, 0%: closed, 100%: fully open)
+ */
+ attribute Uint8 Value readonly
+}
+
+interface org.automotive.EngineCoolant extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return engine coolant level (Unit: percentage 0%: empty, 100%: full)
+ */
+ attribute Uint16 Level readonly
+
+ /*!
+ * \brief MUST return engine coolant temperature (Unit: celcius)
+ */
+ attribute Int16 Temperature readonly
+}
+
+interface org.automotive.PowertrainTorque extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return powertrain torque (Unit: newton meters)
+ */
+ attribute UInt16 Value readonly
+}
+
+interface org.automotive.AcceleratorPedalPosition extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return accelerator pedal position as a percentage (Unit: percentage, 0%: released pedal, 100%: fully depressed)
+ */
+ attribute UInt8 Value readonly
+}
+
+interface org.automotive.WheelTick extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return number of ticks per second (Unit: ticks per second)
+ */
+ attribute UInt8 Value readonly
+}
+
+interface IgnitionTime : VehicleCommonDataType {
+ /*!
+ * \brief MUST return time at ignition on
+ */
+ attribute UInt64 ignitionOnTime readonly
+
+ /*!
+ * \brief MUST return time at ignition off
+ */
+ attribute UInt64 ignitionOffTime readonly
+}
+
+interface org.automotive.YawRate extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return yaw rate of vehicle. (Unit: degrees per second)
+ */
+ attribute Int16 Value readonly
+}
+
+interface org.automotive.BrakeOperation extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed
+ */
+ attribute Boolean BrakePedalDepressed readonly
+}
+
+enumeration Button {
+ home = "home",
+ back = "back",
+ search = "search",
+ call = "call",
+ end_call = "end_call",
+ media_play = "media_play",
+ media_next = "media_next",
+ media_previous = "media_previous",
+ media_pause = "media_pause",
+ voice_recognize = "voice_recognize",
+ enter = "enter",
+ left = "left",
+ right = "right",
+ up = "up",
+ down = "down"
+}
+
+enumeration ButtonEventType {
+ press = "press",
+ long_press = "long_press",
+ release = "release"
+}
+
+interface VehicleButton {
+ /*!
+ * \brief MUST return the button corresponding to the event.
+ */
+ attribute Button button readonly
+
+ /*!
+ * \brief MUST return the type of event
+ */
+ attribute ButtonEventType state readonly
+}
+
+interface org.automotive.ButtonEvent extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return the button events that occured. This supports multiple simultanious button events.
+ */
+ attribute array Button of VehicleButton readonly
+}
+
+interface org.automotive.TransmissionOil extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return current temperature of the transmission oil(Unit: celsius).
+ */
+ attribute Int8 Temperature readonly
+
+ /*!
+ * \brief MUST return transmission oil wear (Unit: percentage, 0: no wear, 100: completely worn).
+ */
+ attribute UInt8 Wear readonly
+}
+
+interface org.automotive.TransmissionClutch extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return transmission clutch wear (Unit: percentage, 0: no wear, 100: completely worn).
+ */
+ attribute UInt8 Wear readonly
+}
+
+interface org.automotive.BrakeMaintenance extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return brake pad wear (Unit: percentage, 0%: no wear, 100%: completely worn).
+ */
+ attribute UInt8 PadWear readonly
+
+ /*!
+ * \brief MUST return brake fluid level (Unit: percentage, 0%: empty, 100%: full).
+ */
+ attribute UInt8 FluidLevel readonly
+
+ /*!
+ * \brief MUST return true if brake fluid level: low (true), not low (false)
+ */
+ attribute Boolean FluidLevelLow readonly
+
+ /*!
+ * \brief MUST return true if brakes are worn: worn (true), not worn (false)
+ */
+ attribute Boolean BrakesWorn readonly
+}
+
+interface org.automotive.WasherFluid extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return washer fluid level (Unit: percentage, 0%: empty, 100%: full).
+ */
+ attribute UInt8 Level readonly
+
+ /*!
+ * \brief MUST return true if washer fluid level is low: low (true), not low: (false)
+ */
+ attribute Boolean LevelLow readonly
+}
+
+interface org.automotive.MalfunctionIndicator extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return true if washer fluid level is low: low (true), not low: (false)
+ */
+ attribute Boolean On readonly
+}
+
+interface org.automotive.Diagnostic extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return engine runtime (Unit: seconds)
+ */
+ attribute UInt32 AccumulatedEngineRuntime readonly
+
+ /*!
+ * \brief MUST return distance travelled since the codes were last cleared (Unit: meters)
+ */
+ attribute UInt32 DistanceSinceCodeCleared readonly
+
+ /*!
+ * \brief MUST return distance travelled with the malfunction indicator light on (Unit: meters)
+ */
+ attribute UInt32 DistanceWithMILOn readonly
+
+ /*!
+ * \brief MUST return time elapsed with the malfunction indicator light on (Unit: seconds)
+ */
+ attribute UInt32 TimeRunMILOn readonly
+
+ /*!
+ * \brief MUST return time elapsed since the trouble codes were last cleared (Unit: seconds)
+ */
+ attribute UInt32 TimeTroubleCodeClear readonly
+}
+
+interface org.automotive.Mirror extends VehiclePropertyType {
+
+ /*!
+ * \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)
+ */
+ attribute UInt8 MirrorPan
+
+ /*!
+ * \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)
+ */
+ attribute UInt8 MirrorTilt
+}
+
+interface org.automotive.SeatAdjustment extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return seat back recline position as percent to completely reclined (Unit: percentage, 0%: fully forward, 100%: fully reclined)
+ */
+ attribute UInt8 ReclineSeatBack
+
+ /*!
+ * \brief MUST return seat slide position as percentage of distance travelled away from forwardmost position (Unit: percentage, 0%: farthest forward, 100%: farthest back)
+ */
+ attribute UInt8 SeatSlide
+
+ /*!
+ * \brief MUST return seat cushion height position as a percentage of upward distance travelled (Unit: percentage, 0%:lowest. 100%:highest)
+ */
+ attribute UInt8 SeatCushionHeight
+
+ /*!
+ * \brief MUST return headrest position as a percentage of upward distance travelled (Unit: percentage, 0%: lowest, 100%: highest)
+ */
+ attribute UInt8 SeatHeadrest
+
+ /*!
+ * \brief MUST return back cushion position as a percentage of lumbar curvature (Unit: percentage, 0%: flat, 100%: maximum curvature)
+ */
+ attribute UInt8 SeatBackCushion
+
+ /*!
+ * \brief MUST return sides of back cushion position as a percentage of curvature (Unit: percentage, 0%: flat, 100%: maximum curvature)
+ */
+ attribute UInt8 SeatSideCushion
+}
+
+enumeration DriveModeType {
+ comfort = "comfort",
+ auto = "auto",
+ sport = "sport",
+ eco = "eco",
+ manual = "manual",
+ winter = "winter"
+}
+
+interface org.automotive.DriveMode extends VehiclePropertyType {
+ /*!
+ * \brief MUST return vehicle drive mode. See http://w3c.github.io/automotive-bg/data_spec.html#idl-def-DriveModeEnum
+ */
+ attribute DriveModeType DriveMode
+}
+
+interface org.automotive.DashboardIllumination extends VehiclePropertyType {
+ /*!
+ * \brief MUST return illumination of dashboard as a percentage (Unit: percentage, 0%: none, 100%: maximum illumination)
+ */
+ attribute UInt8 DashboardIllumination
+}
+
+interface org.automotive.VehicleSound extends VehiclePropertyType {
+ /*!
+ * \brief MUST return active noise control status: not-activated (false), activated (true)
+ */
+ attribute Boolean ActiveNoiseControlMode
+
+ /*!
+ * \brief MUST return active noise control status: not-activated (false), activated (true)
+ */
+ attribute Boolean EngineSoundEnhancementMode
+
+ /*!
+ * \brief MUST return array of available sounds. See EngineSoundEnhancementMode
+ */
+ attribute array EngineSoundEnhancementMode of String readonly
+}
+
+interface org.automotive.ElectronicStabilityControl extends VehiclePropertyType {
+ /*!
+ * \brief MUST return whether or not the ESC Setting is enabled: enabled (true) or disabled (false)
+ */
+ attribute Boolean Enabled readonly
+
+ /*!
+ * \brief MUST return whether or not the ESC is engaged: engaged (true) or idle (false)
+ */
+ attribute Boolean Engaged readonly
+}
+
+interface org.automotive.TopSpeedLimit extends VehiclePropertyType {
+ /*!
+ * \brief MUST return whether or not the ESC Setting is enabled: enabled (true) or disabled (false)
+ */
+ attribute UInt16 Speed readonly
+}
+
+interface org.automotive.ChildSafetyLock extends VehiclePropertyType {
+ /*!
+ * \brief MUST return whether or not the Child Safety Lock is locked: locked (true) or unlocked (false)
+ */
+ attribute Boolean Lock
+}
+
+enumeration OccupantStatus {
+ adult = "adult",
+ child = "child",
+ vacant = "vacant"
+}
+
+enumeration IdentificationTypeEnum {
+ pin = "pin",
+ keyfob = "keyfob",
+ Bluetooth = "Bluetooth",
+ NFC = "NFC",
+ fingerprint = "fingerprint",
+ camera = "camera",
+ voice = "voice"
+}
+
+interface org.automotive.Seat extends VehiclePropertyType {
+ /*!
+ * \brief MUST return the status of seat occupant
+ */
+ attribute OccupantStatus Occupant
+
+ /*!
+ * \brief MUST return whether or not the seat belt is fastened: fastened (true) or unfastened (false)
+ */
+ attribute Boolean SeatBelt
+
+ /*!
+ * \brief MUST return occupant identifier
+ */
+ attribute String OccupantName
+
+ /*!
+ * \brief MUST return identification type
+ */
+ attribute IdentificationTypeEnum IdentificationType
+}
+
+interface org.automotive.AtmosphericPressure extends VehiclePropertyType {
+ /*!
+ * \brief MUST return the current atmospheric pressure outside of the vehicle (Unit: hectopascal)
+ */
+ attribute UInt16 Pressure
+}
+
+enumeration LaneDepartureStatus {
+ off = "off",
+ pause = "pause",
+ running = "running"
+}
+
+interface org.automotive.LaneDepartureDetection extends VehiclePropertyType {
+ /*!
+ * \brief MUST return current status of Lane departure warning function.
+ */
+ attribute LaneDepartureStatus Status readonly
+}
+
+enumeration AlarmStatus {
+ disarmed = "disarmed",
+ prearmed = "prearmed",
+ armed = "armed",
+ alarmed = "alarmed"
+}
+
+interface org.automotive.Alarm extends VehiclePropertyType {
+ /*!
+ * \brief MUST return the current status of vehicle Alarm System.
+ */
+ attribute AlarmStatus Status
+}
+
+enumeration ParkingBrakeStatus {
+ inactive = "inactive",
+ active = "active",
+ error = "error"
+}
+
+interface org.automotive.ParkingBrake extends VehiclePropertyType {
+ /*!
+ * \brief MUST return the current status of vehicle Alarm System.
+ */
+ attribute ParkingBrakeStatus Status readonly
+}