0ca8f0ecb4
To handle all zone types properly zone types have to be defined in vehicle.h. bug: 32067249 Test: build locally Change-Id: I3e9d19bcb090ee2c6edd70835b1268eeca224479 (cherry picked from commit 9101e11aecadea8c12c1f305f0f54f52dc00f366)
2610 lines
96 KiB
C
2610 lines
96 KiB
C
/*
|
|
* Copyright (C) 2015 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef ANDROID_VEHICLE_INTERFACE_H
|
|
#define ANDROID_VEHICLE_INTERFACE_H
|
|
|
|
#include <stdint.h>
|
|
#include <sys/cdefs.h>
|
|
#include <sys/types.h>
|
|
#include <math.h>
|
|
#include <errno.h>
|
|
|
|
#include <hardware/hardware.h>
|
|
#include <cutils/native_handle.h>
|
|
|
|
__BEGIN_DECLS
|
|
|
|
/*****************************************************************************/
|
|
|
|
#define VEHICLE_HEADER_VERSION 1
|
|
#define VEHICLE_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
|
|
#define VEHICLE_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION_2(1, 0, VEHICLE_HEADER_VERSION)
|
|
|
|
/**
|
|
* Vehicle HAL to provide interfaces to various Car related sensors. The HAL is
|
|
* designed in a property, value maping where each property has a value which
|
|
* can be "get", "set" and "(un)subscribed" to. Subscribing will require the
|
|
* user of this HAL to provide parameters such as sampling rate.
|
|
*/
|
|
|
|
|
|
/*
|
|
* The id of this module
|
|
*/
|
|
#define VEHICLE_HARDWARE_MODULE_ID "vehicle"
|
|
|
|
/**
|
|
* Name of the vehicle device to open
|
|
*/
|
|
#define VEHICLE_HARDWARE_DEVICE "vehicle_hw_device"
|
|
|
|
/**
|
|
* Each vehicle property is defined with various annotations to specify the type of information.
|
|
* Annotations will be used by scripts to run some type check or generate some boiler-plate codes.
|
|
* Also the annotations are the specification for each property, and each HAL implementation should
|
|
* follow what is specified as annotations.
|
|
* Here is the list of annotations with explanation on what it does:
|
|
* @value_type: Type of data for this property. One of the value from vehicle_value_type should be
|
|
* set here.
|
|
* @change_mode: How this property changes. Value set is from vehicle_prop_change_mode. Some
|
|
* properties can allow either on change or continuous mode and it is up to HAL
|
|
* implementation to choose which mode to use.
|
|
* @access: Define how this property can be accessed. read only, write only or R/W from
|
|
* vehicle_prop_access
|
|
* @data_member: Name of member from vehicle_value union to access this data.
|
|
* @data_enum: enum type that should be used for the data.
|
|
* @unit: Unit of data. Should be from vehicle_unit_type.
|
|
* @config_flags: Usage of config_flags in vehicle_prop_config
|
|
* @config_array: Usage of config_array in vehicle_prop_config. When this is specified,
|
|
* @config_flags will not be used.
|
|
* @config_string: Explains the usage of config_string in vehicle_prop_config. Property with
|
|
* this annotation is expected to have additional information in config_string
|
|
* for that property to work.
|
|
* @zone_type type of zoned used. defined for zoned property
|
|
* @range_start, @range_end : define range of specific property values.
|
|
* @allow_out_of_range_value : This property allows out of range value to deliver additional
|
|
* information. Check VEHICLE_*_OUT_OF_RANGE_* for applicable values.
|
|
*/
|
|
//===== Vehicle Information ====
|
|
|
|
/**
|
|
* Invalid property value used for argument where invalid property gives different result.
|
|
*/
|
|
#define VEHICLE_PROPERTY_INVALID (0x0)
|
|
|
|
/**
|
|
* VIN of vehicle
|
|
* @value_type VEHICLE_VALUE_TYPE_STRING
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member info_vin
|
|
*/
|
|
#define VEHICLE_PROPERTY_INFO_VIN (0x00000100)
|
|
|
|
/**
|
|
* Maker name of vehicle
|
|
* @value_type VEHICLE_VALUE_TYPE_STRING
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member info_make
|
|
*/
|
|
#define VEHICLE_PROPERTY_INFO_MAKE (0x00000101)
|
|
|
|
/**
|
|
* Model of vehicle
|
|
* @value_type VEHICLE_VALUE_TYPE_STRING
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member info_model
|
|
*/
|
|
#define VEHICLE_PROPERTY_INFO_MODEL (0x00000102)
|
|
|
|
/**
|
|
* Model year of vehicle.
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member info_model_year
|
|
* @unit VEHICLE_UNIT_TYPE_YEAR
|
|
*/
|
|
#define VEHICLE_PROPERTY_INFO_MODEL_YEAR (0x00000103)
|
|
|
|
/**
|
|
* Fuel capacity of the vehicle
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member info_fuel_capacity
|
|
* @unit VEHICLE_UNIT_TYPE_VEHICLE_UNIT_TYPE_MILLILITER
|
|
*/
|
|
#define VEHICLE_PROPERTY_INFO_FUEL_CAPACITY (0x00000104)
|
|
|
|
|
|
//==== Vehicle Performance Sensors ====
|
|
|
|
/**
|
|
* Current odometer value of the vehicle
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member odometer
|
|
* @unit VEHICLE_UNIT_TYPE_KILOMETER
|
|
*/
|
|
#define VEHICLE_PROPERTY_PERF_ODOMETER (0x00000204)
|
|
|
|
/**
|
|
* Speed of the vehicle
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member vehicle_speed
|
|
* @unit VEHICLE_UNIT_TYPE_METER_PER_SEC
|
|
*/
|
|
#define VEHICLE_PROPERTY_PERF_VEHICLE_SPEED (0x00000207)
|
|
|
|
|
|
//==== Engine Sensors ====
|
|
|
|
/**
|
|
* Temperature of engine coolant
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member engine_coolant_temperature
|
|
* @unit VEHICLE_UNIT_TYPE_CELCIUS
|
|
*/
|
|
#define VEHICLE_PROPERTY_ENGINE_COOLANT_TEMP (0x00000301)
|
|
|
|
/**
|
|
* Temperature of engine oil
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member engine_oil_temperature
|
|
* @unit VEHICLE_UNIT_TYPE_CELCIUS
|
|
*/
|
|
#define VEHICLE_PROPERTY_ENGINE_OIL_TEMP (0x00000304)
|
|
/**
|
|
* Engine rpm
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member engine_rpm
|
|
* @unit VEHICLE_UNIT_TYPE_RPM
|
|
*/
|
|
#define VEHICLE_PROPERTY_ENGINE_RPM (0x00000305)
|
|
|
|
//==== Event Sensors ====
|
|
|
|
/**
|
|
* Currently selected gear
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member gear_selection
|
|
* @data_enum vehicle_gear
|
|
*/
|
|
#define VEHICLE_PROPERTY_GEAR_SELECTION (0x00000400)
|
|
|
|
/**
|
|
* Current gear. In non-manual case, selected gear does not necessarily match the current gear
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member gear_current_gear
|
|
* @data_enum vehicle_gear
|
|
*/
|
|
#define VEHICLE_PROPERTY_CURRENT_GEAR (0x00000401)
|
|
|
|
/**
|
|
* Parking brake state.
|
|
* @value_type VEHICLE_VALUE_TYPE_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member parking_brake
|
|
* @data_enum vehicle_boolean
|
|
*/
|
|
#define VEHICLE_PROPERTY_PARKING_BRAKE_ON (0x00000402)
|
|
|
|
/**
|
|
* Driving status policy.
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member driving_status
|
|
* @data_enum vehicle_driving_status
|
|
*/
|
|
#define VEHICLE_PROPERTY_DRIVING_STATUS (0x00000404)
|
|
|
|
/**
|
|
* Warning for fuel low level.
|
|
* @value_type VEHICLE_VALUE_TYPE_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member is_fuel_level_low
|
|
* @data_enum vehicle_boolean
|
|
*/
|
|
#define VEHICLE_PROPERTY_FUEL_LEVEL_LOW (0x00000405)
|
|
|
|
/**
|
|
* Night mode or not.
|
|
* @value_type VEHICLE_VALUE_TYPE_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member night_mode
|
|
* @data_enum vehicle_boolean
|
|
*/
|
|
#define VEHICLE_PROPERTY_NIGHT_MODE (0x00000407)
|
|
|
|
|
|
|
|
//==== HVAC Properties ====
|
|
|
|
/**
|
|
* Fan speed setting
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member hvac.fan_speed
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @allow_out_of_range_value : OFF
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_FAN_SPEED (0x00000500)
|
|
|
|
/**
|
|
* Fan direction setting
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member hvac.fan_direction
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_enum vehicle_hvac_fan_direction
|
|
* @allow_out_of_range_value : OFF
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_FAN_DIRECTION (0x00000501)
|
|
|
|
/*
|
|
* Bit flags for fan direction
|
|
*/
|
|
enum vehicle_hvac_fan_direction {
|
|
VEHICLE_HVAC_FAN_DIRECTION_FACE = 0x1,
|
|
VEHICLE_HVAC_FAN_DIRECTION_FLOOR = 0x2,
|
|
VEHICLE_HVAC_FAN_DIRECTION_FACE_AND_FLOOR = 0x3,
|
|
VEHICLE_HVAC_FAN_DIRECTION_DEFROST = 0x4,
|
|
VEHICLE_HVAC_FAN_DIRECTION_DEFROST_AND_FLOOR = 0x5
|
|
};
|
|
|
|
/**
|
|
* HVAC current temperature.
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.temperature_current
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_TEMPERATURE_CURRENT (0x00000502)
|
|
|
|
/**
|
|
* HVAC, target temperature set.
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.temperature_set
|
|
* @allow_out_of_range_value : MIN / MAX / OFF
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET (0x00000503)
|
|
|
|
/**
|
|
* On/off defrost
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_WINDOW
|
|
* @data_member hvac.defrost_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_DEFROSTER (0x00000504)
|
|
|
|
/**
|
|
* On/off AC
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_flags Supported zones
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.ac_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_AC_ON (0x00000505)
|
|
|
|
/**
|
|
* On/off max AC
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.max_ac_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_MAX_AC_ON (0x00000506)
|
|
|
|
/**
|
|
* On/off max defrost
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.max_defrost_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_MAX_DEFROST_ON (0x00000507)
|
|
|
|
/**
|
|
* On/off re-circulation
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.max_recirc_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_RECIRC_ON (0x00000508)
|
|
|
|
/**
|
|
* On/off dual. This will be defined per each row.
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.dual_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_DUAL_ON (0x00000509)
|
|
|
|
/**
|
|
* On/off automatic mode
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.auto_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_AUTO_ON (0x0000050A)
|
|
|
|
/**
|
|
* Seat temperature
|
|
*
|
|
* Negative values indicate cooling.
|
|
* 0 indicates off.
|
|
* Positive values indicate heating.
|
|
*
|
|
* Some vehicles may have multiple levels of heating and cooling. The min/max
|
|
* range defines the allowable range and number of steps in each direction.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_SEAT_TEMPERATURE (0x0000050B)
|
|
|
|
/**
|
|
* Side Mirror Heat
|
|
*
|
|
* Increase values denote higher heating levels for side mirrors.
|
|
* 0 indicates heating is turned off.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_SIDE_MIRROR_HEAT (0x0000050C)
|
|
|
|
/**
|
|
* Steering Wheel Temperature
|
|
*
|
|
* Sets the temperature for the steering wheel
|
|
* Positive value indicates heating.
|
|
* Negative value indicates cooling.
|
|
* 0 indicates tempreature control is off.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_STEERING_WHEEL_TEMP (0x0000050D)
|
|
|
|
/**
|
|
* Temperature units
|
|
*
|
|
* Indicates whether the temperature is in Celsius, Fahrenheit, or a different unit.
|
|
* This parameter affects all HVAC temperatures in the system.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_enum vehicle_unit_type
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_TEMPERATURE_UNITS (0x0000050E)
|
|
|
|
/**
|
|
* Actual fan speed
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member hvac.fan_speed
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @allow_out_of_range_value : OFF
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_ACTUAL_FAN_SPEED_RPM (0x0000050F)
|
|
|
|
|
|
/**
|
|
* Represents power state for HVAC. Some HVAC properties will require matching power to be turned on
|
|
* to get out of OFF state. For non-zoned HVAC properties, VEHICLE_ALL_ZONE corresponds to
|
|
* global power state.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_string list of HVAC properties whose power is controlled by this property. Format is
|
|
* hexa-decimal number (0x...) separated by comma like "0x500,0x503". All zones
|
|
* defined in these affected properties should be available in the property.
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @data_member hvac.power_on
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_POWER_ON (0x00000510)
|
|
|
|
/**
|
|
* Fan Positions Available
|
|
*
|
|
* This is a bit mask of fan positions available for the zone. Each entry in
|
|
* vehicle_hvac_fan_direction is selected by bit position. For instance, if
|
|
* only the FAN_DIRECTION_FACE (0x1) and FAN_DIRECTION_DEFROST (0x4) are available,
|
|
* then this value shall be set to 0x12.
|
|
*
|
|
* 0x12 = (1 << 1) | (1 << 4)
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member int32_value
|
|
* @zone_type VEHICLE_ZONE_TYPE_ZONE
|
|
* @allow_out_of_range_value : OFF
|
|
*/
|
|
#define VEHICLE_PROPERTY_HVAC_FAN_DIRECTION_AVAILABLE (0x00000511)
|
|
|
|
/**
|
|
* Outside temperature
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member outside_temperature
|
|
* @unit VEHICLE_UNIT_TYPE_CELCIUS
|
|
*/
|
|
#define VEHICLE_PROPERTY_ENV_OUTSIDE_TEMPERATURE (0x00000703)
|
|
|
|
|
|
/**
|
|
* Cabin temperature
|
|
* @value_type VEHICLE_VALUE_TYPE_FLOAT
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE|VEHICLE_PROP_CHANGE_MODE_CONTINUOUS
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member cabin_temperature
|
|
* @unit VEHICLE_UNIT_TYPE_CELCIUS
|
|
*/
|
|
#define VEHICLE_PROPERTY_ENV_CABIN_TEMPERATURE (0x00000704)
|
|
|
|
|
|
/*
|
|
* Radio features.
|
|
*/
|
|
/**
|
|
* Radio presets stored on the Car radio module. The data type used is int32
|
|
* array with the following fields:
|
|
* <ul>
|
|
* <li> int32_array[0]: Preset number </li>
|
|
* <li> int32_array[1]: Band type (see #RADIO_BAND_FM in
|
|
* system/core/include/system/radio.h).
|
|
* <li> int32_array[2]: Channel number </li>
|
|
* <li> int32_array[3]: Sub channel number </li>
|
|
* </ul>
|
|
*
|
|
* NOTE: When getting a current preset config ONLY set preset number (i.e.
|
|
* int32_array[0]). For setting a preset other fields are required.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_flags Number of presets supported
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_RADIO_PRESET (0x00000801)
|
|
|
|
/**
|
|
* Constants relevant to radio.
|
|
*/
|
|
enum vehicle_radio_consts {
|
|
/** Minimum value for the radio preset */
|
|
VEHICLE_RADIO_PRESET_MIN_VALUE = 1,
|
|
};
|
|
|
|
/**
|
|
* Represents audio focus state of Android side. Note that car's audio module will own audio
|
|
* focus and grant audio focus to Android side when requested by Android side. The focus has both
|
|
* per stream characteristics and global characteristics.
|
|
*
|
|
* Focus request (get of this property) will take the following form in int32_vec4:
|
|
* int32_array[0]: vehicle_audio_focus_request type
|
|
* int32_array[1]: bit flags of streams requested by this focus request. There can be up to
|
|
* 32 streams.
|
|
* int32_array[2]: External focus state flags. For request, only flag like
|
|
* VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG or
|
|
* VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG can be used.
|
|
* VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG is for case like radio where android
|
|
* side app still needs to hold focus but playback is done outside Android.
|
|
* VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG is for muting media channel
|
|
* including radio. VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG can be set even
|
|
* if android side releases focus (request type REQUEST_RELEASE). In that case,
|
|
* audio module should maintain mute state until user's explicit action to
|
|
* play some media.
|
|
* int32_array[3]: Currently active audio contexts. Use combination of flags from
|
|
* vehicle_audio_context_flag.
|
|
* This can be used as a hint to adjust audio policy or other policy decision.
|
|
* Note that there can be multiple context active at the same time. And android
|
|
* can send the same focus request type gain due to change in audio contexts.
|
|
* Note that each focus request can request multiple streams that is expected to be used for
|
|
* the current request. But focus request itself is global behavior as GAIN or GAIN_TRANSIENT
|
|
* expects all sounds played by car's audio module to stop. Note that stream already allocated to
|
|
* android before this focus request should not be affected by focus request.
|
|
*
|
|
* Focus response (set and subscription callback for this property) will take the following form:
|
|
* int32_array[0]: vehicle_audio_focus_state type
|
|
* int32_array[1]: bit flags of streams allowed.
|
|
* int32_array[2]: External focus state: bit flags of currently active audio focus in car
|
|
* side (outside Android). Active audio focus does not necessarily mean currently
|
|
* playing, but represents the state of having focus or waiting for focus
|
|
* (pause state).
|
|
* One or combination of flags from vehicle_audio_ext_focus_flag.
|
|
* 0 means no active audio focus holder outside Android.
|
|
* The state will have following values for each vehicle_audio_focus_state_type:
|
|
* GAIN: 0 or VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY when radio is active in
|
|
* Android side.
|
|
* GAIN_TRANSIENT: 0. Can be VEHICLE_AUDIO_EXT_FOCUS_CAR_PERMANENT or
|
|
* VEHICLE_AUDIO_EXT_FOCUS_CAR_TRANSIENT if android side has requested
|
|
* GAIN_TRANSIENT_MAY_DUCK and car side is ducking.
|
|
* LOSS: 0 when no focus is audio is active in car side.
|
|
* VEHICLE_AUDIO_EXT_FOCUS_CAR_PERMANENT when car side is playing something
|
|
* permanent.
|
|
* LOSS_TRANSIENT: always should be VEHICLE_AUDIO_EXT_FOCUS_CAR_TRANSIENT
|
|
* int32_array[3]: context requested by android side when responding to focus request.
|
|
* When car side is taking focus away, this should be zero.
|
|
*
|
|
* A focus response should be sent per each focus request even if there is no change in
|
|
* focus state. This can happen in case like focus request only involving context change
|
|
* where android side still needs matching focus response to confirm that audio module
|
|
* has made necessary changes.
|
|
*
|
|
* If car does not support VEHICLE_PROPERTY_AUDIO_FOCUS, focus is assumed to be granted always.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_AUDIO_FOCUS (0x00000900)
|
|
|
|
enum vehicle_audio_focus_request {
|
|
VEHICLE_AUDIO_FOCUS_REQUEST_GAIN = 0x1,
|
|
VEHICLE_AUDIO_FOCUS_REQUEST_GAIN_TRANSIENT = 0x2,
|
|
VEHICLE_AUDIO_FOCUS_REQUEST_GAIN_TRANSIENT_MAY_DUCK = 0x3,
|
|
/**
|
|
* This is for the case where android side plays sound like UI feedback
|
|
* and car side does not need to duck existing playback as long as
|
|
* requested stream is available.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_REQUEST_GAIN_TRANSIENT_NO_DUCK = 0x4,
|
|
VEHICLE_AUDIO_FOCUS_REQUEST_RELEASE = 0x5,
|
|
};
|
|
|
|
enum vehicle_audio_focus_state {
|
|
/**
|
|
* Android side has permanent focus and can play allowed streams.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_STATE_GAIN = 0x1,
|
|
/**
|
|
* Android side has transient focus and can play allowed streams.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_STATE_GAIN_TRANSIENT = 0x2,
|
|
/**
|
|
* Car audio module is playing guidance kind of sound outside Android. Android side can
|
|
* still play through allowed streams with ducking.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_STATE_LOSS_TRANSIENT_CAN_DUCK = 0x3,
|
|
/**
|
|
* Car audio module is playing transient sound outside Android. Android side should stop
|
|
* playing any sounds.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_STATE_LOSS_TRANSIENT = 0x4,
|
|
/**
|
|
* Android side has lost focus and cannot play any sound.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_STATE_LOSS = 0x5,
|
|
/**
|
|
* car audio module is playing safety critical sound, and Android side cannot request focus
|
|
* until the current state is finished. car audio module should restore it to the previous
|
|
* state when it can allow Android to play.
|
|
*/
|
|
VEHICLE_AUDIO_FOCUS_STATE_LOSS_TRANSIENT_EXLCUSIVE = 0x6,
|
|
};
|
|
|
|
/**
|
|
* Flags to represent multiple streams by combining these.
|
|
*/
|
|
enum vehicle_audio_stream_flag {
|
|
VEHICLE_AUDIO_STREAM_STREAM0_FLAG = (0x1<<0),
|
|
VEHICLE_AUDIO_STREAM_STREAM1_FLAG = (0x1<<1),
|
|
VEHICLE_AUDIO_STREAM_STREAM2_FLAG = (0x1<<2),
|
|
};
|
|
|
|
/**
|
|
* Represents stream number (always 0 to N -1 where N is max number of streams).
|
|
* Can be used for audio related property expecting one stream.
|
|
*/
|
|
enum vehicle_audio_stream {
|
|
VEHICLE_AUDIO_STREAM0 = 0,
|
|
VEHICLE_AUDIO_STREAM1 = 1,
|
|
};
|
|
|
|
/**
|
|
* Flag to represent external focus state (outside Android).
|
|
*/
|
|
enum vehicle_audio_ext_focus_flag {
|
|
/**
|
|
* No external focus holder.
|
|
*/
|
|
VEHICLE_AUDIO_EXT_FOCUS_NONE_FLAG = 0x0,
|
|
/**
|
|
* Car side (outside Android) has component holding GAIN kind of focus state.
|
|
*/
|
|
VEHICLE_AUDIO_EXT_FOCUS_CAR_PERMANENT_FLAG = 0x1,
|
|
/**
|
|
* Car side (outside Android) has component holding GAIN_TRANSIENT kind of focus state.
|
|
*/
|
|
VEHICLE_AUDIO_EXT_FOCUS_CAR_TRANSIENT_FLAG = 0x2,
|
|
/**
|
|
* Car side is expected to play something while focus is held by Android side. One example
|
|
* can be radio attached in car side. But Android's radio app still should have focus,
|
|
* and Android side should be in GAIN state, but media stream will not be allocated to Android
|
|
* side and car side can play radio any time while this flag is active.
|
|
*/
|
|
VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG = 0x4,
|
|
/**
|
|
* Car side should mute any media including radio. This can be used with any focus request
|
|
* including GAIN* and RELEASE.
|
|
*/
|
|
VEHICLE_AUDIO_EXT_FOCUS_CAR_MUTE_MEDIA_FLAG = 0x8,
|
|
};
|
|
|
|
/**
|
|
* Index in int32_array for VEHICLE_PROPERTY_AUDIO_FOCUS property.
|
|
*/
|
|
enum vehicle_audio_focus_index {
|
|
VEHICLE_AUDIO_FOCUS_INDEX_FOCUS = 0,
|
|
VEHICLE_AUDIO_FOCUS_INDEX_STREAMS = 1,
|
|
VEHICLE_AUDIO_FOCUS_INDEX_EXTERNAL_FOCUS_STATE = 2,
|
|
VEHICLE_AUDIO_FOCUS_INDEX_AUDIO_CONTEXTS = 3,
|
|
};
|
|
|
|
/**
|
|
* Flags to tell the current audio context.
|
|
*/
|
|
enum vehicle_audio_context_flag {
|
|
/** Music playback is currently active. */
|
|
VEHICLE_AUDIO_CONTEXT_MUSIC_FLAG = 0x1,
|
|
/** Navigation is currently running. */
|
|
VEHICLE_AUDIO_CONTEXT_NAVIGATION_FLAG = 0x2,
|
|
/** Voice command session is currently running. */
|
|
VEHICLE_AUDIO_CONTEXT_VOICE_COMMAND_FLAG = 0x4,
|
|
/** Voice call is currently active. */
|
|
VEHICLE_AUDIO_CONTEXT_CALL_FLAG = 0x8,
|
|
/** Alarm is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY. */
|
|
VEHICLE_AUDIO_CONTEXT_ALARM_FLAG = 0x10,
|
|
/**
|
|
* Notification sound is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY.
|
|
*/
|
|
VEHICLE_AUDIO_CONTEXT_NOTIFICATION_FLAG = 0x20,
|
|
/**
|
|
* Context unknown. Only used for VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY to represent default
|
|
* stream for unknown contents.
|
|
*/
|
|
VEHICLE_AUDIO_CONTEXT_UNKNOWN_FLAG = 0x40,
|
|
/** Safety alert / warning is played. */
|
|
VEHICLE_AUDIO_CONTEXT_SAFETY_ALERT_FLAG = 0x80,
|
|
/** CD / DVD kind of audio is played */
|
|
VEHICLE_AUDIO_CONTEXT_CD_ROM_FLAG = 0x100,
|
|
/** Aux audio input is played */
|
|
VEHICLE_AUDIO_CONTEXT_AUX_AUDIO_FLAG = 0x200,
|
|
/** system sound like UI feedback */
|
|
VEHICLE_AUDIO_CONTEXT_SYSTEM_SOUND_FLAG = 0x400,
|
|
/** Radio is played */
|
|
VEHICLE_AUDIO_CONTEXT_RADIO_FLAG = 0x800,
|
|
/** Ext source is played. This is for tagging generic ext sources. */
|
|
VEHICLE_AUDIO_CONTEXT_EXT_SOURCE_FLAG = 0x1000,
|
|
};
|
|
|
|
/**
|
|
* Property to control audio volume of each audio context.
|
|
*
|
|
* vehicle_prop_config_t
|
|
* config_array[0] : bit flags of all supported audio contexts. If this is 0,
|
|
* audio volume is controlled per physical stream
|
|
* config_array[1] : flags defined in vehicle_audio_volume_capability_flag to
|
|
* represent audio module's capability.
|
|
*
|
|
* Data type looks like:
|
|
* int32_array[0] : stream context as defined in vehicle_audio_context_flag. If only physical
|
|
stream is supported (config_array[0] == 0), this will represent physical
|
|
stream number.
|
|
* int32_array[1] : volume level, valid range is 0 to int32_max_value defined in config.
|
|
* 0 will be mute state. int32_min_value in config should be always 0.
|
|
* int32_array[2] : One of vehicle_audio_volume_state.
|
|
*
|
|
* This property requires per stream based get. HAL implementation should check stream number
|
|
* in get call to return the right volume.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC3
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_flags all audio contexts supported.
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_AUDIO_VOLUME (0x00000901)
|
|
|
|
|
|
/**
|
|
* flags to represent capability of audio volume property.
|
|
* used in config_array[1] of vehicle_prop_config_t.
|
|
*/
|
|
enum vehicle_audio_volume_capability_flag {
|
|
/**
|
|
* External audio module or vehicle hal has persistent storage
|
|
* to keep the volume level. This should be set only when per context
|
|
* volume level is supproted. When this is set, audio volume level per
|
|
* each context will be retrieved from the property when systen starts up.
|
|
* And external audio module is also expected to adjust volume automatically
|
|
* whenever there is an audio context change.
|
|
* When this flag is not set, android side will assume that there is no
|
|
* persistent storage and stored value in android side will be used to
|
|
* initialize the volume level. And android side will set volume level
|
|
* of each physical streams whenever there is an audio context change.
|
|
*/
|
|
VEHICLE_AUDIO_VOLUME_CAPABILITY_PERSISTENT_STORAGE = 0x1,
|
|
/**
|
|
* When this flag is set, the H/W can support only single master volume for all streams.
|
|
* There is no way to set volume level differently per each stream or context.
|
|
*/
|
|
VEHICLE_AUDIO_VOLUME_CAPABILITY_MASTER_VOLUME_ONLY = 0x2,
|
|
};
|
|
|
|
|
|
/**
|
|
* enum to represent audio volume state.
|
|
*/
|
|
enum vehicle_audio_volume_state {
|
|
VEHICLE_AUDIO_VOLUME_STATE_OK = 0,
|
|
/**
|
|
* Audio volume has reached volume limit set in VEHICLE_PROPERTY_AUDIO_VOLUME_LIMIT
|
|
* and user's request to increase volume further is not allowed.
|
|
*/
|
|
VEHICLE_AUDIO_VOLUME_STATE_LIMIT_REACHED = 1,
|
|
};
|
|
|
|
/**
|
|
* Index in int32_array for VEHICLE_PROPERTY_AUDIO_VOLUME property.
|
|
*/
|
|
enum vehicle_audio_volume_index {
|
|
VEHICLE_AUDIO_VOLUME_INDEX_STREAM = 0,
|
|
VEHICLE_AUDIO_VOLUME_INDEX_VOLUME = 1,
|
|
VEHICLE_AUDIO_VOLUME_INDEX_STATE = 2,
|
|
};
|
|
|
|
/**
|
|
* Property for handling volume limit set by user. This limits maximum volume that can be set
|
|
* per each context or physical stream.
|
|
*
|
|
* vehicle_prop_config_t
|
|
* config_array[0] : bit flags of all supported audio contexts. If this is 0,
|
|
* audio volume is controlled per physical stream
|
|
* config_array[1] : flags defined in vehicle_audio_volume_capability_flag to
|
|
* represent audio module's capability.
|
|
*
|
|
* Data type looks like:
|
|
* int32_array[0] : stream context as defined in vehicle_audio_context_flag. If only physical
|
|
* stream is supported (config_array[0] == 0), this will represent physical
|
|
* stream number.
|
|
* int32_array[1] : maximum volume set to the stream. If there is no restriction, this value
|
|
* will be bigger than VEHICLE_PROPERTY_AUDIO_VOLUME's max value.
|
|
*
|
|
* If car does not support this feature, this property should not be populated by HAL.
|
|
* This property requires per stream based get. HAL implementation should check stream number
|
|
* in get call to return the right volume.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC2
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_flags all audio contexts supported.
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_AUDIO_VOLUME_LIMIT (0x00000902)
|
|
|
|
/**
|
|
* Index in int32_array for VEHICLE_PROPERTY_AUDIO_VOLUME_LIMIT property.
|
|
*/
|
|
enum vehicle_audio_volume_limit_index {
|
|
VEHICLE_AUDIO_VOLUME_LIMIT_INDEX_STREAM = 0,
|
|
VEHICLE_AUDIO_VOLUME_LIMIT_INDEX_MAX_VOLUME = 1,
|
|
};
|
|
|
|
/**
|
|
* Property to share audio routing policy of android side. This property is set at the beginning
|
|
* to pass audio policy in android side down to vehicle HAL and car audio module.
|
|
* This can be used as a hint to adjust audio policy or other policy decision.
|
|
*
|
|
* int32_array[0] : audio stream where the audio for the application context will be routed
|
|
* by default. Note that this is the default setting from system, but each app
|
|
* may still use different audio stream for whatever reason.
|
|
* int32_array[1] : All audio contexts that will be sent through the physical stream. Flag
|
|
* is defined in vehicle_audio_context_flag.
|
|
|
|
* Setting of this property will be done for all available physical streams based on audio H/W
|
|
* variant information acquired from VEHICLE_PROPERTY_AUDIO_HW_VARIANT property.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC2
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_WRITE
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY (0x00000903)
|
|
|
|
/**
|
|
* Index in int32_array for VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY property.
|
|
*/
|
|
enum vehicle_audio_routing_policy_index {
|
|
VEHICLE_AUDIO_ROUTING_POLICY_INDEX_STREAM = 0,
|
|
VEHICLE_AUDIO_ROUTING_POLICY_INDEX_CONTEXTS = 1,
|
|
};
|
|
|
|
/**
|
|
* Property to return audio H/W variant type used in this car. This allows android side to
|
|
* support different audio policy based on H/W variant used. Note that other components like
|
|
* CarService may need overlay update to support additional variants. If this property does not
|
|
* exist, default audio policy will be used.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @config_flags Additional info on audio H/W. Should use vehicle_audio_hw_variant_config_flag for
|
|
* this.
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_AUDIO_HW_VARIANT (0x00000904)
|
|
|
|
/**
|
|
* Flag to be used in vehicle_prop_config.config_flags for VEHICLE_PROPERTY_AUDIO_HW_VARIANT.
|
|
*/
|
|
enum vehicle_audio_hw_variant_config_flag {
|
|
/**
|
|
* Flag to tell that radio is internal to android and radio should
|
|
* be treated like other android stream like media.
|
|
* When this flag is not set or AUDIO_HW_VARIANT does not exist,
|
|
* radio is treated as external module. This brins some delta in audio focus
|
|
* handling as well.
|
|
*/
|
|
VEHICLE_AUDIO_HW_VARIANT_FLAG_INTERNAL_RADIO_FLAG = 0x1,
|
|
};
|
|
|
|
/** audio routing for AM/FM. This should be also be the value when there is only one
|
|
radio module in the system. */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_AM_FM "RADIO_AM_FM"
|
|
/** Should be added only when there is a separate radio module with HD capability. */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_AM_FM_HD "RADIO_AM_FM_HD"
|
|
/** For digial audio broadcasting type of radio */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_DAB "RADIO_DAB"
|
|
/** For satellite type of radio */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_RADIO_SATELLITE "RADIO_SATELLITE"
|
|
/** For CD or DVD */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_CD_DVD "CD_DVD"
|
|
/** For 1st auxiliary input */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_AUX_IN0 "AUX_IN0"
|
|
/** For 2nd auxiliary input */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_AUX_IN1 "AUX_IN1"
|
|
/** For navigation guidance from outside android */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_NAV_GUIDANCE "EXT_NAV_GUIDANCE"
|
|
/** For voice command from outside android */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_VOICE_COMMAND "EXT_VOICE_COMMAND"
|
|
/** For voice call from outside android */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_VOICE_CALL "EXT_VOICE_CALL"
|
|
/** For safety alert from outside android */
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_EXT_SAFETY_ALERT "EXT_SAFETY_ALERT"
|
|
|
|
/**
|
|
* Property to pass hint on external audio routing. When android side request focus
|
|
* with VEHICLE_AUDIO_EXT_FOCUS_CAR_PLAY_ONLY_FLAG flag, this property will be set
|
|
* before setting AUDIO_FOCUS property as a hint for external audio source routing.
|
|
* Note that setting this property alone should not trigger any change.
|
|
* Audio routing should be changed only when AUDIO_FOCUS property is set. Note that
|
|
* this property allows passing custom value as long as it is defined in config_string.
|
|
* This allows supporting non-standard routing options through this property.
|
|
* It is recommended to use separate name space for custom property to prevent conflict in future
|
|
* android releases.
|
|
* Enabling each external routing option is done by enabling each bit flag for the routing.
|
|
* This property can support up to 128 external routings.
|
|
* To give full flexibility, there is no standard definition for each bit flag and
|
|
* assigning each big flag to specific routing type is decided by config_string.
|
|
* config_string has format of each entry separated by ','
|
|
* and each entry has format of bitFlagPositon:typeString[:physicalStreamNumber].
|
|
* bitFlagPosition: represents which big flag will be set to enable this routing. 0 means
|
|
* LSB in int32_array[0]. 31 will be MSB in int32_array[0]. 127 will MSB in int32_array[3].
|
|
* typeString: string representation of external routing. Some types are already defined
|
|
* in VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_* and use them first before adding something
|
|
* custom. Applications will find each routing using this string.
|
|
* physicalStreamNumber: This part is optional and represents physical stream to android
|
|
* which will be disabled when this routing is enabled. If not specified, this routing
|
|
* should not affect physical streams to android.
|
|
* As an example, let's assume a system with two physical streams, 0 for media and 1 for
|
|
* nav guidance. And let's assume external routing option of am fm radio, external navigation
|
|
* guidance, satellite radio, and one custom. Let's assume that radio and satellite replaces
|
|
* physical stream 0 and external navigation replaces physical stream 1. And bit flag will be
|
|
* assigned in the order listed above. This configuration will look like this in config_string:
|
|
* "0:RADIO_AM_FM:0,1:EXT_NAV_GUIDANCE:1,2:RADIO_SATELLITE:0,3:com.test.SOMETHING_CUSTOM"
|
|
* When android requests RADIO_AM_FM, int32_array[0] will be set to 0x1.
|
|
* When android requests RADIO_SATELLITE + EXT_NAV_GUIDANCE, int32_array[0] will be set to 0x2|0x4.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_WRITE|VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_string List of all avaiable external source in the system.
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_HINT (0x00000905)
|
|
|
|
/**
|
|
* Property to control power state of application processor.
|
|
*
|
|
* It is assumed that AP's power state is controller by separate power controller.
|
|
*
|
|
* For configuration information, vehicle_prop_config.config_flags can have bit flag combining
|
|
* values in vehicle_ap_power_state_config_type.
|
|
*
|
|
* For get / notification, data type looks like this:
|
|
* int32_array[0] : vehicle_ap_power_state_type
|
|
* int32_array[1] : additional parameter relevant for each state. should be 0 if not used.
|
|
* For set, data type looks like this:
|
|
* int32_array[0] : vehicle_ap_power_state_set_type
|
|
* int32_array[1] : additional parameter relevant for each request. should be 0 if not used.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC2
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_flags Additional info on power state. Should use vehicle_ap_power_state_config_flag.
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_AP_POWER_STATE (0x00000A00)
|
|
|
|
enum vehicle_ap_power_state_config_flag {
|
|
/**
|
|
* AP can enter deep sleep state. If not set, AP will always shutdown from
|
|
* VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE power state.
|
|
*/
|
|
VEHICLE_AP_POWER_STATE_CONFIG_ENABLE_DEEP_SLEEP_FLAG = 0x1,
|
|
|
|
/**
|
|
* The power controller can power on AP from off state after timeout specified in
|
|
* VEHICLE_AP_POWER_SET_SHUTDOWN_READY message.
|
|
*/
|
|
VEHICLE_AP_POWER_STATE_CONFIG_SUPPORT_TIMER_POWER_ON_FLAG = 0x2,
|
|
};
|
|
|
|
enum vehicle_ap_power_state {
|
|
/** vehicle HAL will never publish this state to AP */
|
|
VEHICLE_AP_POWER_STATE_OFF = 0,
|
|
/** vehicle HAL will never publish this state to AP */
|
|
VEHICLE_AP_POWER_STATE_DEEP_SLEEP = 1,
|
|
/** AP is on but display should be off. */
|
|
VEHICLE_AP_POWER_STATE_ON_DISP_OFF = 2,
|
|
/** AP is on with display on. This state allows full user interaction. */
|
|
VEHICLE_AP_POWER_STATE_ON_FULL = 3,
|
|
/**
|
|
* The power controller has requested AP to shutdown. AP can either enter sleep state or start
|
|
* full shutdown. AP can also request postponing shutdown by sending
|
|
* VEHICLE_AP_POWER_SET_SHUTDOWN_POSTPONE message. The power controller should change power
|
|
* state to this state to shutdown system.
|
|
*
|
|
* int32_array[1] : one of enum_vehicle_ap_power_state_shutdown_param_type
|
|
*/
|
|
VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE = 4,
|
|
};
|
|
|
|
enum vehicle_ap_power_state_shutdown_param {
|
|
/** AP should shutdown immediately. Postponing is not allowed. */
|
|
VEHICLE_AP_POWER_SHUTDOWN_PARAM_SHUTDOWN_IMMEDIATELY = 1,
|
|
/** AP can enter deep sleep instead of shutting down completely. */
|
|
VEHICLE_AP_POWER_SHUTDOWN_PARAM_CAN_SLEEP = 2,
|
|
/** AP can only shutdown with postponing allowed. */
|
|
VEHICLE_AP_POWER_SHUTDOWN_PARAM_SHUTDOWN_ONLY = 3,
|
|
};
|
|
|
|
enum vehicle_ap_power_set_state {
|
|
/**
|
|
* AP has finished boot up, and can start shutdown if requested by power controller.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_BOOT_COMPLETE = 0x1,
|
|
/**
|
|
* AP is entering deep sleep state. How this state is implemented may vary depending on
|
|
* each H/W, but AP's power should be kept in this state.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_DEEP_SLEEP_ENTRY = 0x2,
|
|
/**
|
|
* AP is exiting from deep sleep state, and is in VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE state.
|
|
* The power controller may change state to other ON states based on the current state.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_DEEP_SLEEP_EXIT = 0x3,
|
|
/**
|
|
* int32_array[1]: Time to postpone shutdown in ms. Maximum value can be 5000 ms.
|
|
* If AP needs more time, it will send another POSTPONE message before
|
|
* the previous one expires.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_SHUTDOWN_POSTPONE = 0x4,
|
|
/**
|
|
* AP is starting shutting down. When system completes shutdown, everything will stop in AP
|
|
* as kernel will stop all other contexts. It is responsibility of vehicle HAL or lower level
|
|
* to synchronize that state with external power controller. As an example, some kind of ping
|
|
* with timeout in power controller can be a solution.
|
|
*
|
|
* int32_array[1]: Time to turn on AP in secs. Power controller may turn on AP after specified
|
|
* time so that AP can run tasks like update. If it is set to 0, there is no
|
|
* wake up, and power controller may not necessarily support wake-up.
|
|
* If power controller turns on AP due to timer, it should start with
|
|
* VEHICLE_AP_POWER_STATE_ON_DISP_OFF state, and after receiving
|
|
* VEHICLE_AP_POWER_SET_BOOT_COMPLETE, it shall do state transition to
|
|
* VEHICLE_AP_POWER_STATE_SHUTDOWN_PREPARE.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_SHUTDOWN_START = 0x5,
|
|
/**
|
|
* User has requested to turn off headunit's display, which is detected in android side.
|
|
* The power controller may change the power state to VEHICLE_AP_POWER_STATE_ON_DISP_OFF.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_DISPLAY_OFF = 0x6,
|
|
/**
|
|
* User has requested to turn on headunit's display, most probably from power key input which
|
|
* is attached to headunit. The power controller may change the power state to
|
|
* VEHICLE_AP_POWER_STATE_ON_FULL.
|
|
*/
|
|
VEHICLE_AP_POWER_SET_DISPLAY_ON = 0x7,
|
|
};
|
|
|
|
/**
|
|
* Property to represent brightness of the display. Some cars have single control for
|
|
* the brightness of all displays and this property is to share change in that control.
|
|
*
|
|
* If this is writable, android side can set this value when user changes display brightness
|
|
* from Settings. If this is read only, user may still change display brightness from Settings,
|
|
* but that will not be reflected to other displays.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ|VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32
|
|
*/
|
|
#define VEHICLE_PROPERTY_DISPLAY_BRIGHTNESS (0x00000A01)
|
|
|
|
|
|
/**
|
|
* Index in int32_array for VEHICLE_PROPERTY_AP_POWER_STATE property.
|
|
*/
|
|
enum vehicle_ap_power_state_index {
|
|
VEHICLE_AP_POWER_STATE_INDEX_STATE = 0,
|
|
VEHICLE_AP_POWER_STATE_INDEX_ADDITIONAL = 1,
|
|
};
|
|
|
|
/**
|
|
* Property to report bootup reason for the current power on. This is a static property that will
|
|
* not change for the whole duration until power off. For example, even if user presses power on
|
|
* button after automatic power on with door unlock, bootup reason should stay with
|
|
* VEHICLE_AP_POWER_BOOTUP_REASON_USER_UNLOCK.
|
|
*
|
|
* int32_value should be vehicle_ap_power_bootup_reason.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_AP_POWER_BOOTUP_REASON (0x00000A02)
|
|
|
|
/**
|
|
* Enum to represent bootup reason.
|
|
*/
|
|
enum vehicle_ap_power_bootup_reason {
|
|
/**
|
|
* Power on due to user's pressing of power key or rotating of ignition switch.
|
|
*/
|
|
VEHICLE_AP_POWER_BOOTUP_REASON_USER_POWER_ON = 0,
|
|
/**
|
|
* Automatic power on triggered by door unlock or any other kind of automatic user detection.
|
|
*/
|
|
VEHICLE_AP_POWER_BOOTUP_REASON_USER_UNLOCK = 1,
|
|
/**
|
|
* Automatic power on triggered by timer. This only happens when AP has asked wake-up after
|
|
* certain time through time specified in VEHICLE_AP_POWER_SET_SHUTDOWN_START.
|
|
*/
|
|
VEHICLE_AP_POWER_BOOTUP_REASON_TIMER = 2,
|
|
};
|
|
|
|
|
|
/**
|
|
* Property to feed H/W input events to android
|
|
*
|
|
* int32_array[0] : action defined by vehicle_hw_key_input_action
|
|
* int32_array[1] : key code, should use standard android key code
|
|
* int32_array[2] : target display defined in vehicle_display. Events not tied
|
|
* to specific display should be sent to DISPLAY_MAIN.
|
|
* int32_array[3] : reserved for now. should be zero
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ
|
|
* @config_flags
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_HW_KEY_INPUT (0x00000A10)
|
|
|
|
enum vehicle_hw_key_input_action {
|
|
/** Key down */
|
|
VEHICLE_HW_KEY_INPUT_ACTION_DOWN = 0,
|
|
/** Key up */
|
|
VEHICLE_HW_KEY_INPUT_ACTION_UP = 1,
|
|
};
|
|
|
|
enum vehicle_display {
|
|
/** center console */
|
|
VEHICLE_DISPLAY_MAIN = 0,
|
|
VEHICLE_DISPLAY_INSTRUMENT_CLUSTER = 1,
|
|
};
|
|
|
|
/**
|
|
* Property to define instrument cluster information.
|
|
* For CLUSTER_TYPE_EXTERNAL_DISPLAY:
|
|
* READ:
|
|
* int32_array[0] : The current screen mode index. Screen mode is defined
|
|
* as a configuration in car service and represents which
|
|
* area of screen is renderable.
|
|
* int32_array[1] : Android can render to instrument cluster (=1) or not(=0). When this is 0,
|
|
* instrument cluster may be rendering some information in the area
|
|
* allocated for android and android side rendering is invisible. *
|
|
* int32_array[2..3] : should be zero
|
|
* WRITE from android:
|
|
* int32_array[0] : Preferred mode for android side. Depending on the app rendering to instrument
|
|
* cluster, preferred mode can change. Instrument cluster still needs to send
|
|
* event with new mode to trigger actual mode change.
|
|
* int32_array[1] : The current app context relevant for instrument cluster. Use the same flag
|
|
* with vehicle_audio_context_flag but this context represents active apps, not
|
|
* active audio. Instrument cluster side may change mode depending on the
|
|
* currently active contexts.
|
|
* int32_array[2..3] : should be zero
|
|
* When system boots up, Android side will write {0, 0, 0, 0} when it is ready to render to
|
|
* instrument cluster. Before this message, rendering from android should not be visible in the
|
|
* cluster.
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32_VEC4
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @config_array 0:vehicle_instument_cluster_type 1:hw type
|
|
* @data_member int32_array
|
|
*/
|
|
#define VEHICLE_PROPERTY_INSTRUMENT_CLUSTER_INFO (0x00000A20)
|
|
|
|
/**
|
|
* Represents instrument cluster type available in system
|
|
*/
|
|
enum vehicle_instument_cluster_type {
|
|
/** Android has no access to instument cluster */
|
|
VEHICLE_INSTRUMENT_CLUSTER_TYPE_NONE = 0,
|
|
/**
|
|
* Instrument cluster can communicate through vehicle hal with additional
|
|
* properties to exchange meta-data
|
|
*/
|
|
VEHICLE_INSTRUMENT_CLUSTER_TYPE_HAL_INTERFACE = 1,
|
|
/**
|
|
* Instrument cluster is external display where android can render contents
|
|
*/
|
|
VEHICLE_INSTRUMENT_CLUSTER_TYPE_EXTERNAL_DISPLAY = 2,
|
|
};
|
|
|
|
/**
|
|
* Current date and time, encoded as Unix time.
|
|
* This value denotes the number of seconds that have elapsed since 1/1/1970.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT64
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_SET
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int64_value
|
|
* @unit VEHICLE_UNIT_TYPE_SECS
|
|
*/
|
|
#define VEHICLE_PROPERTY_UNIX_TIME (0x00000A30)
|
|
|
|
/**
|
|
* Current time only.
|
|
* Some vehicles may not keep track of date. This property only affects the current time, in
|
|
* seconds during the day. Thus, the max value for this parameter is 86,400 (24 * 60 * 60)
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_SET
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32_value
|
|
* @unit VEHICLE_UNIT_TYPE_SECS
|
|
*/
|
|
#define VEHICLE_PROPERTY_CURRENT_TIME_IN_SECONDS (0x00000A31)
|
|
|
|
|
|
//==== Car Cabin Properties ====
|
|
/**
|
|
* Most Car Cabin properties have both a MOVE and POSITION parameter associated with them.
|
|
*
|
|
* The MOVE parameter will start moving the device in the indicated direction. The magnitude
|
|
* indicates the relative speed. For instance, setting the WINDOW_MOVE parameter to +1 will roll
|
|
* the window up. Setting it to +2 (if available) will roll it up faster.
|
|
*
|
|
* The POSITION parameter will move the device to the desired position. For instance, if the
|
|
* WINDOW_POS has a range of 0-100, then setting this parameter to 50 will open the window halfway.
|
|
* Depending upon the initial position, the window may move up or down to the 50% value.
|
|
*
|
|
* OEMs may choose to implement one or both of the MOVE/POSITION parameters depending upon the
|
|
* capability of the hardware.
|
|
*/
|
|
|
|
// Doors
|
|
/**
|
|
* Door position
|
|
*
|
|
* This is an integer in case a door may be set to a particular position. Max
|
|
* value indicates fully open, min value (0) indicates fully closed.
|
|
*
|
|
* Some vehicles (minivans) can open the door electronically. Hence, the ability
|
|
* to write this property.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_DOOR
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_DOOR_POS (0x00000B00)
|
|
|
|
/**
|
|
* Door move
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_DOOR
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_DOOR_MOVE (0x00000B01)
|
|
|
|
|
|
/**
|
|
* Door lock
|
|
*
|
|
* 'true' indicates door is locked
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_DOOR
|
|
* @data_member boolean_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_DOOR_LOCK (0x00000B02)
|
|
|
|
// Mirrors
|
|
/**
|
|
* Mirror Z Position
|
|
*
|
|
* Positive value indicates tilt upwards, negative value is downwards
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_MIRROR
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_MIRROR_Z_POS (0x00000B40)
|
|
|
|
/**
|
|
* Mirror Z Move
|
|
*
|
|
* Positive value indicates tilt upwards, negative value is downwards
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_MIRROR
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_MIRROR_Z_MOVE (0x00000B41)
|
|
|
|
/**
|
|
* Mirror Y Position
|
|
*
|
|
* Positive value indicate tilt right, negative value is left
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_MIRROR
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_MIRROR_Y_POS (0x00000B42)
|
|
|
|
/**
|
|
* Mirror Y Move
|
|
*
|
|
* Positive value indicate tilt right, negative value is left
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_MIRROR
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_MIRROR_Y_MOVE (0x00000B43)
|
|
|
|
/**
|
|
* Mirror Lock
|
|
*
|
|
* True indicates mirror positions are locked and not changeable
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member boolean_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_MIRROR_LOCK (0x00000B44)
|
|
|
|
/**
|
|
* Mirror Fold
|
|
*
|
|
* True indicates mirrors are folded
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member boolean_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_MIRROR_FOLD (0x00000B45)
|
|
|
|
// Seats
|
|
/**
|
|
* Seat memory select
|
|
*
|
|
* This parameter selects the memory preset to use to select the seat position.
|
|
* The minValue is always 0, and the maxValue determines the number of seat
|
|
* positions available.
|
|
*
|
|
* For instance, if the driver's seat has 3 memory presets, the maxValue will be 3.
|
|
* When the user wants to select a preset, the desired preset number (1, 2, or 3)
|
|
* is set.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_MEMORY_SELECT (0x00000B80)
|
|
|
|
/**
|
|
* Seat memory set
|
|
*
|
|
* This setting allows the user to save the current seat position settings into
|
|
* the selected preset slot. The maxValue for each seat position shall match
|
|
* the maxValue for VEHICLE_PROPERTY_SEAT_MEMORY_SELECT.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_MEMORY_SET (0x00000B81)
|
|
|
|
/**
|
|
* Seatbelt buckled
|
|
*
|
|
* True indicates belt is buckled.
|
|
*
|
|
* Write access indicates automatic seat buckling capabilities. There are no known cars at this
|
|
* time, but you never know...
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member boolean_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BELT_BUCKLED (0x00000B82)
|
|
|
|
/**
|
|
* Seatbelt height position
|
|
*
|
|
* Adjusts the shoulder belt anchor point.
|
|
* Max value indicates highest position
|
|
* Min value indicates lowest position
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BELT_HEIGHT_POS (0x00000B83)
|
|
|
|
/**
|
|
* Seatbelt height move
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BELT_HEIGHT_MOVE (0x00000B84)
|
|
|
|
/**
|
|
* Seat fore/aft position
|
|
*
|
|
* Sets the seat position forward (closer to steering wheel) and backwards.
|
|
* Max value indicates closest to wheel, min value indicates most rearward
|
|
* position.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_FORE_AFT_POS (0x00000B85)
|
|
|
|
/**
|
|
* Seat fore/aft move
|
|
*
|
|
* Moves the seat position forward and aft.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_FORE_AFT_MOVE (0x00000B86)
|
|
|
|
/**
|
|
* Seat backrest angle 1 position
|
|
*
|
|
* Backrest angle 1 is the actuator closest to the bottom of the seat.
|
|
* Max value indicates angling forward towards the steering wheel.
|
|
* Min value indicates full recline.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_1_POS (0x00000B87)
|
|
|
|
/**
|
|
* Seat backrest angle 1 move
|
|
*
|
|
* Moves the backrest forward or recline.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_1_MOVE (0x00000B88)
|
|
|
|
/**
|
|
* Seat backrest angle 2 position
|
|
*
|
|
* Backrest angle 2 is the next actuator up from the bottom of the seat.
|
|
* Max value indicates angling forward towards the steering wheel.
|
|
* Min value indicates full recline.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_2_POS (0x00000B89)
|
|
|
|
/**
|
|
* Seat backrest angle 2 move
|
|
*
|
|
* Moves the backrest forward or recline.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_2_MOVE (0x00000B8A)
|
|
|
|
/**
|
|
* Seat height position
|
|
*
|
|
* Sets the seat height.
|
|
* Max value indicates highest position.
|
|
* Min value indicates lowest position.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEIGHT_POS (0x00000B8B)
|
|
|
|
/**
|
|
* Seat height move
|
|
*
|
|
* Moves the seat height.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEIGHT_MOVE (0x00000B8C)
|
|
|
|
/**
|
|
* Seat depth position
|
|
*
|
|
* Sets the seat depth, distance from back rest to front edge of seat.
|
|
* Max value indicates longest depth position.
|
|
* Min value indicates shortest position.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_DEPTH_POS (0x00000B8D)
|
|
|
|
/**
|
|
* Seat depth move
|
|
*
|
|
* Adjusts the seat depth.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_DEPTH_MOVE (0x00000B8E)
|
|
|
|
/**
|
|
* Seat tilt position
|
|
*
|
|
* Sets the seat tilt.
|
|
* Max value indicates front edge of seat higher than back edge.
|
|
* Min value indicates front edge of seat lower than back edge.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_TILT_POS (0x00000B8F)
|
|
|
|
/**
|
|
* Seat tilt move
|
|
*
|
|
* Tilts the seat.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_TILT_MOVE (0x00000B90)
|
|
|
|
/**
|
|
* Lumber fore/aft position
|
|
*
|
|
* Pushes the lumbar support forward and backwards
|
|
* Max value indicates most forward position.
|
|
* Min value indicates most rearward position.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_LUMBAR_FORE_AFT_POS (0x00000B91)
|
|
|
|
/**
|
|
* Lumbar fore/aft move
|
|
*
|
|
* Adjusts the lumbar support.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_LUMBAR_FORE_AFT_MOVE (0x00000B92)
|
|
|
|
/**
|
|
* Lumbar side support position
|
|
*
|
|
* Sets the amount of lateral lumbar support.
|
|
* Max value indicates widest lumbar setting (i.e. least support)
|
|
* Min value indicates thinnest lumbar setting.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_LUMBAR_SIDE_SUPPORT_POS (0x00000B93)
|
|
|
|
/**
|
|
* Lumbar side support move
|
|
*
|
|
* Adjusts the amount of lateral lumbar support.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_LUMBAR_SIDE_SUPPORT_MOVE (0x00000B94)
|
|
|
|
/**
|
|
* Headrest height position
|
|
*
|
|
* Sets the headrest height.
|
|
* Max value indicates tallest setting.
|
|
* Min value indicates shortest setting.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEADREST_HEIGHT_POS (0x00000B95)
|
|
|
|
/**
|
|
* Headrest height move
|
|
*
|
|
* Moves the headrest up and down.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEADREST_HEIGHT_MOVE (0x00000B96)
|
|
|
|
/**
|
|
* Headrest angle position
|
|
*
|
|
* Sets the angle of the headrest.
|
|
* Max value indicates most upright angle.
|
|
* Min value indicates shallowest headrest angle.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEADREST_ANGLE_POS (0x00000B97)
|
|
|
|
/**
|
|
* Headrest angle move
|
|
*
|
|
* Adjusts the angle of the headrest
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEADREST_ANGLE_MOVE (0x00000B98)
|
|
|
|
/**
|
|
* Headrest fore/aft position
|
|
*
|
|
* Adjusts the headrest forwards and backwards.
|
|
* Max value indicates position closest to front of car.
|
|
* Min value indicates position closest to rear of car.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEADREST_FORE_AFT_POS (0x00000B99)
|
|
|
|
/**
|
|
* Headrest fore/aft move
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @zone_type VEHICLE_ZONE_TYPE_SEAT
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_SEAT_HEADREST_FORE_AFT_MOVE (0x00000B9A)
|
|
|
|
|
|
// Windows
|
|
/**
|
|
* Window Position
|
|
*
|
|
* Max = window up / closed
|
|
* Min = window down / open
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_WINDOW_POS (0x00000BC0)
|
|
|
|
/**
|
|
* Window Move
|
|
*
|
|
* Max = window up / closed
|
|
* Min = window down / open
|
|
* Magnitude denotes relative speed. I.e. +2 is faster than +1 in raising the window.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_WINDOW_MOVE (0x00000BC1)
|
|
|
|
/**
|
|
* Window Vent Position
|
|
*
|
|
* This feature is used to control the vent feature on a sunroof.
|
|
*
|
|
* Max = vent open
|
|
* Min = vent closed
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_WINDOW_VENT_POS (0x00000BC2)
|
|
|
|
/**
|
|
* Window Vent Move
|
|
*
|
|
* This feature is used to control the vent feature on a sunroof.
|
|
*
|
|
* Max = vent open
|
|
* Min = vent closed
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_ZONED_INT32
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE|VEHICLE_PROP_ACCESS_WRITE
|
|
* @data_member int32_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_WINDOW_VENT_MOVE (0x00000BC3)
|
|
|
|
/**
|
|
* Window Lock
|
|
*
|
|
* True indicates windows are locked and can't be moved.
|
|
*
|
|
* @value_type VEHICLE_VALUE_TYPE_BOOLEAN
|
|
* @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
* @access VEHICLE_PROP_ACCESS_READ_WRITE
|
|
* @data_member boolean_value
|
|
*/
|
|
#define VEHICLE_PROPERTY_WINDOW_LOCK (0x00000BC4)
|
|
|
|
|
|
|
|
/**
|
|
* H/W specific, non-standard property can be added as necessary. Such property should use
|
|
* property number in range of [VEHICLE_PROPERTY_CUSTOM_START, VEHICLE_PROPERTY_CUSTOM_END].
|
|
* Definition of property in this range is completely up to each HAL implementation.
|
|
* For such property, it is recommended to fill vehicle_prop_config.config_string with some
|
|
* additional information to help debugging. For example, company XYZ's custom extension may
|
|
* include config_string of "com.XYZ.some_further_details".
|
|
* @range_start
|
|
*/
|
|
#define VEHICLE_PROPERTY_CUSTOM_START (0x70000000)
|
|
/** @range_end */
|
|
#define VEHICLE_PROPERTY_CUSTOM_END (0x73ffffff)
|
|
|
|
/**
|
|
* Property range allocated for system's internal usage like testing. HAL should never declare
|
|
* property in this range.
|
|
* @range_start
|
|
*/
|
|
#define VEHICLE_PROPERTY_INTERNAL_START (0x74000000)
|
|
/**
|
|
* @range_end
|
|
*/
|
|
#define VEHICLE_PROPERTY_INTERNAL_END (0x74ffffff)
|
|
|
|
/**
|
|
* Value types for various properties.
|
|
*/
|
|
enum vehicle_value_type {
|
|
VEHICLE_VALUE_TYPE_SHOUD_NOT_USE = 0x00, // value_type should never set to 0.
|
|
VEHICLE_VALUE_TYPE_STRING = 0x01,
|
|
VEHICLE_VALUE_TYPE_BYTES = 0x02,
|
|
VEHICLE_VALUE_TYPE_BOOLEAN = 0x03,
|
|
VEHICLE_VALUE_TYPE_ZONED_BOOLEAN = 0x04,
|
|
VEHICLE_VALUE_TYPE_INT64 = 0x05,
|
|
VEHICLE_VALUE_TYPE_FLOAT = 0x10,
|
|
VEHICLE_VALUE_TYPE_FLOAT_VEC2 = 0x11,
|
|
VEHICLE_VALUE_TYPE_FLOAT_VEC3 = 0x12,
|
|
VEHICLE_VALUE_TYPE_FLOAT_VEC4 = 0x13,
|
|
VEHICLE_VALUE_TYPE_INT32 = 0x20,
|
|
VEHICLE_VALUE_TYPE_INT32_VEC2 = 0x21,
|
|
VEHICLE_VALUE_TYPE_INT32_VEC3 = 0x22,
|
|
VEHICLE_VALUE_TYPE_INT32_VEC4 = 0x23,
|
|
VEHICLE_VALUE_TYPE_ZONED_FLOAT = 0x30,
|
|
VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC2 = 0x31,
|
|
VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC3 = 0x32,
|
|
VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC4 = 0x33,
|
|
VEHICLE_VALUE_TYPE_ZONED_INT32 = 0x40,
|
|
VEHICLE_VALUE_TYPE_ZONED_INT32_VEC2 = 0x41,
|
|
VEHICLE_VALUE_TYPE_ZONED_INT32_VEC3 = 0x42,
|
|
VEHICLE_VALUE_TYPE_ZONED_INT32_VEC4 = 0x43,
|
|
};
|
|
|
|
/**
|
|
* Units used for int or float type with no attached enum types.
|
|
*/
|
|
enum vehicle_unit_type {
|
|
VEHICLE_UNIT_TYPE_SHOULD_NOT_USE = 0x00000000,
|
|
// speed related items
|
|
VEHICLE_UNIT_TYPE_METER_PER_SEC = 0x00000001,
|
|
VEHICLE_UNIT_TYPE_RPM = 0x00000002,
|
|
VEHICLE_UNIT_TYPE_HZ = 0x00000003,
|
|
// kind of ratio
|
|
VEHICLE_UNIT_TYPE_PERCENTILE = 0x00000010,
|
|
// length
|
|
VEHICLE_UNIT_TYPE_MILLIMETER = 0x00000020,
|
|
VEHICLE_UNIT_TYPE_METER = 0x00000021,
|
|
VEHICLE_UNIT_TYPE_KILOMETER = 0x00000023,
|
|
// temperature
|
|
VEHICLE_UNIT_TYPE_CELSIUS = 0x00000030,
|
|
VEHICLE_UNIT_TYPE_FAHRENHEIT = 0x00000031,
|
|
VEHICLE_UNIT_TYPE_KELVIN = 0x00000032,
|
|
// volume
|
|
VEHICLE_UNIT_TYPE_MILLILITER = 0x00000040,
|
|
// time
|
|
VEHICLE_UNIT_TYPE_NANO_SECS = 0x00000050,
|
|
VEHICLE_UNIT_TYPE_SECS = 0x00000053,
|
|
VEHICLE_UNIT_TYPE_YEAR = 0x00000059,
|
|
};
|
|
|
|
/**
|
|
* This describes how value of property can change.
|
|
*/
|
|
enum vehicle_prop_change_mode {
|
|
/**
|
|
* Property of this type will *never* change. This property will not support subscription, but
|
|
* will support get
|
|
*/
|
|
VEHICLE_PROP_CHANGE_MODE_STATIC = 0x00,
|
|
/**
|
|
* Property of this type will be reported when there is a change.
|
|
* get call should return the current value.
|
|
* Set operation for this property is assumed to be asynchronous. When the property is read
|
|
* (get) after set, it may still return old value until underlying H/W backing this property
|
|
* has actually changed the state. Once state is changed, the property will dispatch changed
|
|
* value as event.
|
|
*/
|
|
VEHICLE_PROP_CHANGE_MODE_ON_CHANGE = 0x01,
|
|
/**
|
|
* Property of this type change continuously and requires fixed rate of sampling to retrieve
|
|
* the data.
|
|
*/
|
|
VEHICLE_PROP_CHANGE_MODE_CONTINUOUS = 0x02,
|
|
/**
|
|
* Property of this type may be polled to get the current value.
|
|
*/
|
|
VEHICLE_PROP_CHANGE_MODE_POLL = 0x03,
|
|
/**
|
|
* This is for property where change event should be sent only when the value is
|
|
* set from external component. Normal value change will not trigger event.
|
|
* For example, clock property can send change event only when it is set, outside android,
|
|
* for case like user setting time or time getting update. There is no need to send it
|
|
* per every value change.
|
|
*/
|
|
VEHICLE_PROP_CHANGE_MODE_ON_SET = 0x04,
|
|
};
|
|
|
|
/**
|
|
* Property config defines the capabilities of it. User of the API
|
|
* should first get the property config to understand the output from get()
|
|
* commands and also to ensure that set() or events commands are in sync with
|
|
* the expected output.
|
|
*/
|
|
enum vehicle_prop_access {
|
|
VEHICLE_PROP_ACCESS_READ = 0x01,
|
|
VEHICLE_PROP_ACCESS_WRITE = 0x02,
|
|
VEHICLE_PROP_ACCESS_READ_WRITE = 0x03
|
|
};
|
|
|
|
/**
|
|
* These permissions define how the OEMs want to distribute their information and security they
|
|
* want to apply. On top of these restrictions, android will have additional
|
|
* 'app-level' permissions that the apps will need to ask the user before the apps have the
|
|
* information.
|
|
* This information should be kept in vehicle_prop_config.permission_model.
|
|
*/
|
|
enum vehicle_permission_model {
|
|
/**
|
|
* No special restriction, but each property can still require specific android app-level
|
|
* permission.
|
|
*/
|
|
VEHICLE_PERMISSION_NO_RESTRICTION = 0,
|
|
/** Signature only. Only APKs signed with OEM keys are allowed. */
|
|
VEHICLE_PERMISSION_OEM_ONLY = 0x1,
|
|
/** System only. APKs built-in to system can access the property. */
|
|
VEHICLE_PERMISSION_SYSTEM_APP_ONLY = 0x2,
|
|
/** Equivalent to “system|signature” */
|
|
VEHICLE_PERMISSION_OEM_OR_SYSTEM_APP = 0x3
|
|
};
|
|
|
|
|
|
/**
|
|
* Special values for INT32/FLOAT (including ZONED types)
|
|
* These values represent special state, which is outside MIN/MAX range but can happen.
|
|
* For example, HVAC temperature may use out of range min / max to represent that
|
|
* it is working in full power although target temperature has separate min / max.
|
|
* OUT_OF_RANGE_OFF can represent a state where the property is powered off.
|
|
* Usually such property will have separate property to control power.
|
|
*/
|
|
|
|
#define VEHICLE_INT_OUT_OF_RANGE_MAX (INT32_MAX)
|
|
#define VEHICLE_INT_OUT_OF_RANGE_MIN (INT32_MIN)
|
|
#define VEHICLE_INT_OUT_OF_RANGE_OFF (INT32_MIN + 1)
|
|
|
|
#define VEHICLE_FLOAT_OUT_OF_RANGE_MAX (INFINITY)
|
|
#define VEHICLE_FLOAT_OUT_OF_RANGE_MIN (-INFINITY)
|
|
#define VEHICLE_FLOAT_OUT_OF_RANGE_OFF (NAN)
|
|
|
|
/**
|
|
* Car states.
|
|
*
|
|
* The driving states determine what features of the UI will be accessible.
|
|
*/
|
|
enum vehicle_driving_status {
|
|
VEHICLE_DRIVING_STATUS_UNRESTRICTED = 0x00,
|
|
VEHICLE_DRIVING_STATUS_NO_VIDEO = 0x01,
|
|
VEHICLE_DRIVING_STATUS_NO_KEYBOARD_INPUT = 0x02,
|
|
VEHICLE_DRIVING_STATUS_NO_VOICE_INPUT = 0x04,
|
|
VEHICLE_DRIVING_STATUS_NO_CONFIG = 0x08,
|
|
VEHICLE_DRIVING_STATUS_LIMIT_MESSAGE_LEN = 0x10
|
|
};
|
|
|
|
/**
|
|
* Various gears which can be selected by user and chosen in system.
|
|
*/
|
|
enum vehicle_gear {
|
|
// Gear selections present in both automatic and manual cars.
|
|
VEHICLE_GEAR_NEUTRAL = 0x0001,
|
|
VEHICLE_GEAR_REVERSE = 0x0002,
|
|
|
|
// Gear selections (mostly) present only in automatic cars.
|
|
VEHICLE_GEAR_PARK = 0x0004,
|
|
VEHICLE_GEAR_DRIVE = 0x0008,
|
|
VEHICLE_GEAR_LOW = 0x0010,
|
|
|
|
// Other possible gear selections (maybe present in manual or automatic
|
|
// cars).
|
|
VEHICLE_GEAR_1 = 0x0010,
|
|
VEHICLE_GEAR_2 = 0x0020,
|
|
VEHICLE_GEAR_3 = 0x0040,
|
|
VEHICLE_GEAR_4 = 0x0080,
|
|
VEHICLE_GEAR_5 = 0x0100,
|
|
VEHICLE_GEAR_6 = 0x0200,
|
|
VEHICLE_GEAR_7 = 0x0400,
|
|
VEHICLE_GEAR_8 = 0x0800,
|
|
VEHICLE_GEAR_9 = 0x1000
|
|
};
|
|
|
|
|
|
/**
|
|
* Various zones in the car.
|
|
*
|
|
* Zones are used for Air Conditioning purposes and divide the car into physical
|
|
* area zones.
|
|
*/
|
|
enum vehicle_zone {
|
|
VEHICLE_ZONE_ROW_1_LEFT = 0x00000001,
|
|
VEHICLE_ZONE_ROW_1_CENTER = 0x00000002,
|
|
VEHICLE_ZONE_ROW_1_RIGHT = 0x00000004,
|
|
VEHICLE_ZONE_ROW_1_ALL = 0x00000008,
|
|
VEHICLE_ZONE_ROW_2_LEFT = 0x00000010,
|
|
VEHICLE_ZONE_ROW_2_CENTER = 0x00000020,
|
|
VEHICLE_ZONE_ROW_2_RIGHT = 0x00000040,
|
|
VEHICLE_ZONE_ROW_2_ALL = 0x00000080,
|
|
VEHICLE_ZONE_ROW_3_LEFT = 0x00000100,
|
|
VEHICLE_ZONE_ROW_3_CENTER = 0x00000200,
|
|
VEHICLE_ZONE_ROW_3_RIGHT = 0x00000400,
|
|
VEHICLE_ZONE_ROW_3_ALL = 0x00000800,
|
|
VEHICLE_ZONE_ROW_4_LEFT = 0x00001000,
|
|
VEHICLE_ZONE_ROW_4_CENTER = 0x00002000,
|
|
VEHICLE_ZONE_ROW_4_RIGHT = 0x00004000,
|
|
VEHICLE_ZONE_ROW_4_ALL = 0x00008000,
|
|
VEHICLE_ZONE_ALL = 0x80000000,
|
|
};
|
|
|
|
/**
|
|
* Various Seats in the car.
|
|
*/
|
|
enum vehicle_seat {
|
|
VEHICLE_SEAT_ROW_1_LEFT = 0x0001,
|
|
VEHICLE_SEAT_ROW_1_CENTER = 0x0002,
|
|
VEHICLE_SEAT_ROW_1_RIGHT = 0x0004,
|
|
VEHICLE_SEAT_ROW_2_LEFT = 0x0010,
|
|
VEHICLE_SEAT_ROW_2_CENTER = 0x0020,
|
|
VEHICLE_SEAT_ROW_2_RIGHT = 0x0040,
|
|
VEHICLE_SEAT_ROW_3_LEFT = 0x0100,
|
|
VEHICLE_SEAT_ROW_3_CENTER = 0x0200,
|
|
VEHICLE_SEAT_ROW_3_RIGHT = 0x0400
|
|
};
|
|
|
|
/**
|
|
* Various windshields/windows in the car.
|
|
*/
|
|
enum vehicle_window {
|
|
VEHICLE_WINDOW_FRONT_WINDSHIELD = 0x0001,
|
|
VEHICLE_WINDOW_REAR_WINDSHIELD = 0x0002,
|
|
VEHICLE_WINDOW_ROOF_TOP = 0x0004,
|
|
VEHICLE_WINDOW_ROW_1_LEFT = 0x0010,
|
|
VEHICLE_WINDOW_ROW_1_RIGHT = 0x0020,
|
|
VEHICLE_WINDOW_ROW_2_LEFT = 0x0100,
|
|
VEHICLE_WINDOW_ROW_2_RIGHT = 0x0200,
|
|
VEHICLE_WINDOW_ROW_3_LEFT = 0x1000,
|
|
VEHICLE_WINDOW_ROW_3_RIGHT = 0x2000,
|
|
};
|
|
|
|
enum vehicle_door {
|
|
VEHICLE_DOOR_ROW_1_LEFT = 0x00000001,
|
|
VEHICLE_DOOR_ROW_1_RIGHT = 0x00000004,
|
|
VEHICLE_DOOR_ROW_2_LEFT = 0x00000010,
|
|
VEHICLE_DOOR_ROW_2_RIGHT = 0x00000040,
|
|
VEHICLE_DOOR_ROW_3_LEFT = 0x00000100,
|
|
VEHICLE_DOOR_ROW_3_RIGHT = 0x00000400,
|
|
VEHICLE_DOOR_HOOD = 0x10000000,
|
|
VEHICLE_DOOR_REAR = 0x20000000,
|
|
};
|
|
|
|
enum vehicle_mirror {
|
|
VEHICLE_MIRROR_DRIVER_LEFT = 0x00000001,
|
|
VEHICLE_MIRROR_DRIVER_RIGHT = 0x00000002,
|
|
VEHICLE_MIRROR_DRIVER_CENTER = 0x00000004,
|
|
};
|
|
|
|
enum vehicle_turn_signal {
|
|
VEHICLE_SIGNAL_NONE = 0x00,
|
|
VEHICLE_SIGNAL_RIGHT = 0x01,
|
|
VEHICLE_SIGNAL_LEFT = 0x02,
|
|
VEHICLE_SIGNAL_EMERGENCY = 0x04
|
|
};
|
|
|
|
enum vehicle_zone_type {
|
|
VEHICLE_ZONE_TYPE_NONE = 0x00,
|
|
VEHICLE_ZONE_TYPE_ZONE = 0x01,
|
|
VEHICLE_ZONE_TYPE_SEAT = 0x02,
|
|
VEHICLE_ZONE_TYPE_DOOR = 0x04,
|
|
VEHICLE_ZONE_TYPE_WINDOW = 0x10,
|
|
VEHICLE_ZONE_TYPE_MIRROR = 0x20,
|
|
};
|
|
|
|
/*
|
|
* Boolean type.
|
|
*/
|
|
enum vehicle_boolean {
|
|
VEHICLE_FALSE = 0x00,
|
|
VEHICLE_TRUE = 0x01
|
|
};
|
|
|
|
typedef int32_t vehicle_boolean_t;
|
|
|
|
/**
|
|
* Vehicle string.
|
|
*
|
|
* Defines a UTF8 encoded sequence of bytes that should be used for string
|
|
* representation throughout.
|
|
*/
|
|
typedef struct vehicle_str {
|
|
uint8_t* data;
|
|
int32_t len;
|
|
} vehicle_str_t;
|
|
|
|
/**
|
|
* Vehicle byte array.
|
|
* This is for passing generic raw data.
|
|
*/
|
|
typedef vehicle_str_t vehicle_bytes_t;
|
|
|
|
typedef struct vehicle_prop_config {
|
|
int32_t prop;
|
|
|
|
/**
|
|
* Defines if the property is read or write. Value should be one of
|
|
* enum vehicle_prop_access.
|
|
*/
|
|
int32_t access;
|
|
|
|
/**
|
|
* Defines if the property is continuous or on-change. Value should be one
|
|
* of enum vehicle_prop_change_mode.
|
|
*/
|
|
int32_t change_mode;
|
|
|
|
/**
|
|
* Type of data used for this property. This type is fixed per each property.
|
|
* Check vehicle_value_type for allowed value.
|
|
*/
|
|
int32_t value_type;
|
|
|
|
/**
|
|
* Define necessary permission model to access the data.
|
|
*/
|
|
int32_t permission_model;
|
|
|
|
/**
|
|
* Some of the properties may have associated zones (such as hvac), in these
|
|
* cases the config should contain an ORed value for the associated zone.
|
|
*/
|
|
union {
|
|
/**
|
|
* The value is derived by ORing one or more of enum vehicle_zone members.
|
|
*/
|
|
int32_t vehicle_zone_flags;
|
|
/** The value is derived by ORing one or more of enum vehicle_seat members. */
|
|
int32_t vehicle_seat_flags;
|
|
/** The value is derived by ORing one or more of enum vehicle_window members. */
|
|
int32_t vehicle_window_flags;
|
|
};
|
|
|
|
/**
|
|
* Property specific configuration information. Usage of this will be defined per each property.
|
|
*/
|
|
union {
|
|
/**
|
|
* For generic configuration information
|
|
*/
|
|
int32_t config_flags;
|
|
/** The number of presets that are stored by the radio module. Pass 0 if
|
|
* there are no presets available. The range of presets is defined to be
|
|
* from 1 (see VEHICLE_RADIO_PRESET_MIN_VALUE) to vehicle_radio_num_presets.
|
|
*/
|
|
int32_t vehicle_radio_num_presets;
|
|
int32_t config_array[4];
|
|
};
|
|
|
|
/**
|
|
* Some properties may require additional information passed over this string. Most properties
|
|
* do not need to set this and in that case, config_string.data should be NULL and
|
|
* config_string.len should be 0.
|
|
*/
|
|
vehicle_str_t config_string;
|
|
|
|
/**
|
|
* Specify minimum allowed value for the property. This is necessary for property which does
|
|
* not have specified enum.
|
|
*/
|
|
union {
|
|
float float_min_value;
|
|
int32_t int32_min_value;
|
|
int64_t int64_min_value;
|
|
};
|
|
|
|
/**
|
|
* Specify maximum allowed value for the property. This is necessary for property which does
|
|
* not have specified enum.
|
|
*/
|
|
union {
|
|
float float_max_value;
|
|
int32_t int32_max_value;
|
|
int64_t int64_max_value;
|
|
};
|
|
|
|
/**
|
|
* Array of min values for zoned properties. Zoned property can specify min / max value in two
|
|
* different ways:
|
|
* 1. All zones having the same min / max value: *_min/max_value should be set and this
|
|
* array should be set to NULL.
|
|
* 2. All zones having separate min / max value: *_min/max_values array should be populated
|
|
* and its length should be the same as number of active zones specified by *_zone_flags.
|
|
*
|
|
* Should be NULL if each zone does not have separate max values.
|
|
*/
|
|
union {
|
|
float* float_min_values;
|
|
int32_t* int32_min_values;
|
|
int64_t* int64_min_values;
|
|
};
|
|
|
|
/**
|
|
* Array of max values for zoned properties. See above for its usage.
|
|
* Should be NULL if each zone does not have separate max values.
|
|
* If not NULL, length of array should match that of min_values.
|
|
*/
|
|
union {
|
|
float* float_max_values;
|
|
int32_t* int32_max_values;
|
|
int64_t* int64_max_values;
|
|
};
|
|
|
|
/**
|
|
* Min sample rate in Hz. Should be 0 for sensor type of VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
*/
|
|
float min_sample_rate;
|
|
/**
|
|
* Max sample rate in Hz. Should be 0 for sensor type of VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
|
|
*/
|
|
float max_sample_rate;
|
|
/**
|
|
* Place holder for putting HAL implementation specific data. Usage is wholly up to HAL
|
|
* implementation.
|
|
*/
|
|
void* hal_data;
|
|
} vehicle_prop_config_t;
|
|
|
|
/**
|
|
* HVAC property fields.
|
|
*
|
|
* Defines various HVAC properties which are packed into vehicle_hvac_t (see
|
|
* below). We define these properties outside in global scope so that HAL
|
|
* implementation and HAL users (JNI) can typecast vehicle_hvac correctly.
|
|
*/
|
|
typedef struct vehicle_hvac {
|
|
/**
|
|
* Define one structure for each possible HVAC property.
|
|
* NOTES:
|
|
* a) Fan speed is a number from (0 - 6) where 6 is the highest speed. (TODO define enum)
|
|
* b) Temperature is a floating point Celcius scale.
|
|
* c) Direction is defined in enum vehicle_fan_direction.
|
|
*
|
|
* The HAL should create #entries number of vehicle_hvac_properties and
|
|
* assign it to "properties" variable below.
|
|
*/
|
|
union {
|
|
int32_t fan_speed;
|
|
int32_t fan_direction;
|
|
vehicle_boolean_t ac_on;
|
|
vehicle_boolean_t max_ac_on;
|
|
vehicle_boolean_t max_defrost_on;
|
|
vehicle_boolean_t recirc_on;
|
|
vehicle_boolean_t dual_on;
|
|
vehicle_boolean_t auto_on;
|
|
vehicle_boolean_t power_on;
|
|
|
|
float temperature_current;
|
|
float temperature_set;
|
|
|
|
vehicle_boolean_t defrost_on;
|
|
};
|
|
} vehicle_hvac_t;
|
|
|
|
/*
|
|
* Defines how the values for various properties are represented.
|
|
*
|
|
* There are two ways to populate and access the fields:
|
|
* a) Using the individual fields. Use this mechanism (see
|
|
* info_manufacture_date, fuel_capacity fields etc).
|
|
* b) Using the union accessors (see uint32_value, float_value etc).
|
|
*
|
|
* To add a new field make sure that it does not exceed the total union size
|
|
* (defined in int_array) and it is one of the vehicle_value_type. Then add the
|
|
* field name with its unit to union. If the field type is not yet defined (as
|
|
* of this draft, we don't use int64_t) then add that type to vehicle_value_type
|
|
* and have an accessor (so for int64_t it will be int64_t int64_value).
|
|
*/
|
|
typedef union vehicle_value {
|
|
/** Define the max size of this structure. */
|
|
int32_t int32_array[4];
|
|
float float_array[4];
|
|
|
|
// Easy accessors for union members (HAL implementation SHOULD NOT USE these
|
|
// fields while populating, use the property specific fields below instead).
|
|
int32_t int32_value;
|
|
int64_t int64_value;
|
|
float float_value;
|
|
vehicle_str_t str_value;
|
|
vehicle_bytes_t bytes_value;
|
|
vehicle_boolean_t boolean_value;
|
|
|
|
// Vehicle Information.
|
|
vehicle_str_t info_vin;
|
|
vehicle_str_t info_make;
|
|
vehicle_str_t info_model;
|
|
int32_t info_model_year;
|
|
|
|
// Represented in milliliters.
|
|
float info_fuel_capacity;
|
|
|
|
float vehicle_speed;
|
|
float odometer;
|
|
|
|
// Engine sensors.
|
|
|
|
// Represented in milliliters.
|
|
//float engine_coolant_level;
|
|
// Represented in celcius.
|
|
float engine_coolant_temperature;
|
|
// Represented in a percentage value.
|
|
//float engine_oil_level;
|
|
// Represented in celcius.
|
|
float engine_oil_temperature;
|
|
float engine_rpm;
|
|
|
|
// Event sensors.
|
|
// Value should be one of enum vehicle_gear_selection.
|
|
int32_t gear_selection;
|
|
// Value should be one of enum vehicle_gear.
|
|
int32_t gear_current_gear;
|
|
// Value should be one of enum vehicle_boolean.
|
|
int32_t parking_brake;
|
|
// If cruise_set_speed > 0 then cruise is ON otherwise cruise is OFF.
|
|
// Unit: meters / second (m/s).
|
|
//int32_t cruise_set_speed;
|
|
// Value should be one of enum vehicle_boolean.
|
|
int32_t is_fuel_level_low;
|
|
// Value should be one of enum vehicle_driving_status.
|
|
int32_t driving_status;
|
|
int32_t night_mode;
|
|
// Value should be one of emum vehicle_turn_signal.
|
|
int32_t turn_signals;
|
|
// Value should be one of enum vehicle_boolean.
|
|
//int32_t engine_on;
|
|
|
|
// HVAC properties.
|
|
vehicle_hvac_t hvac;
|
|
|
|
float outside_temperature;
|
|
float cabin_temperature;
|
|
|
|
} vehicle_value_t;
|
|
|
|
/*
|
|
* Encapsulates the property name and the associated value. It
|
|
* is used across various API calls to set values, get values or to register for
|
|
* events.
|
|
*/
|
|
typedef struct vehicle_prop_value {
|
|
/* property identifier */
|
|
int32_t prop;
|
|
|
|
/* value type of property for quick conversion from union to appropriate
|
|
* value. The value must be one of enum vehicle_value_type.
|
|
*/
|
|
int32_t value_type;
|
|
|
|
/** time is elapsed nanoseconds since boot */
|
|
int64_t timestamp;
|
|
|
|
/**
|
|
* Zone information for zoned property. For non-zoned property, this should be ignored.
|
|
*/
|
|
union {
|
|
int32_t zone;
|
|
int32_t seat;
|
|
int32_t window;
|
|
};
|
|
|
|
vehicle_value_t value;
|
|
} vehicle_prop_value_t;
|
|
|
|
/*
|
|
* Event callback happens whenever a variable that the API user has subscribed
|
|
* to needs to be reported. This may be based purely on threshold and frequency
|
|
* (a regular subscription, see subscribe call's arguments) or when the set()
|
|
* command is executed and the actual change needs to be reported.
|
|
*
|
|
* event_data is OWNED by the HAL and should be copied before the callback
|
|
* finishes.
|
|
*/
|
|
typedef int (*vehicle_event_callback_fn)(const vehicle_prop_value_t *event_data);
|
|
|
|
|
|
/**
|
|
* Represent the operation where the current error has happened.
|
|
*/
|
|
enum vehicle_property_operation {
|
|
/** Generic error to this property which is not tied to any operation. */
|
|
VEHICLE_OPERATION_GENERIC = 0,
|
|
/** Error happened while handling property set. */
|
|
VEHICLE_OPERATION_SET = 1,
|
|
/** Error happened while handling property get. */
|
|
VEHICLE_OPERATION_GET = 2,
|
|
/** Error happened while handling property subscription. */
|
|
VEHICLE_OPERATION_SUBSCRIBE = 3,
|
|
};
|
|
|
|
/*
|
|
* Suggests that an error condition has occurred.
|
|
*
|
|
* @param error_code Error code. error_code should be standard error code with
|
|
* negative value like -EINVAL.
|
|
* @parm property Note a property where error has happened. If this is generic error, property
|
|
* should be VEHICLE_PROPERTY_INVALID.
|
|
* @param operation Represent the operation where the error has happened. Should be one of
|
|
* vehicle_property_operation.
|
|
*/
|
|
typedef int (*vehicle_error_callback_fn)(int32_t error_code, int32_t property, int32_t operation);
|
|
|
|
/************************************************************************************/
|
|
|
|
/*
|
|
* Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
|
|
* and the fields of this data structure must begin with hw_module_t
|
|
* followed by module specific information.
|
|
*/
|
|
typedef struct vehicle_module {
|
|
struct hw_module_t common;
|
|
} vehicle_module_t;
|
|
|
|
|
|
typedef struct vehicle_hw_device {
|
|
struct hw_device_t common;
|
|
|
|
/**
|
|
* After calling open on device the user should register callbacks for event and error
|
|
* functions.
|
|
*/
|
|
int (*init)(struct vehicle_hw_device* device,
|
|
vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn);
|
|
/**
|
|
* Before calling close the user should destroy the registered callback
|
|
* functions.
|
|
* In case the unsubscribe() call is not called on all properties before
|
|
* release() then release() will unsubscribe the properties itself.
|
|
*/
|
|
int (*release)(struct vehicle_hw_device* device);
|
|
|
|
/**
|
|
* Enumerate all available properties. The list is returned in "list".
|
|
* @param num_properties number of properties contained in the retuned array.
|
|
* @return array of property configs supported by this car. Note that returned data is const
|
|
* and caller cannot modify it. HAL implementation should keep this memory until HAL
|
|
* is released to avoid copying this again.
|
|
*/
|
|
vehicle_prop_config_t const *(*list_properties)(struct vehicle_hw_device* device,
|
|
int* num_properties);
|
|
|
|
/**
|
|
* Get a vehicle property value immediately. data should be allocated
|
|
* properly.
|
|
* The caller of the API OWNS the data field.
|
|
* Caller will set data->prop, data->value_type, and optionally zone value for zoned property.
|
|
* But HAL implementation needs to fill all entries properly when returning.
|
|
* For pointer type, HAL implementation should allocate necessary memory and caller is
|
|
* responsible for calling release_memory_from_get, which allows HAL to release allocated
|
|
* memory.
|
|
* For VEHICLE_PROP_CHANGE_MODE_STATIC type of property, get should return the same value
|
|
* always.
|
|
* For VEHICLE_PROP_CHANGE_MODE_ON_CHANGE type of property, it should return the latest value.
|
|
* If there is no data available yet, which can happen during initial stage, this call should
|
|
* return immediately with error code of -EAGAIN.
|
|
*/
|
|
int (*get)(struct vehicle_hw_device* device, vehicle_prop_value_t *data);
|
|
|
|
/**
|
|
* Release memory allocated to data in previous get call. get call for byte or string involves
|
|
* allocating necessary memory from vehicle hal.
|
|
* To be safe, memory allocated by vehicle hal should be released by vehicle hal and vehicle
|
|
* network service will call this when data from vehicle hal is no longer necessary.
|
|
* vehicle hal implementation should only release member of vehicle_prop_value_t like
|
|
* data->str_value.data or data->bytes_value.data but not data itself as data itself is
|
|
* allocated from vehicle network service. Once memory is freed, corresponding pointer should
|
|
* be set to NULL bu vehicle hal.
|
|
*/
|
|
void (*release_memory_from_get)(struct vehicle_hw_device* device, vehicle_prop_value_t *data);
|
|
|
|
/**
|
|
* Set a vehicle property value. data should be allocated properly and not
|
|
* NULL.
|
|
* The caller of the API OWNS the data field.
|
|
* timestamp of data will be ignored for set operation.
|
|
* Setting some properties require having initial state available. Depending on the vehicle hal,
|
|
* such initial data may not be available for short time after init. In such case, set call
|
|
* can return -EAGAIN like get call.
|
|
* For a property with separate power control, set can fail if the property is not powered on.
|
|
* In such case, hal should return -ESHUTDOWN error.
|
|
*/
|
|
int (*set)(struct vehicle_hw_device* device, const vehicle_prop_value_t *data);
|
|
|
|
/**
|
|
* Subscribe to events.
|
|
* Depending on output of list_properties if the property is:
|
|
* a) on-change: sample_rate should be set to 0.
|
|
* b) supports frequency: sample_rate should be set from min_sample_rate to
|
|
* max_sample_rate.
|
|
* For on-change type of properties, vehicle network service will make another get call to check
|
|
* the initial state. Due to this, vehicle hal implementation does not need to send initial
|
|
* state for on-change type of properties.
|
|
* @param device
|
|
* @param prop
|
|
* @param sample_rate
|
|
* @param zones All subscribed zones for zoned property. can be ignored for non-zoned property.
|
|
* 0 means all zones supported instead of no zone.
|
|
*/
|
|
int (*subscribe)(struct vehicle_hw_device* device, int32_t prop, float sample_rate,
|
|
int32_t zones);
|
|
|
|
/** Cancel subscription on a property. */
|
|
int (*unsubscribe)(struct vehicle_hw_device* device, int32_t prop);
|
|
|
|
/**
|
|
* Print out debugging state for the vehicle hal. This will be called by
|
|
* the vehicle network service and will be included into the service' dump.
|
|
*
|
|
* The passed-in file descriptor can be used to write debugging text using
|
|
* dprintf() or write(). The text should be in ASCII encoding only.
|
|
*
|
|
* Performance requirements:
|
|
*
|
|
* This must be a non-blocking call. The HAL should return from this call
|
|
* in 1ms, must return from this call in 10ms. This call must avoid
|
|
* deadlocks, as it may be called at any point of operation.
|
|
* Any synchronization primitives used (such as mutex locks or semaphores)
|
|
* should be acquired with a timeout.
|
|
*/
|
|
int (*dump)(struct vehicle_hw_device* device, int fd);
|
|
|
|
} vehicle_hw_device_t;
|
|
|
|
__END_DECLS
|
|
|
|
#endif // ANDROID_VEHICLE_INTERFACE_H
|