diff options
-rw-r--r-- | transport/Android.bp | 1 | ||||
-rw-r--r-- | transport/OmapiTransport.cpp | 9 |
2 files changed, 8 insertions, 2 deletions
diff --git a/transport/Android.bp b/transport/Android.bp index 6e24665..3c779d5 100644 --- a/transport/Android.bp +++ b/transport/Android.bp @@ -65,6 +65,7 @@ cc_library { "libcutils", "libutils", "libhardware", + "libhardware_legacy", "libhidlbase", "libbinder_ndk", ], diff --git a/transport/OmapiTransport.cpp b/transport/OmapiTransport.cpp index 78b5d1f..928c21d 100644 --- a/transport/OmapiTransport.cpp +++ b/transport/OmapiTransport.cpp @@ -47,6 +47,7 @@ #include <android-base/logging.h> #include <android-base/stringprintf.h> +#include <hardware_legacy/power.h> #include <EseTransportUtils.h> #include <IntervalTimer.h> @@ -63,6 +64,7 @@ namespace keymint::javacard { std::string const ESE_READER_PREFIX = "eSE"; constexpr const char omapiServiceName[] = "android.se.omapi.ISecureElementService/default"; +constexpr const char kChannelWakelockName[] = "nxp_keymint_channel"; class SEListener : public ::aidl::android::se::omapi::BnSecureElementListener {}; @@ -258,11 +260,14 @@ bool OmapiTransport::sendData(const vector<uint8_t>& inData, vector<uint8_t>& ou if (eSEReader != nullptr) { LOG(DEBUG) << "Sending apdu data to secure element: " << ESE_READER_PREFIX; + acquire_wake_lock(PARTIAL_WAKE_LOCK, kChannelWakelockName); #ifdef NXP_EXTNS - return internalProtectedTransmitApdu(eSEReader, std::move(apdu), output); + bool status = internalProtectedTransmitApdu(eSEReader, std::move(apdu), output); #else - return internalTransmitApdu(eSEReader, apdu, output); + bool status = internalTransmitApdu(eSEReader, apdu, output); #endif + release_wake_lock(kChannelWakelockName); + return status; } else { LOG(ERROR) << "secure element reader " << ESE_READER_PREFIX << " not found"; return false; |