Change-Id: I1e0594b88d5230f8c99a6efb0a7dafcbf6ea137aurubino
parent
4ac17a878f
commit
37b235d802
@ -0,0 +1,26 @@ |
|||||||
|
// |
||||||
|
// Copyright (C) 2024 The LineageOS Project |
||||||
|
// |
||||||
|
// SPDX-License-Identifier: Apache-2.0 |
||||||
|
// |
||||||
|
|
||||||
|
cc_binary { |
||||||
|
name: "android.hardware.biometrics.fingerprint-service.samsung", |
||||||
|
relative_install_path: "hw", |
||||||
|
init_rc: ["android.hardware.biometrics.fingerprint-service.samsung.rc"], |
||||||
|
vintf_fragments: ["android.hardware.biometrics.fingerprint-service.samsung.xml"], |
||||||
|
srcs: [ |
||||||
|
"Fingerprint.cpp", |
||||||
|
"Session.cpp", |
||||||
|
"service.cpp", |
||||||
|
], |
||||||
|
shared_libs: [ |
||||||
|
"libbase", |
||||||
|
"libbinder_ndk", |
||||||
|
"android.hardware.biometrics.fingerprint-V3-ndk", |
||||||
|
"android.hardware.biometrics.common-V3-ndk", |
||||||
|
"android.hardware.biometrics.common.thread", |
||||||
|
"android.hardware.biometrics.common.util", |
||||||
|
], |
||||||
|
vendor: true, |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 The LineageOS Project |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "Fingerprint.h" |
||||||
|
|
||||||
|
namespace aidl { |
||||||
|
namespace android { |
||||||
|
namespace hardware { |
||||||
|
namespace biometrics { |
||||||
|
namespace fingerprint { |
||||||
|
|
||||||
|
ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Fingerprint::createSession(int32_t /*sensorId*/, int32_t /*userId*/, |
||||||
|
const std::shared_ptr<ISessionCallback>& /*cb*/, |
||||||
|
std::shared_ptr<ISession>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
} // namespace fingerprint
|
||||||
|
} // namespace biometrics
|
||||||
|
} // namespace hardware
|
||||||
|
} // namespace android
|
||||||
|
} // namespace aidl
|
@ -0,0 +1,33 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 The LineageOS Project |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#pragma once |
||||||
|
|
||||||
|
#include <aidl/android/hardware/biometrics/fingerprint/BnFingerprint.h> |
||||||
|
|
||||||
|
using ::aidl::android::hardware::biometrics::fingerprint::ISession; |
||||||
|
using ::aidl::android::hardware::biometrics::fingerprint::ISessionCallback; |
||||||
|
using ::aidl::android::hardware::biometrics::fingerprint::SensorProps; |
||||||
|
|
||||||
|
namespace aidl { |
||||||
|
namespace android { |
||||||
|
namespace hardware { |
||||||
|
namespace biometrics { |
||||||
|
namespace fingerprint { |
||||||
|
|
||||||
|
class Fingerprint : public BnFingerprint { |
||||||
|
public: |
||||||
|
ndk::ScopedAStatus getSensorProps(std::vector<SensorProps>* _aidl_return) override; |
||||||
|
ndk::ScopedAStatus createSession(int32_t sensorId, int32_t userId, |
||||||
|
const std::shared_ptr<ISessionCallback>& cb, |
||||||
|
std::shared_ptr<ISession>* out) override; |
||||||
|
}; |
||||||
|
|
||||||
|
} // namespace fingerprint
|
||||||
|
} // namespace biometrics
|
||||||
|
} // namespace hardware
|
||||||
|
} // namespace android
|
||||||
|
} // namespace aidl
|
@ -0,0 +1,115 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 The LineageOS Project |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "Session.h" |
||||||
|
|
||||||
|
namespace aidl { |
||||||
|
namespace android { |
||||||
|
namespace hardware { |
||||||
|
namespace biometrics { |
||||||
|
namespace fingerprint { |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::generateChallenge() { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::revokeChallenge(int64_t /*challenge*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::enroll(const HardwareAuthToken& /*hat*/, |
||||||
|
std::shared_ptr<ICancellationSignal>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::authenticate(int64_t /*operationId*/, |
||||||
|
std::shared_ptr<ICancellationSignal>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::detectInteraction(std::shared_ptr<ICancellationSignal>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::enumerateEnrollments() { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::removeEnrollments(const std::vector<int32_t>& /*enrollmentIds*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::getAuthenticatorId() { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::invalidateAuthenticatorId() { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::resetLockout(const HardwareAuthToken& /*hat*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::close() { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onPointerDown(int32_t /*pointerId*/, int32_t /*x*/, int32_t /*y*/, float /*minor*/, |
||||||
|
float /*major*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onPointerUp(int32_t /*pointerId*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onUiReady() { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::authenticateWithContext( |
||||||
|
int64_t /*operationId*/, const OperationContext& /*context*/, |
||||||
|
std::shared_ptr<ICancellationSignal>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::enrollWithContext(const HardwareAuthToken& /*hat*/, |
||||||
|
const OperationContext& /*context*/, |
||||||
|
std::shared_ptr<ICancellationSignal>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::detectInteractionWithContext(const OperationContext& /*context*/, |
||||||
|
std::shared_ptr<ICancellationSignal>* /*out*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onPointerDownWithContext(const PointerContext& /*context*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onPointerUpWithContext(const PointerContext& /*context*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onContextChanged(const OperationContext& /*context*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::onPointerCancelWithContext(const PointerContext& /*context*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
ndk::ScopedAStatus Session::setIgnoreDisplayTouches(bool /*shouldIgnore*/) { |
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); |
||||||
|
} |
||||||
|
|
||||||
|
} // namespace fingerprint
|
||||||
|
} // namespace biometrics
|
||||||
|
} // namespace hardware
|
||||||
|
} // namespace android
|
||||||
|
} // namespace aidl
|
@ -0,0 +1,62 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 The LineageOS Project |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#pragma once |
||||||
|
|
||||||
|
#include <aidl/android/hardware/biometrics/fingerprint/BnSession.h> |
||||||
|
|
||||||
|
using ::aidl::android::hardware::biometrics::common::ICancellationSignal; |
||||||
|
using ::aidl::android::hardware::biometrics::common::OperationContext; |
||||||
|
using ::aidl::android::hardware::biometrics::fingerprint::PointerContext; |
||||||
|
using ::aidl::android::hardware::keymaster::HardwareAuthToken; |
||||||
|
|
||||||
|
namespace aidl { |
||||||
|
namespace android { |
||||||
|
namespace hardware { |
||||||
|
namespace biometrics { |
||||||
|
namespace fingerprint { |
||||||
|
|
||||||
|
class Session : public BnSession { |
||||||
|
public: |
||||||
|
ndk::ScopedAStatus generateChallenge() override; |
||||||
|
ndk::ScopedAStatus revokeChallenge(int64_t challenge) override; |
||||||
|
ndk::ScopedAStatus enroll(const HardwareAuthToken& hat, |
||||||
|
std::shared_ptr<ICancellationSignal>* out) override; |
||||||
|
ndk::ScopedAStatus authenticate(int64_t operationId, |
||||||
|
std::shared_ptr<ICancellationSignal>* out) override; |
||||||
|
ndk::ScopedAStatus detectInteraction( |
||||||
|
std::shared_ptr<ICancellationSignal>* out) override; |
||||||
|
ndk::ScopedAStatus enumerateEnrollments() override; |
||||||
|
ndk::ScopedAStatus removeEnrollments(const std::vector<int32_t>& enrollmentIds) override; |
||||||
|
ndk::ScopedAStatus getAuthenticatorId() override; |
||||||
|
ndk::ScopedAStatus invalidateAuthenticatorId() override; |
||||||
|
ndk::ScopedAStatus resetLockout(const HardwareAuthToken& hat) override; |
||||||
|
ndk::ScopedAStatus close() override; |
||||||
|
ndk::ScopedAStatus onPointerDown(int32_t pointerId, int32_t x, int32_t y, float minor, |
||||||
|
float major) override; |
||||||
|
ndk::ScopedAStatus onPointerUp(int32_t pointerId) override; |
||||||
|
ndk::ScopedAStatus onUiReady() override; |
||||||
|
ndk::ScopedAStatus authenticateWithContext( |
||||||
|
int64_t operationId, const OperationContext& context, |
||||||
|
std::shared_ptr<ICancellationSignal>* out) override; |
||||||
|
ndk::ScopedAStatus enrollWithContext( |
||||||
|
const HardwareAuthToken& hat, const OperationContext& context, |
||||||
|
std::shared_ptr<ICancellationSignal>* out) override; |
||||||
|
ndk::ScopedAStatus detectInteractionWithContext( |
||||||
|
const OperationContext& context, |
||||||
|
std::shared_ptr<ICancellationSignal>* out) override; |
||||||
|
ndk::ScopedAStatus onPointerDownWithContext(const PointerContext& context) override; |
||||||
|
ndk::ScopedAStatus onPointerUpWithContext(const PointerContext& context) override; |
||||||
|
ndk::ScopedAStatus onContextChanged(const OperationContext& context) override; |
||||||
|
ndk::ScopedAStatus onPointerCancelWithContext(const PointerContext& context) override; |
||||||
|
ndk::ScopedAStatus setIgnoreDisplayTouches(bool shouldIgnore) override; |
||||||
|
}; |
||||||
|
|
||||||
|
} // namespace fingerprint
|
||||||
|
} // namespace biometrics
|
||||||
|
} // namespace hardware
|
||||||
|
} // namespace android
|
||||||
|
} // namespace aidl
|
@ -0,0 +1,5 @@ |
|||||||
|
service vendor.fingerprint-default /vendor/bin/hw/android.hardware.biometrics.fingerprint-service.samsung |
||||||
|
class hal |
||||||
|
user system |
||||||
|
group system input uhid |
||||||
|
shutdown critical |
@ -0,0 +1,6 @@ |
|||||||
|
<manifest version="1.0" type="device"> |
||||||
|
<hal format="aidl"> |
||||||
|
<name>android.hardware.biometrics.fingerprint</name> |
||||||
|
<fqname>IFingerprint/default</fqname> |
||||||
|
</hal> |
||||||
|
</manifest> |
@ -0,0 +1,25 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 The LineageOS Project |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "Fingerprint.h" |
||||||
|
|
||||||
|
#include <android/binder_manager.h> |
||||||
|
#include <android/binder_process.h> |
||||||
|
#include <android-base/logging.h> |
||||||
|
|
||||||
|
using ::aidl::android::hardware::biometrics::fingerprint::Fingerprint; |
||||||
|
|
||||||
|
int main() { |
||||||
|
ABinderProcess_setThreadPoolMaxThreadCount(0); |
||||||
|
std::shared_ptr<Fingerprint> fingerprint = ndk::SharedRefBase::make<Fingerprint>(); |
||||||
|
|
||||||
|
const std::string instance = std::string() + Fingerprint::descriptor + "/default"; |
||||||
|
binder_status_t status = AServiceManager_addService(fingerprint->asBinder().get(), instance.c_str()); |
||||||
|
CHECK(status == STATUS_OK); |
||||||
|
|
||||||
|
ABinderProcess_joinThreadPool(); |
||||||
|
return EXIT_FAILURE; // should not reach
|
||||||
|
} |
Loading…
Reference in new issue