summaryrefslogtreecommitdiffstats
path: root/nci
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2015-07-29 14:30:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-07-29 14:30:54 +0000
commit52b8b6ab5db87a44340e78fb9935ac359cdba134 (patch)
tree34f7d905d87c04bd14bc1723d4fdd7369234ca95 /nci
parentf0d90fa9eafad2d71152ccae43c8a8ad56f17733 (diff)
parentced053fa28b925c55e4fdf45783895dfe1bd500e (diff)
downloadandroid_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-xnci/jni/NativeNfcManager.cpp16
-rw-r--r--nci/jni/PeerToPeer.cpp13
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;
}