blob: fbfa52f0e7c4d523e72f4ca6b351598396bbd715 [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;
Kevin Chyn0ec2e0c2021-03-26 18:07:24 -070025constexpr common::SensorStrength SENSOR_STRENGTH = common::SensorStrength::STRONG;
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080026constexpr int MAX_ENROLLMENTS_PER_USER = 5;
27constexpr FingerprintSensorType SENSOR_TYPE = FingerprintSensorType::REAR;
28constexpr bool SUPPORTS_NAVIGATION_GESTURES = true;
Haining Chen48618552021-03-14 17:30:09 -070029constexpr char HW_COMPONENT_ID[] = "fingerprintSensor";
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080030constexpr char HW_VERSION[] = "vendor/model/revision";
Haining Chen48618552021-03-14 17:30:09 -070031constexpr char FW_VERSION[] = "1.01";
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080032constexpr char SERIAL_NUMBER[] = "00000001";
Haining Chen48618552021-03-14 17:30:09 -070033constexpr char SW_COMPONENT_ID[] = "matchingAlgorithm";
34constexpr char SW_VERSION[] = "vendor/version/revision";
Kevin Chyn7d3fdf52020-09-15 13:01:40 -070035
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080036} // namespace
Kevin Chync306b762020-09-17 12:40:09 -070037
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080038Fingerprint::Fingerprint()
39 : mEngine(std::make_unique<FakeFingerprintEngine>()), mWorker(MAX_WORKER_QUEUE_SIZE) {}
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080040
41ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) {
Haining Chen48618552021-03-14 17:30:09 -070042 std::vector<common::ComponentInfo> componentInfo = {
43 {HW_COMPONENT_ID, HW_VERSION, FW_VERSION, SERIAL_NUMBER, "" /* softwareVersion */},
44 {SW_COMPONENT_ID, "" /* hardwareVersion */, "" /* firmwareVersion */,
45 "" /* serialNumber */, SW_VERSION}};
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080046
47 common::CommonProps commonProps = {SENSOR_ID, SENSOR_STRENGTH, MAX_ENROLLMENTS_PER_USER,
Haining Chen48618552021-03-14 17:30:09 -070048 componentInfo};
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080049
50 SensorLocation sensorLocation = {0 /* displayId */, 0 /* sensorLocationX */,
51 0 /* sensorLocationY */, 0 /* sensorRadius */};
52
53 *out = {{commonProps,
54 SENSOR_TYPE,
55 {sensorLocation},
56 SUPPORTS_NAVIGATION_GESTURES,
57 false /* supportsDetectInteraction */}};
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070058 return ndk::ScopedAStatus::ok();
59}
60
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080061ndk::ScopedAStatus Fingerprint::createSession(int32_t sensorId, int32_t userId,
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070062 const std::shared_ptr<ISessionCallback>& cb,
Ilya Matyukhin124e70a2021-02-12 13:00:15 -080063 std::shared_ptr<ISession>* out) {
Ilya Matyukhinc605e0b2021-02-25 16:04:34 -080064 CHECK(mSession == nullptr || mSession->isClosed()) << "Open session already exists!";
Ilya Matyukhin48ff8962021-02-22 13:13:13 -080065
Ilya Matyukhinc605e0b2021-02-25 16:04:34 -080066 mSession = SharedRefBase::make<Session>(sensorId, userId, cb, mEngine.get(), &mWorker);
67 *out = mSession;
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070068 return ndk::ScopedAStatus::ok();
69}
Ilya Matyukhin71005c52021-02-17 12:44:14 -080070
Ilya Matyukhina9a3c852020-08-18 03:09:41 -070071} // namespace aidl::android::hardware::biometrics::fingerprint