Merge "Add GNSS AIDL interfaces (hardware/interfaces)"
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
index 72df256..e3b559e 100644
--- a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
@@ -499,6 +499,18 @@
},
.initialValue = {.int32Values = {0, 0, 0}}},
+ {.config =
+ {
+ .prop = toInt(VehicleProperty::HW_CUSTOM_INPUT),
+ .access = VehiclePropertyAccess::READ,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0, 0, 0, 3, 0, 0, 0, 0, 0},
+ },
+ .initialValue =
+ {
+ .int32Values = {0, 0, 0},
+ }},
+
{.config = {.prop = toInt(VehicleProperty::HVAC_POWER_ON),
.access = VehiclePropertyAccess::READ_WRITE,
.changeMode = VehiclePropertyChangeMode::ON_CHANGE,
diff --git a/automotive/vehicle/2.0/types.hal b/automotive/vehicle/2.0/types.hal
index b7c72e4..11fe70e 100644
--- a/automotive/vehicle/2.0/types.hal
+++ b/automotive/vehicle/2.0/types.hal
@@ -1480,6 +1480,33 @@
| VehiclePropertyType:INT32_VEC
| VehicleArea:GLOBAL),
+ /**
+ * Defines a custom OEM partner input event.
+ *
+ * This input event must be used by OEM partners who wish to propagate events not supported
+ * by Android. It is composed by an array of int32 values only.
+ *
+ * The Android properties are:
+ *
+ * int32Values[0] : Input code identifying the function representing this event. Valid event
+ * types are defined by CustomInputType.CUSTOM_EVENT_F1 up to
+ * CustomInputType.CUSTOM_EVENT_F10. They represent the custom event to be
+ * defined by OEM partners.
+ * int32Values[1] : target display type defined in VehicleDisplay. Events not tied to specific
+ * display must be sent to VehicleDisplay#MAIN.
+ * int32Values[2] : repeat counter, if 0 then event is not repeated. Values 1 or above means
+ * how many times this event repeated.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @data_enum CustomInputType
+ * @access VehiclePropertyAccess:READ
+ */
+ HW_CUSTOM_INPUT = (
+ 0X0A30
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:INT32_VEC
+ | VehicleArea:GLOBAL),
+
/***************************************************************************
* Most Car Cabin properties have both a POSition and MOVE parameter. These
* are used to control the various movements for seats, doors, and windows
@@ -2924,11 +2951,14 @@
| VehicleArea:GLOBAL),
/**
- * Defines an event that VHAL signals to the car watchdog as a heartbeat.
+ * Defines an event that VHAL signals to car watchdog as a heartbeat.
*
- * VHAL is supposed to write system uptime to this property at every 3 second.
- * Car watchdog subscribes to this property and checks if the property is updated at every 3
- * second. If it isn’t, car watchdog considers VHAL unhealthy and terminates it.
+ * If VHAL supports this property, VHAL should write system uptime to this property at every 3
+ * second. Car watchdog subscribes to this property and checks if the property is updated at
+ * every 3 second. With the buffer time of 3 second, car watchdog waits for a heart beat to be
+ * signaled up to 6 seconds from the last heart beat. If it isn’t, car watchdog considers
+ * VHAL unhealthy and terminates it.
+ * If this property is not supported by VHAL, car watchdog doesn't check VHAL health status.
*
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ
@@ -4856,3 +4886,26 @@
*/
MEMORY_OVERUSE = 3,
};
+
+/**
+ * Input code values for HW_CUSTOM_INPUT.
+ */
+enum CustomInputType : int32_t {
+ /**
+ * Ten functions representing the custom input code to be defined and implemented by OEM
+ * partners.
+ *
+ * OEMs need to formally contact Android team if more than 10 functions are required.
+ */
+ CUSTOM_EVENT_F1 = 1001,
+ CUSTOM_EVENT_F2 = 1002,
+ CUSTOM_EVENT_F3 = 1003,
+ CUSTOM_EVENT_F4 = 1004,
+ CUSTOM_EVENT_F5 = 1005,
+ CUSTOM_EVENT_F6 = 1006,
+ CUSTOM_EVENT_F7 = 1007,
+ CUSTOM_EVENT_F8 = 1008,
+ CUSTOM_EVENT_F9 = 1009,
+ CUSTOM_EVENT_F10 = 1010,
+};
+
diff --git a/biometrics/common/aidl/android/hardware/biometrics/common/CommonProps.aidl b/biometrics/common/aidl/android/hardware/biometrics/common/CommonProps.aidl
index 8304c95..9c3fd58 100644
--- a/biometrics/common/aidl/android/hardware/biometrics/common/CommonProps.aidl
+++ b/biometrics/common/aidl/android/hardware/biometrics/common/CommonProps.aidl
@@ -22,29 +22,26 @@
@VintfStability
parcelable CommonProps {
/**
- * A statically configured unique ID that identifies a single biometric
- * sensor. IDs must start at zero and increment by one for each unique
- * sensor. Note that ID allocations are shared between all biometric
- * modalities (e.g. fingerprint, face, iris), and a single ID must never
+ * A statically configured unique ID that identifies a single biometric sensor. IDs must start
+ * at zero and increment by one for each unique sensor. Note that ID allocations are shared
+ * between all biometric modalities (e.g. fingerprint, face, iris), and a single ID must never
* be claimed by more than a single sensor.
*/
int sensorId;
/**
- * A statically configured strength for this sensor. See the SensorStrength
- * interface for more information.
+ * A statically configured strength for this sensor. See the SensorStrength interface for more
+ * information.
*/
SensorStrength sensorStrength;
/**
- * The maximum number of enrollments that a single user can have.
- * Statically configured.
+ * The maximum number of enrollments that a single user can have. Statically configured.
*/
int maxEnrollmentsPerUser;
/**
- * A list of hardware information for subsystems that pertain to this
- * biometric sensor.
+ * A list of hardware information for subsystems that pertain to this biometric sensor.
*/
HardwareInfo[] hardwareInfo;
}
\ No newline at end of file
diff --git a/biometrics/common/aidl/android/hardware/biometrics/common/SensorStrength.aidl b/biometrics/common/aidl/android/hardware/biometrics/common/SensorStrength.aidl
index 7460279..790691c 100644
--- a/biometrics/common/aidl/android/hardware/biometrics/common/SensorStrength.aidl
+++ b/biometrics/common/aidl/android/hardware/biometrics/common/SensorStrength.aidl
@@ -20,22 +20,21 @@
@Backing(type="byte")
enum SensorStrength {
/**
- * A sensor that meets the requirements for Class 1 biometrics as defined
- * in the CDD. This does not correspond to a public BiometricManager.Authenticators
- * constant. Sensors of this strength are not available to applications ia the
- * public API surface.
+ * A sensor that meets the requirements for Class 1 biometrics as defined in the CDD. This does
+ * not correspond to a public BiometricManager.Authenticators constant. Sensors of this strength
+ * are not available to applications via the public API surface.
*/
CONVENIENCE,
/**
- * A sensor that meets the requirements for Class 2 biometrics as defined
- * in the CDD. Corresponds to BiometricManager.Authenticators.BIOMETRIC_WEAK.
+ * A sensor that meets the requirements for Class 2 biometrics as defined in the CDD.
+ * Corresponds to BiometricManager.Authenticators.BIOMETRIC_WEAK.
*/
WEAK,
/**
- * A sensor that meets the requirements for Class 3 biometrics as defined
- * in the CDD. Corresponds to BiometricManager.Authenticators.BIOMETRIC_STRONG.
+ * A sensor that meets the requirements for Class 3 biometrics as defined in the CDD.
+ * Corresponds to BiometricManager.Authenticators.BIOMETRIC_STRONG.
*
* Notably, this is the only strength that allows generation/verification of
* HardwareAuthToken(s).
diff --git a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/Error.aidl b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/Error.aidl
index 014a4c0..4fe7f5f 100644
--- a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/Error.aidl
+++ b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/Error.aidl
@@ -34,28 +34,28 @@
* The implementation is unable to process the request. For example, invalid arguments were
* supplied.
*/
- UNABLE_TO_PROCESS,
+ UNABLE_TO_PROCESS = 2,
/**
* The current operation took too long to complete.
*/
- TIMEOUT,
+ TIMEOUT = 3,
/**
* No space available to store additional enrollments.
*/
- NO_SPACE,
+ NO_SPACE = 4,
/**
* The operation was canceled. See common::ICancellationSignal.
*/
- CANCELED,
+ CANCELED = 5,
/**
* The implementation was unable to remove an enrollment.
* See ISession#removeEnrollments.
*/
- UNABLE_TO_REMOVE,
+ UNABLE_TO_REMOVE = 6,
/**
* Reserved to maintain backwards compatibility. See ISessionCallback#onLockoutTimed instead.
diff --git a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/IFingerprint.aidl b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/IFingerprint.aidl
index 0c8ebc5..4b907b4 100644
--- a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/IFingerprint.aidl
+++ b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/IFingerprint.aidl
@@ -27,41 +27,34 @@
/**
* getSensorProps:
*
- * @return A list of properties for all sensors that an instance of the
- * HAL supports.
+ * @return A list of properties for all sensors that an instance of the HAL supports.
*/
SensorProps[] getSensorProps();
/**
* createSession:
*
- * Creates a session which can then be used by the framework to perform
- * operations such as enroll, authenticate, etc for the given sensorId
- * and userId.
+ * Creates a session which can then be used by the framework to perform operations such as
+ * enroll, authenticate, etc for the given sensorId and userId.
*
- * A physical sensor identified by sensorId typically supports only a
- * single in-flight session at a time. As such, if a session is currently
- * in a state other than SessionState::IDLING, the HAL MUST finish or
- * cancel the current operation and return to SessionState::IDLING before
- * the new session is created. For example:
- * 1) If a session for sensorId=0, userId=0
- * is currently in a cancellable state (see ICancellationSignal) such
- * as SessionState::AUTHENTICATING and the framework requests a new
- * session for sensorId=0, userId=10, the HAL must end the current
- * session with Error::CANCELED, invoke
- * ISessionCallback#onStateChanged with SessionState::IDLING, and
+ * A physical sensor identified by sensorId typically supports only a single in-flight session
+ * at a time. As such, if a session is currently in a state other than SessionState::IDLING, the
+ * HAL MUST finish or cancel the current operation and return to SessionState::IDLING before the
+ * new session is created. For example:
+ * 1) If a session for sensorId=0, userId=0 is currently in a cancellable state (see
+ * ICancellationSignal) such as SessionState::AUTHENTICATING and the framework requests a
+ * new session for sensorId=0, userId=10, the HAL must end the current session with
+ * Error::CANCELED, invoke ISessionCallback#onStateChanged with SessionState::IDLING, and
* then return a new session for sensorId=0, userId=10.
- * 2) If a session for sensorId=0, userId=0 is currently in a
- * non-cancellable state such as SessionState::REMOVING_ENROLLMENTS,
- * and the framework requests a new session for sensorId=0, userId=10,
- * the HAL must finish the current operation before invoking
- * ISessionCallback#onStateChanged with SessionState::IDLING, and
- * return a new session for sensorId=0, userId=10.
+ * 2) If a session for sensorId=0, userId=0 is currently in a non-cancellable state such as
+ * SessionState::REMOVING_ENROLLMENTS, and the framework requests a new session for
+ * sensorId=0, userId=10, the HAL must finish the current operation before invoking
+ * ISessionCallback#onStateChanged with SessionState::IDLING, and return a new session for
+ * sensorId=0, userId=10.
*
- * Implementations must store user-specific state or metadata in
- * /data/vendor_de/<user>/fpdata as specified by the SeLinux policy. This
- * directory is created/removed by vold (see vold_prepare_subdirs.cpp).
- * Implementations may store additional user-specific data, such as
+ * Implementations must store user-specific state or metadata in /data/vendor_de/<user>/fpdata
+ * as specified by the SeLinux policy. This directory is created/removed by vold (see
+ * vold_prepare_subdirs.cpp). Implementations may store additional user-specific data, such as
* embeddings or templates in StrongBox.
*
* @param sensorId The sensor with which this session is being created.
@@ -74,33 +67,29 @@
/**
* generateChallenge:
*
- * Begins a secure transaction request. Note that the challenge by itself
- * is not useful. It only becomes useful when wrapped in a verifiable
- * message such as a HardwareAuthToken.
+ * Begins a secure transaction request. Note that the challenge by itself is not useful. It only
+ * becomes useful when wrapped in a verifiable message such as a HardwareAuthToken.
*
* Canonical example:
* 1) User requests an operation, such as fingerprint enrollment.
- * 2) Fingerprint enrollment cannot happen until the user confirms
- * their lockscreen credential (PIN/Pattern/Password).
- * 3) However, the biometric subsystem does not want just "any"
- * proof of credential confirmation. It needs proof that the
- * user explicitly authenticated credential in order to allow
- * addition of biometric enrollments.
+ * 2) Fingerprint enrollment cannot happen until the user confirms their lockscreen credential
+ * (PIN/Pattern/Password).
+ * 3) However, the biometric subsystem does not want just "any" proof of credential
+ * confirmation. It needs proof that the user explicitly authenticated credential in order
+ * to allow addition of biometric enrollments.
* To secure this path, the following path is taken:
* 1) Upon user requesting fingerprint enroll, the framework requests
* IFingerprint#generateChallenge
- * 2) Framework sends the challenge to the credential subsystem, and upon
- * credential confirmation, a HAT is created, containing the challenge
- * in the "challenge" field.
+ * 2) Framework sends the challenge to the credential subsystem, and upon credential
+ * confirmation, a HAT is created, containing the challenge in the "challenge" field.
* 3) Framework sends the HAT to the HAL, e.g. ISession#enroll.
* 4) Implementation verifies the authenticity and integrity of the HAT.
- * 5) Implementation now has confidence that the user entered their
- * credential to allow biometric enrollment.
+ * 5) Implementation now has confidence that the user entered their credential to allow
+ * biometric enrollment.
*
- * Note that the interface allows multiple in-flight challenges. For
- * example, invoking generateChallenge(0, 0, timeoutSec, cb) twice
- * does not invalidate the first challenge. The challenge is invalidated
- * only when:
+ * Note that the interface allows multiple in-flight challenges. For example, invoking
+ * generateChallenge(0, 0, timeoutSec, cb) twice does not invalidate the first challenge. The
+ * challenge is invalidated only when:
* 1) The provided timeout expires, or
* 2) IFingerprint#revokeChallenge is invoked
*
@@ -124,9 +113,9 @@
/**
* revokeChallenge:
*
- * Revokes a challenge that was previously generated. Note that if an
- * invalid combination of parameters is requested, the implementation
- * must still notify the framework using the provided callback.
+ * Revokes a challenge that was previously generated. Note that if an invalid combination of
+ * parameters is requested, the implementation must still notify the framework using the
+ * provided callback.
*
* @param sensorId Sensor that the revocation should apply to.
* @param userId User that the revocation should apply to.
diff --git a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISession.aidl b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISession.aidl
index d0f546a..644e214 100644
--- a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISession.aidl
+++ b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISession.aidl
@@ -51,41 +51,35 @@
*
* A request to add a fingerprint enrollment.
*
- * Once the HAL is able to start processing the enrollment request, it must
- * notify the framework via ISessionCallback#onStateChanged with
- * SessionState::ENROLLING.
+ * Once the HAL is able to start processing the enrollment request, it must notify the framework
+ * via ISessionCallback#onStateChanged with SessionState::ENROLLING.
*
- * At any point during enrollment, if a non-recoverable error occurs,
- * the HAL must notify the framework via ISessionCallback#onError with
- * the applicable enrollment-specific error, and then send
- * ISessionCallback#onStateChanged(cookie, SessionState::IDLING) if no
- * subsequent operation is in the queue.
+ * At any point during enrollment, if a non-recoverable error occurs, the HAL must notify the
+ * framework via ISessionCallback#onError with the applicable enrollment-specific error, and
+ * then send ISessionCallback#onStateChanged(cookie, SessionState::IDLING) if no subsequent
+ * operation is in the queue.
*
- * Before capturing fingerprint data, the implementation must first
- * verify the authenticity and integrity of the provided HardwareAuthToken.
- * In addition, it must check that the challenge within the provided
- * HardwareAuthToken is valid. See IFingerprint#generateChallenge.
- * If any of the above checks fail, the framework must be notified
- * via ISessionCallback#onError and the HAL must notify the framework when
- * it returns to the idle state. See Error::UNABLE_TO_PROCESS.
+ * Before capturing fingerprint data, the implementation must first verify the authenticity and
+ * integrity of the provided HardwareAuthToken. In addition, it must check that the challenge
+ * within the provided HardwareAuthToken is valid. See IFingerprint#generateChallenge. If any of
+ * the above checks fail, the framework must be notified via ISessionCallback#onError and the
+ * HAL must notify the framework when it returns to the idle state. See
+ * Error::UNABLE_TO_PROCESS.
*
- * During enrollment, the implementation may notify the framework
- * via ISessionCallback#onAcquired with messages that may be used to guide
- * the user. This callback can be invoked multiple times if necessary.
- * Similarly, the framework may be notified of enrollment progress changes
- * via ISessionCallback#onEnrollmentProgress. Once the framework is notified
- * that there are 0 "remaining" steps, the framework may cache the
- * "enrollmentId". See ISessionCallback#onEnrollmentProgress for more info.
- * The HAL must notify the framework once it returns to the idle state.
+ * During enrollment, the implementation may notify the framework via
+ * ISessionCallback#onAcquired with messages that may be used to guide the user. This callback
+ * can be invoked multiple times if necessary. Similarly, the framework may be notified of
+ * enrollment progress changes via ISessionCallback#onEnrollmentProgress. Once the framework is
+ * notified that there are 0 "remaining" steps, the framework may cache the "enrollmentId". See
+ * ISessionCallback#onEnrollmentProgress for more info. The HAL must notify the framework once
+ * it returns to the idle state.
*
- * When a finger is successfully added and before the framework is notified
- * of remaining=0, the implementation MUST update and associate this
- * (sensorId, userId) pair with a new new entropy-encoded random identifier.
- * See ISession#getAuthenticatorId for more information.
+ * When a finger is successfully added and before the framework is notified of remaining=0, the
+ * implementation MUST update and associate this (sensorId, userId) pair with a new new
+ * entropy-encoded random identifier. See ISession#getAuthenticatorId for more information.
*
- * @param cookie An identifier used to track subsystem operations related
- * to this call path. The client must guarantee that it is
- * unique per ISession.
+ * @param cookie An identifier used to track subsystem operations related to this call path. The
+ * client must guarantee that it is unique per ISession.
* @param hat See above documentation.
*/
ICancellationSignal enroll(in int cookie, in HardwareAuthToken hat);
@@ -212,79 +206,66 @@
/**
* getAuthenticatorId:
*
- * MUST return 0 via ISessionCallback#onAuthenticatorIdRetrieved for
- * sensors that are configured as SensorStrength::WEAK or
- * SensorStrength::CONVENIENCE.
+ * MUST return 0 via ISessionCallback#onAuthenticatorIdRetrieved for sensors that are configured
+ * as SensorStrength::WEAK or SensorStrength::CONVENIENCE.
*
- * The following only applies to sensors that are configured as
- * SensorStrength::STRONG.
+ * The following only applies to sensors that are configured as SensorStrength::STRONG.
*
- * The authenticatorId is a (sensorId, user)-specific identifier which
- * can be used during key generation and key import to to associate a
- * key (in KeyStore / KeyMaster) with the current set of enrolled
- * fingerprints. For example, the following public Android APIs
- * allow for keys to be invalidated when the user adds a new enrollment
- * after the key was created:
+ * The authenticatorId is a (sensorId, user)-specific identifier which can be used during key
+ * generation and key import to to associate a key (in KeyStore / KeyMaster) with the current
+ * set of enrolled fingerprints. For example, the following public Android APIs allow for keys
+ * to be invalidated when the user adds a new enrollment after the key was created:
* KeyGenParameterSpec.Builder.setInvalidatedByBiometricEnrollment and
* KeyProtection.Builder.setInvalidatedByBiometricEnrollment.
*
- * In addition, upon successful fingerprint authentication, the signed HAT
- * that is returned to the framework via ISessionCallback#onAuthenticated
- * must contain this identifier in the authenticatorId field.
+ * In addition, upon successful fingerprint authentication, the signed HAT that is returned to
+ * the framework via ISessionCallback#onAuthenticated must contain this identifier in the
+ * authenticatorId field.
*
- * Returns an entropy-encoded random identifier associated with the current
- * set of enrollments via ISessionCallback#onAuthenticatorIdRetrieved. The
- * authenticatorId
+ * Returns an entropy-encoded random identifier associated with the current set of enrollments
+ * via ISessionCallback#onAuthenticatorIdRetrieved. The authenticatorId
* 1) MUST change whenever a new fingerprint is enrolled
* 2) MUST return 0 if no fingerprints are enrolled
* 3) MUST not change if a fingerprint is deleted.
* 4) MUST be an entropy-encoded random number
*
- * @param cookie An identifier used to track subsystem operations related
- * to this call path. The client must guarantee that it is
- * unique per ISession.
+ * @param cookie An identifier used to track subsystem operations related to this call path. The
+ * client must guarantee that it is unique per ISession.
*/
void getAuthenticatorId(in int cookie);
/**
* invalidateAuthenticatorId:
*
- * This method only applies to sensors that are configured as
- * SensorStrength::STRONG. If invoked erroneously by the framework for
- * sensor of other strengths, the HAL should immediately invoke
+ * This method only applies to sensors that are configured as SensorStrength::STRONG. If invoked
+ * by the framework for sensor of other strengths, the HAL should immediately invoke
* ISessionCallback#onAuthenticatorIdInvalidated.
*
- * The following only applies to sensors that are configured as
- * SensorStrength::STRONG.
+ * The following only applies to sensors that are configured as SensorStrength::STRONG.
*
- * When invoked by the framework, the implementation must perform the
- * following sequence of events:
- * 1) Verify the authenticity and integrity of the provided HAT. If this
- * check fails, the HAL must invoke ISessionCallback#onError with
- * Error::UNABLE_TO_PROCESS and return to
+ * When invoked by the framework, the implementation must perform the following sequence of
+ * events:
+ * 1) Verify the authenticity and integrity of the provided HAT. If this check fails, the HAL
+ * must invoke ISessionCallback#onError with Error::UNABLE_TO_PROCESS and return to
* SessionState::IDLING if no subsequent work is in the queue.
- * 2) Verify that the timestamp provided within the HAT is relatively
- * recent (e.g. on the order of minutes, not hours). If this check fails,
- * the HAL must invoke ISessionCallback#onError with
- * Error::UNABLE_TO_PROCESS and return to SessionState::IDLING
- * if no subsequent work is in the queue.
+ * 2) Verify that the timestamp provided within the HAT is relatively recent (e.g. on the
+ * order of minutes, not hours). If this check fails, the HAL must invoke
+ * ISessionCallback#onError with Error::UNABLE_TO_PROCESS and return to
+ * SessionState::IDLING if no subsequent work is in the queue.
* 3) Update the authenticatorId with a new entropy-encoded random number
* 4) Persist the new authenticatorId to non-ephemeral storage
* 5) Notify the framework that the above is completed, via
* ISessionCallback#onAuthenticatorInvalidated
*
- * A practical use case of invalidation would be when the user adds a new
- * enrollment to a sensor managed by a different HAL instance. The
- * public android.security.keystore APIs bind keys to "all biometrics"
- * rather than "fingerprint-only" or "face-only" (see #getAuthenticatorId
- * for more details). As such, the framework would coordinate invalidation
- * across multiple biometric HALs as necessary.
+ * A practical use case of invalidation would be when the user adds a new enrollment to a sensor
+ * managed by a different HAL instance. The public android.security.keystore APIs bind keys to
+ * "all biometrics" rather than "fingerprint-only" or "face-only" (see #getAuthenticatorId
+ * for more details). As such, the framework would coordinate invalidation across multiple
+ * biometric HALs as necessary.
*
- * @param cookie An identifier used to track subsystem operations related
- * to this call path. The client must guarantee that it is
- * unique per ISession.
- * @param hat HardwareAuthToken that must be validated before proceeding
- * with this operation.
+ * @param cookie An identifier used to track subsystem operations related to this call path. The
+ * client must guarantee that it is unique per ISession.
+ * @param hat HardwareAuthToken that must be validated before proceeding with this operation.
*/
void invalidateAuthenticatorId(in int cookie, in HardwareAuthToken hat);
@@ -329,9 +310,8 @@
* See the Android CDD section 7.3.10 for the full set of lockout and rate-limiting
* requirements.
*
- * @param cookie An identifier used to track subsystem operations related
- * to this call path. The client must guarantee that it is
- * unique per ISession.
+ * @param cookie An identifier used to track subsystem operations related to this call path. The
+ * client must guarantee that it is unique per ISession.
* @param hat HardwareAuthToken See above documentation.
*/
void resetLockout(in int cookie, in HardwareAuthToken hat);
@@ -352,12 +332,12 @@
* following states: SessionState::ENROLLING, SessionState::AUTHENTICATING, or
* SessionState::DETECTING_INTERACTION.
*
- * Note that the framework will only invoke this method if the event occurred on the display
- * on which this sensor is located.
+ * Note that the framework will only invoke this method if the event occurred on the display on
+ * which this sensor is located.
*
* Note that for sensors which require illumination such as
- * FingerprintSensorType::UNDER_DISPLAY_OPTICAL, and where illumination is handled below
- * the framework, this is a good time to start illuminating.
+ * FingerprintSensorType::UNDER_DISPLAY_OPTICAL, and where illumination is handled below the
+ * framework, this is a good time to start illuminating.
*
* @param pointerId See android.view.MotionEvent#getPointerId
* @param x The distance in pixels from the left edge of the display.
diff --git a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISessionCallback.aidl b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISessionCallback.aidl
index 33a93e5..74792d8 100644
--- a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISessionCallback.aidl
+++ b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/ISessionCallback.aidl
@@ -38,7 +38,10 @@
* operation.
*
* @param info See the AcquiredInfo enum.
- * @param vendorCode Only valid if info == AcquiredInfo::VENDOR.
+ * @param vendorCode Only valid if info == AcquiredInfo::VENDOR. The vendorCode must be used to
+ * index into the configuration
+ * com.android.internal.R.array.fingerprint_acquired_vendor that's installed
+ * on the vendor partition.
*/
void onAcquired(in AcquiredInfo info, in int vendorCode);
@@ -58,7 +61,10 @@
* an Error::CANCELED message.
*
* @param error See the Error enum.
- * @param vendorCode Only valid if error == Error::VENDOR.
+ * @param vendorCode Only valid if error == Error::VENDOR. The vendorCode must be used to index
+ * into the configuration
+ * com.android.internal.R.fingerprint_error_vendor that's installed on the
+ * vendor partition.
*/
void onError(in Error error, in int vendorCode);
diff --git a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/SensorProps.aidl b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/SensorProps.aidl
index fc3b44d..ab70a58 100644
--- a/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/SensorProps.aidl
+++ b/biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/SensorProps.aidl
@@ -27,8 +27,7 @@
CommonProps commonProps;
/**
- * A statically configured sensor type representing this fingerprint
- * sensor.
+ * A statically configured sensor type representing this fingerprint sensor.
*/
FingerprintSensorType sensorType;
@@ -39,32 +38,29 @@
boolean supportsNavigationGestures;
/**
- * The location of the center of the sensor if applicable. For example,
- * sensors of FingerprintSensorType::UNDER_DISPLAY_* would report this
- * value as the distance in pixels, measured from the left edge of the
- * screen.
+ * The location of the center of the sensor if applicable. For example, sensors of
+ * FingerprintSensorType::UNDER_DISPLAY_* would report this value as the distance in pixels,
+ * measured from the left edge of the screen.
*/
int sensorLocationX;
/**
- * The location of the center of the sensor if applicable. For example,
- * sensors of FingerprintSensorType::UNDER_DISPLAY_* would report this
- * value as the distance in pixels, measured from the top edge of the
- * screen.
+ * The location of the center of the sensor if applicable. For example, sensors of
+ * FingerprintSensorType::UNDER_DISPLAY_* would report this value as the distance in pixels,
+ * measured from the top edge of the screen.
*/
int sensorLocationY;
/**
* The radius of the sensor if applicable. For example, sensors of
- * FingerprintSensorType::UNDER_DISPLAY_* would report this value as
- * the radius of the sensor, in pixels.
+ * FingerprintSensorType::UNDER_DISPLAY_* would report this value as the radius of the sensor,
+ * in pixels.
*/
int sensorRadius;
/**
- * For sensors of FingerprintSensorType::UNDER_DISPLAY_*, this must
- * correspond to the android.hardware.DisplayManager#getDisplay Android
- * API.
+ * For sensors of FingerprintSensorType::UNDER_DISPLAY_*, this must correspond to the
+ * android.hardware.DisplayManager#getDisplay Android API.
*/
int displayId;
}
diff --git a/current.txt b/current.txt
index 9c5091b..c9a923e 100644
--- a/current.txt
+++ b/current.txt
@@ -767,6 +767,7 @@
98592d193a717066facf91428426e5abe211e3bd718bc372e29fb944ddbe6e7c android.hardware.wifi.supplicant@1.3::types
# ABI preserving changes to HALs during Android S
+3da3ce039247872d95c6bd48621dbfdfa1c2d2a91a90f257862f87ee2bc46300 android.hardware.health@2.1::types
cd84ab19c590e0e73dd2307b591a3093ee18147ef95e6d5418644463a6620076 android.hardware.neuralnetworks@1.2::IDevice
9625e85f56515ad2cf87b6a1847906db669f746ea4ab02cd3d4ca25abc9b0109 android.hardware.neuralnetworks@1.2::types
9e758e208d14f7256e0885d6d8ad0b61121b21d8c313864f981727ae55bffd16 android.hardware.neuralnetworks@1.3::types
diff --git a/health/2.1/types.hal b/health/2.1/types.hal
index d775491..6d7b661 100644
--- a/health/2.1/types.hal
+++ b/health/2.1/types.hal
@@ -98,9 +98,8 @@
/**
* Estimated battery full charge design capacity (in microamp hours, uAh).
* Value must be 0 if unknown.
- * Value must be positive if known.
- * Value must be greater than 100 000 uAh.
- * Value must be less than 100 000 000 uAh.
+ * Value must be greater than 100 000 uAh if known.
+ * Value must be less than 100 000 000 uAh if known.
*/
int32_t batteryFullChargeDesignCapacityUah;
};
diff --git a/health/2.1/vts/functional/VtsHalHealthV2_1TargetTest.cpp b/health/2.1/vts/functional/VtsHalHealthV2_1TargetTest.cpp
index 43e6cdc..4ae443a 100644
--- a/health/2.1/vts/functional/VtsHalHealthV2_1TargetTest.cpp
+++ b/health/2.1/vts/functional/VtsHalHealthV2_1TargetTest.cpp
@@ -233,16 +233,17 @@
ASSERT_EQ(Result::SUCCESS, result);
EXPECT_TRUE(IsEnum(value.batteryCapacityLevel)) << " BatteryCapacityLevel";
- EXPECT_GE(value.batteryChargeTimeToFullNowSeconds, 0);
+ EXPECT_GE(value.batteryChargeTimeToFullNowSeconds, -1);
- EXPECT_GE(value.batteryFullChargeDesignCapacityUah, 0)
- << "batteryFullChargeDesignCapacityUah should not be negative";
+ if (value.batteryFullChargeDesignCapacityUah != 0) {
+ EXPECT_GT((long)value.batteryFullChargeDesignCapacityUah, FULL_CHARGE_DESIGN_CAP_MIN)
+ << "batteryFullChargeDesignCapacityUah should be greater than 100 mAh, or 0 if "
+ "unknown";
- EXPECT_GT((long)value.batteryFullChargeDesignCapacityUah, FULL_CHARGE_DESIGN_CAP_MIN)
- << "batteryFullChargeDesignCapacityUah should be greater than 100 mAh";
-
- EXPECT_LT((long)value.batteryFullChargeDesignCapacityUah, FULL_CHARGE_DESIGN_CAP_MAX)
- << "batteryFullChargeDesignCapacityUah should be less than 100,000 mAh";
+ EXPECT_LT((long)value.batteryFullChargeDesignCapacityUah, FULL_CHARGE_DESIGN_CAP_MAX)
+ << "batteryFullChargeDesignCapacityUah should be less than 100,000 mAh, or 0 "
+ "if unknown";
+ }
})));
}
diff --git a/radio/1.6/types.hal b/radio/1.6/types.hal
index fbcbe97..4bd3cd6 100644
--- a/radio/1.6/types.hal
+++ b/radio/1.6/types.hal
@@ -157,7 +157,7 @@
QosFilterDirection direction;
/**
- * Specified the order in which the filter needs to be matched.
+ * Specifies the order in which the filter needs to be matched.
* A lower numerical(positive) value has a higher precedence.
* Set -1 when unspecified.
*/
@@ -176,6 +176,30 @@
vec<QosFilter> qosFilters;
};
+/** The allowed failure modes on an IWLAN handover failure. */
+enum HandoverFailureMode : int32_t {
+ /**
+ * On data handover failure, fallback to the source data transport when the
+ * fail cause is due to a hand off preference change.
+ */
+ LEGACY = 0,
+
+ /** On data handover failure, fallback to the source data transport. */
+ DO_FALLBACK = 1,
+
+ /**
+ * On data handover failure, retry the handover instead of falling back to
+ * the source data transport.
+ */
+ NO_FALLBACK_RETRY_HANDOVER = 2,
+
+ /**
+ * On data handover failure, setup a new data connection by sending a normal
+ * request to the underlying data service.
+ */
+ NO_FALLBACK_RETRY_SETUP_NORMAL = 3
+};
+
struct SetupDataCallResult {
@1.5::SetupDataCallResult base;
@@ -187,4 +211,7 @@
* PDNs that support dedicated bearers.
*/
vec<QosSession> qosSessions;
+
+ /** Specifies the fallback mode on an IWLAN handover failure. */
+ HandoverFailureMode handoverFailureMode;
};
diff --git a/tests/baz/1.0/IBase.hal b/tests/baz/1.0/IBase.hal
index 0c1b61f..7b60a8a 100644
--- a/tests/baz/1.0/IBase.hal
+++ b/tests/baz/1.0/IBase.hal
@@ -101,6 +101,8 @@
DoubleThreeDim double3;
};
+ isJava() generates (bool isJava);
+
someBaseMethod();
someBoolMethod(bool x) generates (bool y);
diff --git a/tests/baz/1.0/default/Baz.cpp b/tests/baz/1.0/default/Baz.cpp
index 2ce096c..0c3a59e 100644
--- a/tests/baz/1.0/default/Baz.cpp
+++ b/tests/baz/1.0/default/Baz.cpp
@@ -43,6 +43,12 @@
}
// Methods from ::android::hardware::tests::baz::V1_0::IBase follow.
+Return<bool> Baz::isJava() {
+ LOG(INFO) << "Baz::isJava";
+
+ return false;
+}
+
Return<void> Baz::someBaseMethod() {
LOG(INFO) << "Baz::someBaseMethod";
@@ -331,7 +337,7 @@
Return<IBaz::SomeEnum> Baz::useAnEnum(IBaz::SomeEnum zzz) {
LOG(INFO) << "useAnEnum " << (int)zzz;
- return SomeEnum::goober;
+ return SomeEnum::quux;
}
Return<void> Baz::haveSomeStrings(const hidl_array<hidl_string, 3>& array,
diff --git a/tests/baz/1.0/default/Baz.h b/tests/baz/1.0/default/Baz.h
index 1e24d52..38bbcad 100644
--- a/tests/baz/1.0/default/Baz.h
+++ b/tests/baz/1.0/default/Baz.h
@@ -27,6 +27,7 @@
struct Baz : public IBaz {
// Methods from ::android::hardware::tests::baz::V1_0::IBase follow.
+ Return<bool> isJava() override;
Return<void> someBaseMethod() override;
Return<bool> someBoolMethod(bool x) override;
Return<void> someBoolArrayMethod(const hidl_array<bool, 3>& x,
diff --git a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp
index 1b4eea6..bb99ae4 100644
--- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp
+++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp
@@ -145,8 +145,8 @@
stopHostapd(wifi_instance_name_);
startHostapdAndWaitForHidlService(wifi_instance_name_,
hostapd_instance_name_);
- sp<IHostapd> hostapd = IHostapd::getService(hostapd_instance_name_);
- EXPECT_NE(nullptr, hostapd.get());
+ hostapd_ = IHostapd::getService(hostapd_instance_name_);
+ EXPECT_NE(nullptr, hostapd_.get());
}
/**
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
index da3996b..be6aad9 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
@@ -52,6 +52,10 @@
// Helper function to initialize the driver and firmware to STA mode
// using the vendor HAL HIDL interface.
void initilializeDriverAndFirmware(const std::string& wifi_instance_name) {
+ // Skip if wifi instance is not set.
+ if (wifi_instance_name == "") {
+ return;
+ }
if (getWifi(wifi_instance_name) != nullptr) {
sp<IWifiChip> wifi_chip = getWifiChip(wifi_instance_name);
ChipModeId mode_id;
@@ -65,6 +69,10 @@
// Helper function to deinitialize the driver and firmware
// using the vendor HAL HIDL interface.
void deInitilializeDriverAndFirmware(const std::string& wifi_instance_name) {
+ // Skip if wifi instance is not set.
+ if (wifi_instance_name == "") {
+ return;
+ }
if (getWifi(wifi_instance_name) != nullptr) {
stopWifi(wifi_instance_name);
} else {
diff --git a/wifi/supplicant/1.1/vts/functional/supplicant_hidl_test.cpp b/wifi/supplicant/1.1/vts/functional/supplicant_hidl_test.cpp
index 3c4d06b..8d7ea54 100644
--- a/wifi/supplicant/1.1/vts/functional/supplicant_hidl_test.cpp
+++ b/wifi/supplicant/1.1/vts/functional/supplicant_hidl_test.cpp
@@ -33,6 +33,7 @@
using ::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode;
using ::android::hardware::wifi::supplicant::V1_0::IfaceType;
using ::android::hardware::wifi::supplicant::V1_1::ISupplicant;
+using ::android::hardware::wifi::V1_0::IWifi;
using ::android::sp;
class SupplicantHidlTest : public SupplicantHidlTestBaseV1_1 {
@@ -139,21 +140,12 @@
*/
TEST_P(SupplicantHidlTest, Terminate) { supplicant_->terminate(); }
-static std::vector<std::string> get_wifi_instances() {
- std::vector<std::string> instances =
- android::hardware::getAllHalInstanceNames(
- android::hardware::wifi::V1_0::IWifi::descriptor);
- // Also test when wifi instance is not set.
- instances.push_back("");
-
- return instances;
-}
-
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SupplicantHidlTest);
INSTANTIATE_TEST_CASE_P(
PerInstance, SupplicantHidlTest,
testing::Combine(
- testing::ValuesIn(get_wifi_instances()),
+ testing::ValuesIn(
+ android::hardware::getAllHalInstanceNames(IWifi::descriptor)),
testing::ValuesIn(android::hardware::getAllHalInstanceNames(
android::hardware::wifi::supplicant::V1_1::ISupplicant::
descriptor))),