Loading biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/virtualhal/IVirtualHal.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -311,7 +311,7 @@ interface IVirtualHal { void setSensorStrength(in SensorStrength strength); void setMaxEnrollmentPerUser(in int max); void setSensorLocation(in SensorLocation loc); void setNavigationGuesture(in boolean v); void setNavigationGesture(in boolean v); void setDetectInteraction(in boolean v); void setDisplayTouch(in boolean v); void setControlIllumination(in boolean v); Loading biometrics/fingerprint/aidl/default/FakeFingerprintEngine.cpp +45 −26 Original line number Diff line number Diff line Loading @@ -414,13 +414,22 @@ ndk::ScopedAStatus FakeFingerprintEngine::onUiReadyImpl() { return ndk::ScopedAStatus::ok(); } bool FakeFingerprintEngine::getSensorLocationConfig(SensorLocation& out) { auto loc = Fingerprint::cfg().get<std::string>("sensor_location"); bool FakeFingerprintEngine::getSensorLocationConfig(std::vector<SensorLocation>& out) { auto locStr = Fingerprint::cfg().get<std::string>("sensor_location"); auto isValidStr = false; // sensor_location format: x:y:r:d,x:y:r:d,... // x: x location in pixel, y: y location in pixel, r: radus in pixel, d:display in string auto locations = Util::split(locStr, ","); for (int i = 0; i < locations.size(); i++) { auto loc = locations[i]; // expect loc in the format: x:y:r or x:y:d:r auto dim = Util::split(loc, ":"); if (dim.size() < 3 or dim.size() > 4) { if (dim.size() < 3) { if (!loc.empty()) LOG(WARNING) << "Invalid sensor location input (x:y:radius):" + loc; out.clear(); return false; } else { int32_t x, y, r; Loading @@ -429,26 +438,36 @@ bool FakeFingerprintEngine::getSensorLocationConfig(SensorLocation& out) { isValidStr = ParseInt(dim[0], &x) && ParseInt(dim[1], &y) && ParseInt(dim[2], &r); } if (dim.size() >= 4) { d = dim[3]; for (int i = 3; i < dim.size(); i++) { if (i > 3) d += ':'; d += dim[i]; } } if (isValidStr) { out.push_back(SensorLocation{.sensorLocationX = x, .sensorLocationY = y, .sensorRadius = r, .display = d}); } if (isValidStr) out = {.sensorLocationX = x, .sensorLocationY = y, .sensorRadius = r, .display = d}; return isValidStr; } } SensorLocation FakeFingerprintEngine::getSensorLocation() { SensorLocation location; if (getSensorLocationConfig(location)) { return location; LOG(INFO) << "getSensorLocationConfig: isValidStr=" << isValidStr << " locStr=" << locStr; if (isValidStr) { for (auto loc : out) { LOG(INFO) << loc.toString(); } } else { return defaultSensorLocation(); out.clear(); } return isValidStr; } SensorLocation FakeFingerprintEngine::defaultSensorLocation() { return SensorLocation(); void FakeFingerprintEngine::getSensorLocation(std::vector<SensorLocation>& location) { if (!getSensorLocationConfig(location)) { getDefaultSensorLocation(location); } } std::pair<AcquiredInfo, int32_t> FakeFingerprintEngine::convertAcquiredInfo(int32_t code) { Loading biometrics/fingerprint/aidl/default/FakeFingerprintEngineSide.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -26,12 +26,17 @@ using namespace ::android::fingerprint::virt; namespace aidl::android::hardware::biometrics::fingerprint { SensorLocation FakeFingerprintEngineSide::defaultLocation[] = { // default to CF display {.sensorLocationX = 0, 200, 90, "local:4619827353912518656"}}; FakeFingerprintEngineSide::FakeFingerprintEngineSide() : FakeFingerprintEngine() {} SensorLocation FakeFingerprintEngineSide::defaultSensorLocation() { return SensorLocation{.sensorLocationX = defaultSensorLocationX, .sensorLocationY = defaultSensorLocationY, .sensorRadius = defaultSensorRadius}; void FakeFingerprintEngineSide::getDefaultSensorLocation( std::vector<SensorLocation>& sensorLocation) { for (int i = 0; i < (sizeof(defaultLocation) / sizeof(defaultLocation[0])); i++) { sensorLocation.push_back(defaultLocation[i]); } } } // namespace aidl::android::hardware::biometrics::fingerprint biometrics/fingerprint/aidl/default/FakeFingerprintEngineUdfps.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -34,10 +34,14 @@ namespace aidl::android::hardware::biometrics::fingerprint { FakeFingerprintEngineUdfps::FakeFingerprintEngineUdfps() : FakeFingerprintEngine(), mPointerDownTime(0), mUiReadyTime(0) {} SensorLocation FakeFingerprintEngineUdfps::defaultSensorLocation() { return SensorLocation{.sensorLocationX = defaultSensorLocationX, void FakeFingerprintEngineUdfps::getDefaultSensorLocation( std::vector<SensorLocation>& sensorLocation) { sensorLocation.clear(); sensorLocation.push_back(SensorLocation{ .sensorLocationX = defaultSensorLocationX, .sensorLocationY = defaultSensorLocationY, .sensorRadius = defaultSensorRadius}; .sensorRadius = defaultSensorRadius, }); } ndk::ScopedAStatus FakeFingerprintEngineUdfps::onPointerDownImpl(int32_t /*pointerId*/, Loading biometrics/fingerprint/aidl/default/Fingerprint.cpp +10 −14 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) { auto sensorId = Fingerprint::cfg().get<std::int32_t>("sensor_id"); auto sensorStrength = Fingerprint::cfg().get<std::int32_t>("sensor_strength"); auto maxEnrollments = Fingerprint::cfg().get<std::int32_t>("max_enrollments"); auto navigationGuesture = Fingerprint::cfg().get<bool>("navigation_guesture"); auto navigationGesture = Fingerprint::cfg().get<bool>("navigation_gesture"); auto detectInteraction = Fingerprint::cfg().get<bool>("detect_interaction"); auto displayTouch = Fingerprint::cfg().get<bool>("display_touch"); auto controlIllumination = Fingerprint::cfg().get<bool>("control_illumination"); Loading @@ -82,19 +82,15 @@ ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) { common::CommonProps commonProps = {sensorId, (common::SensorStrength)sensorStrength, maxEnrollments, componentInfo}; SensorLocation sensorLocation = mEngine->getSensorLocation(); LOG(INFO) << "sensor type:" << ::android::internal::ToString(mSensorType) << " location:" << sensorLocation.toString(); std::vector<SensorLocation> sensorLocation; mEngine->getSensorLocation(sensorLocation); LOG(INFO) << "sensor type:" << ::android::internal::ToString(mSensorType); for (auto location : sensorLocation) { LOG(INFO) << "sensor location: " << location.toString(); } *out = {{commonProps, mSensorType, {sensorLocation}, navigationGuesture, detectInteraction, displayTouch, controlIllumination, std::nullopt}}; *out = {{commonProps, mSensorType, sensorLocation, navigationGesture, detectInteraction, displayTouch, controlIllumination, std::nullopt}}; return ndk::ScopedAStatus::ok(); } Loading Loading @@ -204,7 +200,7 @@ void Fingerprint::clearConfigSysprop() { RESET_CONFIG_O(sensor_id); RESET_CONFIG_O(sensor_strength); RESET_CONFIG_O(max_enrollments); RESET_CONFIG_O(navigation_guesture); RESET_CONFIG_O(navigation_gesture); RESET_CONFIG_O(detect_interaction); RESET_CONFIG_O(display_touch); RESET_CONFIG_O(control_illumination); Loading Loading
biometrics/fingerprint/aidl/android/hardware/biometrics/fingerprint/virtualhal/IVirtualHal.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -311,7 +311,7 @@ interface IVirtualHal { void setSensorStrength(in SensorStrength strength); void setMaxEnrollmentPerUser(in int max); void setSensorLocation(in SensorLocation loc); void setNavigationGuesture(in boolean v); void setNavigationGesture(in boolean v); void setDetectInteraction(in boolean v); void setDisplayTouch(in boolean v); void setControlIllumination(in boolean v); Loading
biometrics/fingerprint/aidl/default/FakeFingerprintEngine.cpp +45 −26 Original line number Diff line number Diff line Loading @@ -414,13 +414,22 @@ ndk::ScopedAStatus FakeFingerprintEngine::onUiReadyImpl() { return ndk::ScopedAStatus::ok(); } bool FakeFingerprintEngine::getSensorLocationConfig(SensorLocation& out) { auto loc = Fingerprint::cfg().get<std::string>("sensor_location"); bool FakeFingerprintEngine::getSensorLocationConfig(std::vector<SensorLocation>& out) { auto locStr = Fingerprint::cfg().get<std::string>("sensor_location"); auto isValidStr = false; // sensor_location format: x:y:r:d,x:y:r:d,... // x: x location in pixel, y: y location in pixel, r: radus in pixel, d:display in string auto locations = Util::split(locStr, ","); for (int i = 0; i < locations.size(); i++) { auto loc = locations[i]; // expect loc in the format: x:y:r or x:y:d:r auto dim = Util::split(loc, ":"); if (dim.size() < 3 or dim.size() > 4) { if (dim.size() < 3) { if (!loc.empty()) LOG(WARNING) << "Invalid sensor location input (x:y:radius):" + loc; out.clear(); return false; } else { int32_t x, y, r; Loading @@ -429,26 +438,36 @@ bool FakeFingerprintEngine::getSensorLocationConfig(SensorLocation& out) { isValidStr = ParseInt(dim[0], &x) && ParseInt(dim[1], &y) && ParseInt(dim[2], &r); } if (dim.size() >= 4) { d = dim[3]; for (int i = 3; i < dim.size(); i++) { if (i > 3) d += ':'; d += dim[i]; } } if (isValidStr) { out.push_back(SensorLocation{.sensorLocationX = x, .sensorLocationY = y, .sensorRadius = r, .display = d}); } if (isValidStr) out = {.sensorLocationX = x, .sensorLocationY = y, .sensorRadius = r, .display = d}; return isValidStr; } } SensorLocation FakeFingerprintEngine::getSensorLocation() { SensorLocation location; if (getSensorLocationConfig(location)) { return location; LOG(INFO) << "getSensorLocationConfig: isValidStr=" << isValidStr << " locStr=" << locStr; if (isValidStr) { for (auto loc : out) { LOG(INFO) << loc.toString(); } } else { return defaultSensorLocation(); out.clear(); } return isValidStr; } SensorLocation FakeFingerprintEngine::defaultSensorLocation() { return SensorLocation(); void FakeFingerprintEngine::getSensorLocation(std::vector<SensorLocation>& location) { if (!getSensorLocationConfig(location)) { getDefaultSensorLocation(location); } } std::pair<AcquiredInfo, int32_t> FakeFingerprintEngine::convertAcquiredInfo(int32_t code) { Loading
biometrics/fingerprint/aidl/default/FakeFingerprintEngineSide.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -26,12 +26,17 @@ using namespace ::android::fingerprint::virt; namespace aidl::android::hardware::biometrics::fingerprint { SensorLocation FakeFingerprintEngineSide::defaultLocation[] = { // default to CF display {.sensorLocationX = 0, 200, 90, "local:4619827353912518656"}}; FakeFingerprintEngineSide::FakeFingerprintEngineSide() : FakeFingerprintEngine() {} SensorLocation FakeFingerprintEngineSide::defaultSensorLocation() { return SensorLocation{.sensorLocationX = defaultSensorLocationX, .sensorLocationY = defaultSensorLocationY, .sensorRadius = defaultSensorRadius}; void FakeFingerprintEngineSide::getDefaultSensorLocation( std::vector<SensorLocation>& sensorLocation) { for (int i = 0; i < (sizeof(defaultLocation) / sizeof(defaultLocation[0])); i++) { sensorLocation.push_back(defaultLocation[i]); } } } // namespace aidl::android::hardware::biometrics::fingerprint
biometrics/fingerprint/aidl/default/FakeFingerprintEngineUdfps.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -34,10 +34,14 @@ namespace aidl::android::hardware::biometrics::fingerprint { FakeFingerprintEngineUdfps::FakeFingerprintEngineUdfps() : FakeFingerprintEngine(), mPointerDownTime(0), mUiReadyTime(0) {} SensorLocation FakeFingerprintEngineUdfps::defaultSensorLocation() { return SensorLocation{.sensorLocationX = defaultSensorLocationX, void FakeFingerprintEngineUdfps::getDefaultSensorLocation( std::vector<SensorLocation>& sensorLocation) { sensorLocation.clear(); sensorLocation.push_back(SensorLocation{ .sensorLocationX = defaultSensorLocationX, .sensorLocationY = defaultSensorLocationY, .sensorRadius = defaultSensorRadius}; .sensorRadius = defaultSensorRadius, }); } ndk::ScopedAStatus FakeFingerprintEngineUdfps::onPointerDownImpl(int32_t /*pointerId*/, Loading
biometrics/fingerprint/aidl/default/Fingerprint.cpp +10 −14 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) { auto sensorId = Fingerprint::cfg().get<std::int32_t>("sensor_id"); auto sensorStrength = Fingerprint::cfg().get<std::int32_t>("sensor_strength"); auto maxEnrollments = Fingerprint::cfg().get<std::int32_t>("max_enrollments"); auto navigationGuesture = Fingerprint::cfg().get<bool>("navigation_guesture"); auto navigationGesture = Fingerprint::cfg().get<bool>("navigation_gesture"); auto detectInteraction = Fingerprint::cfg().get<bool>("detect_interaction"); auto displayTouch = Fingerprint::cfg().get<bool>("display_touch"); auto controlIllumination = Fingerprint::cfg().get<bool>("control_illumination"); Loading @@ -82,19 +82,15 @@ ndk::ScopedAStatus Fingerprint::getSensorProps(std::vector<SensorProps>* out) { common::CommonProps commonProps = {sensorId, (common::SensorStrength)sensorStrength, maxEnrollments, componentInfo}; SensorLocation sensorLocation = mEngine->getSensorLocation(); LOG(INFO) << "sensor type:" << ::android::internal::ToString(mSensorType) << " location:" << sensorLocation.toString(); std::vector<SensorLocation> sensorLocation; mEngine->getSensorLocation(sensorLocation); LOG(INFO) << "sensor type:" << ::android::internal::ToString(mSensorType); for (auto location : sensorLocation) { LOG(INFO) << "sensor location: " << location.toString(); } *out = {{commonProps, mSensorType, {sensorLocation}, navigationGuesture, detectInteraction, displayTouch, controlIllumination, std::nullopt}}; *out = {{commonProps, mSensorType, sensorLocation, navigationGesture, detectInteraction, displayTouch, controlIllumination, std::nullopt}}; return ndk::ScopedAStatus::ok(); } Loading Loading @@ -204,7 +200,7 @@ void Fingerprint::clearConfigSysprop() { RESET_CONFIG_O(sensor_id); RESET_CONFIG_O(sensor_strength); RESET_CONFIG_O(max_enrollments); RESET_CONFIG_O(navigation_guesture); RESET_CONFIG_O(navigation_gesture); RESET_CONFIG_O(detect_interaction); RESET_CONFIG_O(display_touch); RESET_CONFIG_O(control_illumination); Loading