aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BoardConfigCommon.mk5
-rw-r--r--lineagehw/src/org/lineageos/hardware/KeyDisabler.java45
-rw-r--r--manifest.xml9
-rwxr-xr-xmsm8996.mk4
-rw-r--r--sepolicy/file_contexts1
-rw-r--r--touch/Android.bp32
-rw-r--r--touch/KeyDisabler.cpp64
-rw-r--r--touch/KeyDisabler.h48
-rw-r--r--touch/service.cpp63
-rw-r--r--touch/vendor.lineage.touch@1.0-service.zuk_8996.rc4
10 files changed, 226 insertions, 49 deletions
diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk
index 4977751..a3f3960 100644
--- a/BoardConfigCommon.mk
+++ b/BoardConfigCommon.mk
@@ -1,6 +1,6 @@
#
# Copyright (C) 2016 The CyanogenMod Project
-# Copyright (C) 2017-2018 The LineageOS Project
+# Copyright (C) 2017-2019 The LineageOS Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -161,9 +161,6 @@ DEVICE_FRAMEWORK_MANIFEST_FILE := $(VENDOR_PATH)/framework_manifest.xml
DEVICE_MANIFEST_FILE := $(VENDOR_PATH)/manifest.xml
DEVICE_MATRIX_FILE := $(VENDOR_PATH)/compatibility_matrix.xml
-# Lineage Hardware
-JAVA_SOURCE_OVERLAYS := org.lineageos.hardware|$(VENDOR_PATH)/lineagehw|**/*.java
-
# Partitions
BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
diff --git a/lineagehw/src/org/lineageos/hardware/KeyDisabler.java b/lineagehw/src/org/lineageos/hardware/KeyDisabler.java
deleted file mode 100644
index 603a280..0000000
--- a/lineagehw/src/org/lineageos/hardware/KeyDisabler.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2014 The CyanogenMod 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.
- */
-
-package org.lineageos.hardware;
-
-import org.lineageos.internal.util.FileUtils;
-
-/*
- * Disable capacitive keys
- *
- * This is intended for use on devices in which the capacitive keys
- * can be fully disabled for replacement with a soft navbar. You
- * really should not be using this on a device with mechanical or
- * otherwise visible-when-inactive keys
- */
-
-public class KeyDisabler {
-
- private static String CONTROL_PATH = "/sys/devices/soc/soc:fpc1020/utouch_disable";
-
- public static boolean isSupported() {
- return FileUtils.isFileWritable(CONTROL_PATH);
- }
-
- public static boolean isActive() {
- return FileUtils.readOneLine(CONTROL_PATH).equals("1");
- }
-
- public static boolean setActive(boolean state) {
- return FileUtils.writeLine(CONTROL_PATH, (state ? "1" : "0"));
- }
-}
diff --git a/manifest.xml b/manifest.xml
index ae37edd..b2d6aed 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -465,6 +465,15 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</interface>
</hal>
<hal format="hidl">
+ <name>vendor.lineage.touch</name>
+ <transport>hwbinder</transport>
+ <version>1.0</version>
+ <interface>
+ <name>IKeyDisabler</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl">
<name>vendor.lineage.trust</name>
<transport>hwbinder</transport>
<version>1.0</version>
diff --git a/msm8996.mk b/msm8996.mk
index ac25352..e4da16b 100755
--- a/msm8996.mk
+++ b/msm8996.mk
@@ -357,6 +357,10 @@ PRODUCT_BOOT_JARS += \
PRODUCT_PACKAGES += \
textclassifier.bundle1
+# Touch HAL
+PRODUCT_PACKAGES += \
+ vendor.lineage.touch@1.0-service.zuk_8996
+
# Trust HAL
PRODUCT_PACKAGES += \
vendor.lineage.trust@1.0-service
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 9e989fd..7112268 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -18,6 +18,7 @@
/vendor/bin/hw/android\.hardware\.light@2\.0-service\.zuk_8996 u:object_r:hal_light_default_exec:s0
/vendor/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.0-service\.zuk u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.drm@1\.1-service\.widevine u:object_r:hal_drm_widevine_exec:s0
+/(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.zuk_8996 u:object_r:hal_lineage_touch_default_exec:s0
# Misc files on /vendor
/vendor/usr/idc(/.*)? u:object_r:idc_file:s0
diff --git a/touch/Android.bp b/touch/Android.bp
new file mode 100644
index 0000000..d11d6d8
--- /dev/null
+++ b/touch/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2019 The LineageOS 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.
+
+cc_binary {
+ name: "vendor.lineage.touch@1.0-service.zuk_8996",
+ init_rc: ["vendor.lineage.touch@1.0-service.zuk_8996.rc"],
+ defaults: ["hidl_defaults"],
+ relative_install_path: "hw",
+ vendor: true,
+ srcs: [
+ "KeyDisabler.cpp",
+ "service.cpp"
+ ],
+ shared_libs: [
+ "libbase",
+ "libhidlbase",
+ "libhidltransport",
+ "libutils",
+ "vendor.lineage.touch@1.0",
+ ],
+}
diff --git a/touch/KeyDisabler.cpp b/touch/KeyDisabler.cpp
new file mode 100644
index 0000000..c5acdef
--- /dev/null
+++ b/touch/KeyDisabler.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 The LineageOS 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 <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/strings.h>
+
+#include "KeyDisabler.h"
+
+namespace vendor {
+namespace lineage {
+namespace touch {
+namespace V1_0 {
+namespace implementation {
+
+constexpr const char kControlPath[] = "/sys/devices/soc/soc:fpc1020/utouch_disable";
+
+KeyDisabler::KeyDisabler() {
+ mHasKeyDisabler = !access(kControlPath, F_OK);
+}
+
+// Methods from ::vendor::lineage::touch::V1_0::IKeyDisabler follow.
+Return<bool> KeyDisabler::isEnabled() {
+ std::string buf;
+
+ if (!mHasKeyDisabler) return false;
+
+ if (!android::base::ReadFileToString(kControlPath, &buf, true)) {
+ LOG(ERROR) << "Failed to read " << kControlPath;
+ return false;
+ }
+
+ return std::stoi(android::base::Trim(buf)) == 1;
+}
+
+Return<bool> KeyDisabler::setEnabled(bool enabled) {
+ if (!mHasKeyDisabler) return false;
+
+ if (!android::base::WriteStringToFile((enabled ? "1" : "0"), kControlPath, true)) {
+ LOG(ERROR) << "Failed to write " << kControlPath;
+ return false;
+ }
+
+ return true;
+}
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace touch
+} // namespace lineage
+} // namespace vendor
diff --git a/touch/KeyDisabler.h b/touch/KeyDisabler.h
new file mode 100644
index 0000000..f7a18fa
--- /dev/null
+++ b/touch/KeyDisabler.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2019 The LineageOS 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.
+ */
+
+#ifndef VENDOR_LINEAGE_TOUCH_V1_0_KEYDISABLER_H
+#define VENDOR_LINEAGE_TOUCH_V1_0_KEYDISABLER_H
+
+#include <vendor/lineage/touch/1.0/IKeyDisabler.h>
+
+namespace vendor {
+namespace lineage {
+namespace touch {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::Return;
+
+class KeyDisabler : public IKeyDisabler {
+ public:
+ KeyDisabler();
+
+ // Methods from ::vendor::lineage::touch::V1_0::IKeyDisabler follow.
+ Return<bool> isEnabled() override;
+ Return<bool> setEnabled(bool enabled) override;
+
+ private:
+ bool mHasKeyDisabler;
+};
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace touch
+} // namespace lineage
+} // namespace vendor
+
+#endif // VENDOR_LINEAGE_TOUCH_V1_0_KEYDISABLER_H
diff --git a/touch/service.cpp b/touch/service.cpp
new file mode 100644
index 0000000..0fc2268
--- /dev/null
+++ b/touch/service.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2019 The LineageOS 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.
+ */
+
+#define LOG_TAG "vendor.lineage.touch@1.0-service.zuk_8996"
+
+#include <android-base/logging.h>
+#include <binder/ProcessState.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include "KeyDisabler.h"
+
+using android::OK;
+using android::sp;
+using android::status_t;
+using android::hardware::configureRpcThreadpool;
+using android::hardware::joinRpcThreadpool;
+
+using ::vendor::lineage::touch::V1_0::IKeyDisabler;
+using ::vendor::lineage::touch::V1_0::implementation::KeyDisabler;
+
+int main() {
+ sp<KeyDisabler> keyDisabler;
+ status_t status;
+
+ LOG(INFO) << "Touch HAL service is starting.";
+
+ keyDisabler = new KeyDisabler();
+ if (keyDisabler == nullptr) {
+ LOG(ERROR) << "Can not create an instance of Touch HAL KeyDisabler Iface, exiting.";
+ goto shutdown;
+ }
+
+ configureRpcThreadpool(1, true /*callerWillJoin*/);
+
+ status = keyDisabler->registerAsService();
+ if (status != OK) {
+ LOG(ERROR) << "Could not register service for Touch HAL KeyDisabler Iface ("
+ << status << ")";
+ goto shutdown;
+ }
+
+ LOG(INFO) << "Touch HAL service is ready.";
+ joinRpcThreadpool();
+ // Should not pass this line
+
+shutdown:
+ // In normal operation, we don't expect the thread pool to shutdown
+ LOG(ERROR) << "Touch HAL service is shutting down.";
+ return 1;
+}
diff --git a/touch/vendor.lineage.touch@1.0-service.zuk_8996.rc b/touch/vendor.lineage.touch@1.0-service.zuk_8996.rc
new file mode 100644
index 0000000..f3eaa8d
--- /dev/null
+++ b/touch/vendor.lineage.touch@1.0-service.zuk_8996.rc
@@ -0,0 +1,4 @@
+service vendor.touch-hal-1-0-zuk_8996 /vendor/bin/hw/vendor.lineage.touch@1.0-service.zuk_8996
+ class hal
+ user system
+ group system