| /* |
| * Copyright (C) 2020 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. |
| */ |
| |
| #include "Fingerprint.h" |
| |
| #include "Session.h" |
| |
| namespace aidl::android::hardware::biometrics::fingerprint { |
| namespace { |
| constexpr size_t MAX_WORKER_QUEUE_SIZE = 5; |
| constexpr int SENSOR_ID = 1; |
| constexpr common::SensorStrength SENSOR_STRENGTH = common::SensorStrength::STRONG; |
| constexpr int MAX_ENROLLMENTS_PER_USER = 5; |
| constexpr FingerprintSensorType SENSOR_TYPE = FingerprintSensorType::REAR; |
| constexpr bool SUPPORTS_NAVIGATION_GESTURES = true; |
| constexpr char HW_COMPONENT_ID[] = "fingerprintSensor"; |
| constexpr char HW_VERSION[] = "vendor/model/revision"; |
| constexpr char FW_VERSION[] = "1.01"; |
| constexpr char SERIAL_NUMBER[] = "00000001"; |
| constexpr char SW_COMPONENT_ID[] = "matchingAlgorithm"; |
| constexpr char SW_VERSION[] = "vendor/version/revision"; |
| |
| } // namespace |
| |
| Fingerprint::Fingerprint() |
| : mEngine(std::make_unique<FakeFingerprintEngine>()), mWorker(MAX_WORKER_QUEUE_SIZE) {} |
| |
| ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) { |
| std::vector<common::ComponentInfo> componentInfo = { |
| {HW_COMPONENT_ID, HW_VERSION, FW_VERSION, SERIAL_NUMBER, "" /* softwareVersion */}, |
| {SW_COMPONENT_ID, "" /* hardwareVersion */, "" /* firmwareVersion */, |
| "" /* serialNumber */, SW_VERSION}}; |
| |
| common::CommonProps commonProps = {SENSOR_ID, SENSOR_STRENGTH, MAX_ENROLLMENTS_PER_USER, |
| componentInfo}; |
| |
| SensorLocation sensorLocation = {0 /* displayId (not used) */, 0 /* sensorLocationX */, |
| 0 /* sensorLocationY */, 0 /* sensorRadius */, |
| "" /* display */}; |
| |
| *out = {{commonProps, |
| SENSOR_TYPE, |
| {sensorLocation}, |
| SUPPORTS_NAVIGATION_GESTURES, |
| false /* supportsDetectInteraction */}}; |
| return ndk::ScopedAStatus::ok(); |
| } |
| |
| ndk::ScopedAStatus Fingerprint::createSession(int32_t sensorId, int32_t userId, |
| const std::shared_ptr<ISessionCallback>& cb, |
| std::shared_ptr<ISession>* out) { |
| CHECK(mSession == nullptr || mSession->isClosed()) << "Open session already exists!"; |
| |
| mSession = SharedRefBase::make<Session>(sensorId, userId, cb, mEngine.get(), &mWorker); |
| *out = mSession; |
| return ndk::ScopedAStatus::ok(); |
| } |
| |
| } // namespace aidl::android::hardware::biometrics::fingerprint |