diff options
author | Simon Shields <simon@lineageos.org> | 2017-02-16 09:45:31 +1100 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-12-11 20:10:54 +0200 |
commit | 80440e68494f7d6d54af0fd87b02d71363240ccf (patch) | |
tree | f799daceaaa7f9e2e1cc35c02247285378996aea | |
parent | 4f341b4ba347dab18ba6b135cc1d89e8fb813e51 (diff) | |
download | android_packages_apps_Nfc-80440e68494f7d6d54af0fd87b02d71363240ccf.tar.gz android_packages_apps_Nfc-80440e68494f7d6d54af0fd87b02d71363240ccf.tar.bz2 android_packages_apps_Nfc-80440e68494f7d6d54af0fd87b02d71363240ccf.zip |
NfcNci: make T3T/Nfc-F HCE optionalstaging/lineage-17.0_merge-android-10.0.0_r9
Some devices (bacon, klte) don't work with T3T HCE, and attempting to
enable it will instead completely break HCE. Allow these devices to work
around the issue by disabling NFC-F HCE.
Add ENABLE_NFCF_HCE=0 to libnfc-nci.conf to disable. Default is enabled.
Change-Id: I0ccabe10cc83a01ae6614d69d2bba33731a84fdd
Signed-off-by: Chippa-a <vusal1372@gmail.com>
-rwxr-xr-x | nci/jni/RoutingManager.cpp | 9 | ||||
-rwxr-xr-x | nci/jni/RoutingManager.h | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp index 69ace9f7..c9ec4889 100755 --- a/nci/jni/RoutingManager.cpp +++ b/nci/jni/RoutingManager.cpp @@ -112,6 +112,9 @@ RoutingManager::RoutingManager() : mAidRoutingConfigured(false) { mSeTechMask = 0x00; mIsScbrSupported = false; + mNfcFEnabled = + (NfcConfig::getUnsigned(NAME_ENABLE_NFCF_HCE, 1) != 0) ? true : false; + mNfcFOnDhHandle = NFA_HANDLE_INVALID; mDeinitializing = false; @@ -174,7 +177,7 @@ void RoutingManager::enableRoutingToHost() { SyncEventGuard guard(mRoutingEvent); // Default routing for T3T protocol - if (!mIsScbrSupported && mDefaultEe == NFC_DH_ID) { + if (!mIsScbrSupported && mDefaultEe == NFC_DH_ID && mNfcFEnabled) { nfaStat = NFA_EeSetDefaultProtoRouting(NFC_DH_ID, NFA_PROTOCOL_MASK_T3T, 0, 0, 0, 0, 0); if (nfaStat == NFA_STATUS_OK) @@ -253,7 +256,7 @@ void RoutingManager::disableRoutingToHost() { } // Default routing for T3T protocol - if (!mIsScbrSupported && mDefaultEe == NFC_DH_ID) { + if (!mIsScbrSupported && mDefaultEe == NFC_DH_ID && mNfcFEnabled) { nfaStat = NFA_EeClearDefaultProtoRouting(NFC_DH_ID, NFA_PROTOCOL_MASK_T3T); if (nfaStat == NFA_STATUS_OK) mRoutingEvent.wait(); @@ -542,7 +545,7 @@ void RoutingManager::updateDefaultProtocolRoute() { LOG(ERROR) << fn << ": failed to register default ISO-DEP route"; // Default routing for T3T protocol - if (!mIsScbrSupported) { + if (!mIsScbrSupported && mNfcFEnabled) { SyncEventGuard guard(mRoutingEvent); tNFA_PROTOCOL_MASK protoMask = NFA_PROTOCOL_MASK_T3T; if (mDefaultEe == NFC_DH_ID) { diff --git a/nci/jni/RoutingManager.h b/nci/jni/RoutingManager.h index 4bfc8860..32aef9e1 100755 --- a/nci/jni/RoutingManager.h +++ b/nci/jni/RoutingManager.h @@ -27,6 +27,8 @@ #include "nfa_api.h" #include "nfa_ee_api.h" +#define NAME_ENABLE_NFCF_HCE "ENABLE_NFCF_HCE" + using namespace std; class RoutingManager { @@ -103,6 +105,7 @@ class RoutingManager { int mAidMatchingMode; int mNfcFOnDhHandle; bool mIsScbrSupported; + bool mNfcFEnabled; uint16_t mDefaultSysCode; uint16_t mDefaultSysCodeRoute; uint8_t mDefaultSysCodePowerstate; |