sm8250-common: biometrics: Implement boosting on authentication

Change-Id: Ia9cde9f540a614ad700fb497288a2a986e924dbd
This commit is contained in:
Sebastiano Barezzi 2021-04-29 22:38:34 +02:00
parent a856c06112
commit 1b3fbae7b0
No known key found for this signature in database
GPG Key ID: 47760583F393BC44
4 changed files with 25 additions and 1 deletions

View File

@ -11,12 +11,14 @@ xiaomi_kona_biometrics_hal_binary {
],
shared_libs: [
"libbinder_ndk",
"libcutils",
"liblog",
"libhidlbase",
"libhardware",
"libutils",
"android.hardware.biometrics.fingerprint@2.1",
"android.hardware.power-ndk_platform",
"//hardware/xiaomi:vendor.xiaomi.hardware.fingerprintextension@1.0",
],

View File

@ -38,15 +38,24 @@ static const uint16_t kVersion = HARDWARE_MODULE_API_VERSION(2, 1);
// List of fingerprint HALs
static const char *kHALClasses[HAL_CLASSES_SIZE] = {HAL_CLASSES};
// Boost duration
static constexpr int kDefaultBoostDurationMs = 2000;
// Power AIDL instance name
static const std::string kPowerInstance = std::string(IPower::descriptor) + "/default";
using RequestStatus =
android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
BiometricsFingerprint *BiometricsFingerprint::sInstance = nullptr;
BiometricsFingerprint::BiometricsFingerprint() : mClientCallback(nullptr), mDevice(nullptr) {
BiometricsFingerprint::BiometricsFingerprint() :
mClientCallback(nullptr), mPowerService(nullptr), mDevice(nullptr) {
int i;
const char *class_name;
sInstance = this; // keep track of the most recent instance
mPowerService = IPower::fromBinder(ndk::SpAIBinder(
AServiceManager_getService(kPowerInstance.c_str())));
for (i=0; i<HAL_CLASSES_SIZE; i++) {
class_name = kHALClasses[i];
mDevice = openHal(class_name);
@ -296,6 +305,7 @@ void BiometricsFingerprint::notify(const fingerprint_msg_t *msg) {
break;
case FINGERPRINT_ACQUIRED: {
int32_t vendorCode = 0;
sInstance->mPowerService->setBoost(Boost::INTERACTION, kDefaultBoostDurationMs);
FingerprintAcquiredInfo result =
VendorAcquiredFilter(msg->data.acquired.acquired_info, &vendorCode);
ALOGD("onAcquired(%d)", result);

View File

@ -25,6 +25,9 @@
#include <hidl/Status.h>
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
#include <vendor/xiaomi/hardware/fingerprintextension/1.0/IXiaomiFingerprint.h>
#include <aidl/android/hardware/power/Boost.h>
#include <aidl/android/hardware/power/IPower.h>
#include <android/binder_manager.h>
namespace android {
namespace hardware {
@ -33,6 +36,8 @@ namespace fingerprint {
namespace V2_1 {
namespace implementation {
using ::aidl::android::hardware::power::Boost;
using ::aidl::android::hardware::power::IPower;
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
@ -77,6 +82,7 @@ private:
std::mutex mClientCallbackMutex;
sp<IBiometricsFingerprintClientCallback> mClientCallback;
std::shared_ptr<IPower> mPowerService;
xiaomi_fingerprint_device_t *mDevice;
};

View File

@ -1,3 +1,9 @@
# Allow access to the HALs
hal_client_domain(hal_fingerprint_default, hal_power)
# Allow binder communication with hal_power_default
binder_call(hal_fingerprint_default, hal_power_default)
allow hal_fingerprint_default fingerprint_data_file:dir rw_dir_perms;
allow hal_fingerprint_default fingerprint_data_file:file create_file_perms;