sm8250-common: biometrics: Implement boosting on authentication
Change-Id: Ia9cde9f540a614ad700fb497288a2a986e924dbd
This commit is contained in:
parent
a856c06112
commit
1b3fbae7b0
@ -11,12 +11,14 @@ xiaomi_kona_biometrics_hal_binary {
|
|||||||
],
|
],
|
||||||
|
|
||||||
shared_libs: [
|
shared_libs: [
|
||||||
|
"libbinder_ndk",
|
||||||
"libcutils",
|
"libcutils",
|
||||||
"liblog",
|
"liblog",
|
||||||
"libhidlbase",
|
"libhidlbase",
|
||||||
"libhardware",
|
"libhardware",
|
||||||
"libutils",
|
"libutils",
|
||||||
"android.hardware.biometrics.fingerprint@2.1",
|
"android.hardware.biometrics.fingerprint@2.1",
|
||||||
|
"android.hardware.power-ndk_platform",
|
||||||
"//hardware/xiaomi:vendor.xiaomi.hardware.fingerprintextension@1.0",
|
"//hardware/xiaomi:vendor.xiaomi.hardware.fingerprintextension@1.0",
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -38,15 +38,24 @@ static const uint16_t kVersion = HARDWARE_MODULE_API_VERSION(2, 1);
|
|||||||
// List of fingerprint HALs
|
// List of fingerprint HALs
|
||||||
static const char *kHALClasses[HAL_CLASSES_SIZE] = {HAL_CLASSES};
|
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 =
|
using RequestStatus =
|
||||||
android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
|
android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
|
||||||
|
|
||||||
BiometricsFingerprint *BiometricsFingerprint::sInstance = nullptr;
|
BiometricsFingerprint *BiometricsFingerprint::sInstance = nullptr;
|
||||||
|
|
||||||
BiometricsFingerprint::BiometricsFingerprint() : mClientCallback(nullptr), mDevice(nullptr) {
|
BiometricsFingerprint::BiometricsFingerprint() :
|
||||||
|
mClientCallback(nullptr), mPowerService(nullptr), mDevice(nullptr) {
|
||||||
int i;
|
int i;
|
||||||
const char *class_name;
|
const char *class_name;
|
||||||
sInstance = this; // keep track of the most recent instance
|
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++) {
|
for (i=0; i<HAL_CLASSES_SIZE; i++) {
|
||||||
class_name = kHALClasses[i];
|
class_name = kHALClasses[i];
|
||||||
mDevice = openHal(class_name);
|
mDevice = openHal(class_name);
|
||||||
@ -296,6 +305,7 @@ void BiometricsFingerprint::notify(const fingerprint_msg_t *msg) {
|
|||||||
break;
|
break;
|
||||||
case FINGERPRINT_ACQUIRED: {
|
case FINGERPRINT_ACQUIRED: {
|
||||||
int32_t vendorCode = 0;
|
int32_t vendorCode = 0;
|
||||||
|
sInstance->mPowerService->setBoost(Boost::INTERACTION, kDefaultBoostDurationMs);
|
||||||
FingerprintAcquiredInfo result =
|
FingerprintAcquiredInfo result =
|
||||||
VendorAcquiredFilter(msg->data.acquired.acquired_info, &vendorCode);
|
VendorAcquiredFilter(msg->data.acquired.acquired_info, &vendorCode);
|
||||||
ALOGD("onAcquired(%d)", result);
|
ALOGD("onAcquired(%d)", result);
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
#include <hidl/Status.h>
|
#include <hidl/Status.h>
|
||||||
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
|
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
|
||||||
#include <vendor/xiaomi/hardware/fingerprintextension/1.0/IXiaomiFingerprint.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 android {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
@ -33,6 +36,8 @@ namespace fingerprint {
|
|||||||
namespace V2_1 {
|
namespace V2_1 {
|
||||||
namespace implementation {
|
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::IBiometricsFingerprint;
|
||||||
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
|
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
|
||||||
using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
|
using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
|
||||||
@ -77,6 +82,7 @@ private:
|
|||||||
|
|
||||||
std::mutex mClientCallbackMutex;
|
std::mutex mClientCallbackMutex;
|
||||||
sp<IBiometricsFingerprintClientCallback> mClientCallback;
|
sp<IBiometricsFingerprintClientCallback> mClientCallback;
|
||||||
|
std::shared_ptr<IPower> mPowerService;
|
||||||
xiaomi_fingerprint_device_t *mDevice;
|
xiaomi_fingerprint_device_t *mDevice;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
6
sepolicy/vendor/hal_fingerprint_default.te
vendored
6
sepolicy/vendor/hal_fingerprint_default.te
vendored
@ -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:dir rw_dir_perms;
|
||||||
allow hal_fingerprint_default fingerprint_data_file:file create_file_perms;
|
allow hal_fingerprint_default fingerprint_data_file:file create_file_perms;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user