Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sagit: Replace KeyDisabler class with Touch HAL
Change-Id: I7b87ae0ad834ba02a78696afe393d9d4f8920fbd
- Loading branch information
Showing
12 changed files
with
255 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,5 @@ | ||
# IR | ||
/dev/peel_ir u:object_r:ir_device:s0 | ||
|
||
# Lineage hardware | ||
/(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.sagit u:object_r:hal_lineage_touch_default_exec:s0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
allow hal_lineage_touch_default sysfs_sectouch:dir search; | ||
allow hal_lineage_touch_default sysfs_sectouch:file rw_file_perms; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1 @@ | ||
allow system_server ir_device:chr_file rw_file_perms; | ||
|
||
# Allow KeyDisabler to work | ||
allow system_server sysfs_sectouch:dir search; | ||
allow system_server sysfs_sectouch:file rw_file_perms; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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.sagit", | ||
init_rc: ["vendor.lineage.touch@1.0-service.sagit.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", | ||
], | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
/* | ||
* 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[] = "/proc/touchpanel/capacitive_keys_enable"; | ||
constexpr const char kFpcPath[] = "/sys/devices/soc/soc:fingerprint_fpc/enable_key_events"; | ||
constexpr const char kGoodixPath[] = "/sys/devices/soc/soc:fingerprint_goodix/enable_key_events"; | ||
|
||
KeyDisabler::KeyDisabler() { | ||
mHasKeyDisabler = !access(kControlPath, F_OK) | ||
&& !access(kFpcPath, F_OK) && !access(kGoodixPath, F_OK); | ||
} | ||
|
||
// Methods from ::vendor::lineage::touch::V1_0::IKeyDisabler follow. | ||
Return<bool> KeyDisabler::isEnabled() { | ||
std::string controlBuf; | ||
std::string fpcBuf; | ||
std::string goodixBuf; | ||
|
||
if (!mHasKeyDisabler) return false; | ||
|
||
if (!android::base::ReadFileToString(kControlPath, &controlBuf)) { | ||
LOG(ERROR) << "Failed to read " << kControlPath; | ||
return false; | ||
} | ||
|
||
if (!android::base::ReadFileToString(kFpcPath, &fpcBuf)) { | ||
LOG(ERROR) << "Failed to read " << kFpcPath; | ||
return false; | ||
} | ||
|
||
if (!android::base::ReadFileToString(kGoodixPath, &goodixBuf)) { | ||
LOG(ERROR) << "Failed to read " << kGoodixPath; | ||
return false; | ||
} | ||
|
||
return std::stoi(android::base::Trim(controlBuf)) == 0 | ||
|| std::stoi(android::base::Trim(fpcBuf)) == 0 | ||
|| std::stoi(android::base::Trim(goodixBuf)) == 0; | ||
} | ||
|
||
Return<bool> KeyDisabler::setEnabled(bool enabled) { | ||
std::string buf = enabled ? "0" : "1"; | ||
|
||
if (!mHasKeyDisabler) return false; | ||
|
||
if (!android::base::WriteStringToFile(buf, kControlPath)) { | ||
LOG(ERROR) << "Failed to write " << kControlPath; | ||
return false; | ||
} | ||
|
||
if (!android::base::WriteStringToFile(buf, kFpcPath)) { | ||
LOG(ERROR) << "Failed to write " << kFpcPath; | ||
return false; | ||
} | ||
|
||
if (!android::base::WriteStringToFile(buf, kGoodixPath)) { | ||
LOG(ERROR) << "Failed to write " << kGoodixPath; | ||
return false; | ||
} | ||
|
||
return true; | ||
} | ||
|
||
} // namespace implementation | ||
} // namespace V1_0 | ||
} // namespace touch | ||
} // namespace lineage | ||
} // namespace vendor |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* | ||
* 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.sagit" | ||
|
||
#include <android-base/logging.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<IKeyDisabler> 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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
service vendor.touch-hal-1-0 /vendor/bin/hw/vendor.lineage.touch@1.0-service.sagit | ||
class hal | ||
user system | ||
group system |