diff options
author | Martijn Coenen <maco@google.com> | 2015-07-29 14:30:54 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-07-29 14:30:54 +0000 |
commit | 52b8b6ab5db87a44340e78fb9935ac359cdba134 (patch) | |
tree | 34f7d905d87c04bd14bc1723d4fdd7369234ca95 /nci | |
parent | f0d90fa9eafad2d71152ccae43c8a8ad56f17733 (diff) | |
parent | ced053fa28b925c55e4fdf45783895dfe1bd500e (diff) | |
download | android_packages_apps_Nfc-52b8b6ab5db87a44340e78fb9935ac359cdba134.tar.gz android_packages_apps_Nfc-52b8b6ab5db87a44340e78fb9935ac359cdba134.tar.bz2 android_packages_apps_Nfc-52b8b6ab5db87a44340e78fb9935ac359cdba134.zip |
Merge "Fix peer-to-peer server register error if RF discovery is started."
Diffstat (limited to 'nci')
-rwxr-xr-x | nci/jni/NativeNfcManager.cpp | 16 | ||||
-rw-r--r-- | nci/jni/PeerToPeer.cpp | 13 |
2 files changed, 29 insertions, 0 deletions
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp index e08b42cc..fbf3cd2f 100755 --- a/nci/jni/NativeNfcManager.cpp +++ b/nci/jni/NativeNfcManager.cpp @@ -95,6 +95,7 @@ namespace android void doStartupConfig (); void startStopPolling (bool isStartPolling); void startRfDiscovery (bool isStart); + bool isDiscoveryStarted (); } @@ -1728,6 +1729,21 @@ void startRfDiscovery(bool isStart) /******************************************************************************* ** +** Function: isDiscoveryStarted +** +** Description: Indicates whether the discovery is started. +** +** Returns: True if discovery is started +** +*******************************************************************************/ +bool isDiscoveryStarted () +{ + return sRfEnabled; +} + + +/******************************************************************************* +** ** Function: doStartupConfig ** ** Description: Configure the NFC controller. diff --git a/nci/jni/PeerToPeer.cpp b/nci/jni/PeerToPeer.cpp index 17d252cc..da4cf30d 100644 --- a/nci/jni/PeerToPeer.cpp +++ b/nci/jni/PeerToPeer.cpp @@ -40,6 +40,8 @@ namespace android { extern void nativeNfcTag_registerNdefTypeHandler (); extern void nativeNfcTag_deregisterNdefTypeHandler (); + extern void startRfDiscovery (bool isStart); + extern bool isDiscoveryStarted (); } @@ -475,6 +477,7 @@ bool PeerToPeer::deregisterServer (tJNI_HANDLE jniHandle) ALOGD ("%s: enter; JNI handle: %u", fn, jniHandle); tNFA_STATUS nfaStat = NFA_STATUS_FAILED; sp<P2pServer> pSrv = NULL; + bool isPollingTempStopped = false; mMutex.lock(); if ((pSrv = findServerLocked (jniHandle)) == NULL) @@ -484,6 +487,11 @@ bool PeerToPeer::deregisterServer (tJNI_HANDLE jniHandle) return (false); } mMutex.unlock(); + if (isDiscoveryStarted ()) + { + isPollingTempStopped = true; + startRfDiscovery (false); + } { // Server does not call NFA_P2pDisconnect(), so unblock the accept() @@ -499,6 +507,11 @@ bool PeerToPeer::deregisterServer (tJNI_HANDLE jniHandle) removeServer (jniHandle); + if (isPollingTempStopped) + { + startRfDiscovery (true); + } + ALOGD ("%s: exit", fn); return true; } |