summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJizhou Liao <Jizhou.Liao@nxp.com>2015-08-24 09:52:49 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-24 09:52:49 +0000
commite66316f6bdcd8932019a08019aa7283bb6a89f29 (patch)
tree4cfbc6083f3c76ec46a6c334952c744b616bae2f
parentc132ac7230054cabf02634c0db44fcb43d3d77a0 (diff)
parentc5eec3c659d60a469259340608d7403c73fd6865 (diff)
downloadandroid_packages_apps_Nfc-e66316f6bdcd8932019a08019aa7283bb6a89f29.tar.gz
android_packages_apps_Nfc-e66316f6bdcd8932019a08019aa7283bb6a89f29.tar.bz2
android_packages_apps_Nfc-e66316f6bdcd8932019a08019aa7283bb6a89f29.zip
am c5eec3c6: Fix peer-to-peer server register error if RF discovery is started.
* commit 'c5eec3c659d60a469259340608d7403c73fd6865': Fix peer-to-peer server register error if RF discovery is started.
-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;
}