blob: 802808911cf2075471ba49b24458d3980ec57b47 [file] [log] [blame]
Ilya Matyukhina9a3c852020-08-18 03:09:41 -07001/*
2 * Copyright (C) 2020 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#include "Fingerprint.h"
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080018
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070019#include "Session.h"
20
21namespace aidl::android::hardware::biometrics::fingerprint {
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080022namespace {
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080023constexpr size_t MAX_WORKER_QUEUE_SIZE = 5;
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080024constexpr int SENSOR_ID = 1;
25constexpr common::SensorStrength SENSOR_STRENGTH = common::SensorStrength::STRONG;
26constexpr int MAX_ENROLLMENTS_PER_USER = 5;
27constexpr FingerprintSensorType SENSOR_TYPE = FingerprintSensorType::REAR;
28constexpr bool SUPPORTS_NAVIGATION_GESTURES = true;
29constexpr char HW_DEVICE_NAME[] = "fingerprintSensor";
30constexpr char HW_VERSION[] = "vendor/model/revision";
31constexpr char FW_VERSION[] = "1.01";
32constexpr char SERIAL_NUMBER[] = "00000001";
Kevin Chyn7d3fdf52020-09-15 13:01:40 -070033
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080034} // namespace
Kevin Chync306b762020-09-17 12:40:09 -070035
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080036Fingerprint::Fingerprint()
37 : mEngine(std::make_unique<FakeFingerprintEngine>()), mWorker(MAX_WORKER_QUEUE_SIZE) {}
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080038
39ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) {
40 std::vector<common::HardwareInfo> hardwareInfos = {
41 {HW_DEVICE_NAME, HW_VERSION, FW_VERSION, SERIAL_NUMBER}};
42
43 common::CommonProps commonProps = {SENSOR_ID, SENSOR_STRENGTH, MAX_ENROLLMENTS_PER_USER,
44 hardwareInfos};
45
46 SensorLocation sensorLocation = {0 /* displayId */, 0 /* sensorLocationX */,
47 0 /* sensorLocationY */, 0 /* sensorRadius */};
48
49 *out = {{commonProps,
50 SENSOR_TYPE,
51 {sensorLocation},
52 SUPPORTS_NAVIGATION_GESTURES,
53 false /* supportsDetectInteraction */}};
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070054 return ndk::ScopedAStatus::ok();
55}
56
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080057ndk::ScopedAStatus Fingerprint::createSession(int32_t sensorId, int32_t userId,
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070058 const std::shared_ptr<ISessionCallback>& cb,
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080059 std::shared_ptr<ISession>* out) {
Ilya Matyukhinc605e0b2021-02-25 16:04:34 -080060 CHECK(mSession == nullptr || mSession->isClosed()) << "Open session already exists!";
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080061
Ilya Matyukhinc605e0b2021-02-25 16:04:34 -080062 mSession = SharedRefBase::make<Session>(sensorId, userId, cb, mEngine.get(), &mWorker);
63 *out = mSession;
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070064 return ndk::ScopedAStatus::ok();
65}
Ilya Matyukhin71005c52021-02-17 12:44:14 -080066
67ndk::ScopedAStatus Fingerprint::reset() {
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080068 // Crash. The system will start a fresh instance of the HAL.
69 CHECK(false) << "Unable to reset. Crashing.";
Ilya Matyukhin71005c52021-02-17 12:44:14 -080070 return ndk::ScopedAStatus::ok();
71}
72
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070073} // namespace aidl::android::hardware::biometrics::fingerprint