android_device_motorola_milanf/fingerprint/BiometricsFingerprint.h
electimon 904a71bb02
bangkk: fingerprint: Switch to IOCTL for HBM
* On newer moto kernels it is possible
  to send a SET_PANEL_FEATURE ioctl to /dev/dri/card0
  to set a panel feature such as HBM. Motorola has
  extended the HBM logic to allow FOD HBM to be set
  in additional to regular HBM. This is done by sending
  "2" with the HBM id through the ioctl.

* Utilize the API provided by Egistec provides via
  vendor.egistec.hardware.fingerprint to send commands
  to the internal handler, this allows us to send
  the finger is on or off the sensor message directly to the
  HAL.

Change-Id: I06ace29567900779e63b9826862964d20b267be6
2025-04-07 23:22:27 +03:00

79 lines
3.2 KiB
C++

/*
* Copyright (C) 2017 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_HARDWARE_BIOMETRICS_FINGERPRINT_V2_3_BIOMETRICSFINGERPRINT_H
#define ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_3_BIOMETRICSFINGERPRINT_H
#include <android/hardware/biometrics/fingerprint/2.3/IBiometricsFingerprint.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <vendor/egistec/hardware/fingerprint/4.0/IBiometricsFingerprintRbs.h>
namespace android {
namespace hardware {
namespace biometrics {
namespace fingerprint {
namespace V2_3 {
namespace implementation {
using IBiometricsFingerprint_2_1 =
::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using ::android::sp;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_memory;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
using ::vendor::egistec::hardware::fingerprint::V4_0::IBiometricsFingerprintRbs;
struct BiometricsFingerprint : public IBiometricsFingerprint {
BiometricsFingerprint();
// Methods from ::V2_1::IBiometricsFingerprint follow.
Return<uint64_t> setNotify(
const sp<IBiometricsFingerprintClientCallback>& clientCallback) override;
Return<uint64_t> preEnroll() override;
Return<RequestStatus> enroll(const hidl_array<uint8_t, 69>& hat, uint32_t gid,
uint32_t timeoutSec) override;
Return<RequestStatus> postEnroll() override;
Return<uint64_t> getAuthenticatorId() override;
Return<RequestStatus> cancel() override;
Return<RequestStatus> enumerate() override;
Return<RequestStatus> remove(uint32_t gid, uint32_t fid) override;
Return<RequestStatus> setActiveGroup(uint32_t gid, const hidl_string& storePath) override;
Return<RequestStatus> authenticate(uint64_t operationId, uint32_t gid) override;
// ::V2_3::IBiometricsFingerprint follow.
Return<bool> isUdfps(uint32_t sensorId) override;
Return<void> onFingerDown(uint32_t x, uint32_t y, float minor, float major) override;
Return<void> onFingerUp() override;
Return<void> extraApiWrapper(int cidValue);
private:
sp<IBiometricsFingerprint_2_1> biometrics_2_1_service;
sp<IBiometricsFingerprintRbs> rbs_4_0_service;
};
} // namespace implementation
} // namespace V2_3
} // namespace fingerprint
} // namespace biometrics
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_3_BIOMETRICSFINGERPRINT_H