From d39e501b8002653d3dec90b34febcbe61ceadc03 Mon Sep 17 00:00:00 2001 From: Cosmin Tanislav Date: Wed, 21 Sep 2022 10:09:08 +0530 Subject: [PATCH] berlna: sensors: Implement double tap sensor Change-Id: I6c217c994d6e4d5ae062a31a44fffc9f097a7f6f --- .../berlna/Frameworks/res/values/config.xml | 3 +++ rootdir/etc/init/hw/init.mmi.overlay.rc | 5 +++++ sensors/Sensor.h | 14 ++++++++++++++ sensors/SensorsSubHal.cpp | 4 +++- 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/resource-overlay/berlna/Frameworks/res/values/config.xml b/resource-overlay/berlna/Frameworks/res/values/config.xml index 064b836..4c16669 100644 --- a/resource-overlay/berlna/Frameworks/res/values/config.xml +++ b/resource-overlay/berlna/Frameworks/res/values/config.xml @@ -305,4 +305,7 @@ 2 3 + + + org.lineageos.sensor.double_tap diff --git a/rootdir/etc/init/hw/init.mmi.overlay.rc b/rootdir/etc/init/hw/init.mmi.overlay.rc index 110ac18..73735e4 100644 --- a/rootdir/etc/init/hw/init.mmi.overlay.rc +++ b/rootdir/etc/init/hw/init.mmi.overlay.rc @@ -25,6 +25,11 @@ on fs # Goodix fingerprint sensor GF3626 reuses the driver "goodix_fod_mmi.ko" insmod /vendor/lib/modules/goodix_fod_mmi.ko +on post-fs + # Sensors + chown system system /sys/devices/platform/soc/a94000.spi/spi_master/spi0/spi0.0/touchscreen/NVT-ts/double_tap_enabled + chown system system /sys/devices/platform/soc/a94000.spi/spi_master/spi0/spi0.0/touchscreen/NVT-ts/double_tap_pressed + on post-fs-data mkdir /mnt/vendor/persist/tof 0755 vendor_tcmd camera chown vendor_tcmd camera /mnt/vendor/persist/tof/refspad_cal diff --git a/sensors/Sensor.h b/sensors/Sensor.h index f6fe7a5..1e66620 100644 --- a/sensors/Sensor.h +++ b/sensors/Sensor.h @@ -120,6 +120,20 @@ class SysfsPollingOneShotSensor : public OneShotSensor { int mPollFd; }; +const std::string kTsPath = "/sys/devices/platform/soc/a94000.spi/spi_master/spi0/spi0.0/touchscreen/NVT-ts/"; + +const std::string kTsDoubleTapPressedPath = kTsPath + "double_tap_pressed"; +const std::string kTsDoubleTapEnabledPath = kTsPath + "double_tap_enabled"; + +class DoubleTapSensor : public SysfsPollingOneShotSensor { + public: + DoubleTapSensor(int32_t sensorHandle, ISensorsEventCallback* callback) + : SysfsPollingOneShotSensor( + sensorHandle, callback, kTsDoubleTapPressedPath, kTsDoubleTapEnabledPath, + "Double Tap Sensor", "org.lineageos.sensor.double_tap", + static_cast(static_cast(SensorType::DEVICE_PRIVATE_BASE) + 1)) {} +}; + } // namespace implementation } // namespace subhal } // namespace V2_1 diff --git a/sensors/SensorsSubHal.cpp b/sensors/SensorsSubHal.cpp index 6cbcb56..9281bfa 100644 --- a/sensors/SensorsSubHal.cpp +++ b/sensors/SensorsSubHal.cpp @@ -32,7 +32,9 @@ namespace implementation { using ::android::hardware::Void; using ::android::hardware::sensors::V2_0::implementation::ScopedWakelock; -SensorsSubHal::SensorsSubHal() : mCallback(nullptr), mNextHandle(1) {} +SensorsSubHal::SensorsSubHal() : mCallback(nullptr), mNextHandle(1) { + AddSensor(); +} Return SensorsSubHal::getSensorsList_2_1(ISensors::getSensorsList_2_1_cb _hidl_cb) { std::vector sensors;