summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Shields <simon@lineageos.org>2017-02-16 09:45:31 +1100
committerMichael Bestas <mkbestas@lineageos.org>2019-12-11 20:10:54 +0200
commit80440e68494f7d6d54af0fd87b02d71363240ccf (patch)
treef799daceaaa7f9e2e1cc35c02247285378996aea
parent4f341b4ba347dab18ba6b135cc1d89e8fb813e51 (diff)
downloadandroid_packages_apps_Nfc-staging/lineage-17.0_merge-android-10.0.0_r9.tar.gz
android_packages_apps_Nfc-staging/lineage-17.0_merge-android-10.0.0_r9.tar.bz2
android_packages_apps_Nfc-staging/lineage-17.0_merge-android-10.0.0_r9.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-xnci/jni/RoutingManager.cpp9
-rwxr-xr-xnci/jni/RoutingManager.h3
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;