summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevron Rees <kevron.m.rees@intel.com>2014-06-27 15:00:02 -0700
committerKevron Rees <kevron.m.rees@intel.com>2014-08-18 11:00:03 -0700
commit9380ae72ac136421fbcf40df492b92dfe56b34fc (patch)
treec589694e1bbcf409ed11d6c93361eb25353c4472
parent02237d2ef530a5ce4b7b20ce15e5b3deb8825466 (diff)
downloadautomotive-message-broker-9380ae72ac136421fbcf40df492b92dfe56b34fc.tar.gz
cleaned up documents. idl is the authority
-rw-r--r--CMakeLists.txt4
-rw-r--r--docs/CMakeLists.txt7
-rw-r--r--docs/README27
-rw-r--r--docs/amb.fidl1032
-rw-r--r--docs/amb.idl1994
-rw-r--r--docs/amb/README1
-rw-r--r--docs/dbus/README1
-rw-r--r--docs/dbus/html/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.html94
-rw-r--r--docs/dbus/html/amb_8idl_source.html680
-rw-r--r--docs/dbus/html/annotated.html100
-rw-r--r--docs/dbus/html/bc_s.pngbin0 -> 676 bytes
-rw-r--r--docs/dbus/html/bdwn.pngbin0 -> 147 bytes
-rw-r--r--docs/dbus/html/classes.html104
-rw-r--r--docs/dbus/html/closed.pngbin0 -> 132 bytes
-rw-r--r--docs/dbus/html/doxygen.css1366
-rw-r--r--docs/dbus/html/doxygen.pngbin0 -> 3779 bytes
-rw-r--r--docs/dbus/html/dynsections.js97
-rw-r--r--docs/dbus/html/examples.html94
-rw-r--r--docs/dbus/html/files.html99
-rw-r--r--docs/dbus/html/ftv2blank.pngbin0 -> 86 bytes
-rw-r--r--docs/dbus/html/ftv2cl.pngbin0 -> 453 bytes
-rw-r--r--docs/dbus/html/ftv2doc.pngbin0 -> 746 bytes
-rw-r--r--docs/dbus/html/ftv2folderclosed.pngbin0 -> 616 bytes
-rw-r--r--docs/dbus/html/ftv2folderopen.pngbin0 -> 597 bytes
-rw-r--r--docs/dbus/html/ftv2lastnode.pngbin0 -> 86 bytes
-rw-r--r--docs/dbus/html/ftv2link.pngbin0 -> 746 bytes
-rw-r--r--docs/dbus/html/ftv2mlastnode.pngbin0 -> 246 bytes
-rw-r--r--docs/dbus/html/ftv2mnode.pngbin0 -> 246 bytes
-rw-r--r--docs/dbus/html/ftv2mo.pngbin0 -> 403 bytes
-rw-r--r--docs/dbus/html/ftv2node.pngbin0 -> 86 bytes
-rw-r--r--docs/dbus/html/ftv2ns.pngbin0 -> 388 bytes
-rw-r--r--docs/dbus/html/ftv2plastnode.pngbin0 -> 229 bytes
-rw-r--r--docs/dbus/html/ftv2pnode.pngbin0 -> 229 bytes
-rw-r--r--docs/dbus/html/ftv2splitbar.pngbin0 -> 314 bytes
-rw-r--r--docs/dbus/html/ftv2vertline.pngbin0 -> 86 bytes
-rw-r--r--docs/dbus/html/index.html106
-rw-r--r--docs/dbus/html/jquery.js31
-rw-r--r--docs/dbus/html/nav_f.pngbin0 -> 153 bytes
-rw-r--r--docs/dbus/html/nav_g.pngbin0 -> 94 bytes
-rw-r--r--docs/dbus/html/nav_h.pngbin0 -> 98 bytes
-rw-r--r--docs/dbus/html/open.pngbin0 -> 123 bytes
-rw-r--r--docs/dbus/html/search/all_0.html26
-rw-r--r--docs/dbus/html/search/all_0.js4
-rw-r--r--docs/dbus/html/search/all_1.html26
-rw-r--r--docs/dbus/html/search/all_1.js4
-rw-r--r--docs/dbus/html/search/classes_0.html26
-rw-r--r--docs/dbus/html/search/classes_0.js4
-rw-r--r--docs/dbus/html/search/close.pngbin0 -> 273 bytes
-rw-r--r--docs/dbus/html/search/mag_sel.pngbin0 -> 563 bytes
-rw-r--r--docs/dbus/html/search/nomatches.html12
-rw-r--r--docs/dbus/html/search/pages_0.html26
-rw-r--r--docs/dbus/html/search/pages_0.js4
-rw-r--r--docs/dbus/html/search/search.css271
-rw-r--r--docs/dbus/html/search/search.js797
-rw-r--r--docs/dbus/html/search/search_l.pngbin0 -> 604 bytes
-rw-r--r--docs/dbus/html/search/search_m.pngbin0 -> 158 bytes
-rw-r--r--docs/dbus/html/search/search_r.pngbin0 -> 612 bytes
-rw-r--r--docs/dbus/html/sync_off.pngbin0 -> 853 bytes
-rw-r--r--docs/dbus/html/sync_on.pngbin0 -> 845 bytes
-rw-r--r--docs/dbus/html/tab_a.pngbin0 -> 142 bytes
-rw-r--r--docs/dbus/html/tab_b.pngbin0 -> 169 bytes
-rw-r--r--docs/dbus/html/tab_h.pngbin0 -> 177 bytes
-rw-r--r--docs/dbus/html/tab_s.pngbin0 -> 184 bytes
-rw-r--r--docs/dbus/html/tabs.css60
-rw-r--r--docs/dbus/html/unionVariant.html102
-rw-r--r--docs/dbus/latex/Makefile21
-rw-r--r--docs/dbus/latex/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.tex14
-rw-r--r--docs/dbus/latex/annotated.tex4
-rw-r--r--docs/dbus/latex/doxygen.sty464
-rw-r--r--docs/dbus/latex/examples.tex5
-rw-r--r--docs/dbus/latex/index.tex18
-rw-r--r--docs/dbus/latex/refman.tex147
-rw-r--r--docs/dbus/latex/unionVariant.tex15
-rw-r--r--docs/drivingsafety.txt171
-rw-r--r--docs/electricvehicle.txt37
-rw-r--r--docs/environment.txt127
-rw-r--r--docs/maintenance.txt79
-rw-r--r--docs/manager.txt35
-rw-r--r--docs/parking.txt46
-rw-r--r--docs/personalization.txt68
-rw-r--r--docs/runningstatus.txt248
-rw-r--r--docs/vehicleinfo.txt114
-rw-r--r--lib/abstractpropertytype.h19
-rw-r--r--plugins/dbus/abstractproperty.cpp2
-rw-r--r--plugins/dbus/abstractproperty.h29
-rw-r--r--plugins/dbus/dbusplugin.cpp2
86 files changed, 5907 insertions, 2957 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ec843a36..6f962ca1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,8 +68,8 @@ find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.idl.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.idl @ONLY)
- add_custom_target(all ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/docs/amb COMMENT "Generating API documentation with Doxygen" VERBATIM)
- add_custom_target(idl ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.idl WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/docs/dbus COMMENT "Generating DBus API documentation with Doxygen" VERBATIM)
+ add_custom_target(all ALL ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/docs/amb COMMENT "Generating API documentation with Doxygen" VERBATIM)
+ add_custom_target(idl ALL ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.idl WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/docs/dbus COMMENT "Generating DBus API documentation with Doxygen" VERBATIM)
endif(DOXYGEN_FOUND)
endif(enable_docs)
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index cfc0279c..1e04e84e 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -1,7 +1,4 @@
-set(amb_docs drivingsafety.txt electricvehicle.txt environment.txt maintenance.txt parking.txt personalization.txt runningstatus.txt vehicleinfo.txt)
-
-install (FILES ${amb_docs} DESTINATION ${DOC_INSTALL_DIR} COMPONENT Docs)
-
if(enable_docs)
- install (DIRECTORY html DESTINATION ${DOC_INSTALL_DIR} COMPONENT Docs)
+ install (DIRECTORY amb DESTINATION ${DOC_INSTALL_DIR} COMPONENT Docs)
+ install (DIRECTORY dbus DESTINATION ${DOC_INSTALL_DIR} COMPONENT Docs)
endif(enable_docs)
diff --git a/docs/README b/docs/README
index c5d33d30..18e1b1f9 100644
--- a/docs/README
+++ b/docs/README
@@ -1,26 +1,9 @@
-Automotive Message Broker DBus API Documentation
+The Documentation for AMB is generated using Doxygen from amb.fidl.
+To enable doxygen generation of documents, pass -Denable_docs=ON to cmake:
-AMB organizes the API into two general interfaces. First a Manager interface (see manager.txt)
-which includes tools for using the other interfaces. Second is a series of interfaces that
-represent vehicle data. The later follows the schema of "org.automotive.DataType" and are
-contained in verious DBus paths.
+cmake -Denable_docs=ON ..
-The data types are documented in the various *.txt files in this document folder. The manager
-interface is documented in the manager.txt document.
-
-Basic Recommended Usage
-
-It is recomended 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. The
-DBus paths in the various documents are examples of paths and are not gauranteed.
-
-Here is a pseudo-code example of how the api is to be used:
-
-Array<ObjectPath> vehicleSpeedObjects = manager.FindObject("VehicleSpeed");
-
-/// interact with the 'VehicleSpeed' property on the vehicleSpeed object
-
-log(vehicleSpeedObjects[0].VehicleSpeed);
+The internal AMB class and interface documentation is generated in the docs/amb folder.
+DBus API documentation is generated in the docs/dbus folder.
diff --git a/docs/amb.fidl b/docs/amb.fidl
deleted file mode 100644
index 26860e25..00000000
--- a/docs/amb.fidl
+++ /dev/null
@@ -1,1032 +0,0 @@
-/**
-Automotive Message Broker DBus API Documentation
-
-AMB organizes the API into two general interfaces. First a Manager interface (see manager.txt)
-which includes tools for using the other interfaces. Second is a series 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 data types are documented in the various *.txt files in this document folder. The manager
-interface is documented in the manager.txt document.
-
-Basic Recommended Usage
-
-It is recomended 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. The
-DBus paths in the various documents are examples of paths and are not gauranteed.
-
-Here is a pseudo-code example of how the api is to be used:
-
-\example
-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);
-
-\brief AMB DBus API describes the API to access vehicle information over DBus
-**/
-
-
-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
-}
-
-map Dictionary {
- String to Variant
-}
-
-interface VehiclePropertyType {
-
- /**
- * \brief time stamp marking the last time a property in the interface updated
- **/
- attribute Double Time readonly
-
- /**
- * \brief Zone in which the interface is situated.
- **/
- attribute Zone Zone readonly
-
- /**
- * \brief returns 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{ Dictionary 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
- * Manager is a helper interface that helps inform of supported data types and find
- * specified data type objects' path on DBus
- * DBus Path: /
- **/
-interface org.automotive.Manager {
-
- /**
- * \brief returns supported properties
- **/
- method List {
- out { String[] }
- }
-
- /**
- * \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
- * \returns list of object paths that provide the given object Name.
- **/
- method FindObject {
- in {
- String objectName
- }
- out {
- String[] objectPaths
- }
- }
-
- /**
- * \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 returns the path for that zone.
- * \arg String property is the requested property to be retrieved.
- * \arg Zone zone is the zone which the object
- * \returns string representing the DBus Object path
- **/
- method FindObjectForZone {
- in {
- String objectName
- Zone zone
- }
- out {
- String objectPath
- }
- }
-
- /**
- * \brief get a list of zones for a given objectName.
- * \arg String objectName object name.
- * \returns list of zones for the given objectName (@see Zone)
- **/
- method ZonesForObjectName {
- in {
- String objectName
- }
- out {
- UInt32[] zones
- }
- }
-
-}
-
-/** 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 UInt16[] TripMeters
-}
-
-/** org.automotive.Acceleration
- \brief contains information about Acceleration
- DBus Path: variable
-**/
-interface org.automotive.Acceleration extends VehiclePropertyType {
-
- /** X
- * \brief Must return acceleration on the "X" axis as 1/1000 G (gravitational force).
- **/
- attribute UInt16 X readonly
-
- /** Y
- * \brief Must return acceleration on the "Y" axis as 1/1000 G (gravitational force).
- **/
- attribute UInt16 Y readonly
-
- /** Z
- * \brief Must return acceleration on the "Z" axis as 1/1000 G (gravitational force).
- **/
- attribute UInt16 Z readonly
-}
-
-
-interface org.automotive.Transmission extends VehiclePropertyType {
- const UInt16 TRANSMISSIONPOSITION_NEUTRAL = 0;
- const UInt16 TRANSMISSIONPOSITION_FIRST = 1;
- const UInt16 TRANSMISSIONPOSITION_SECOND = 2;
- const UInt16 TRANSMISSIONPOSITION_THIRD = 3;
- const UInt16 TRANSMISSIONPOSITION_FORTH = 4;
- const UInt16 TRANSMISSIONPOSITION_FIFTH = 5;
- const UInt16 TRANSMISSIONPOSITION_SIXTH = 6;
- const UInt16 TRANSMISSIONPOSITION_SEVENTH = 7;
- const UInt16 TRANSMISSIONPOSITION_EIGHTH = 8;
- const UInt16 TRANSMISSIONPOSITION_NINTH = 9;
- const UInt16 TRANSMISSIONPOSITION_TENTH = 10;
- const UInt16 TRANSMISSIONPOSITION_CVT = 64;
- const UInt16 TRANSMISSIONPOSITION_REVERSE = 128;
- const UInt16 TRANSMISSIONPOSITION_PARK = 255;
- const UInt16 TRANSMISSIONMODE_NORMAL = 0;
- const UInt16 TRANSMISSIONMODE_SPORT = 1;
- const UInt16 TRANSMISSIONMODE_ECONOMY = 2;
- const UInt16 TRANSMISSIONMODE_OEMCUSTOM1 = 3;
- const UInt16 TRANSMISSIONMODE_OEMCUSTOM2 = 4;
-
- /** GearPosition
- * \brief Must return transmission gear position (see TRANSMISSIONPOSITION)
- **/
- attribute UInt8 GearPosition readonly
-
- const UInt16 TRANSMISSIONGEARTYPE_AUTO=0;
- const UInt16 TRANSMISSIONGEARTYPE_MANUAL=1;
- const UInt16 TRANSMISSIONGEARTYPE_CV=2;
-
- /** TransmissionGearType
- * \brief MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).
- * See TRANSMISSIONGEARTYPE
- **/
- attribute UInt8 Type;
-
- /** Mode
- * \brief Must return transmission Mode (see
- **/
- attribute UInt8 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)
- **/
- attribute Boolean Activated readonly
-
- /** Speed
- * \brief Must return target Cruise Control speed in kilometers per hour (kph).
- **/
- attribute UInt16 Speed readonly
-}
-
-
-interface org.automotive.WheelBrake extends VehiclePropertyType {
-
- /** Engaged
- * \brief Must return Wheel Brake status: Engaged = true, disengaged = false
- **/
- attribute Boolean Engaged readonly
-}
-
-
-interface org.automotive.LightStatus extends VehiclePropertyType {
-
- /** Head
- * \brief Must return headlight status: on = true, off = false.
- **/
- attribute Boolean Head readonly
-
- /** RightTurn
- * \brief Must return right turn signal status: on = true, off = false.
- **/
- attribute Boolean RightTurn readonly
-
- /** LeftTurn
- * \brief Must return left turn signal status: on = true, off = false.
- **/
- attribute Boolean LeftTurn readonly
-
- /** Brake
- * \brief Must return brake signal light status: on = true, off = false.
- **/
- attribute Boolean Brake readonly
-
- /** Fog
- * \brief Must return fog light status: on = true, off = false.
- **/
- attribute Boolean Fog readonly
-
- /** Hazard
- * \brief Must return hazard light status: on = true, off = false.
- **/
- attribute Boolean Hazard readonly
-
- /** Parking
- * \brief Must return parking light status: on = true, off = false.
- **/
- attribute Boolean Parking readonly
-
- /** HighBeam
- * \brief Must return high beam status: on = true, off = false.
- **/
- attribute Boolean HighBeam readonly
-}
-
-
-interface org.automotive.InteriorLightStatus extends VehiclePropertyType {
-
- /** Passenger
- * \brief Must return passenger interior light status: on = true, off = false
- **/
- attribute Boolean Passenger readonly
-
- /** Driver
- * \brief Must return driver interior light status: on = true, off = false
- **/
- attribute Boolean Driver readonly
-
- /** Center
- * \brief Must return center interior light status: on = true, off = false
- **/
- attribute Boolean Center readonly
-}
-
-
-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 kilometers.
- **/
- attribute UInt16 Range readonly
-
- /** InstantConsumption
- * \brief Must return instant fuel consumption in microiliters of fuel per second.
- **/
- attribute UInt16 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;
-}
-
-
-interface org.automotive.EngineOil extends VehiclePropertyType {
-
- /** Remaining
- * \brief Must return remaining engine oil as percentage of fullness.
- **/
- 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
-}
-
-
-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.
- **/
- attribute signed short Interior readonly
-
- /** Exterior
- * \brief Must return the temperature of the exterior of the vehicle in celcius.
- **/
- attribute signed short Exterior readonly
-}
-
-
-interface org.automotive.RainSensor extends VehiclePropertyType {
-
- /** RainSensor
- * \brief Must return level of rain intensity 0: No Rain - 10: Heaviest Rain.
- **/
- attribute UInt16 RainSensor readonly
-}
-
-
-interface org.automotive.WindshieldWiper extends VehiclePropertyType {
- const UInt16 WIPERSPEED_OFF = 0;
- const UInt16 WIPERSPEED_SLOWEST= 1;
- const UInt16 WIPERSPEED_FASTEST = 5;
- const UInt16 WIPERSPEED_AUTO = 10;
-
- /** WindshieldWiper
- * \brief Must return Level of windshield whiper speed (see WIPERSPEED)
- **/
- attribute UInt16 WindshieldWiper readonly
-}
-
-
-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;
-}
-
-
-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.
- **/
- attribute Boolean Defrost;
-}
-
-
-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;
-}
-
-
-interface org.automotive.ConvertibleRoof extends VehiclePropertyType {
-
- /** Openness
- * \brief Must return convertible roof openness percentage.
- **/
- attribute UInt16 Openness;
-}
-
-
-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<UInt16> DoorsPerRow 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
- **/
- attribute UInt16 Odometer 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.
- **/
- attribute UInt16 Brake readonly
-
- /** Washer
- * \brief MUST return Washer fluid level percentage. 0-100.
- **/
- attribute UInt16 Washer readonly
-}
-
-
-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.Tire extends VehiclePropertyType {
-
- /** Pressure
- * \brief MUST return tire pressure in kPa.
- **/
- attribute Double Pressure readonly
-
- /** Temperature
- * \brief MUST return left front tire temperature in Celcius.
- **/
- attribute Double Temperature 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.
- **/
- attribute Boolean ParkingBrake readonly
-}
-
-
-interface org.automotive.ParkingLight extends VehiclePropertyType {
-
- /** ParkingLight
- * must return status of parking light: Engaged = true, Disengaged = false.
- **/
- attribute Boolean ParkingLight readonly
-}
-
-
-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)
- **/
- attribute Boolean AntilockBrakingSystem readonly
-}
-
-
-interface org.automotive.TractionControlSystem extends VehiclePropertyType {
-
- /** TractionControlSystem
- * \brief MUST return whether Traction Control System is Off (false) or On (true)
- **/
- attribute Boolean TractionControlSystem readonly
-}
-
-
-interface org.automotive.VehicleTopSpeedLimit extends VehiclePropertyType {
-
- /** VehicleTopSpeedLimit
- * \brief MUST returns top rated speed in km/h. 0 = no limit
- **/
- attribute UInt16 VehicleTopSpeedLimit readonly
-}
-
-
-interface org.automotive.AirbagStatus extends VehiclePropertyType {
-
- const UInt16 AIRBAGSTATUS_INACTIVE = 0;
- const UInt16 AIRBAGSTATUS_ACTIVE = 1;
- const UInt16 AIRBAGSTATUS_DEPLOYED = 2;
-
- /** AirbagStatus
- * \brief MUST returns Airbag status (byte) (see AIRBAGSTATUS_*)
- **/
- attribute UInt16 AirbagStatus readonly
-}
-
-
-interface org.automotive.DoorStatus extends VehiclePropertyType {
-
- const UInt16 DOORSTATUS_CLOSED = 0;
- const UInt16 DOORSTATUS_OPEN = 1;
- const UInt16 DOORSTATUS_AJAR = 2;
-
- /** DoorStatus
- * \brief MUST returns Door status (byte). See DOORSTATUS_*
- **/
- attribute UInt16 DoorStatus readonly
-
- /** DoorLockStatus
- * \brief MUST returns Door status (bool locked = true, unlocked = false).
- **/
- attribute Boolean DoorLockStatus;
-
- /** ChildLockStatus
- * \brief MUST returns 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 ChildLockStatus;
-}
-
-
-interface org.automotive.SeatBelt extends VehiclePropertyType {
-
- /** Status
- * \brief MUST return Seat Belt Status (bool: Fasten = true, Unfastened = false)
- **/
- attribute Boolean Status readonly
-}
-
-
-interface org.automotive.OccupantStatus extends VehiclePropertyType {
-
- /** OccupantStatus
- * \brief MUST returns status of Occupant (byte, see
- **/
- attribute UInt16 OccupantStatus readonly
-}
-
-
-interface org.automotive.ObstacleDistance extends VehiclePropertyType {
-
- /** ObstacleDistance
- * \brief MUST returns 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
- **/
- attribute Boolean NightMode 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
-}
-
-
-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
-}
-
-
-interface org.automotive.MirrorSetting extends VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- attribute UInt16 Pan readonly
- attribute UInt16 Tilt readonly
-}
-
-
-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
-}
-
-
-interface org.automotive.GeneratedVehicleSoundMode extends VehiclePropertyType {
-
- /**
- * \brief MUST return Sound Mode: 0 = Normal, 1 = Quiet, 2 = Sportive
- **/
- attribute UInt16 GeneratedVehicleSoundMode readonly
-}
-
-
-interface org.automotive.SteeringWheelAngleextends VehiclePropertyType {
-
- /**
- * \brief MUST return angle of the steering wheel. 0-359 degrees.
- **/
- attribute UInt16 SteeringWheelAngle readonly
-}
-
-
-interface org.automotive.ButtoneEventextends VehiclePropertyType {
-
- /**
- * \brief MUST return button event:
- * NoButton =0
- * PlayButton = 1,
- * SkipButton = 1 << 1,
- * PrevButton = 1 << 2,
- * PauseButton = 1 << 3,
- * Preset1Button = 1 << 4,
- * Preset2Button = 1 << 5,
- * Preset3Button = 1 << 6,
- * Preset4Button = 1 << 7,
- * StopButton = 1 << 8,
- * NavigateUpButton = 1 << 9,
- * NavigateDownButton = 1 << 10,
- * NavigateLeftButton = 1 << 11,
- * NavigateRightButton = 1 << 12
- **/
- attribute UInt32 ButtonEvent readonly
-}
-
-
-interface org.automotive.DriverIdextends 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
-}
-
-}
-
diff --git a/docs/amb.idl b/docs/amb.idl
index 05a3f1dd..cbf7bd85 100644
--- a/docs/amb.idl
+++ b/docs/amb.idl
@@ -1,961 +1,1045 @@
-/**
-Details.
-
-\brief Allows access to the vehicle API
-**/
-
-module Vehicle {
-
-[NoInterfaceObject]
-interface VehiclePropertyError {
- const UInt16 PERMISSION_DENIED = 1;
- const UInt16 PROPERTY_UNAVAILABLE = 2;
- const UInt16 TIMEOUT = 3;
- const UInt16 UNKNOWN = 10;
-
- /** code
- * MUST return error code.
- **/
- readonly attribute UInt16 code;
-
- /** message
- * MUST return error message
- **/
- readonly attribute String message;
-};
-
-[NoInterfaceObject]
+/*!
+* \mainpage Automotive Message Broker DBus API Documentation
+*
+* \section intro Instroduction
+* AMB organizes the API into two general interfaces. First a Manager interface (see manager.txt)
+* which includes tools for using the other interfaces. Second is a series 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 data types are documented in the various *.txt files in this document folder. The manager
+* interface is documented in the manager.txt document.
+*
+* \section basic_usage Basic Recommended Usage
+*
+* It is recomended 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. The
+* DBus paths in the various documents are examples of paths and are not gauranteed.
+*
+* \section example Usage Example
+* 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
+*/
+
+/*!
+* 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
+}
+
+/*!
+* VehiclePropertyType
+* \brief VehiclePropertyType is the base class for all Data types.
+*/
interface VehiclePropertyType {
- /**
- * \brief time stamp marking the last time a property in the interface updated
- **/
- readonly attribute Double Time;
-
- /**
- * \brief Zone in which the interface is situated.
- **/
- readonly attribute Zone Zone;
-
- /**
- * \brief returns 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
- **/
- Dict{String,Variant} GetHistory(Double beginTime, Double endTime);
-}
-
-enum Zone {
- None = 0,
- Front = 1,
- Middle = 1 << 1,
- Right = 1 << 2,
- Left = 1 << 3,
- Rear = 1 << 4,
- Center = 1 << 5
-}
-
-/** org.automotive.Manager
+ /*!
+ * \brief time stamp marking the last time a property in the interface updated
+ */
+ attribute Double Time readonly
+
+ /*!
+ * \brief Zone in which the interface is situated.
+ */
+ attribute Zone Zone readonly
+
+ /*!
+ * \brief returns 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{ Dictionary 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
- **/
-[NoInterfaceObject]
+ * Manager is a helper interface that helps inform of supported data types and find
+ * specified data type objects' path on DBus
+ * DBus Path: /
+ */
interface org.automotive.Manager {
- /**
- * \brief returns supported properties
- **/
- Array{String} List();
-
- /**
- * \brief find the DBus object path which matches "objectName" and "zone".
- * \arg String property is the requested property to be retrieved.
- * \arg Zone zone is the zone which the object
- * \returns string representing the DBus Object path
- **/
- String FindObjectForZone(String objectName, Zone zone);
-
- /**
- * \brief find the DBus object path matching the given "objectName".
- *
- * 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
- * \returns list of object paths that provide the given object Name.
- **/
- Array<String> FindObject(String objectName)
-
- /**
- * \brief get a list of zones for a given objectName.
- *
- * 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 object name.
- * \returns list of zones for the given objectName (@see Zone)
- **/
- Array<UInt16> ZonesForObjectName(String objectName)
-};
-
-[NoInterfaceObject]
-interface org.automotive.VehicleSpeed : VehiclePropertyType {
-
- /** Speed
- * \brief Must return Vehicle Speed in kilometers per hour.
- **/
- readonly attribute UInt16 Speed;
-};
-
-[NoInterfaceObject]
-interface org.automotive.EngineSpeed : VehiclePropertyType {
-
- /** EngineSpeed
- * \brief Must return Engine Speed in rotations per minute.
- **/
- readonly attribute UInt16 Speed;
-};
-
-[NoInterfaceObject]
-interface org.automotive.VehiclePowerMode : VehiclePropertyType {
- const UInt16 VEHICLEPOWERMODE_OFF = 0,
- const UInt16 VEHICLEPOWERMODE_ACCESSORY1 = 1,
- const UInt16 VEHICLEPOWERMODE_ACCESSORY2 = 2,
- const UInt16 VEHICLEPOWERMODE_RUN = 3;
-
- /** VehiclePowerMode
- * \brief Must return Vehicle Power mode (see VEHICLEPOWERMODE)
- **/
- readonly attribute octet VehiclePowerMode;
-};
-
-[NoInterfaceObject]
-interface org.automotive.TripMeter : VehiclePropertyType {
-
- /** TripMeters
- * \brief Must return trip meters. Changing any items in the array will reset the item's value to '0'.
- **/
- attribute Array<UInt16> TripMeters;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Acceleration : VehiclePropertyType {
-
- /** X
- * \brief Must return acceleration on the "X" axis as 1/1000 G (gravitational force).
- **/
- readonly attribute UInt16 X;
-
- /** Y
- * \brief Must return acceleration on the "Y" axis as 1/1000 G (gravitational force).
- **/
- readonly attribute UInt16 Y;
-
- /** Z
- * \brief Must return acceleration on the "Z" axis as 1/1000 G (gravitational force).
- **/
- readonly attribute UInt16 Z;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Transmission : VehiclePropertyType {
- const UInt16 TRANSMISSIONPOSITION_NEUTRAL = 0;
- const UInt16 TRANSMISSIONPOSITION_FIRST = 1;
- const UInt16 TRANSMISSIONPOSITION_SECOND = 2;
- const UInt16 TRANSMISSIONPOSITION_THIRD = 3;
- const UInt16 TRANSMISSIONPOSITION_FORTH = 4;
- const UInt16 TRANSMISSIONPOSITION_FIFTH = 5;
- const UInt16 TRANSMISSIONPOSITION_SIXTH = 6;
- const UInt16 TRANSMISSIONPOSITION_SEVENTH = 7;
- const UInt16 TRANSMISSIONPOSITION_EIGHTH = 8;
- const UInt16 TRANSMISSIONPOSITION_NINTH = 9;
- const UInt16 TRANSMISSIONPOSITION_TENTH = 10;
- const UInt16 TRANSMISSIONPOSITION_CVT = 64;
- const UInt16 TRANSMISSIONPOSITION_REVERSE = 128;
- const UInt16 TRANSMISSIONPOSITION_PARK = 255;
- const UInt16 TRANSMISSIONMODE_NORMAL = 0;
- const UInt16 TRANSMISSIONMODE_SPORT = 1;
- const UInt16 TRANSMISSIONMODE_ECONOMY = 2;
- const UInt16 TRANSMISSIONMODE_OEMCUSTOM1 = 3;
- const UInt16 TRANSMISSIONMODE_OEMCUSTOM2 = 4;
-
- /** GearPosition
- * \brief Must return transmission gear position (see TRANSMISSIONPOSITION)
- **/
- readonly attribute octet GearPosition;
-
- const UInt16 TRANSMISSIONGEARTYPE_AUTO=0;
- const UInt16 TRANSMISSIONGEARTYPE_MANUAL=1;
- const UInt16 TRANSMISSIONGEARTYPE_CV=2;
-
- /** TransmissionGearType
- * \brief MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).
- * See TRANSMISSIONGEARTYPE
- **/
- readonly attribute octet Type;
-
- /** Mode
- * \brief Must return transmission Mode (see
- **/
- readonly attribute octet Mode;
-};
-
-[NoInterfaceObject]
-interface org.automotive.CruiseControlStatus : VehiclePropertyType {
-
- /** Activated
- * \brief Must return whether or not the Cruise Control system is active (true) or inactive (false)
- **/
- readonly attribute Boolean Activated;
-
- /** Speed
- * \brief Must return target Cruise Control speed in kilometers per hour (kph).
- **/
- readonly attribute UInt16 Speed;
-};
-
-[NoInterfaceObject]
-interface org.automotive.WheelBrake : VehiclePropertyType {
-
- /** Engaged
- * \brief Must return Wheel Brake status: Engaged = true, disengaged = false
- **/
- readonly attribute Boolean Engaged;
-};
-
-[NoInterfaceObject]
-interface org.automotive.LightStatus : VehiclePropertyType {
-
- /** Head
- * \brief Must return headlight status: on = true, off = false.
- **/
- readonly attribute Boolean Head;
-
- /** RightTurn
- * \brief Must return right turn signal status: on = true, off = false.
- **/
- readonly attribute Boolean RightTurn;
-
- /** LeftTurn
- * \brief Must return left turn signal status: on = true, off = false.
- **/
- readonly attribute Boolean LeftTurn;
-
- /** Brake
- * \brief Must return brake signal light status: on = true, off = false.
- **/
- readonly attribute Boolean Brake;
-
- /** Fog
- * \brief Must return fog light status: on = true, off = false.
- **/
- readonly attribute Boolean Fog;
-
- /** Hazard
- * \brief Must return hazard light status: on = true, off = false.
- **/
- readonly attribute Boolean Hazard;
-
- /** Parking
- * \brief Must return parking light status: on = true, off = false.
- **/
- readonly attribute Boolean Parking;
-
- /** HighBeam
- * \brief Must return high beam status: on = true, off = false.
- **/
- readonly attribute Boolean HighBeam;
-};
-
-[NoInterfaceObject]
-interface org.automotive.InteriorLightStatus : VehiclePropertyType {
-
- /** Passenger
- * \brief Must return passenger interior light status: on = true, off = false
- **/
- readonly attribute Boolean Passenger;
-
- /** Driver
- * \brief Must return driver interior light status: on = true, off = false
- **/
- readonly attribute Boolean Driver;
-
- /** Center
- * \brief Must return center interior light status: on = true, off = false
- **/
- readonly attribute Boolean Center;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Horn : VehiclePropertyType {
-
- /** On
- * \brief Must return horn status: on = true, off = false
- **/
- readonly attribute Boolean On;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Fuel : VehiclePropertyType {
-
- /** Level
- * \brief Must return fuel level as a percentage of fullness.
- **/
- readonly attribute UInt16 Level;
-
- /** Range
- * \brief Must return estimated fuel range in kilometers.
- **/
- readonly attribute UInt16 Range;
-
- /** InstantConsumption
- * \brief Must return instant fuel consumption in microiliters of fuel per second.
- **/
- readonly attribute UInt16 InstantConsumption;
-
- /** InstantEconomy
- * \brief Must return instant fuel 'economy' in kilometers per liter of fuel.
- **/
- readonly attribute UInt16 InstantEconomy;
-
- /** 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;
-};
-
-[NoInterfaceObject]
-interface org.automotive.EngineOil : VehiclePropertyType {
-
- /** Remaining
- * \brief Must return remaining engine oil as percentage of fullness.
- **/
- readonly attribute UInt16 Remaining;
-
- /** Temperature
- * \brief Must return Engine Oil Temperature in Celcius.
- **/
- readonly attribute long Temperature;
-
- /** Pressure
- * \brief Must return Engine Oil Pressure in kPa.
- **/
- readonly attribute UInt16 Pressure;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Location : VehiclePropertyType {
-
- /** Latitude
- * \brief Must return latitude in Deg.Min (-180, +180)
- **/
- readonly attribute Double Latitude;
-
- /** Longitude
- * \brief Must return longitude in Deg.Min (-90, +90)
- **/
- readonly attribute Double Longitude;
-
- /** Altitude
- * \brief Must return altitude in meters above sea-level (0).
- **/
- readonly attribute Double Altitude;
-
- /** Direction
- * \brief Must return direction in Degrees (0-360)
- **/
- readonly attribute UInt16 Direction;
-};
-
-[NoInterfaceObject]
-interface org.automotive.ExteriorBrightness : VehiclePropertyType {
-
- /** ExteriorBrightness
- * \brief Must return the brightness outside the vehicle in lux.
- **/
- readonly attribute UInt16 ExteriorBrightness;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Temperature : VehiclePropertyType {
-
- /** Interior
- * \brief Must return the temperature of the interior of the vehicle in celcius.
- **/
- readonly attribute signed short Interior;
-
- /** Exterior
- * \brief Must return the temperature of the exterior of the vehicle in celcius.
- **/
- readonly attribute signed short Exterior;
-};
-
-[NoInterfaceObject]
-interface org.automotive.RainSensor : VehiclePropertyType {
-
- /** RainSensor
- * \brief Must return level of rain intensity 0: No Rain - 10: Heaviest Rain.
- **/
- readonly attribute UInt16 RainSensor;
-};
-
-[NoInterfaceObject]
-interface org.automotive.WindshieldWiper : VehiclePropertyType {
- const UInt16 WIPERSPEED_OFF = 0;
- const UInt16 WIPERSPEED_SLOWEST= 1;
- const UInt16 WIPERSPEED_FASTEST = 5;
- const UInt16 WIPERSPEED_AUTO = 10;
-
- /** WindshieldWiper
- * \brief Must return Level of windshield whiper speed (see WIPERSPEED)
- **/
- readonly attribute UInt16 WindshieldWiper;
-};
-
-[NoInterfaceObject]
-interface org.automotive.HVAC : 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;
-};
-
-[NoInterfaceObject]
-interface org.automotive.WindowStatus : 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.
- **/
- attribute Boolean Defrost;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Sunroof : 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;
-};
-
-[NoInterfaceObject]
-interface org.automotive.ConvertibleRoof : VehiclePropertyType {
-
- /** Openness
- * \brief Must return convertible roof openness percentage.
- **/
- attribute UInt16 Openness;
-};
-
-[NoInterfaceObject]
-interface org.automotive.VehicleId : VehiclePropertyType {
-
- /** WMI
- * \brief MUST return World Manufacturer Identifier (WMI)
- * WMI is defined by SAE ISO 3780:2009. 3 characters.
- **/
- readonly attribute String WMI;
-
- /** VIN
- * \brief MUST return Vehicle Identification Number (VIN) as defined by ISO 3779. 17 characters.
- **/
- readonly attribute String VIN;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Size : VehiclePropertyType {
-
- /** Width
- * \brief MUST return width of vehicle in mm
- **/
- readonly attribute UInt16 Width;
-
- /** Height
- * \brief MUST return height of vehicle in mm
- **/
- readonly attribute UInt16 Height;
-
- /** Length
- * \brief MUST return length of vehicle in mm
- **/
- readonly attribute UInt16 Length;
-};
-
-[NoInterfaceObject]
-interface org.automotive.FuelInfo : 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
- **/
- readonly attribute UInt16 Type;
-
- /** RefuelPosition
- * \brief MUST return position of refuling (see
- **/
- readonly attribute UInt16 RefuelPosition;
-};
-
-[NoInterfaceObject]
-interface org.automotive.VehicleType : 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
- **/
- readonly attribute UInt16 Type;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Doors : 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).
- **/
- readonly attribute Array<UInt16> DoorsPerRow;
-};
-
-[NoInterfaceObject]
-interface org.automotive.WheelInformation : VehiclePropertyType {
-
- /** FrontWheelRadius
- * \brief MUST return Radius of Front Wheel(s) in mm.
- **/
- readonly attribute UInt16 FrontWheelRadius;
-
- /** RearWheelRadius
- * \brief MUST return Radius of Rear Wheel(s) in mm.
- **/
- readonly attribute UInt16 RearWheelRadius;
-
- /** WheelTrack
- * \brief MUST return Wheel Track in mm.
- **/
- readonly attribute UInt16 WheelTrack;
-
- /** ABS
- * \brief MUST return Antilock Brake System status: on = true, off = false.
- **/
- readonly attribute Boolean ABS;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Odometer : VehiclePropertyType {
-
- /** Odometer
- * \brief MUST return Distance traveled in km
- **/
- readonly attribute UInt16 Odometer;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Fluid : VehiclePropertyType {
-
- /** Transmission
- * \brief MUST return Transmission fluid level percentage. 0-100.
- **/
- readonly attribute UInt16 Transmission;
-
- /** Brake
- * \brief MUST return Brake fluid level percentage. 0-100.
- **/
- readonly attribute UInt16 Brake;
-
- /** Washer
- * \brief MUST return Washer fluid level percentage. 0-100.
- **/
- readonly attribute UInt16 Washer;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Battery : VehiclePropertyType {
-
- /** Voltage
- * \brief MUST return battery voltage.
- **/
- readonly attribute Double Voltage;
-
- /** Current
- * \brief MUST return battery current in Amperes
- **/
- readonly attribute Double Current;
-};
-
-[NoInterfaceObject]
-interface org.automotive.Tire : VehiclePropertyType {
-
- /** Pressure
- * \brief MUST return tire pressure in kPa.
- **/
- readonly attribute Double Pressure;
-
- /** Temperature
- * \brief MUST return left front tire temperature in Celcius.
- **/
- readonly attribute Double Temperature;
-};
-
-[NoInterfaceObject]
-interface org.automotive.SecurityAlert : VehiclePropertyType {
-
- /** SecurityAlert
- * \brief MUST return
- **/
- readonly attribute Boolean SecurityAlert;
-};
-
-[NoInterfaceObject]
-interface org.automotive.ParkingBrake : VehiclePropertyType {
-
- /** ParkingBrake
- * must return status of parking brake: Engaged = true, Disengaged = false.
- **/
- readonly attribute Boolean ParkingBrake;
-};
-
-[NoInterfaceObject]
-interface org.automotive.ParkingLight : VehiclePropertyType {
-
- /** ParkingLight
- * must return status of parking light: Engaged = true, Disengaged = false.
- **/
- readonly attribute Boolean ParkingLight;
-};
-
-[NoInterfaceObject]
-interface org.automotive.HazardLight : VehiclePropertyType {
-
- /** HazardLight
- * must return status of hazard light: Engaged = true, Disengaged = false.
- **/
- readonly attribute Boolean HazardLight;
-};
-
-[NoInterfaceObject]
-interface org.automotive.AntilockBrakingSystem : VehiclePropertyType {
-
- /** AntilockBrakingSystem
- * \brief MUST return whether Antilock Braking System is Idle (false) or Engaged (true)
- **/
- readonly attribute Boolean AntilockBrakingSystem;
-};
-
-[NoInterfaceObject]
-interface org.automotive.TractionControlSystem : VehiclePropertyType {
-
- /** TractionControlSystem
- * \brief MUST return whether Traction Control System is Off (false) or On (true)
- **/
- readonly attribute Boolean TractionControlSystem;
-};
-
-[NoInterfaceObject]
-interface org.automotive.VehicleTopSpeedLimit : VehiclePropertyType {
-
- /** VehicleTopSpeedLimit
- * \brief MUST returns top rated speed in km/h. 0 = no limit
- **/
- readonly attribute UInt16 VehicleTopSpeedLimit;
-};
-
-[NoInterfaceObject]
-interface org.automotive.AirbagStatus : VehiclePropertyType {
-
- const UInt16 AIRBAGSTATUS_INACTIVE = 0;
- const UInt16 AIRBAGSTATUS_ACTIVE = 1;
- const UInt16 AIRBAGSTATUS_DEPLOYED = 2;
-
- /** AirbagStatus
- * \brief MUST returns Airbag status (byte) (see AIRBAGSTATUS_*)
- **/
- readonly attribute UInt16 AirbagStatus;
-};
-
-[NoInterfaceObject]
-interface org.automotive.DoorStatus : VehiclePropertyType {
-
- const UInt16 DOORSTATUS_CLOSED = 0;
- const UInt16 DOORSTATUS_OPEN = 1;
- const UInt16 DOORSTATUS_AJAR = 2;
-
- /** DoorStatus
- * \brief MUST returns Door status (byte). See DOORSTATUS_*
- **/
- readonly attribute UInt16 DoorStatus;
-
- /** DoorLockStatus
- * \brief MUST returns Door status (bool locked = true, unlocked = false).
- **/
- attribute Boolean DoorLockStatus;
-
- /** ChildLockStatus
- * \brief MUST returns 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 ChildLockStatus;
-};
-
-[NoInterfaceObject]
-interface org.automotive.SeatBelt : VehiclePropertyType {
-
- /** Status
- * \brief MUST return Seat Belt Status (bool: Fasten = true, Unfastened = false)
- **/
- readonly attribute Boolean Status;
-};
-
-[NoInterfaceObject]
-interface org.automotive.OccupantStatus : VehiclePropertyType {
-
- /** OccupantStatus
- * \brief MUST returns status of Occupant (byte, see
- **/
- readonly attribute UInt16 OccupantStatus;
-};
-
-[NoInterfaceObject]
-interface org.automotive.ObstacleDistance : VehiclePropertyType {
-
- /** ObstacleDistance
- * \brief MUST returns Distance Sensor distance (Double) in m.
- **/
- readonly attribute Double ObstacleDistance;
-};
-
-[NoInterfaceObject]
-interface org.automotive.NightMode : VehiclePropertyType {
-
- /**
- * \brief MUST return whether or not the system is in NightMode or not. True = Night time, False = Day time
- **/
- readonly attribute Boolean NightMode;
-};
-
-[NoInterfaceObject]
-interface org.automotive.DrivingMode : VehiclePropertyType {
-
- /**
- * \brief MUST return whether or not the system is in DrivingMode or not. 1 = Driving, 0 = Not Driving
- **/
- readonly attribute UInt16 DrivingMode;
-};
-
-[NoInterfaceObject]
-interface org.automotive.KeyId : VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- readonly attribute String KeyId;
-};
-[NoInterfaceObject]
-interface org.automotive.Language : VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- readonly attribute String Language;
-};
-
-[NoInterfaceObject]
-interface org.automotive.MeasurementSystem : VehiclePropertyType {
-
- /**
- * \brief MUST return 0 = Metric, 1 = ImperialUS, 2 = ImperialUK
- **/
- readonly attribute UInt16 MeasurementSystem;
-};
-
-[NoInterfaceObject]
-interface org.automotive.MirrorSetting : VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 Pan;
- readonly attribute UInt16 Tilt;
-};
-
-[NoInterfaceObject]
-interface org.automotive.SeatPosition : VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 Recline;
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 Slide;
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 CushionHeight;
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 Headrest;
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 BackCushion;
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 SideCushion;
-};
-
-[NoInterfaceObject]
-interface org.automotive.SteeringWheelPosition : VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 Tilt;
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 Slide;
-};
-
-[NoInterfaceObject]
-interface org.automotive.DashboardIllumination : VehiclePropertyType {
-
- /**
- * \brief MUST return
- **/
- readonly attribute UInt16 DashboardIllumination;
-};
-
-[NoInterfaceObject]
-interface org.automotive.GeneratedVehicleSoundMode : VehiclePropertyType {
-
- /**
- * \brief MUST return Sound Mode: 0 = Normal, 1 = Quiet, 2 = Sportive
- **/
- readonly attribute UInt16 GeneratedVehicleSoundMode;
-};
-
-[NoInterfaceObject]
-interface org.automotive.SteeringWheelAngle: VehiclePropertyType {
-
- /**
- * \brief MUST return angle of the steering wheel. 0-359 degrees.
- **/
- readonly attribute UInt16 SteeringWheelAngle
-};
-
-[NoInterfaceObject]
-interface org.automotive.ButtoneEvent: VehiclePropertyType {
-
- /**
- * \brief MUST return button event:
- * NoButton =0
- * PlayButton = 1,
- * SkipButton = 1 << 1,
- * PrevButton = 1 << 2,
- * PauseButton = 1 << 3,
- * Preset1Button = 1 << 4,
- * Preset2Button = 1 << 5,
- * Preset3Button = 1 << 6,
- * Preset4Button = 1 << 7,
- * StopButton = 1 << 8,
- * NavigateUpButton = 1 << 9,
- * NavigateDownButton = 1 << 10,
- * NavigateLeftButton = 1 << 11,
- * NavigateRightButton = 1 << 12
- **/
- readonly attribute UInt32 ButtonEvent
-};
-
-[NoInterfaceObject]
-interface org.automotive.DriverId: VehiclePropertyType {
-
- /**
- * \brief MUST return driver ID. Driver Id is an abstract and can be determined
- * from multiple sources including bluetooth, key, key fob, etc.
- **/
- readonly attribute String DriverId;
-};
-
-};
+ /*! List
+ * \brief returns supported properties
+ */
+ method List {
+ out { String[] }
+ }
+
+ /*!
+ * 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
+ * \returns list of object paths that provide the given object Name.
+ */
+ method FindObject {
+ in {
+ String objectName
+ }
+ out {
+ 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 returns the path for that zone.
+ * \arg String property is the requested property to be retrieved.
+ * \arg Zone zone is the zone which the object
+ * \returns string representing the DBus Object path
+ */
+ 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.
+ * \returns list of zones for the given objectName (@see Zone)
+ */
+ method ZonesForObjectName {
+ in {
+ String objectName
+ }
+ out {
+ UInt32[] zones
+ }
+ }
+
+}
+
+/*! 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 UInt16[] TripMeters
+}
+
+/*! org.automotive.Acceleration
+ \brief contains information about Acceleration
+ DBus Path: variable
+*/
+interface org.automotive.Acceleration extends VehiclePropertyType {
+
+ /*! X
+ * \brief Must return acceleration on the "X" axis as 1/1000 G (gravitational force).
+ */
+ attribute UInt16 X readonly
+
+ /*! Y
+ * \brief Must return acceleration on the "Y" axis as 1/1000 G (gravitational force).
+ */
+ attribute UInt16 Y readonly
+
+ /*! Z
+ * \brief Must return acceleration on the "Z" axis as 1/1000 G (gravitational force).
+ */
+ attribute UInt16 Z readonly
+}
+
+
+interface org.automotive.Transmission extends VehiclePropertyType {
+ const UInt16 TRANSMISSIONPOSITION_NEUTRAL = 0;
+ const UInt16 TRANSMISSIONPOSITION_FIRST = 1;
+ const UInt16 TRANSMISSIONPOSITION_SECOND = 2;
+ const UInt16 TRANSMISSIONPOSITION_THIRD = 3;
+ const UInt16 TRANSMISSIONPOSITION_FORTH = 4;
+ const UInt16 TRANSMISSIONPOSITION_FIFTH = 5;
+ const UInt16 TRANSMISSIONPOSITION_SIXTH = 6;
+ const UInt16 TRANSMISSIONPOSITION_SEVENTH = 7;
+ const UInt16 TRANSMISSIONPOSITION_EIGHTH = 8;
+ const UInt16 TRANSMISSIONPOSITION_NINTH = 9;
+ const UInt16 TRANSMISSIONPOSITION_TENTH = 10;
+ const UInt16 TRANSMISSIONPOSITION_CVT = 64;
+ const UInt16 TRANSMISSIONPOSITION_REVERSE = 128;
+ const UInt16 TRANSMISSIONPOSITION_PARK = 255;
+ const UInt16 TRANSMISSIONMODE_NORMAL = 0;
+ const UInt16 TRANSMISSIONMODE_SPORT = 1;
+ const UInt16 TRANSMISSIONMODE_ECONOMY = 2;
+ const UInt16 TRANSMISSIONMODE_OEMCUSTOM1 = 3;
+ const UInt16 TRANSMISSIONMODE_OEMCUSTOM2 = 4;
+
+ /*! GearPosition
+ * \brief Must return transmission gear position (see TRANSMISSIONPOSITION)
+ */
+ attribute UInt8 GearPosition readonly
+
+ const UInt16 TRANSMISSIONGEARTYPE_AUTO=0;
+ const UInt16 TRANSMISSIONGEARTYPE_MANUAL=1;
+ const UInt16 TRANSMISSIONGEARTYPE_CV=2;
+
+ /*! TransmissionGearType
+ * \brief MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).
+ * See TRANSMISSIONGEARTYPE
+ */
+ attribute UInt8 Type;
+
+ /*! Mode
+ * \brief Must return transmission Mode (see
+ */
+ attribute UInt8 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)
+ */
+ attribute Boolean Activated readonly
+
+ /*! Speed
+ * \brief Must return target Cruise Control speed in kilometers per hour (kph).
+ */
+ attribute UInt16 Speed readonly
+}
+
+
+interface org.automotive.WheelBrake extends VehiclePropertyType {
+
+ /*! Engaged
+ * \brief Must return Wheel Brake status: Engaged = true, disengaged = false
+ */
+ attribute Boolean Engaged readonly
+}
+
+
+interface org.automotive.LightStatus extends VehiclePropertyType {
+
+ /*! Head
+ * \brief Must return headlight status: on = true, off = false.
+ */
+ attribute Boolean Head readonly
+
+ /*! RightTurn
+ * \brief Must return right turn signal status: on = true, off = false.
+ */
+ attribute Boolean RightTurn readonly
+
+ /*! LeftTurn
+ * \brief Must return left turn signal status: on = true, off = false.
+ */
+ attribute Boolean LeftTurn readonly
+
+ /*! Brake
+ * \brief Must return brake signal light status: on = true, off = false.
+ */
+ attribute Boolean Brake readonly
+
+ /*! Fog
+ * \brief Must return fog light status: on = true, off = false.
+ */
+ attribute Boolean Fog readonly
+
+ /*! Hazard
+ * \brief Must return hazard light status: on = true, off = false.
+ */
+ attribute Boolean Hazard readonly
+
+ /*! Parking
+ * \brief Must return parking light status: on = true, off = false.
+ */
+ attribute Boolean Parking readonly
+
+ /*! HighBeam
+ * \brief Must return high beam status: on = true, off = false.
+ */
+ attribute Boolean HighBeam readonly
+}
+
+
+interface org.automotive.InteriorLightStatus extends VehiclePropertyType {
+
+ /*! Passenger
+ * \brief Must return passenger interior light status: on = true, off = false
+ */
+ attribute Boolean Passenger readonly
+
+ /*! Driver
+ * \brief Must return driver interior light status: on = true, off = false
+ */
+ attribute Boolean Driver readonly
+
+ /*! Center
+ * \brief Must return center interior light status: on = true, off = false
+ */
+ attribute Boolean Center readonly
+}
+
+
+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 kilometers.
+ */
+ attribute UInt16 Range readonly
+
+ /*! InstantConsumption
+ * \brief Must return instant fuel consumption in microiliters of fuel per second.
+ */
+ attribute UInt16 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;
+}
+
+
+interface org.automotive.EngineOil extends VehiclePropertyType {
+
+ /*! Remaining
+ * \brief Must return remaining engine oil as percentage of fullness.
+ */
+ 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
+}
+
+
+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.
+ */
+ attribute signed short Interior readonly
+
+ /*! Exterior
+ * \brief Must return the temperature of the exterior of the vehicle in celcius.
+ */
+ attribute signed short Exterior readonly
+}
+
+
+interface org.automotive.RainSensor extends VehiclePropertyType {
+
+ /*! RainSensor
+ * \brief Must return level of rain intensity 0: No Rain - 10: Heaviest Rain.
+ */
+ attribute UInt16 RainSensor readonly
+}
+
+
+interface org.automotive.WindshieldWiper extends VehiclePropertyType {
+ const UInt16 WIPERSPEED_OFF = 0;
+ const UInt16 WIPERSPEED_SLOWEST= 1;
+ const UInt16 WIPERSPEED_FASTEST = 5;
+ const UInt16 WIPERSPEED_AUTO = 10;
+
+ /*! WindshieldWiper
+ * \brief Must return Level of windshield whiper speed (see WIPERSPEED)
+ */
+ attribute UInt16 WindshieldWiper readonly
+}
+
+
+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;
+}
+
+
+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.
+ */
+ attribute Boolean Defrost;
+}
+
+
+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;
+}
+
+
+interface org.automotive.ConvertibleRoof extends VehiclePropertyType {
+
+ /*! Openness
+ * \brief Must return convertible roof openness percentage.
+ */
+ attribute UInt16 Openness;
+}
+
+
+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<UInt16> DoorsPerRow 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
+ */
+ attribute UInt16 Odometer 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.
+ */
+ attribute UInt16 Brake readonly
+
+ /*! Washer
+ * \brief MUST return Washer fluid level percentage. 0-100.
+ */
+ attribute UInt16 Washer readonly
+}
+
+
+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.Tire extends VehiclePropertyType {
+
+ /*! Pressure
+ * \brief MUST return tire pressure in kPa.
+ */
+ attribute Double Pressure readonly
+
+ /*! Temperature
+ * \brief MUST return left front tire temperature in Celcius.
+ */
+ attribute Double Temperature 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.
+ */
+ attribute Boolean ParkingBrake readonly
+}
+
+
+interface org.automotive.ParkingLight extends VehiclePropertyType {
+
+ /*! ParkingLight
+ * must return status of parking light: Engaged = true, Disengaged = false.
+ */
+ attribute Boolean ParkingLight readonly
+}
+
+
+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)
+ */
+ attribute Boolean AntilockBrakingSystem readonly
+}
+
+
+interface org.automotive.TractionControlSystem extends VehiclePropertyType {
+
+ /*! TractionControlSystem
+ * \brief MUST return whether Traction Control System is Off (false) or On (true)
+ */
+ attribute Boolean TractionControlSystem readonly
+}
+
+
+interface org.automotive.VehicleTopSpeedLimit extends VehiclePropertyType {
+
+ /*! VehicleTopSpeedLimit
+ * \brief MUST returns top rated speed in km/h. 0 = no limit
+ */
+ attribute UInt16 VehicleTopSpeedLimit readonly
+}
+
+
+interface org.automotive.AirbagStatus extends VehiclePropertyType {
+
+ const UInt16 AIRBAGSTATUS_INACTIVE = 0;
+ const UInt16 AIRBAGSTATUS_ACTIVE = 1;
+ const UInt16 AIRBAGSTATUS_DEPLOYED = 2;
+
+ /*! AirbagStatus
+ * \brief MUST returns Airbag status (byte) (see AIRBAGSTATUS_*)
+ */
+ attribute UInt16 AirbagStatus readonly
+}
+
+
+interface org.automotive.DoorStatus extends VehiclePropertyType {
+
+ const UInt16 DOORSTATUS_CLOSED = 0;
+ const UInt16 DOORSTATUS_OPEN = 1;
+ const UInt16 DOORSTATUS_AJAR = 2;
+
+ /*! DoorStatus
+ * \brief MUST returns Door status (byte). See DOORSTATUS_*
+ */
+ attribute UInt16 DoorStatus readonly
+
+ /*! DoorLockStatus
+ * \brief MUST returns Door status (bool locked = true, unlocked = false).
+ */
+ attribute Boolean DoorLockStatus;
+
+ /*! ChildLockStatus
+ * \brief MUST returns 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 ChildLockStatus;
+}
+
+
+interface org.automotive.SeatBelt extends VehiclePropertyType {
+
+ /*! Status
+ * \brief MUST return Seat Belt Status (bool: Fasten = true, Unfastened = false)
+ */
+ attribute Boolean Status readonly
+}
+
+
+interface org.automotive.OccupantStatus extends VehiclePropertyType {
+
+ /*! OccupantStatus
+ * \brief MUST returns status of Occupant (byte, see
+ */
+ attribute UInt16 OccupantStatus readonly
+}
+
+
+interface org.automotive.ObstacleDistance extends VehiclePropertyType {
+
+ /*! ObstacleDistance
+ * \brief MUST returns 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
+ */
+ attribute Boolean NightMode 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
+}
+
+
+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
+}
+
+
+interface org.automotive.MirrorSetting extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return
+ */
+ attribute UInt16 Pan readonly
+ attribute UInt16 Tilt readonly
+}
+
+
+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
+}
+
+
+interface org.automotive.GeneratedVehicleSoundMode extends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return Sound Mode: 0 = Normal, 1 = Quiet, 2 = Sportive
+ */
+ attribute UInt16 GeneratedVehicleSoundMode readonly
+}
+
+
+interface org.automotive.SteeringWheelAngleextends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return angle of the steering wheel. 0-359 degrees.
+ */
+ attribute UInt16 SteeringWheelAngle readonly
+}
+
+
+interface org.automotive.ButtoneEventextends VehiclePropertyType {
+
+ /*!
+ * \brief MUST return button event:
+ * NoButton =0
+ * PlayButton = 1,
+ * SkipButton = 1 << 1,
+ * PrevButton = 1 << 2,
+ * PauseButton = 1 << 3,
+ * Preset1Button = 1 << 4,
+ * Preset2Button = 1 << 5,
+ * Preset3Button = 1 << 6,
+ * Preset4Button = 1 << 7,
+ * StopButton = 1 << 8,
+ * NavigateUpButton = 1 << 9,
+ * NavigateDownButton = 1 << 10,
+ * NavigateLeftButton = 1 << 11,
+ * NavigateRightButton = 1 << 12
+ */
+ attribute UInt32 ButtonEvent readonly
+}
+
+
+interface org.automotive.DriverIdextends 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
+}
+
+}
diff --git a/docs/amb/README b/docs/amb/README
new file mode 100644
index 00000000..52661229
--- /dev/null
+++ b/docs/amb/README
@@ -0,0 +1 @@
+amb internal structure API directory
diff --git a/docs/dbus/README b/docs/dbus/README
new file mode 100644
index 00000000..1f950244
--- /dev/null
+++ b/docs/dbus/README
@@ -0,0 +1 @@
+AMB DBus API documentation
diff --git a/docs/dbus/html/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.html b/docs/dbus/html/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.html
new file mode 100644
index 00000000..ba86173b
--- /dev/null
+++ b/docs/dbus/html/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: /home/tripzero/src/automotive-message-broker/docs/amb.idl</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">/home/tripzero/src/automotive-message-broker/docs/amb.idl</div> </div>
+</div><!--header-->
+<div class="contents">
+<p>var manager = dbus.interface("org.automotive.Manager", "/");</p>
+<p>var speedObjectPaths = manager.FindObject("VehicleSpeed");</p>
+<p>var speedObject = dbus.interface("org.automotive.VehicleSpeed", speedObjectPaths[0]);</p>
+<p>console.log("Vehicle Speed: " + speedObject.Speed);</p>
+<div class="fragment"></div><!-- fragment --> </div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 10:43:26 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/amb_8idl_source.html b/docs/dbus/html/amb_8idl_source.html
new file mode 100644
index 00000000..5e06a505
--- /dev/null
+++ b/docs/dbus/html/amb_8idl_source.html
@@ -0,0 +1,680 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: /home/tripzero/src/automotive-message-broker/docs/amb.idl Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">/home/tripzero/src/automotive-message-broker/docs/amb.idl</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="unionVariant.html"> 39</a></span>&#160;<span class="keyword">union </span><a class="code" href="unionVariant.html">Variant</a> {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; UInt8 uint8</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; Int8 int8</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; UInt16 uint16</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; Int16 int16</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; UInt32 uint32</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Int32 int32</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; UInt32 uin32</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; Int64 int64</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; UInt64 uint64</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Boolean <span class="keywordtype">boolean</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; Float <span class="keywordtype">float</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; Double <span class="keywordtype">double</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; String <span class="keywordtype">string</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ByteBuffer bytebuffer</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;map Dictionary {</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; String to <a class="code" href="unionVariant.html">Variant</a></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">interface </span>VehiclePropertyType {</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; attribute Double Time readonly</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; attribute Zone Zone readonly</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; method GetHistory(Double beginTime, Double endTime) {</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; out{ Dictionary result}</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;enumeration Zone {</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; None = 0,</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; Front = 1,</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; Middle = 1 &lt;&lt; 1,</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; Right = 1 &lt;&lt; 2,</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; Left = 1 &lt;&lt; 3,</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; Rear = 1 &lt;&lt; 4,</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; Center = 1 &lt;&lt; 5</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">interface </span>org.automotive.Manager {</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; method List {</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; out { String[] }</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; method FindObject {</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; in {</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; String objectName</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; out {</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; String[] objectPaths</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; method FindObjectForZone {</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; in {</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; String objectName</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; Zone zone</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; out {</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; String objectPath</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; method ZonesForObjectName {</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; in {</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; String objectName</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; out {</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; UInt32[] zones</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword">interface </span>org.automotive.VehicleSpeed <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; attribute UInt16 Speed readonly</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;}</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="keyword">interface </span>org.automotive.EngineSpeed <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; attribute UInt16 Speed readonly</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;enumeration PowerMode {</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Off = 0</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; Accessory1 = 1</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; Accessory2 = 2</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; Run = 3</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;}</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="keyword">interface </span>org.automotive.VehiclePowerMode <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; attribute PowerMode VehiclePowerMode readonly</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="keyword">interface </span>org.automotive.TripMeter <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; attribute UInt16[] TripMeters</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;}</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword">interface </span>org.automotive.Acceleration <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; attribute UInt16 X readonly</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; attribute UInt16 Y readonly</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; attribute UInt16 Z readonly</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword">interface </span>org.automotive.Transmission <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_NEUTRAL = 0;</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_FIRST = 1;</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_SECOND = 2;</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_THIRD = 3;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_FORTH = 4;</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_FIFTH = 5;</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_SIXTH = 6;</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_SEVENTH = 7;</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_EIGHTH = 8;</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_NINTH = 9;</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_TENTH = 10;</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_CVT = 64;</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_REVERSE = 128;</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONPOSITION_PARK = 255;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONMODE_NORMAL = 0;</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONMODE_SPORT = 1;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONMODE_ECONOMY = 2;</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONMODE_OEMCUSTOM1 = 3;</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONMODE_OEMCUSTOM2 = 4;</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; attribute UInt8 GearPosition readonly</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONGEARTYPE_AUTO=0;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONGEARTYPE_MANUAL=1;</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> UInt16 TRANSMISSIONGEARTYPE_CV=2;</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; attribute UInt8 Type;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; attribute UInt8 Mode readonly</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keyword">interface </span>org.automotive.CruiseControlStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; attribute Boolean Activated readonly</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; attribute UInt16 Speed readonly</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="keyword">interface </span>org.automotive.WheelBrake <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; attribute Boolean Engaged readonly</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;}</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="keyword">interface </span>org.automotive.LightStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; attribute Boolean Head readonly</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; attribute Boolean RightTurn readonly</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; attribute Boolean LeftTurn readonly</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; attribute Boolean Brake readonly</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; attribute Boolean Fog readonly</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; attribute Boolean Hazard readonly</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; attribute Boolean Parking readonly</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; attribute Boolean HighBeam readonly</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword">interface </span>org.automotive.InteriorLightStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; attribute Boolean Passenger readonly</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; attribute Boolean Driver readonly</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; attribute Boolean Center readonly</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;}</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="keyword">interface </span>org.automotive.Horn <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; attribute Boolean On readonly</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;}</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="keyword">interface </span>org.automotive.Fuel <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; attribute UInt16 Level readonly</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; attribute UInt16 Range readonly</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; attribute UInt16 InstantConsumption readonly</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; attribute UInt16 InstantEconomy readonly</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; attribute UInt16 AverageEconomy;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;}</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="keyword">interface </span>org.automotive.EngineOil <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; attribute UInt16 Remaining readonly</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; attribute <span class="keywordtype">long</span> Temperature readonly</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; attribute UInt16 Pressure readonly</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="keyword">interface </span>org.automotive.Location <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; attribute Double Latitude readonly</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; attribute Double Longitude readonly</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; attribute Double Altitude readonly</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; attribute UInt16 Direction readonly</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;}</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="keyword">interface </span>org.automotive.ExteriorBrightness <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; attribute UInt16 ExteriorBrightness readonly</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="keyword">interface </span>org.automotive.Temperature <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; attribute <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Interior readonly</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; attribute <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Exterior readonly</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="keyword">interface </span>org.automotive.RainSensor <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; attribute UInt16 RainSensor readonly</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="keyword">interface </span>org.automotive.WindshieldWiper <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> UInt16 WIPERSPEED_OFF = 0;</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">const</span> UInt16 WIPERSPEED_SLOWEST= 1;</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> UInt16 WIPERSPEED_FASTEST = 5;</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">const</span> UInt16 WIPERSPEED_AUTO = 10;</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; attribute UInt16 WindshieldWiper readonly</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;}</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="keyword">interface </span>org.automotive.HVAC <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> UInt16 AIRFLOWDIRECTION_FRONTPANEL = 0;</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">const</span> UInt16 AIRFLOWDIRECTION_FLOORDUCT= 1;</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">const</span> UInt16 AIRFLOWDIRECTION_FRONT = 0x02;</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> UInt16 AIRFLOWDIRECTION_DEFROSTER = 0x04;</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; attribute UInt16 AirflowDirection;</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; attribute UInt16 FanSpeed;</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; attribute UInt16 TargetTemperature;</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; attribute Boolean AirConditioning;</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; attribute Boolean AirRecirculation;</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; attribute Boolean Heater;</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; attribute Boolean SteeringWheelHeater;</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; attribute UInt16 SeatHeater;</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; attribute Boolean SeatCooler;</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="keyword">interface </span>org.automotive.WindowStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; attribute UInt16 Openness;</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; attribute Boolean Defrost;</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;}</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="keyword">interface </span>org.automotive.Sunroof <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; attribute UInt16 Openness;</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; attribute UInt16 Tilt;</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="keyword">interface </span>org.automotive.ConvertibleRoof <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; attribute UInt16 Openness;</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;}</div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="keyword">interface </span>org.automotive.VehicleId <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; attribute String WMI readonly</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; attribute String VIN readonly</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;}</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="keyword">interface </span>org.automotive.Size <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; attribute UInt16 Width readonly</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; attribute UInt16 Height readonly</div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; attribute UInt16 Length readonly</div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;}</div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;</div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="keyword">interface </span>org.automotive.FuelInfo <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> UInt16 FUELTYPE_GASOLINE = 0;</div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">const</span> UInt16 FUELTYPE_HIGH_OCTANE= 1;</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> UInt16 FUELTYPE_DIESEL = 2;</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">const</span> UInt16 FUELTYPE_ELECTRIC = 3;</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">const</span> UInt16 FUELTYPE_HYDROGEN = 4;</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> UInt16 REFUELPOSITION_LEFT = 0;</div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> UInt16 REFUELPOSITION_RIGHT= 1;</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> UInt16 REFUELPOSITION_FRONT = 2;</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keyword">const</span> UInt16 REFUELPOSITION_REAR = 3;</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; attribute UInt16 Type readonly</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; attribute UInt16 RefuelPosition readonly</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;}</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="keyword">interface </span>org.automotive.VehicleType <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keyword">const</span> UInt16 VEHICLETYPE_SEDAN = 0;</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> UInt16 VEHICLETYPE_COUPE= 1;</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> UInt16 VEHICLETYPE_CABRIOLE = 2;</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keyword">const</span> UInt16 VEHICLETYPE_ROADSTER = 3;</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> UInt16 VEHICLETYPE_SUV = 4;</div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">const</span> UInt16 VEHICLETYPE_TRUCK = 5;</div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; attribute UInt16 Type readonly</div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;}</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="keyword">interface </span>org.automotive.Doors <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; attribute Array&lt;UInt16&gt; DoorsPerRow readonly</div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;}</div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="keyword">interface </span>org.automotive.WheelInformation <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; attribute UInt16 FrontWheelRadius readonly</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; attribute UInt16 RearWheelRadius readonly</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; attribute UInt16 WheelTrack readonly</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; attribute Boolean ABS readonly</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;}</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="keyword">interface </span>org.automotive.Odometer <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; attribute UInt16 Odometer readonly</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;}</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="keyword">interface </span>org.automotive.Fluid <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; attribute UInt16 Transmission readonly</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; attribute UInt16 Brake readonly</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; attribute UInt16 Washer readonly</div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;}</div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="keyword">interface </span>org.automotive.Battery <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; attribute Double Voltage readonly</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; attribute Double Current readonly</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;}</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="keyword">interface </span>org.automotive.Tire <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; attribute Double Pressure readonly</div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; attribute Double Temperature readonly</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;}</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="keyword">interface </span>org.automotive.SecurityAlert <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;</div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; attribute Boolean SecurityAlert readonly</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;}</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="keyword">interface </span>org.automotive.ParkingBrake <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; attribute Boolean ParkingBrake readonly</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;}</div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="keyword">interface </span>org.automotive.ParkingLight <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; attribute Boolean ParkingLight readonly</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;}</div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;</div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;</div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;<span class="keyword">interface </span>org.automotive.HazardLight <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; attribute Boolean HazardLight readonly</div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;}</div>
+<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;</div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;</div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="keyword">interface </span>org.automotive.AntilockBrakingSystem <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; attribute Boolean AntilockBrakingSystem readonly</div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;}</div>
+<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;</div>
+<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div>
+<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="keyword">interface </span>org.automotive.TractionControlSystem <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; attribute Boolean TractionControlSystem readonly</div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;}</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;</div>
+<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="keyword">interface </span>org.automotive.VehicleTopSpeedLimit <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; attribute UInt16 VehicleTopSpeedLimit readonly</div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;}</div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;<span class="keyword">interface </span>org.automotive.AirbagStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> UInt16 AIRBAGSTATUS_INACTIVE = 0;</div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">const</span> UInt16 AIRBAGSTATUS_ACTIVE = 1;</div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keyword">const</span> UInt16 AIRBAGSTATUS_DEPLOYED = 2;</div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; attribute UInt16 AirbagStatus readonly</div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;}</div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="keyword">interface </span>org.automotive.DoorStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keyword">const</span> UInt16 DOORSTATUS_CLOSED = 0;</div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keyword">const</span> UInt16 DOORSTATUS_OPEN = 1;</div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keyword">const</span> UInt16 DOORSTATUS_AJAR = 2;</div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; attribute UInt16 DoorStatus readonly</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; attribute Boolean DoorLockStatus;</div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;</div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; attribute Boolean ChildLockStatus;</div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;}</div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="keyword">interface </span>org.automotive.SeatBelt <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;</div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; attribute Boolean Status readonly</div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;}</div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;<span class="keyword">interface </span>org.automotive.OccupantStatus <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;</div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; attribute UInt16 OccupantStatus readonly</div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;}</div>
+<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div>
+<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;</div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="keyword">interface </span>org.automotive.ObstacleDistance <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;</div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; attribute Double ObstacleDistance readonly</div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;}</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;</div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="keyword">interface </span>org.automotive.NightMode <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div>
+<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; attribute Boolean NightMode readonly</div>
+<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;}</div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;</div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;<span class="keyword">interface </span>org.automotive.DrivingMode <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; attribute UInt16 DrivingMode readonly</div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;}</div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;</div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;</div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="keyword">interface </span>org.automotive.KeyId <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; attribute String KeyId readonly</div>
+<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
+<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="keyword">interface </span>org.automotive.Language <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;</div>
+<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; attribute String Language readonly</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;}</div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;<span class="keyword">interface </span>org.automotive.MeasurementSystem <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;</div>
+<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; attribute UInt16 MeasurementSystem readonly</div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;}</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;</div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;</div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;<span class="keyword">interface </span>org.automotive.MirrorSetting <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;</div>
+<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; attribute UInt16 Pan readonly</div>
+<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; attribute UInt16 Tilt readonly</div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;}</div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;</div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div>
+<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="keyword">interface </span>org.automotive.SeatPosition <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; attribute UInt16 Recline readonly</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; attribute UInt16 Slide readonly</div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;</div>
+<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; attribute UInt16 CushionHeight readonly</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div>
+<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; attribute UInt16 Headrest readonly</div>
+<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;</div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; attribute UInt16 BackCushion readonly</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; attribute UInt16 SideCushion readonly</div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;}</div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;</div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;<span class="keyword">interface </span>org.automotive.SteeringWheelPosition <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;</div>
+<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; attribute UInt16 Tilt readonly</div>
+<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div>
+<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; attribute UInt16 Slide readonly</div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;}</div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;</div>
+<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="keyword">interface </span>org.automotive.DashboardIllumination <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;</div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; attribute UInt16 DashboardIllumination readonly</div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;}</div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;</div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;</div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="keyword">interface </span>org.automotive.GeneratedVehicleSoundMode <span class="keyword">extends</span> VehiclePropertyType {</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; attribute UInt16 GeneratedVehicleSoundMode readonly</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="keyword">interface </span>org.automotive.SteeringWheelAngleextends VehiclePropertyType {</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; attribute UInt16 SteeringWheelAngle readonly</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;}</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="keyword">interface </span>org.automotive.ButtoneEventextends VehiclePropertyType {</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; attribute UInt32 ButtonEvent readonly</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;}</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;<span class="keyword">interface </span>org.automotive.DriverIdextends VehiclePropertyType {</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; attribute String DriverId readonly</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;}</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;}</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div>
+<div class="ttc" id="unionVariant_html"><div class="ttname"><a href="unionVariant.html">Variant</a></div><div class="ttdef"><b>Definition:</b> amb.idl:39</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 13:34:19 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/annotated.html b/docs/dbus/html/annotated.html
new file mode 100644
index 00000000..0a039c13
--- /dev/null
+++ b/docs/dbus/html/annotated.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: Class List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Class List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="unionVariant.html" target="_self">Variant</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 13:34:19 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/bc_s.png b/docs/dbus/html/bc_s.png
new file mode 100644
index 00000000..224b29aa
--- /dev/null
+++ b/docs/dbus/html/bc_s.png
Binary files differ
diff --git a/docs/dbus/html/bdwn.png b/docs/dbus/html/bdwn.png
new file mode 100644
index 00000000..940a0b95
--- /dev/null
+++ b/docs/dbus/html/bdwn.png
Binary files differ
diff --git a/docs/dbus/html/classes.html b/docs/dbus/html/classes.html
new file mode 100644
index 00000000..0c473dff
--- /dev/null
+++ b/docs/dbus/html/classes.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: Class Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Class Index</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_V">V</a></div>
+<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td></td></tr>
+<tr><td valign="top"><a class="el" href="unionVariant.html">Variant</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_V">V</a></div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 13:34:19 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/closed.png b/docs/dbus/html/closed.png
new file mode 100644
index 00000000..98cc2c90
--- /dev/null
+++ b/docs/dbus/html/closed.png
Binary files differ
diff --git a/docs/dbus/html/doxygen.css b/docs/dbus/html/doxygen.css
new file mode 100644
index 00000000..f0f36f89
--- /dev/null
+++ b/docs/dbus/html/doxygen.css
@@ -0,0 +1,1366 @@
+/* The standard CSS for doxygen 1.8.6 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
diff --git a/docs/dbus/html/doxygen.png b/docs/dbus/html/doxygen.png
new file mode 100644
index 00000000..3ff17d80
--- /dev/null
+++ b/docs/dbus/html/doxygen.png
Binary files differ
diff --git a/docs/dbus/html/dynsections.js b/docs/dbus/html/dynsections.js
new file mode 100644
index 00000000..ed092c7f
--- /dev/null
+++ b/docs/dbus/html/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function(){
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.attr('src','ftv2folderopen.png');
+ a.attr('src','ftv2mnode.png');
+ $(this).show();
+ } else if (l==level+1) {
+ i.attr('src','ftv2folderclosed.png');
+ a.attr('src','ftv2pnode.png');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ //The clicked row
+ var currentRow = $('#row_'+id);
+ var currentRowImages = currentRow.find("img");
+
+ //All rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ //Only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() {
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+ return this.id.match(re);
+ });
+
+ //First row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
+ currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
+ rows.filter("[id^=row_"+id+"]").hide();
+ } else { //We are SHOWING
+ //All sub images
+ var childImages = childRows.find("img");
+ var childImg = childImages.filter("[id^=img]");
+ var childArr = childImages.filter("[id^=arr]");
+
+ currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
+ currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
+ childImg.attr('src','ftv2folderclosed.png'); //children closed
+ childArr.attr('src','ftv2pnode.png'); //children closed
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+
diff --git a/docs/dbus/html/examples.html b/docs/dbus/html/examples.html
new file mode 100644
index 00000000..3c689946
--- /dev/null
+++ b/docs/dbus/html/examples.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: Examples</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li class="current"><a href="examples.html"><span>Examples</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Examples</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all examples:</div><ul>
+<li><a class="el" href="_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.html">/home/tripzero/src/automotive-message-broker/docs/amb.idl</a></li>
+
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 10:43:26 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/files.html b/docs/dbus/html/files.html
new file mode 100644
index 00000000..4f0584eb
--- /dev/null
+++ b/docs/dbus/html/files.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="amb_8idl_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>amb.idl</b></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 13:34:19 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/ftv2blank.png b/docs/dbus/html/ftv2blank.png
new file mode 100644
index 00000000..63c605bb
--- /dev/null
+++ b/docs/dbus/html/ftv2blank.png
Binary files differ
diff --git a/docs/dbus/html/ftv2cl.png b/docs/dbus/html/ftv2cl.png
new file mode 100644
index 00000000..132f6577
--- /dev/null
+++ b/docs/dbus/html/ftv2cl.png
Binary files differ
diff --git a/docs/dbus/html/ftv2doc.png b/docs/dbus/html/ftv2doc.png
new file mode 100644
index 00000000..17edabff
--- /dev/null
+++ b/docs/dbus/html/ftv2doc.png
Binary files differ
diff --git a/docs/dbus/html/ftv2folderclosed.png b/docs/dbus/html/ftv2folderclosed.png
new file mode 100644
index 00000000..bb8ab35e
--- /dev/null
+++ b/docs/dbus/html/ftv2folderclosed.png
Binary files differ
diff --git a/docs/dbus/html/ftv2folderopen.png b/docs/dbus/html/ftv2folderopen.png
new file mode 100644
index 00000000..d6c7f676
--- /dev/null
+++ b/docs/dbus/html/ftv2folderopen.png
Binary files differ
diff --git a/docs/dbus/html/ftv2lastnode.png b/docs/dbus/html/ftv2lastnode.png
new file mode 100644
index 00000000..63c605bb
--- /dev/null
+++ b/docs/dbus/html/ftv2lastnode.png
Binary files differ
diff --git a/docs/dbus/html/ftv2link.png b/docs/dbus/html/ftv2link.png
new file mode 100644
index 00000000..17edabff
--- /dev/null
+++ b/docs/dbus/html/ftv2link.png
Binary files differ
diff --git a/docs/dbus/html/ftv2mlastnode.png b/docs/dbus/html/ftv2mlastnode.png
new file mode 100644
index 00000000..0b63f6d3
--- /dev/null
+++ b/docs/dbus/html/ftv2mlastnode.png
Binary files differ
diff --git a/docs/dbus/html/ftv2mnode.png b/docs/dbus/html/ftv2mnode.png
new file mode 100644
index 00000000..0b63f6d3
--- /dev/null
+++ b/docs/dbus/html/ftv2mnode.png
Binary files differ
diff --git a/docs/dbus/html/ftv2mo.png b/docs/dbus/html/ftv2mo.png
new file mode 100644
index 00000000..4bfb80f7
--- /dev/null
+++ b/docs/dbus/html/ftv2mo.png
Binary files differ
diff --git a/docs/dbus/html/ftv2node.png b/docs/dbus/html/ftv2node.png
new file mode 100644
index 00000000..63c605bb
--- /dev/null
+++ b/docs/dbus/html/ftv2node.png
Binary files differ
diff --git a/docs/dbus/html/ftv2ns.png b/docs/dbus/html/ftv2ns.png
new file mode 100644
index 00000000..72e3d71c
--- /dev/null
+++ b/docs/dbus/html/ftv2ns.png
Binary files differ
diff --git a/docs/dbus/html/ftv2plastnode.png b/docs/dbus/html/ftv2plastnode.png
new file mode 100644
index 00000000..c6ee22f9
--- /dev/null
+++ b/docs/dbus/html/ftv2plastnode.png
Binary files differ
diff --git a/docs/dbus/html/ftv2pnode.png b/docs/dbus/html/ftv2pnode.png
new file mode 100644
index 00000000..c6ee22f9
--- /dev/null
+++ b/docs/dbus/html/ftv2pnode.png
Binary files differ
diff --git a/docs/dbus/html/ftv2splitbar.png b/docs/dbus/html/ftv2splitbar.png
new file mode 100644
index 00000000..fe895f2c
--- /dev/null
+++ b/docs/dbus/html/ftv2splitbar.png
Binary files differ
diff --git a/docs/dbus/html/ftv2vertline.png b/docs/dbus/html/ftv2vertline.png
new file mode 100644
index 00000000..63c605bb
--- /dev/null
+++ b/docs/dbus/html/ftv2vertline.png
Binary files differ
diff --git a/docs/dbus/html/index.html b/docs/dbus/html/index.html
new file mode 100644
index 00000000..66a7ad43
--- /dev/null
+++ b/docs/dbus/html/index.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: Automotive Message Broker DBus API Documentation</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Automotive Message Broker DBus API Documentation </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h1><a class="anchor" id="intro"></a>
+Instroduction</h1>
+<p>AMB organizes the API into two general interfaces. First a Manager interface (see manager.txt) which includes tools for using the other interfaces. Second is a series 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.</p>
+<p>The data types are documented in the various *.txt files in this document folder. The manager interface is documented in the manager.txt document.</p>
+<h1><a class="anchor" id="basic_usage"></a>
+Basic Recommended Usage</h1>
+<p>It is recomended 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. The DBus paths in the various documents are examples of paths and are not gauranteed.</p>
+<h1><a class="anchor" id="example"></a>
+Usage Example</h1>
+<p>Here is a pseudo-code example of how the api is to be used:</p>
+<div class="fragment"><div class="line">var manager = dbus.interface(<span class="stringliteral">&quot;org.automotive.Manager&quot;</span>, <span class="stringliteral">&quot;/&quot;</span>);</div>
+<div class="line"></div>
+<div class="line">var speedObjectPaths = manager.FindObject(<span class="stringliteral">&quot;VehicleSpeed&quot;</span>);</div>
+<div class="line"></div>
+<div class="line">var speedObject = dbus.interface(<span class="stringliteral">&quot;org.automotive.VehicleSpeed&quot;</span>, speedObjectPaths[0]);</div>
+<div class="line"></div>
+<div class="line">console.log(<span class="stringliteral">&quot;Vehicle Speed: &quot;</span> + speedObject.Speed);</div>
+</div><!-- fragment --> </div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 13:34:19 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/html/jquery.js b/docs/dbus/html/jquery.js
new file mode 100644
index 00000000..c197801c
--- /dev/null
+++ b/docs/dbus/html/jquery.js
@@ -0,0 +1,31 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))
+}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;
+if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false
+}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1
+},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);
+ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;
+if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)
+}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b
+})}})(window);
diff --git a/docs/dbus/html/nav_f.png b/docs/dbus/html/nav_f.png
new file mode 100644
index 00000000..72a58a52
--- /dev/null
+++ b/docs/dbus/html/nav_f.png
Binary files differ
diff --git a/docs/dbus/html/nav_g.png b/docs/dbus/html/nav_g.png
new file mode 100644
index 00000000..8c6c13ef
--- /dev/null
+++ b/docs/dbus/html/nav_g.png
Binary files differ
diff --git a/docs/dbus/html/nav_h.png b/docs/dbus/html/nav_h.png
new file mode 100644
index 00000000..33389b10
--- /dev/null
+++ b/docs/dbus/html/nav_h.png
Binary files differ
diff --git a/docs/dbus/html/open.png b/docs/dbus/html/open.png
new file mode 100644
index 00000000..30f75c7e
--- /dev/null
+++ b/docs/dbus/html/open.png
Binary files differ
diff --git a/docs/dbus/html/search/all_0.html b/docs/dbus/html/search/all_0.html
new file mode 100644
index 00000000..17b6da85
--- /dev/null
+++ b/docs/dbus/html/search/all_0.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/dbus/html/search/all_0.js b/docs/dbus/html/search/all_0.js
new file mode 100644
index 00000000..6429bc53
--- /dev/null
+++ b/docs/dbus/html/search/all_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['automotive_20message_20broker_20dbus_20api_20documentation',['Automotive Message Broker DBus API Documentation',['../index.html',1,'']]]
+];
diff --git a/docs/dbus/html/search/all_1.html b/docs/dbus/html/search/all_1.html
new file mode 100644
index 00000000..e2906449
--- /dev/null
+++ b/docs/dbus/html/search/all_1.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/dbus/html/search/all_1.js b/docs/dbus/html/search/all_1.js
new file mode 100644
index 00000000..fdcebf14
--- /dev/null
+++ b/docs/dbus/html/search/all_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['variant',['Variant',['../unionVariant.html',1,'']]]
+];
diff --git a/docs/dbus/html/search/classes_0.html b/docs/dbus/html/search/classes_0.html
new file mode 100644
index 00000000..fabdc036
--- /dev/null
+++ b/docs/dbus/html/search/classes_0.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/dbus/html/search/classes_0.js b/docs/dbus/html/search/classes_0.js
new file mode 100644
index 00000000..fdcebf14
--- /dev/null
+++ b/docs/dbus/html/search/classes_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['variant',['Variant',['../unionVariant.html',1,'']]]
+];
diff --git a/docs/dbus/html/search/close.png b/docs/dbus/html/search/close.png
new file mode 100644
index 00000000..9342d3df
--- /dev/null
+++ b/docs/dbus/html/search/close.png
Binary files differ
diff --git a/docs/dbus/html/search/mag_sel.png b/docs/dbus/html/search/mag_sel.png
new file mode 100644
index 00000000..81f6040a
--- /dev/null
+++ b/docs/dbus/html/search/mag_sel.png
Binary files differ
diff --git a/docs/dbus/html/search/nomatches.html b/docs/dbus/html/search/nomatches.html
new file mode 100644
index 00000000..b1ded27e
--- /dev/null
+++ b/docs/dbus/html/search/nomatches.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
diff --git a/docs/dbus/html/search/pages_0.html b/docs/dbus/html/search/pages_0.html
new file mode 100644
index 00000000..c51c8345
--- /dev/null
+++ b/docs/dbus/html/search/pages_0.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/dbus/html/search/pages_0.js b/docs/dbus/html/search/pages_0.js
new file mode 100644
index 00000000..6429bc53
--- /dev/null
+++ b/docs/dbus/html/search/pages_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['automotive_20message_20broker_20dbus_20api_20documentation',['Automotive Message Broker DBus API Documentation',['../index.html',1,'']]]
+];
diff --git a/docs/dbus/html/search/search.css b/docs/dbus/html/search/search.css
new file mode 100644
index 00000000..4d7612ff
--- /dev/null
+++ b/docs/dbus/html/search/search.css
@@ -0,0 +1,271 @@
+/*---------------- Search Box */
+
+#FSearchBox {
+ float: left;
+}
+
+#MSearchBox {
+ white-space : nowrap;
+ position: absolute;
+ float: none;
+ display: inline;
+ margin-top: 8px;
+ right: 0px;
+ width: 170px;
+ z-index: 102;
+ background-color: white;
+}
+
+#MSearchBox .left
+{
+ display:block;
+ position:absolute;
+ left:10px;
+ width:20px;
+ height:19px;
+ background:url('search_l.png') no-repeat;
+ background-position:right;
+}
+
+#MSearchSelect {
+ display:block;
+ position:absolute;
+ width:20px;
+ height:19px;
+}
+
+.left #MSearchSelect {
+ left:4px;
+}
+
+.right #MSearchSelect {
+ right:5px;
+}
+
+#MSearchField {
+ display:block;
+ position:absolute;
+ height:19px;
+ background:url('search_m.png') repeat-x;
+ border:none;
+ width:111px;
+ margin-left:20px;
+ padding-left:4px;
+ color: #909090;
+ outline: none;
+ font: 9pt Arial, Verdana, sans-serif;
+}
+
+#FSearchBox #MSearchField {
+ margin-left:15px;
+}
+
+#MSearchBox .right {
+ display:block;
+ position:absolute;
+ right:10px;
+ top:0px;
+ width:20px;
+ height:19px;
+ background:url('search_r.png') no-repeat;
+ background-position:left;
+}
+
+#MSearchClose {
+ display: none;
+ position: absolute;
+ top: 4px;
+ background : none;
+ border: none;
+ margin: 0px 4px 0px 0px;
+ padding: 0px 0px;
+ outline: none;
+}
+
+.left #MSearchClose {
+ left: 6px;
+}
+
+.right #MSearchClose {
+ right: 2px;
+}
+
+.MSearchBoxActive #MSearchField {
+ color: #000000;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #90A5CE;
+ background-color: #F9FAFC;
+ z-index: 1;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+ font: 8pt Arial, Verdana, sans-serif;
+ padding-left: 2px;
+ padding-right: 12px;
+ border: 0px;
+}
+
+span.SelectionMark {
+ margin-right: 4px;
+ font-family: monospace;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem {
+ display: block;
+ outline-style: none;
+ color: #000000;
+ text-decoration: none;
+ padding-left: 6px;
+ padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+ color: #000000;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem:hover {
+ color: #FFFFFF;
+ background-color: #3D578C;
+ outline-style: none;
+ text-decoration: none;
+ cursor: pointer;
+ display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+ width: 60ex;
+ height: 15em;
+}
+
+#MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000;
+ background-color: #EEF1F7;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+ clear:both;
+ padding-bottom: 15px;
+}
+
+.SREntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+}
+
+body.SRPage {
+ margin: 5px 2px;
+}
+
+.SRChildren {
+ padding-left: 3ex; padding-bottom: .5em
+}
+
+.SRPage .SRChildren {
+ display: none;
+}
+
+.SRSymbol {
+ font-weight: bold;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRScope {
+ display: block;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+ text-decoration: underline;
+}
+
+span.SRScope {
+ padding-left: 4px;
+}
+
+.SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+}
+
+.SRResult {
+ display: none;
+}
+
+DIV.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+ background-color: #F0F3F8;
+}
+
+.pages b {
+ color: white;
+ padding: 5px 5px 3px 5px;
+ background-image: url("../tab_a.png");
+ background-repeat: repeat-x;
+ text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+ line-height: 17px;
+ margin-left: 4px;
+ text-decoration: none;
+}
+
+.hl {
+ font-weight: bold;
+}
+
+#searchresults {
+ margin-bottom: 20px;
+}
+
+.searchpages {
+ margin-top: 10px;
+}
+
diff --git a/docs/dbus/html/search/search.js b/docs/dbus/html/search/search.js
new file mode 100644
index 00000000..3f642171
--- /dev/null
+++ b/docs/dbus/html/search/search.js
@@ -0,0 +1,797 @@
+// Search script generated by doxygen
+// Copyright (C) 2009 by Dimitri van Heesch.
+
+// The code in this file is loosly based on main.js, part of Natural Docs,
+// which is Copyright (C) 2003-2008 Greg Valure
+// Natural Docs is licensed under the GPL.
+
+var indexSectionsWithContent =
+{
+ 0: "av",
+ 1: "v",
+ 2: "a"
+};
+
+var indexSectionNames =
+{
+ 0: "all",
+ 1: "classes",
+ 2: "pages"
+};
+
+function convertToId(search)
+{
+ var result = '';
+ for (i=0;i<search.length;i++)
+ {
+ var c = search.charAt(i);
+ var cn = c.charCodeAt(0);
+ if (c.match(/[a-z0-9\u0080-\uFFFF]/))
+ {
+ result+=c;
+ }
+ else if (cn<16)
+ {
+ result+="_0"+cn.toString(16);
+ }
+ else
+ {
+ result+="_"+cn.toString(16);
+ }
+ }
+ return result;
+}
+
+function getXPos(item)
+{
+ var x = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ x += item.offsetLeft;
+ item = item.offsetParent;
+ }
+ }
+ return x;
+}
+
+function getYPos(item)
+{
+ var y = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ y += item.offsetTop;
+ item = item.offsetParent;
+ }
+ }
+ return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+ Parameters:
+ name - The name of the global variable that will be
+ storing this instance. Is needed to be able to set timeouts.
+ resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, inFrame, label)
+{
+ if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
+
+ // ---------- Instance variables
+ this.name = name;
+ this.resultsPath = resultsPath;
+ this.keyTimeout = 0;
+ this.keyTimeoutLength = 500;
+ this.closeSelectionTimeout = 300;
+ this.lastSearchValue = "";
+ this.lastResultsPage = "";
+ this.hideTimeout = 0;
+ this.searchIndex = 0;
+ this.searchActive = false;
+ this.insideFrame = inFrame;
+ this.searchLabel = label;
+
+ // ----------- DOM Elements
+
+ this.DOMSearchField = function()
+ { return document.getElementById("MSearchField"); }
+
+ this.DOMSearchSelect = function()
+ { return document.getElementById("MSearchSelect"); }
+
+ this.DOMSearchSelectWindow = function()
+ { return document.getElementById("MSearchSelectWindow"); }
+
+ this.DOMPopupSearchResults = function()
+ { return document.getElementById("MSearchResults"); }
+
+ this.DOMPopupSearchResultsWindow = function()
+ { return document.getElementById("MSearchResultsWindow"); }
+
+ this.DOMSearchClose = function()
+ { return document.getElementById("MSearchClose"); }
+
+ this.DOMSearchBox = function()
+ { return document.getElementById("MSearchBox"); }
+
+ // ------------ Event Handlers
+
+ // Called when focus is added or removed from the search field.
+ this.OnSearchFieldFocus = function(isActive)
+ {
+ this.Activate(isActive);
+ }
+
+ this.OnSearchSelectShow = function()
+ {
+ var searchSelectWindow = this.DOMSearchSelectWindow();
+ var searchField = this.DOMSearchSelect();
+
+ if (this.insideFrame)
+ {
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ left += searchField.offsetWidth + 6;
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ left -= searchSelectWindow.offsetWidth;
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+ }
+ else
+ {
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+ }
+
+ // stop selection hide timer
+ if (this.hideTimeout)
+ {
+ clearTimeout(this.hideTimeout);
+ this.hideTimeout=0;
+ }
+ return false; // to avoid "image drag" default event
+ }
+
+ this.OnSearchSelectHide = function()
+ {
+ this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+ this.closeSelectionTimeout);
+ }
+
+ // Called when the content of the search field is changed.
+ this.OnSearchFieldChange = function(evt)
+ {
+ if (this.keyTimeout) // kill running timer
+ {
+ clearTimeout(this.keyTimeout);
+ this.keyTimeout = 0;
+ }
+
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 || e.keyCode==13)
+ {
+ if (e.shiftKey==1)
+ {
+ this.OnSearchSelectShow();
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ child.focus();
+ return;
+ }
+ }
+ return;
+ }
+ else if (window.frames.MSearchResults.searchResults)
+ {
+ var elem = window.frames.MSearchResults.searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+ }
+ else if (e.keyCode==27) // Escape out of the search field
+ {
+ this.DOMSearchField().blur();
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ this.Activate(false);
+ return;
+ }
+
+ // strip whitespaces
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+ if (searchValue != this.lastSearchValue) // search value has changed
+ {
+ if (searchValue != "") // non-empty search
+ {
+ // set timer for search update
+ this.keyTimeout = setTimeout(this.name + '.Search()',
+ this.keyTimeoutLength);
+ }
+ else // empty search field
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ }
+ }
+ }
+
+ this.SelectItemCount = function(id)
+ {
+ var count=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ count++;
+ }
+ }
+ return count;
+ }
+
+ this.SelectItemSet = function(id)
+ {
+ var i,j=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ var node = child.firstChild;
+ if (j==id)
+ {
+ node.innerHTML='&#8226;';
+ }
+ else
+ {
+ node.innerHTML='&#160;';
+ }
+ j++;
+ }
+ }
+ }
+
+ // Called when an search filter selection is made.
+ // set item with index id as the active item
+ this.OnSelectItem = function(id)
+ {
+ this.searchIndex = id;
+ this.SelectItemSet(id);
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+ if (searchValue!="" && this.searchActive) // something was found -> do a search
+ {
+ this.Search();
+ }
+ }
+
+ this.OnSearchSelectKey = function(evt)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+ {
+ this.searchIndex++;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==38 && this.searchIndex>0) // Up
+ {
+ this.searchIndex--;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==13 || e.keyCode==27)
+ {
+ this.OnSelectItem(this.searchIndex);
+ this.CloseSelectionWindow();
+ this.DOMSearchField().focus();
+ }
+ return false;
+ }
+
+ // --------- Actions
+
+ // Closes the results window.
+ this.CloseResultsWindow = function()
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.Activate(false);
+ }
+
+ this.CloseSelectionWindow = function()
+ {
+ this.DOMSearchSelectWindow().style.display = 'none';
+ }
+
+ // Performs a search.
+ this.Search = function()
+ {
+ this.keyTimeout = 0;
+
+ // strip leading whitespace
+ var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+ var code = searchValue.toLowerCase().charCodeAt(0);
+ var idxChar = searchValue.substr(0, 1).toLowerCase();
+ if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
+ {
+ idxChar = searchValue.substr(0, 2);
+ }
+
+ var resultsPage;
+ var resultsPageWithSearch;
+ var hasResultsPage;
+
+ var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+ if (idx!=-1)
+ {
+ var hexCode=idx.toString(16);
+ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+ hasResultsPage = true;
+ }
+ else // nothing available for this search term
+ {
+ resultsPage = this.resultsPath + '/nomatches.html';
+ resultsPageWithSearch = resultsPage;
+ hasResultsPage = false;
+ }
+
+ window.frames.MSearchResults.location = resultsPageWithSearch;
+ var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+ if (domPopupSearchResultsWindow.style.display!='block')
+ {
+ var domSearchBox = this.DOMSearchBox();
+ this.DOMSearchClose().style.display = 'inline';
+ if (this.insideFrame)
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ domPopupSearchResultsWindow.style.position = 'relative';
+ domPopupSearchResultsWindow.style.display = 'block';
+ var width = document.body.clientWidth - 8; // the -8 is for IE :-(
+ domPopupSearchResultsWindow.style.width = width + 'px';
+ domPopupSearchResults.style.width = width + 'px';
+ }
+ else
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+ var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
+ domPopupSearchResultsWindow.style.display = 'block';
+ left -= domPopupSearchResults.offsetWidth;
+ domPopupSearchResultsWindow.style.top = top + 'px';
+ domPopupSearchResultsWindow.style.left = left + 'px';
+ }
+ }
+
+ this.lastSearchValue = searchValue;
+ this.lastResultsPage = resultsPage;
+ }
+
+ // -------- Activation Functions
+
+ // Activates or deactivates the search panel, resetting things to
+ // their default values if necessary.
+ this.Activate = function(isActive)
+ {
+ if (isActive || // open it
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
+ )
+ {
+ this.DOMSearchBox().className = 'MSearchBoxActive';
+
+ var searchField = this.DOMSearchField();
+
+ if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+ {
+ searchField.value = '';
+ this.searchActive = true;
+ }
+ }
+ else if (!isActive) // directly remove the panel
+ {
+ this.DOMSearchBox().className = 'MSearchBoxInactive';
+ this.DOMSearchField().value = this.searchLabel;
+ this.searchActive = false;
+ this.lastSearchValue = ''
+ this.lastResultsPage = '';
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+ // The number of matches from the last run of <Search()>.
+ this.lastMatchCount = 0;
+ this.lastKey = 0;
+ this.repeatOn = false;
+
+ // Toggles the visibility of the passed element ID.
+ this.FindChildElement = function(id)
+ {
+ var parentElement = document.getElementById(id);
+ var element = parentElement.firstChild;
+
+ while (element && element!=parentElement)
+ {
+ if (element.nodeName == 'DIV' && element.className == 'SRChildren')
+ {
+ return element;
+ }
+
+ if (element.nodeName == 'DIV' && element.hasChildNodes())
+ {
+ element = element.firstChild;
+ }
+ else if (element.nextSibling)
+ {
+ element = element.nextSibling;
+ }
+ else
+ {
+ do
+ {
+ element = element.parentNode;
+ }
+ while (element && element!=parentElement && !element.nextSibling);
+
+ if (element && element!=parentElement)
+ {
+ element = element.nextSibling;
+ }
+ }
+ }
+ }
+
+ this.Toggle = function(id)
+ {
+ var element = this.FindChildElement(id);
+ if (element)
+ {
+ if (element.style.display == 'block')
+ {
+ element.style.display = 'none';
+ }
+ else
+ {
+ element.style.display = 'block';
+ }
+ }
+ }
+
+ // Searches for the passed string. If there is no parameter,
+ // it takes it from the URL query.
+ //
+ // Always returns true, since other documents may try to call it
+ // and that may or may not be possible.
+ this.Search = function(search)
+ {
+ if (!search) // get search word from URL
+ {
+ search = window.location.search;
+ search = search.substring(1); // Remove the leading '?'
+ search = unescape(search);
+ }
+
+ search = search.replace(/^ +/, ""); // strip leading spaces
+ search = search.replace(/ +$/, ""); // strip trailing spaces
+ search = search.toLowerCase();
+ search = convertToId(search);
+
+ var resultRows = document.getElementsByTagName("div");
+ var matches = 0;
+
+ var i = 0;
+ while (i < resultRows.length)
+ {
+ var row = resultRows.item(i);
+ if (row.className == "SRResult")
+ {
+ var rowMatchName = row.id.toLowerCase();
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+ if (search.length<=rowMatchName.length &&
+ rowMatchName.substr(0, search.length)==search)
+ {
+ row.style.display = 'block';
+ matches++;
+ }
+ else
+ {
+ row.style.display = 'none';
+ }
+ }
+ i++;
+ }
+ document.getElementById("Searching").style.display='none';
+ if (matches == 0) // no results
+ {
+ document.getElementById("NoMatches").style.display='block';
+ }
+ else // at least one result
+ {
+ document.getElementById("NoMatches").style.display='none';
+ }
+ this.lastMatchCount = matches;
+ return true;
+ }
+
+ // return the first item with index index or higher that is visible
+ this.NavNext = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index++;
+ }
+ return focusItem;
+ }
+
+ this.NavPrev = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index--;
+ }
+ return focusItem;
+ }
+
+ this.ProcessKeys = function(e)
+ {
+ if (e.type == "keydown")
+ {
+ this.repeatOn = false;
+ this.lastKey = e.keyCode;
+ }
+ else if (e.type == "keypress")
+ {
+ if (!this.repeatOn)
+ {
+ if (this.lastKey) this.repeatOn = true;
+ return false; // ignore first keypress after keydown
+ }
+ }
+ else if (e.type == "keyup")
+ {
+ this.lastKey = 0;
+ this.repeatOn = false;
+ }
+ return this.lastKey!=0;
+ }
+
+ this.Nav = function(evt,itemIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ var newIndex = itemIndex-1;
+ var focusItem = this.NavPrev(newIndex);
+ if (focusItem)
+ {
+ var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+ if (child && child.style.display == 'block') // children visible
+ {
+ var n=0;
+ var tmpElem;
+ while (1) // search for last child
+ {
+ tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+ if (tmpElem)
+ {
+ focusItem = tmpElem;
+ }
+ else // found it!
+ {
+ break;
+ }
+ n++;
+ }
+ }
+ }
+ if (focusItem)
+ {
+ focusItem.focus();
+ }
+ else // return focus to search field
+ {
+ parent.document.getElementById("MSearchField").focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = itemIndex+1;
+ var focusItem;
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem && elem.style.display == 'block') // children visible
+ {
+ focusItem = document.getElementById('Item'+itemIndex+'_c0');
+ }
+ if (!focusItem) focusItem = this.NavNext(newIndex);
+ if (focusItem) focusItem.focus();
+ }
+ else if (this.lastKey==39) // Right
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'block';
+ }
+ else if (this.lastKey==37) // Left
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'none';
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+
+ this.NavChild = function(evt,itemIndex,childIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ if (childIndex>0)
+ {
+ var newIndex = childIndex-1;
+ document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+ }
+ else // already at first child, jump to parent
+ {
+ document.getElementById('Item'+itemIndex).focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = childIndex+1;
+ var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+ if (!elem) // last child, jump to parent next parent
+ {
+ elem = this.NavNext(itemIndex+1);
+ }
+ if (elem)
+ {
+ elem.focus();
+ }
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+}
+
+function setKeyActions(elem,action)
+{
+ elem.setAttribute('onkeydown',action);
+ elem.setAttribute('onkeypress',action);
+ elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+ elem.setAttribute('class',attr);
+ elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+ var results = document.getElementById("SRResults");
+ for (var e=0; e<searchData.length; e++)
+ {
+ var id = searchData[e][0];
+ var srResult = document.createElement('div');
+ srResult.setAttribute('id','SR_'+id);
+ setClassAttr(srResult,'SRResult');
+ var srEntry = document.createElement('div');
+ setClassAttr(srEntry,'SREntry');
+ var srLink = document.createElement('a');
+ srLink.setAttribute('id','Item'+e);
+ setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+ setClassAttr(srLink,'SRSymbol');
+ srLink.innerHTML = searchData[e][1][0];
+ srEntry.appendChild(srLink);
+ if (searchData[e][1].length==2) // single result
+ {
+ srLink.setAttribute('href',searchData[e][1][1][0]);
+ if (searchData[e][1][1][1])
+ {
+ srLink.setAttribute('target','_parent');
+ }
+ var srScope = document.createElement('span');
+ setClassAttr(srScope,'SRScope');
+ srScope.innerHTML = searchData[e][1][1][2];
+ srEntry.appendChild(srScope);
+ }
+ else // multiple results
+ {
+ srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+ var srChildren = document.createElement('div');
+ setClassAttr(srChildren,'SRChildren');
+ for (var c=0; c<searchData[e][1].length-1; c++)
+ {
+ var srChild = document.createElement('a');
+ srChild.setAttribute('id','Item'+e+'_c'+c);
+ setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+ setClassAttr(srChild,'SRScope');
+ srChild.setAttribute('href',searchData[e][1][c+1][0]);
+ if (searchData[e][1][c+1][1])
+ {
+ srChild.setAttribute('target','_parent');
+ }
+ srChild.innerHTML = searchData[e][1][c+1][2];
+ srChildren.appendChild(srChild);
+ }
+ srEntry.appendChild(srChildren);
+ }
+ srResult.appendChild(srEntry);
+ results.appendChild(srResult);
+ }
+}
+
diff --git a/docs/dbus/html/search/search_l.png b/docs/dbus/html/search/search_l.png
new file mode 100644
index 00000000..c872f4da
--- /dev/null
+++ b/docs/dbus/html/search/search_l.png
Binary files differ
diff --git a/docs/dbus/html/search/search_m.png b/docs/dbus/html/search/search_m.png
new file mode 100644
index 00000000..b429a16b
--- /dev/null
+++ b/docs/dbus/html/search/search_m.png
Binary files differ
diff --git a/docs/dbus/html/search/search_r.png b/docs/dbus/html/search/search_r.png
new file mode 100644
index 00000000..97ee8b43
--- /dev/null
+++ b/docs/dbus/html/search/search_r.png
Binary files differ
diff --git a/docs/dbus/html/sync_off.png b/docs/dbus/html/sync_off.png
new file mode 100644
index 00000000..3b443fc6
--- /dev/null
+++ b/docs/dbus/html/sync_off.png
Binary files differ
diff --git a/docs/dbus/html/sync_on.png b/docs/dbus/html/sync_on.png
new file mode 100644
index 00000000..e08320fb
--- /dev/null
+++ b/docs/dbus/html/sync_on.png
Binary files differ
diff --git a/docs/dbus/html/tab_a.png b/docs/dbus/html/tab_a.png
new file mode 100644
index 00000000..3b725c41
--- /dev/null
+++ b/docs/dbus/html/tab_a.png
Binary files differ
diff --git a/docs/dbus/html/tab_b.png b/docs/dbus/html/tab_b.png
new file mode 100644
index 00000000..e2b4a863
--- /dev/null
+++ b/docs/dbus/html/tab_b.png
Binary files differ
diff --git a/docs/dbus/html/tab_h.png b/docs/dbus/html/tab_h.png
new file mode 100644
index 00000000..fd5cb705
--- /dev/null
+++ b/docs/dbus/html/tab_h.png
Binary files differ
diff --git a/docs/dbus/html/tab_s.png b/docs/dbus/html/tab_s.png
new file mode 100644
index 00000000..ab478c95
--- /dev/null
+++ b/docs/dbus/html/tab_s.png
Binary files differ
diff --git a/docs/dbus/html/tabs.css b/docs/dbus/html/tabs.css
new file mode 100644
index 00000000..9cf578f2
--- /dev/null
+++ b/docs/dbus/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/docs/dbus/html/unionVariant.html b/docs/dbus/html/unionVariant.html
new file mode 100644
index 00000000..37363ae6
--- /dev/null
+++ b/docs/dbus/html/unionVariant.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>automotive-message-broker: Variant Union Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">automotive-message-broker
+ &#160;<span id="projectnumber">0.11.810</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Variant Union Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>import&quot;<a class="el" href="amb_8idl_source.html">amb.idl</a>&quot;;</code></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p><a class="el" href="unionVariant.html">Variant</a> </p>
+</div><hr/>The documentation for this union was generated from the following file:<ul>
+<li>/home/tripzero/src/automotive-message-broker/docs/<a class="el" href="amb_8idl_source.html">amb.idl</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 27 2014 13:34:19 for automotive-message-broker by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>
diff --git a/docs/dbus/latex/Makefile b/docs/dbus/latex/Makefile
new file mode 100644
index 00000000..8cc3866f
--- /dev/null
+++ b/docs/dbus/latex/Makefile
@@ -0,0 +1,21 @@
+all: refman.pdf
+
+pdf: refman.pdf
+
+refman.pdf: clean refman.tex
+ pdflatex refman
+ makeindex refman.idx
+ pdflatex refman
+ latex_count=8 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ pdflatex refman ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+ makeindex refman.idx
+ pdflatex refman
+
+
+clean:
+ rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf
diff --git a/docs/dbus/latex/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.tex b/docs/dbus/latex/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.tex
new file mode 100644
index 00000000..dbe503ac
--- /dev/null
+++ b/docs/dbus/latex/_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example.tex
@@ -0,0 +1,14 @@
+\hypertarget{_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example}{\section{/home/tripzero/src/automotive-\/message-\/broker/docs/amb.\-idl}
+}
+var manager = dbus.\-interface(\char`\"{}org.\-automotive.\-Manager\char`\"{}, \char`\"{}/\char`\"{});
+
+var speed\-Object\-Paths = manager.\-Find\-Object(\char`\"{}\-Vehicle\-Speed\char`\"{});
+
+var speed\-Object = dbus.\-interface(\char`\"{}org.\-automotive.\-Vehicle\-Speed\char`\"{}, speed\-Object\-Paths\mbox{[}0\mbox{]});
+
+console.\-log(\char`\"{}\-Vehicle Speed\-: \char`\"{} + speed\-Object.\-Speed);
+
+
+\begin{DoxyCodeInclude}
+\end{DoxyCodeInclude}
+ \ No newline at end of file
diff --git a/docs/dbus/latex/annotated.tex b/docs/dbus/latex/annotated.tex
new file mode 100644
index 00000000..aec116a3
--- /dev/null
+++ b/docs/dbus/latex/annotated.tex
@@ -0,0 +1,4 @@
+\section{Class List}
+Here are the classes, structs, unions and interfaces with brief descriptions\-:\begin{DoxyCompactList}
+\item\contentsline{section}{\hyperlink{unionVariant}{Variant} }{\pageref{unionVariant}}{}
+\end{DoxyCompactList}
diff --git a/docs/dbus/latex/doxygen.sty b/docs/dbus/latex/doxygen.sty
new file mode 100644
index 00000000..199abf8d
--- /dev/null
+++ b/docs/dbus/latex/doxygen.sty
@@ -0,0 +1,464 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+
+% Packages used by this style file
+\RequirePackage{alltt}
+\RequirePackage{array}
+\RequirePackage{calc}
+\RequirePackage{float}
+\RequirePackage{ifthen}
+\RequirePackage{verbatim}
+\RequirePackage[table]{xcolor}
+\RequirePackage{xtab}
+
+%---------- Internal commands used in this style file ----------------
+
+\newcommand{\ensurespace}[1]{%
+ \begingroup%
+ \setlength{\dimen@}{#1}%
+ \vskip\z@\@plus\dimen@%
+ \penalty -100\vskip\z@\@plus -\dimen@%
+ \vskip\dimen@%
+ \penalty 9999%
+ \vskip -\dimen@%
+ \vskip\z@skip% hide the previous |\vskip| from |\addvspace|
+ \endgroup%
+}
+
+\newcommand{\DoxyLabelFont}{}
+\newcommand{\entrylabel}[1]{%
+ {%
+ \parbox[b]{\labelwidth-4pt}{%
+ \makebox[0pt][l]{\DoxyLabelFont#1}%
+ \vspace{1.5\baselineskip}%
+ }%
+ }%
+}
+
+\newenvironment{DoxyDesc}[1]{%
+ \ensurespace{4\baselineskip}%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{20pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }%
+ \item[#1]%
+}{%
+ \end{list}%
+}
+
+\newsavebox{\xrefbox}
+\newlength{\xreflength}
+\newcommand{\xreflabel}[1]{%
+ \sbox{\xrefbox}{#1}%
+ \setlength{\xreflength}{\wd\xrefbox}%
+ \ifthenelse{\xreflength>\labelwidth}{%
+ \begin{minipage}{\textwidth}%
+ \setlength{\parindent}{0pt}%
+ \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
+ \end{minipage}%
+ }{%
+ \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
+ }%
+}
+
+%---------- Commands used by doxygen LaTeX output generator ----------
+
+% Used by <pre> ... </pre>
+\newenvironment{DoxyPre}{%
+ \small%
+ \begin{alltt}%
+}{%
+ \end{alltt}%
+ \normalsize%
+}
+
+% Used by @code ... @endcode
+\newenvironment{DoxyCode}{%
+ \par%
+ \scriptsize%
+ \begin{alltt}%
+}{%
+ \end{alltt}%
+ \normalsize%
+}
+
+% Used by @example, @include, @includelineno and @dontinclude
+\newenvironment{DoxyCodeInclude}{%
+ \DoxyCode%
+}{%
+ \endDoxyCode%
+}
+
+% Used by @verbatim ... @endverbatim
+\newenvironment{DoxyVerb}{%
+ \footnotesize%
+ \verbatim%
+}{%
+ \endverbatim%
+ \normalsize%
+}
+
+% Used by @verbinclude
+\newenvironment{DoxyVerbInclude}{%
+ \DoxyVerb%
+}{%
+ \endDoxyVerb%
+}
+
+% Used by numbered lists (using '-#' or <ol> ... </ol>)
+\newenvironment{DoxyEnumerate}{%
+ \enumerate%
+}{%
+ \endenumerate%
+}
+
+% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
+\newenvironment{DoxyItemize}{%
+ \itemize%
+}{%
+ \enditemize%
+}
+
+% Used by description lists (using <dl> ... </dl>)
+\newenvironment{DoxyDescription}{%
+ \description%
+}{%
+ \enddescription%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if caption is specified)
+\newenvironment{DoxyImage}{%
+ \begin{figure}[H]%
+ \begin{center}%
+}{%
+ \end{center}%
+ \end{figure}%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if no caption is specified)
+\newenvironment{DoxyImageNoCaption}{%
+}{%
+}
+
+% Used by @attention
+\newenvironment{DoxyAttention}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @author and @authors
+\newenvironment{DoxyAuthor}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @date
+\newenvironment{DoxyDate}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @invariant
+\newenvironment{DoxyInvariant}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @note
+\newenvironment{DoxyNote}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @post
+\newenvironment{DoxyPostcond}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @pre
+\newenvironment{DoxyPrecond}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @copyright
+\newenvironment{DoxyCopyright}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @remark
+\newenvironment{DoxyRemark}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @return and @returns
+\newenvironment{DoxyReturn}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @since
+\newenvironment{DoxySince}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @see
+\newenvironment{DoxySeeAlso}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @version
+\newenvironment{DoxyVersion}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @warning
+\newenvironment{DoxyWarning}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @internal
+\newenvironment{DoxyInternal}[1]{%
+ \paragraph*{#1}%
+}{%
+}
+
+% Used by @par and @paragraph
+\newenvironment{DoxyParagraph}[1]{%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{40pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{-4pt}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }%
+ \item[#1]%
+}{%
+ \end{list}%
+}
+
+% Used by parameter lists
+\newenvironment{DoxyParams}[2][]{%
+ \par%
+ \tabletail{\hline}%
+ \tablelasttail{\hline}%
+ \tablefirsthead{}%
+ \tablehead{}%
+ \ifthenelse{\equal{#1}{}}%
+ {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
+ \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
+ p{0.805\textwidth}|}}%
+ {\ifthenelse{\equal{#1}{1}}%
+ {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
+ \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
+ >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
+ p{0.678\textwidth}|}}%
+ {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
+ \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
+ >{\centering\hspace{0pt}}p{0.15\textwidth}|%
+ >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
+ p{0.501\textwidth}|}}%
+ }\hline%
+}{%
+ \end{xtabular}%
+ \tablefirsthead{}%
+ \vspace{6pt}%
+}
+
+% Used for fields of simple structs
+\newenvironment{DoxyFields}[1]{%
+ \par%
+ \tabletail{\hline}%
+ \tablelasttail{\hline}%
+ \tablehead{}%
+ \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
+ \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
+ p{0.15\textwidth}|%
+ p{0.63\textwidth}|}%
+ \hline%
+}{%
+ \end{xtabular}%
+ \tablefirsthead{}%
+ \vspace{6pt}%
+}
+
+% Used for parameters within a detailed function description
+\newenvironment{DoxyParamCaption}{%
+ \renewcommand{\item}[2][]{##1 {\em ##2}}%
+}{%
+}
+
+% Used by return value lists
+\newenvironment{DoxyRetVals}[1]{%
+ \par%
+ \tabletail{\hline}%
+ \tablelasttail{\hline}%
+ \tablehead{}%
+ \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
+ \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
+ p{0.705\textwidth}|}%
+ \hline%
+}{%
+ \end{xtabular}%
+ \tablefirsthead{}%
+ \vspace{6pt}%
+}
+
+% Used by exception lists
+\newenvironment{DoxyExceptions}[1]{%
+ \par%
+ \tabletail{\hline}%
+ \tablelasttail{\hline}%
+ \tablehead{}%
+ \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
+ \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
+ p{0.705\textwidth}|}%
+ \hline%
+}{%
+ \end{xtabular}%
+ \tablefirsthead{}%
+ \vspace{6pt}%
+}
+
+% Used by template parameter lists
+\newenvironment{DoxyTemplParams}[1]{%
+ \par%
+ \tabletail{\hline}%
+ \tablelasttail{\hline}%
+ \tablehead{}%
+ \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
+ \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
+ p{0.705\textwidth}|}%
+ \hline%
+}{%
+ \end{xtabular}%
+ \tablefirsthead{}%
+ \vspace{6pt}%
+}
+
+% Used for member lists
+\newenvironment{DoxyCompactItemize}{%
+ \begin{itemize}%
+ \setlength{\itemsep}{-3pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\topsep}{0pt}%
+ \setlength{\partopsep}{0pt}%
+}{%
+ \end{itemize}%
+}
+
+% Used for member descriptions
+\newenvironment{DoxyCompactList}{%
+ \begin{list}{}{%
+ \setlength{\leftmargin}{0.5cm}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\topsep}{0pt}%
+ \renewcommand{\makelabel}{\hfill}%
+ }%
+}{%
+ \end{list}%
+}
+
+% Used for reference lists (@bug, @deprecated, @todo, etc.)
+\newenvironment{DoxyRefList}{%
+ \begin{list}{}{%
+ \setlength{\labelwidth}{10pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \renewcommand{\makelabel}{\xreflabel}%
+ }%
+}{%
+ \end{list}%
+}
+
+% Used by @bug, @deprecated, @todo, etc.
+\newenvironment{DoxyRefDesc}[1]{%
+ \begin{list}{}{%
+ \renewcommand\makelabel[1]{\textbf{##1}}%
+ \settowidth\labelwidth{\makelabel{#1}}%
+ \setlength\leftmargin{\labelwidth+\labelsep}%
+ }%
+}{%
+ \end{list}%
+}
+
+% Used by parameter lists and simple sections
+\newenvironment{Desc}
+{\begin{list}{}{%
+ \settowidth{\labelwidth}{40pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{-4pt}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }
+}{%
+ \end{list}%
+}
+
+% Used by tables
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
+\newlength{\tmplength}%
+\newenvironment{TabularC}[1]%
+{%
+\setlength{\tmplength}%
+ {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
+ \par\begin{xtabular*}{\linewidth}%
+ {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
+}%
+{\end{xtabular*}\par}%
+
+% Used for member group headers
+\newenvironment{Indent}{%
+ \begin{list}{}{%
+ \setlength{\leftmargin}{0.5cm}%
+ }%
+ \item[]\ignorespaces%
+}{%
+ \unskip%
+ \end{list}%
+}
+
+% Used when hyperlinks are turned off
+\newcommand{\doxyref}[3]{%
+ \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
+}
+
+% Used for syntax highlighting
+\definecolor{comment}{rgb}{0.5,0.0,0.0}
+\definecolor{keyword}{rgb}{0.0,0.5,0.0}
+\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
+\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
+\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
+\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
+\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
+\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
+\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
+\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
+\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
diff --git a/docs/dbus/latex/examples.tex b/docs/dbus/latex/examples.tex
new file mode 100644
index 00000000..5509f5c8
--- /dev/null
+++ b/docs/dbus/latex/examples.tex
@@ -0,0 +1,5 @@
+\section{Examples}
+Here is a list of all examples\-:\begin{DoxyCompactItemize}
+\item
+\hyperlink{_2home_2tripzero_2src_2automotive-message-broker_2docs_2amb_8idl-example}{/home/tripzero/src/automotive-\/message-\/broker/docs/amb.\-idl}
+\end{DoxyCompactItemize}
diff --git a/docs/dbus/latex/index.tex b/docs/dbus/latex/index.tex
new file mode 100644
index 00000000..79116f3d
--- /dev/null
+++ b/docs/dbus/latex/index.tex
@@ -0,0 +1,18 @@
+\hypertarget{index_intro}{}\section{Instroduction}\label{index_intro}
+A\-M\-B organizes the A\-P\-I into two general interfaces. First a Manager interface (see manager.\-txt) which includes tools for using the other interfaces. Second is a series of interfaces that represent vehicle data. The latter follows the schema of \char`\"{}org.\-automotive.\-Data\-Type\char`\"{} and are contained in verious D\-Bus paths. The D\-Bus paths are generally organized by /\{source\}/\{zone\}/\-Data\-Type. \char`\"{}source\char`\"{} refers to the A\-M\-B source that produces the data. \char`\"{}zone\char`\"{} refers to the zone in which the data type is located in the vehicle or \char`\"{}0\char`\"{} for no zone.
+
+The data types are documented in the various $\ast$.txt files in this document folder. The manager interface is documented in the manager.\-txt document.\hypertarget{index_basic_usage}{}\section{Basic Recommended Usage}\label{index_basic_usage}
+It is recomended that the Manager interface be used to find the D\-Bus Object that contains the data type you need. This is done through the Find\-Object() call. It is expected that D\-Bus Object Paths may change and so it is not appropriate to hard code D\-Bus Object Paths. The D\-Bus paths in the various documents are examples of paths and are not gauranteed.\hypertarget{index_example}{}\section{Usage Example}\label{index_example}
+Here is a pseudo-\/code example of how the api is to be used\-:
+
+
+\begin{DoxyCode}
+var manager = dbus.interface(\textcolor{stringliteral}{"org.automotive.Manager"}, \textcolor{stringliteral}{"/"});
+
+var speedObjectPaths = manager.FindObject(\textcolor{stringliteral}{"VehicleSpeed"});
+
+var speedObject = dbus.interface(\textcolor{stringliteral}{"org.automotive.VehicleSpeed"}, speedObjectPaths[0]);
+
+console.log(\textcolor{stringliteral}{"Vehicle Speed: "} + speedObject.Speed);
+\end{DoxyCode}
+ \ No newline at end of file
diff --git a/docs/dbus/latex/refman.tex b/docs/dbus/latex/refman.tex
new file mode 100644
index 00000000..84dffe04
--- /dev/null
+++ b/docs/dbus/latex/refman.tex
@@ -0,0 +1,147 @@
+\documentclass[twoside]{book}
+
+% Packages required by doxygen
+\usepackage{calc}
+\usepackage{doxygen}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\usepackage{multicol}
+\usepackage{multirow}
+\usepackage{textcomp}
+\usepackage[table]{xcolor}
+
+% Font selection
+\usepackage[T1]{fontenc}
+\usepackage{mathptmx}
+\usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\usepackage{amssymb}
+\usepackage{sectsty}
+\renewcommand{\familydefault}{\sfdefault}
+\allsectionsfont{%
+ \fontseries{bc}\selectfont%
+ \color{darkgray}%
+}
+\renewcommand{\DoxyLabelFont}{%
+ \fontseries{bc}\selectfont%
+ \color{darkgray}%
+}
+
+% Page & text layout
+\usepackage{geometry}
+\geometry{%
+ a4paper,%
+ top=2.5cm,%
+ bottom=2.5cm,%
+ left=2.5cm,%
+ right=2.5cm%
+}
+\tolerance=750
+\hfuzz=15pt
+\hbadness=750
+\setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\makeatletter
+\renewcommand{\paragraph}{%
+ \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
+ \normalfont\normalsize\bfseries\SS@parafont%
+ }%
+}
+\renewcommand{\subparagraph}{%
+ \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
+ \normalfont\normalsize\bfseries\SS@subparafont%
+ }%
+}
+\makeatother
+
+% Headers & footers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Jun 27 2014 13\-:34\-:19 for automotive-\/message-\/broker by Doxygen }}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Jun 27 2014 13\-:34\-:19 for automotive-\/message-\/broker by Doxygen }}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+\renewcommand{\footrulewidth}{0.4pt}
+\renewcommand{\chaptermark}[1]{%
+ \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+ \markright{\thesection\ #1}%
+}
+
+% Indices & bibliography
+\usepackage{natbib}
+\usepackage[titles]{tocloft}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{5}
+\makeindex
+
+% Hyperlinks (required, but should be loaded last)
+\usepackage{ifpdf}
+\ifpdf
+ \usepackage[pdftex,pagebackref=true]{hyperref}
+\else
+ \usepackage[ps2pdf,pagebackref=true]{hyperref}
+\fi
+\hypersetup{%
+ colorlinks=true,%
+ linkcolor=blue,%
+ citecolor=blue,%
+ unicode%
+}
+
+% Custom commands
+\newcommand{\clearemptydoublepage}{%
+ \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+
+
+%===== C O N T E N T S =====
+
+\begin{document}
+
+% Titlepage & ToC
+\hypersetup{pageanchor=false}
+\pagenumbering{roman}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}%
+{\Large automotive-\/message-\/broker \\[1ex]\large 0.\-11.\-810 }\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.8.6}\\
+\vspace*{0.5cm}
+{\small Fri Jun 27 2014 13:34:19}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\hypersetup{pageanchor=true}
+
+%--- Begin generated contents ---
+\chapter{Automotive Message Broker D\-Bus A\-P\-I Documentation}
+\label{index}\hypertarget{index}{}\input{index}
+\chapter{Class Index}
+\input{annotated}
+\chapter{Class Documentation}
+\input{unionVariant}
+%--- End generated contents ---
+
+% Index
+\newpage
+\phantomsection
+\addcontentsline{toc}{chapter}{Index}
+\printindex
+
+\end{document}
diff --git a/docs/dbus/latex/unionVariant.tex b/docs/dbus/latex/unionVariant.tex
new file mode 100644
index 00000000..d3203733
--- /dev/null
+++ b/docs/dbus/latex/unionVariant.tex
@@ -0,0 +1,15 @@
+\hypertarget{unionVariant}{\section{Variant Union Reference}
+\label{unionVariant}\index{Variant@{Variant}}
+}
+
+
+{\ttfamily import\char`\"{}amb.\-idl\char`\"{};}
+
+
+
+\subsection{Detailed Description}
+\hyperlink{unionVariant}{Variant}
+
+The documentation for this union was generated from the following file\-:\begin{DoxyCompactItemize}
+\item
+/home/tripzero/src/automotive-\/message-\/broker/docs/amb.\-idl\end{DoxyCompactItemize}
diff --git a/docs/drivingsafety.txt b/docs/drivingsafety.txt
deleted file mode 100644
index 899bcbf1..00000000
--- a/docs/drivingsafety.txt
+++ /dev/null
@@ -1,171 +0,0 @@
-Deprecated. Please use amb.idl
-
-Driving Safety hierarchy
-=================
-
-Service org.automotive
-Object path /org/automotive/drivingSafety
-
-
-Interface: org.automotive.AntilockBrakingSystem
-Object path: /org/automotive/drivingSafety/AntilockBrackingSystem
-Properties:
- bool AntilockBrakingSystem [readonly]
-
- Idle = false,
- Engaged = true
-
-Interface: org.automotive.TractionControlSystem
-Object path: /org/automotive/drivingSafety/TractionControlSystem
-Properties:
-
- bool TractionControlSystem [readonly]
-
- Off = false,
- On = true
-
-Interface: org.automotive.VehicleTopSpeedLimit
-Object path: /org/automotive/drivingSafety/VehicleTopSpeedLimit
-Properties:
-
- uint16 VehicleTopSpeedLimit [readonly]
-
- top rated speed in km/h. 0 = no limit
-
-Interface: org.automotive.AirbagStatus
-Object path: /org/automotive/drivingSafety/AirbagStatus
-Properties:
-
- dict{ byte, byte } AirbagStatus [readonly]
-
- Dictionary of Airbag (byte) and Status (byte)
-
- Airbag:
-
- Driver = 0,
- Passenger = 1,
- LeftSide = 2,
- RightSide = 3
-
- Status:
-
- Inactive = 0,
- Active = 1,
- Deployed = 2
-
-Interface: org.automotive.DoorStatus
-Object path: /org/automotive/drivingSafety/DoorStatus
-Properties:
-
- dict{ byte, byte } DoorStatus [readonly]
-
- Dictionary of Door (byte) and Status (byte)
-
- Door:
-
- Driver = 0,
- Passenger = 1,
- LeftRear = 2,
- RightRear = 3,
- Trunk = 4,
- FuelCap = 5,
- Hood = 6
-
- Status:
-
- Closed = 0,
- Open = 1,
- Ajar = 2
-
- dict{ byte, bool } DoorLockStatus [readonly]
-
- Dictionary of Door (byte) and Status (bool locked = true, unlocked = false)
-
- Door:
-
- Driver = 0,
- Passenger = 1,
- LeftRear = 2,
- RightRear = 3,
-
- bool ChildLockStatus [readwrite]
-
- 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.
-
-Interface: org.automotive.SeatBeltStatus
-Object path: /org/automotive/drivingSafety/SeatBeltStatus
-Properties:
-
- dict{ byte, bool } SeatBeltStatus [readonly]
-
- Dictionary of Seat Belt (byte) and Status (bool: Fasten = true, Unfastened = false)
-
- Seat Belt:
-
- Driver = 0,
- MiddleFront = 1,
- Passenger = 2,
- LeftRear = 3,
- MiddleRear = 4,
- RightRear = 5
-
-Interface: org.automotive.WindowLockStatus
-Object path: /org/automotive/drivingSafety/WindowLockStatus
-Properties:
-
- dict{ byte, bool } WindowLockStatus [readonly]
-
- Dictionary of Windows (byte) and Status (bool: Locked = true)
-
- Window:
-
- Driver = 0,
- Passenger = 1,
- LeftRear = 2,
- RightRear = 3,
- Sunroof = 4
-
-Interface: org.automotive.OccupantStatus
-Object path: /org/automotive/drivingSafety/OccupantStatus
-Properties:
-
- dict{ byte, byte } OccupantStatus [readonly]
-
- Dictionary of Occupant (byte) and Status
-
- Occupant:
-
- Driver = 0,
- Passenger = 1,
- LeftRear = 2,
- RightRear = 3
-
- Status:
-
- Vacant = 0,
- Child = 1,
- Adult = 2
-
- /// TODO: document the weight threshold standard for child vs adult
-
-Interface: org.automotive.ObstacleDistance
-Object path: /org/automotive/drivingSafety/ObstacleDistance
-Properties:
-
- dict{ byte, double } ObstacleDistance [readonly]
-
- Dictionary of Distance Sensor and distance (double) in m
-
- Distance Sensors:
-
- LeftFront = 0,
- RightFront = 1,
- LeftRear = 2,
- RightRear = 3,
- LeftBlindSpot = 4,
- RightBlindSpot = 5
-
-
-
diff --git a/docs/electricvehicle.txt b/docs/electricvehicle.txt
deleted file mode 100644
index c32b4824..00000000
--- a/docs/electricvehicle.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Deprecated. Please use amb.idl
-
-Electric Vehicle hierarchy
-=================
-
-Service org.automotive
-Interface org.automotive.electricVehicle
-Object path /
-
-Properties byte HybridPowerSystem [readonly]
-
- Hybrid power system:
-
- Idle = 0,
- Battery Mode = 1,
- Engine Mode = 2,
- Hybrid Mode = 3
-
- bool ChargingStatus [readwrite]
-
- get or sets charging status: on = true, off = false.
-
- struct{ double, byte } Battery [readonly]
-
- Voltage of battery (double) and Level of charge (0-100%) (byte).
-
- bool BatteryChargeCord [readonly]
-
- Cord connected (true), disconnected (false)
-
- byte TargetChargeLevel [readonly]
-
- Level of charge capacity relative to factory charge rating (0-100%) (byte)
-
- uint16 TimeToFullCharge [readonly]
-
- Number of minutes remaining until fully charged.
diff --git a/docs/environment.txt b/docs/environment.txt
deleted file mode 100644
index f6dfe2e3..00000000
--- a/docs/environment.txt
+++ /dev/null
@@ -1,127 +0,0 @@
- Environment hierarchy
-=================
-
-Service org.automotive
-Object path /org/automotive/environment/*
-
-
-
-Interface org.automotive.Temperature
-Object path /org/automotive/environment/Temperature
-Properties
-
- double InteriorTemperature [readonly]
-
- Temperature inside the vehicle in Celsius in increments of 0.1.
-
- double ExteriorTemprature [readonly]
-
- Temperature outside the vehicle in Celsius in increments of 0.1.
-
-Interface org.automotive.ExteriorBrightness
-Object path /org/automotive/environment/ExteriorBrightness
-Properties
-
- double ExteriorBrightness [readonly]
-
- Brightness outside the vehicle in lux (0 - 130,000)
-
-Interface org.automotive.RainSensor
-Object path /org/automotive/environment/RainSensor
-Properties
-
- byte RainSensor [readonly]
-
- Level of rain intensity 0: No Rain - 10: Heaviest Rain
-
-Interface org.automotive.WindshieldWiper
-Object path /org/automotive/environment/WindshieldWiper
-Properties
-
- byte WindshieldWiper [readwrite]
-
- Level of windshield whiper speed:
-
- Off = 0,
- Slowest = 1,
- Fastest = 5,
- Auto = 10
-
-Interface org.automotive.HVAC
-Object path /org/automotive/environment/HVAC
-Properties
-
- byte AirflowDirection [readwrite]
-
- Front Panel = 0,
- Floor Duct = 1,
- Front = 0x02,
- Defroster = 0x04
-
- byte FanSpeed [readwrite]
-
- Speed of the fan 0-7
-
- byte TargetTemperature [readwrite]
-
- Target temperature in Celcius
-
- bool AirConditioning [readwrite]
-
- Air conditioning on (true) / off (false)
-
- bool AirRecirculation [readwrite]
-
- Air recirculation on (true) / off (false)
-
- bool Heater [readwrite]
-
- Heater on (true) / off (false)
-
- bool SteeringWheelHeater [readwrite]
-
- Steering wheel heater on (true) / off (false)
-
- bool SeatHeater [readwrite]
-
- Seat heater on (true) / off (false)
-
- bool SeatCooler [readwrite]
-
- Seat cooler on (true) / off (false)
-
-
-Interface org.automotive.WindowStatus
-Object path {source_id}/{zone}/WindowStatus
-Properties
-
- uInt16 WindowStatus [readwrite]
-
- Percent of openness (0-100) (uInt16)
-
- bool Defrost [readwrite]
-
- Defrost on (true) / off (false) per Postion (byte)
-
-Interface org.automotive.Sunroof
-Object path /org/automotive/environment/Sunroof
-Properties
-
- byte Openness [readwrite]
-
- Percent of sunroof openness (0: Closed - 100: Fully Opened).
-
- byte Tilt [readwrite]
-
- Percent of tilt (0: Closed - 100: Maximum Tilt).
-
-Interface org.automotive.ConvertibleRoof
-Object path /org/automotive/environment/ConvertibleRoof
-Properties
-
- bool ConvertibleRoof [readwrite]
-
- Convertible roof on (true) / off (false)
-
-
-
diff --git a/docs/maintenance.txt b/docs/maintenance.txt
deleted file mode 100644
index ad9c9469..00000000
--- a/docs/maintenance.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-Deprecated. Please use amb.idl
-
-Maintenance hierarchy
-=================
-
-Service org.automotive
-
-
-Interface org.automotive.odometer
-Object path /org/automotive/maintenance/odometer
-Properties:
-
- uint32 Odometer [readonly]
-
- Distance in km
-
-Interface org.automotive.BrakePressure
-Object path /org/automotive/maintenance/BrakePressure
-Properties:
-
- byte Pressure [readonly]
-
- Pressure of Brake 0-100%
-
-Interface org.automotive.fluid
-Object path /org/automotive/maintenance/fluid
-Properties:
-
-
- byte Transmission [readonly]
-
- Remaining percentage
-
- byte Brake [readonly]
-
- Remaining percentage
-
- byte Washer [readonly]
-
- Remaining percentage
-
-Interface org.automotive.batteryStatus
-Object path /org/automotive/maintenance/batteryStatus
-Properties:
-
- double Voltage [readonly]
-
- double Current [readonly]
-
-
-Interface org.automotive.tirePressure
-Object path /org/automotive/maintenance/tirePressure
-Properties:
-
- double LeftFront [readonly]
-
- Pressure (kPa)
-
- double RightFront [readonly]
-
- double LeftRear [readonly]
-
- double RightRear [readonly]
-
-
-Interface org.automotive.tireTemperature
-Object path /org/automotive/maintenance/tireTemperature
-Properties:
-
- double LeftFront [readonly]
-
- Temperature of tire in Celsius (C)
-
- double RightFront [readonly]
-
- double LeftRear [readonly]
-
- double RightRear [readonly]
-
diff --git a/docs/manager.txt b/docs/manager.txt
deleted file mode 100644
index f2069502..00000000
--- a/docs/manager.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Service: org.automotive.message.broker
-Interface: org.automotive.Manager
-Object Path: /
-
-Methods:
-
- Array{ObjectPath} FindObject(String objectName)
-
- returns list of object paths that provide 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 path does not already exist, the path will be created. The path will
- disappear when all processes that call this method disconnect from DBus or closes.
-
- Array{Int32} ZonesForObjectName(String objectName)
-
- returns list of zones for a given objectName.
-
- ObjectPath FindObjectForSourceZone(String objectName, String sourceId, Int32 zone)
-
- returns object path which provides the given objectName for the source and zone or
- org.automotive.Manager.ObjectNotFound if the object name is not supported.
-
- ObjectPath FindObjectForZone(String objectName, Int32 zone)
-
- returns object path which provides the given objectName in the given zone or
- org.automotive.Manager.ObjectNotFound if the object name is not supported.
-
- Array{ObjectPath} List()
-
- returns list of ObjectNames which are supported by the system
-
- Array{String} SourcesForObjectName(String objectName)
-
- returns list of sources that provide the given objectName.
-
diff --git a/docs/parking.txt b/docs/parking.txt
deleted file mode 100644
index 33931042..00000000
--- a/docs/parking.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-Deprecated. Please use amb.idl
-
-Parking hierarchy
-=================
-
-Service org.automotive
-Object path: /org/automotive/parking/*
-
-
-
-Interface org.automotive.securityAlert
-Object path /org/automotive/parking/securityAlert
-Properties:
- byte SecurityAlert [readonly]
-
- returns status of security alert:
-
- Idle = 0,
- Armed = 1,
- Alarm Detected = 2
-
-Interface org.automotive.parkingBrake
-Object path /org/automotive/parking/parkingBrake
-Properties:
-
- bool ParkingBrake
-
- returns whether the parking break is active (true)/inactive (false)
-
-
-Interface org.automotive.parkingLights
-Object path /org/automotive/parking/parkingLights
-Properties:
-
- bool ParkingLights
-
- returns whether the parking lights are active (true) or inactive (false)
-
-Interface org.automotive.hazardLightsiiiiiiiiiiiiiooooooooo]Object path /org/automotive/parking/hazardLights
-Properties:
-
- bool HazardLights
-
- returns whether the hazard lights are active (true) or inactive (false)
-
-
diff --git a/docs/personalization.txt b/docs/personalization.txt
deleted file mode 100644
index 8a82779d..00000000
--- a/docs/personalization.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-Deprecated. Please use amb.idl
-
-Personalization hierarchy
-=================
-
-Service org.automotive
-Object path /org/automotive/personalization/*
-
-
-Interface org.automotive.KeyId
-Object path /org/automotive/personalization/KeyId
-Properties
- string KeyId [readonly]
-
- UUID of key in the ignition. Unique to each key of the vehicle
-
- string Language [readwrite]
-
- ISO 639-1 Language Code (ie en)
-
- byte MeasurementSystem [readwrite]
-
- Metric = 0,
- Imperial(US) = 1,
- Imperial(UK) = 2
-
- dict{ byte, struct { byte, byte} } MirrorSettings [readwrite]
-
- Dictionary of Mirrors (byte) and the Mirrors' Tilt (byte) and Pan (byte) settings
-
- Mirror:
-
- DriverSide = 0,
- PassengerSide = 1,
- Inside = 2
-
-
- struct { uint16, uint16 } SteeringWheelPostion [readwrite]
-
- Dictionary of steering wheel parts and its Slide (uint16) and Tilt (uint16)
-
- byte DrivingMode [readwrite]
-
- Mode:
-
- Auto = 0,
- Comfort = 1,
- Sport = 2,
- Eco = 3,
- Manual = 4
-
- struct{ uint16, uint16, uint16, uint16, uint16, uint16 } DriverSeatPosition [readwrite]
-
- Driver seat positon per part: (recline seatback, slide, cushion height, headrest, back cushion, side cushion)
-
- struct{ uint16, uint16, uint16, uint16, uint16, uint16 } PassengerSeatPosition [readwrite]
-
- Passenger seat positon per part: (recline seatback, slide, cushion height, headrest, back cushion, side cushion)
-
- byte DashboardIllumination [readwrite]
-
- Percentage of illumination, 0: Darkest, 100: Brightest
-
- byte GeneratedVehicleSoundMode [readwrite]
-
- Normal = 0,
- Quiet = 1,
- Sportive = 2
diff --git a/docs/runningstatus.txt b/docs/runningstatus.txt
deleted file mode 100644
index dc4a02a0..00000000
--- a/docs/runningstatus.txt
+++ /dev/null
@@ -1,248 +0,0 @@
-Deprecated. Please use amb.idl
-
-Running Status hierarchy
-=================
-
-Service org.automotive
-Object path /org/automotive/runningStatus/*
-
-Interface: org.automotive.vehiclePowerMode
-Object path: /org/automotive/runningStatus/vehiclePowerMode
-Properties:
-
- byte VehiclePowerMode [readonly]
-
- Off = 0,
- Accessory1 = 1,
- Accessory2 = 2,
- Run = 3
-
-Interface: org.automotive.vehicleSpeed
-Object path: /org/automotive/runningStatus/vehicleSpeed
-Properties:
-
- uint16 VehicleSpeed [readonly]
-
- Velocity of vehicle in kph.
-
-Interface: org.automotive.engineSpeed
-Object path: /org/automotive/runningStatus/engineSpeed
-Properties:
-
- uint16 EngineSpeed [readonly]
-
- Engine speed in revolutions per minute (RPM)
-
-Interface: org.automotive.tripMeter
-Object path: /org/automotive/runningStatus/tripMeter
-Properties:
-
- uint32 A [readwrite]
-
- Distance from trip meter(s) in km. This can be only set to "0".
-
- uint32 B [readwrite]
- uint32 C [readwrite]
-
-Interface: org.automotive.transmission
-Object path: /org/automotive/runningStatus/transmission
-Properties:
-
- byte ShiftPosition [readonly]
-
- Neutral = 0,
- 1st = 1,
- 2nd = 2,
- 3rd = 3,
- 4th = 4,
- 5th = 5,
- 6th = 6,
- 7th = 7,
- 8th = 8,
- 9th = 9,
- 10th = 10,
- Drive = 96,
- Reverse = 128,
- Park = 255
-
- byte GearPosition [readonly]
-
- Neutral = 0,
- 1st = 1,
- 2nd = 2,
- 3rd = 3,
- 4th = 4,
- 5th = 5,
- 6th = 6,
- 7th = 7,
- 8th = 8,
- 9th = 9,
- 10th = 10,
- CVT = 64,
- Reverse = 128
-
- byte Mode [readonly]
-
- 0 = normal,
- 1 = sports,
- 2 = economy,
- 3 = oem custom,
- 4 = oem custom2
- ...
- 255 =
-
-Interface: org.automotive.cruiseControlStatus
-Object path: /org/automotive/runningStatus/cruiseControlStatus
-Properties:
-
- bool Activated [readonly]
-
- true = engaged, false not engaged
-
- uint16 Speed [readonly]
-
- Speed in kph.
-
-
-Interface: org.automotive.wheelBrake
-Object path: /org/automotive/runningStatus/wheelBrake
-Properties:
-
- bool Engaged [readonly]
-
- Engaged = true
- Idle = false
-
-Interface: org.automotive.lightstatus
-Object path: /org/automotive/runningStatus/lightstatus
-Properties:
-
- bool Head [readonly]
- bool LeftTurn [readonly]
- bool RightTurn [readonly]
- bool Brake [readonly]
- bool Fog [readonly]
- bool Hazard [readonly]
- bool Parking [readonly]
- bool HighBeam [readonly]
-
-Interface: org.automotive.interiorLightStatus
-Object path: /org/automotive/runningStatus/interiorLightStatus
-Properties:
-
- bool Driver [readonly]
- bool Passenger [readonly]
- bool Center [readonly]
-
-
-Interface: org.automotive.horn
-Object path: /org/automotive/runningStatus/horn
-Properties:
- bool Horn [readonly]
-
- On = true / Off = false
-
-Interface: org.automotive.chime
-Object path: /org/automotive/runningStatus/chime
-Properties:
-
- bool Chime [readonly]
-
- On = true / Off = false
-
-Interface: org.automotive.fuel
-Object path: /org/automotive/runningStatus/fuel
-Properties:
-
- byte Level [readonly]
-
- Remaining percentage of fuel.
-
- uint16 Range [readonly]
-
- Estimated fuel range with available fuel in km
-
- double InstantConsumption [readonly]
-
- Instant fuel consumption in milliliters per second
-
- uint16 InstantEconomy [readonly]
-
- Fuel 'economy' in kilometers per liter of fuel.
-
- uint16 AverageEconomy [readwrite]
-
- Average fuel economy in kilometers per liter of fuel since last reset.
- Setting this to anything will reset the value.
-
-Interface: org.automotive.engineOil
-Object path: /org/automotive/runningStatus/engineOil
-Properties:
-
- byte Remaining [readonly]
-
- Remaining Oil life remaining; percentage
-
- byte Temperature [readonly]
-
- Engine Oil Temperature in degrees C
-
- uint16 Pressure [readonly]
-
- Engine Oil Pressure in kPa
-
-
-Interface: org.automotive.engineCoolant
-Object path: /org/automotive/runningStatus/engineCoolant
-Properties:
-
- byte Level [readonly]
-
- Level of Engine Coolant (percentage of full)
-
- byte Temperature [readonly]
-
- Temperature of Engine Coolant in degrees C
-
-Interface: org.automotive.acceleration
-Object path: /org/automotive/runningStatus/acceleration
-Properties:
-
- double X [readonly]
-
- lateral acceleration as 1/1000 G
-
- double Y [readonly]
-
- longitudinal acceleration as 1/1000 G
-
- double Z [readonly]
-
- vertical accelaration as 1/1000 G
-
-
-
-Interface: org.automotive.steeringWheelAngle
-Object path: /org/automotive/runningStatus/steeringWheelAngle
-Properties:
-
- uint16 SteeringWheelAngle [readonly]
-
- Angle of the steering wheel (0-360)
-
-Interface: org.automotive.location
-Object path: /org/automotive/runningStatus/location
-Properties:
-
- double Latitude [readonly]
- latitude in Deg.Min (-90, +90)
-
- double Longitude [readonly]
- longitude in Deg.Min (-180, +180)
-
- double Altitude [readonly]
- altitude in meters above sea-level (0)
-
- int Direction [readonly]
- direction in degrees (0=north - 359)
-
diff --git a/docs/vehicleinfo.txt b/docs/vehicleinfo.txt
deleted file mode 100644
index 684354ba..00000000
--- a/docs/vehicleinfo.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-Deprecated. Please use amb.idl
-
-Vehicle Information hierarchy
-=================
-
-Service org.automotive.message.broker
-Object path /org/automotive/vehicleInfo/*
-
-
-
-Interface: org.automotive.vehicleId
-Object path: /org/automotive/vehicleInfo/vehicleId
-Properties:
-
- string WMI [readonly]
-
- World Manufacturer Identifier as defined by SAE. 3 characters.
-
- string VIN [readonly]
-
- Vehicle Identification Number as defined by ISO 3779. 17 characters.
-
-Interface: org.automotive.size
-Object path: /org/automotive/vehicleInfo/size
-Properties:
-
- int Width [readonly]
- width in mm
-
- Height [readonly]
- height in mm
-
- Length [readonly]
- length in mm
-
-Interface: org.automotive.fuelInfo
-Object path: /org/automotive/vehicleInfo/fuelInfo
-Properties:
-
- byte Type [readonly]
-
- type of fuel:
- Gasoline = 0,
- High-Octane = 1,
- Diesel = 2,
- Electric = 3,
- Hydrogen = 4
-
- byte RefuelPosition [readonly]
-
- Position of refueling:
- Left = 0,
- Right = 1,
- Front = 2,
- Rear = 3
-
-Interface: org.automotive.vehicleType
-Object path: /org/automotive/vehicleInfo/vehicleType
-Properties:
-
- byte VehicleType [readonly]
-
- Vehicle Type: Sedan = 0,
- Coupe = 1,
- Cabriole = 2,
- Roadster = 3,
- SUV = 4,
- Truck = 5
-
-Interface: org.automotive.doors
-Object path: /org/automotive/vehicleInfo/doors
-Properties:
-
- array{ byte } DoorsPerRow [readonly]
-
- 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).
-
-Interface: org.automotive.transmissionGearType
-Object path: /org/automotive/vehicleInfo/transmissionGearType
-Properties:
-
- byte TransmissionGearType [readonly]
-
- Auto = 0,
- Manual = 1,
- CV = 2 (Constant Variable Transmission)
-
-
-
-Interface: org.automotive.wheelInformation
-Object path: /org/automotive/vehicleInfo/wheelInformation
-Properties:
-
- uint16 FrontRadius [readonly]
-
- Radius of Front Wheel(s) in mm.
-
- uint16 RearRadius [readonly]
-
- Radius of Rear Wheel(s) in mm.
-
- uint32 Track [readonly]
-
- Wheel Track in mm.
-
- bool ABS [readonly]
-
- Status of Antilock Brake System (ABS) on=true, off=false
-
-
diff --git a/lib/abstractpropertytype.h b/lib/abstractpropertytype.h
index d1222182..7e86ea93 100644
--- a/lib/abstractpropertytype.h
+++ b/lib/abstractpropertytype.h
@@ -85,11 +85,26 @@ public:
virtual AbstractPropertyType* copy() = 0;
+ /**
+ * @brief quickCopy is intended as a way to quickly copy the often changing bits from one abstract property to another
+ * It assumes that the properties are almost identical in name, source, and zone.
+ * @param other the property to copy from
+ */
+ virtual void quickCopy(AbstractPropertyType* other)
+ {
+ sequence = other->sequence;
+ mValue = other->anyValue();
+ timestamp = other->timestamp;
+ }
+
bool operator == (AbstractPropertyType &other)
{
std::string one = toString();
std::string two = other.toString();
- return one == two;
+ return one == two
+ && zone == other.zone
+ && sourceUuid == other.sourceUuid
+ && name == other.name;
}
bool operator != (AbstractPropertyType &other)
@@ -647,7 +662,7 @@ public:
GVariant *var = t->toVariant();
GVariant *newvar = g_variant_new("v",var);
g_variant_builder_add_value(&params, newvar);
-
+
}
GVariant* var = g_variant_builder_end(&params);
diff --git a/plugins/dbus/abstractproperty.cpp b/plugins/dbus/abstractproperty.cpp
index a9011f4b..f2a587bb 100644
--- a/plugins/dbus/abstractproperty.cpp
+++ b/plugins/dbus/abstractproperty.cpp
@@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include "abstractdbusinterface.h"
AbstractProperty::AbstractProperty(string pn, Access access)
- : mPropertyName(pn), mAccess(access), mValue(NULL), mZoneFilter(Zone::None), mUpdateFrequency(0)
+ : mPropertyName(pn), mAccess(access), mValue(nullptr), mZoneFilter(Zone::None), mUpdateFrequency(0)
{
}
diff --git a/plugins/dbus/abstractproperty.h b/plugins/dbus/abstractproperty.h
index 3c20dd51..1a958dd4 100644
--- a/plugins/dbus/abstractproperty.h
+++ b/plugins/dbus/abstractproperty.h
@@ -48,12 +48,12 @@ public:
AbstractProperty(string propertyName, Access access);
virtual ~AbstractProperty();
-
+
virtual void setSetterFunction(SetterFunc setterFunc)
{
mSetterFunc = setterFunc;
}
-
+
virtual const string signature()
{
GVariant* var = toGVariant();
@@ -63,8 +63,8 @@ public:
g_variant_unref(var);
return s;
}
-
- virtual string name()
+
+ virtual string name()
{
return mPropertyName;
}
@@ -81,7 +81,7 @@ public:
void setSourceFilter(std::string filter) { mSourceFilter = filter; }
void setZoneFilter(Zone::Type zone) { mZoneFilter = zone; }
-
+
virtual GVariant* toGVariant() = 0;
virtual void fromGVariant(GVariant *value) = 0;
@@ -104,13 +104,18 @@ public:
if(!val)
return;
- if(mValue) delete mValue;
-
- mValue = val;
+ if(!mValue)
+ {
+ mValue = val->copy();
+ }
+ else
+ {
+ mValue->quickCopy(val);
+ }
if(mUpdateFrequency == 0)
{
- PropertyInfo info = routingEngine->getPropertyInfo(val->name, val->sourceUuid);
+ PropertyInfo info = routingEngine->getPropertyInfo(mValue->name, mValue->sourceUuid);
if(info.isValid())
mUpdateFrequency = info.updateFrequency();
@@ -133,16 +138,16 @@ public:
{
return mValue;
}
-
+
protected: ///methods:
std::string mSourceFilter;
Zone::Type mZoneFilter;
int mUpdateFrequency;
AbstractRoutingEngine* routingEngine;
-
+
protected:
-
+
string mPropertyName;
VehicleProperty::Property mAmbPropertyName;
SetterFunc mSetterFunc;
diff --git a/plugins/dbus/dbusplugin.cpp b/plugins/dbus/dbusplugin.cpp
index a5f12b34..1dd00e5d 100644
--- a/plugins/dbus/dbusplugin.cpp
+++ b/plugins/dbus/dbusplugin.cpp
@@ -83,7 +83,7 @@ void DBusSink::propertyChanged(AbstractPropertyType *value)
{
AbstractProperty* prop = i;
mTime = value->timestamp;
- prop->updateValue(value->copy());
+ prop->updateValue(value);
updateValue(prop);
}
}