blob: c5e93e72aac32f5b7e1bf39eb9d2fb6c487afe33 [file] [log] [blame]
Jeff Pu63f33c72022-07-28 16:06:23 -04001/*
2 * Copyright (C) 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18#include "FakeFingerprintEngine.h"
19
20using namespace ::aidl::android::hardware::biometrics::common;
21
22namespace aidl::android::hardware::biometrics::fingerprint {
23
24// A fake engine that is backed by system properties instead of hardware.
25class FakeFingerprintEngineUdfps : public FakeFingerprintEngine {
26 public:
27 static constexpr int32_t defaultSensorLocationX = 400;
28 static constexpr int32_t defaultSensorLocationY = 1600;
29 static constexpr int32_t defaultSensorRadius = 150;
30
Jeff Pu52653182022-10-12 16:27:23 -040031 static constexpr int32_t uiReadyTimeoutInMs = 5000;
32
33 FakeFingerprintEngineUdfps();
Jeff Pu63f33c72022-07-28 16:06:23 -040034 ~FakeFingerprintEngineUdfps() {}
35
Jeff Pu52653182022-10-12 16:27:23 -040036 ndk::ScopedAStatus onPointerDownImpl(int32_t pointerId, int32_t x, int32_t y, float minor,
37 float major) override;
Jeff Pu63f33c72022-07-28 16:06:23 -040038
Jeff Pu52653182022-10-12 16:27:23 -040039 ndk::ScopedAStatus onPointerUpImpl(int32_t pointerId) override;
Jeff Pu63f33c72022-07-28 16:06:23 -040040
Jeff Pu52653182022-10-12 16:27:23 -040041 ndk::ScopedAStatus onUiReadyImpl() override;
Jeff Pu63f33c72022-07-28 16:06:23 -040042
Jeff Pu52653182022-10-12 16:27:23 -040043 SensorLocation defaultSensorLocation() override;
44
45 void enrollImpl(ISessionCallback* cb, const keymaster::HardwareAuthToken& hat,
46 const std::future<void>& cancel);
47 void authenticateImpl(ISessionCallback* cb, int64_t operationId,
48 const std::future<void>& cancel);
49 void detectInteractionImpl(ISessionCallback* cb, const std::future<void>& cancel);
50
51 enum class WorkMode : int8_t { kIdle = 0, kAuthenticate, kEnroll, kDetectInteract };
52
53 WorkMode getWorkMode() { return mWorkMode; }
54
55 std::string toString() const {
56 std::ostringstream os;
57 os << FakeFingerprintEngine::toString();
58 os << "----- FakeFingerprintEngineUdfps -----" << std::endl;
59 os << "mWorkMode:" << (int)mWorkMode;
60 os << ", mUiReadyTime:" << mUiReadyTime;
61 os << ", mPointerDownTime:" << mPointerDownTime << std::endl;
62 return os.str();
63 }
64
65 private:
66 void onAuthenticateFingerDown();
67 void onEnrollFingerDown();
68 void onDetectInteractFingerDown();
69 void fingerDownAction();
70 void updateContext(WorkMode mode, ISessionCallback* cb, std::future<void>& cancel,
71 int64_t operationId, const keymaster::HardwareAuthToken& hat);
72
73 WorkMode mWorkMode;
74 ISessionCallback* mCb;
75 keymaster::HardwareAuthToken mHat;
76 std::vector<std::future<void>> mCancelVec;
77 int64_t mOperationId;
78 int64_t mPointerDownTime;
79 int64_t mUiReadyTime;
Jeff Pu63f33c72022-07-28 16:06:23 -040080};
81
82} // namespace aidl::android::hardware::biometrics::fingerprint