aboutsummaryrefslogtreecommitdiff
path: root/touch
diff options
context:
space:
mode:
authorBruno Martins <bgcngm@gmail.com>2019-01-15 00:24:17 +0000
committerDavide Garberi <dade.garberi@gmail.com>2019-02-11 13:56:01 +0100
commitbd52fb43bebcf751dfb532c777603a9643981f97 (patch)
tree0242b6e57ebc175ec4528a5f16b5e12204ef51f6 /touch
parent5aa5d86d65d16c0af8c5b00057c9e818036194b9 (diff)
msm8996-common: Replace KeyDisabler class with Touch HAL
Change-Id: I7b87ae0ad834ba02a78696afe393d9d4f8920fbd Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'touch')
-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
5 files changed, 211 insertions, 0 deletions
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