Merge "Changes to drm and crypto HALs as part of client implementation"
diff --git a/camera/device/3.2/types.hal b/camera/device/3.2/types.hal
index ed6ef7d..a7ab4ab 100644
--- a/camera/device/3.2/types.hal
+++ b/camera/device/3.2/types.hal
@@ -408,7 +408,16 @@
int32_t streamId;
/**
- * The graphics buffer handle to the buffer
+ * The graphics buffer handle to the buffer.
+ *
+ * For StreamBuffers sent to the HAL in a CaptureRequest, this must be a
+ * valid handle to a graphics buffer, with dimensions and format matching
+ * that of the stream.
+ *
+ * For StreamBuffers returned in a CaptureResult, this must be null, since
+ * the handle to the buffer is already known to the client (since the client
+ * sent it in the matching CaptureRequest), and the handle can be identified
+ * by the combination of frame number and stream ID.
*/
handle buffer;
@@ -424,44 +433,34 @@
* The acquire sync fence for this buffer. The HAL must wait on this fence
* fd before attempting to read from or write to this buffer.
*
- * The framework may be set to -1 to indicate that no waiting is necessary
- * for this buffer.
+ * In a buffer included in a CaptureRequest, the client may set this to null
+ * to indicate that no waiting is necessary for this buffer.
*
- * When the HAL returns an output buffer to the framework with
- * processCaptureResult(), the acquireFence must be set to -1. If the HAL
- * never waits on the acquireFence due to an error in filling a buffer,
- * when calling processCaptureResult() the HAL must set the releaseFence
- * of the buffer to be the acquireFence passed to it by the framework. This
- * allows the framework to wait on the fence before reusing the buffer.
- *
- * For input buffers, the HAL must not change the acquireFence field during
- * the processCaptureRequest() call.
- *
- * When the HAL returns an input buffer to the framework with
- * processCaptureResult(), the acquireFence must be set to -1. If the HAL
- * never waits on input buffer acquire fence due to an error, the sync
- * fences must be handled similarly to the way they are handled for output
- * buffers.
+ * When the HAL returns an input or output buffer to the framework with
+ * processCaptureResult(), the acquireFence must be set to null. If the HAL
+ * never waits on the acquireFence due to an error in filling or reading a
+ * buffer, when calling processCaptureResult() the HAL must set the
+ * releaseFence of the buffer to be the acquireFence passed to it by the
+ * client. This allows the client to wait on the fence before reusing the
+ * buffer.
*/
handle acquireFence;
/**
- * The release sync fence for this buffer. The HAL must set this fence when
- * returning buffers to the framework, or write -1 to indicate that no
- * waiting is required for this buffer.
+ * The release sync fence for this buffer. The HAL must set this to a valid
+ * fence fd when returning the input buffer or output buffers to the client
+ * in a CaptureResult, or set it to null to indicate that no waiting is
+ * required for this buffer.
*
- * For the output buffers, the fences must be set in the outputBuffers
- * array passed to processCaptureResult().
- *
- * For the input buffer, the fences must be set in the inputBuffer
- * passed to processCaptureResult().
+ * The client must set this to be null for all buffers included in a
+ * processCaptureRequest call.
*
* After signaling the releaseFence for this buffer, the HAL
* must not make any further attempts to access this buffer as the
- * ownership has been fully transferred back to the framework.
+ * ownership has been fully transferred back to the client.
*
- * If a fence of -1 was specified then the ownership of this buffer
- * is transferred back immediately upon the call of processCaptureResult.
+ * If this is null, then the ownership of this buffer is transferred back
+ * immediately upon the call of processCaptureResult.
*/
handle releaseFence;
@@ -722,13 +721,13 @@
/**
* The input stream buffer to use for this request, if any.
*
+ * An invalid inputBuffer is signified by a null inputBuffer::buffer, in
+ * which case the value of all other members of inputBuffer must be ignored.
+ *
* If inputBuffer is invalid, then the request is for a new capture from the
* imager. If inputBuffer is valid, the request is for reprocessing the
- * image contained in inputBuffer.
- *
- * In the latter case, the HAL must set the releaseFence of the
- * inputBuffer to a valid sync fence, or to -1 if the HAL does not support
- * sync, before processCaptureRequest() returns.
+ * image contained in inputBuffer, and the HAL must release the inputBuffer
+ * back to the client in a subsequent processCaptureResult call.
*
* The HAL is required to wait on the acquire sync fence of the input buffer
* before accessing it.
@@ -741,9 +740,8 @@
* data from this capture/reprocess. The HAL must wait on the acquire fences
* of each stream buffer before writing to them.
*
- * The HAL takes ownership of the actual buffer_handle_t entries in
- * outputBuffers; the framework must not access them until they are
- * returned in a CaptureResult.
+ * The HAL takes ownership of the handles in outputBuffers; the client
+ * must not access them until they are returned in a CaptureResult.
*
* Any or all of the buffers included here may be brand new in this
* request (having never before seen by the HAL).
@@ -823,10 +821,15 @@
CameraMetadata result;
/**
- * The handles for the output stream buffers for this capture. They may not
- * yet be filled at the time the HAL calls processCaptureResult(); the
- * framework must wait on the release sync fences provided by the HAL before
- * reading the buffers.
+ * The completed output stream buffers for this capture.
+ *
+ * They may not yet be filled at the time the HAL calls
+ * processCaptureResult(); the framework must wait on the release sync
+ * fences provided by the HAL before reading the buffers.
+ *
+ * The StreamBuffer::buffer handle must be null for all returned buffers;
+ * the client must cache the handle and look it up via the combination of
+ * frame number and stream ID.
*
* The number of output buffers returned must be less than or equal to the
* matching capture request's count. If this is less than the buffer count
@@ -836,7 +839,7 @@
* valid result metadata or an input buffer is returned in this result.
*
* The HAL must set the stream buffer's release sync fence to a valid sync
- * fd, or to -1 if the buffer has already been filled.
+ * fd, or to null if the buffer has already been filled.
*
* If the HAL encounters an error while processing the buffer, and the
* buffer is not filled, the buffer's status field must be set to ERROR. If
@@ -844,7 +847,7 @@
* the acquire fence must be copied into the release fence, to allow the
* framework to wait on the fence before reusing the buffer.
*
- * The acquire fence must be set to -1 for all output buffers.
+ * The acquire fence must be set to null for all output buffers.
*
* This vector may be empty; if so, at least one other processCaptureResult
* call must be made (or have been made) by the HAL to provide the filled
@@ -854,8 +857,8 @@
* all previous frames' buffers for that corresponding stream must have been
* already delivered (the fences need not have yet been signaled).
*
- * Gralloc buffers for a frame may be sent to framework before the
- * corresponding SHUTTER-notify.
+ * Buffers for a frame may be sent to framework before the corresponding
+ * SHUTTER-notify call is made by the HAL.
*
* Performance considerations:
*
@@ -867,10 +870,11 @@
vec<StreamBuffer> outputBuffers;
/**
- * The handle for the input stream buffer for this capture. It may not
- * yet be consumed at the time the HAL calls processCaptureResult(); the
- * framework must wait on the release sync fence provided by the HAL before
- * reusing the buffer.
+ * The handle for the input stream buffer for this capture, if any.
+ *
+ * It may not yet be consumed at the time the HAL calls
+ * processCaptureResult(); the framework must wait on the release sync fence
+ * provided by the HAL before reusing the buffer.
*
* The HAL must handle the sync fences the same way they are done for
* outputBuffers.
diff --git a/gnss/1.0/default/Android.mk b/gnss/1.0/default/Android.mk
index 06ef331..6289491 100644
--- a/gnss/1.0/default/Android.mk
+++ b/gnss/1.0/default/Android.mk
@@ -27,3 +27,27 @@
libhardware
include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_MODULE := android.hardware.gnss@1.0-service
+LOCAL_INIT_RC := android.hardware.gnss@1.0-service.rc
+LOCAL_SRC_FILES := \
+ service.cpp \
+
+LOCAL_SHARED_LIBRARIES := \
+ liblog \
+ libcutils \
+ libdl \
+ libbase \
+ libutils \
+ libhardware_legacy \
+ libhardware \
+
+LOCAL_SHARED_LIBRARIES += \
+ libhwbinder \
+ libhidlbase \
+ libhidltransport \
+ android.hardware.gnss@1.0 \
+
+include $(BUILD_EXECUTABLE)
diff --git a/gnss/1.0/default/android.hardware.gnss@1.0-service.rc b/gnss/1.0/default/android.hardware.gnss@1.0-service.rc
new file mode 100644
index 0000000..eeb2e43
--- /dev/null
+++ b/gnss/1.0/default/android.hardware.gnss@1.0-service.rc
@@ -0,0 +1,4 @@
+service gnss_service /system/bin/hw/android.hardware.gnss@1.0-service
+ class main
+ user system
+ group system
diff --git a/gnss/1.0/default/service.cpp b/gnss/1.0/default/service.cpp
new file mode 100644
index 0000000..4e040c5
--- /dev/null
+++ b/gnss/1.0/default/service.cpp
@@ -0,0 +1,12 @@
+#define LOG_TAG "android.hardware.gnss@1.0-service"
+
+#include <android/hardware/gnss/1.0/IGnss.h>
+
+#include <hidl/LegacySupport.h>
+
+using android::hardware::gnss::V1_0::IGnss;
+using android::hardware::defaultPassthroughServiceImplementation;
+
+int main() {
+ return defaultPassthroughServiceImplementation<IGnss>("gnss");
+}
diff --git a/radio/1.0/types.hal b/radio/1.0/types.hal
index 8c7f538..6475b4f 100644
--- a/radio/1.0/types.hal
+++ b/radio/1.0/types.hal
@@ -51,7 +51,6 @@
};
enum RadioError : int32_t {
- INVALID_RESPONSE = -1, // Response from vendor had invalid data
NONE = 0, // Success
RADIO_NOT_AVAILABLE = 1, // If radio did not start or is resetting
GENERIC_FAILURE = 2,
@@ -115,7 +114,8 @@
NO_NETWORK_FOUND = 63, // Network cannot be found
DEVICE_IN_USE = 64, // Operation cannot be performed because the device
// is currently in use
- RIL_E_ABORTED = 65, // Operation aborted
+ ABORTED = 65, // Operation aborted
+ INVALID_RESPONSE = 66, // Response from vendor had invalid data
// TODO(May be moved to vendor HAL extension)
// OEM specific error codes. To be used by OEM when they don't want to reveal
diff --git a/vehicle/2.0/Android.mk b/vehicle/2.0/Android.mk
index 71b587b..9544960 100644
--- a/vehicle/2.0/Android.mk
+++ b/vehicle/2.0/Android.mk
@@ -17,6 +17,177 @@
#
+# Build types.hal (CommonIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/CommonIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.CommonIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (CompressionIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/CompressionIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.CompressionIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelSystemStatus)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelSystemStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.FuelSystemStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelType)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.FuelType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (IgnitionMonitorKind)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/IgnitionMonitorKind.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.IgnitionMonitorKind
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2FloatSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2FloatSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.Obd2FloatSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2IntegerSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2IntegerSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.Obd2IntegerSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SecondaryAirStatus)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/SecondaryAirStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.SecondaryAirStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SparkIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/SparkIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.SparkIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (StatusCode)
#
GEN := $(intermediates)/android/hardware/vehicle/V2_0/StatusCode.java
@@ -970,6 +1141,177 @@
#
+# Build types.hal (CommonIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/CommonIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.CommonIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (CompressionIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/CompressionIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.CompressionIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelSystemStatus)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelSystemStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.FuelSystemStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelType)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/FuelType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.FuelType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (IgnitionMonitorKind)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/IgnitionMonitorKind.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.IgnitionMonitorKind
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2FloatSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2FloatSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.Obd2FloatSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2IntegerSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/Obd2IntegerSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.Obd2IntegerSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SecondaryAirStatus)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/SecondaryAirStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.SecondaryAirStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SparkIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/vehicle/V2_0/SparkIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.vehicle@2.0::types.SparkIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (StatusCode)
#
GEN := $(intermediates)/android/hardware/vehicle/V2_0/StatusCode.java
diff --git a/vehicle/2.0/types.hal b/vehicle/2.0/types.hal
index 28ccb78..d98a982 100644
--- a/vehicle/2.0/types.hal
+++ b/vehicle/2.0/types.hal
@@ -2531,3 +2531,383 @@
/* Something unexpected has happened in Vehicle HAL */
INTERNAL_ERROR = 5,
};
+
+/* The status of a fuel system as described by the OBD2 specification. */
+enum FuelSystemStatus : int32_t {
+ OPEN_INSUFFICIENT_ENGINE_TEMPERATURE = 1,
+
+ CLOSED_LOOP = 2,
+
+ OPEN_ENGINE_LOAD_OR_DECELERATION = 4,
+
+ OPEN_SYSTEM_FAILURE = 8,
+
+ CLOSED_LOOP_BUT_FEEDBACK_FAULT = 16,
+};
+
+/* Defines which ignition monitors are available to be read. */
+enum IgnitionMonitorKind : int32_t {
+ SPARK = 0,
+
+ COMPRESSION = 1,
+};
+
+/* These ignition monitors are common to both SPARK and COMPRESSION. */
+enum CommonIgnitionMonitors : int32_t {
+ COMPONENTS_AVAILABLE = 0x1 << 0,
+ COMPONENTS_INCOMPLETE = 0x1 << 1,
+
+ FUEL_SYSTEM_AVAILABLE = 0x1 << 2,
+ FUEL_SYSTEM_INCOMPLETE = 0x1 << 3,
+
+ MISFIRE_AVAILABLE = 0x1 << 4,
+ MISFIRE_INCOMPLETE = 0x1 << 5,
+};
+
+/* Ignition monitors available for SPARK vehicles. */
+enum SparkIgnitionMonitors : CommonIgnitionMonitors {
+ EGR_AVAILABLE = 0x1 << 6,
+ EGR_INCOMPLETE = 0x1 << 7,
+
+ OXYGEN_SENSOR_HEATER_AVAILABLE = 0x1 << 8,
+ OXYGEN_SENSOR_HEATER_INCOMPLETE = 0x1 << 9,
+
+ OXYGEN_SENSOR_AVAILABLE = 0x1 << 10,
+ OXYGEN_SENSOR_INCOMPLETE = 0x1 << 11,
+
+ AC_REFRIGERANT_AVAILABLE = 0x1 << 12,
+ AC_REFRIGERANT_INCOMPLETE = 0x1 << 13,
+
+ SECONDARY_AIR_SYSTEM_AVAILABLE = 0x1 << 14,
+ SECONDARY_AIR_SYSTEM_INCOMPLETE = 0x1 << 15,
+
+ EVAPORATIVE_SYSTEM_AVAILABLE = 0x1 << 16,
+ EVAPORATIVE_SYSTEM_INCOMPLETE = 0x1 << 17,
+
+ HEATED_CATALYST_AVAILABLE = 0x1 << 18,
+ HEATED_CATALYST_INCOMPLETE = 0x1 << 19,
+
+ CATALYST_AVAILABLE = 0x1 << 20,
+ CATALYST_INCOMPLETE = 0x1 << 21,
+};
+
+/* Ignition monitors only available for COMPRESSION vehicles. */
+enum CompressionIgnitionMonitors : CommonIgnitionMonitors {
+ EGR_OR_VVT_AVAILABLE = 0x1 << 6,
+ EGR_OR_VVT_INCOMPLETE = 0x1 << 7,
+
+ PM_FILTER_AVAILABLE = 0x1 << 8,
+ PM_FILTER_INCOMPLETE = 0x1 << 9,
+
+ EXHAUST_GAS_SENSOR_AVAILABLE = 0x1 << 10,
+ EXHAUST_GAS_SENSOR_INCOMPLETE = 0x1 << 11,
+
+ BOOST_PRESSURE_AVAILABLE = 0x1 << 12,
+ BOOST_PRESSURE_INCOMPLETE = 0x1 << 13,
+
+ NOx_SCR__AVAILABLE = 0x1 << 14,
+ NOx_SCR_INCOMPLETE = 0x1 << 15,
+
+ NMHC_CATALYST_AVAILABLE = 0x1 << 16,
+ NMHC_CATALYST_INCOMPLETE = 0x1 << 17,
+};
+
+enum SecondaryAirStatus : int32_t {
+ UPSTREAM = 1,
+
+ DOWNSTREAM_OF_CATALYCIC_CONVERTER = 2,
+
+ FROM_OUTSIDE_OR_OFF = 4,
+
+ PUMP_ON_FOR_DIAGNOSTICS = 8,
+};
+
+enum FuelType : int32_t {
+ NOT_AVAILABLE = 0,
+
+ GASOLINE = 1,
+
+ METHANOL = 2,
+
+ ETHANOL = 3,
+
+ DIESEL = 4,
+
+ LPG = 5,
+
+ CNG = 6,
+
+ PROPANE = 7,
+
+ ELECTRIC = 8,
+
+ BIFUEL_RUNNING_GASOLINE = 9,
+
+ BIFUEL_RUNNING_METHANOL = 10,
+
+ BIFUEL_RUNNING_ETHANOL = 11,
+
+ BIFUEL_RUNNING_LPG = 12,
+
+ BIFUEL_RUNNING_CNG = 13,
+
+ BIFUEL_RUNNING_PROPANE = 14,
+
+ BIFUEL_RUNNING_ELECTRIC = 15,
+
+ BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION = 16,
+
+ HYBRID_GASOLINE = 17,
+
+ HYBRID_ETHANOL = 18,
+
+ HYBRID_DIESEL = 19,
+
+ HYBRID_ELECTRIC = 20,
+
+ HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION = 21,
+
+ HYBRID_REGENERATIVE = 22,
+
+ BIFUEL_RUNNING_DIESEL = 23,
+};
+
+/*
+ * This enum provides the canonical mapping for sensor properties that have an integer value.
+ * The ordering of the values is taken from the OBD2 specification.
+ * Some of the properties are represented as an integer mapping to another enum. In those cases
+ * expect a comment by the property definition describing the enum to look at for the mapping.
+ * Any value greater than the last reserved index is available to vendors to map their extensions.
+ */
+enum Obd2IntegerSensorIndex : int32_t {
+ /* refer to FuelSystemStatus for a description of this value. */
+ FUEL_SYSTEM_STATUS = 0,
+
+ MALFUNCTION_INDICATOR_LIGHT_ON = 1,
+
+ /* refer to IgnitionMonitorKind for a description of this value. */
+ IGNITION_MONITORS_SUPPORTED = 2,
+
+ /*
+ * The value of this sensor is a bitmask that specifies whether ignition-specific
+ * tests are available and whether they are complete. The semantics of the individual
+ * bits in this value are given by, respectively, SparkIgnitionMonitors and
+ * CompressionIgnitionMonitors depending on the value of IGNITION_MONITORS_SUPPORTED.
+ /*
+ IGNITION_SPECIFIC_MONITORS = 3,
+
+ INTAKE_AIR_TEMPERATURE = 4,
+
+ /* refer to SecondaryAirStatus for a description of this value. */
+ COMMANDED_SECONDARY_AIR_STATUS = 5,
+
+ NUM_OXYGEN_SENSORS_PRESENT = 6,
+
+ RUNTIME_SINCE_ENGINE_START = 7,
+
+ DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON = 8,
+
+ WARMUPS_SINCE_CODES_CLEARED = 9,
+
+ DISTANCE_TRAVELED_SINCE_CODES_CLEARED = 10,
+
+ ABSOLUTE_BAROMETRIC_PRESSURE = 11,
+
+ CONTROL_MODULE_VOLTAGE = 12,
+
+ AMBIENT_AIR_TEMPERATURE = 13,
+
+ TIME_WITH_MALFUNCTION_LIGHT_ON = 14,
+
+ TIME_SINCE_TROUBLE_CODES_CLEARED = 15,
+
+ MAX_FUEL_AIR_EQUIVALENCE_RATIO = 16,
+
+ MAX_OXYGEN_SENSOR_VOLTAGE = 17,
+
+ MAX_OXYGEN_SENSOR_CURRENT = 18,
+
+ MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 19,
+
+ MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR = 20,
+
+ /* refer to FuelType for a description of this value. */
+ FUEL_TYPE = 21,
+
+ FUEL_RAIL_ABSOLUTE_PRESSURE = 22,
+
+ ENGINE_OIL_TEMPERATURE = 23,
+
+ DRIVER_DEMAND_PERCENT_TORQUE = 24,
+
+ ENGINE_ACTUAL_PERCENT_TORQUE = 25,
+
+ ENGINE_REFERENCE_PERCENT_TORQUE = 26,
+
+ ENGINE_PERCENT_TORQUE_DATA_IDLE = 27,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT1 = 28,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT2 = 29,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT3 = 30,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT4 = 31,
+
+ LAST_SYSTEM_INDEX = ENGINE_PERCENT_TORQUE_DATA_POINT4,
+
+ VENDOR_START_INDEX = LAST_SYSTEM_INDEX + 1,
+};
+
+/*
+ * This enum provides the canonical mapping for sensor properties that have a floating-point value.
+ * The ordering of the values is taken from the OBD2 specification.
+ * Any value greater than the last reserved index is available to vendors to map their extensions.
+ */
+enum Obd2FloatSensorIndex : int32_t {
+ CALCULATED_ENGINE_LOAD = 0,
+
+ ENGINE_COOLANT_TEMPERATURE = 1,
+
+ SHORT_TERM_FUEL_TRIM_BANK1 = 2,
+
+ LONG_TERM_FUEL_TRIM_BANK1 = 3,
+
+ SHORT_TERM_FUEL_TRIM_BANK2 = 4,
+
+ LONG_TERM_FUEL_TRIM_BANK2 = 5,
+
+ FUEL_PRESSURE = 6,
+
+ INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 7,
+
+ ENGINE_RPM = 8,
+
+ VEHICLE_SPEED = 9,
+
+ TIMING_ADVANCE = 10,
+
+ MAF_AIR_FLOW_RATE = 11,
+
+ THROTTLE_POSITION = 12,
+
+ OXYGEN_SENSOR1_VOLTAGE = 13,
+
+ OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM = 14,
+
+ OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO = 15,
+
+ OXYGEN_SENSOR2_VOLTAGE = 16,
+
+ OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM = 17,
+
+ OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO = 18,
+
+ OXYGEN_SENSOR3_VOLTAGE = 19,
+
+ OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM = 20,
+
+ OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO = 21,
+
+ OXYGEN_SENSOR4_VOLTAGE = 22,
+
+ OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM = 23,
+
+ OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO = 24,
+
+ OXYGEN_SENSOR5_VOLTAGE = 25,
+
+ OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM = 26,
+
+ OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO = 27,
+
+ OXYGEN_SENSOR6_VOLTAGE = 28,
+
+ OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM = 29,
+
+ OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO = 30,
+
+ OXYGEN_SENSOR7_VOLTAGE = 31,
+
+ OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM = 32,
+
+ OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO = 33,
+
+ OXYGEN_SENSOR8_VOLTAGE = 34,
+
+ OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM = 35,
+
+ OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO = 36,
+
+ FUEL_RAIL_PRESSURE = 37,
+
+ FUEL_RAIL_GAUGE_PRESSURE = 38,
+
+ COMMANDED_EXHAUST_GAS_RECIRCULATION = 39,
+
+ EXHAUST_GAS_RECIRCULATION_ERROR = 40,
+
+ COMMANDED_EVAPORATIVE_PURGE = 41,
+
+ FUEL_TANK_LEVEL_INPUT = 42,
+
+ EVAPORATION_SYSTEM_VAPOR_PRESSURE = 43,
+
+ CATALYST_TEMPERATURE_BANK1_SENSOR1 = 44,
+
+ CATALYST_TEMPERATURE_BANK2_SENSOR1 = 45,
+
+ CATALYST_TEMPERATURE_BANK1_SENSOR2 = 46,
+
+ CATALYST_TEMPERATURE_BANK2_SENSOR2 = 47,
+
+ ABSOLUTE_LOAD_VALUE = 48,
+
+ FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO = 49,
+
+ RELATIVE_THROTTLE_POSITION = 50,
+
+ ABSOLUTE_THROTTLE_POSITION_B = 51,
+
+ ABSOLUTE_THROTTLE_POSITION_C = 52,
+
+ ACCELERATOR_PEDAL_POSITION_D = 53,
+
+ ACCELERATOR_PEDAL_POSITION_E = 54,
+
+ ACCELERATOR_PEDAL_POSITION_F = 55,
+
+ COMMANDED_THROTTLE_ACTUATOR = 56,
+
+ ETHANOL_FUEL_PERCENTAGE = 57,
+
+ ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE = 58,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 59,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 60,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 61,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 62,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 63,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 64,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 65,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 66,
+
+ RELATIVE_ACCELERATOR_PEDAL_POSITION = 67,
+
+ HYBRID_BATTERY_PACK_REMAINING_LIFE = 68,
+
+ FUEL_INJECTION_TIMING = 69,
+
+ ENGINE_FUEL_RATE = 70,
+
+ LAST_SYSTEM_INDEX = ENGINE_FUEL_RATE,
+
+ VENDOR_START_INDEX = LAST_SYSTEM_INDEX + 1,
+};