Add READ_EXTERNAL_STORAGE for file based Uri while beaming. am: 1930155714  -s ours am: c5b4b93eaf  -s ours am: 720991fd29  -s ours am: 795e887dbd  -s ours am: 2d83e29aae  -s ours am: 0f3880fc6e  -s ours am: f6d8d9376e  -s ours am: 03880365ea  -s ours am: 3df7507d98  -s ours am: a04ab9f500  -s ours am: befc55adb0  -s ours
am: cf6eddd7e2  -s ours

Change-Id: I167012a3b5138f0da932836228bc5066f780e413
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6e813c2..97115e8 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -55,15 +55,18 @@
     <uses-permission android:name="android.permission.OVERRIDE_WIFI_CONFIG" />
     <uses-permission android:name="android.permission.DEVICE_POWER" />
     <uses-permission android:name="android.permission.USER_ACTIVITY" />
+    <uses-permission android:name="android.permission.BIND_RESOLVER_RANKER_SERVICE" />
 
     <application android:name=".NfcApplication"
                  android:icon="@drawable/icon"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.Material.Light"
                  android:persistent="true"
+                 android:persistentWhenFeatureAvailable="android.hardware.nfc.any"
                  android:backupAgent="com.android.nfc.NfcBackupAgent"
                  android:killAfterRestore="false"
                  android:usesCleartextTraffic="false"
+                 android:supportsRtl="true"
     >
         <meta-data android:name="com.google.android.backup.api_key"
             android:value="AEdPqrEAAAAIbiKKs0wlimxeJ9y8iRIaBOH6aeb2IurmZyBHvg" />
diff --git a/nci/jni/Android.mk b/nci/jni/Android.mk
index e386861..280de98 100644
--- a/nci/jni/Android.mk
+++ b/nci/jni/Android.mk
@@ -1,4 +1,4 @@
-VOB_COMPONENTS := external/libnfc-nci/src
+VOB_COMPONENTS := system/nfc/src
 NFA := $(VOB_COMPONENTS)/nfa
 NFC := $(VOB_COMPONENTS)/nfc
 
@@ -17,7 +17,6 @@
 LOCAL_C_INCLUDES += \
     external/libxml2/include \
     frameworks/native/include \
-    libcore/include \
     $(NFA)/include \
     $(NFA)/brcm \
     $(NFC)/include \
diff --git a/nci/jni/CondVar.cpp b/nci/jni/CondVar.cpp
index 9d8c9b1..4b939a2 100644
--- a/nci/jni/CondVar.cpp
+++ b/nci/jni/CondVar.cpp
@@ -21,10 +21,10 @@
 #include "CondVar.h"
 #include "NfcJniUtil.h"
 
-#include <cutils/log.h>
 #include <errno.h>
 #include <string.h>
 
+#include <log/log.h>
 
 /*******************************************************************************
 **
@@ -44,7 +44,7 @@
     int const res = pthread_cond_init (&mCondition, &attr);
     if (res)
     {
-        ALOGE ("CondVar::CondVar: fail init; error=0x%X", res);
+        ALOGE("CondVar::CondVar: fail init; error=0x%X", res);
     }
 }
 
@@ -63,7 +63,7 @@
     int const res = pthread_cond_destroy (&mCondition);
     if (res)
     {
-        ALOGE ("CondVar::~CondVar: fail destroy; error=0x%X", res);
+        ALOGE("CondVar::~CondVar: fail destroy; error=0x%X", res);
     }
 }
 
@@ -82,7 +82,7 @@
     int const res = pthread_cond_wait (&mCondition, mutex.nativeHandle());
     if (res)
     {
-        ALOGE ("CondVar::wait: fail wait; error=0x%X", res);
+        ALOGE("CondVar::wait: fail wait; error=0x%X", res);
     }
 }
 
@@ -104,7 +104,7 @@
 
     if (clock_gettime (CLOCK_MONOTONIC, &absoluteTime) == -1)
     {
-        ALOGE ("CondVar::wait: fail get time; errno=0x%X", errno);
+        ALOGE("CondVar::wait: fail get time; errno=0x%X", errno);
     }
     else
     {
@@ -121,7 +121,7 @@
 
     int waitResult = pthread_cond_timedwait (&mCondition, mutex.nativeHandle(), &absoluteTime);
     if ((waitResult != 0) && (waitResult != ETIMEDOUT))
-        ALOGE ("CondVar::wait: fail timed wait; error=0x%X", waitResult);
+        ALOGE("CondVar::wait: fail timed wait; error=0x%X", waitResult);
     retVal = (waitResult == 0); //waited successfully
     return retVal;
 }
@@ -141,7 +141,7 @@
     int const res = pthread_cond_signal (&mCondition);
     if (res)
     {
-        ALOGE ("CondVar::notifyOne: fail signal; error=0x%X", res);
+        ALOGE("CondVar::notifyOne: fail signal; error=0x%X", res);
     }
 }
 
diff --git a/nci/jni/DataQueue.cpp b/nci/jni/DataQueue.cpp
index c86c126..2d7e40f 100644
--- a/nci/jni/DataQueue.cpp
+++ b/nci/jni/DataQueue.cpp
@@ -23,8 +23,7 @@
 #include <malloc.h>
 #include <string.h>
 
-#include <cutils/log.h>
-
+#include <log/log.h>
 
 /*******************************************************************************
 **
@@ -82,7 +81,7 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool DataQueue::enqueue (UINT8* data, UINT16 dataLen)
+bool DataQueue::enqueue (uint8_t* data, uint16_t dataLen)
 {
     if ((data == NULL) || (dataLen==0))
         return false;
@@ -104,7 +103,7 @@
     }
     else
     {
-        ALOGE ("DataQueue::enqueue: out of memory ?????");
+        ALOGE("DataQueue::enqueue: out of memory ?????");
     }
     mMutex.unlock ();
     return retval;
@@ -123,7 +122,7 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool DataQueue::dequeue (UINT8* buffer, UINT16 bufferMaxLen, UINT16& actualLen)
+bool DataQueue::dequeue (uint8_t* buffer, uint16_t bufferMaxLen, uint16_t& actualLen)
 {
     mMutex.lock ();
 
diff --git a/nci/jni/DataQueue.h b/nci/jni/DataQueue.h
index bfd415c..b9b9dd6 100644
--- a/nci/jni/DataQueue.h
+++ b/nci/jni/DataQueue.h
@@ -63,7 +63,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool enqueue (UINT8* data, UINT16 dataLen);
+    bool enqueue (uint8_t* data, uint16_t dataLen);
 
 
     /*******************************************************************************
@@ -78,7 +78,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool dequeue (UINT8* buffer, UINT16 bufferMaxLen, UINT16& actualLen);
+    bool dequeue (uint8_t* buffer, uint16_t bufferMaxLen, uint16_t& actualLen);
 
 
     /*******************************************************************************
@@ -95,8 +95,8 @@
 private:
     struct tHeader
     {
-        UINT16 mDataLen; //number of octets of data
-        UINT16 mOffset; //offset of the first octet of data
+        uint16_t mDataLen; //number of octets of data
+        uint16_t mOffset; //offset of the first octet of data
     };
     typedef std::list<tHeader*> Queue;
 
diff --git a/nci/jni/IntervalTimer.cpp b/nci/jni/IntervalTimer.cpp
index 9453451..507d163 100644
--- a/nci/jni/IntervalTimer.cpp
+++ b/nci/jni/IntervalTimer.cpp
@@ -13,13 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#define LOG_TAG "IntervalTimer"
 
 /*
  *  Asynchronous interval timer.
  */
 
 #include "IntervalTimer.h"
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 
 
 IntervalTimer::IntervalTimer()
@@ -56,7 +57,7 @@
 
     stat = timer_settime(mTimerId, 0, &ts, 0);
     if (stat == -1)
-        ALOGE("IntervalTimer::set: fail set timer");
+        ALOGE("fail set timer");
     return stat == 0;
 }
 
@@ -94,6 +95,6 @@
     mCb = cb;
     stat = timer_create(CLOCK_MONOTONIC, &se, &mTimerId);
     if (stat == -1)
-        ALOGE("IntervalTimer::create: fail create timer");
+        ALOGE("fail create timer");
     return stat == 0;
 }
diff --git a/nci/jni/Mutex.cpp b/nci/jni/Mutex.cpp
index 7382a0e..624e9bc 100644
--- a/nci/jni/Mutex.cpp
+++ b/nci/jni/Mutex.cpp
@@ -21,10 +21,11 @@
 #include "Mutex.h"
 #include "NfcJniUtil.h"
 
-#include <cutils/log.h>
 #include <errno.h>
 #include <string.h>
 
+#include <log/log.h>
+
 /*******************************************************************************
 **
 ** Function:        Mutex
@@ -40,7 +41,7 @@
     int res = pthread_mutex_init (&mMutex, NULL);
     if (res != 0)
     {
-        ALOGE ("Mutex::Mutex: fail init; error=0x%X", res);
+        ALOGE("Mutex::Mutex: fail init; error=0x%X", res);
     }
 }
 
@@ -59,7 +60,7 @@
     int res = pthread_mutex_destroy (&mMutex);
     if (res != 0)
     {
-        ALOGE ("Mutex::~Mutex: fail destroy; error=0x%X", res);
+        ALOGE("Mutex::~Mutex: fail destroy; error=0x%X", res);
     }
 }
 
@@ -78,7 +79,7 @@
     int res = pthread_mutex_lock (&mMutex);
     if (res != 0)
     {
-        ALOGE ("Mutex::lock: fail lock; error=0x%X", res);
+        ALOGE("Mutex::lock: fail lock; error=0x%X", res);
     }
 }
 
@@ -97,7 +98,7 @@
     int res = pthread_mutex_unlock (&mMutex);
     if (res != 0)
     {
-        ALOGE ("Mutex::unlock: fail unlock; error=0x%X", res);
+        ALOGE("Mutex::unlock: fail unlock; error=0x%X", res);
     }
 }
 
@@ -116,7 +117,7 @@
     int res = pthread_mutex_trylock (&mMutex);
     if ((res != 0) && (res != EBUSY))
     {
-        ALOGE ("Mutex::tryLock: error=0x%X", res);
+        ALOGE("Mutex::tryLock: error=0x%X", res);
     }
     return res == 0;
 }
diff --git a/nci/jni/NativeLlcpConnectionlessSocket.cpp b/nci/jni/NativeLlcpConnectionlessSocket.cpp
index b877acb..33006c4 100644
--- a/nci/jni/NativeLlcpConnectionlessSocket.cpp
+++ b/nci/jni/NativeLlcpConnectionlessSocket.cpp
@@ -18,7 +18,7 @@
 #include <malloc.h>
 #include <semaphore.h>
 #include <string.h>
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "NfcJniUtil.h"
 #include "JavaClassConstants.h"
 #include <ScopedLocalRef.h>
@@ -61,7 +61,7 @@
 *******************************************************************************/
 static jboolean nativeLlcpConnectionlessSocket_doSendTo (JNIEnv *e, jobject o, jint nsap, jbyteArray data)
 {
-    ALOGD ("%s: nsap = %d", __FUNCTION__, nsap);
+    ALOGV("%s: nsap = %d", __func__, nsap);
 
     ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
     jfieldID f = e->GetFieldID(c.get(), "mHandle", "I");
@@ -74,14 +74,14 @@
     }
     size_t byte_count = bytes.size();
 
-    ALOGD("NFA_P2pSendUI: len = %zu", byte_count);
-    UINT8* raw_ptr = const_cast<UINT8*>(reinterpret_cast<const UINT8*>(&bytes[0])); // TODO: API bug; NFA_P2pSendUI should take const*!
+    ALOGV("NFA_P2pSendUI: len = %zu", byte_count);
+    uint8_t* raw_ptr = const_cast<uint8_t*>(reinterpret_cast<const uint8_t*>(&bytes[0])); // TODO: API bug; NFA_P2pSendUI should take const*!
     tNFA_STATUS status = NFA_P2pSendUI((tNFA_HANDLE) handle, nsap, byte_count, raw_ptr);
 
-    ALOGD("%s: NFA_P2pSendUI done, status = %d", __FUNCTION__, status);
+    ALOGV("%s: NFA_P2pSendUI done, status = %d", __func__, status);
     if (status != NFA_STATUS_OK)
     {
-        ALOGE("%s: NFA_P2pSendUI failed, status = %d", __FUNCTION__, status);
+        ALOGE("%s: NFA_P2pSendUI failed, status = %d", __func__, status);
         return JNI_FALSE;
     }
     return JNI_TRUE;
@@ -102,7 +102,7 @@
 *******************************************************************************/
 void nativeLlcpConnectionlessSocket_receiveData (uint8_t* data, uint32_t len, uint32_t remoteSap)
 {
-    ALOGD ("%s: waiting for data = %d, len = %d", __FUNCTION__, sConnlessRecvWaitingForData, len);
+    ALOGV("%s: waiting for data = %d, len = %d", __func__, sConnlessRecvWaitingForData, len);
 
     // Sanity...
     if (sConnlessRecvLen < len)
@@ -173,20 +173,20 @@
 *******************************************************************************/
 static jobject nativeLlcpConnectionlessSocket_doReceiveFrom (JNIEnv* e, jobject, jint linkMiu)
 {
-    ALOGD ("%s: linkMiu = %d", __FUNCTION__, linkMiu);
+    ALOGV("%s: linkMiu = %d", __func__, linkMiu);
     jobject llcpPacket = NULL;
     ScopedLocalRef<jclass> clsLlcpPacket(e, NULL);
 
     if (sConnlessRecvWaitingForData != JNI_FALSE)
     {
-        ALOGD ("%s: Already waiting for incoming data", __FUNCTION__);
+        ALOGV("%s: Already waiting for incoming data", __func__);
         return NULL;
     }
 
     sConnlessRecvBuf = (uint8_t*) malloc (linkMiu);
     if (sConnlessRecvBuf == NULL)
     {
-        ALOGD ("%s: Failed to allocate %d bytes memory buffer", __FUNCTION__, linkMiu);
+        ALOGV("%s: Failed to allocate %d bytes memory buffer", __func__, linkMiu);
         return NULL;
     }
     sConnlessRecvLen = linkMiu;
@@ -194,7 +194,7 @@
     // Create the write semaphore
     if (sem_init (&sConnlessRecvSem, 0, 0) == -1)
     {
-        ALOGE ("%s: semaphore creation failed (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: semaphore creation failed (errno=0x%08x)", __func__, errno);
         return connectionlessCleanup ();
     }
 
@@ -203,14 +203,14 @@
     // Wait for sConnlessRecvSem completion status
     if (sem_wait (&sConnlessRecvSem))
     {
-        ALOGE ("%s: Failed to wait for write semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to wait for write semaphore (errno=0x%08x)", __func__, errno);
         goto TheEnd;
     }
 
     // Create new LlcpPacket object
     if (nfc_jni_cache_object_local (e, "com/android/nfc/LlcpPacket", &(llcpPacket)) == -1)
     {
-        ALOGE ("%s: Find LlcpPacket class error", __FUNCTION__);
+        ALOGE("%s: Find LlcpPacket class error", __func__);
         return connectionlessCleanup ();
     }
 
@@ -219,7 +219,7 @@
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("%s: Get Object class error", __FUNCTION__);
+        ALOGE("%s: Get Object class error", __func__);
         return connectionlessCleanup ();
     }
 
@@ -229,7 +229,7 @@
     e->SetIntField(llcpPacket, f, (jbyte) sConnlessRecvRemoteSap);
 
     // Set Llcp Packet Buffer
-    ALOGD ("%s: Received Llcp packet buffer size = %d\n", __FUNCTION__, sConnlessRecvLen);
+    ALOGV("%s: Received Llcp packet buffer size = %d\n", __func__, sConnlessRecvLen);
     f = e->GetFieldID(clsLlcpPacket.get(), "mDataBuffer", "[B");
 
     {
@@ -242,7 +242,7 @@
     connectionlessCleanup ();
     if (sem_destroy (&sConnlessRecvSem))
     {
-        ALOGE ("%s: Failed to destroy sConnlessRecvSem semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to destroy sConnlessRecvSem semaphore (errno=0x%08x)", __func__, errno);
     }
     return llcpPacket;
 }
@@ -261,7 +261,7 @@
 *******************************************************************************/
 static jboolean nativeLlcpConnectionlessSocket_doClose (JNIEnv *e, jobject o)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
 
     ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
     jfieldID f = e->GetFieldID(c.get(), "mHandle", "I");
@@ -270,7 +270,7 @@
     tNFA_STATUS status = NFA_P2pDisconnect((tNFA_HANDLE) handle, FALSE);
     if (status != NFA_STATUS_OK)
     {
-        ALOGE ("%s: disconnect failed, status = %d", __FUNCTION__, status);
+        ALOGE("%s: disconnect failed, status = %d", __func__, status);
         return JNI_FALSE;
     }
     return JNI_TRUE;
diff --git a/nci/jni/NativeLlcpServiceSocket.cpp b/nci/jni/NativeLlcpServiceSocket.cpp
index ace7ee4..5d59569 100644
--- a/nci/jni/NativeLlcpServiceSocket.cpp
+++ b/nci/jni/NativeLlcpServiceSocket.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "NfcJniUtil.h"
 #include "NfcAdaptation.h"
 #include "PeerToPeer.h"
@@ -56,7 +56,7 @@
     bool        stat = false;
     PeerToPeer::tJNI_HANDLE connHandle = PeerToPeer::getInstance().getNewJniHandle ();
 
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     serverHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle (e, o);
 
@@ -64,14 +64,14 @@
 
     if (! stat)
     {
-        ALOGE ("%s: fail accept", __FUNCTION__);
+        ALOGE("%s: fail accept", __func__);
         goto TheEnd;
     }
 
     /* Create new LlcpSocket object */
     if (nfc_jni_cache_object_local(e, gNativeLlcpSocketClassName, &(clientSocket)) == -1)
     {
-        ALOGE ("%s: fail create NativeLlcpSocket", __FUNCTION__);
+        ALOGE("%s: fail create NativeLlcpSocket", __func__);
         goto TheEnd;
     }
 
@@ -80,7 +80,7 @@
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("%s: get class object error", __FUNCTION__);
+        ALOGE("%s: get class object error", __func__);
         goto TheEnd;
     }
 
@@ -97,7 +97,7 @@
     e->SetIntField (clientSocket, f, (jint)rw);
 
 TheEnd:
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return clientSocket;
 }
 
@@ -115,7 +115,7 @@
 *******************************************************************************/
 static jboolean nativeLlcpServiceSocket_doClose(JNIEnv *e, jobject o)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     PeerToPeer::tJNI_HANDLE jniServerHandle = 0;
     bool stat = false;
 
@@ -123,7 +123,7 @@
 
     stat = PeerToPeer::getInstance().deregisterServer (jniServerHandle);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return JNI_TRUE;
 }
 
diff --git a/nci/jni/NativeLlcpSocket.cpp b/nci/jni/NativeLlcpSocket.cpp
index bd3964d..d6bfdcd 100644
--- a/nci/jni/NativeLlcpSocket.cpp
+++ b/nci/jni/NativeLlcpSocket.cpp
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "PeerToPeer.h"
 #include "JavaClassConstants.h"
 #include <ScopedPrimitiveArray.h>
@@ -38,12 +38,12 @@
 *******************************************************************************/
 static jboolean nativeLlcpSocket_doConnect (JNIEnv* e, jobject o, jint nSap)
 {
-    ALOGD ("%s: enter; sap=%d", __FUNCTION__, nSap);
+    ALOGV("%s: enter; sap=%d", __func__, nSap);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
     bool stat = PeerToPeer::getInstance().connectConnOriented (jniHandle, nSap);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return stat ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -62,7 +62,7 @@
 *******************************************************************************/
 static jboolean nativeLlcpSocket_doConnectBy (JNIEnv* e, jobject o, jstring sn)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
 
@@ -73,7 +73,7 @@
     }
     bool stat = PeerToPeer::getInstance().connectConnOriented(jniHandle, serviceName.c_str());
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return stat ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -91,12 +91,12 @@
 *******************************************************************************/
 static jboolean nativeLlcpSocket_doClose(JNIEnv *e, jobject o)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
     bool stat = PeerToPeer::getInstance().disconnectConnOriented (jniHandle);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return stat ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -115,15 +115,15 @@
 *******************************************************************************/
 static jboolean nativeLlcpSocket_doSend (JNIEnv* e, jobject o, jbyteArray data)
 {
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter", __FUNCTION__);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter", __func__);
 
     ScopedByteArrayRO bytes(e, data);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
-    UINT8* raw_ptr = const_cast<UINT8*>(reinterpret_cast<const UINT8*>(&bytes[0])); // TODO: API bug: send should take const*!
+    uint8_t* raw_ptr = const_cast<uint8_t*>(reinterpret_cast<const uint8_t*>(&bytes[0])); // TODO: API bug: send should take const*!
     bool stat = PeerToPeer::getInstance().send(jniHandle, raw_ptr, bytes.size());
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit", __FUNCTION__);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit", __func__);
     return stat ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -142,13 +142,13 @@
 *******************************************************************************/
 static jint nativeLlcpSocket_doReceive(JNIEnv *e, jobject o, jbyteArray origBuffer)
 {
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter", __FUNCTION__);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter", __func__);
 
     ScopedByteArrayRW bytes(e, origBuffer);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
     uint16_t actualLen = 0;
-    bool stat = PeerToPeer::getInstance().receive(jniHandle, reinterpret_cast<UINT8*>(&bytes[0]), bytes.size(), actualLen);
+    bool stat = PeerToPeer::getInstance().receive(jniHandle, reinterpret_cast<uint8_t*>(&bytes[0]), bytes.size(), actualLen);
 
     jint retval = 0;
     if (stat && (actualLen>0))
@@ -158,7 +158,7 @@
     else
         retval = -1;
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit; actual len=%d", __FUNCTION__, retval);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit; actual len=%d", __func__, retval);
     return retval;
 }
 
@@ -176,12 +176,12 @@
 *******************************************************************************/
 static jint nativeLlcpSocket_doGetRemoteSocketMIU (JNIEnv* e, jobject o)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
     jint miu = PeerToPeer::getInstance().getRemoteMaxInfoUnit(jniHandle);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return miu;
 }
 
@@ -199,12 +199,12 @@
 *******************************************************************************/
 static jint nativeLlcpSocket_doGetRemoteSocketRW (JNIEnv* e, jobject o)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     PeerToPeer::tJNI_HANDLE jniHandle = (PeerToPeer::tJNI_HANDLE) nfc_jni_get_nfc_socket_handle(e, o);
     jint rw = PeerToPeer::getInstance().getRemoteRecvWindow (jniHandle);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return rw;
 }
 
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp
index 4f0b427..146b61e 100755
--- a/nci/jni/NativeNfcManager.cpp
+++ b/nci/jni/NativeNfcManager.cpp
@@ -16,7 +16,7 @@
 
 #include <semaphore.h>
 #include <errno.h>
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "NfcJniUtil.h"
 #include "NfcAdaptation.h"
 #include "SyncEvent.h"
@@ -42,8 +42,8 @@
     #include "phNxpExtns.h"
 }
 
-extern const UINT8 nfca_version_string [];
-extern const UINT8 nfa_version_string [];
+extern const uint8_t nfca_version_string [];
+extern const uint8_t nfa_version_string [];
 extern tNFA_DM_DISC_FREQ_CFG* p_nfa_dm_rf_disc_freq_cfg; //defined in stack
 namespace android
 {
@@ -138,16 +138,16 @@
 #define DEFAULT_DISCOVERY_DURATION       500
 #define READER_MODE_DISCOVERY_DURATION   200
 
-static void nfaConnectionCallback (UINT8 event, tNFA_CONN_EVT_DATA *eventData);
-static void nfaDeviceManagementCallback (UINT8 event, tNFA_DM_CBACK_DATA *eventData);
+static void nfaConnectionCallback (uint8_t event, tNFA_CONN_EVT_DATA *eventData);
+static void nfaDeviceManagementCallback (uint8_t event, tNFA_DM_CBACK_DATA *eventData);
 static bool isPeerToPeer (tNFA_ACTIVATED& activated);
 static bool isListenMode(tNFA_ACTIVATED& activated);
 static void enableDisableLptd (bool enable);
 static tNFA_STATUS stopPolling_rfDiscoveryDisabled();
 static tNFA_STATUS startPolling_rfDiscoveryDisabled(tNFA_TECHNOLOGY_MASK tech_mask);
 
-static UINT16 sCurrentConfigLen;
-static UINT8 sConfig[256];
+static uint16_t sCurrentConfigLen;
+static uint8_t sConfig[256];
 
 /////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////
@@ -216,16 +216,16 @@
 ** Returns:         None
 **
 *******************************************************************************/
-static void nfaConnectionCallback (UINT8 connEvent, tNFA_CONN_EVT_DATA* eventData)
+static void nfaConnectionCallback (uint8_t connEvent, tNFA_CONN_EVT_DATA* eventData)
 {
     tNFA_STATUS status = NFA_STATUS_FAILED;
-    ALOGD("%s: event= %u", __FUNCTION__, connEvent);
+    ALOGV("%s: event= %u", __func__, connEvent);
 
     switch (connEvent)
     {
     case NFA_POLL_ENABLED_EVT: // whether polling successfully started
         {
-            ALOGD("%s: NFA_POLL_ENABLED_EVT: status = %u", __FUNCTION__, eventData->status);
+            ALOGV("%s: NFA_POLL_ENABLED_EVT: status = %u", __func__, eventData->status);
 
             SyncEventGuard guard (sNfaEnableDisablePollingEvent);
             sNfaEnableDisablePollingEvent.notifyOne ();
@@ -234,7 +234,7 @@
 
     case NFA_POLL_DISABLED_EVT: // Listening/Polling stopped
         {
-            ALOGD("%s: NFA_POLL_DISABLED_EVT: status = %u", __FUNCTION__, eventData->status);
+            ALOGV("%s: NFA_POLL_DISABLED_EVT: status = %u", __func__, eventData->status);
 
             SyncEventGuard guard (sNfaEnableDisablePollingEvent);
             sNfaEnableDisablePollingEvent.notifyOne ();
@@ -243,7 +243,7 @@
 
     case NFA_RF_DISCOVERY_STARTED_EVT: // RF Discovery started
         {
-            ALOGD("%s: NFA_RF_DISCOVERY_STARTED_EVT: status = %u", __FUNCTION__, eventData->status);
+            ALOGV("%s: NFA_RF_DISCOVERY_STARTED_EVT: status = %u", __func__, eventData->status);
 
             SyncEventGuard guard (sNfaEnableDisablePollingEvent);
             sNfaEnableDisablePollingEvent.notifyOne ();
@@ -252,7 +252,7 @@
 
     case NFA_RF_DISCOVERY_STOPPED_EVT: // RF Discovery stopped event
         {
-            ALOGD("%s: NFA_RF_DISCOVERY_STOPPED_EVT: status = %u", __FUNCTION__, eventData->status);
+            ALOGV("%s: NFA_RF_DISCOVERY_STOPPED_EVT: status = %u", __func__, eventData->status);
 
             SyncEventGuard guard (sNfaEnableDisablePollingEvent);
             sNfaEnableDisablePollingEvent.notifyOne ();
@@ -261,10 +261,10 @@
 
     case NFA_DISC_RESULT_EVT: // NFC link/protocol discovery notificaiton
         status = eventData->disc_result.status;
-        ALOGD("%s: NFA_DISC_RESULT_EVT: status = %d", __FUNCTION__, status);
+        ALOGV("%s: NFA_DISC_RESULT_EVT: status = %d", __func__, status);
         if (status != NFA_STATUS_OK)
         {
-            ALOGE("%s: NFA_DISC_RESULT_EVT error: status = %d", __FUNCTION__, status);
+            ALOGE("%s: NFA_DISC_RESULT_EVT error: status = %d", __func__, status);
         }
         else
         {
@@ -274,7 +274,7 @@
         break;
 
     case NFA_SELECT_RESULT_EVT: // NFC link/protocol discovery select response
-        ALOGD("%s: NFA_SELECT_RESULT_EVT: status = %d, gIsSelectingRfInterface = %d, sIsDisabling=%d", __FUNCTION__, eventData->status, gIsSelectingRfInterface, sIsDisabling);
+        ALOGV("%s: NFA_SELECT_RESULT_EVT: status = %d, gIsSelectingRfInterface = %d, sIsDisabling=%d", __func__, eventData->status, gIsSelectingRfInterface, sIsDisabling);
 
         if (sIsDisabling)
             break;
@@ -286,17 +286,17 @@
                 nativeNfcTag_doConnectStatus(false);
             }
 
-            ALOGE("%s: NFA_SELECT_RESULT_EVT error: status = %d", __FUNCTION__, eventData->status);
+            ALOGE("%s: NFA_SELECT_RESULT_EVT error: status = %d", __func__, eventData->status);
             NFA_Deactivate (FALSE);
         }
         break;
 
     case NFA_DEACTIVATE_FAIL_EVT:
-        ALOGD("%s: NFA_DEACTIVATE_FAIL_EVT: status = %d", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_DEACTIVATE_FAIL_EVT: status = %d", __func__, eventData->status);
         break;
 
     case NFA_ACTIVATED_EVT: // NFC link/protocol activated
-        ALOGD("%s: NFA_ACTIVATED_EVT: gIsSelectingRfInterface=%d, sIsDisabling=%d", __FUNCTION__, gIsSelectingRfInterface, sIsDisabling);
+        ALOGV("%s: NFA_ACTIVATED_EVT: gIsSelectingRfInterface=%d, sIsDisabling=%d", __func__, gIsSelectingRfInterface, sIsDisabling);
         if((eventData->activated.activate_ntf.protocol != NFA_PROTOCOL_NFC_DEP) && (!isListenMode (eventData->activated)))
         {
             nativeNfcTag_setRfInterface ((tNFA_INTF_TYPE) eventData->activated.activate_ntf.intf_param.type);
@@ -324,21 +324,21 @@
         {
             if (sReaderModeEnabled)
             {
-                ALOGD("%s: ignoring peer target in reader mode.", __FUNCTION__);
+                ALOGV("%s: ignoring peer target in reader mode.", __func__);
                 NFA_Deactivate (FALSE);
                 break;
             }
             sP2pActive = true;
-            ALOGD("%s: NFA_ACTIVATED_EVT; is p2p", __FUNCTION__);
+            ALOGV("%s: NFA_ACTIVATED_EVT; is p2p", __func__);
             // Disable RF field events in case of p2p
-            UINT8  nfa_disable_rf_events[] = { 0x00 };
-            ALOGD ("%s: Disabling RF field events", __FUNCTION__);
+            uint8_t  nfa_disable_rf_events[] = { 0x00 };
+            ALOGV("%s: Disabling RF field events", __func__);
             status = NFA_SetConfig(NCI_PARAM_ID_RF_FIELD_INFO, sizeof(nfa_disable_rf_events),
                     &nfa_disable_rf_events[0]);
             if (status == NFA_STATUS_OK) {
-                ALOGD ("%s: Disabled RF field events", __FUNCTION__);
+                ALOGV("%s: Disabled RF field events", __func__);
             } else {
-                ALOGE ("%s: Failed to disable RF field events", __FUNCTION__);
+                ALOGE("%s: Failed to disable RF field events", __func__);
             }
         }
         else if (pn544InteropIsBusy() == false)
@@ -356,7 +356,7 @@
         break;
 
     case NFA_DEACTIVATED_EVT: // NFC link/protocol deactivated
-        ALOGD("%s: NFA_DEACTIVATED_EVT   Type: %u, gIsTagDeactivating: %d", __FUNCTION__, eventData->deactivated.type,gIsTagDeactivating);
+        ALOGV("%s: NFA_DEACTIVATED_EVT   Type: %u, gIsTagDeactivating: %d", __func__, eventData->deactivated.type,gIsTagDeactivating);
         NfcTag::getInstance().setDeactivationState (eventData->deactivated);
         if (eventData->deactivated.type != NFA_DEACTIVATE_TYPE_SLEEP)
         {
@@ -391,19 +391,19 @@
             } else if (sP2pActive) {
                 sP2pActive = false;
                 // Make sure RF field events are re-enabled
-                ALOGD("%s: NFA_DEACTIVATED_EVT; is p2p", __FUNCTION__);
+                ALOGV("%s: NFA_DEACTIVATED_EVT; is p2p", __func__);
                 // Disable RF field events in case of p2p
-                UINT8  nfa_enable_rf_events[] = { 0x01 };
+                uint8_t  nfa_enable_rf_events[] = { 0x01 };
 
                 if (!sIsDisabling && sIsNfaEnabled)
                 {
-                    ALOGD ("%s: Enabling RF field events", __FUNCTION__);
+                    ALOGV("%s: Enabling RF field events", __func__);
                     status = NFA_SetConfig(NCI_PARAM_ID_RF_FIELD_INFO, sizeof(nfa_enable_rf_events),
                             &nfa_enable_rf_events[0]);
                     if (status == NFA_STATUS_OK) {
-                        ALOGD ("%s: Enabled RF field events", __FUNCTION__);
+                        ALOGV("%s: Enabled RF field events", __func__);
                     } else {
-                        ALOGE ("%s: Failed to enable RF field events", __FUNCTION__);
+                        ALOGE("%s: Failed to enable RF field events", __func__);
                     }
                 }
             }
@@ -413,12 +413,12 @@
 
     case NFA_TLV_DETECT_EVT: // TLV Detection complete
         status = eventData->tlv_detect.status;
-        ALOGD("%s: NFA_TLV_DETECT_EVT: status = %d, protocol = %d, num_tlvs = %d, num_bytes = %d",
-             __FUNCTION__, status, eventData->tlv_detect.protocol,
+        ALOGV("%s: NFA_TLV_DETECT_EVT: status = %d, protocol = %d, num_tlvs = %d, num_bytes = %d",
+             __func__, status, eventData->tlv_detect.protocol,
              eventData->tlv_detect.num_tlvs, eventData->tlv_detect.num_bytes);
         if (status != NFA_STATUS_OK)
         {
-            ALOGE("%s: NFA_TLV_DETECT_EVT error: status = %d", __FUNCTION__, status);
+            ALOGE("%s: NFA_TLV_DETECT_EVT error: status = %d", __func__, status);
         }
         break;
 
@@ -426,8 +426,8 @@
         //if status is failure, it means the tag does not contain any or valid NDEF data;
         //pass the failure status to the NFC Service;
         status = eventData->ndef_detect.status;
-        ALOGD("%s: NFA_NDEF_DETECT_EVT: status = 0x%X, protocol = %u, "
-             "max_size = %lu, cur_size = %lu, flags = 0x%X", __FUNCTION__,
+        ALOGV("%s: NFA_NDEF_DETECT_EVT: status = 0x%X, protocol = %u, "
+             "max_size = %u, cur_size = %u, flags = 0x%X", __func__,
              status,
              eventData->ndef_detect.protocol, eventData->ndef_detect.max_size,
              eventData->ndef_detect.cur_size, eventData->ndef_detect.flags);
@@ -438,53 +438,53 @@
         break;
 
     case NFA_DATA_EVT: // Data message received (for non-NDEF reads)
-        ALOGD("%s: NFA_DATA_EVT: status = 0x%X, len = %d", __FUNCTION__, eventData->status, eventData->data.len);
+        ALOGV("%s: NFA_DATA_EVT: status = 0x%X, len = %d", __func__, eventData->status, eventData->data.len);
         nativeNfcTag_doTransceiveStatus(eventData->status, eventData->data.p_data, eventData->data.len);
         break;
     case NFA_RW_INTF_ERROR_EVT:
-        ALOGD("%s: NFC_RW_INTF_ERROR_EVT", __FUNCTION__);
+        ALOGV("%s: NFC_RW_INTF_ERROR_EVT", __func__);
         nativeNfcTag_notifyRfTimeout();
         nativeNfcTag_doReadCompleted (NFA_STATUS_TIMEOUT);
         break;
     case NFA_SELECT_CPLT_EVT: // Select completed
         status = eventData->status;
-        ALOGD("%s: NFA_SELECT_CPLT_EVT: status = %d", __FUNCTION__, status);
+        ALOGV("%s: NFA_SELECT_CPLT_EVT: status = %d", __func__, status);
         if (status != NFA_STATUS_OK)
         {
-            ALOGE("%s: NFA_SELECT_CPLT_EVT error: status = %d", __FUNCTION__, status);
+            ALOGE("%s: NFA_SELECT_CPLT_EVT error: status = %d", __func__, status);
         }
         break;
 
     case NFA_READ_CPLT_EVT: // NDEF-read or tag-specific-read completed
-        ALOGD("%s: NFA_READ_CPLT_EVT: status = 0x%X", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_READ_CPLT_EVT: status = 0x%X", __func__, eventData->status);
         nativeNfcTag_doReadCompleted (eventData->status);
         NfcTag::getInstance().connectionEventHandler (connEvent, eventData);
         break;
 
     case NFA_WRITE_CPLT_EVT: // Write completed
-        ALOGD("%s: NFA_WRITE_CPLT_EVT: status = %d", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_WRITE_CPLT_EVT: status = %d", __func__, eventData->status);
         nativeNfcTag_doWriteStatus (eventData->status == NFA_STATUS_OK);
         break;
 
     case NFA_SET_TAG_RO_EVT: // Tag set as Read only
-        ALOGD("%s: NFA_SET_TAG_RO_EVT: status = %d", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_SET_TAG_RO_EVT: status = %d", __func__, eventData->status);
         nativeNfcTag_doMakeReadonlyResult(eventData->status);
         break;
 
     case NFA_CE_NDEF_WRITE_START_EVT: // NDEF write started
-        ALOGD("%s: NFA_CE_NDEF_WRITE_START_EVT: status: %d", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_CE_NDEF_WRITE_START_EVT: status: %d", __func__, eventData->status);
 
         if (eventData->status != NFA_STATUS_OK)
-            ALOGE("%s: NFA_CE_NDEF_WRITE_START_EVT error: status = %d", __FUNCTION__, eventData->status);
+            ALOGE("%s: NFA_CE_NDEF_WRITE_START_EVT error: status = %d", __func__, eventData->status);
         break;
 
     case NFA_CE_NDEF_WRITE_CPLT_EVT: // NDEF write completed
-        ALOGD("%s: FA_CE_NDEF_WRITE_CPLT_EVT: len = %lu", __FUNCTION__, eventData->ndef_write_cplt.len);
+        ALOGV("%s: FA_CE_NDEF_WRITE_CPLT_EVT: len = %u", __func__, eventData->ndef_write_cplt.len);
         break;
 
     case NFA_LLCP_ACTIVATED_EVT: // LLCP link is activated
-        ALOGD("%s: NFA_LLCP_ACTIVATED_EVT: is_initiator: %d  remote_wks: %d, remote_lsc: %d, remote_link_miu: %d, local_link_miu: %d",
-             __FUNCTION__,
+        ALOGV("%s: NFA_LLCP_ACTIVATED_EVT: is_initiator: %d  remote_wks: %d, remote_lsc: %d, remote_link_miu: %d, local_link_miu: %d",
+             __func__,
              eventData->llcp_activated.is_initiator,
              eventData->llcp_activated.remote_wks,
              eventData->llcp_activated.remote_lsc,
@@ -495,37 +495,37 @@
         break;
 
     case NFA_LLCP_DEACTIVATED_EVT: // LLCP link is deactivated
-        ALOGD("%s: NFA_LLCP_DEACTIVATED_EVT", __FUNCTION__);
+        ALOGV("%s: NFA_LLCP_DEACTIVATED_EVT", __func__);
         PeerToPeer::getInstance().llcpDeactivatedHandler (getNative(0, 0), eventData->llcp_deactivated);
         break;
     case NFA_LLCP_FIRST_PACKET_RECEIVED_EVT: // Received first packet over llcp
-        ALOGD("%s: NFA_LLCP_FIRST_PACKET_RECEIVED_EVT", __FUNCTION__);
+        ALOGV("%s: NFA_LLCP_FIRST_PACKET_RECEIVED_EVT", __func__);
         PeerToPeer::getInstance().llcpFirstPacketHandler (getNative(0, 0));
         break;
     case NFA_PRESENCE_CHECK_EVT:
-        ALOGD("%s: NFA_PRESENCE_CHECK_EVT", __FUNCTION__);
+        ALOGV("%s: NFA_PRESENCE_CHECK_EVT", __func__);
         nativeNfcTag_doPresenceCheckResult (eventData->status);
         break;
     case NFA_FORMAT_CPLT_EVT:
-        ALOGD("%s: NFA_FORMAT_CPLT_EVT: status=0x%X", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_FORMAT_CPLT_EVT: status=0x%X", __func__, eventData->status);
         nativeNfcTag_formatStatus (eventData->status == NFA_STATUS_OK);
         break;
 
     case NFA_I93_CMD_CPLT_EVT:
-        ALOGD("%s: NFA_I93_CMD_CPLT_EVT: status=0x%X", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_I93_CMD_CPLT_EVT: status=0x%X", __func__, eventData->status);
         break;
 
     case NFA_CE_UICC_LISTEN_CONFIGURED_EVT :
-        ALOGD("%s: NFA_CE_UICC_LISTEN_CONFIGURED_EVT : status=0x%X", __FUNCTION__, eventData->status);
+        ALOGV("%s: NFA_CE_UICC_LISTEN_CONFIGURED_EVT : status=0x%X", __func__, eventData->status);
         break;
 
     case NFA_SET_P2P_LISTEN_TECH_EVT:
-        ALOGD("%s: NFA_SET_P2P_LISTEN_TECH_EVT", __FUNCTION__);
+        ALOGV("%s: NFA_SET_P2P_LISTEN_TECH_EVT", __func__);
         PeerToPeer::getInstance().connectionEventHandler (connEvent, eventData);
         break;
 
     default:
-        ALOGE("%s: unknown event ????", __FUNCTION__);
+        ALOGV("%s: unknown event ????", __func__);
         break;
     }
 }
@@ -544,12 +544,12 @@
 *******************************************************************************/
 static jboolean nfcManager_initNativeStruc (JNIEnv* e, jobject o)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     nfc_jni_native_data* nat = (nfc_jni_native_data*)malloc(sizeof(struct nfc_jni_native_data));
     if (nat == NULL)
     {
-        ALOGE ("%s: fail allocate native data", __FUNCTION__);
+        ALOGE("%s: fail allocate native data", __func__);
         return JNI_FALSE;
     }
 
@@ -588,17 +588,17 @@
 
     if (nfc_jni_cache_object(e, gNativeNfcTagClassName, &(nat->cached_NfcTag)) == -1)
     {
-        ALOGE ("%s: fail cache NativeNfcTag", __FUNCTION__);
+        ALOGE("%s: fail cache NativeNfcTag", __func__);
         return JNI_FALSE;
     }
 
     if (nfc_jni_cache_object(e, gNativeP2pDeviceClassName, &(nat->cached_P2pDevice)) == -1)
     {
-        ALOGE ("%s: fail cache NativeP2pDevice", __FUNCTION__);
+        ALOGE("%s: fail cache NativeP2pDevice", __func__);
         return JNI_FALSE;
     }
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return JNI_TRUE;
 }
 
@@ -614,17 +614,17 @@
 ** Returns:         None
 **
 *******************************************************************************/
-void nfaDeviceManagementCallback (UINT8 dmEvent, tNFA_DM_CBACK_DATA* eventData)
+void nfaDeviceManagementCallback (uint8_t dmEvent, tNFA_DM_CBACK_DATA* eventData)
 {
-    ALOGD ("%s: enter; event=0x%X", __FUNCTION__, dmEvent);
+    ALOGV("%s: enter; event=0x%X", __func__, dmEvent);
 
     switch (dmEvent)
     {
     case NFA_DM_ENABLE_EVT: /* Result of NFA_Enable */
         {
             SyncEventGuard guard (sNfaEnableEvent);
-            ALOGD ("%s: NFA_DM_ENABLE_EVT; status=0x%X",
-                    __FUNCTION__, eventData->status);
+            ALOGV("%s: NFA_DM_ENABLE_EVT; status=0x%X",
+                    __func__, eventData->status);
             sIsNfaEnabled = eventData->status == NFA_STATUS_OK;
             sIsDisabling = false;
             sNfaEnableEvent.notifyOne ();
@@ -634,7 +634,7 @@
     case NFA_DM_DISABLE_EVT: /* Result of NFA_Disable */
         {
             SyncEventGuard guard (sNfaDisableEvent);
-            ALOGD ("%s: NFA_DM_DISABLE_EVT", __FUNCTION__);
+            ALOGV("%s: NFA_DM_DISABLE_EVT", __func__);
             sIsNfaEnabled = false;
             sIsDisabling = false;
             sNfaDisableEvent.notifyOne ();
@@ -642,7 +642,7 @@
         break;
 
     case NFA_DM_SET_CONFIG_EVT: //result of NFA_SetConfig
-        ALOGD ("%s: NFA_DM_SET_CONFIG_EVT", __FUNCTION__);
+        ALOGV("%s: NFA_DM_SET_CONFIG_EVT", __func__);
         {
             SyncEventGuard guard (sNfaSetConfigEvent);
             sNfaSetConfigEvent.notifyOne();
@@ -650,7 +650,7 @@
         break;
 
     case NFA_DM_GET_CONFIG_EVT: /* Result of NFA_GetConfig */
-        ALOGD ("%s: NFA_DM_GET_CONFIG_EVT", __FUNCTION__);
+        ALOGV("%s: NFA_DM_GET_CONFIG_EVT", __func__);
         {
             SyncEventGuard guard (sNfaGetConfigEvent);
             if (eventData->status == NFA_STATUS_OK &&
@@ -661,7 +661,7 @@
             }
             else
             {
-                ALOGE("%s: NFA_DM_GET_CONFIG failed", __FUNCTION__);
+                ALOGE("%s: NFA_DM_GET_CONFIG failed", __func__);
                 sCurrentConfigLen = 0;
             }
             sNfaGetConfigEvent.notifyOne();
@@ -669,7 +669,7 @@
         break;
 
     case NFA_DM_RF_FIELD_EVT:
-        ALOGD ("%s: NFA_DM_RF_FIELD_EVT; status=0x%X; field status=%u", __FUNCTION__,
+        ALOGV("%s: NFA_DM_RF_FIELD_EVT; status=0x%X; field status=%u", __func__,
               eventData->rf_field.status, eventData->rf_field.rf_field_status);
         if (!sP2pActive && eventData->rf_field.status == NFA_STATUS_OK)
         {
@@ -678,7 +678,7 @@
             ScopedAttach attach(nat->vm, &e);
             if (e == NULL)
             {
-                ALOGE ("jni env is null");
+                ALOGE("jni env is null");
                 return;
             }
             if (eventData->rf_field.rf_field_status == NFA_DM_RF_FIELD_ON)
@@ -692,26 +692,26 @@
     case NFA_DM_NFCC_TIMEOUT_EVT:
         {
             if (dmEvent == NFA_DM_NFCC_TIMEOUT_EVT)
-                ALOGE ("%s: NFA_DM_NFCC_TIMEOUT_EVT; abort", __FUNCTION__);
+                ALOGE("%s: NFA_DM_NFCC_TIMEOUT_EVT; abort", __func__);
             else if (dmEvent == NFA_DM_NFCC_TRANSPORT_ERR_EVT)
-                ALOGE ("%s: NFA_DM_NFCC_TRANSPORT_ERR_EVT; abort", __FUNCTION__);
+                ALOGE("%s: NFA_DM_NFCC_TRANSPORT_ERR_EVT; abort", __func__);
 
             nativeNfcTag_abortWaits();
             NfcTag::getInstance().abort ();
             sAbortConnlessWait = true;
             nativeLlcpConnectionlessSocket_abortWait();
             {
-                ALOGD ("%s: aborting  sNfaEnableDisablePollingEvent", __FUNCTION__);
+                ALOGV("%s: aborting  sNfaEnableDisablePollingEvent", __func__);
                 SyncEventGuard guard (sNfaEnableDisablePollingEvent);
                 sNfaEnableDisablePollingEvent.notifyOne();
             }
             {
-                ALOGD ("%s: aborting  sNfaEnableEvent", __FUNCTION__);
+                ALOGV("%s: aborting  sNfaEnableEvent", __func__);
                 SyncEventGuard guard (sNfaEnableEvent);
                 sNfaEnableEvent.notifyOne();
             }
             {
-                ALOGD ("%s: aborting  sNfaDisableEvent", __FUNCTION__);
+                ALOGV("%s: aborting  sNfaDisableEvent", __func__);
                 SyncEventGuard guard (sNfaDisableEvent);
                 sNfaDisableEvent.notifyOne();
             }
@@ -731,7 +731,7 @@
                 sIsDisabling = false;
             }
             PowerSwitch::getInstance ().initialize (PowerSwitch::UNKNOWN_LEVEL);
-            ALOGE ("%s: crash NFC service", __FUNCTION__);
+            ALOGE("%s: crash NFC service", __func__);
             //////////////////////////////////////////////
             //crash the NFC service process so it can restart automatically
             abort ();
@@ -744,7 +744,7 @@
         break;
 
     default:
-        ALOGD ("%s: unhandled event", __FUNCTION__);
+        ALOGV("%s: unhandled event", __func__);
         break;
     }
 }
@@ -840,15 +840,15 @@
 *******************************************************************************/
 static jint nfcManager_doRegisterT3tIdentifier(JNIEnv* e, jobject, jbyteArray t3tIdentifier)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     ScopedByteArrayRO bytes(e, t3tIdentifier);
     uint8_t* buf = const_cast<uint8_t*>(reinterpret_cast<const uint8_t*>(&bytes[0]));
     size_t bufLen = bytes.size();
     int handle = RoutingManager::getInstance().registerT3tIdentifier(buf, bufLen);
 
-    ALOGD ("%s: handle=%d", __FUNCTION__, handle);
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: handle=%d", __func__, handle);
+    ALOGV("%s: exit", __func__);
 
     return handle;
 }
@@ -867,11 +867,11 @@
 *******************************************************************************/
 static void nfcManager_doDeregisterT3tIdentifier(JNIEnv*, jobject, jint handle)
 {
-    ALOGD ("%s: enter; handle=%d", __FUNCTION__, handle);
+    ALOGV("%s: enter; handle=%d", __func__, handle);
 
     RoutingManager::getInstance().deregisterT3tIdentifier(handle);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
 }
 
 /*******************************************************************************
@@ -887,9 +887,9 @@
 *******************************************************************************/
 static jint nfcManager_getLfT3tMax(JNIEnv*, jobject)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
-    ALOGD ("LF_T3T_MAX=%d", sLfT3tMax);
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
+    ALOGV("LF_T3T_MAX=%d", sLfT3tMax);
+    ALOGV("%s: exit", __func__);
 
     return sLfT3tMax;
 }
@@ -907,15 +907,15 @@
 *******************************************************************************/
 static jboolean nfcManager_doInitialize (JNIEnv* e, jobject o)
 {
-    ALOGD ("%s: enter; ver=%s nfa=%s NCI_VERSION=0x%02X",
-        __FUNCTION__, nfca_version_string, nfa_version_string, NCI_VERSION);
+    ALOGV("%s: enter; ver=%s nfa=%s NCI_VERSION=0x%02X",
+        __func__, nfca_version_string, nfa_version_string, NCI_VERSION);
     tNFA_STATUS stat = NFA_STATUS_OK;
 
     PowerSwitch & powerSwitch = PowerSwitch::getInstance ();
 
     if (sIsNfaEnabled)
     {
-        ALOGD ("%s: already enabled", __FUNCTION__);
+        ALOGV("%s: already enabled", __func__);
         goto TheEnd;
     }
 
@@ -970,7 +970,7 @@
                         nat->tech_mask = num;
                     else
                         nat->tech_mask = DEFAULT_TECH_MASK;
-                    ALOGD ("%s: tag polling tech mask=0x%X", __FUNCTION__, nat->tech_mask);
+                    ALOGV("%s: tag polling tech mask=0x%X", __func__, nat->tech_mask);
                 }
 
                 // if this value exists, set polling interval.
@@ -990,7 +990,7 @@
                     {
                         sNfaGetConfigEvent.wait ();
                         if (sCurrentConfigLen >= 4 || sConfig[1] == NCI_PARAM_ID_LF_T3T_MAX) {
-                            ALOGD("%s: lfT3tMax=%d", __FUNCTION__, sConfig[3]);
+                            ALOGV("%s: lfT3tMax=%d", __func__, sConfig[3]);
                             sLfT3tMax = sConfig[3];
                         }
                     }
@@ -1002,7 +1002,7 @@
             }
         }
 
-        ALOGE ("%s: fail nfa enable; error=0x%X", __FUNCTION__, stat);
+        ALOGE("%s: fail nfa enable; error=0x%X", __func__, stat);
 
         if (sIsNfaEnabled)
         {
@@ -1016,7 +1016,7 @@
 TheEnd:
     if (sIsNfaEnabled)
         PowerSwitch::getInstance ().setLevel (PowerSwitch::LOW_POWER);
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return sIsNfaEnabled ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -1045,11 +1045,11 @@
         tech_mask = (tNFA_TECHNOLOGY_MASK)nat->tech_mask;
     else if (technologies_mask != -1)
         tech_mask = (tNFA_TECHNOLOGY_MASK) technologies_mask;
-    ALOGD ("%s: enter; tech_mask = %02x", __FUNCTION__, tech_mask);
+    ALOGV("%s: enter; tech_mask = %02x", __func__, tech_mask);
 
     if (sDiscoveryEnabled && !restart)
     {
-        ALOGE ("%s: already discovering", __FUNCTION__);
+        ALOGE("%s: already discovering", __func__);
         return;
     }
 
@@ -1070,7 +1070,7 @@
         // Start P2P listening if tag polling was enabled
         if (sPollingEnabled)
         {
-            ALOGD ("%s: Enable p2pListening", __FUNCTION__);
+            ALOGV("%s: Enable p2pListening", __func__);
 
             if (enable_p2p && !sP2pEnabled) {
                 sP2pEnabled = true;
@@ -1120,7 +1120,7 @@
 
     PowerSwitch::getInstance ().setModeOn (PowerSwitch::DISCOVERY);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
 }
 
 
@@ -1138,12 +1138,12 @@
 void nfcManager_disableDiscovery (JNIEnv* e, jobject o)
 {
     tNFA_STATUS status = NFA_STATUS_OK;
-    ALOGD ("%s: enter;", __FUNCTION__);
+    ALOGV("%s: enter;", __func__);
 
     pn544InteropAbortNow ();
     if (sDiscoveryEnabled == false)
     {
-        ALOGD ("%s: already disabled", __FUNCTION__);
+        ALOGV("%s: already disabled", __func__);
         goto TheEnd;
     }
 
@@ -1160,7 +1160,7 @@
     if (! PowerSwitch::getInstance ().setModeOff (PowerSwitch::DISCOVERY))
         PowerSwitch::getInstance ().setLevel (PowerSwitch::LOW_POWER);
 TheEnd:
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
 }
 
 void enableDisableLptd (bool enable)
@@ -1180,24 +1180,24 @@
         stat = NFA_GetConfig(1, configParam);
         if (stat != NFA_STATUS_OK)
         {
-            ALOGE("%s: NFA_GetConfig failed", __FUNCTION__);
+            ALOGE("%s: NFA_GetConfig failed", __func__);
             return;
         }
         sNfaGetConfigEvent.wait ();
         if (sCurrentConfigLen < 4 || sConfig[1] != NCI_PARAM_ID_TAGSNIFF_CFG) {
-            ALOGE("%s: Config TLV length %d returned is too short", __FUNCTION__,
+            ALOGE("%s: Config TLV length %d returned is too short", __func__,
                     sCurrentConfigLen);
             return;
         }
         if (sConfig[3] == 0) {
-            ALOGE("%s: LPTD is disabled, not enabling in current config", __FUNCTION__);
+            ALOGE("%s: LPTD is disabled, not enabling in current config", __func__);
             return;
         }
         sHasLptd = true;
     }
     // Bail if we checked and didn't find any LPTD config before
     if (!sHasLptd) return;
-    UINT8 enable_byte = enable ? 0x01 : 0x00;
+    uint8_t enable_byte = enable ? 0x01 : 0x00;
 
     SyncEventGuard guard(sNfaSetConfigEvent);
 
@@ -1205,7 +1205,7 @@
     if (stat == NFA_STATUS_OK)
         sNfaSetConfigEvent.wait ();
     else
-        ALOGE("%s: Could not configure LPTD feature", __FUNCTION__);
+        ALOGE("%s: Could not configure LPTD feature", __func__);
     return;
 }
 
@@ -1232,13 +1232,13 @@
 
     ScopedUtfChars serviceName(e, sn);
 
-    ALOGD ("%s: enter: sap=%i; name=%s; miu=%i; rw=%i; buffLen=%i", __FUNCTION__, nSap, serviceName.c_str(), miu, rw, linearBufferLength);
+    ALOGV("%s: enter: sap=%i; name=%s; miu=%i; rw=%i; buffLen=%i", __func__, nSap, serviceName.c_str(), miu, rw, linearBufferLength);
 
     /* Create new NativeLlcpServiceSocket object */
     jobject serviceSocket = NULL;
     if (nfc_jni_cache_object_local(e, gNativeLlcpServiceSocketClassName, &(serviceSocket)) == -1)
     {
-        ALOGE ("%s: Llcp socket object creation error", __FUNCTION__);
+        ALOGE("%s: Llcp socket object creation error", __func__);
         return NULL;
     }
 
@@ -1247,13 +1247,13 @@
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE("%s: Llcp Socket get object class error", __FUNCTION__);
+        ALOGE("%s: Llcp Socket get object class error", __func__);
         return NULL;
     }
 
     if (!PeerToPeer::getInstance().registerServer (jniHandle, serviceName.c_str()))
     {
-        ALOGE("%s: RegisterServer error", __FUNCTION__);
+        ALOGE("%s: RegisterServer error", __func__);
         return NULL;
     }
 
@@ -1262,25 +1262,25 @@
     /* Set socket handle to be the same as the NfaHandle*/
     f = e->GetFieldID(clsNativeLlcpServiceSocket.get(), "mHandle", "I");
     e->SetIntField(serviceSocket, f, (jint) jniHandle);
-    ALOGD ("%s: socket Handle = 0x%X", __FUNCTION__, jniHandle);
+    ALOGV("%s: socket Handle = 0x%X", __func__, jniHandle);
 
     /* Set socket linear buffer length */
     f = e->GetFieldID(clsNativeLlcpServiceSocket.get(), "mLocalLinearBufferLength", "I");
     e->SetIntField(serviceSocket, f,(jint)linearBufferLength);
-    ALOGD ("%s: buffer length = %d", __FUNCTION__, linearBufferLength);
+    ALOGV("%s: buffer length = %d", __func__, linearBufferLength);
 
     /* Set socket MIU */
     f = e->GetFieldID(clsNativeLlcpServiceSocket.get(), "mLocalMiu", "I");
     e->SetIntField(serviceSocket, f,(jint)miu);
-    ALOGD ("%s: MIU = %d", __FUNCTION__, miu);
+    ALOGV("%s: MIU = %d", __func__, miu);
 
     /* Set socket RW */
     f = e->GetFieldID(clsNativeLlcpServiceSocket.get(), "mLocalRw", "I");
     e->SetIntField(serviceSocket, f,(jint)rw);
-    ALOGD ("%s:  RW = %d", __FUNCTION__, rw);
+    ALOGV("%s:  RW = %d", __func__, rw);
 
     sLastError = 0;
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return serviceSocket;
 }
 
@@ -1298,7 +1298,7 @@
 *******************************************************************************/
 static jint nfcManager_doGetLastError(JNIEnv*, jobject)
 {
-    ALOGD ("%s: last error=%i", __FUNCTION__, sLastError);
+    ALOGV("%s: last error=%i", __func__, sLastError);
     return sLastError;
 }
 
@@ -1316,7 +1316,7 @@
 *******************************************************************************/
 static jboolean nfcManager_doDeinitialize (JNIEnv*, jobject)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     sIsDisabling = true;
 
@@ -1331,13 +1331,13 @@
         tNFA_STATUS stat = NFA_Disable (TRUE /* graceful */);
         if (stat == NFA_STATUS_OK)
         {
-            ALOGD ("%s: wait for completion", __FUNCTION__);
+            ALOGV("%s: wait for completion", __func__);
             sNfaDisableEvent.wait (); //wait for NFA command to finish
             PeerToPeer::getInstance ().handleNfcOnOff (false);
         }
         else
         {
-            ALOGE ("%s: fail disable; error=0x%X", __FUNCTION__, stat);
+            ALOGE("%s: fail disable; error=0x%X", __func__, stat);
         }
     }
     nativeNfcTag_abortWaits();
@@ -1361,7 +1361,7 @@
     NfcAdaptation& theInstance = NfcAdaptation::GetInstance();
     theInstance.Finalize();
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return JNI_TRUE;
 }
 
@@ -1383,7 +1383,7 @@
 *******************************************************************************/
 static jobject nfcManager_doCreateLlcpSocket (JNIEnv* e, jobject, jint nSap, jint miu, jint rw, jint linearBufferLength)
 {
-    ALOGD ("%s: enter; sap=%d; miu=%d; rw=%d; buffer len=%d", __FUNCTION__, nSap, miu, rw, linearBufferLength);
+    ALOGV("%s: enter; sap=%d; miu=%d; rw=%d; buffer len=%d", __func__, nSap, miu, rw, linearBufferLength);
 
     PeerToPeer::tJNI_HANDLE jniHandle = PeerToPeer::getInstance().getNewJniHandle ();
     PeerToPeer::getInstance().createClient (jniHandle, miu, rw);
@@ -1392,7 +1392,7 @@
     jobject clientSocket = NULL;
     if (nfc_jni_cache_object_local(e, gNativeLlcpSocketClassName, &(clientSocket)) == -1)
     {
-        ALOGE ("%s: fail Llcp socket creation", __FUNCTION__);
+        ALOGE("%s: fail Llcp socket creation", __func__);
         return clientSocket;
     }
 
@@ -1401,7 +1401,7 @@
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("%s: fail get class object", __FUNCTION__);
+        ALOGE("%s: fail get class object", __func__);
         return clientSocket;
     }
 
@@ -1423,7 +1423,7 @@
     f = e->GetFieldID (clsNativeLlcpSocket.get(), "mLocalRw", "I");
     e->SetIntField (clientSocket, f, (jint) rw);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return clientSocket;
 }
 
@@ -1443,7 +1443,7 @@
 *******************************************************************************/
 static jobject nfcManager_doCreateLlcpConnectionlessSocket (JNIEnv *, jobject, jint nSap, jstring /*sn*/)
 {
-    ALOGD ("%s: nSap=0x%X", __FUNCTION__, nSap);
+    ALOGV("%s: nSap=0x%X", __func__, nSap);
     return NULL;
 }
 
@@ -1494,7 +1494,7 @@
 *******************************************************************************/
 static jboolean nfcManager_doCheckLlcp(JNIEnv*, jobject)
 {
-    ALOGD("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return JNI_TRUE;
 }
 
@@ -1510,7 +1510,7 @@
 *******************************************************************************/
 static jboolean nfcManager_doActivateLlcp(JNIEnv*, jobject)
 {
-    ALOGD("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return JNI_TRUE;
 }
 
@@ -1524,10 +1524,11 @@
 ** Returns:         None
 **
 *******************************************************************************/
-static void nfcManager_doAbort(JNIEnv*, jobject)
+static void nfcManager_doAbort(JNIEnv* e, jobject, jstring msg)
 {
-    ALOGE("%s: abort()", __FUNCTION__);
-    abort();
+    ScopedUtfChars message = {e, msg};
+    e->FatalError(message.c_str());
+    abort(); // <-- Unreachable
 }
 
 
@@ -1542,13 +1543,13 @@
 *******************************************************************************/
 static jboolean nfcManager_doDownload(JNIEnv*, jobject)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     NfcAdaptation& theInstance = NfcAdaptation::GetInstance();
 
     theInstance.Initialize(); //start GKI, NCI task, NFC task
     theInstance.DownloadFirmware ();
     theInstance.Finalize();
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return JNI_TRUE;
 }
 
@@ -1564,7 +1565,7 @@
 *******************************************************************************/
 static void nfcManager_doResetTimeouts(JNIEnv*, jobject)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     NfcTag::getInstance().resetAllTransceiveTimeouts ();
 }
 
@@ -1586,10 +1587,10 @@
 {
     if (timeout <= 0)
     {
-        ALOGE("%s: Timeout must be positive.",__FUNCTION__);
+        ALOGE("%s: Timeout must be positive.",__func__);
         return false;
     }
-    ALOGD ("%s: tech=%d, timeout=%d", __FUNCTION__, tech, timeout);
+    ALOGV("%s: tech=%d, timeout=%d", __func__, tech, timeout);
     NfcTag::getInstance().setTransceiveTimeout (tech, timeout);
     return true;
 }
@@ -1610,7 +1611,7 @@
 static jint nfcManager_doGetTimeout(JNIEnv*, jobject, jint tech)
 {
     int timeout = NfcTag::getInstance().getTransceiveTimeout (tech);
-    ALOGD ("%s: tech=%d, timeout=%d", __FUNCTION__, tech, timeout);
+    ALOGV("%s: tech=%d, timeout=%d", __func__, tech, timeout);
     return timeout;
 }
 
@@ -1650,7 +1651,7 @@
 *******************************************************************************/
 static void nfcManager_doSetP2pInitiatorModes (JNIEnv *e, jobject o, jint modes)
 {
-    ALOGD ("%s: modes=0x%X", __FUNCTION__, modes);
+    ALOGV("%s: modes=0x%X", __func__, modes);
     struct nfc_jni_native_data *nat = getNative(e, o);
 
     tNFA_TECHNOLOGY_MASK mask = 0;
@@ -1678,7 +1679,7 @@
 *******************************************************************************/
 static void nfcManager_doSetP2pTargetModes (JNIEnv*, jobject, jint modes)
 {
-    ALOGD ("%s: modes=0x%X", __FUNCTION__, modes);
+    ALOGV("%s: modes=0x%X", __func__, modes);
     // Map in the right modes
     tNFA_TECHNOLOGY_MASK mask = 0;
     if (modes & 0x01) mask |= NFA_TECHNOLOGY_MASK_A;
@@ -1772,7 +1773,7 @@
     {"doResetTimeouts", "()V",
             (void *)nfcManager_doResetTimeouts},
 
-    {"doAbort", "()V",
+    {"doAbort", "(Ljava/lang/String;)V",
             (void *)nfcManager_doAbort},
 
     {"doSetP2pInitiatorModes", "(I)V",
@@ -1804,9 +1805,9 @@
 *******************************************************************************/
 int register_com_android_nfc_NativeNfcManager (JNIEnv *e)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     PowerSwitch::getInstance ().initialize (PowerSwitch::UNKNOWN_LEVEL);
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return jniRegisterNativeMethods (e, gNativeNfcManagerClassName, gMethods, NELEM (gMethods));
 }
 
@@ -1825,7 +1826,7 @@
 {
     tNFA_STATUS status = NFA_STATUS_FAILED;
 
-    ALOGD ("%s: is start=%d", __FUNCTION__, isStart);
+    ALOGV("%s: is start=%d", __func__, isStart);
     SyncEventGuard guard (sNfaEnableDisablePollingEvent);
     status  = isStart ? NFA_StartRfDiscovery () : NFA_StopRfDiscovery ();
     if (status == NFA_STATUS_OK)
@@ -1835,7 +1836,7 @@
     }
     else
     {
-        ALOGE ("%s: Failed to start/stop RF discovery; error=0x%X", __FUNCTION__, status);
+        ALOGE("%s: Failed to start/stop RF discovery; error=0x%X", __func__, status);
     }
 }
 
@@ -1873,7 +1874,7 @@
     // If polling for Active mode, set the ordering so that we choose Active over Passive mode first.
     if (nat && (nat->tech_mask & (NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE)))
     {
-        UINT8  act_mode_order_param[] = { 0x01 };
+        uint8_t  act_mode_order_param[] = { 0x01 };
         SyncEventGuard guard (sNfaSetConfigEvent);
         stat = NFA_SetConfig(NCI_PARAM_ID_ACT_ORDER, sizeof(act_mode_order_param), &act_mode_order_param[0]);
         if (stat == NFA_STATUS_OK)
@@ -1883,11 +1884,11 @@
     //configure RF polling frequency for each technology
     static tNFA_DM_DISC_FREQ_CFG nfa_dm_disc_freq_cfg;
     //values in the polling_frequency[] map to members of nfa_dm_disc_freq_cfg
-    UINT8 polling_frequency [8] = {1, 1, 1, 1, 1, 1, 1, 1};
+    uint8_t polling_frequency [8] = {1, 1, 1, 1, 1, 1, 1, 1};
     actualLen = GetStrValue(NAME_POLL_FREQUENCY, (char*)polling_frequency, 8);
     if (actualLen == 8)
     {
-        ALOGD ("%s: polling frequency", __FUNCTION__);
+        ALOGV("%s: polling frequency", __func__);
         memset (&nfa_dm_disc_freq_cfg, 0, sizeof(nfa_dm_disc_freq_cfg));
         nfa_dm_disc_freq_cfg.pa = polling_frequency [0];
         nfa_dm_disc_freq_cfg.pb = polling_frequency [1];
@@ -1928,14 +1929,14 @@
 *******************************************************************************/
 void startStopPolling (bool isStartPolling)
 {
-    ALOGD ("%s: enter; isStart=%u", __FUNCTION__, isStartPolling);
+    ALOGV("%s: enter; isStart=%u", __func__, isStartPolling);
     startRfDiscovery (false);
 
     if (isStartPolling) startPolling_rfDiscoveryDisabled(0);
     else stopPolling_rfDiscoveryDisabled();
 
     startRfDiscovery (true);
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
 }
 
 
@@ -1949,17 +1950,17 @@
     else if (tech_mask == 0) tech_mask = DEFAULT_TECH_MASK;
 
     SyncEventGuard guard (sNfaEnableDisablePollingEvent);
-    ALOGD ("%s: enable polling", __FUNCTION__);
+    ALOGV("%s: enable polling", __func__);
     stat = NFA_EnablePolling (tech_mask);
     if (stat == NFA_STATUS_OK)
     {
-        ALOGD ("%s: wait for enable event", __FUNCTION__);
+        ALOGV("%s: wait for enable event", __func__);
         sPollingEnabled = true;
         sNfaEnableDisablePollingEvent.wait (); //wait for NFA_POLL_ENABLED_EVT
     }
     else
     {
-        ALOGE ("%s: fail enable polling; error=0x%X", __FUNCTION__, stat);
+        ALOGE("%s: fail enable polling; error=0x%X", __func__, stat);
     }
 
     return stat;
@@ -1969,13 +1970,13 @@
     tNFA_STATUS stat = NFA_STATUS_FAILED;
 
     SyncEventGuard guard (sNfaEnableDisablePollingEvent);
-    ALOGD ("%s: disable polling", __FUNCTION__);
+    ALOGV("%s: disable polling", __func__);
     stat = NFA_DisablePolling ();
     if (stat == NFA_STATUS_OK) {
         sPollingEnabled = false;
         sNfaEnableDisablePollingEvent.wait (); //wait for NFA_POLL_DISABLED_EVT
     } else {
-        ALOGE ("%s: fail disable polling; error=0x%X", __FUNCTION__, stat);
+        ALOGE("%s: fail disable polling; error=0x%X", __func__, stat);
     }
 
     return stat;
diff --git a/nci/jni/NativeNfcTag.cpp b/nci/jni/NativeNfcTag.cpp
old mode 100755
new mode 100644
index 5ebc561..6361bc9
--- a/nci/jni/NativeNfcTag.cpp
+++ b/nci/jni/NativeNfcTag.cpp
@@ -20,7 +20,7 @@
 #include <time.h>
 #include <signal.h>
 #include <string.h>
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "NfcJniUtil.h"
 #include "NfcTag.h"
 #include "config.h"
@@ -73,7 +73,7 @@
 
 // Pre-defined tag type values. These must match the values in
 // framework Ndef.java for Google public NFC API.
-#define NDEF_UNKNOWN_TYPE          -1
+#define NDEF_UNKNOWN_TYPE          (-1)
 #define NDEF_TYPE1_TAG             1
 #define NDEF_TYPE2_TAG             2
 #define NDEF_TYPE3_TAG             3
@@ -87,7 +87,7 @@
 static bool         sCheckNdefCapable = false; //whether tag has NDEF capability
 static tNFA_HANDLE  sNdefTypeHandlerHandle = NFA_HANDLE_INVALID;
 static tNFA_INTF_TYPE   sCurrentRfInterface = NFA_INTERFACE_ISO_DEP;
-static std::basic_string<UINT8> sRxDataBuffer;
+static std::basic_string<uint8_t> sRxDataBuffer;
 static tNFA_STATUS  sRxDataStatus = NFA_STATUS_OK;
 static bool         sWaitingForTransceive = false;
 static bool         sTransceiveRfTimeout = false;
@@ -133,7 +133,7 @@
 *******************************************************************************/
 void nativeNfcTag_abortWaits ()
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     {
         SyncEventGuard g (sReadEvent);
         sReadEvent.notifyOne ();
@@ -173,7 +173,7 @@
 *******************************************************************************/
 void nativeNfcTag_doReadCompleted (tNFA_STATUS status)
 {
-    ALOGD ("%s: status=0x%X; is reading=%u", __FUNCTION__, status, sIsReadingNdefMessage);
+    ALOGV("%s: status=0x%X; is reading=%u", __func__, status, sIsReadingNdefMessage);
 
     if (sIsReadingNdefMessage == false)
         return; //not reading NDEF message right now, so just return
@@ -218,21 +218,21 @@
 *******************************************************************************/
 static void ndefHandlerCallback (tNFA_NDEF_EVT event, tNFA_NDEF_EVT_DATA *eventData)
 {
-    ALOGD ("%s: event=%u, eventData=%p", __FUNCTION__, event, eventData);
+    ALOGV("%s: event=%u, eventData=%p", __func__, event, eventData);
 
     switch (event)
     {
     case NFA_NDEF_REGISTER_EVT:
         {
             tNFA_NDEF_REGISTER& ndef_reg = eventData->ndef_reg;
-            ALOGD ("%s: NFA_NDEF_REGISTER_EVT; status=0x%X; h=0x%X", __FUNCTION__, ndef_reg.status, ndef_reg.ndef_type_handle);
+            ALOGV("%s: NFA_NDEF_REGISTER_EVT; status=0x%X; h=0x%X", __func__, ndef_reg.status, ndef_reg.ndef_type_handle);
             sNdefTypeHandlerHandle = ndef_reg.ndef_type_handle;
         }
         break;
 
     case NFA_NDEF_DATA_EVT:
         {
-            ALOGD ("%s: NFA_NDEF_DATA_EVT; data_len = %lu", __FUNCTION__, eventData->ndef_data.len);
+            ALOGV("%s: NFA_NDEF_DATA_EVT; data_len = %u", __func__, eventData->ndef_data.len);
             sReadDataLen = eventData->ndef_data.len;
             sReadData = (uint8_t*) malloc (sReadDataLen);
             memcpy (sReadData, eventData->ndef_data.p_data, eventData->ndef_data.len);
@@ -240,7 +240,7 @@
         break;
 
     default:
-        ALOGE ("%s: Unknown event %u ????", __FUNCTION__, event);
+        ALOGE("%s: Unknown event %u ????", __func__, event);
         break;
     }
 }
@@ -259,7 +259,7 @@
 *******************************************************************************/
 static jbyteArray nativeNfcTag_doRead (JNIEnv* e, jobject)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     tNFA_STATUS status = NFA_STATUS_FAILED;
     jbyteArray buf = NULL;
 
@@ -289,14 +289,14 @@
 
         if (sReadDataLen > 0) //if stack actually read data from the tag
         {
-            ALOGD ("%s: read %u bytes", __FUNCTION__, sReadDataLen);
+            ALOGV("%s: read %u bytes", __func__, sReadDataLen);
             buf = e->NewByteArray (sReadDataLen);
             e->SetByteArrayRegion (buf, 0, sReadDataLen, (jbyte*) sReadData);
         }
     }
     else
     {
-        ALOGD ("%s: create empty buffer", __FUNCTION__);
+        ALOGV("%s: create empty buffer", __func__);
         sReadDataLen = 0;
         sReadData = (uint8_t*) malloc (1);
         buf = e->NewByteArray (sReadDataLen);
@@ -310,7 +310,7 @@
     }
     sReadDataLen = 0;
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return buf;
 }
 
@@ -372,18 +372,18 @@
     jboolean result = JNI_FALSE;
     tNFA_STATUS status = 0;
     const int maxBufferSize = 1024;
-    UINT8 buffer[maxBufferSize] = { 0 };
-    UINT32 curDataSize = 0;
+    uint8_t buffer[maxBufferSize] = { 0 };
+    uint32_t curDataSize = 0;
 
     ScopedByteArrayRO bytes(e, buf);
-    UINT8* p_data = const_cast<UINT8*>(reinterpret_cast<const UINT8*>(&bytes[0])); // TODO: const-ness API bug in NFA_RwWriteNDef!
+    uint8_t* p_data = const_cast<uint8_t*>(reinterpret_cast<const uint8_t*>(&bytes[0])); // TODO: const-ness API bug in NFA_RwWriteNDef!
 
-    ALOGD ("%s: enter; len = %zu", __FUNCTION__, bytes.size());
+    ALOGV("%s: enter; len = %zu", __func__, bytes.size());
 
     /* Create the write semaphore */
     if (sem_init (&sWriteSem, 0, 0) == -1)
     {
-        ALOGE ("%s: semaphore creation failed (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: semaphore creation failed (errno=0x%08x)", __func__, errno);
         return JNI_FALSE;
     }
 
@@ -394,7 +394,7 @@
         //and tag is capable of storing NDEF message
         if (sCheckNdefCapable)
         {
-            ALOGD ("%s: try format", __FUNCTION__);
+            ALOGV("%s: try format", __func__);
             sem_init (&sFormatSem, 0, 0);
             sFormatOk = false;
             if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
@@ -405,7 +405,7 @@
                 status = EXTNS_MfcFormatTag (mfc_key1, sizeof(mfc_key1));
                 if (status != NFA_STATUS_OK)
                 {
-                    ALOGE ("%s: can't format mifare classic tag", __FUNCTION__);
+                    ALOGE("%s: can't format mifare classic tag", __func__);
                     sem_destroy (&sFormatSem);
                     goto TheEnd;
                 }
@@ -418,7 +418,7 @@
                     status = EXTNS_MfcFormatTag (mfc_key2, sizeof(mfc_key2));
                     if (status != NFA_STATUS_OK)
                     {
-                        ALOGE ("%s: can't format mifare classic tag", __FUNCTION__);
+                        ALOGE("%s: can't format mifare classic tag", __func__);
                         sem_destroy (&sFormatSem);
                         goto TheEnd;
                     }
@@ -433,7 +433,7 @@
             if (sFormatOk == false) //if format operation failed
                 goto TheEnd;
         }
-        ALOGD ("%s: try write", __FUNCTION__);
+        ALOGV("%s: try write", __func__);
         status = NFA_RwWriteNDef (p_data, bytes.size());
     }
     else if (bytes.size() == 0)
@@ -441,7 +441,7 @@
         //if (NXP TagWriter wants to erase tag) then create and write an empty ndef message
         NDEF_MsgInit (buffer, maxBufferSize, &curDataSize);
         status = NDEF_MsgAddRec (buffer, maxBufferSize, &curDataSize, NDEF_TNF_EMPTY, NULL, 0, NULL, 0, NULL, 0);
-        ALOGD ("%s: create empty ndef msg; status=%u; size=%lu", __FUNCTION__, status, curDataSize);
+        ALOGV("%s: create empty ndef msg; status=%u; size=%u", __func__, status, curDataSize);
         if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
         {
             status = EXTNS_MfcWriteNDef (buffer, curDataSize);
@@ -453,7 +453,7 @@
     }
     else
     {
-        ALOGD ("%s: NFA_RwWriteNDef", __FUNCTION__);
+        ALOGV("%s: NFA_RwWriteNDef", __func__);
         if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
         {
             status = EXTNS_MfcWriteNDef (p_data, bytes.size());
@@ -466,7 +466,7 @@
 
     if (status != NFA_STATUS_OK)
     {
-        ALOGE ("%s: write/format error=%d", __FUNCTION__, status);
+        ALOGE("%s: write/format error=%d", __func__, status);
         goto TheEnd;
     }
 
@@ -474,7 +474,7 @@
     sWriteOk = false;
     if (sem_wait (&sWriteSem))
     {
-        ALOGE ("%s: wait semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: wait semaphore (errno=0x%08x)", __func__, errno);
         goto TheEnd;
     }
 
@@ -484,10 +484,10 @@
     /* Destroy semaphore */
     if (sem_destroy (&sWriteSem))
     {
-        ALOGE ("%s: failed destroy semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: failed destroy semaphore (errno=0x%08x)", __func__, errno);
     }
     sWriteWaitingForComplete = JNI_FALSE;
-    ALOGD ("%s: exit; result=%d", __FUNCTION__, result);
+    ALOGV("%s: exit; result=%d", __func__, result);
     return result;
 }
 
@@ -560,21 +560,21 @@
 *******************************************************************************/
 static jint nativeNfcTag_doConnect (JNIEnv*, jobject, jint targetHandle)
 {
-    ALOGD ("%s: targetHandle = %d", __FUNCTION__, targetHandle);
+    ALOGV("%s: targetHandle = %d", __func__, targetHandle);
     int i = targetHandle;
     NfcTag& natTag = NfcTag::getInstance ();
     int retCode = NFCSTATUS_SUCCESS;
 
     if (i >= NfcTag::MAX_NUM_TECHNOLOGY)
     {
-        ALOGE ("%s: Handle not found", __FUNCTION__);
+        ALOGE("%s: Handle not found", __func__);
         retCode = NFCSTATUS_FAILED;
         goto TheEnd;
     }
 
     if (natTag.getActivationState() != NfcTag::Active)
     {
-        ALOGE ("%s: tag already deactivated", __FUNCTION__);
+        ALOGE("%s: tag already deactivated", __func__);
         retCode = NFCSTATUS_FAILED;
         goto TheEnd;
     }
@@ -584,14 +584,14 @@
 
     if (sCurrentConnectedTargetProtocol != NFC_PROTOCOL_ISO_DEP)
     {
-        ALOGD ("%s() Nfc type = %d, do nothing for non ISO_DEP", __FUNCTION__, sCurrentConnectedTargetProtocol);
+        ALOGV("%s() Nfc type = %d, do nothing for non ISO_DEP", __func__, sCurrentConnectedTargetProtocol);
         retCode = NFCSTATUS_SUCCESS;
         goto TheEnd;
     }
 
     if (sCurrentConnectedTargetType == TARGET_TYPE_ISO14443_3A || sCurrentConnectedTargetType == TARGET_TYPE_ISO14443_3B)
     {
-        ALOGD ("%s: switching to tech: %d need to switch rf intf to frame", __FUNCTION__, sCurrentConnectedTargetType);
+        ALOGV("%s: switching to tech: %d need to switch rf intf to frame", __func__, sCurrentConnectedTargetType);
         retCode = switchRfInterface(NFA_INTERFACE_FRAME) ? NFA_STATUS_OK : NFA_STATUS_FAILED;
     }
     else
@@ -600,7 +600,7 @@
     }
 
 TheEnd:
-    ALOGD ("%s: exit 0x%X", __FUNCTION__, retCode);
+    ALOGV("%s: exit 0x%X", __func__, retCode);
     return retCode;
 }
 
@@ -618,7 +618,7 @@
 *******************************************************************************/
 static int reSelect (tNFA_INTF_TYPE rfInterface, bool fSwitchIfNeeded)
 {
-    ALOGD ("%s: enter; rf intf = %d, current intf = %d", __FUNCTION__, rfInterface, sCurrentRfInterface);
+    ALOGV("%s: enter; rf intf = %d, current intf = %d", __func__, rfInterface, sCurrentRfInterface);
 
     sRfInterfaceMutex.lock ();
 
@@ -639,7 +639,7 @@
         //if tag has shutdown, abort this method
         if (NfcTag::getInstance ().isNdefDetectionTimedOut())
         {
-            ALOGD ("%s: ndef detection timeout; break", __FUNCTION__);
+            ALOGV("%s: ndef detection timeout; break", __func__);
             rVal = STATUS_CODE_TARGET_LOST;
             break;
         }
@@ -648,16 +648,16 @@
             SyncEventGuard g (sReconnectEvent);
             gIsTagDeactivating = true;
             sGotDeactivate = false;
-            ALOGD ("%s: deactivate to sleep", __FUNCTION__);
+            ALOGV("%s: deactivate to sleep", __func__);
             if (NFA_STATUS_OK != (status = NFA_Deactivate (TRUE))) //deactivate to sleep state
             {
-                ALOGE ("%s: deactivate failed, status = %d", __FUNCTION__, status);
+                ALOGE("%s: deactivate failed, status = %d", __func__, status);
                 break;
             }
 
             if (sReconnectEvent.wait (1000) == false) //if timeout occurred
             {
-                ALOGE ("%s: timeout waiting for deactivate", __FUNCTION__);
+                ALOGE("%s: timeout waiting for deactivate", __func__);
             }
         }
 
@@ -669,7 +669,7 @@
 
         if (NfcTag::getInstance ().getActivationState () != NfcTag::Sleep)
         {
-            ALOGE ("%s: tag is not in sleep", __FUNCTION__);
+            ALOGE("%s: tag is not in sleep", __func__);
             rVal = STATUS_CODE_TARGET_LOST;
             break;
         }
@@ -680,26 +680,26 @@
             SyncEventGuard g2 (sReconnectEvent);
 
             sConnectWaitingForComplete = JNI_TRUE;
-            ALOGD ("%s: select interface %u", __FUNCTION__, rfInterface);
+            ALOGV("%s: select interface %u", __func__, rfInterface);
             gIsSelectingRfInterface = true;
             if (NFA_STATUS_OK != (status = NFA_Select (natTag.mTechHandles[0], natTag.mTechLibNfcTypes[0], rfInterface)))
             {
-                ALOGE ("%s: NFA_Select failed, status = %d", __FUNCTION__, status);
+                ALOGE("%s: NFA_Select failed, status = %d", __func__, status);
                 break;
             }
 
             sConnectOk = false;
             if (sReconnectEvent.wait (1000) == false) //if timeout occured
             {
-                ALOGE ("%s: timeout waiting for select", __FUNCTION__);
+                ALOGE("%s: timeout waiting for select", __func__);
                 break;
             }
         }
 
-        ALOGD("%s: select completed; sConnectOk=%d", __FUNCTION__, sConnectOk);
+        ALOGV("%s: select completed; sConnectOk=%d", __func__, sConnectOk);
         if (NfcTag::getInstance ().getActivationState () != NfcTag::Active)
         {
-            ALOGE("%s: tag is not active", __FUNCTION__);
+            ALOGE("%s: tag is not active", __func__);
             rVal = STATUS_CODE_TARGET_LOST;
             break;
         }
@@ -718,7 +718,7 @@
     gIsTagDeactivating = false;
     gIsSelectingRfInterface = false;
     sRfInterfaceMutex.unlock ();
-    ALOGD ("%s: exit; status=%d", __FUNCTION__, rVal);
+    ALOGV("%s: exit; status=%d", __func__, rVal);
     return rVal;
 }
 
@@ -738,11 +738,11 @@
 
     if (sCurrentConnectedTargetProtocol != NFC_PROTOCOL_ISO_DEP)
     {
-        ALOGD ("%s: protocol: %d not ISO_DEP, do nothing", __FUNCTION__, natTag.mTechLibNfcTypes[0]);
+        ALOGV("%s: protocol: %d not ISO_DEP, do nothing", __func__, natTag.mTechLibNfcTypes[0]);
         return true;
     }
 
-    ALOGD ("%s: new rf intf = %d, cur rf intf = %d", __FUNCTION__, rfInterface, sCurrentRfInterface);
+    ALOGV("%s: new rf intf = %d, cur rf intf = %d", __func__, rfInterface, sCurrentRfInterface);
 
     return (0 == reSelect(rfInterface, true));
 }
@@ -761,13 +761,13 @@
 *******************************************************************************/
 static jint nativeNfcTag_doReconnect (JNIEnv*, jobject)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     int retCode = NFCSTATUS_SUCCESS;
     NfcTag& natTag = NfcTag::getInstance ();
 
     if (natTag.getActivationState() != NfcTag::Active)
     {
-        ALOGE ("%s: tag already deactivated", __FUNCTION__);
+        ALOGE("%s: tag already deactivated", __func__);
         retCode = NFCSTATUS_FAILED;
         goto TheEnd;
     }
@@ -775,7 +775,7 @@
     // special case for Kovio
     if (sCurrentConnectedTargetProtocol == TARGET_TYPE_KOVIO_BARCODE)
     {
-        ALOGD ("%s: fake out reconnect for Kovio", __FUNCTION__);
+        ALOGV("%s: fake out reconnect for Kovio", __func__);
         goto TheEnd;
     }
 
@@ -788,7 +788,7 @@
         retCode = reSelect (NFA_INTERFACE_MIFARE, false);
 
 TheEnd:
-    ALOGD ("%s: exit 0x%X", __FUNCTION__, retCode);
+    ALOGV("%s: exit 0x%X", __func__, retCode);
     return retCode;
 }
 
@@ -807,7 +807,7 @@
 *******************************************************************************/
 static jint nativeNfcTag_doHandleReconnect (JNIEnv *e, jobject o, jint targetHandle)
 {
-    ALOGD ("%s: targetHandle = %d", __FUNCTION__, targetHandle);
+    ALOGV("%s: targetHandle = %d", __func__, targetHandle);
     return nativeNfcTag_doConnect (e, o, targetHandle);
 }
 
@@ -825,23 +825,23 @@
 *******************************************************************************/
 static jboolean nativeNfcTag_doDisconnect (JNIEnv*, jobject)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     tNFA_STATUS nfaStat = NFA_STATUS_OK;
 
     NfcTag::getInstance().resetAllTransceiveTimeouts ();
 
     if (NfcTag::getInstance ().getActivationState () != NfcTag::Active)
     {
-        ALOGE ("%s: tag already deactivated", __FUNCTION__);
+        ALOGE("%s: tag already deactivated", __func__);
         goto TheEnd;
     }
 
     nfaStat = NFA_Deactivate (FALSE);
     if (nfaStat != NFA_STATUS_OK)
-        ALOGE ("%s: deactivate failed; error=0x%X", __FUNCTION__, nfaStat);
+        ALOGE("%s: deactivate failed; error=0x%X", __func__, nfaStat);
 
 TheEnd:
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return (nfaStat == NFA_STATUS_OK) ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -861,7 +861,7 @@
 void nativeNfcTag_doTransceiveStatus (tNFA_STATUS status, uint8_t* buf, uint32_t bufLen)
 {
     SyncEventGuard g (sTransceiveEvent);
-    ALOGD ("%s: data len=%d", __FUNCTION__, bufLen);
+    ALOGV("%s: data len=%d", __func__, bufLen);
 
     if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
     {
@@ -874,7 +874,7 @@
 
     if (!sWaitingForTransceive)
     {
-        ALOGE ("%s: drop data", __FUNCTION__);
+        ALOGE("%s: drop data", __func__);
         return;
     }
     sRxDataStatus = status;
@@ -889,7 +889,7 @@
 void nativeNfcTag_notifyRfTimeout ()
 {
     SyncEventGuard g (sTransceiveEvent);
-    ALOGD ("%s: waiting for transceive: %d", __FUNCTION__, sWaitingForTransceive);
+    ALOGV("%s: waiting for transceive: %d", __func__, sWaitingForTransceive);
     if (!sWaitingForTransceive)
         return;
 
@@ -915,7 +915,7 @@
 static jbyteArray nativeNfcTag_doTransceive (JNIEnv* e, jobject o, jbyteArray data, jboolean raw, jintArray statusTargetLost)
 {
     int timeout = NfcTag::getInstance ().getTransceiveTimeout (sCurrentConnectedTargetType);
-    ALOGD ("%s: enter; raw=%u; timeout = %d", __FUNCTION__, raw, timeout);
+    ALOGV("%s: enter; raw=%u; timeout = %d", __func__, raw, timeout);
 
     bool waitOk = false;
     bool isNack = false;
@@ -931,7 +931,7 @@
                 *targetLost = 1; //causes NFC service to throw TagLostException
             e->ReleaseIntArrayElements (statusTargetLost, targetLost, 0);
         }
-        ALOGD ("%s: tag not active", __FUNCTION__);
+        ALOGV("%s: tag not active", __func__);
         return NULL;
     }
 
@@ -972,7 +972,7 @@
 
             if (status != NFA_STATUS_OK)
             {
-                ALOGE ("%s: fail send; error=%d", __FUNCTION__, status);
+                ALOGE("%s: fail send; error=%d", __func__, status);
                 break;
             }
             waitOk = sTransceiveEvent.wait (timeout);
@@ -980,7 +980,7 @@
 
         if (waitOk == false || sTransceiveRfTimeout) //if timeout occurred
         {
-            ALOGE ("%s: wait response timeout", __FUNCTION__);
+            ALOGE("%s: wait response timeout", __func__);
             if (targetLost)
                 *targetLost = 1; //causes NFC service to throw TagLostException
             break;
@@ -988,13 +988,13 @@
 
         if (NfcTag::getInstance ().getActivationState () != NfcTag::Active)
         {
-            ALOGE ("%s: already deactivated", __FUNCTION__);
+            ALOGE("%s: already deactivated", __func__);
             if (targetLost)
                 *targetLost = 1; //causes NFC service to throw TagLostException
             break;
         }
 
-        ALOGD ("%s: response %zu bytes", __FUNCTION__, sRxDataBuffer.size());
+        ALOGV("%s: response %zu bytes", __func__, sRxDataBuffer.size());
 
         if ((natTag.getProtocol () == NFA_PROTOCOL_T2T) &&
             natTag.isT2tNackResponse (sRxDataBuffer.data(), sRxDataBuffer.size()))
@@ -1009,9 +1009,9 @@
                 //Some Mifare Ultralight C tags enter the HALT state after it
                 //responds with a NACK.  Need to perform a "reconnect" operation
                 //to wake it.
-                ALOGD ("%s: try reconnect", __FUNCTION__);
+                ALOGV("%s: try reconnect", __func__);
                 nativeNfcTag_doReconnect (NULL, NULL);
-                ALOGD ("%s: reconnect finish", __FUNCTION__);
+                ALOGV("%s: reconnect finish", __func__);
             }
             else if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
             {
@@ -1032,7 +1032,7 @@
                         e->SetByteArrayRegion (result.get (), 0, transDataLen, (const jbyte *) transData);
                     }
                     else
-                        ALOGE ("%s: Failed to allocate java byte array", __FUNCTION__);
+                        ALOGE("%s: Failed to allocate java byte array", __func__);
                 }
             }
             else
@@ -1044,7 +1044,7 @@
                     e->SetByteArrayRegion(result.get(), 0, sRxDataBuffer.size(), (const jbyte *) sRxDataBuffer.data());
                 }
                 else
-                    ALOGE ("%s: Failed to allocate java byte array", __FUNCTION__);
+                    ALOGE("%s: Failed to allocate java byte array", __func__);
             } // else a nack is treated as a transceive failure to the upper layers
 
             sRxDataBuffer.clear();
@@ -1055,7 +1055,7 @@
     if (targetLost)
         e->ReleaseIntArrayElements (statusTargetLost, targetLost, 0);
 
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return result.release();
 }
 
@@ -1075,7 +1075,7 @@
 *******************************************************************************/
 static jint nativeNfcTag_doGetNdefType (JNIEnv*, jobject, jint libnfcType, jint javaType)
 {
-    ALOGD ("%s: enter; libnfc type=%d; java type=%d", __FUNCTION__, libnfcType, javaType);
+    ALOGV("%s: enter; libnfc type=%d; java type=%d", __func__, libnfcType, javaType);
     jint ndefType = NDEF_UNKNOWN_TYPE;
 
     // For NFA, libnfcType is mapped to the protocol value received
@@ -1105,7 +1105,7 @@
         /* NFA_PROTOCOL_ISO15693, NFA_PROTOCOL_INVALID and others */
         ndefType = NDEF_UNKNOWN_TYPE;
     }
-    ALOGD ("%s: exit; ndef type=%d", __FUNCTION__, ndefType);
+    ALOGV("%s: exit; ndef type=%d", __func__, ndefType);
     return ndefType;
 }
 
@@ -1136,20 +1136,20 @@
 
     if (!sCheckNdefWaitingForComplete)
     {
-        ALOGE ("%s: not waiting", __FUNCTION__);
+        ALOGE("%s: not waiting", __func__);
         return;
     }
 
     if (flags & RW_NDEF_FL_READ_ONLY)
-        ALOGD ("%s: flag read-only", __FUNCTION__);
+        ALOGV("%s: flag read-only", __func__);
     if (flags & RW_NDEF_FL_FORMATED)
-        ALOGD ("%s: flag formatted for ndef", __FUNCTION__);
+        ALOGV("%s: flag formatted for ndef", __func__);
     if (flags & RW_NDEF_FL_SUPPORTED)
-        ALOGD ("%s: flag ndef supported", __FUNCTION__);
+        ALOGV("%s: flag ndef supported", __func__);
     if (flags & RW_NDEF_FL_UNKNOWN)
-        ALOGD ("%s: flag all unknown", __FUNCTION__);
+        ALOGV("%s: flag all unknown", __func__);
     if (flags & RW_NDEF_FL_FORMATABLE)
-        ALOGD ("%s: flag formattable", __FUNCTION__);
+        ALOGV("%s: flag formattable", __func__);
 
     sCheckNdefWaitingForComplete = JNI_FALSE;
     sCheckNdefStatus = status;
@@ -1178,7 +1178,7 @@
     }
     else
     {
-        ALOGE ("%s: unknown status=0x%X", __FUNCTION__, status);
+        ALOGE("%s: unknown status=0x%X", __func__, status);
         sCheckNdefMaxSize = 0;
         sCheckNdefCurrentSize = 0;
         sCheckNdefCardReadOnly = false;
@@ -1204,12 +1204,12 @@
     tNFA_STATUS status = NFA_STATUS_FAILED;
     jint* ndef = NULL;
 
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
 
     // special case for Kovio
     if (sCurrentConnectedTargetProtocol == TARGET_TYPE_KOVIO_BARCODE)
     {
-        ALOGD ("%s: Kovio tag, no NDEF", __FUNCTION__);
+        ALOGV("%s: Kovio tag, no NDEF", __func__);
         ndef = e->GetIntArrayElements (ndefInfo, 0);
         ndef[0] = 0;
         ndef[1] = NDEF_MODE_READ_ONLY;
@@ -1224,17 +1224,17 @@
     /* Create the write semaphore */
     if (sem_init (&sCheckNdefSem, 0, 0) == -1)
     {
-        ALOGE ("%s: Check NDEF semaphore creation failed (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Check NDEF semaphore creation failed (errno=0x%08x)", __func__, errno);
         return JNI_FALSE;
     }
 
     if (NfcTag::getInstance ().getActivationState () != NfcTag::Active)
     {
-        ALOGE ("%s: tag already deactivated", __FUNCTION__);
+        ALOGE("%s: tag already deactivated", __func__);
         goto TheEnd;
     }
 
-    ALOGD ("%s: try NFA_RwDetectNDef", __FUNCTION__);
+    ALOGV("%s: try NFA_RwDetectNDef", __func__);
     sCheckNdefWaitingForComplete = JNI_TRUE;
 
     if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
@@ -1248,14 +1248,14 @@
 
     if (status != NFA_STATUS_OK)
     {
-        ALOGE ("%s: NFA_RwDetectNDef failed, status = 0x%X", __FUNCTION__, status);
+        ALOGE("%s: NFA_RwDetectNDef failed, status = 0x%X", __func__, status);
         goto TheEnd;
     }
 
     /* Wait for check NDEF completion status */
     if (sem_wait (&sCheckNdefSem))
     {
-        ALOGE ("%s: Failed to wait for check NDEF semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to wait for check NDEF semaphore (errno=0x%08x)", __func__, errno);
         goto TheEnd;
     }
 
@@ -1296,7 +1296,7 @@
     }
     else
     {
-        ALOGD ("%s: unknown status 0x%X", __FUNCTION__, sCheckNdefStatus);
+        ALOGV("%s: unknown status 0x%X", __func__, sCheckNdefStatus);
         status = sCheckNdefStatus;
     }
 
@@ -1310,10 +1310,10 @@
     /* Destroy semaphore */
     if (sem_destroy (&sCheckNdefSem))
     {
-        ALOGE ("%s: Failed to destroy check NDEF semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to destroy check NDEF semaphore (errno=0x%08x)", __func__, errno);
     }
     sCheckNdefWaitingForComplete = JNI_FALSE;
-    ALOGD ("%s: exit; status=0x%X", __FUNCTION__, status);
+    ALOGV("%s: exit; status=0x%X", __func__, status);
     return status;
 }
 
@@ -1364,7 +1364,7 @@
 *******************************************************************************/
 static jboolean nativeNfcTag_doPresenceCheck (JNIEnv*, jobject)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     tNFA_STATUS status = NFA_STATUS_OK;
     jboolean isPresent = JNI_FALSE;
 
@@ -1373,7 +1373,7 @@
     // want to process as if the deactivate just happened.
     if (sCurrentConnectedTargetProtocol == TARGET_TYPE_KOVIO_BARCODE)
     {
-        ALOGD ("%s: Kovio, force deactivate handling", __FUNCTION__);
+        ALOGV("%s: Kovio, force deactivate handling", __func__);
         tNFA_DEACTIVATED deactivated = {NFA_DEACTIVATE_TYPE_IDLE};
         {
             SyncEventGuard g (gDeactivatedEvent);
@@ -1392,13 +1392,13 @@
 
     if (nfcManager_isNfcActive() == false)
     {
-        ALOGD ("%s: NFC is no longer active.", __FUNCTION__);
+        ALOGV("%s: NFC is no longer active.", __func__);
         return JNI_FALSE;
     }
 
     if (!sRfInterfaceMutex.tryLock())
     {
-        ALOGD ("%s: tag is being reSelected assume it is present", __FUNCTION__);
+        ALOGV("%s: tag is being reSelected assume it is present", __func__);
         return JNI_TRUE;
     }
 
@@ -1406,7 +1406,7 @@
 
     if (NfcTag::getInstance ().isActivated () == false)
     {
-        ALOGD ("%s: tag already deactivated", __FUNCTION__);
+        ALOGV("%s: tag already deactivated", __func__);
         return JNI_FALSE;
     }
     if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
@@ -1429,7 +1429,7 @@
     }
 
     if (isPresent == JNI_FALSE)
-        ALOGD ("%s: tag absent", __FUNCTION__);
+        ALOGV("%s: tag absent", __func__);
     return isPresent;
 }
 
@@ -1508,7 +1508,7 @@
         }
     }
 
-    ALOGD("%s: is formattable=%u", __FUNCTION__, isFormattable);
+    ALOGV("%s: is formattable=%u", __func__, isFormattable);
     return isFormattable;
 }
 
@@ -1529,7 +1529,7 @@
 static jboolean nativeNfcTag_doIsIsoDepNdefFormatable (JNIEnv *e, jobject o, jbyteArray pollBytes, jbyteArray actBytes)
 {
     uint8_t uidFake[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     jbyteArray uidArray = e->NewByteArray (8);
     e->SetByteArrayRegion (uidArray, 0, 8, (jbyte*) uidFake);
     return nativeNfcTag_doIsNdefFormatable (e, o, 0, uidArray, pollBytes, actBytes);
@@ -1551,13 +1551,13 @@
 *******************************************************************************/
 static jboolean nativeNfcTag_makeMifareNdefFormat (JNIEnv *e, jobject o, uint8_t *key, uint32_t keySize)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     tNFA_STATUS status = NFA_STATUS_OK;
 
     status = nativeNfcTag_doReconnect (e, o);
     if (status != NFA_STATUS_OK)
     {
-        ALOGD ("%s: reconnect error, status=%u", __FUNCTION__, status);
+        ALOGV("%s: reconnect error, status=%u", __func__, status);
         return JNI_FALSE;
     }
 
@@ -1568,17 +1568,17 @@
 
     if (status == NFA_STATUS_OK)
     {
-        ALOGD ("%s: wait for completion", __FUNCTION__);
+        ALOGV("%s: wait for completion", __func__);
         sem_wait (&sFormatSem);
         status = sFormatOk ? NFA_STATUS_OK : NFA_STATUS_FAILED;
     }
     else
     {
-        ALOGE ("%s: error status=%u", __FUNCTION__, status);
+        ALOGE("%s: error status=%u", __func__, status);
     }
 
     sem_destroy (&sFormatSem);
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return (status == NFA_STATUS_OK) ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -1597,13 +1597,13 @@
 *******************************************************************************/
 static jboolean nativeNfcTag_doNdefFormat (JNIEnv *e, jobject o, jbyteArray)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     tNFA_STATUS status = NFA_STATUS_OK;
 
     // Do not try to format if tag is already deactivated.
     if (NfcTag::getInstance ().isActivated () == false)
     {
-        ALOGD ("%s: tag already deactivated(no need to format)", __FUNCTION__);
+        ALOGV("%s: tag already deactivated(no need to format)", __func__);
         return JNI_FALSE;
     }
 
@@ -1626,12 +1626,12 @@
     status = NFA_RwFormatTag ();
     if (status == NFA_STATUS_OK)
     {
-        ALOGD ("%s: wait for completion", __FUNCTION__);
+        ALOGV("%s: wait for completion", __func__);
         sem_wait (&sFormatSem);
         status = sFormatOk ? NFA_STATUS_OK : NFA_STATUS_FAILED;
     }
     else
-        ALOGE ("%s: error status=%u", __FUNCTION__, status);
+        ALOGE("%s: error status=%u", __func__, status);
     sem_destroy (&sFormatSem);
 
     if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_ISO_DEP)
@@ -1639,7 +1639,7 @@
         int retCode = NFCSTATUS_SUCCESS;
         retCode = nativeNfcTag_doReconnect (e, o);
     }
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return (status == NFA_STATUS_OK) ? JNI_TRUE : JNI_FALSE;
 }
 
@@ -1687,12 +1687,12 @@
 
     sMakeReadonlyStatus = NFA_STATUS_FAILED;
 
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
 
     /* Create the make_readonly semaphore */
     if (sem_init (&sMakeReadonlySem, 0, 0) == -1)
     {
-        ALOGE ("%s: Make readonly semaphore creation failed (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Make readonly semaphore creation failed (errno=0x%08x)", __func__, errno);
         return JNI_FALSE;
     }
 
@@ -1720,7 +1720,7 @@
     /* Destroy semaphore */
     if (sem_destroy (&sMakeReadonlySem))
     {
-        ALOGE ("%s: Failed to destroy read_only semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to destroy read_only semaphore (errno=0x%08x)", __func__, errno);
     }
     sMakeReadonlyWaitingForComplete = JNI_FALSE;
     return result;
@@ -1744,7 +1744,7 @@
     jboolean result = JNI_FALSE;
     tNFA_STATUS status;
 
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
 
     if (sCurrentConnectedTargetProtocol == NFA_PROTOCOL_MIFARE)
     {
@@ -1761,7 +1761,7 @@
     /* Create the make_readonly semaphore */
     if (sem_init (&sMakeReadonlySem, 0, 0) == -1)
     {
-        ALOGE ("%s: Make readonly semaphore creation failed (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Make readonly semaphore creation failed (errno=0x%08x)", __func__, errno);
         return JNI_FALSE;
     }
 
@@ -1774,20 +1774,20 @@
         status = NFA_RwSetTagReadOnly (FALSE); //try soft lock
         if (status != NFA_STATUS_OK)
         {
-            ALOGE ("%s: fail soft lock, status=%d", __FUNCTION__, status);
+            ALOGE("%s: fail soft lock, status=%d", __func__, status);
             goto TheEnd;
         }
     }
     else if (status != NFA_STATUS_OK)
     {
-        ALOGE ("%s: fail hard lock, status=%d", __FUNCTION__, status);
+        ALOGE("%s: fail hard lock, status=%d", __func__, status);
         goto TheEnd;
     }
 
     /* Wait for check NDEF completion status */
     if (sem_wait (&sMakeReadonlySem))
     {
-        ALOGE ("%s: Failed to wait for make_readonly semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to wait for make_readonly semaphore (errno=0x%08x)", __func__, errno);
         goto TheEnd;
     }
 
@@ -1800,7 +1800,7 @@
     /* Destroy semaphore */
     if (sem_destroy (&sMakeReadonlySem))
     {
-        ALOGE ("%s: Failed to destroy read_only semaphore (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: Failed to destroy read_only semaphore (errno=0x%08x)", __func__, errno);
     }
     sMakeReadonlyWaitingForComplete = JNI_FALSE;
     return result;
@@ -1821,9 +1821,9 @@
 //from the NFA_NDEF_DATA_EVT;
 void nativeNfcTag_registerNdefTypeHandler ()
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     sNdefTypeHandlerHandle = NFA_HANDLE_INVALID;
-    NFA_RegisterNDefTypeHandler (TRUE, NFA_TNF_DEFAULT, (UINT8 *) "", 0, ndefHandlerCallback);
+    NFA_RegisterNDefTypeHandler (TRUE, NFA_TNF_DEFAULT, (uint8_t *) "", 0, ndefHandlerCallback);
     EXTNS_MfcRegisterNDefTypeHandler (ndefHandlerCallback);
 }
 
@@ -1839,7 +1839,7 @@
 *******************************************************************************/
 void nativeNfcTag_deregisterNdefTypeHandler ()
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     NFA_DeregisterNDefTypeHandler (sNdefTypeHandlerHandle);
     sNdefTypeHandlerHandle = NFA_HANDLE_INVALID;
 }
@@ -1880,7 +1880,7 @@
 *******************************************************************************/
 int register_com_android_nfc_NativeNfcTag (JNIEnv *e)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return jniRegisterNativeMethods (e, gNativeNfcTagClassName, gMethods, NELEM (gMethods));
 }
 
diff --git a/nci/jni/NativeP2pDevice.cpp b/nci/jni/NativeP2pDevice.cpp
index 5c58985..133b1dc 100644
--- a/nci/jni/NativeP2pDevice.cpp
+++ b/nci/jni/NativeP2pDevice.cpp
@@ -14,11 +14,12 @@
  * limitations under the License.
  */
 
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
+#include <android/log.h>
+
 #include "NfcJniUtil.h"
 #include "JavaClassConstants.h"
 
-#include <cutils/log.h>
 #include <JNIHelp.h>
 
 namespace android
@@ -27,35 +28,35 @@
 
 static jboolean nativeP2pDeviceDoConnect (JNIEnv*, jobject)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return JNI_TRUE;
 }
 
 
 static jboolean nativeP2pDeviceDoDisconnect (JNIEnv*, jobject)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return JNI_TRUE;
 }
 
 
 static jbyteArray nativeP2pDeviceDoTransceive (JNIEnv*, jobject, jbyteArray)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return NULL;
 }
 
 
 static jbyteArray nativeP2pDeviceDoReceive (JNIEnv*, jobject)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return NULL;
 }
 
 
 static jboolean nativeP2pDeviceDoSend (JNIEnv*, jobject, jbyteArray)
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     return JNI_TRUE;
 }
 
diff --git a/nci/jni/NfcJniUtil.cpp b/nci/jni/NfcJniUtil.cpp
index d5de5a0..0357018 100755
--- a/nci/jni/NfcJniUtil.cpp
+++ b/nci/jni/NfcJniUtil.cpp
@@ -13,15 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 #include "NfcJniUtil.h"
 
-#include <cutils/log.h>
 #include <errno.h>
+
+#include <log/log.h>
+
 #include <JNIHelp.h>
 #include <ScopedLocalRef.h>
 #include "RoutingManager.h"
 
-
 /*******************************************************************************
 **
 ** Function:        JNI_OnLoad
@@ -35,7 +37,7 @@
 *******************************************************************************/
 jint JNI_OnLoad (JavaVM* jvm, void*)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     JNIEnv *e = NULL;
 
     ALOGI("NFC Service: loading nci JNI");
@@ -58,7 +60,7 @@
         return JNI_ERR;
     if (RoutingManager::getInstance().registerJniFunctions (e) == -1)
         return JNI_ERR;
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
     return JNI_VERSION_1_6;
 }
 
@@ -81,7 +83,7 @@
     ScopedLocalRef<jclass> cls(e, e->FindClass(className));
     if (cls.get() == NULL)
     {
-        ALOGE("%s: find class error", __FUNCTION__);
+        ALOGE("%s: find class error", __func__);
         return -1;
     }
 
@@ -89,14 +91,14 @@
     ScopedLocalRef<jobject> obj(e, e->NewObject(cls.get(), ctor));
     if (obj.get() == NULL)
     {
-       ALOGE("%s: create object error", __FUNCTION__);
+       ALOGE("%s: create object error", __func__);
        return -1;
     }
 
     *cachedObj = e->NewGlobalRef(obj.get());
     if (*cachedObj == NULL)
     {
-        ALOGE("%s: global ref error", __FUNCTION__);
+        ALOGE("%s: global ref error", __func__);
         return -1;
     }
     return 0;
@@ -156,7 +158,7 @@
     ScopedLocalRef<jclass> cls(e, e->FindClass(className));
     if(cls.get() == NULL)
     {
-        ALOGE ("%s: find class error", __FUNCTION__);
+        ALOGE("%s: find class error", __func__);
         return -1;
     }
 
@@ -164,14 +166,14 @@
     jobject obj = e->NewObject(cls.get(), ctor);
     if (obj == NULL)
     {
-       ALOGE ("%s: create object error", __FUNCTION__);
+       ALOGE("%s: create object error", __func__);
        return -1;
     }
 
     *cachedObj = obj;
     if (*cachedObj == NULL)
     {
-        ALOGE ("%s: global ref error", __FUNCTION__);
+        ALOGE("%s: global ref error", __func__);
         return -1;
     }
     return 0;
diff --git a/nci/jni/NfcJniUtil.h b/nci/jni/NfcJniUtil.h
index 980d674..c52e93e 100755
--- a/nci/jni/NfcJniUtil.h
+++ b/nci/jni/NfcJniUtil.h
@@ -49,14 +49,14 @@
 
 
 /* Error codes */
-#define ERROR_BUFFER_TOO_SMALL            -12
-#define ERROR_INSUFFICIENT_RESOURCES      -9
+#define ERROR_BUFFER_TOO_SMALL            (-12)
+#define ERROR_INSUFFICIENT_RESOURCES      (-9)
 
 
 /* Pre-defined tag type values. These must match the values in
  * Ndef.java in the framework.
  */
-#define NDEF_UNKNOWN_TYPE                -1
+#define NDEF_UNKNOWN_TYPE                (-1)
 #define NDEF_TYPE1_TAG                   1
 #define NDEF_TYPE2_TAG                   2
 #define NDEF_TYPE3_TAG                   3
@@ -73,7 +73,7 @@
 
 
 /* Name strings for target types. These *must* match the values in TagTechnology.java */
-#define TARGET_TYPE_UNKNOWN               -1
+#define TARGET_TYPE_UNKNOWN               (-1)
 #define TARGET_TYPE_ISO14443_3A           1
 #define TARGET_TYPE_ISO14443_3B           2
 #define TARGET_TYPE_ISO14443_4            3
diff --git a/nci/jni/NfcTag.cpp b/nci/jni/NfcTag.cpp
index c6e074b..3246f6f 100755
--- a/nci/jni/NfcTag.cpp
+++ b/nci/jni/NfcTag.cpp
@@ -17,7 +17,7 @@
 /*
  *  Tag-reading, tag-writing operations.
  */
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "NfcTag.h"
 #include "JavaClassConstants.h"
 #include "config.h"
@@ -155,7 +155,7 @@
     mNdefDetectionTimedOut = false;
     if (deactivated.type == NFA_DEACTIVATE_TYPE_SLEEP)
         mActivationState = Sleep;
-    ALOGD ("%s: state=%u", fn, mActivationState);
+    ALOGV("%s: state=%u", fn, mActivationState);
 }
 
 
@@ -173,7 +173,7 @@
     static const char fn [] = "NfcTag::setActivationState";
     mNdefDetectionTimedOut = false;
     mActivationState = Active;
-    ALOGD ("%s: state=%u", fn, mActivationState);
+    ALOGV("%s: state=%u", fn, mActivationState);
 }
 
 /*******************************************************************************
@@ -214,7 +214,7 @@
 ** Returns          Time difference in milliseconds
 **
 *******************************************************************************/
-UINT32 TimeDiff(timespec start, timespec end)
+uint32_t TimeDiff(timespec start, timespec end)
 {
     timespec temp;
     if ((end.tv_nsec-start.tv_nsec)<0)
@@ -247,7 +247,7 @@
 bool NfcTag::IsSameKovio(tNFA_ACTIVATED& activationData)
 {
     static const char fn [] = "NfcTag::IsSameKovio";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
     tNFC_ACTIVATE_DEVT& rfDetail = activationData.activate_ntf;
 
     if (rfDetail.protocol != NFC_PROTOCOL_KOVIO)
@@ -282,7 +282,7 @@
         memcpy(mLastKovioUid, mTechParams[0].param.pk.uid, mLastKovioUidLen);
     }
     mLastKovioTime = now;
-    ALOGD ("%s: exit, is same Kovio=%d", fn, rVal);
+    ALOGV("%s: exit, is same Kovio=%d", fn, rVal);
     return rVal;
 }
 
@@ -300,7 +300,7 @@
 void NfcTag::discoverTechnologies (tNFA_ACTIVATED& activationData)
 {
     static const char fn [] = "NfcTag::discoverTechnologies (activation)";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
     tNFC_ACTIVATE_DEVT& rfDetail = activationData.activate_ntf;
 
     mNumTechList = 0;
@@ -341,7 +341,7 @@
     }
     else if (NFC_PROTOCOL_T3T == rfDetail.protocol)
     {
-        UINT8 xx = 0;
+        uint8_t xx = 0;
 
         mTechList [mNumTechList] = TARGET_TYPE_FELICA;
 
@@ -391,12 +391,12 @@
     }
     else if (NFC_PROTOCOL_KOVIO == rfDetail.protocol)
     {
-        ALOGD ("%s: Kovio", fn);
+        ALOGV("%s: Kovio", fn);
         mTechList [mNumTechList] = TARGET_TYPE_KOVIO_BARCODE;
     }
     else if (NFC_PROTOCOL_MIFARE == rfDetail.protocol)
     {
-        ALOGD ("%s: Mifare Classic", fn);
+        ALOGV("%s: Mifare Classic", fn);
         EXTNS_MfcInit (activationData);
         mTechList [mNumTechList] = TARGET_TYPE_ISO14443_3A;  //is TagTechnology.NFC_A by Java API
         mNumTechList++;
@@ -408,17 +408,17 @@
     }
     else
     {
-        ALOGE ("%s: unknown protocol ????", fn);
+        ALOGE("%s: unknown protocol ????", fn);
         mTechList [mNumTechList] = TARGET_TYPE_UNKNOWN;
     }
 
     mNumTechList++;
     for (int i=0; i < mNumTechList; i++)
     {
-        ALOGD ("%s: index=%d; tech=%d; handle=%d; nfc type=%d", fn,
+        ALOGV("%s: index=%d; tech=%d; handle=%d; nfc type=%d", fn,
                 i, mTechList[i], mTechHandles[i], mTechLibNfcTypes[i]);
     }
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 }
 
 
@@ -438,10 +438,10 @@
     static const char fn [] = "NfcTag::discoverTechnologies (discovery)";
     tNFC_RESULT_DEVT& discovery_ntf = discoveryData.discovery_ntf;
 
-    ALOGD ("%s: enter: rf disc. id=%u; protocol=%u, mNumTechList=%u", fn, discovery_ntf.rf_disc_id, discovery_ntf.protocol, mNumTechList);
+    ALOGV("%s: enter: rf disc. id=%u; protocol=%u, mNumTechList=%u", fn, discovery_ntf.rf_disc_id, discovery_ntf.protocol, mNumTechList);
     if (mNumTechList >= MAX_NUM_TECHNOLOGY)
     {
-        ALOGE ("%s: exceed max=%d", fn, MAX_NUM_TECHNOLOGY);
+        ALOGE("%s: exceed max=%d", fn, MAX_NUM_TECHNOLOGY);
         goto TheEnd;
     }
     mTechHandles [mNumTechList] = discovery_ntf.rf_disc_id;
@@ -530,7 +530,7 @@
     }
     else
     {
-        ALOGE ("%s: unknown protocol ????", fn);
+        ALOGE("%s: unknown protocol ????", fn);
         mTechList [mNumTechList] = TARGET_TYPE_UNKNOWN;
     }
 
@@ -539,13 +539,13 @@
     {
         for (int i=0; i < mNumTechList; i++)
         {
-            ALOGD ("%s: index=%d; tech=%d; handle=%d; nfc type=%d", fn,
+            ALOGV("%s: index=%d; tech=%d; handle=%d; nfc type=%d", fn,
                     i, mTechList[i], mTechHandles[i], mTechLibNfcTypes[i]);
         }
     }
 
 TheEnd:
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 }
 
 
@@ -564,7 +564,7 @@
 void NfcTag::createNativeNfcTag (tNFA_ACTIVATED& activationData)
 {
     static const char fn [] = "NfcTag::createNativeNfcTag";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
 
     JNIEnv* e = NULL;
     ScopedAttach attach(mNativeData->vm, &e);
@@ -608,15 +608,15 @@
     mNativeData->tag = e->NewGlobalRef(tag.get());
 
     //notify NFC service about this new tag
-    ALOGD ("%s: try notify nfc service", fn);
+    ALOGV("%s: try notify nfc service", fn);
     e->CallVoidMethod(mNativeData->manager, android::gCachedNfcManagerNotifyNdefMessageListeners, tag.get());
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("%s: fail notify nfc service", fn);
+        ALOGE("%s: fail notify nfc service", fn);
     }
 
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 }
 
 
@@ -635,7 +635,7 @@
 void NfcTag::fillNativeNfcTagMembers1 (JNIEnv* e, jclass tag_cls, jobject tag)
 {
     static const char fn [] = "NfcTag::fillNativeNfcTagMembers1";
-    ALOGD ("%s", fn);
+    ALOGV("%s", fn);
 
     //create objects that represent NativeNfcTag's member variables
     ScopedLocalRef<jintArray> techList(e, e->NewIntArray(mNumTechList));
@@ -686,7 +686,7 @@
 void NfcTag::fillNativeNfcTagMembers2 (JNIEnv* e, jclass tag_cls, jobject tag, tNFA_ACTIVATED& /*activationData*/)
 {
     static const char fn [] = "NfcTag::fillNativeNfcTagMembers2";
-    ALOGD ("%s", fn);
+    ALOGV("%s", fn);
     jfieldID f = e->GetFieldID(tag_cls, "mConnectedTechIndex", "I");
     e->SetIntField(tag, f, (jint) 0);
 }
@@ -717,13 +717,13 @@
 
     for (int i = 0; i < mNumTechList; i++)
     {
-        ALOGD ("%s: index=%d; rf tech params mode=%u", fn, i, mTechParams [i].mode);
+        ALOGV("%s: index=%d; rf tech params mode=%u", fn, i, mTechParams [i].mode);
         if (NFC_DISCOVERY_TYPE_POLL_A == mTechParams [i].mode
               || NFC_DISCOVERY_TYPE_POLL_A_ACTIVE == mTechParams [i].mode
               || NFC_DISCOVERY_TYPE_LISTEN_A == mTechParams [i].mode
               || NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE == mTechParams [i].mode)
         {
-            ALOGD ("%s: tech A", fn);
+            ALOGV("%s: tech A", fn);
             pollBytes.reset(e->NewByteArray(2));
             e->SetByteArrayRegion(pollBytes.get(), 0, 2, (jbyte*) mTechParams [i].param.pa.sens_res);
         }
@@ -739,7 +739,7 @@
                 in SENSB_RES response, byte 6 through 9 is Application Data, byte 10-12 or 13 is Protocol Info;
                 used by public API: NfcB.getApplicationData(), NfcB.getProtocolInfo();
                 *****************/
-                ALOGD ("%s: tech B; TARGET_TYPE_ISO14443_3B", fn);
+                ALOGV("%s: tech B; TARGET_TYPE_ISO14443_3B", fn);
                 len = mTechParams [i].param.pb.sensb_res_len;
                 len = len - 4; //subtract 4 bytes for NFCID0 at byte 2 through 5
                 pollBytes.reset(e->NewByteArray(len));
@@ -761,25 +761,25 @@
             PMm: manufacture parameter; 8 bytes;
             System Code: 2 bytes;
             ****************/
-            ALOGD ("%s: tech F", fn);
-            UINT8 result [10]; //return result to NFC service
+            ALOGV("%s: tech F", fn);
+            uint8_t result [10]; //return result to NFC service
             memset (result, 0, sizeof(result));
             len =  10;
 
             /****
             for (int ii = 0; ii < mTechParams [i].param.pf.sensf_res_len; ii++)
             {
-                ALOGD ("%s: tech F, sendf_res[%d]=%d (0x%x)",
+                ALOGV("%s: tech F, sendf_res[%d]=%d (0x%x)",
                       fn, ii, mTechParams [i].param.pf.sensf_res[ii],mTechParams [i].param.pf.sensf_res[ii]);
             }
             ***/
             memcpy (result, mTechParams [i].param.pf.sensf_res + 8, 8); //copy PMm
             if (activationData.params.t3t.num_system_codes > 0) //copy the first System Code
             {
-                UINT16 systemCode = *(activationData.params.t3t.p_system_codes);
-                result [8] = (UINT8) (systemCode >> 8);
-                result [9] = (UINT8) systemCode;
-                ALOGD ("%s: tech F; sys code=0x%X 0x%X", fn, result [8], result [9]);
+                uint16_t systemCode = *(activationData.params.t3t.p_system_codes);
+                result [8] = (uint8_t) (systemCode >> 8);
+                result [9] = (uint8_t) systemCode;
+                ALOGV("%s: tech F; sys code=0x%X 0x%X", fn, result [8], result [9]);
             }
             pollBytes.reset(e->NewByteArray(len));
             e->SetByteArrayRegion(pollBytes.get(), 0, len, (jbyte*) result);
@@ -787,7 +787,7 @@
         else if (NFC_DISCOVERY_TYPE_POLL_ISO15693 == mTechParams [i].mode
               || NFC_DISCOVERY_TYPE_LISTEN_ISO15693 == mTechParams [i].mode)
         {
-            ALOGD ("%s: tech iso 15693", fn);
+            ALOGV("%s: tech iso 15693", fn);
             //iso 15693 response flags: 1 octet
             //iso 15693 Data Structure Format Identifier (DSF ID): 1 octet
             //used by public API: NfcV.getDsfId(), NfcV.getResponseFlags();
@@ -797,7 +797,7 @@
         }
         else
         {
-            ALOGE ("%s: tech unknown ????", fn);
+            ALOGE("%s: tech unknown ????", fn);
             pollBytes.reset(e->NewByteArray(0));
         } //switch: every type of technology
         e->SetObjectArrayElement(techPollBytes.get(), i, pollBytes.get());
@@ -831,26 +831,26 @@
 
     for (int i = 0; i < mNumTechList; i++)
     {
-        ALOGD ("%s: index=%d", fn, i);
+        ALOGV("%s: index=%d", fn, i);
         if (NFC_PROTOCOL_T1T == mTechLibNfcTypes[i] || NFC_PROTOCOL_T2T == mTechLibNfcTypes[i])
         {
             if (mTechLibNfcTypes[i] == NFC_PROTOCOL_T1T)
-                ALOGD ("%s: T1T; tech A", fn);
+                ALOGV("%s: T1T; tech A", fn);
             else if (mTechLibNfcTypes[i] == NFC_PROTOCOL_T2T)
-                ALOGD ("%s: T2T; tech A", fn);
+                ALOGV("%s: T2T; tech A", fn);
             actBytes.reset(e->NewByteArray(1));
             e->SetByteArrayRegion(actBytes.get(), 0, 1, (jbyte*) &mTechParams [i].param.pa.sel_rsp);
         }
         else if (NFC_PROTOCOL_T3T == mTechLibNfcTypes[i])
         {
             //felica
-            ALOGD ("%s: T3T; felica; tech F", fn);
+            ALOGV("%s: T3T; felica; tech F", fn);
             //really, there is no data
             actBytes.reset(e->NewByteArray(0));
         }
         else if (NFC_PROTOCOL_MIFARE == mTechLibNfcTypes[i])
         {
-                ALOGD ("%s: Mifare Classic; tech A", fn);
+                ALOGV("%s: Mifare Classic; tech A", fn);
                 actBytes.reset (e->NewByteArray(1));
                 e->SetByteArrayRegion (actBytes.get(), 0, 1,
                         (jbyte*) &mTechParams [i].param.pa.sel_rsp);
@@ -871,14 +871,14 @@
                     if (activationData.activate_ntf.intf_param.type == NFC_INTERFACE_ISO_DEP)
                     {
                         tNFC_INTF_PA_ISO_DEP& pa_iso = activationData.activate_ntf.intf_param.intf_param.pa_iso;
-                        ALOGD ("%s: T4T; ISO_DEP for tech A; copy historical bytes; len=%u", fn, pa_iso.his_byte_len);
+                        ALOGV("%s: T4T; ISO_DEP for tech A; copy historical bytes; len=%u", fn, pa_iso.his_byte_len);
                         actBytes.reset(e->NewByteArray(pa_iso.his_byte_len));
                         if (pa_iso.his_byte_len > 0)
                             e->SetByteArrayRegion(actBytes.get(), 0, pa_iso.his_byte_len, (jbyte*) (pa_iso.his_byte));
                     }
                     else
                     {
-                        ALOGE ("%s: T4T; ISO_DEP for tech A; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
+                        ALOGE("%s: T4T; ISO_DEP for tech A; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
                         actBytes.reset(e->NewByteArray(0));
                     }
                 }
@@ -893,21 +893,21 @@
                     if (activationData.activate_ntf.intf_param.type == NFC_INTERFACE_ISO_DEP)
                     {
                         tNFC_INTF_PB_ISO_DEP& pb_iso = activationData.activate_ntf.intf_param.intf_param.pb_iso;
-                        ALOGD ("%s: T4T; ISO_DEP for tech B; copy response bytes; len=%u", fn, pb_iso.hi_info_len);
+                        ALOGV("%s: T4T; ISO_DEP for tech B; copy response bytes; len=%u", fn, pb_iso.hi_info_len);
                         actBytes.reset(e->NewByteArray(pb_iso.hi_info_len));
                         if (pb_iso.hi_info_len > 0)
                             e->SetByteArrayRegion(actBytes.get(), 0, pb_iso.hi_info_len, (jbyte*) (pb_iso.hi_info));
                     }
                     else
                     {
-                        ALOGE ("%s: T4T; ISO_DEP for tech B; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
+                        ALOGE("%s: T4T; ISO_DEP for tech B; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
                         actBytes.reset(e->NewByteArray(0));
                     }
                 }
             }
             else if (mTechList [i] == TARGET_TYPE_ISO14443_3A) //is TagTechnology.NFC_A by Java API
             {
-                ALOGD ("%s: T4T; tech A", fn);
+                ALOGV("%s: T4T; tech A", fn);
                 actBytes.reset(e->NewByteArray(1));
                 e->SetByteArrayRegion(actBytes.get(), 0, 1, (jbyte*) &mTechParams [i].param.pa.sel_rsp);
             }
@@ -918,7 +918,7 @@
         } //case NFC_PROTOCOL_ISO_DEP: //t4t
         else if (NFC_PROTOCOL_15693 == mTechLibNfcTypes[i])
         {
-            ALOGD ("%s: tech iso 15693", fn);
+            ALOGV("%s: tech iso 15693", fn);
             //iso 15693 response flags: 1 octet
             //iso 15693 Data Structure Format Identifier (DSF ID): 1 octet
             //used by public API: NfcV.getDsfId(), NfcV.getResponseFlags();
@@ -928,7 +928,7 @@
         }
         else
         {
-            ALOGD ("%s: tech unknown ????", fn);
+            ALOGV("%s: tech unknown ????", fn);
             actBytes.reset(e->NewByteArray(0));
         }
         e->SetObjectArrayElement(techActBytes.get(), i, actBytes.get());
@@ -961,7 +961,7 @@
 
     if (NFC_DISCOVERY_TYPE_POLL_KOVIO == mTechParams [0].mode)
     {
-        ALOGD ("%s: Kovio", fn);
+        ALOGV("%s: Kovio", fn);
         len = mTechParams [0].param.pk.uid_len;
         uid.reset(e->NewByteArray(len));
         e->SetByteArrayRegion(uid.get(), 0, len,
@@ -972,7 +972,7 @@
           || NFC_DISCOVERY_TYPE_LISTEN_A == mTechParams [0].mode
           || NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE == mTechParams [0].mode)
     {
-        ALOGD ("%s: tech A", fn);
+        ALOGV("%s: tech A", fn);
         len = mTechParams [0].param.pa.nfcid1_len;
         uid.reset(e->NewByteArray(len));
         e->SetByteArrayRegion(uid.get(), 0, len,
@@ -989,7 +989,7 @@
           || NFC_DISCOVERY_TYPE_LISTEN_B == mTechParams [0].mode
           || NFC_DISCOVERY_TYPE_LISTEN_B_PRIME == mTechParams [0].mode)
     {
-        ALOGD ("%s: tech B", fn);
+        ALOGV("%s: tech B", fn);
         uid.reset(e->NewByteArray(NFC_NFCID0_MAX_LEN));
         e->SetByteArrayRegion(uid.get(), 0, NFC_NFCID0_MAX_LEN,
                 (jbyte*) &mTechParams [0].param.pb.nfcid0);
@@ -1002,12 +1002,12 @@
         uid.reset(e->NewByteArray(NFC_NFCID2_LEN));
         e->SetByteArrayRegion(uid.get(), 0, NFC_NFCID2_LEN,
                 (jbyte*) &mTechParams [0].param.pf.nfcid2);
-        ALOGD ("%s: tech F", fn);
+        ALOGV("%s: tech F", fn);
     }
     else if (NFC_DISCOVERY_TYPE_POLL_ISO15693 == mTechParams [0].mode
           || NFC_DISCOVERY_TYPE_LISTEN_ISO15693 == mTechParams [0].mode)
     {
-            ALOGD ("%s: tech iso 15693", fn);
+            ALOGV("%s: tech iso 15693", fn);
             jbyte data [I93_UID_BYTE_LEN];  //8 bytes
             for (int i=0; i<I93_UID_BYTE_LEN; ++i) //reverse the ID
                 data[i] = activationData.params.i93.uid [I93_UID_BYTE_LEN - i - 1];
@@ -1016,7 +1016,7 @@
     }
     else
     {
-        ALOGE ("%s: tech unknown ????", fn);
+        ALOGE("%s: tech unknown ????", fn);
         uid.reset(e->NewByteArray(0));
     }
     jfieldID f = e->GetFieldID(tag_cls, "mUid", "[B");
@@ -1043,12 +1043,12 @@
         if (mTechLibNfcTypes[i] == NFA_PROTOCOL_NFC_DEP)
         {
             //if remote device supports P2P
-            ALOGD ("%s: discovered P2P", fn);
+            ALOGV("%s: discovered P2P", fn);
             retval = true;
             break;
         }
     }
-    ALOGD ("%s: return=%u", fn, retval);
+    ALOGV("%s: return=%u", fn, retval);
     return retval;
 }
 
@@ -1065,7 +1065,7 @@
 void NfcTag::selectP2p()
 {
     static const char fn [] = "NfcTag::selectP2p";
-    UINT8 rfDiscoveryId = 0;
+    uint8_t rfDiscoveryId = 0;
 
     for (int i = 0; i < mNumTechList; i++)
     {
@@ -1092,13 +1092,13 @@
 
     if (rfDiscoveryId > 0)
     {
-        ALOGD ("%s: select P2P; target rf discov id=0x%X", fn, rfDiscoveryId);
+        ALOGV("%s: select P2P; target rf discov id=0x%X", fn, rfDiscoveryId);
         tNFA_STATUS stat = NFA_Select (rfDiscoveryId, NFA_PROTOCOL_NFC_DEP, NFA_INTERFACE_NFC_DEP);
         if (stat != NFA_STATUS_OK)
-            ALOGE ("%s: fail select P2P; error=0x%X", fn, stat);
+            ALOGE("%s: fail select P2P; error=0x%X", fn, stat);
     }
     else
-        ALOGE ("%s: cannot find P2P", fn);
+        ALOGE("%s: cannot find P2P", fn);
     resetTechnologies ();
 }
 
@@ -1115,7 +1115,7 @@
 void NfcTag::resetTechnologies ()
 {
     static const char fn [] = "NfcTag::resetTechnologies";
-    ALOGD ("%s", fn);
+    ALOGV("%s", fn);
     mNumTechList = 0;
     memset (mTechList, 0, sizeof(mTechList));
     memset (mTechHandles, 0, sizeof(mTechHandles));
@@ -1144,7 +1144,7 @@
 
     for (int i = 0; i < mNumTechList; i++)
     {
-        ALOGD ("%s: nfa target idx=%d h=0x%X; protocol=0x%X",
+        ALOGV("%s: nfa target idx=%d h=0x%X; protocol=0x%X",
                 fn, i, mTechHandles [i], mTechLibNfcTypes [i]);
         if (mTechLibNfcTypes[i] != NFA_PROTOCOL_NFC_DEP)
         {
@@ -1168,10 +1168,10 @@
 
         tNFA_STATUS stat = NFA_Select (mTechHandles [foundIdx], mTechLibNfcTypes [foundIdx], rf_intf);
         if (stat != NFA_STATUS_OK)
-            ALOGE ("%s: fail select; error=0x%X", fn, stat);
+            ALOGE("%s: fail select; error=0x%X", fn, stat);
     }
     else
-        ALOGE ("%s: only found NFC-DEP technology.", fn);
+        ALOGE("%s: only found NFC-DEP technology.", fn);
 }
 
 
@@ -1190,7 +1190,7 @@
 
     if (mProtocol != NFC_PROTOCOL_T1T)
     {
-        ALOGE ("%s: wrong protocol %u", fn, mProtocol);
+        ALOGE("%s: wrong protocol %u", fn, mProtocol);
         return 0;
     }
     return mtT1tMaxMessageSize;
@@ -1228,7 +1228,7 @@
         mtT1tMaxMessageSize = 462;
         break;
     default:
-        ALOGE ("%s: unknown T1T HR0=%u", fn, activate.params.t1t.hr[0]);
+        ALOGE("%s: unknown T1T HR0=%u", fn, activate.params.t1t.hr[0]);
         mtT1tMaxMessageSize = 0;
         break;
     }
@@ -1266,7 +1266,7 @@
             break;
         }
     }
-    ALOGD ("%s: return=%u", fn, retval);
+    ALOGV("%s: return=%u", fn, retval);
     return retval;
 }
 
@@ -1302,7 +1302,7 @@
         }
     }
 
-    ALOGD ("%s: return=%u", fn, retval);
+    ALOGV("%s: return=%u", fn, retval);
     return retval;
 }
 
@@ -1336,7 +1336,7 @@
 ** Returns:         True if the response is NACK
 **
 *******************************************************************************/
-bool NfcTag::isT2tNackResponse (const UINT8* response, UINT32 responseLen)
+bool NfcTag::isT2tNackResponse (const uint8_t* response, uint32_t responseLen)
 {
     static const char fn [] = "NfcTag::isT2tNackResponse";
     bool isNack = false;
@@ -1348,7 +1348,7 @@
         else
             isNack = true; //assume every value is a NACK
     }
-    ALOGD ("%s: return %u", fn, isNack);
+    ALOGV("%s: return %u", fn, isNack);
     return isNack;
 }
 
@@ -1379,7 +1379,7 @@
 ** Returns:         None
 **
 *******************************************************************************/
-void NfcTag::connectionEventHandler (UINT8 event, tNFA_CONN_EVT_DATA* data)
+void NfcTag::connectionEventHandler (uint8_t event, tNFA_CONN_EVT_DATA* data)
 {
     static const char fn [] = "NfcTag::connectionEventHandler";
 
@@ -1424,7 +1424,7 @@
             mReadCompletedStatus = data->status;
             mNdefDetectionTimedOut = data->status != NFA_STATUS_OK;
             if (mNdefDetectionTimedOut)
-                ALOGE ("%s: NDEF detection timed out", fn);
+                ALOGE("%s: NDEF detection timed out", fn);
             mReadCompleteEvent.notifyOne ();
         }
         break;
@@ -1434,7 +1434,7 @@
             tNFA_NDEF_DETECT& ndef_detect = data->ndef_detect;
             mNdefDetectionTimedOut = ndef_detect.status == NFA_STATUS_TIMEOUT;
             if (mNdefDetectionTimedOut)
-                ALOGE ("%s: NDEF detection timed out", fn);
+                ALOGE("%s: NDEF detection timed out", fn);
         }
     }
 }
@@ -1512,7 +1512,7 @@
     if ((techId > 0) && (techId < (int) mTechnologyTimeoutsTable.size()))
         retval = mTechnologyTimeoutsTable [techId];
     else
-        ALOGE ("%s: invalid tech=%d", fn, techId);
+        ALOGE("%s: invalid tech=%d", fn, techId);
     return retval;
 }
 
@@ -1534,7 +1534,7 @@
     if ((techId >= 0) && (techId < (int) mTechnologyTimeoutsTable.size()))
         mTechnologyTimeoutsTable [techId] = timeout;
     else
-        ALOGE ("%s: invalid tech=%d", fn, techId);
+        ALOGE("%s: invalid tech=%d", fn, techId);
 }
 
 
@@ -1575,14 +1575,14 @@
             //Short Product Information, 2011-11-24, section 3.5
             if (mTechParams[i].param.pa.nfcid1[0] == 0x05)
             {
-                UINT8 highNibble = mTechParams[i].param.pa.nfcid1[1] & 0xF0;
+                uint8_t highNibble = mTechParams[i].param.pa.nfcid1[1] & 0xF0;
                 if (highNibble == 0x30)
                     retval = true;
             }
             break;
         }
     }
-    ALOGD ("%s: return=%u", fn, retval);
+    ALOGV("%s: return=%u", fn, retval);
     return retval;
 }
 
@@ -1612,6 +1612,6 @@
             break;
         }
     }
-    ALOGD ("%s: return=%u", fn, retval);
+    ALOGV("%s: return=%u", fn, retval);
     return retval;
 }
diff --git a/nci/jni/NfcTag.h b/nci/jni/NfcTag.h
index df7ce0c..2e7721d 100755
--- a/nci/jni/NfcTag.h
+++ b/nci/jni/NfcTag.h
@@ -97,7 +97,7 @@
     ** Returns:         None
     **
     *******************************************************************************/
-    void connectionEventHandler (UINT8 event, tNFA_CONN_EVT_DATA* data);
+    void connectionEventHandler (uint8_t event, tNFA_CONN_EVT_DATA* data);
 
 
     /*******************************************************************************
@@ -257,7 +257,7 @@
     ** Returns:         True if the response is NACK
     **
     *******************************************************************************/
-    bool isT2tNackResponse (const UINT8* response, UINT32 responseLen);
+    bool isT2tNackResponse (const uint8_t* response, uint32_t responseLen);
 
     /*******************************************************************************
     **
@@ -398,7 +398,7 @@
     tNFC_RF_TECH_PARAMS mTechParams [MAX_NUM_TECHNOLOGY]; //array of technology parameters
     SyncEvent mReadCompleteEvent;
     struct timespec mLastKovioTime; // time of last Kovio tag activation
-    UINT8 mLastKovioUid[NFC_KOVIO_MAX_LEN]; // uid of last Kovio tag activated
+    uint8_t mLastKovioUid[NFC_KOVIO_MAX_LEN]; // uid of last Kovio tag activated
     bool mIsDynamicTagId; // whether the tag has dynamic tag ID
     tNFA_RW_PRES_CHK_OPTION mPresenceCheckAlgorithm;
     bool mIsFelicaLite;
diff --git a/nci/jni/PeerToPeer.cpp b/nci/jni/PeerToPeer.cpp
index 8074f69..5c145ba 100644
--- a/nci/jni/PeerToPeer.cpp
+++ b/nci/jni/PeerToPeer.cpp
@@ -17,7 +17,7 @@
 /*
  *  Communicate with a peer using NFC-DEP, LLCP, SNEP.
  */
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "PeerToPeer.h"
 #include "NfcJniUtil.h"
 #include "llcp_defs.h"
@@ -112,7 +112,7 @@
 *******************************************************************************/
 void PeerToPeer::initialize ()
 {
-    ALOGD ("PeerToPeer::initialize");
+    ALOGV("PeerToPeer::initialize");
     unsigned long num = 0;
 
     if (GetNumValue ("P2P_LISTEN_TECH_MASK", &num, sizeof (num)))
@@ -212,14 +212,14 @@
 bool PeerToPeer::registerServer (tJNI_HANDLE jniHandle, const char *serviceName)
 {
     static const char fn [] = "PeerToPeer::registerServer";
-    ALOGD ("%s: enter; service name: %s  JNI handle: %u", fn, serviceName, jniHandle);
+    ALOGV("%s: enter; service name: %s  JNI handle: %u", fn, serviceName, jniHandle);
     sp<P2pServer>   pSrv = NULL;
 
     mMutex.lock();
     // Check if already registered
     if ((pSrv = findServerLocked(serviceName)) != NULL)
     {
-        ALOGD ("%s: service name=%s  already registered, handle: 0x%04x", fn, serviceName, pSrv->mNfaP2pServerHandle);
+        ALOGV("%s: service name=%s  already registered, handle: 0x%04x", fn, serviceName, pSrv->mNfaP2pServerHandle);
 
         // Update JNI handle
         pSrv->mJniHandle = jniHandle;
@@ -233,7 +233,7 @@
         {
             pSrv = mServers[ii] = new P2pServer(jniHandle, serviceName);
 
-            ALOGD ("%s: added new p2p server  index: %d  handle: %u  name: %s", fn, ii, jniHandle, serviceName);
+            ALOGV("%s: added new p2p server  index: %d  handle: %u  name: %s", fn, ii, jniHandle, serviceName);
             break;
         }
     }
@@ -241,15 +241,15 @@
 
     if (pSrv == NULL)
     {
-        ALOGE ("%s: service name=%s  no free entry", fn, serviceName);
+        ALOGE("%s: service name=%s  no free entry", fn, serviceName);
         return (false);
     }
 
     if (pSrv->registerWithStack()) {
-        ALOGD ("%s: got new p2p server h=0x%X", fn, pSrv->mNfaP2pServerHandle);
+        ALOGV("%s: got new p2p server h=0x%X", fn, pSrv->mNfaP2pServerHandle);
         return (true);
     } else {
-        ALOGE ("%s: invalid server handle", fn);
+        ALOGE("%s: invalid server handle", fn);
         removeServer (jniHandle);
         return (false);
     }
@@ -276,14 +276,14 @@
     {
         if ( (mServers[i] != NULL) && (mServers[i]->mJniHandle == jniHandle) )
         {
-            ALOGD ("%s: server jni_handle: %u;  nfa_handle: 0x%04x; name: %s; index=%d",
+            ALOGV("%s: server jni_handle: %u;  nfa_handle: 0x%04x; name: %s; index=%d",
                     fn, jniHandle, mServers[i]->mNfaP2pServerHandle, mServers[i]->mServiceName.c_str(), i);
 
             mServers [i] = NULL;
             return;
         }
     }
-    ALOGE ("%s: unknown server jni handle: %u", fn, jniHandle);
+    ALOGE("%s: unknown server jni handle: %u", fn, jniHandle);
 }
 
 
@@ -301,7 +301,7 @@
 void PeerToPeer::llcpActivatedHandler (nfc_jni_native_data* nat, tNFA_LLCP_ACTIVATED& activated)
 {
     static const char fn [] = "PeerToPeer::llcpActivatedHandler";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
 
     //no longer need to receive NDEF message from a tag
     android::nativeNfcTag_deregisterNdefTypeHandler ();
@@ -312,19 +312,19 @@
     ScopedAttach attach(nat->vm, &e);
     if (e == NULL)
     {
-        ALOGE ("%s: jni env is null", fn);
+        ALOGE("%s: jni env is null", fn);
         return;
     }
 
-    ALOGD ("%s: get object class", fn);
+    ALOGV("%s: get object class", fn);
     ScopedLocalRef<jclass> tag_cls(e, e->GetObjectClass(nat->cached_P2pDevice));
     if (e->ExceptionCheck()) {
         e->ExceptionClear();
-        ALOGE ("%s: fail get p2p device", fn);
+        ALOGE("%s: fail get p2p device", fn);
         return;
     }
 
-    ALOGD ("%s: instantiate", fn);
+    ALOGV("%s: instantiate", fn);
     /* New target instance */
     jmethodID ctor = e->GetMethodID(tag_cls.get(), "<init>", "()V");
     ScopedLocalRef<jobject> tag(e, e->NewObject(tag_cls.get(), ctor));
@@ -333,10 +333,10 @@
     jfieldID f = e->GetFieldID(tag_cls.get(), "mMode", "I");
 
     if (activated.is_initiator == TRUE) {
-        ALOGD ("%s: p2p initiator", fn);
+        ALOGV("%s: p2p initiator", fn);
         e->SetIntField(tag.get(), f, (jint) MODE_P2P_INITIATOR);
     } else {
-        ALOGD ("%s: p2p target", fn);
+        ALOGV("%s: p2p target", fn);
         e->SetIntField(tag.get(), f, (jint) MODE_P2P_TARGET);
     }
     /* Set LLCP version */
@@ -352,16 +352,16 @@
     }
     nat->tag = e->NewGlobalRef(tag.get());
 
-    ALOGD ("%s: notify nfc service", fn);
+    ALOGV("%s: notify nfc service", fn);
 
     /* Notify manager that new a P2P device was found */
     e->CallVoidMethod(nat->manager, android::gCachedNfcManagerNotifyLlcpLinkActivation, tag.get());
     if (e->ExceptionCheck()) {
         e->ExceptionClear();
-        ALOGE ("%s: fail notify", fn);
+        ALOGE("%s: fail notify", fn);
     }
 
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 }
 
 
@@ -379,53 +379,53 @@
 void PeerToPeer::llcpDeactivatedHandler (nfc_jni_native_data* nat, tNFA_LLCP_DEACTIVATED& /*deactivated*/)
 {
     static const char fn [] = "PeerToPeer::llcpDeactivatedHandler";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
 
     JNIEnv* e = NULL;
     ScopedAttach attach(nat->vm, &e);
     if (e == NULL)
     {
-        ALOGE ("%s: jni env is null", fn);
+        ALOGE("%s: jni env is null", fn);
         return;
     }
 
-    ALOGD ("%s: notify nfc service", fn);
+    ALOGV("%s: notify nfc service", fn);
     /* Notify manager that the LLCP is lost or deactivated */
     e->CallVoidMethod (nat->manager, android::gCachedNfcManagerNotifyLlcpLinkDeactivated, nat->tag);
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("%s: fail notify", fn);
+        ALOGE("%s: fail notify", fn);
     }
 
     //let the tag-reading code handle NDEF data event
     android::nativeNfcTag_registerNdefTypeHandler ();
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 }
 
 void PeerToPeer::llcpFirstPacketHandler (nfc_jni_native_data* nat)
 {
     static const char fn [] = "PeerToPeer::llcpFirstPacketHandler";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
 
     JNIEnv* e = NULL;
     ScopedAttach attach(nat->vm, &e);
     if (e == NULL)
     {
-        ALOGE ("%s: jni env is null", fn);
+        ALOGE("%s: jni env is null", fn);
         return;
     }
 
-    ALOGD ("%s: notify nfc service", fn);
+    ALOGV("%s: notify nfc service", fn);
     /* Notify manager that the LLCP is lost or deactivated */
     e->CallVoidMethod (nat->manager, android::gCachedNfcManagerNotifyLlcpFirstPacketReceived, nat->tag);
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("%s: fail notify", fn);
+        ALOGE("%s: fail notify", fn);
     }
 
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 
 }
 /*******************************************************************************
@@ -446,13 +446,13 @@
     static const char fn [] = "PeerToPeer::accept";
     sp<P2pServer> pSrv = NULL;
 
-    ALOGD ("%s: enter; server jni handle: %u; conn jni handle: %u; maxInfoUnit: %d; recvWindow: %d", fn,
+    ALOGV("%s: enter; server jni handle: %u; conn jni handle: %u; maxInfoUnit: %d; recvWindow: %d", fn,
             serverJniHandle, connJniHandle, maxInfoUnit, recvWindow);
 
     mMutex.lock();
     if ((pSrv = findServerLocked (serverJniHandle)) == NULL)
     {
-        ALOGE ("%s: unknown server jni handle: %u", fn, serverJniHandle);
+        ALOGE("%s: unknown server jni handle: %u", fn, serverJniHandle);
         mMutex.unlock();
         return (false);
     }
@@ -474,7 +474,7 @@
 bool PeerToPeer::deregisterServer (tJNI_HANDLE jniHandle)
 {
     static const char fn [] = "PeerToPeer::deregisterServer";
-    ALOGD ("%s: enter; JNI handle: %u", fn, jniHandle);
+    ALOGV("%s: enter; JNI handle: %u", fn, jniHandle);
     tNFA_STATUS     nfaStat = NFA_STATUS_FAILED;
     sp<P2pServer>   pSrv = NULL;
     bool            isPollingTempStopped = false;
@@ -482,7 +482,7 @@
     mMutex.lock();
     if ((pSrv = findServerLocked (jniHandle)) == NULL)
     {
-        ALOGE ("%s: unknown service handle: %u", fn, jniHandle);
+        ALOGE("%s: unknown service handle: %u", fn, jniHandle);
         mMutex.unlock();
         return (false);
     }
@@ -502,7 +502,7 @@
     nfaStat = NFA_P2pDeregister (pSrv->mNfaP2pServerHandle);
     if (nfaStat != NFA_STATUS_OK)
     {
-        ALOGE ("%s: deregister error=0x%X", fn, nfaStat);
+        ALOGE("%s: deregister error=0x%X", fn, nfaStat);
     }
 
     removeServer (jniHandle);
@@ -512,7 +512,7 @@
         startRfDiscovery (true);
     }
 
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
     return true;
 }
 
@@ -529,11 +529,11 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool PeerToPeer::createClient (tJNI_HANDLE jniHandle, UINT16 miu, UINT8 rw)
+bool PeerToPeer::createClient (tJNI_HANDLE jniHandle, uint16_t miu, uint8_t rw)
 {
     static const char fn [] = "PeerToPeer::createClient";
     int i = 0;
-    ALOGD ("%s: enter: jni h: %u  miu: %u  rw: %u", fn, jniHandle, miu, rw);
+    ALOGV("%s: enter: jni h: %u  miu: %u  rw: %u", fn, jniHandle, miu, rw);
 
     mMutex.lock();
     sp<P2pClient> client = NULL;
@@ -553,11 +553,11 @@
 
     if (client == NULL)
     {
-        ALOGE ("%s: fail", fn);
+        ALOGE("%s: fail", fn);
         return (false);
     }
 
-    ALOGD ("%s: pClient: 0x%p  assigned for client jniHandle: %u", fn, client.get(), jniHandle);
+    ALOGV("%s: pClient: 0x%p  assigned for client jniHandle: %u", fn, client.get(), jniHandle);
 
     {
         SyncEventGuard guard (mClients[i]->mRegisteringEvent);
@@ -567,12 +567,12 @@
 
     if (mClients[i]->mNfaP2pClientHandle != NFA_HANDLE_INVALID)
     {
-        ALOGD ("%s: exit; new client jniHandle: %u   NFA Handle: 0x%04x", fn, jniHandle, client->mClientConn->mNfaConnHandle);
+        ALOGV("%s: exit; new client jniHandle: %u   NFA Handle: 0x%04x", fn, jniHandle, client->mClientConn->mNfaConnHandle);
         return (true);
     }
     else
     {
-        ALOGE ("%s: FAILED; new client jniHandle: %u   NFA Handle: 0x%04x", fn, jniHandle, client->mClientConn->mNfaConnHandle);
+        ALOGE("%s: FAILED; new client jniHandle: %u   NFA Handle: 0x%04x", fn, jniHandle, client->mClientConn->mNfaConnHandle);
         removeConn (jniHandle);
         return (false);
     }
@@ -603,7 +603,7 @@
                 NFA_P2pDeregister (mClients[ii]->mNfaP2pClientHandle);
 
             mClients[ii] = NULL;
-            ALOGD ("%s: deleted client handle: %u  index: %u", fn, jniHandle, ii);
+            ALOGV("%s: deleted client handle: %u  index: %u", fn, jniHandle, ii);
             return;
         }
     }
@@ -619,7 +619,7 @@
         }
     }
 
-    ALOGE ("%s: could not find handle: %u", fn, jniHandle);
+    ALOGE("%s: could not find handle: %u", fn, jniHandle);
 }
 
 
@@ -637,9 +637,9 @@
 bool PeerToPeer::connectConnOriented (tJNI_HANDLE jniHandle, const char* serviceName)
 {
     static const char fn [] = "PeerToPeer::connectConnOriented";
-    ALOGD ("%s: enter; h: %u  service name=%s", fn, jniHandle, serviceName);
+    ALOGV("%s: enter; h: %u  service name=%s", fn, jniHandle, serviceName);
     bool stat = createDataLinkConn (jniHandle, serviceName, 0);
-    ALOGD ("%s: exit; h: %u  stat: %u", fn, jniHandle, stat);
+    ALOGV("%s: exit; h: %u  stat: %u", fn, jniHandle, stat);
     return stat;
 }
 
@@ -655,12 +655,12 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool PeerToPeer::connectConnOriented (tJNI_HANDLE jniHandle, UINT8 destinationSap)
+bool PeerToPeer::connectConnOriented (tJNI_HANDLE jniHandle, uint8_t destinationSap)
 {
     static const char fn [] = "PeerToPeer::connectConnOriented";
-    ALOGD ("%s: enter; h: %u  dest sap: 0x%X", fn, jniHandle, destinationSap);
+    ALOGV("%s: enter; h: %u  dest sap: 0x%X", fn, jniHandle, destinationSap);
     bool stat = createDataLinkConn (jniHandle, NULL, destinationSap);
-    ALOGD ("%s: exit; h: %u  stat: %u", fn, jniHandle, stat);
+    ALOGV("%s: exit; h: %u  stat: %u", fn, jniHandle, stat);
     return stat;
 }
 
@@ -677,16 +677,16 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool PeerToPeer::createDataLinkConn (tJNI_HANDLE jniHandle, const char* serviceName, UINT8 destinationSap)
+bool PeerToPeer::createDataLinkConn (tJNI_HANDLE jniHandle, const char* serviceName, uint8_t destinationSap)
 {
     static const char fn [] = "PeerToPeer::createDataLinkConn";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
     tNFA_STATUS nfaStat = NFA_STATUS_FAILED;
     sp<P2pClient>   pClient = NULL;
 
     if ((pClient = findClient (jniHandle)) == NULL)
     {
-        ALOGE ("%s: can't find client, JNI handle: %u", fn, jniHandle);
+        ALOGE("%s: can't find client, JNI handle: %u", fn, jniHandle);
         return (false);
     }
 
@@ -703,7 +703,7 @@
                     pClient->mClientConn->mMaxInfoUnit, pClient->mClientConn->mRecvWindow);
         if (nfaStat == NFA_STATUS_OK)
         {
-            ALOGD ("%s: wait for connected event  mConnectingEvent: 0x%p", fn, pClient.get());
+            ALOGV("%s: wait for connected event  mConnectingEvent: 0x%p", fn, pClient.get());
             pClient->mConnectingEvent.wait();
         }
     }
@@ -721,10 +721,10 @@
     else
     {
         removeConn (jniHandle);
-        ALOGE ("%s: fail; error=0x%X", fn, nfaStat);
+        ALOGE("%s: fail; error=0x%X", fn, nfaStat);
     }
 
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
     return nfaStat == NFA_STATUS_OK;
 }
 
@@ -885,7 +885,7 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool PeerToPeer::send (tJNI_HANDLE jniHandle, UINT8 *buffer, UINT16 bufferLen)
+bool PeerToPeer::send (tJNI_HANDLE jniHandle, uint8_t *buffer, uint16_t bufferLen)
 {
     static const char fn [] = "PeerToPeer::send";
     tNFA_STATUS nfaStat = NFA_STATUS_FAILED;
@@ -893,11 +893,11 @@
 
     if ((pConn = findConnection (jniHandle)) == NULL)
     {
-        ALOGE ("%s: can't find connection handle: %u", fn, jniHandle);
+        ALOGE("%s: can't find connection handle: %u", fn, jniHandle);
         return (false);
     }
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: send data; jniHandle: %u  nfaHandle: 0x%04X",
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: send data; jniHandle: %u  nfaHandle: 0x%04X",
             fn, pConn->mJniHandle, pConn->mNfaConnHandle);
 
     while (true)
@@ -911,15 +911,15 @@
 
         if (pConn->mNfaConnHandle == NFA_HANDLE_INVALID) //peer already disconnected
         {
-            ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: peer disconnected", fn);
+            ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: peer disconnected", fn);
             return (false);
         }
     }
 
     if (nfaStat == NFA_STATUS_OK)
-        ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit OK; JNI handle: %u  NFA Handle: 0x%04x", fn, jniHandle, pConn->mNfaConnHandle);
+        ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit OK; JNI handle: %u  NFA Handle: 0x%04x", fn, jniHandle, pConn->mNfaConnHandle);
     else
-        ALOGE ("%s: Data not sent; JNI handle: %u  NFA Handle: 0x%04x  error: 0x%04x",
+        ALOGE("%s: Data not sent; JNI handle: %u  NFA Handle: 0x%04x  error: 0x%04x",
               fn, jniHandle, pConn->mNfaConnHandle, nfaStat);
 
     return nfaStat == NFA_STATUS_OK;
@@ -939,23 +939,23 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool PeerToPeer::receive (tJNI_HANDLE jniHandle, UINT8* buffer, UINT16 bufferLen, UINT16& actualLen)
+bool PeerToPeer::receive (tJNI_HANDLE jniHandle, uint8_t* buffer, uint16_t bufferLen, uint16_t& actualLen)
 {
     static const char fn [] = "PeerToPeer::receive";
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter; jniHandle: %u  bufferLen: %u", fn, jniHandle, bufferLen);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter; jniHandle: %u  bufferLen: %u", fn, jniHandle, bufferLen);
     sp<NfaConn> pConn = NULL;
     tNFA_STATUS stat = NFA_STATUS_FAILED;
-    UINT32 actualDataLen2 = 0;
-    BOOLEAN isMoreData = TRUE;
+    uint32_t actualDataLen2 = 0;
+    bool    isMoreData = TRUE;
     bool retVal = false;
 
     if ((pConn = findConnection (jniHandle)) == NULL)
     {
-        ALOGE ("%s: can't find connection handle: %u", fn, jniHandle);
+        ALOGE("%s: can't find connection handle: %u", fn, jniHandle);
         return (false);
     }
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: jniHandle: %u  nfaHandle: 0x%04X  buf len=%u", fn, pConn->mJniHandle, pConn->mNfaConnHandle, bufferLen);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: jniHandle: %u  nfaHandle: 0x%04X  buf len=%u", fn, pConn->mJniHandle, pConn->mNfaConnHandle, bufferLen);
 
     while (pConn->mNfaConnHandle != NFA_HANDLE_INVALID)
     {
@@ -963,18 +963,18 @@
         stat = NFA_P2pReadData (pConn->mNfaConnHandle, bufferLen, &actualDataLen2, buffer, &isMoreData);
         if ((stat == NFA_STATUS_OK) && (actualDataLen2 > 0)) //received some data
         {
-            actualLen = (UINT16) actualDataLen2;
+            actualLen = (uint16_t) actualDataLen2;
             retVal = true;
             break;
         }
-        ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: waiting for data...", fn);
+        ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: waiting for data...", fn);
         {
             SyncEventGuard guard (pConn->mReadEvent);
             pConn->mReadEvent.wait();
         }
     } //while
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit; nfa h: 0x%X  ok: %u  actual len: %u", fn, pConn->mNfaConnHandle, retVal, actualLen);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit; nfa h: 0x%X  ok: %u  actual len: %u", fn, pConn->mNfaConnHandle, retVal, actualLen);
     return retVal;
 }
 
@@ -996,11 +996,11 @@
     sp<P2pClient>   pClient = NULL;
     sp<NfaConn>     pConn = NULL;
 
-    ALOGD ("%s: enter; jni handle: %u", fn, jniHandle);
+    ALOGV("%s: enter; jni handle: %u", fn, jniHandle);
 
     if ((pConn = findConnection(jniHandle)) == NULL)
     {
-        ALOGE ("%s: can't find connection handle: %u", fn, jniHandle);
+        ALOGE("%s: can't find connection handle: %u", fn, jniHandle);
         return (false);
     }
 
@@ -1023,12 +1023,12 @@
 
     if (pConn->mNfaConnHandle != NFA_HANDLE_INVALID)
     {
-        ALOGD ("%s: try disconn nfa h=0x%04X", fn, pConn->mNfaConnHandle);
+        ALOGV("%s: try disconn nfa h=0x%04X", fn, pConn->mNfaConnHandle);
         SyncEventGuard guard (pConn->mDisconnectingEvent);
         nfaStat = NFA_P2pDisconnect (pConn->mNfaConnHandle, FALSE);
 
         if (nfaStat != NFA_STATUS_OK)
-            ALOGE ("%s: fail p2p disconnect", fn);
+            ALOGE("%s: fail p2p disconnect", fn);
         else
             pConn->mDisconnectingEvent.wait();
     }
@@ -1037,7 +1037,7 @@
     removeConn (jniHandle);
     mDisconnectMutex.unlock ();
 
-    ALOGD ("%s: exit; jni handle: %u", fn, jniHandle);
+    ALOGV("%s: exit; jni handle: %u", fn, jniHandle);
     return nfaStat == NFA_STATUS_OK;
 }
 
@@ -1052,17 +1052,17 @@
 ** Returns:         Peer's max information unit.
 **
 *******************************************************************************/
-UINT16 PeerToPeer::getRemoteMaxInfoUnit (tJNI_HANDLE jniHandle)
+uint16_t PeerToPeer::getRemoteMaxInfoUnit (tJNI_HANDLE jniHandle)
 {
     static const char fn [] = "PeerToPeer::getRemoteMaxInfoUnit";
     sp<NfaConn> pConn = NULL;
 
     if ((pConn = findConnection(jniHandle)) == NULL)
     {
-        ALOGE ("%s: can't find client  jniHandle: %u", fn, jniHandle);
+        ALOGE("%s: can't find client  jniHandle: %u", fn, jniHandle);
         return 0;
     }
-    ALOGD ("%s: jniHandle: %u   MIU: %u", fn, jniHandle, pConn->mRemoteMaxInfoUnit);
+    ALOGV("%s: jniHandle: %u   MIU: %u", fn, jniHandle, pConn->mRemoteMaxInfoUnit);
     return (pConn->mRemoteMaxInfoUnit);
 }
 
@@ -1077,15 +1077,15 @@
 ** Returns:         Peer's receive window size.
 **
 *******************************************************************************/
-UINT8 PeerToPeer::getRemoteRecvWindow (tJNI_HANDLE jniHandle)
+uint8_t PeerToPeer::getRemoteRecvWindow (tJNI_HANDLE jniHandle)
 {
     static const char fn [] = "PeerToPeer::getRemoteRecvWindow";
-    ALOGD ("%s: client jni handle: %u", fn, jniHandle);
+    ALOGV("%s: client jni handle: %u", fn, jniHandle);
     sp<NfaConn> pConn = NULL;
 
     if ((pConn = findConnection(jniHandle)) == NULL)
     {
-        ALOGE ("%s: can't find client", fn);
+        ALOGE("%s: can't find client", fn);
         return 0;
     }
     return pConn->mRemoteRecvWindow;
@@ -1157,7 +1157,7 @@
     static const char    fn []   = "PeerToPeer::enableP2pListening";
     tNFA_STATUS          nfaStat = NFA_STATUS_FAILED;
 
-    ALOGD ("%s: enter isEnable: %u  mIsP2pListening: %u", fn, isEnable, mIsP2pListening);
+    ALOGV("%s: enter isEnable: %u  mIsP2pListening: %u", fn, isEnable, mIsP2pListening);
 
     // If request to enable P2P listening, and we were not already listening
     if ( (isEnable == true) && (mIsP2pListening == false) && (mP2pListenTechMask != 0) )
@@ -1169,7 +1169,7 @@
             mIsP2pListening = true;
         }
         else
-            ALOGE ("%s: fail enable listen; error=0x%X", fn, nfaStat);
+            ALOGE("%s: fail enable listen; error=0x%X", fn, nfaStat);
     }
     else if ( (isEnable == false) && (mIsP2pListening == true) )
     {
@@ -1181,9 +1181,9 @@
             mIsP2pListening = false;
         }
         else
-            ALOGE ("%s: fail disable listen; error=0x%X", fn, nfaStat);
+            ALOGE("%s: fail disable listen; error=0x%X", fn, nfaStat);
     }
-    ALOGD ("%s: exit; mIsP2pListening: %u", fn, mIsP2pListening);
+    ALOGV("%s: exit; mIsP2pListening: %u", fn, mIsP2pListening);
 }
 
 
@@ -1200,7 +1200,7 @@
 void PeerToPeer::handleNfcOnOff (bool isOn)
 {
     static const char fn [] = "PeerToPeer::handleNfcOnOff";
-    ALOGD ("%s: enter; is on=%u", fn, isOn);
+    ALOGV("%s: enter; is on=%u", fn, isOn);
 
     mIsP2pListening = false;            // In both cases, P2P will not be listening
 
@@ -1248,7 +1248,7 @@
         } //loop
 
     }
-    ALOGD ("%s: exit", fn);
+    ALOGV("%s: exit", fn);
 }
 
 
@@ -1269,12 +1269,12 @@
     sp<P2pServer>   pSrv = NULL;
     sp<NfaConn>     pConn = NULL;
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter; event=0x%X", fn, p2pEvent);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter; event=0x%X", fn, p2pEvent);
 
     switch (p2pEvent)
     {
     case NFA_P2P_REG_SERVER_EVT:  // NFA_P2pRegisterServer() has started to listen
-        ALOGD ("%s: NFA_P2P_REG_SERVER_EVT; handle: 0x%04x; service sap=0x%02x  name: %s", fn,
+        ALOGV("%s: NFA_P2P_REG_SERVER_EVT; handle: 0x%04x; service sap=0x%02x  name: %s", fn,
               eventData->reg_server.server_handle, eventData->reg_server.server_sap, eventData->reg_server.service_name);
 
         sP2p.mMutex.lock();
@@ -1282,7 +1282,7 @@
         sP2p.mMutex.unlock();
         if (pSrv == NULL)
         {
-            ALOGE ("%s: NFA_P2P_REG_SERVER_EVT for unknown service: %s", fn, eventData->reg_server.service_name);
+            ALOGE("%s: NFA_P2P_REG_SERVER_EVT for unknown service: %s", fn, eventData->reg_server.service_name);
         }
         else
         {
@@ -1293,15 +1293,15 @@
         break;
 
     case NFA_P2P_ACTIVATED_EVT: //remote device has activated
-        ALOGD ("%s: NFA_P2P_ACTIVATED_EVT; handle: 0x%04x", fn, eventData->activated.handle);
+        ALOGV("%s: NFA_P2P_ACTIVATED_EVT; handle: 0x%04x", fn, eventData->activated.handle);
         break;
 
     case NFA_P2P_DEACTIVATED_EVT:
-        ALOGD ("%s: NFA_P2P_DEACTIVATED_EVT; handle: 0x%04x", fn, eventData->activated.handle);
+        ALOGV("%s: NFA_P2P_DEACTIVATED_EVT; handle: 0x%04x", fn, eventData->activated.handle);
         break;
 
     case NFA_P2P_CONN_REQ_EVT:
-        ALOGD ("%s: NFA_P2P_CONN_REQ_EVT; nfa server h=0x%04x; nfa conn h=0x%04x; remote sap=0x%02x", fn,
+        ALOGV("%s: NFA_P2P_CONN_REQ_EVT; nfa server h=0x%04x; nfa conn h=0x%04x; remote sap=0x%02x", fn,
                 eventData->conn_req.server_handle, eventData->conn_req.conn_handle, eventData->conn_req.remote_sap);
 
         sP2p.mMutex.lock();
@@ -1309,15 +1309,15 @@
         sP2p.mMutex.unlock();
         if (pSrv == NULL)
         {
-            ALOGE ("%s: NFA_P2P_CONN_REQ_EVT; unknown server h", fn);
+            ALOGE("%s: NFA_P2P_CONN_REQ_EVT; unknown server h", fn);
             return;
         }
-        ALOGD ("%s: NFA_P2P_CONN_REQ_EVT; server jni h=%u", fn, pSrv->mJniHandle);
+        ALOGV("%s: NFA_P2P_CONN_REQ_EVT; server jni h=%u", fn, pSrv->mJniHandle);
 
         // Look for a connection block that is waiting (handle invalid)
         if ((pConn = pSrv->findServerConnection((tNFA_HANDLE) NFA_HANDLE_INVALID)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_CONN_REQ_EVT; server not listening", fn);
+            ALOGE("%s: NFA_P2P_CONN_REQ_EVT; server not listening", fn);
         }
         else
         {
@@ -1325,44 +1325,44 @@
             pConn->mNfaConnHandle = eventData->conn_req.conn_handle;
             pConn->mRemoteMaxInfoUnit = eventData->conn_req.remote_miu;
             pConn->mRemoteRecvWindow = eventData->conn_req.remote_rw;
-            ALOGD ("%s: NFA_P2P_CONN_REQ_EVT; server jni h=%u; conn jni h=%u; notify conn req", fn, pSrv->mJniHandle, pConn->mJniHandle);
+            ALOGV("%s: NFA_P2P_CONN_REQ_EVT; server jni h=%u; conn jni h=%u; notify conn req", fn, pSrv->mJniHandle, pConn->mJniHandle);
             pSrv->mConnRequestEvent.notifyOne(); //unblock accept()
         }
         break;
 
     case NFA_P2P_CONNECTED_EVT:
-        ALOGD ("%s: NFA_P2P_CONNECTED_EVT; h=0x%x  remote sap=0x%X", fn,
+        ALOGV("%s: NFA_P2P_CONNECTED_EVT; h=0x%x  remote sap=0x%X", fn,
                 eventData->connected.client_handle, eventData->connected.remote_sap);
         break;
 
     case NFA_P2P_DISC_EVT:
-        ALOGD ("%s: NFA_P2P_DISC_EVT; h=0x%04x; reason=0x%X", fn, eventData->disc.handle, eventData->disc.reason);
+        ALOGV("%s: NFA_P2P_DISC_EVT; h=0x%04x; reason=0x%X", fn, eventData->disc.handle, eventData->disc.reason);
         // Look for the connection block
         if ((pConn = sP2p.findConnection(eventData->disc.handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_DISC_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->disc.handle);
+            ALOGE("%s: NFA_P2P_DISC_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->disc.handle);
         }
         else
         {
             sP2p.mDisconnectMutex.lock ();
             pConn->mNfaConnHandle = NFA_HANDLE_INVALID;
             {
-                ALOGD ("%s: NFA_P2P_DISC_EVT; try guard disconn event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; try guard disconn event", fn);
                 SyncEventGuard guard3 (pConn->mDisconnectingEvent);
                 pConn->mDisconnectingEvent.notifyOne ();
-                ALOGD ("%s: NFA_P2P_DISC_EVT; notified disconn event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; notified disconn event", fn);
             }
             {
-                ALOGD ("%s: NFA_P2P_DISC_EVT; try guard congest event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; try guard congest event", fn);
                 SyncEventGuard guard1 (pConn->mCongEvent);
                 pConn->mCongEvent.notifyOne (); //unblock write (if congested)
-                ALOGD ("%s: NFA_P2P_DISC_EVT; notified congest event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; notified congest event", fn);
             }
             {
-                ALOGD ("%s: NFA_P2P_DISC_EVT; try guard read event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; try guard read event", fn);
                 SyncEventGuard guard2 (pConn->mReadEvent);
                 pConn->mReadEvent.notifyOne (); //unblock receive()
-                ALOGD ("%s: NFA_P2P_DISC_EVT; notified read event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; notified read event", fn);
             }
             sP2p.mDisconnectMutex.unlock ();
         }
@@ -1372,11 +1372,11 @@
         // Look for the connection block
         if ((pConn = sP2p.findConnection(eventData->data.handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_DATA_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->data.handle);
+            ALOGE("%s: NFA_P2P_DATA_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->data.handle);
         }
         else
         {
-            ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: NFA_P2P_DATA_EVT; h=0x%X; remote sap=0x%X", fn,
+            ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: NFA_P2P_DATA_EVT; h=0x%X; remote sap=0x%X", fn,
                     eventData->data.handle, eventData->data.remote_sap);
             SyncEventGuard guard (pConn->mReadEvent);
             pConn->mReadEvent.notifyOne();
@@ -1387,11 +1387,11 @@
         // Look for the connection block
         if ((pConn = sP2p.findConnection(eventData->congest.handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_CONGEST_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->congest.handle);
+            ALOGE("%s: NFA_P2P_CONGEST_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->congest.handle);
         }
         else
         {
-            ALOGD ("%s: NFA_P2P_CONGEST_EVT; nfa handle: 0x%04x  congested: %u", fn,
+            ALOGV("%s: NFA_P2P_CONGEST_EVT; nfa handle: 0x%04x  congested: %u", fn,
                     eventData->congest.handle, eventData->congest.is_congested);
             if (eventData->congest.is_congested == FALSE)
             {
@@ -1402,10 +1402,10 @@
         break;
 
     default:
-        ALOGE ("%s: unknown event 0x%X ????", fn, p2pEvent);
+        ALOGV("%s: unknown event 0x%X ????", fn, p2pEvent);
         break;
     }
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit", fn);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: exit", fn);
 }
 
 
@@ -1426,7 +1426,7 @@
     sp<NfaConn>     pConn = NULL;
     sp<P2pClient>   pClient = NULL;
 
-    ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter; event=%u", fn, p2pEvent);
+    ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: enter; event=%u", fn, p2pEvent);
 
     switch (p2pEvent)
     {
@@ -1434,11 +1434,11 @@
         // Look for a client that is trying to register
         if ((pClient = sP2p.findClient ((tNFA_HANDLE)NFA_HANDLE_INVALID)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_REG_CLIENT_EVT: can't find waiting client", fn);
+            ALOGE("%s: NFA_P2P_REG_CLIENT_EVT: can't find waiting client", fn);
         }
         else
         {
-            ALOGD ("%s: NFA_P2P_REG_CLIENT_EVT; Conn Handle: 0x%04x, pClient: 0x%p", fn, eventData->reg_client.client_handle, pClient.get());
+            ALOGV("%s: NFA_P2P_REG_CLIENT_EVT; Conn Handle: 0x%04x, pClient: 0x%p", fn, eventData->reg_client.client_handle, pClient.get());
 
             SyncEventGuard guard (pClient->mRegisteringEvent);
             pClient->mNfaP2pClientHandle = eventData->reg_client.client_handle;
@@ -1450,27 +1450,27 @@
         // Look for a client that is trying to register
         if ((pClient = sP2p.findClient (eventData->activated.handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_ACTIVATED_EVT: can't find client", fn);
+            ALOGE("%s: NFA_P2P_ACTIVATED_EVT: can't find client", fn);
         }
         else
         {
-            ALOGD ("%s: NFA_P2P_ACTIVATED_EVT; Conn Handle: 0x%04x, pClient: 0x%p", fn, eventData->activated.handle, pClient.get());
+            ALOGV("%s: NFA_P2P_ACTIVATED_EVT; Conn Handle: 0x%04x, pClient: 0x%p", fn, eventData->activated.handle, pClient.get());
         }
         break;
 
     case NFA_P2P_DEACTIVATED_EVT:
-        ALOGD ("%s: NFA_P2P_DEACTIVATED_EVT: conn handle: 0x%X", fn, eventData->deactivated.handle);
+        ALOGV("%s: NFA_P2P_DEACTIVATED_EVT: conn handle: 0x%X", fn, eventData->deactivated.handle);
         break;
 
     case NFA_P2P_CONNECTED_EVT:
         // Look for the client that is trying to connect
         if ((pClient = sP2p.findClient (eventData->connected.client_handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_CONNECTED_EVT: can't find client: 0x%04x", fn, eventData->connected.client_handle);
+            ALOGE("%s: NFA_P2P_CONNECTED_EVT: can't find client: 0x%04x", fn, eventData->connected.client_handle);
         }
         else
         {
-            ALOGD ("%s: NFA_P2P_CONNECTED_EVT; client_handle=0x%04x  conn_handle: 0x%04x  remote sap=0x%X  pClient: 0x%p", fn,
+            ALOGV("%s: NFA_P2P_CONNECTED_EVT; client_handle=0x%04x  conn_handle: 0x%04x  remote sap=0x%X  pClient: 0x%p", fn,
                     eventData->connected.client_handle, eventData->connected.conn_handle, eventData->connected.remote_sap, pClient.get());
 
             SyncEventGuard guard (pClient->mConnectingEvent);
@@ -1482,14 +1482,14 @@
         break;
 
     case NFA_P2P_DISC_EVT:
-        ALOGD ("%s: NFA_P2P_DISC_EVT; h=0x%04x; reason=0x%X", fn, eventData->disc.handle, eventData->disc.reason);
+        ALOGV("%s: NFA_P2P_DISC_EVT; h=0x%04x; reason=0x%X", fn, eventData->disc.handle, eventData->disc.reason);
         // Look for the connection block
         if ((pConn = sP2p.findConnection(eventData->disc.handle)) == NULL)
         {
             // If no connection, may be a client that is trying to connect
             if ((pClient = sP2p.findClient (eventData->disc.handle)) == NULL)
             {
-                ALOGE ("%s: NFA_P2P_DISC_EVT: can't find client for NFA handle: 0x%04x", fn, eventData->disc.handle);
+                ALOGE("%s: NFA_P2P_DISC_EVT: can't find client for NFA handle: 0x%04x", fn, eventData->disc.handle);
                 return;
             }
             // Unblock createDataLinkConn()
@@ -1501,22 +1501,22 @@
             sP2p.mDisconnectMutex.lock ();
             pConn->mNfaConnHandle = NFA_HANDLE_INVALID;
             {
-                ALOGD ("%s: NFA_P2P_DISC_EVT; try guard disconn event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; try guard disconn event", fn);
                 SyncEventGuard guard3 (pConn->mDisconnectingEvent);
                 pConn->mDisconnectingEvent.notifyOne ();
-                ALOGD ("%s: NFA_P2P_DISC_EVT; notified disconn event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; notified disconn event", fn);
             }
             {
-                ALOGD ("%s: NFA_P2P_DISC_EVT; try guard congest event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; try guard congest event", fn);
                 SyncEventGuard guard1 (pConn->mCongEvent);
                 pConn->mCongEvent.notifyOne(); //unblock write (if congested)
-                ALOGD ("%s: NFA_P2P_DISC_EVT; notified congest event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; notified congest event", fn);
             }
             {
-                ALOGD ("%s: NFA_P2P_DISC_EVT; try guard read event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; try guard read event", fn);
                 SyncEventGuard guard2 (pConn->mReadEvent);
                 pConn->mReadEvent.notifyOne(); //unblock receive()
-                ALOGD ("%s: NFA_P2P_DISC_EVT; notified read event", fn);
+                ALOGV("%s: NFA_P2P_DISC_EVT; notified read event", fn);
             }
             sP2p.mDisconnectMutex.unlock ();
         }
@@ -1526,11 +1526,11 @@
         // Look for the connection block
         if ((pConn = sP2p.findConnection(eventData->data.handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_DATA_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->data.handle);
+            ALOGE("%s: NFA_P2P_DATA_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->data.handle);
         }
         else
         {
-            ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: NFA_P2P_DATA_EVT; h=0x%X; remote sap=0x%X", fn,
+            ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: NFA_P2P_DATA_EVT; h=0x%X; remote sap=0x%X", fn,
                     eventData->data.handle, eventData->data.remote_sap);
             SyncEventGuard guard (pConn->mReadEvent);
             pConn->mReadEvent.notifyOne();
@@ -1541,11 +1541,11 @@
         // Look for the connection block
         if ((pConn = sP2p.findConnection(eventData->congest.handle)) == NULL)
         {
-            ALOGE ("%s: NFA_P2P_CONGEST_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->congest.handle);
+            ALOGE("%s: NFA_P2P_CONGEST_EVT: can't find conn for NFA handle: 0x%04x", fn, eventData->congest.handle);
         }
         else
         {
-            ALOGD_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: NFA_P2P_CONGEST_EVT; nfa handle: 0x%04x  congested: %u", fn,
+            ALOGV_IF ((appl_trace_level>=BT_TRACE_LEVEL_DEBUG), "%s: NFA_P2P_CONGEST_EVT; nfa handle: 0x%04x  congested: %u", fn,
                     eventData->congest.handle, eventData->congest.is_congested);
 
             SyncEventGuard guard (pConn->mCongEvent);
@@ -1554,7 +1554,7 @@
         break;
 
     default:
-        ALOGE ("%s: unknown event 0x%X ????", fn, p2pEvent);
+        ALOGE("%s: unknown event 0x%X ????", fn, p2pEvent);
         break;
     }
 }
@@ -1571,7 +1571,7 @@
 ** Returns:         None
 **
 *******************************************************************************/
-void PeerToPeer::connectionEventHandler (UINT8 event, tNFA_CONN_EVT_DATA* /*eventData*/)
+void PeerToPeer::connectionEventHandler (uint8_t event, tNFA_CONN_EVT_DATA* /*eventData*/)
 {
     switch (event)
     {
@@ -1630,9 +1630,9 @@
 bool P2pServer::registerWithStack()
 {
     static const char fn [] = "P2pServer::registerWithStack";
-    ALOGD ("%s: enter; service name: %s  JNI handle: %u", fn, mServiceName.c_str(), mJniHandle);
+    ALOGV("%s: enter; service name: %s  JNI handle: %u", fn, mServiceName.c_str(), mJniHandle);
     tNFA_STATUS     stat  = NFA_STATUS_OK;
-    UINT8           serverSap = NFA_P2P_ANY_SAP;
+    uint8_t         serverSap = NFA_P2P_ANY_SAP;
 
     /**********************
    default values for all LLCP parameters:
@@ -1656,7 +1656,7 @@
            LLCP_DATA_LINK_TIMEOUT,
            LLCP_DELAY_TIME_TO_SEND_FIRST_PDU);
    if (stat != NFA_STATUS_OK)
-       ALOGE ("%s: fail set LLCP config; error=0x%X", fn, stat);
+       ALOGE("%s: fail set LLCP config; error=0x%X", fn, stat);
 
    if (sSnepServiceName.compare(mServiceName) == 0)
        serverSap = LLCP_SAP_SNEP; //LLCP_SAP_SNEP == 4
@@ -1667,10 +1667,10 @@
                PeerToPeer::nfaServerCallback);
        if (stat != NFA_STATUS_OK)
        {
-           ALOGE ("%s: fail register p2p server; error=0x%X", fn, stat);
+           ALOGE("%s: fail register p2p server; error=0x%X", fn, stat);
            return (false);
        }
-       ALOGD ("%s: wait for listen-completion event", fn);
+       ALOGV("%s: wait for listen-completion event", fn);
        // Wait for NFA_P2P_REG_SERVER_EVT
        mRegServerEvent.wait ();
    }
@@ -1686,44 +1686,44 @@
 
     sp<NfaConn> connection = allocateConnection(connJniHandle);
     if (connection == NULL) {
-        ALOGE ("%s: failed to allocate new server connection", fn);
+        ALOGE("%s: failed to allocate new server connection", fn);
         return false;
     }
 
     {
         // Wait for NFA_P2P_CONN_REQ_EVT or NFA_NDEF_DATA_EVT when remote device requests connection
         SyncEventGuard guard (mConnRequestEvent);
-        ALOGD ("%s: serverJniHandle: %u; connJniHandle: %u; wait for incoming connection", fn,
+        ALOGV("%s: serverJniHandle: %u; connJniHandle: %u; wait for incoming connection", fn,
                 serverJniHandle, connJniHandle);
         mConnRequestEvent.wait();
-        ALOGD ("%s: serverJniHandle: %u; connJniHandle: %u; nfa conn h: 0x%X; got incoming connection", fn,
+        ALOGV("%s: serverJniHandle: %u; connJniHandle: %u; nfa conn h: 0x%X; got incoming connection", fn,
                 serverJniHandle, connJniHandle, connection->mNfaConnHandle);
     }
 
     if (connection->mNfaConnHandle == NFA_HANDLE_INVALID)
     {
         removeServerConnection(connJniHandle);
-        ALOGD ("%s: no handle assigned", fn);
+        ALOGV("%s: no handle assigned", fn);
         return (false);
     }
 
     if (maxInfoUnit > (int)LLCP_MIU)
     {
-        ALOGD ("%s: overriding the miu passed by the app(%d) with stack miu(%zu)", fn, maxInfoUnit, LLCP_MIU);
+        ALOGV("%s: overriding the miu passed by the app(%d) with stack miu(%zu)", fn, maxInfoUnit, LLCP_MIU);
         maxInfoUnit = LLCP_MIU;
     }
 
-    ALOGD ("%s: serverJniHandle: %u; connJniHandle: %u; nfa conn h: 0x%X; try accept", fn,
+    ALOGV("%s: serverJniHandle: %u; connJniHandle: %u; nfa conn h: 0x%X; try accept", fn,
             serverJniHandle, connJniHandle, connection->mNfaConnHandle);
     nfaStat = NFA_P2pAcceptConn (connection->mNfaConnHandle, maxInfoUnit, recvWindow);
 
     if (nfaStat != NFA_STATUS_OK)
     {
-        ALOGE ("%s: fail to accept remote; error=0x%X", fn, nfaStat);
+        ALOGE("%s: fail to accept remote; error=0x%X", fn, nfaStat);
         return (false);
     }
 
-    ALOGD ("%s: exit; serverJniHandle: %u; connJniHandle: %u; nfa conn h: 0x%X", fn,
+    ALOGV("%s: exit; serverJniHandle: %u; connJniHandle: %u; nfa conn h: 0x%X", fn,
             serverJniHandle, connJniHandle, connection->mNfaConnHandle);
     return (true);
 }
diff --git a/nci/jni/PeerToPeer.h b/nci/jni/PeerToPeer.h
index 3fb97a6..53b554b 100644
--- a/nci/jni/PeerToPeer.h
+++ b/nci/jni/PeerToPeer.h
@@ -133,7 +133,7 @@
     ** Returns:         None
     **
     *******************************************************************************/
-    void connectionEventHandler (UINT8 event, tNFA_CONN_EVT_DATA* eventData);
+    void connectionEventHandler (uint8_t event, tNFA_CONN_EVT_DATA* eventData);
 
 
     /*******************************************************************************
@@ -190,7 +190,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool createClient (tJNI_HANDLE jniHandle, UINT16 miu, UINT8 rw);
+    bool createClient (tJNI_HANDLE jniHandle, uint16_t miu, uint8_t rw);
 
 
     /*******************************************************************************
@@ -218,7 +218,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool connectConnOriented (tJNI_HANDLE jniHandle, UINT8 destinationSap);
+    bool connectConnOriented (tJNI_HANDLE jniHandle, uint8_t destinationSap);
 
 
     /*******************************************************************************
@@ -233,7 +233,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool send (tJNI_HANDLE jniHandle, UINT8* buffer, UINT16 bufferLen);
+    bool send (tJNI_HANDLE jniHandle, uint8_t* buffer, uint16_t bufferLen);
 
 
     /*******************************************************************************
@@ -249,7 +249,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool receive (tJNI_HANDLE jniHandle, UINT8* buffer, UINT16 bufferLen, UINT16& actualLen);
+    bool receive (tJNI_HANDLE jniHandle, uint8_t* buffer, uint16_t bufferLen, uint16_t& actualLen);
 
 
     /*******************************************************************************
@@ -275,7 +275,7 @@
     ** Returns:         Peer's max information unit.
     **
     *******************************************************************************/
-    UINT16 getRemoteMaxInfoUnit (tJNI_HANDLE jniHandle);
+    uint16_t getRemoteMaxInfoUnit (tJNI_HANDLE jniHandle);
 
 
     /*******************************************************************************
@@ -288,7 +288,7 @@
     ** Returns:         Peer's receive window size.
     **
     *******************************************************************************/
-    UINT8 getRemoteRecvWindow (tJNI_HANDLE jniHandle);
+    uint8_t getRemoteRecvWindow (tJNI_HANDLE jniHandle);
 
 
     /*******************************************************************************
@@ -396,7 +396,7 @@
     static PeerToPeer sP2p;
 
     // Variables below only accessed from a single thread
-    UINT16          mRemoteWKS;                 // Peer's well known services
+    uint16_t        mRemoteWKS;                 // Peer's well known services
     bool            mIsP2pListening;            // If P2P listening is enabled or not
     tNFA_TECHNOLOGY_MASK    mP2pListenTechMask; // P2P Listen mask
 
@@ -509,7 +509,7 @@
     ** Returns:         True if ok.
     **
     *******************************************************************************/
-    bool        createDataLinkConn (tJNI_HANDLE jniHandle, const char* serviceName, UINT8 destinationSap);
+    bool        createDataLinkConn (tJNI_HANDLE jniHandle, const char* serviceName, uint8_t destinationSap);
 
 
     /*******************************************************************************
@@ -590,10 +590,10 @@
 public:
     tNFA_HANDLE         mNfaConnHandle;         // NFA handle of the P2P connection
     PeerToPeer::tJNI_HANDLE         mJniHandle;             // JNI handle of the P2P connection
-    UINT16              mMaxInfoUnit;
-    UINT8               mRecvWindow;
-    UINT16              mRemoteMaxInfoUnit;
-    UINT8               mRemoteRecvWindow;
+    uint16_t            mMaxInfoUnit;
+    uint8_t             mRecvWindow;
+    uint16_t            mRemoteMaxInfoUnit;
+    uint8_t             mRemoteRecvWindow;
     SyncEvent           mReadEvent;             // event for reading
     SyncEvent           mCongEvent;             // event for congestion
     SyncEvent           mDisconnectingEvent;     // event for disconnecting
diff --git a/nci/jni/Pn544Interop.cpp b/nci/jni/Pn544Interop.cpp
index 31dce20..f824f2a 100644
--- a/nci/jni/Pn544Interop.cpp
+++ b/nci/jni/Pn544Interop.cpp
@@ -21,7 +21,7 @@
 **                  operations with PN544 controller.
 **
 *****************************************************************************/
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "Pn544Interop.h"
 #include "IntervalTimer.h"
 #include "Mutex.h"
@@ -59,7 +59,7 @@
 *******************************************************************************/
 void pn544InteropStopPolling ()
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     gMutex.lock ();
     gTimer.kill ();
     android::startStopPolling (false);
@@ -67,7 +67,7 @@
     gAbortNow = false;
     gTimer.set (gIntervalTime, pn544InteropStartPolling); //after some time, start polling again
     gMutex.unlock ();
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
 }
 
 
@@ -83,32 +83,32 @@
 *******************************************************************************/
 void pn544InteropStartPolling (union sigval)
 {
-    ALOGD ("%s: enter", __FUNCTION__);
+    ALOGV("%s: enter", __func__);
     gMutex.lock ();
     NfcTag::ActivationState state = NfcTag::getInstance ().getActivationState ();
 
     if (gAbortNow)
     {
-        ALOGD ("%s: abort now", __FUNCTION__);
+        ALOGV("%s: abort now", __func__);
         gIsBusy = false;
         goto TheEnd;
     }
 
     if (state == NfcTag::Idle)
     {
-        ALOGD ("%s: start polling", __FUNCTION__);
+        ALOGV("%s: start polling", __func__);
         android::startStopPolling (true);
         gIsBusy = false;
     }
     else
     {
-        ALOGD ("%s: try again later", __FUNCTION__);
+        ALOGV("%s: try again later", __func__);
         gTimer.set (gIntervalTime, pn544InteropStartPolling); //after some time, start polling again
     }
 
 TheEnd:
     gMutex.unlock ();
-    ALOGD ("%s: exit", __FUNCTION__);
+    ALOGV("%s: exit", __func__);
 }
 
 
@@ -127,7 +127,7 @@
     gMutex.lock ();
     isBusy = gIsBusy;
     gMutex.unlock ();
-    ALOGD ("%s: %u", __FUNCTION__, isBusy);
+    ALOGV("%s: %u", __func__, isBusy);
     return isBusy;
 }
 
@@ -143,7 +143,7 @@
 *******************************************************************************/
 void pn544InteropAbortNow ()
 {
-    ALOGD ("%s", __FUNCTION__);
+    ALOGV("%s", __func__);
     gMutex.lock ();
     gAbortNow = true;
     gMutex.unlock ();
diff --git a/nci/jni/PowerSwitch.cpp b/nci/jni/PowerSwitch.cpp
index cf320b5..f21133f 100755
--- a/nci/jni/PowerSwitch.cpp
+++ b/nci/jni/PowerSwitch.cpp
@@ -17,7 +17,7 @@
 /*
  *  Adjust the controller's power states.
  */
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "PowerSwitch.h"
 #include "NfcJniUtil.h"
 #include "config.h"
@@ -101,10 +101,10 @@
 
     mMutex.lock ();
 
-    ALOGD ("%s: level=%s (%u)", fn, powerLevelToString(level), level);
+    ALOGV("%s: level=%s (%u)", fn, powerLevelToString(level), level);
     if (GetNumValue (NAME_SCREEN_OFF_POWER_STATE, &num, sizeof(num)))
         mDesiredScreenOffPowerState = (int) num;
-    ALOGD ("%s: desired screen-off state=%d", fn, mDesiredScreenOffPowerState);
+    ALOGV("%s: desired screen-off state=%d", fn, mDesiredScreenOffPowerState);
 
     switch (level)
     {
@@ -119,7 +119,7 @@
         break;
 
     default:
-        ALOGE ("%s: not handled", fn);
+        ALOGE("%s: not handled", fn);
         break;
     }
     mMutex.unlock ();
@@ -162,7 +162,7 @@
 
     mMutex.lock ();
 
-    ALOGD ("%s: level=%s (%u)", fn, powerLevelToString(newLevel), newLevel);
+    ALOGV("%s: level=%s (%u)", fn, powerLevelToString(newLevel), newLevel);
     if (mCurrLevel == newLevel)
     {
         retval = true;
@@ -171,7 +171,7 @@
 
     if (mCurrLevel == UNKNOWN_LEVEL)
     {
-        ALOGE ("%s: unknown power level", fn);
+        ALOGE("%s: unknown power level", fn);
         goto TheEnd;
     }
 
@@ -182,7 +182,7 @@
         SyncEventGuard g (gDeactivatedEvent);
         if (gActivated)
         {
-            ALOGD("%s: wait for deactivation", fn);
+            ALOGV("%s: wait for deactivation", fn);
             gDeactivatedEvent.wait ();
         }
         mMutex.lock ();
@@ -207,11 +207,11 @@
         break;
 
     default:
-        ALOGE ("%s: not handled", fn);
+        ALOGE("%s: not handled", fn);
         break;
     }
 
-    ALOGD("%s: actual power level=%s", fn, powerLevelToString(mCurrLevel));
+    ALOGV("%s: actual power level=%s", fn, powerLevelToString(mCurrLevel));
 
 TheEnd:
     mMutex.unlock ();
@@ -221,7 +221,7 @@
 
 bool PowerSwitch::setScreenOffPowerState (ScreenOffPowerState newState)
 {
-    ALOGD ("PowerSwitch::setScreenOffPowerState: level=%s (%u)",
+    ALOGV("PowerSwitch::setScreenOffPowerState: level=%s (%u)",
         screenOffPowerStateToString(newState), newState);
 
     mMutex.lock ();
@@ -248,7 +248,7 @@
     mMutex.lock ();
     mCurrActivity &= ~deactivated;
     retVal = mCurrActivity != 0;
-    ALOGD ("PowerSwitch::setModeOff(deactivated=0x%x) : mCurrActivity=0x%x", deactivated, mCurrActivity);
+    ALOGV("PowerSwitch::setModeOff(deactivated=0x%x) : mCurrActivity=0x%x", deactivated, mCurrActivity);
     mMutex.unlock ();
     return retVal;
 }
@@ -270,7 +270,7 @@
     mMutex.lock ();
     mCurrActivity |= activated;
     retVal = mCurrActivity != 0;
-    ALOGD ("PowerSwitch::setModeOn(activated=0x%x) : mCurrActivity=0x%x", activated, mCurrActivity);
+    ALOGV("PowerSwitch::setModeOn(activated=0x%x) : mCurrActivity=0x%x", activated, mCurrActivity);
     mMutex.unlock ();
     return retVal;
 }
@@ -289,7 +289,7 @@
 bool PowerSwitch::setPowerOffSleepState (bool sleep)
 {
     static const char fn [] = "PowerSwitch::setPowerOffSleepState";
-    ALOGD ("%s: enter; sleep=%u", fn, sleep);
+    ALOGV("%s: enter; sleep=%u", fn, sleep);
     tNFA_STATUS stat = NFA_STATUS_FAILED;
     bool retval = false;
 
@@ -300,7 +300,7 @@
         {
             SyncEventGuard guard (mPowerStateEvent);
             mExpectedDeviceMgtPowerState = NFA_DM_PWR_MODE_OFF_SLEEP; //if power adjustment is ok, then this is the expected state
-            ALOGD ("%s: try power off", fn);
+            ALOGV("%s: try power off", fn);
             stat = NFA_PowerOffSleepMode (TRUE);
             if (stat == NFA_STATUS_OK)
             {
@@ -309,13 +309,13 @@
             }
             else
             {
-                ALOGE ("%s: API fail; stat=0x%X", fn, stat);
+                ALOGE("%s: API fail; stat=0x%X", fn, stat);
                 goto TheEnd;
             }
         }
         else
         {
-            ALOGE ("%s: power is not ON; curr device mgt power state=%s (%u)", fn,
+            ALOGE("%s: power is not ON; curr device mgt power state=%s (%u)", fn,
                     deviceMgtPowerStateToString (mCurrDeviceMgtPowerState), mCurrDeviceMgtPowerState);
             goto TheEnd;
         }
@@ -328,14 +328,14 @@
             SyncEventGuard guard (mPowerStateEvent);
             mCurrDeviceMgtPowerState = NFA_DM_PWR_STATE_UNKNOWN;
             mExpectedDeviceMgtPowerState = NFA_DM_PWR_MODE_FULL;  //if power adjustment is ok, then this is the expected state
-            ALOGD ("%s: try full power", fn);
+            ALOGV("%s: try full power", fn);
             stat = NFA_PowerOffSleepMode (FALSE);
             if (stat == NFA_STATUS_OK)
             {
                 mPowerStateEvent.wait ();
                 if (mCurrDeviceMgtPowerState != NFA_DM_PWR_MODE_FULL)
                 {
-                    ALOGE ("%s: unable to full power; curr device mgt power stat=%s (%u)", fn,
+                    ALOGE("%s: unable to full power; curr device mgt power stat=%s (%u)", fn,
                             deviceMgtPowerStateToString (mCurrDeviceMgtPowerState), mCurrDeviceMgtPowerState);
                     goto TheEnd;
                 }
@@ -344,13 +344,13 @@
             }
             else
             {
-                ALOGE ("%s: API fail; stat=0x%X", fn, stat);
+                ALOGE("%s: API fail; stat=0x%X", fn, stat);
                 goto TheEnd;
             }
         }
         else
         {
-            ALOGE ("%s: not in power-off state; curr device mgt power state=%s (%u)", fn,
+            ALOGE("%s: not in power-off state; curr device mgt power state=%s (%u)", fn,
                     deviceMgtPowerStateToString (mCurrDeviceMgtPowerState), mCurrDeviceMgtPowerState);
             goto TheEnd;
         }
@@ -358,7 +358,7 @@
 
     retval = true;
 TheEnd:
-    ALOGD ("%s: exit; return %u", fn, retval);
+    ALOGV("%s: exit; return %u", fn, retval);
     return retval;
 }
 
@@ -373,7 +373,7 @@
 ** Returns:         Text representation of power level.
 **
 *******************************************************************************/
-const char* PowerSwitch::deviceMgtPowerStateToString (UINT8 deviceMgtPowerState)
+const char* PowerSwitch::deviceMgtPowerStateToString (uint8_t deviceMgtPowerState)
 {
     switch (deviceMgtPowerState)
     {
@@ -451,7 +451,7 @@
 void PowerSwitch::abort ()
 {
     static const char fn [] = "PowerSwitch::abort";
-    ALOGD ("%s", fn);
+    ALOGV("%s", fn);
     SyncEventGuard guard (mPowerStateEvent);
     mPowerStateEvent.notifyOne ();
 }
@@ -468,7 +468,7 @@
 ** Returns:         None
 **
 *******************************************************************************/
-void PowerSwitch::deviceManagementCallback (UINT8 event, tNFA_DM_CBACK_DATA* eventData)
+void PowerSwitch::deviceManagementCallback (uint8_t event, tNFA_DM_CBACK_DATA* eventData)
 {
     static const char fn [] = "PowerSwitch::deviceManagementCallback";
 
@@ -477,7 +477,7 @@
     case NFA_DM_PWR_MODE_CHANGE_EVT:
         {
             tNFA_DM_PWR_MODE_CHANGE& power_mode = eventData->power_mode;
-            ALOGD ("%s: NFA_DM_PWR_MODE_CHANGE_EVT; status=0x%X; device mgt power state=%s (0x%X)", fn,
+            ALOGV("%s: NFA_DM_PWR_MODE_CHANGE_EVT; status=0x%X; device mgt power state=%s (0x%X)", fn,
                     power_mode.status, sPowerSwitch.deviceMgtPowerStateToString (power_mode.power_mode),
                     power_mode.power_mode);
             SyncEventGuard guard (sPowerSwitch.mPowerStateEvent);
diff --git a/nci/jni/PowerSwitch.h b/nci/jni/PowerSwitch.h
index 1324c50..ae9986f 100755
--- a/nci/jni/PowerSwitch.h
+++ b/nci/jni/PowerSwitch.h
@@ -221,7 +221,7 @@
     ** Returns:         None
     **
     *******************************************************************************/
-    static void deviceManagementCallback (UINT8 event, tNFA_DM_CBACK_DATA* eventData);
+    static void deviceManagementCallback (uint8_t event, tNFA_DM_CBACK_DATA* eventData);
 
 
     /*******************************************************************************
@@ -237,11 +237,11 @@
 
 private:
     PowerLevel mCurrLevel;
-    UINT8 mCurrDeviceMgtPowerState; //device management power state; such as NFA_BRCM_PWR_MODE_???
-    UINT8 mExpectedDeviceMgtPowerState; //device management power state; such as NFA_BRCM_PWR_MODE_???
+    uint8_t mCurrDeviceMgtPowerState; //device management power state; such as NFA_BRCM_PWR_MODE_???
+    uint8_t mExpectedDeviceMgtPowerState; //device management power state; such as NFA_BRCM_PWR_MODE_???
     int mDesiredScreenOffPowerState; //read from .conf file; 0=power-off-sleep; 1=full power; 2=CE4 power
     static PowerSwitch sPowerSwitch; //singleton object
-    static const UINT8 NFA_DM_PWR_STATE_UNKNOWN = -1; //device management power state power state is unknown
+    static const uint8_t NFA_DM_PWR_STATE_UNKNOWN = -1; //device management power state power state is unknown
     SyncEvent mPowerStateEvent;
     PowerActivity mCurrActivity;
     Mutex mMutex;
@@ -270,7 +270,7 @@
     ** Returns:         Text representation of power level.
     **
     *******************************************************************************/
-    const char* deviceMgtPowerStateToString (UINT8 deviceMgtPowerState);
+    const char* deviceMgtPowerStateToString (uint8_t deviceMgtPowerState);
 
 
     /*******************************************************************************
diff --git a/nci/jni/RouteDataSet.cpp b/nci/jni/RouteDataSet.cpp
index bb259b3..1659e33 100644
--- a/nci/jni/RouteDataSet.cpp
+++ b/nci/jni/RouteDataSet.cpp
@@ -17,7 +17,7 @@
 /*
  *  Import and export general routing data using a XML file.
  */
-#include "OverrideLog.h"
+#include "_OverrideLog.h"
 #include "RouteDataSet.h"
 #include "libxml/xmlmemory.h"
 #include <errno.h>
@@ -47,21 +47,21 @@
     std::string::size_type pos2 = aid.find_first_of (delimiter);
 
     //parse the AID string; each hex number is separated by a colon;
-    mBuffer = new UINT8 [aid.length()];
+    mBuffer = new uint8_t [aid.length()];
     while (true)
     {
         num = 0;
         if (pos2 == std::string::npos)
         {
             sscanf (aid.substr(pos1).c_str(), "%x", &num);
-            mBuffer [mBufferLen] = (UINT8) num;
+            mBuffer [mBufferLen] = (uint8_t) num;
             mBufferLen++;
             break;
         }
         else
         {
             sscanf (aid.substr(pos1, pos2-pos1+1).c_str(), "%x", &num);
-            mBuffer [mBufferLen] = (UINT8) num;
+            mBuffer [mBufferLen] = (uint8_t) num;
             mBufferLen++;
             pos1 = pos2 + 1;
             pos2 = aid.find_first_of (delimiter, pos1);
@@ -116,14 +116,13 @@
 ** Returns:         True if ok.
 **
 *******************************************************************************/
-bool RouteDataSet::initialize ()
+bool RouteDataSet::initialize()
 {
-    static const char fn [] = "RouteDataSet::initialize";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", "RouteDataSet::initialize");
     //check that the libxml2 version in use is compatible
     //with the version the software has been compiled with
     LIBXML_TEST_VERSION
-    ALOGD ("%s: exit; return=true", fn);
+    ALOGV("%s: exit; return=true", "RouteDataSet::initialize");
     return true;
 }
 
@@ -137,10 +136,10 @@
 ** Returns:         None.
 **
 *******************************************************************************/
-void RouteDataSet::deleteDatabase ()
+void RouteDataSet::deleteDatabase()
 {
-    static const char fn [] = "RouteDataSet::deleteDatabase";
-    ALOGD ("%s: default db size=%zu; sec elem db size=%zu", fn, mDefaultRouteDatabase.size(), mSecElemRouteDatabase.size());
+    ALOGV("%s: default db size=%zu; sec elem db size=%zu", "RouteDataSet::deleteDatabase",
+            mDefaultRouteDatabase.size(), mSecElemRouteDatabase.size());
     Database::iterator it;
 
     for (it = mDefaultRouteDatabase.begin(); it != mDefaultRouteDatabase.end(); it++)
@@ -165,7 +164,7 @@
 bool RouteDataSet::import ()
 {
     static const char fn [] = "RouteDataSet::import";
-    ALOGD ("%s: enter", fn);
+    ALOGV("%s: enter", fn);
     bool retval = false;
     xmlDocPtr doc;
     xmlNodePtr node1;
@@ -177,17 +176,17 @@
     doc = xmlParseFile (strFilename.c_str());
     if (doc == NULL)
     {
-        ALOGD ("%s: fail parse", fn);
+        ALOGV("%s: fail parse", fn);
         goto TheEnd;
     }
 
     node1 = xmlDocGetRootElement (doc);
     if (node1 == NULL)
     {
-        ALOGE ("%s: fail root element", fn);
+        ALOGE("%s: fail root element", fn);
         goto TheEnd;
     }
-    ALOGD ("%s: root=%s", fn, node1->name);
+    ALOGV("%s: root=%s", fn, node1->name);
 
     node1 = node1->xmlChildrenNode;
     while (node1) //loop through all elements in <Routes ...
@@ -197,7 +196,7 @@
             xmlChar* value = xmlGetProp (node1, (const xmlChar*) "Type");
             if (value && (xmlStrcmp (value, (const xmlChar*) "SecElemSelectedRoutes") == 0))
             {
-                ALOGD ("%s: found SecElemSelectedRoutes", fn);
+                ALOGV("%s: found SecElemSelectedRoutes", fn);
                 xmlNodePtr node2 = node1->xmlChildrenNode;
                 while (node2) //loop all elements in <Route Type="SecElemSelectedRoutes" ...
                 {
@@ -210,7 +209,7 @@
             }
             else if (value && (xmlStrcmp (value, (const xmlChar*) "DefaultRoutes") == 0))
             {
-                ALOGD ("%s: found DefaultRoutes", fn);
+                ALOGV("%s: found DefaultRoutes", fn);
                 xmlNodePtr node2 = node1->xmlChildrenNode;
                 while (node2) //loop all elements in <Route Type="DefaultRoutes" ...
                 {
@@ -231,7 +230,7 @@
 TheEnd:
     xmlFreeDoc (doc);
     xmlCleanupParser ();
-    ALOGD ("%s: exit; return=%u", fn, retval);
+    ALOGV("%s: exit; return=%u", fn, retval);
     return retval;
 }
 
@@ -259,22 +258,22 @@
     fh = fopen (filename.c_str (), "w");
     if (fh == NULL)
     {
-        ALOGE ("%s: fail to open file", fn);
+        ALOGE("%s: fail to open file", fn);
         return false;
     }
 
     actualWritten = fwrite (routesXml, sizeof(char), strlen(routesXml), fh);
     retval = actualWritten == strlen(routesXml);
     fclose (fh);
-    ALOGD ("%s: wrote %zu bytes", fn, actualWritten);
+    ALOGV("%s: wrote %zu bytes", fn, actualWritten);
     if (retval == false)
-        ALOGE ("%s: error during write", fn);
+        ALOGE("%s: error during write", fn);
 
     //set file permission to
     //owner read, write; group read; other read
     stat = chmod (filename.c_str (), S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
     if (stat == -1)
-        ALOGE ("%s: error during chmod", fn);
+        ALOGE("%s: error during chmod", fn);
     return retval;
 }
 
@@ -291,7 +290,6 @@
 *******************************************************************************/
 bool RouteDataSet::loadFromFile (std::string& routesXml)
 {
-    static const char fn [] = "RouteDataSet::loadFromFile";
     FILE* fh = NULL;
     size_t actual = 0;
     char buffer [1024];
@@ -301,7 +299,7 @@
     fh = fopen (filename.c_str (), "r");
     if (fh == NULL)
     {
-        ALOGD ("%s: fail to open file", fn);
+        ALOGV("%s: fail to open file", "RouteDataSet::loadFromFile");
         return false;
     }
 
@@ -313,7 +311,7 @@
         routesXml.append (buffer, actual);
     }
     fclose (fh);
-    ALOGD ("%s: read %zu bytes", fn, routesXml.length());
+    ALOGV("%s: read %zu bytes", "RouteDataSet::loadFromFile", routesXml.length());
     return true;
 }
 
@@ -333,7 +331,6 @@
 *******************************************************************************/
 void RouteDataSet::importProtocolRoute (xmlNodePtr& element, Database& database)
 {
-    static const char fn [] = "RouteDataSet::importProtocolRoute";
     const xmlChar* id = (const xmlChar*) "Id";
     const xmlChar* secElem = (const xmlChar*) "SecElem";
     const xmlChar* trueString = (const xmlChar*) "true";
@@ -343,7 +340,7 @@
     RouteDataForProtocol* data = new RouteDataForProtocol;
     xmlChar* value = NULL;
 
-    ALOGD_IF (sDebug, "%s: element=%s", fn, element->name);
+    ALOGV_IF(sDebug, "%s: element=%s", "RouteDataSet::importProtocolRoute", element->name);
     value = xmlGetProp (element, id);
     if (value)
     {
@@ -356,7 +353,7 @@
         else if (xmlStrcmp (value, (const xmlChar*) "IsoDep") == 0)
             data->mProtocol = NFA_PROTOCOL_MASK_ISO_DEP;
         xmlFree (value);
-        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, id, data->mProtocol);
+        ALOGV_IF(sDebug, "%s: %s=0x%X", "RouteDataSet::importProtocolRoute", id, data->mProtocol);
     }
 
     value = xmlGetProp (element, secElem);
@@ -365,7 +362,7 @@
         data->mNfaEeHandle = strtol ((char*) value, NULL, 16);
         xmlFree (value);
         data->mNfaEeHandle = data->mNfaEeHandle | NFA_HANDLE_GROUP_EE;
-        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, secElem, data->mNfaEeHandle);
+        ALOGV_IF(sDebug, "%s: %s=0x%X", "RouteDataSet::importProtocolRoute", secElem, data->mNfaEeHandle);
     }
 
     value = xmlGetProp (element, switchOn);
@@ -405,7 +402,6 @@
 *******************************************************************************/
 void RouteDataSet::importTechnologyRoute (xmlNodePtr& element, Database& database)
 {
-    static const char fn [] = "RouteDataSet::importTechnologyRoute";
     const xmlChar* id = (const xmlChar*) "Id";
     const xmlChar* secElem = (const xmlChar*) "SecElem";
     const xmlChar* trueString = (const xmlChar*) "true";
@@ -415,7 +411,7 @@
     RouteDataForTechnology* data = new RouteDataForTechnology;
     xmlChar* value = NULL;
 
-    ALOGD_IF (sDebug, "%s: element=%s", fn, element->name);
+    ALOGV_IF(sDebug, "%s: element=%s", "RouteDataSet::importTechnologyRoute", element->name);
     value = xmlGetProp (element, id);
     if (value)
     {
@@ -426,7 +422,8 @@
         else if (xmlStrcmp (value, (const xmlChar*) "NfcF") == 0)
             data->mTechnology = NFA_TECHNOLOGY_MASK_F;
         xmlFree (value);
-        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, id, data->mTechnology);
+        ALOGV_IF(sDebug, "%s: %s=0x%X", "RouteDataSet::importTechnologyRoute", id,
+                data->mTechnology);
     }
 
     value = xmlGetProp (element, secElem);
@@ -435,7 +432,7 @@
         data->mNfaEeHandle = strtol ((char*) value, NULL, 16);
         xmlFree (value);
         data->mNfaEeHandle = data->mNfaEeHandle | NFA_HANDLE_GROUP_EE;
-        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, secElem, data->mNfaEeHandle);
+        ALOGV_IF(sDebug, "%s: %s=0x%X", "RouteDataSet::importTechnologyRoute", secElem, data->mNfaEeHandle);
     }
 
     value = xmlGetProp (element, switchOn);
@@ -477,7 +474,7 @@
     std::string filename (bcm_nfc_location);
     filename.append (sConfigFile);
     int stat = remove (filename.c_str());
-    ALOGD ("%s: exit %u", fn, stat==0);
+    ALOGV("%s: exit %u", fn, stat==0);
     return stat == 0;
 }
 
@@ -519,7 +516,7 @@
     static const char fn [] = "RouteDataSet::printDiagnostic";
     Database* db = getDatabase (DefaultRouteDatabase);
 
-    ALOGD ("%s: default route database", fn);
+    ALOGV("%s: default route database", fn);
     for (Database::iterator iter = db->begin(); iter != db->end(); iter++)
     {
         RouteData* routeData = *iter;
@@ -528,19 +525,19 @@
         case RouteData::ProtocolRoute:
             {
                 RouteDataForProtocol* proto = (RouteDataForProtocol*) routeData;
-                ALOGD ("%s: ee h=0x%X; protocol=0x%X", fn, proto->mNfaEeHandle, proto->mProtocol);
+                ALOGV("%s: ee h=0x%X; protocol=0x%X", fn, proto->mNfaEeHandle, proto->mProtocol);
             }
             break;
         case RouteData::TechnologyRoute:
             {
                 RouteDataForTechnology* tech = (RouteDataForTechnology*) routeData;
-                ALOGD ("%s: ee h=0x%X; technology=0x%X", fn, tech->mNfaEeHandle, tech->mTechnology);
+                ALOGV("%s: ee h=0x%X; technology=0x%X", fn, tech->mNfaEeHandle, tech->mTechnology);
             }
             break;
         }
     }
 
-    ALOGD ("%s: sec elem route database", fn);
+    ALOGV("%s: sec elem route database", fn);
     db = getDatabase (SecElemRouteDatabase);
     for (Database::iterator iter2 = db->begin(); iter2 != db->end(); iter2++)
     {
@@ -550,13 +547,13 @@
         case RouteData::ProtocolRoute:
             {
                 RouteDataForProtocol* proto = (RouteDataForProtocol*) routeData;
-                ALOGD ("%s: ee h=0x%X; protocol=0x%X", fn, proto->mNfaEeHandle, proto->mProtocol);
+                ALOGV("%s: ee h=0x%X; protocol=0x%X", fn, proto->mNfaEeHandle, proto->mProtocol);
             }
             break;
         case RouteData::TechnologyRoute:
             {
                 RouteDataForTechnology* tech = (RouteDataForTechnology*) routeData;
-                ALOGD ("%s: ee h=0x%X; technology=0x%X", fn, tech->mNfaEeHandle, tech->mTechnology);
+                ALOGV("%s: ee h=0x%X; technology=0x%X", fn, tech->mNfaEeHandle, tech->mTechnology);
             }
             break;
         }
diff --git a/nci/jni/RouteDataSet.h b/nci/jni/RouteDataSet.h
index d2a09b8..eefcb41 100644
--- a/nci/jni/RouteDataSet.h
+++ b/nci/jni/RouteDataSet.h
@@ -134,12 +134,12 @@
     ~AidBuffer ();
 
 
-    UINT8* buffer () {return mBuffer;};
+    uint8_t* buffer () {return mBuffer;};
     int length () {return mBufferLen;};
 
 private:
-    UINT8* mBuffer;
-    UINT32 mBufferLen;
+    uint8_t* mBuffer;
+    uint32_t mBufferLen;
 };
 
 
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp
index 17ccf55..101dc0c 100755
--- a/nci/jni/RoutingManager.cpp
+++ b/nci/jni/RoutingManager.cpp
@@ -18,7 +18,8 @@
  *  Manage the listen-mode routing table.
  */
 
-#include <cutils/log.h>
+#include <log/log.h>
+
 #include <ScopedLocalRef.h>
 #include <JNIHelp.h>
 #include "config.h"
@@ -59,21 +60,21 @@
         mActiveSeNfcF = num;
     else
         mActiveSeNfcF = 0x00;
-    ALOGD("%s: Active SE for Nfc-F is 0x%02X", fn, mActiveSeNfcF);
+    ALOGV("%s: Active SE for Nfc-F is 0x%02X", fn, mActiveSeNfcF);
 
     // Get the "default" route
     if (GetNumValue("DEFAULT_ISODEP_ROUTE", &num, sizeof(num)))
         mDefaultEe = num;
     else
         mDefaultEe = 0x00;
-    ALOGD("%s: default route is 0x%02X", fn, mDefaultEe);
+    ALOGV("%s: default route is 0x%02X", fn, mDefaultEe);
 
     // Get the "default" route for Nfc-F
     if (GetNumValue("DEFAULT_NFCF_ROUTE", &num, sizeof(num)))
         mDefaultEeNfcF = num;
     else
         mDefaultEeNfcF = 0x00;
-    ALOGD("%s: default route for Nfc-F is 0x%02X", fn, mDefaultEeNfcF);
+    ALOGV("%s: default route for Nfc-F is 0x%02X", fn, mDefaultEeNfcF);
 
     // Get the default "off-host" route.  This is hard-coded at the Java layer
     // but we can override it here to avoid forcing Java changes.
@@ -87,7 +88,7 @@
     else
         mAidMatchingMode = AID_MATCHING_EXACT_ONLY;
 
-    ALOGD("%s: mOffHostEe=0x%02X", fn, mOffHostEe);
+    ALOGV("%s: mOffHostEe=0x%02X", fn, mOffHostEe);
 
     memset (&mEeInfo, 0, sizeof(mEeInfo));
     mReceivedEeInfo = false;
@@ -109,11 +110,11 @@
     tNFA_STATUS nfaStat;
     {
         SyncEventGuard guard (mEeRegisterEvent);
-        ALOGD ("%s: try ee register", fn);
+        ALOGV("%s: try ee register", fn);
         nfaStat = NFA_EeRegister (nfaEeCallback);
         if (nfaStat != NFA_STATUS_OK)
         {
-            ALOGE ("%s: fail ee register; error=0x%X", fn, nfaStat);
+            ALOGE("%s: fail ee register; error=0x%X", fn, nfaStat);
             return false;
         }
         mEeRegisterEvent.wait ();
@@ -123,24 +124,24 @@
 
     if ((mActiveSe != 0) || (mActiveSeNfcF != 0))
     {
-        ALOGD ("%s: Technology Routing (NfcASe:0x%02x, NfcFSe:0x%02x)", fn, mActiveSe, mActiveSeNfcF);
+        ALOGV("%s: Technology Routing (NfcASe:0x%02x, NfcFSe:0x%02x)", fn, mActiveSe, mActiveSeNfcF);
         {
             // Wait for EE info if needed
             SyncEventGuard guard (mEeInfoEvent);
             if (!mReceivedEeInfo)
             {
-                ALOGE("Waiting for EE info");
+                ALOGI("Waiting for EE info");
                 mEeInfoEvent.wait();
             }
         }
 
-        ALOGD ("%s: Number of EE is %d", fn, mEeInfo.num_ee);
-        for (UINT8 i = 0; i < mEeInfo.num_ee; i++)
+        ALOGV("%s: Number of EE is %d", fn, mEeInfo.num_ee);
+        for (uint8_t i = 0; i < mEeInfo.num_ee; i++)
         {
             tNFA_HANDLE eeHandle = mEeInfo.ee_disc_info[i].ee_handle;
             tNFA_TECHNOLOGY_MASK seTechMask = 0;
 
-            ALOGD ("%s   EE[%u] Handle: 0x%04x  techA: 0x%02x  techB: 0x%02x  techF: 0x%02x  techBprime: 0x%02x",
+            ALOGV("%s   EE[%u] Handle: 0x%04x  techA: 0x%02x  techB: 0x%02x  techF: 0x%02x  techBprime: 0x%02x",
                    fn, i, eeHandle,
                    mEeInfo.ee_disc_info[i].la_protocol,
                    mEeInfo.ee_disc_info[i].lb_protocol,
@@ -157,19 +158,19 @@
                     seTechMask |= NFA_TECHNOLOGY_MASK_F;
             }
 
-            ALOGD ("%s: seTechMask[%u]=0x%02x", fn, i, seTechMask);
+            ALOGV("%s: seTechMask[%u]=0x%02x", fn, i, seTechMask);
             if (seTechMask != 0x00)
             {
-                ALOGD("Configuring tech mask 0x%02x on EE 0x%04x", seTechMask, eeHandle);
+                ALOGV("Configuring tech mask 0x%02x on EE 0x%04x", seTechMask, eeHandle);
 
                 nfaStat = NFA_CeConfigureUiccListenTech(eeHandle, seTechMask);
                 if (nfaStat != NFA_STATUS_OK)
-                    ALOGE ("Failed to configure UICC listen technologies.");
+                    ALOGE("Failed to configure UICC listen technologies.");
 
                 // Set technology routes to UICC if it's there
                 nfaStat = NFA_EeSetDefaultTechRouting(eeHandle, seTechMask, seTechMask, seTechMask);
                 if (nfaStat != NFA_STATUS_OK)
-                    ALOGE ("Failed to configure UICC technology routing.");
+                    ALOGE("Failed to configure UICC technology routing.");
 
                 mSeTechMask |= seTechMask;
             }
@@ -179,7 +180,7 @@
     // Tell the host-routing to only listen on Nfc-A
     nfaStat = NFA_CeSetIsoDepListenTech(NFA_TECHNOLOGY_MASK_A);
     if (nfaStat != NFA_STATUS_OK)
-        ALOGE ("Failed to configure CE IsoDep technologies");
+        ALOGE("Failed to configure CE IsoDep technologies");
 
     // Register a wild-card for AIDs routed to the host
     nfaStat = NFA_CeRegisterAidOnDH (NULL, 0, stackCallback);
@@ -213,7 +214,7 @@
             if (nfaStat == NFA_STATUS_OK)
                 mRoutingEvent.wait ();
             else
-                ALOGE ("Fail to set default tech routing for Nfc-A/Nfc-F");
+                ALOGE("Fail to set default tech routing for Nfc-A/Nfc-F");
         }
         // Default routing for IsoDep and T3T protocol
         protoMask = (NFA_PROTOCOL_MASK_ISO_DEP | NFA_PROTOCOL_MASK_T3T);
@@ -221,7 +222,7 @@
         if (nfaStat == NFA_STATUS_OK)
             mRoutingEvent.wait ();
         else
-            ALOGE ("Fail to set default proto routing for IsoDep and T3T");
+            ALOGE("Fail to set default proto routing for IsoDep and T3T");
     }
     else
     {
@@ -233,7 +234,7 @@
             if (nfaStat == NFA_STATUS_OK)
                 mRoutingEvent.wait ();
             else
-                ALOGE ("Fail to set default tech routing for Nfc-A");
+                ALOGE("Fail to set default tech routing for Nfc-A");
         }
         // Default routing for IsoDep protocol
         protoMask = NFA_PROTOCOL_MASK_ISO_DEP;
@@ -241,7 +242,7 @@
         if (nfaStat == NFA_STATUS_OK)
             mRoutingEvent.wait ();
         else
-            ALOGE ("Fail to set default proto routing for IsoDep");
+            ALOGE("Fail to set default proto routing for IsoDep");
 
         // Route Nfc-F to host if we don't have a SE
         techMask = NFA_TECHNOLOGY_MASK_F;
@@ -251,7 +252,7 @@
             if (nfaStat == NFA_STATUS_OK)
                 mRoutingEvent.wait ();
             else
-                ALOGE ("Fail to set default tech routing for Nfc-F");
+                ALOGE("Fail to set default tech routing for Nfc-F");
         }
         // Default routing for T3T protocol
         protoMask = NFA_PROTOCOL_MASK_T3T;
@@ -259,7 +260,7 @@
         if (nfaStat == NFA_STATUS_OK)
             mRoutingEvent.wait ();
         else
-            ALOGE ("Fail to set default proto routing for T3T");
+            ALOGE("Fail to set default proto routing for T3T");
     }
 }
 
@@ -280,14 +281,14 @@
             if (nfaStat == NFA_STATUS_OK)
                 mRoutingEvent.wait ();
             else
-                ALOGE ("Fail to set default tech routing for Nfc-A/Nfc-F");
+                ALOGE("Fail to set default tech routing for Nfc-A/Nfc-F");
         }
         // Default routing for IsoDep and T3T protocol
         nfaStat = NFA_EeSetDefaultProtoRouting(mDefaultEe, 0, 0, 0);
         if (nfaStat == NFA_STATUS_OK)
             mRoutingEvent.wait ();
         else
-            ALOGE ("Fail to set default proto routing for IsoDep and T3T");
+            ALOGE("Fail to set default proto routing for IsoDep and T3T");
     }
     else
     {
@@ -298,14 +299,14 @@
             if (nfaStat == NFA_STATUS_OK)
                 mRoutingEvent.wait ();
             else
-                ALOGE ("Fail to set default tech routing for Nfc-A");
+                ALOGE("Fail to set default tech routing for Nfc-A");
         }
         // Default routing for IsoDep protocol
         nfaStat = NFA_EeSetDefaultProtoRouting(mDefaultEe, 0, 0, 0);
         if (nfaStat == NFA_STATUS_OK)
             mRoutingEvent.wait ();
         else
-            ALOGE ("Fail to set default proto routing for IsoDep");
+            ALOGE("Fail to set default proto routing for IsoDep");
 
         // Default routing for Nfc-F technology if we don't have a SE
         if ((mSeTechMask & NFA_TECHNOLOGY_MASK_F) == 0)
@@ -314,45 +315,45 @@
             if (nfaStat == NFA_STATUS_OK)
                 mRoutingEvent.wait ();
             else
-                ALOGE ("Fail to set default tech routing for Nfc-F");
+                ALOGE("Fail to set default tech routing for Nfc-F");
         }
         // Default routing for T3T protocol
         nfaStat = NFA_EeSetDefaultProtoRouting(mDefaultEeNfcF, 0, 0, 0);
         if (nfaStat == NFA_STATUS_OK)
             mRoutingEvent.wait ();
         else
-            ALOGE ("Fail to set default proto routing for T3T");
+            ALOGE("Fail to set default proto routing for T3T");
     }
 }
 
-bool RoutingManager::addAidRouting(const UINT8* aid, UINT8 aidLen, int route)
+bool RoutingManager::addAidRouting(const uint8_t* aid, uint8_t aidLen, int route)
 {
     static const char fn [] = "RoutingManager::addAidRouting";
-    ALOGD ("%s: enter", fn);
-    tNFA_STATUS nfaStat = NFA_EeAddAidRouting(route, aidLen, (UINT8*) aid, 0x01);
+    ALOGV("%s: enter", fn);
+    tNFA_STATUS nfaStat = NFA_EeAddAidRouting(route, aidLen, (uint8_t*) aid, 0x01);
     if (nfaStat == NFA_STATUS_OK)
     {
-        ALOGD ("%s: routed AID", fn);
+        ALOGV("%s: routed AID", fn);
         return true;
     } else
     {
-        ALOGE ("%s: failed to route AID", fn);
+        ALOGE("%s: failed to route AID", fn);
         return false;
     }
 }
 
-bool RoutingManager::removeAidRouting(const UINT8* aid, UINT8 aidLen)
+bool RoutingManager::removeAidRouting(const uint8_t* aid, uint8_t aidLen)
 {
     static const char fn [] = "RoutingManager::removeAidRouting";
-    ALOGD ("%s: enter", fn);
-    tNFA_STATUS nfaStat = NFA_EeRemoveAidRouting(aidLen, (UINT8*) aid);
+    ALOGV("%s: enter", fn);
+    tNFA_STATUS nfaStat = NFA_EeRemoveAidRouting(aidLen, (uint8_t*) aid);
     if (nfaStat == NFA_STATUS_OK)
     {
-        ALOGD ("%s: removed AID", fn);
+        ALOGV("%s: removed AID", fn);
         return true;
     } else
     {
-        ALOGE ("%s: failed to remove AID", fn);
+        ALOGE("%s: failed to remove AID", fn);
         return false;
     }
 }
@@ -361,7 +362,7 @@
 {
     static const char fn [] = "RoutingManager::commitRouting";
     tNFA_STATUS nfaStat = 0;
-    ALOGD ("%s", fn);
+    ALOGV("%s", fn);
     {
         SyncEventGuard guard (mEeUpdateEvent);
         nfaStat = NFA_EeUpdateNow();
@@ -379,24 +380,24 @@
     if (mActiveSe == 0x00) return;
 
     tNFA_STATUS nfaStat = NFA_STATUS_FAILED;
-    UINT8 actualNumEe = MAX_NUM_EE;
+    uint8_t actualNumEe = MAX_NUM_EE;
     tNFA_EE_INFO eeInfo[MAX_NUM_EE];
 
     memset (&eeInfo, 0, sizeof(eeInfo));
     if ((nfaStat = NFA_EeGetInfo (&actualNumEe, eeInfo)) != NFA_STATUS_OK)
     {
-        ALOGE ("%s: fail get info; error=0x%X", fn, nfaStat);
+        ALOGE("%s: fail get info; error=0x%X", fn, nfaStat);
         return;
     }
     if (actualNumEe != 0)
     {
-        for (UINT8 xx = 0; xx < actualNumEe; xx++)
+        for (uint8_t xx = 0; xx < actualNumEe; xx++)
         {
             if ((eeInfo[xx].num_interface != 0)
                 && (eeInfo[xx].ee_interface[0] != NCI_NFCEE_INTERFACE_HCI_ACCESS)
                 && (eeInfo[xx].ee_status == NFA_EE_STATUS_ACTIVE))
             {
-                ALOGD ("%s: Handle: 0x%04x Change Status Active to Inactive", fn, eeInfo[xx].ee_handle);
+                ALOGV("%s: Handle: 0x%04x Change Status Active to Inactive", fn, eeInfo[xx].ee_handle);
                 SyncEventGuard guard (mEeSetModeEvent);
                 if ((nfaStat = NFA_EeModeSet (eeInfo[xx].ee_handle, NFA_EE_MD_DEACTIVATE)) == NFA_STATUS_OK)
                 {
@@ -404,24 +405,24 @@
                 }
                 else
                 {
-                    ALOGE ("Failed to set EE inactive");
+                    ALOGE("Failed to set EE inactive");
                 }
             }
         }
     }
     else
     {
-        ALOGD ("%s: No active EEs found", fn);
+        ALOGV("%s: No active EEs found", fn);
     }
 }
 
-void RoutingManager::notifyActivated (UINT8 technology)
+void RoutingManager::notifyActivated (uint8_t technology)
 {
     JNIEnv* e = NULL;
     ScopedAttach attach(mNativeData->vm, &e);
     if (e == NULL)
     {
-        ALOGE ("jni env is null");
+        ALOGE("jni env is null");
         return;
     }
 
@@ -429,18 +430,18 @@
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("fail notify");
+        ALOGE("fail notify");
     }
 }
 
-void RoutingManager::notifyDeactivated (UINT8 technology)
+void RoutingManager::notifyDeactivated (uint8_t technology)
 {
     mRxDataBuffer.clear();
     JNIEnv* e = NULL;
     ScopedAttach attach(mNativeData->vm, &e);
     if (e == NULL)
     {
-        ALOGE ("jni env is null");
+        ALOGE("jni env is null");
         return;
     }
 
@@ -448,11 +449,11 @@
     if (e->ExceptionCheck())
     {
         e->ExceptionClear();
-        ALOGE ("fail notify");
+        ALOGE("fail notify");
     }
 }
 
-void RoutingManager::handleData (UINT8 technology, const UINT8* data, UINT32 dataLen, tNFA_STATUS status)
+void RoutingManager::handleData (uint8_t technology, const uint8_t* data, uint32_t dataLen, tNFA_STATUS status)
 {
     if (status == NFA_STATUS_CONTINUE)
     {
@@ -481,14 +482,14 @@
         ScopedAttach attach(mNativeData->vm, &e);
         if (e == NULL)
         {
-            ALOGE ("jni env is null");
+            ALOGE("jni env is null");
             goto TheEnd;
         }
 
         ScopedLocalRef<jobject> dataJavaArray(e, e->NewByteArray(mRxDataBuffer.size()));
         if (dataJavaArray.get() == NULL)
         {
-            ALOGE ("fail allocate array");
+            ALOGE("fail allocate array");
             goto TheEnd;
         }
 
@@ -497,7 +498,7 @@
         if (e->ExceptionCheck())
         {
             e->ExceptionClear();
-            ALOGE ("fail fill array");
+            ALOGE("fail fill array");
             goto TheEnd;
         }
 
@@ -506,17 +507,17 @@
         if (e->ExceptionCheck())
         {
             e->ExceptionClear();
-            ALOGE ("fail notify");
+            ALOGE("fail notify");
         }
     }
 TheEnd:
     mRxDataBuffer.clear();
 }
 
-void RoutingManager::stackCallback (UINT8 event, tNFA_CONN_EVT_DATA* eventData)
+void RoutingManager::stackCallback (uint8_t event, tNFA_CONN_EVT_DATA* eventData)
 {
     static const char fn [] = "RoutingManager::stackCallback";
-    ALOGD("%s: event=0x%X", fn, event);
+    ALOGV("%s: event=0x%X", fn, event);
     RoutingManager& routingManager = RoutingManager::getInstance();
 
     switch (event)
@@ -524,14 +525,14 @@
     case NFA_CE_REGISTERED_EVT:
         {
             tNFA_CE_REGISTERED& ce_registered = eventData->ce_registered;
-            ALOGD("%s: NFA_CE_REGISTERED_EVT; status=0x%X; h=0x%X", fn, ce_registered.status, ce_registered.handle);
+            ALOGV("%s: NFA_CE_REGISTERED_EVT; status=0x%X; h=0x%X", fn, ce_registered.status, ce_registered.handle);
         }
         break;
 
     case NFA_CE_DEREGISTERED_EVT:
         {
             tNFA_CE_DEREGISTERED& ce_deregistered = eventData->ce_deregistered;
-            ALOGD("%s: NFA_CE_DEREGISTERED_EVT; h=0x%X", fn, ce_deregistered.handle);
+            ALOGV("%s: NFA_CE_DEREGISTERED_EVT; h=0x%X", fn, ce_deregistered.handle);
         }
         break;
 
@@ -544,7 +545,7 @@
     case NFA_DEACTIVATED_EVT:
     case NFA_CE_DEACTIVATED_EVT:
         {
-            ALOGD("%s: NFA_DEACTIVATED_EVT, NFA_CE_DEACTIVATED_EVT", fn);
+            ALOGV("%s: NFA_DEACTIVATED_EVT, NFA_CE_DEACTIVATED_EVT", fn);
             routingManager.notifyDeactivated(NFA_TECHNOLOGY_MASK_A);
             SyncEventGuard g (gDeactivatedEvent);
             gActivated = false; //guard this variable from multi-threaded access
@@ -555,7 +556,7 @@
     case NFA_CE_DATA_EVT:
         {
             tNFA_CE_DATA& ce_data = eventData->ce_data;
-            ALOGD("%s: NFA_CE_DATA_EVT; stat=0x%X; h=0x%X; data len=%u", fn, ce_data.status, ce_data.handle, ce_data.len);
+            ALOGV("%s: NFA_CE_DATA_EVT; stat=0x%X; h=0x%X; data len=%u", fn, ce_data.status, ce_data.handle, ce_data.len);
             getInstance().handleData(NFA_TECHNOLOGY_MASK_A, ce_data.p_data, ce_data.len, ce_data.status);
         }
         break;
@@ -583,7 +584,7 @@
     case NFA_EE_REGISTER_EVT:
         {
             SyncEventGuard guard (routingManager.mEeRegisterEvent);
-            ALOGD ("%s: NFA_EE_REGISTER_EVT; status=%u", fn, eventData->ee_register);
+            ALOGV("%s: NFA_EE_REGISTER_EVT; status=%u", fn, eventData->ee_register);
             routingManager.mEeRegisterEvent.notifyOne();
         }
         break;
@@ -591,7 +592,7 @@
     case NFA_EE_MODE_SET_EVT:
         {
             SyncEventGuard guard (routingManager.mEeSetModeEvent);
-            ALOGD ("%s: NFA_EE_MODE_SET_EVT; status: 0x%04X  handle: 0x%04X  ", fn,
+            ALOGV("%s: NFA_EE_MODE_SET_EVT; status: 0x%04X  handle: 0x%04X  ", fn,
                     eventData->mode_set.status, eventData->mode_set.ee_handle);
             routingManager.mEeSetModeEvent.notifyOne();
         }
@@ -599,7 +600,7 @@
 
     case NFA_EE_SET_TECH_CFG_EVT:
         {
-            ALOGD ("%s: NFA_EE_SET_TECH_CFG_EVT; status=0x%X", fn, eventData->status);
+            ALOGV("%s: NFA_EE_SET_TECH_CFG_EVT; status=0x%X", fn, eventData->status);
             SyncEventGuard guard(routingManager.mRoutingEvent);
             routingManager.mRoutingEvent.notifyOne();
         }
@@ -607,7 +608,7 @@
 
     case NFA_EE_SET_PROTO_CFG_EVT:
         {
-            ALOGD ("%s: NFA_EE_SET_PROTO_CFG_EVT; status=0x%X", fn, eventData->status);
+            ALOGV("%s: NFA_EE_SET_PROTO_CFG_EVT; status=0x%X", fn, eventData->status);
             SyncEventGuard guard(routingManager.mRoutingEvent);
             routingManager.mRoutingEvent.notifyOne();
         }
@@ -617,25 +618,25 @@
         {
             tNFA_EE_ACTION& action = eventData->action;
             if (action.trigger == NFC_EE_TRIG_SELECT)
-                ALOGD ("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=select (0x%X)", fn, action.ee_handle, action.trigger);
+                ALOGV("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=select (0x%X)", fn, action.ee_handle, action.trigger);
             else if (action.trigger == NFC_EE_TRIG_APP_INIT)
             {
                 tNFC_APP_INIT& app_init = action.param.app_init;
-                ALOGD ("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=app-init (0x%X); aid len=%u; data len=%u", fn,
+                ALOGV("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=app-init (0x%X); aid len=%u; data len=%u", fn,
                         action.ee_handle, action.trigger, app_init.len_aid, app_init.len_data);
             }
             else if (action.trigger == NFC_EE_TRIG_RF_PROTOCOL)
-                ALOGD ("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=rf protocol (0x%X)", fn, action.ee_handle, action.trigger);
+                ALOGV("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=rf protocol (0x%X)", fn, action.ee_handle, action.trigger);
             else if (action.trigger == NFC_EE_TRIG_RF_TECHNOLOGY)
-                ALOGD ("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=rf tech (0x%X)", fn, action.ee_handle, action.trigger);
+                ALOGV("%s: NFA_EE_ACTION_EVT; h=0x%X; trigger=rf tech (0x%X)", fn, action.ee_handle, action.trigger);
             else
-                ALOGE ("%s: NFA_EE_ACTION_EVT; h=0x%X; unknown trigger (0x%X)", fn, action.ee_handle, action.trigger);
+                ALOGV("%s: NFA_EE_ACTION_EVT; h=0x%X; unknown trigger (0x%X)", fn, action.ee_handle, action.trigger);
         }
         break;
 
     case NFA_EE_DISCOVER_REQ_EVT:
         {
-            ALOGD ("%s: NFA_EE_DISCOVER_REQ_EVT; status=0x%X; num ee=%u", __FUNCTION__,
+            ALOGV("%s: NFA_EE_DISCOVER_REQ_EVT; status=0x%X; num ee=%u", __func__,
                     eventData->discover_req.status, eventData->discover_req.num_ee);
             SyncEventGuard guard (routingManager.mEeInfoEvent);
             memcpy (&routingManager.mEeInfo, &eventData->discover_req, sizeof(routingManager.mEeInfo));
@@ -645,51 +646,51 @@
         break;
 
     case NFA_EE_NO_CB_ERR_EVT:
-        ALOGD ("%s: NFA_EE_NO_CB_ERR_EVT  status=%u", fn, eventData->status);
+        ALOGV("%s: NFA_EE_NO_CB_ERR_EVT  status=%u", fn, eventData->status);
         break;
 
     case NFA_EE_ADD_AID_EVT:
         {
-            ALOGD ("%s: NFA_EE_ADD_AID_EVT  status=%u", fn, eventData->status);
+            ALOGV("%s: NFA_EE_ADD_AID_EVT  status=%u", fn, eventData->status);
         }
         break;
 
     case NFA_EE_REMOVE_AID_EVT:
         {
-            ALOGD ("%s: NFA_EE_REMOVE_AID_EVT  status=%u", fn, eventData->status);
+            ALOGV("%s: NFA_EE_REMOVE_AID_EVT  status=%u", fn, eventData->status);
         }
         break;
 
     case NFA_EE_NEW_EE_EVT:
         {
-            ALOGD ("%s: NFA_EE_NEW_EE_EVT  h=0x%X; status=%u", fn,
+            ALOGV("%s: NFA_EE_NEW_EE_EVT  h=0x%X; status=%u", fn,
                 eventData->new_ee.ee_handle, eventData->new_ee.ee_status);
         }
         break;
 
     case NFA_EE_UPDATED_EVT:
         {
-            ALOGD("%s: NFA_EE_UPDATED_EVT", fn);
+            ALOGV("%s: NFA_EE_UPDATED_EVT", fn);
             SyncEventGuard guard(routingManager.mEeUpdateEvent);
             routingManager.mEeUpdateEvent.notifyOne();
         }
         break;
 
     default:
-        ALOGE ("%s: unknown event=%u ????", fn, event);
+        ALOGV("%s: unknown event=%u ????", fn, event);
         break;
     }
 }
 
-int RoutingManager::registerT3tIdentifier(UINT8* t3tId, UINT8 t3tIdLen)
+int RoutingManager::registerT3tIdentifier(uint8_t* t3tId, uint8_t t3tIdLen)
 {
     static const char fn [] = "RoutingManager::registerT3tIdentifier";
 
-    ALOGD ("%s: Start to register NFC-F system on DH", fn);
+    ALOGV("%s: Start to register NFC-F system on DH", fn);
 
     if (t3tIdLen != (2 + NCI_RF_F_UID_LEN))
     {
-        ALOGE ("%s: Invalid length of T3T Identifier", fn);
+        ALOGE("%s: Invalid length of T3T Identifier", fn);
         return NFA_HANDLE_INVALID;
     }
 
@@ -697,7 +698,7 @@
     mNfcFOnDhHandle = NFA_HANDLE_INVALID;
 
     int systemCode;
-    UINT8 nfcid2[NCI_RF_F_UID_LEN];
+    uint8_t nfcid2[NCI_RF_F_UID_LEN];
 
     systemCode = (((int)t3tId[0] << 8) | ((int)t3tId[1] << 0));
     memcpy(nfcid2, t3tId + 2, NCI_RF_F_UID_LEN);
@@ -709,11 +710,11 @@
     }
     else
     {
-        ALOGE ("%s: Fail to register NFC-F system on DH", fn);
+        ALOGE("%s: Fail to register NFC-F system on DH", fn);
         return NFA_HANDLE_INVALID;
     }
 
-    ALOGD ("%s: Succeed to register NFC-F system on DH", fn);
+    ALOGV("%s: Succeed to register NFC-F system on DH", fn);
 
     return mNfcFOnDhHandle;
 }
@@ -722,33 +723,33 @@
 {
     static const char fn [] = "RoutingManager::deregisterT3tIdentifier";
 
-    ALOGD ("%s: Start to deregister NFC-F system on DH", fn);
+    ALOGV("%s: Start to deregister NFC-F system on DH", fn);
 
     SyncEventGuard guard (mRoutingEvent);
     tNFA_STATUS nfaStat = NFA_CeDeregisterFelicaSystemCodeOnDH (handle);
     if (nfaStat == NFA_STATUS_OK)
     {
         mRoutingEvent.wait ();
-        ALOGD ("%s: Succeeded in deregistering NFC-F system on DH", fn);
+        ALOGV("%s: Succeeded in deregistering NFC-F system on DH", fn);
     }
     else
     {
-        ALOGE ("%s: Fail to deregister NFC-F system on DH", fn);
+        ALOGE("%s: Fail to deregister NFC-F system on DH", fn);
     }
 }
 
-void RoutingManager::nfcFCeCallback (UINT8 event, tNFA_CONN_EVT_DATA* eventData)
+void RoutingManager::nfcFCeCallback (uint8_t event, tNFA_CONN_EVT_DATA* eventData)
 {
     static const char fn [] = "RoutingManager::nfcFCeCallback";
     RoutingManager& routingManager = RoutingManager::getInstance();
 
-    ALOGD("%s: 0x%x", __FUNCTION__, event);
+    ALOGV("%s: 0x%x", __func__, event);
 
     switch (event)
     {
     case NFA_CE_REGISTERED_EVT:
         {
-            ALOGD ("%s: registerd event notified", fn);
+            ALOGV("%s: registerd event notified", fn);
             routingManager.mNfcFOnDhHandle = eventData->ce_registered.handle;
             SyncEventGuard guard(routingManager.mRoutingEvent);
             routingManager.mRoutingEvent.notifyOne();
@@ -756,33 +757,33 @@
         break;
     case NFA_CE_DEREGISTERED_EVT:
         {
-            ALOGD ("%s: deregisterd event notified", fn);
+            ALOGV("%s: deregisterd event notified", fn);
             SyncEventGuard guard(routingManager.mRoutingEvent);
             routingManager.mRoutingEvent.notifyOne();
         }
         break;
     case NFA_CE_ACTIVATED_EVT:
         {
-            ALOGD ("%s: activated event notified", fn);
+            ALOGV("%s: activated event notified", fn);
             routingManager.notifyActivated(NFA_TECHNOLOGY_MASK_F);
         }
         break;
     case NFA_CE_DEACTIVATED_EVT:
         {
-            ALOGD ("%s: deactivated event notified", fn);
+            ALOGV("%s: deactivated event notified", fn);
             routingManager.notifyDeactivated(NFA_TECHNOLOGY_MASK_F);
         }
         break;
     case NFA_CE_DATA_EVT:
         {
-            ALOGD ("%s: data event notified", fn);
+            ALOGV("%s: data event notified", fn);
             tNFA_CE_DATA& ce_data = eventData->ce_data;
             routingManager.handleData(NFA_TECHNOLOGY_MASK_F, ce_data.p_data, ce_data.len, ce_data.status);
         }
         break;
     default:
         {
-            ALOGE ("%s: unknown event=%u ????", fn, event);
+            ALOGV("%s: unknown event=%u ????", fn, event);
         }
         break;
     }
@@ -791,7 +792,7 @@
 int RoutingManager::registerJniFunctions (JNIEnv* e)
 {
     static const char fn [] = "RoutingManager::registerJniFunctions";
-    ALOGD ("%s", fn);
+    ALOGV("%s", fn);
     return jniRegisterNativeMethods (e, "com/android/nfc/cardemulation/AidRoutingManager", sMethods, NELEM(sMethods));
 }
 
diff --git a/nci/jni/RoutingManager.h b/nci/jni/RoutingManager.h
index f6d4639..ee9211f 100755
--- a/nci/jni/RoutingManager.h
+++ b/nci/jni/RoutingManager.h
@@ -35,10 +35,10 @@
     bool initialize(nfc_jni_native_data* native);
     void enableRoutingToHost();
     void disableRoutingToHost();
-    bool addAidRouting(const UINT8* aid, UINT8 aidLen, int route);
-    bool removeAidRouting(const UINT8* aid, UINT8 aidLen);
+    bool addAidRouting(const uint8_t* aid, uint8_t aidLen, int route);
+    bool removeAidRouting(const uint8_t* aid, uint8_t aidLen);
     bool commitRouting();
-    int registerT3tIdentifier(UINT8* t3tId, UINT8 t3tIdLen);
+    int registerT3tIdentifier(uint8_t* t3tId, uint8_t t3tIdLen);
     void deregisterT3tIdentifier(int handle);
     void onNfccShutdown();
     int registerJniFunctions (JNIEnv* e);
@@ -48,9 +48,9 @@
     RoutingManager(const RoutingManager&);
     RoutingManager& operator=(const RoutingManager&);
 
-    void handleData (UINT8 technology, const UINT8* data, UINT32 dataLen, tNFA_STATUS status);
-    void notifyActivated (UINT8 technology);
-    void notifyDeactivated (UINT8 technology);
+    void handleData (uint8_t technology, const uint8_t* data, uint32_t dataLen, tNFA_STATUS status);
+    void notifyActivated (uint8_t technology);
+    void notifyDeactivated (uint8_t technology);
 
     // See AidRoutingManager.java for corresponding
     // AID_MATCHING_ constants
@@ -63,14 +63,14 @@
     static const int AID_MATCHING_PREFIX_ONLY = 0x02;
 
     static void nfaEeCallback (tNFA_EE_EVT event, tNFA_EE_CBACK_DATA* eventData);
-    static void stackCallback (UINT8 event, tNFA_CONN_EVT_DATA* eventData);
-    static void nfcFCeCallback (UINT8 event, tNFA_CONN_EVT_DATA* eventData);
+    static void stackCallback (uint8_t event, tNFA_CONN_EVT_DATA* eventData);
+    static void nfcFCeCallback (uint8_t event, tNFA_CONN_EVT_DATA* eventData);
 
     static int com_android_nfc_cardemulation_doGetDefaultRouteDestination (JNIEnv* e);
     static int com_android_nfc_cardemulation_doGetDefaultOffHostRouteDestination (JNIEnv* e);
     static int com_android_nfc_cardemulation_doGetAidMatchingMode (JNIEnv* e);
 
-    std::vector<UINT8> mRxDataBuffer;
+    std::vector<uint8_t> mRxDataBuffer;
 
     // Fields below are final after initialize()
     nfc_jni_native_data* mNativeData;
diff --git a/nci/jni/extns/pn54x/src/common/phNfcTypes.h b/nci/jni/extns/pn54x/src/common/phNfcTypes.h
old mode 100755
new mode 100644
index 08a17f9..288f8ef
--- a/nci/jni/extns/pn54x/src/common/phNfcTypes.h
+++ b/nci/jni/extns/pn54x/src/common/phNfcTypes.h
@@ -292,6 +292,6 @@
     uint8_t                         bWordCount;   /* Number of words to be read or written */
 } phNfc_sTransceiveInfo_t;
 
-#define UNUSED(X) (void)X;
+#define UNUSED(X) (void)(X);
 
 #endif /* PHNFCTYPES_H */
diff --git a/nci/jni/extns/pn54x/src/log/phNxpLog.c b/nci/jni/extns/pn54x/src/log/phNxpLog.c
index fb3e8ad..85d1776 100755
--- a/nci/jni/extns/pn54x/src/log/phNxpLog.c
+++ b/nci/jni/extns/pn54x/src/log/phNxpLog.c
@@ -13,13 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#define LOG_TAG "pn54x"
 
+#include <stdio.h>
 #include <string.h>
 #if !defined (NXPLOG__H_INCLUDED)
 #    include "phNxpLog.h"
 #    include "phNxpConfig.h"
 #endif
 #include <cutils/properties.h>
+#include <log/log.h>
 
 const char * NXPLOG_ITEM_EXTNS   = "NxpExtns";
 const char * NXPLOG_ITEM_NCIHAL  = "NxpHal";
@@ -257,10 +260,10 @@
     phNxpLog_SetDnldLogLevel (level);
     phNxpLog_SetNciTxLogLevel (level);
 
-    ALOGD ("%s: global =%u, Fwdnld =%u, extns =%u, \
+    ALOGV("%s: global =%u, Fwdnld =%u, extns =%u, \
                 hal =%u, tml =%u, ncir =%u, \
                 ncix =%u", \
-                __FUNCTION__, gLog_level.global_log_level, gLog_level.dnld_log_level,
+                __func__, gLog_level.global_log_level, gLog_level.dnld_log_level,
                     gLog_level.extns_log_level, gLog_level.hal_log_level, gLog_level.tml_log_level,
                     gLog_level.ncir_log_level, gLog_level.ncix_log_level);
 
diff --git a/nci/jni/extns/pn54x/src/log/phNxpLog.h b/nci/jni/extns/pn54x/src/log/phNxpLog.h
index af91d3d..32cbfc1 100755
--- a/nci/jni/extns/pn54x/src/log/phNxpLog.h
+++ b/nci/jni/extns/pn54x/src/log/phNxpLog.h
@@ -17,7 +17,7 @@
 #if !defined (NXPLOG__H_INCLUDED)
 #define NXPLOG__H_INCLUDED
 
-#include <cutils/log.h>
+#include <log/log.h>
 
 typedef struct nci_log_level
 {
@@ -91,9 +91,9 @@
 /* ######################################## Defines used for Logging data ######################################### */
 #ifdef NXP_VRBS_REQ
 #define NXPLOG_FUNC_ENTRY(COMP) \
-    LOG_PRI( ANDROID_LOG_VERBOSE, (COMP), "+:%s", (__FUNCTION__))
+    LOG_PRI( ANDROID_LOG_VERBOSE, (COMP), "+:%s", (__func__))
 #define NXPLOG_FUNC_EXIT(COMP) \
-    LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "-:%s", (__FUNCTION__))
+    LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "-:%s", (__func__))
 #endif /*NXP_VRBS_REQ*/
 
 /* ################################################################################################################ */
diff --git a/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifareStdMap.c b/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifareStdMap.c
index 66da24b..b70d83a 100755
--- a/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifareStdMap.c
+++ b/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifareStdMap.c
@@ -2678,7 +2678,7 @@
         if((NdefMap->SendRecvBuf[TempLength] != PH_FRINFC_MIFARESTD_TERMTLV_T) &&
             (NdefMap->SendRecvBuf[TempLength] != PH_FRINFC_MIFARESTD_NULLTLV_T) &&
             (NdefMap->SendRecvBuf[TempLength] != PH_FRINFC_MIFARESTD_NDEFTLV_T) &&
-            (FALSE == NdefMap->TLVStruct.NdefTLVFoundFlag))
+            (false == NdefMap->TLVStruct.NdefTLVFoundFlag))
         {
             Result = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,
                                 NFCSTATUS_NO_NDEF_SUPPORT);
diff --git a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.c b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.c
index 6f58e08..6696170 100755
--- a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.c
+++ b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.c
@@ -13,6 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#define LOG_TAG "pn54x"
+
+#include <log/log.h>
 
 #include <nfc_api.h>
 #include <rw_api.h>
@@ -28,7 +31,7 @@
 #if(NFC_NXP_NOT_OPEN_INCLUDED == TRUE)
 pthread_mutex_t SharedDataMutex = PTHREAD_MUTEX_INITIALIZER;
 #endif
-UINT8 current_key[6]={0};
+uint8_t current_key[6]={0};
 phNci_mfc_auth_cmd_t       gAuthCmdBuf;
 STATIC NFCSTATUS phNciNfc_SendMfReq(phNciNfc_TransceiveInfo_t tTranscvInfo,
                                     uint8_t *buff, uint16_t *buffSz);
@@ -187,13 +190,13 @@
 NFCSTATUS phNxpExtns_MfcModuleInit(void)
 {
     NFCSTATUS status = NFCSTATUS_FAILED;
-    gphNxpExtns_Context.writecmdFlag = FALSE;
-    gphNxpExtns_Context.RawWriteCallBack = FALSE;
+    gphNxpExtns_Context.writecmdFlag = false;
+    gphNxpExtns_Context.RawWriteCallBack = false;
     gphNxpExtns_Context.CallBackCtxt   = NULL;
     gphNxpExtns_Context.CallBackMifare = NULL;
-    gphNxpExtns_Context.ExtnsConnect = FALSE;
-    gphNxpExtns_Context.ExtnsDeactivate = FALSE;
-    gphNxpExtns_Context.ExtnsCallBack = FALSE;
+    gphNxpExtns_Context.ExtnsConnect = false;
+    gphNxpExtns_Context.ExtnsDeactivate = false;
+    gphNxpExtns_Context.ExtnsCallBack = false;
 
     NdefMap = malloc(sizeof(phFriNfc_NdefMap_t));
     if( NULL == NdefMap )
@@ -315,7 +318,7 @@
 {
     NFCSTATUS status = NFCSTATUS_FAILED;
 
-    EXTNS_SetCallBackFlag(FALSE);
+    EXTNS_SetCallBackFlag(false);
     /* Set Completion Routine for CheckNdef */
     NdefMap->CompletionRoutine[0].CompletionRoutine = Mfc_CheckNdef_Completion_Routine;
 
@@ -576,7 +579,7 @@
 {
     (void)NdefCtxt;
     tNFA_CONN_EVT_DATA conn_evt_data;
-    ALOGE("Mfc_SetRdOnly_Completion_Routine status = 0x%x", status);
+    ALOGE("%s status = 0x%x", __func__, status);
     conn_evt_data.status = status;
     (*gphNxpExtns_Context.p_conn_cback) (NFA_SET_TAG_RO_EVT, &conn_evt_data);
 
@@ -597,18 +600,18 @@
 *******************************************************************************/
 NFCSTATUS Mfc_SetReadOnly(uint8_t *secrtkey, uint8_t len)
 {
-    NXPLOG_EXTNS_D("%s Entering ", __FUNCTION__);
+    NXPLOG_EXTNS_D("%s Entering ", __func__);
     NFCSTATUS status = NFCSTATUS_FAILED;
     uint8_t mif_secrete_key[6] = {0};
     uint8_t id = 0;
-    EXTNS_SetCallBackFlag(FALSE);
+    EXTNS_SetCallBackFlag(false);
     memcpy(mif_secrete_key,secrtkey,len);
     gphNxpExtns_Context.CallBackMifare = phFriNfc_MifareStdMap_Process;
     gphNxpExtns_Context.CallBackCtxt   = NdefMap;
     for (id = 0; id < len; id++)
     {
-        ALOGD("secrtkey[%d] = 0x%x", id, secrtkey[id]);
-        ALOGD("mif_secrete_key[%d] = 0x%x", id, mif_secrete_key[id]);
+        ALOGV("secrtkey[%d] = 0x%x", id, secrtkey[id]);
+        ALOGV("mif_secrete_key[%d] = 0x%x", id, mif_secrete_key[id]);
     }
     /* Set Completion Routine for ReadNdef */
     NdefMap->CompletionRoutine[0].CompletionRoutine = Mfc_SetRdOnly_Completion_Routine;
@@ -661,7 +664,7 @@
     uint32_t           *PacketDataLength = NULL;
     phLibNfc_Ndef_EOffset_t Offset;
 
-    EXTNS_SetCallBackFlag(FALSE);
+    EXTNS_SetCallBackFlag(false);
 
     Offset = phLibNfc_Ndef_EBegin;
 
@@ -751,19 +754,19 @@
 {
     NFCSTATUS status = NFCSTATUS_SUCCESS;
 
-    if (gAuthCmdBuf.auth_status == TRUE)
+    if (gAuthCmdBuf.auth_status == true)
     {
-        EXTNS_SetCallBackFlag(FALSE);
+        EXTNS_SetCallBackFlag(false);
         status = nativeNfcExtns_doTransceive(gAuthCmdBuf.pauth_cmd->buffer,
              gAuthCmdBuf.pauth_cmd->length);
         if (status != NFCSTATUS_PENDING)
         {
-            gAuthCmdBuf.auth_sent = FALSE;
+            gAuthCmdBuf.auth_sent = false;
             status = NFCSTATUS_FAILED;
         }
         else
         {
-            gAuthCmdBuf.auth_sent = TRUE;
+            gAuthCmdBuf.auth_sent = true;
             status = NFCSTATUS_SUCCESS;
         }
     }
@@ -771,7 +774,7 @@
     {
         status = NFCSTATUS_NOT_ALLOWED;
     }
-    NXPLOG_EXTNS_D("%s status = 0x%x", __FUNCTION__, status);
+    NXPLOG_EXTNS_D("%s status = 0x%x", __func__, status);
     return status;
 }
 /*******************************************************************************
@@ -799,7 +802,7 @@
         goto Mfc_WrNdefEnd;
     }
 
-    EXTNS_SetCallBackFlag(FALSE);
+    EXTNS_SetCallBackFlag(false);
     gphNxpExtns_Context.CallBackMifare = phFriNfc_MifareStdMap_Process;
     gphNxpExtns_Context.CallBackCtxt   = NdefMap;
 #if(NFC_NXP_NOT_OPEN_INCLUDED == TRUE)
@@ -936,7 +939,7 @@
 //    static uint8_t   Index;                                               /*commented to eliminate unused variable warning*/
     uint8_t     sak = 0;
 
-    EXTNS_SetCallBackFlag(FALSE);
+    EXTNS_SetCallBackFlag(false);
 
     memcpy(mif_std_key,secretkey,len);
     memcpy(current_key,secretkey,len);
@@ -1000,10 +1003,10 @@
 {
     tNFA_STATUS status;
 
-    EXTNS_SetDeactivateFlag(TRUE);
-    if (NFA_STATUS_OK != (status = NFA_Deactivate (TRUE))) /* deactivate to sleep state */
+    EXTNS_SetDeactivateFlag(true);
+    if (NFA_STATUS_OK != (status = NFA_Deactivate (true))) /* deactivate to sleep state */
     {
-        NXPLOG_EXTNS_E ("%s: deactivate failed, status = %d", __FUNCTION__, status);
+        NXPLOG_EXTNS_E ("%s: deactivate failed, status = %d", __func__, status);
         return NFCSTATUS_FAILED;
     }
 
@@ -1025,11 +1028,11 @@
 {
     tNFA_STATUS status;
 
-    EXTNS_SetConnectFlag(TRUE);
+    EXTNS_SetConnectFlag(true);
     if (NFA_STATUS_OK != (status = NFA_Select (0x01, phNciNfc_e_RfProtocolsMifCProtocol,
                                                      phNciNfc_e_RfInterfacesTagCmd_RF)))
     {
-        NXPLOG_EXTNS_E ("%s: NFA_Select failed, status = %d", __FUNCTION__, status);
+        NXPLOG_EXTNS_E ("%s: NFA_Select failed, status = %d", __func__, status);
     }
 
     return;
@@ -1067,11 +1070,11 @@
     NFCSTATUS status = NFCSTATUS_FAILED;
     uint8_t i = 0x00;
 
-    gphNxpExtns_Context.RawWriteCallBack = FALSE;
+    gphNxpExtns_Context.RawWriteCallBack = false;
     gphNxpExtns_Context.CallBackMifare = NULL;
     gphNxpExtns_Context.CallBackCtxt   = NdefMap;
 
-    EXTNS_SetCallBackFlag(TRUE);
+    EXTNS_SetCallBackFlag(true);
     if( p_data[0] == 0x60 || p_data[0] == 0x61 )
     {
 
@@ -1094,9 +1097,9 @@
     }
     else if( p_data[0] == 0xA0 )
     {
-        EXTNS_SetCallBackFlag(FALSE);
+        EXTNS_SetCallBackFlag(false);
         NdefMap->Cmd.MfCmd = phNfc_eMifareWrite16;
-        gphNxpExtns_Context.RawWriteCallBack = TRUE;
+        gphNxpExtns_Context.RawWriteCallBack = true;
 
         memcpy(NdefMap->SendRecvBuf, &p_data[1], len-1);
         NdefMap->SendLength = len-1;
@@ -1109,9 +1112,9 @@
     else if( (p_data[0] == phNfc_eMifareInc) || (p_data[0] == phNfc_eMifareDec) )
     {
 
-        EXTNS_SetCallBackFlag(FALSE);
+        EXTNS_SetCallBackFlag(false);
         NdefMap->Cmd.MfCmd = p_data[0];
-        gphNxpExtns_Context.RawWriteCallBack = TRUE;
+        gphNxpExtns_Context.RawWriteCallBack = true;
 
         memcpy(NdefMap->SendRecvBuf, &p_data[1], len-1);
         NdefMap->SendLength = len - 1;
@@ -1126,8 +1129,8 @@
         NdefMap->Cmd.MfCmd = p_data[0];
         if (p_data[0] == phNfc_eMifareRestore)
         {
-            EXTNS_SetCallBackFlag(FALSE);
-            gphNxpExtns_Context.RawWriteCallBack = TRUE;
+            EXTNS_SetCallBackFlag(false);
+            gphNxpExtns_Context.RawWriteCallBack = true;
             memcpy(NdefMap->SendRecvBuf, &p_data[1], len -1);
             NdefMap->SendLength = len - 1;
         }
@@ -1184,7 +1187,7 @@
 
     if (status != NFA_STATUS_OK)
     {
-        NXPLOG_EXTNS_E ("%s: fail send; error=%d", __FUNCTION__, status);
+        NXPLOG_EXTNS_E ("%s: fail send; error=%d", __func__, status);
         wStatus = NFCSTATUS_FAILED;
     }
 
@@ -1269,12 +1272,12 @@
                     /* check the status byte */
                     if(PH_NCINFC_STATUS_OK == RspBuffInfo->pBuff[1])
                     {
-                        if (gAuthCmdBuf.auth_sent ==  TRUE)
+                        if (gAuthCmdBuf.auth_sent ==  true)
                         {
                             MfcPresenceCheckResult(NFCSTATUS_SUCCESS);
                             return NFCSTATUS_SUCCESS;
                         }
-                        gAuthCmdBuf.auth_status = TRUE;
+                        gAuthCmdBuf.auth_status = true;
                         status = NFCSTATUS_SUCCESS;
 
                         /* DataLen = TotalRecvdLen - (sizeof(RspId) + sizeof(Status)) */
@@ -1288,9 +1291,9 @@
                     }
                     else
                     {
-                        if (gAuthCmdBuf.auth_sent ==  TRUE)
+                        if (gAuthCmdBuf.auth_sent ==  true)
                         {
-                            gAuthCmdBuf.auth_status = FALSE;
+                            gAuthCmdBuf.auth_status = false;
                             MfcPresenceCheckResult(NFCSTATUS_FAILED);
                             return NFCSTATUS_SUCCESS;
                         }
@@ -1299,7 +1302,7 @@
                             /* Reset the stored auth command buffer */
                             memset(gAuthCmdBuf.pauth_cmd->buffer, 0 , NCI_MAX_DATA_LEN);
                             gAuthCmdBuf.pauth_cmd->length = 0;
-                            gAuthCmdBuf.auth_status = FALSE;
+                            gAuthCmdBuf.auth_status = false;
                         }
                         status = NFCSTATUS_FAILED;
                     }
@@ -1346,10 +1349,10 @@
         wStatus = NFCSTATUS_INVALID_PARAMETER;
     }
 
-    if ( gphNxpExtns_Context.RawWriteCallBack == TRUE )
+    if ( gphNxpExtns_Context.RawWriteCallBack == true )
     {
-        EXTNS_SetCallBackFlag(TRUE);
-        gphNxpExtns_Context.RawWriteCallBack = FALSE;
+        EXTNS_SetCallBackFlag(true);
+        gphNxpExtns_Context.RawWriteCallBack = false;
     }
 
     return wStatus;
@@ -1385,10 +1388,10 @@
         wStatus = NFCSTATUS_INVALID_PARAMETER;
     }
 
-    if ( gphNxpExtns_Context.RawWriteCallBack == TRUE )
+    if ( gphNxpExtns_Context.RawWriteCallBack == true )
     {
-        EXTNS_SetCallBackFlag(TRUE);
-        gphNxpExtns_Context.RawWriteCallBack = FALSE;
+        EXTNS_SetCallBackFlag(true);
+        gphNxpExtns_Context.RawWriteCallBack = false;
     }
 
     return wStatus;
@@ -1416,13 +1419,13 @@
     RspBuff.pBuff = buff;
     RspBuff.wLen  = buffSz;
     status = phNciNfc_RecvMfResp(&RspBuff, status);
-    if (TRUE == gAuthCmdBuf.auth_sent)
+    if (true == gAuthCmdBuf.auth_sent)
     {
-        ALOGD("%s Mfc Check Presnece in progress", __FUNCTION__);
-        gAuthCmdBuf.auth_sent = FALSE;
+        ALOGV("%s Mfc Check Presence in progress", __func__);
+        gAuthCmdBuf.auth_sent = false;
         return status;
     }
-    if( TRUE == gphNxpExtns_Context.writecmdFlag && (NFCSTATUS_SUCCESS == status ))
+    if(true == gphNxpExtns_Context.writecmdFlag && (NFCSTATUS_SUCCESS == status ))
     {
         pcmd_buff = (uint8_t *)malloc((uint32_t)MAX_BUFF_SIZE);
         if( NULL == pcmd_buff )
@@ -1430,7 +1433,7 @@
             return NFCSTATUS_FAILED;
         }
         buffSize = MAX_BUFF_SIZE;
-        gphNxpExtns_Context.writecmdFlag = FALSE;
+        gphNxpExtns_Context.writecmdFlag = false;
         phLibNfc_SendWrt16CmdPayload(NdefMap->pTransceiveInfo, &tNciTranscvInfo);
         status = phNciNfc_SendMfReq(tNciTranscvInfo, pcmd_buff, &buffSize);
         if ( NFCSTATUS_PENDING != status )
@@ -1447,7 +1450,7 @@
             pcmd_buff = NULL;
         }
     }
-    else if( TRUE == gphNxpExtns_Context.incrdecflag && (NFCSTATUS_SUCCESS == status ))
+    else if(true == gphNxpExtns_Context.incrdecflag && (NFCSTATUS_SUCCESS == status ))
     {
         pcmd_buff = (uint8_t *)malloc((uint32_t)MAX_BUFF_SIZE);
         if( NULL == pcmd_buff )
@@ -1455,7 +1458,7 @@
             return NFCSTATUS_FAILED;
         }
         buffSize = MAX_BUFF_SIZE;
-        gphNxpExtns_Context.incrdecflag = FALSE;
+        gphNxpExtns_Context.incrdecflag = false;
         phLibNfc_SendIncDecCmdPayload(NdefMap->pTransceiveInfo, &tNciTranscvInfo);
         status = phNciNfc_SendMfReq(tNciTranscvInfo, pcmd_buff, &buffSize);
         if ( NFCSTATUS_PENDING != status )
@@ -1466,7 +1469,7 @@
         {
             status = NFCSTATUS_SUCCESS;
         }
-        gphNxpExtns_Context.incrdecstatusflag = TRUE;
+        gphNxpExtns_Context.incrdecstatusflag = true;
         if( pcmd_buff != NULL )
         {
             free(pcmd_buff);
@@ -1478,9 +1481,9 @@
     {
         if( gphNxpExtns_Context.CallBackMifare != NULL )
         {
-            if( (gphNxpExtns_Context.incrdecstatusflag == TRUE) && status == 0xB2 )
+            if( (gphNxpExtns_Context.incrdecstatusflag == true) && status == 0xB2 )
             {
-                gphNxpExtns_Context.incrdecstatusflag = FALSE;
+                gphNxpExtns_Context.incrdecstatusflag = false;
                 status = NFCSTATUS_SUCCESS;
             }
             gphNxpExtns_Context.CallBackMifare(gphNxpExtns_Context.CallBackCtxt, status);
@@ -2084,7 +2087,7 @@
         pTransceiveInfo->sSendData.length = length;
         pTransceiveInfo->sRecvData.length = MAX_BUFF_SIZE;
 
-        gphNxpExtns_Context.writecmdFlag = TRUE;
+        gphNxpExtns_Context.writecmdFlag = true;
 
         status = phLibNfc_SendWrt16Cmd(pTransceiveInfo, &tNciTranscvInfo);
     }
@@ -2096,7 +2099,7 @@
         pTransceiveInfo->sSendData.length = length;
         pTransceiveInfo->sRecvData.length = MAX_BUFF_SIZE;
 
-        gphNxpExtns_Context.incrdecflag = TRUE;
+        gphNxpExtns_Context.incrdecflag = true;
 
         status = phLibNfc_SendIncDecCmd(pTransceiveInfo, &tNciTranscvInfo, Cmd.MfCmd);
 
@@ -2109,7 +2112,7 @@
         pTransceiveInfo->sSendData.length = length + sizeof(restore_payload);
         pTransceiveInfo->sRecvData.length = MAX_BUFF_SIZE;
 
-        gphNxpExtns_Context.incrdecflag = TRUE;
+        gphNxpExtns_Context.incrdecflag = true;
 
         status = phLibNfc_SendIncDecCmd(pTransceiveInfo, &tNciTranscvInfo, Cmd.MfCmd);
 
diff --git a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.h b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.h
index 0ed0fe9..3af15b7 100755
--- a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.h
+++ b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.h
@@ -25,7 +25,7 @@
 #include <semaphore.h>
 #include <pthread.h>
 
-extern UINT8 current_key[];
+extern uint8_t current_key[];
 /* Enable this macro to set key configuration for mifare classic Tag */
 #define PHLIBNFC_NXPETENSION_CONFIGURE_MFKEYS 1
 
diff --git a/nci/jni/extns/pn54x/src/phNxpExtns.c b/nci/jni/extns/pn54x/src/phNxpExtns.c
index 478e5f4..a009bdc 100755
--- a/nci/jni/extns/pn54x/src/phNxpExtns.c
+++ b/nci/jni/extns/pn54x/src/phNxpExtns.c
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#define LOG_TAG "pn54x"
 
 #ifdef ESE_NFC_SYNCHRONIZATION
 #include <linux/ese-nfc-sync.h>
@@ -21,6 +22,8 @@
 #include <sys/ioctl.h>
 #include <sys/time.h>
 
+#include <log/log.h>
+
 #include <phNxpExtns_MifareStd.h>
 #include <phNxpLog.h>
 #include <phNxpConfig.h>
@@ -227,7 +230,7 @@
     gAuthCmdBuf.status = NFCSTATUS_FAILED;
     if (sem_init (&gAuthCmdBuf.semPresenceCheck, 0, 0) == -1)
     {
-        ALOGE ("%s: semaphore creation failed (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: semaphore creation failed (errno=%d)", __func__, errno);
         return NFCSTATUS_FAILED;
     }
 
@@ -626,14 +629,14 @@
 
     if (sem_timedwait (&gAuthCmdBuf.semPresenceCheck, &ts))
     {
-        ALOGE ("%s: failed to wait (errno=0x%08x)", __FUNCTION__, errno);
+        ALOGE("%s: failed to wait (errno=%d)", __func__, errno);
         sem_destroy (&gAuthCmdBuf.semPresenceCheck);
-        gAuthCmdBuf.auth_sent = FALSE;
+        gAuthCmdBuf.auth_sent = false;
         return NFCSTATUS_FAILED;
     }
     if (sem_destroy (&gAuthCmdBuf.semPresenceCheck))
     {
-        ALOGE ("Failed to destroy check Presence semaphore (errno=0x%08x)", errno);
+        ALOGE("%s: Failed to destroy check Presence semaphore (errno=%d)", __func__, errno);
     }
     return gAuthCmdBuf.status;
 }
@@ -641,12 +644,12 @@
 void MfcPresenceCheckResult (NFCSTATUS status)
 {
     gAuthCmdBuf.status = status;
-    EXTNS_SetCallBackFlag (TRUE);
+    EXTNS_SetCallBackFlag (true);
     sem_post (&gAuthCmdBuf.semPresenceCheck);
 }
 void MfcResetPresenceCheckStatus (void)
 {
-    gAuthCmdBuf.auth_sent = FALSE;
+    gAuthCmdBuf.auth_sent = false;
 }
 /*******************************************************************************
 **
diff --git a/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp b/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp
index e4b95b5..dbca917 100755
--- a/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp
+++ b/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#define LOG_TAG "pn54x"
 
 #include <phNxpConfig.h>
 #include <stdio.h>
@@ -30,10 +31,12 @@
 #endif
 
 #if 1
-const char transport_config_path[] = "/etc/";
+const char* transport_config_paths[] = {"/odm/etc/", "/vendor/etc/", "/etc/"};
 #else
-const char transport_config_path[] = "res/";
+const char* transport_config_paths[] = {"res/"};
 #endif
+const int transport_config_path_size =
+        (sizeof(transport_config_paths) / sizeof(transport_config_paths[0]));
 
 #define config_name             "libnfc-nxp.conf"
 #define extra_config_base       "libnfc-nxp-"
@@ -154,6 +157,31 @@
 
 /*******************************************************************************
 **
+** Function:    findConfigFilePathFromTransportConfigPaths()
+**
+** Description: find a config file path with a given config name from transport
+**              config paths
+**
+** Returns:     none
+**
+*******************************************************************************/
+void findConfigFilePathFromTransportConfigPaths(const string& configName,
+                                                string& filePath) {
+    for (int i = 0; i < transport_config_path_size - 1; i++) {
+        filePath.assign(transport_config_paths[i]);
+        filePath += configName;
+        struct stat file_stat;
+        if (stat(filePath.c_str(), &file_stat) == 0 &&
+            S_ISREG(file_stat.st_mode)) {
+            return;
+        }
+    }
+    filePath.assign(transport_config_paths[transport_config_path_size - 1]);
+    filePath += configName;
+}
+
+/*******************************************************************************
+**
 ** Function:    CNxpNfcConfig::readConfig()
 **
 ** Description: read Config settings and parse them into a linked list
@@ -188,10 +216,10 @@
     /* open config file, read it into a buffer */
     if ((fd = fopen (name, "rb")) == NULL)
     {
-        ALOGE ("%s Cannot open config file %s\n", __func__, name);
+        ALOGE("%s Cannot open config file %s", __func__, name);
         if (bResetContent)
         {
-            ALOGE ("%s Using default value for all settings\n", __func__);
+            ALOGE("%s Using default value for all settings", __func__);
             mValidFile = false;
         }
         return false;
@@ -443,8 +471,7 @@
                 return theInstance;
             }
         }
-        strPath.assign (transport_config_path);
-        strPath += config_name;
+        findConfigFilePathFromTransportConfigPaths(config_name, strPath);
         theInstance.readConfig (strPath.c_str (), true);
     }
 
@@ -691,7 +718,7 @@
 
     if (stat(config_timestamp_path, &st) != 0)
     {
-        ALOGD ("%s file %s not exist, creat it.\n", __func__, config_timestamp_path);
+        ALOGV("%s file %s not exist, creat it.", __func__, config_timestamp_path);
         if ((fd = fopen (config_timestamp_path, "w+")) != NULL)
         {
             fwrite (&m_timeStamp, sizeof(unsigned long), 1, fd);
@@ -704,7 +731,7 @@
         fd = fopen (config_timestamp_path, "r+");
         if (fd == NULL)
         {
-            ALOGE ("%s Cannot open file %s\n", __func__, config_timestamp_path);
+            ALOGE("%s Cannot open file %s", __func__, config_timestamp_path);
             return 1;
         }
 
@@ -892,13 +919,17 @@
 void readOptionalConfig (const char* extra)
 {
     string strPath;
-    strPath.assign (transport_config_path);
-    if (alternative_config_path [0] != '\0')
-        strPath.assign (alternative_config_path);
+    string configName(extra_config_base);
+    configName += extra;
+    configName += extra_config_ext;
 
-    strPath += extra_config_base;
-    strPath += extra;
-    strPath += extra_config_ext;
+    if (alternative_config_path [0] != '\0') {
+        strPath.assign (alternative_config_path);
+        strPath += configName;
+    } else {
+        findConfigFilePathFromTransportConfigPaths(configName, strPath);
+    }
+
     CNxpNfcConfig::GetInstance ().readConfig (strPath.c_str (), false);
 }
 
diff --git a/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java b/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
index 1ea5b2a..ecd8e6d 100755
--- a/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
+++ b/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
@@ -246,7 +246,7 @@
     }
 
     @Override
-    public native void doAbort();
+    public native void doAbort(String msg);
 
     private native boolean doSetTimeout(int tech, int timeout);
     @Override
diff --git a/nxp/Android.mk b/nxp/Android.mk
deleted file mode 100644
index 34f4385..0000000
--- a/nxp/Android.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/nxp/jni/Android.mk b/nxp/jni/Android.mk
deleted file mode 100644
index c0e23db..0000000
--- a/nxp/jni/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-
-
-LOCAL_SRC_FILES:= \
-    com_android_nfc_NativeLlcpConnectionlessSocket.cpp \
-    com_android_nfc_NativeLlcpServiceSocket.cpp \
-    com_android_nfc_NativeLlcpSocket.cpp \
-    com_android_nfc_NativeNfcManager.cpp \
-    com_android_nfc_NativeNfcTag.cpp \
-    com_android_nfc_NativeP2pDevice.cpp \
-    com_android_nfc_list.cpp \
-    com_android_nfc.cpp
-
-LOCAL_C_INCLUDES += \
-    $(JNI_H_INCLUDE) \
-    external/libnfc-nxp/src \
-    external/libnfc-nxp/inc \
-    libcore/include
-
-LOCAL_SHARED_LIBRARIES := \
-    libnativehelper \
-    libcutils \
-    libutils \
-    liblog \
-    libnfc \
-    libhardware
-
-#LOCAL_CFLAGS += -O0 -g
-
-LOCAL_MODULE := libnfc_jni
-LOCAL_MODULE_TAGS := optional
-
-# !!! Intentionally commented out, we'll stop building
-# the NXP stack in M, code will be removed in the
-# next release.
-# include $(BUILD_SHARED_LIBRARY)
-# !!!
diff --git a/nxp/jni/com_android_nfc.cpp b/nxp/jni/com_android_nfc.cpp
deleted file mode 100644
index 6f8ee1f..0000000
--- a/nxp/jni/com_android_nfc.cpp
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-
-#include "errno.h"
-#include "com_android_nfc.h"
-#include "com_android_nfc_list.h"
-#include "phLibNfcStatus.h"
-#include <ScopedLocalRef.h>
-
-/*
- * JNI Initialization
- */
-jint JNI_OnLoad(JavaVM *jvm, void* /*reserved*/)
-{
-   JNIEnv *e;
-
-   ALOGI("NFC Service: loading nxp JNI");
-
-   // Check JNI version
-   if(jvm->GetEnv((void **)&e, JNI_VERSION_1_6))
-      return JNI_ERR;
-
-   android::vm = jvm;
-
-   if (android::register_com_android_nfc_NativeNfcManager(e) == -1)
-      return JNI_ERR;
-   if (android::register_com_android_nfc_NativeNfcTag(e) == -1)
-      return JNI_ERR;
-   if (android::register_com_android_nfc_NativeP2pDevice(e) == -1)
-      return JNI_ERR;
-   if (android::register_com_android_nfc_NativeLlcpSocket(e) == -1)
-      return JNI_ERR;
-   if (android::register_com_android_nfc_NativeLlcpConnectionlessSocket(e) == -1)
-      return JNI_ERR;
-   if (android::register_com_android_nfc_NativeLlcpServiceSocket(e) == -1)
-      return JNI_ERR;
-
-   return JNI_VERSION_1_6;
-}
-
-namespace android {
-
-extern struct nfc_jni_native_data *exported_nat;
-
-JavaVM *vm;
-
-/*
- * JNI Utils
- */
-JNIEnv *nfc_get_env()
-{
-    JNIEnv *e;
-    if (vm->GetEnv((void **)&e, JNI_VERSION_1_6) != JNI_OK) {
-        ALOGE("Current thread is not attached to VM");
-        phLibNfc_Mgt_Recovery();
-        abort();
-    }
-    return e;
-}
-
-bool nfc_cb_data_init(nfc_jni_callback_data* pCallbackData, void* pContext)
-{
-   /* Create semaphore */
-   if(sem_init(&pCallbackData->sem, 0, 0) == -1)
-   {
-      ALOGE("Semaphore creation failed (errno=0x%08x)", errno);
-      return false;
-   }
-
-   /* Set default status value */
-   pCallbackData->status = NFCSTATUS_FAILED;
-
-   /* Copy the context */
-   pCallbackData->pContext = pContext;
-
-   /* Add to active semaphore list */
-   if (!listAdd(&nfc_jni_get_monitor()->sem_list, pCallbackData))
-   {
-      ALOGE("Failed to add the semaphore to the list");
-   }
-
-   return true;
-}
-
-void nfc_cb_data_deinit(nfc_jni_callback_data* pCallbackData)
-{
-   /* Destroy semaphore */
-   if (sem_destroy(&pCallbackData->sem))
-   {
-      ALOGE("Failed to destroy semaphore (errno=0x%08x)", errno);
-   }
-
-   /* Remove from active semaphore list */
-   if (!listRemove(&nfc_jni_get_monitor()->sem_list, pCallbackData))
-   {
-      ALOGE("Failed to remove semaphore from the list");
-   }
-
-}
-
-void nfc_cb_data_releaseAll()
-{
-   nfc_jni_callback_data* pCallbackData;
-
-   while (listGetAndRemoveNext(&nfc_jni_get_monitor()->sem_list, (void**)&pCallbackData))
-   {
-      pCallbackData->status = NFCSTATUS_FAILED;
-      sem_post(&pCallbackData->sem);
-   }
-}
-
-int nfc_jni_cache_object(JNIEnv *e, const char *clsname,
-   jobject *cached_obj)
-{
-   ScopedLocalRef<jclass> cls(e, e->FindClass(clsname));
-   if (cls.get() == NULL) {
-      ALOGD("Find class error\n");
-      return -1;
-   }
-
-   jmethodID ctor = e->GetMethodID(cls.get(), "<init>", "()V");
-   ScopedLocalRef<jobject> obj(e, e->NewObject(cls.get(), ctor));
-   if (obj.get() == NULL) {
-      ALOGD("Create object error\n");
-      return -1;
-   }
-
-   *cached_obj = e->NewGlobalRef(obj.get());
-   if (*cached_obj == NULL) {
-      ALOGD("Global ref error\n");
-      return -1;
-   }
-
-   return 0;
-}
-
-
-struct nfc_jni_native_data* nfc_jni_get_nat(JNIEnv *e, jobject o)
-{
-   /* Retrieve native structure address */
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mNative", "J");
-   return (struct nfc_jni_native_data*) e->GetLongField(o, f);
-}
-
-struct nfc_jni_native_data* nfc_jni_get_nat_ext(JNIEnv*)
-{
-   return exported_nat;
-}
-
-static nfc_jni_native_monitor_t *nfc_jni_native_monitor = NULL;
-
-nfc_jni_native_monitor_t* nfc_jni_init_monitor(void)
-{
-
-   pthread_mutexattr_t recursive_attr;
-
-   pthread_mutexattr_init(&recursive_attr);
-   pthread_mutexattr_settype(&recursive_attr, PTHREAD_MUTEX_RECURSIVE_NP);
-
-   if(nfc_jni_native_monitor == NULL)
-   {
-      nfc_jni_native_monitor = (nfc_jni_native_monitor_t*)malloc(sizeof(nfc_jni_native_monitor_t));
-   }
-
-   if(nfc_jni_native_monitor != NULL)
-   {
-      memset(nfc_jni_native_monitor, 0, sizeof(nfc_jni_native_monitor_t));
-
-      if(pthread_mutex_init(&nfc_jni_native_monitor->reentrance_mutex, &recursive_attr) == -1)
-      {
-         ALOGE("NFC Manager Reentrance Mutex creation returned 0x%08x", errno);
-         return NULL;
-      }
-
-      if(pthread_mutex_init(&nfc_jni_native_monitor->concurrency_mutex, NULL) == -1)
-      {
-         ALOGE("NFC Manager Concurrency Mutex creation returned 0x%08x", errno);
-         return NULL;
-      }
-
-      if(!listInit(&nfc_jni_native_monitor->sem_list))
-      {
-         ALOGE("NFC Manager Semaphore List creation failed");
-         return NULL;
-      }
-
-      LIST_INIT(&nfc_jni_native_monitor->incoming_socket_head);
-
-      if(pthread_mutex_init(&nfc_jni_native_monitor->incoming_socket_mutex, NULL) == -1)
-      {
-         ALOGE("NFC Manager incoming socket mutex creation returned 0x%08x", errno);
-         return NULL;
-      }
-
-      if(pthread_cond_init(&nfc_jni_native_monitor->incoming_socket_cond, NULL) == -1)
-      {
-         ALOGE("NFC Manager incoming socket condition creation returned 0x%08x", errno);
-         return NULL;
-      }
-
-}
-
-   return nfc_jni_native_monitor;
-}
-
-nfc_jni_native_monitor_t* nfc_jni_get_monitor(void)
-{
-   return nfc_jni_native_monitor;
-}
-
-
-phLibNfc_Handle nfc_jni_get_p2p_device_handle(JNIEnv *e, jobject o)
-{
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mHandle", "I");
-   return e->GetIntField(o, f);
-}
-
-jshort nfc_jni_get_p2p_device_mode(JNIEnv *e, jobject o)
-{
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mMode", "S");
-   return e->GetShortField(o, f);
-}
-
-
-int nfc_jni_get_connected_tech_index(JNIEnv *e, jobject o)
-{
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mConnectedTechIndex", "I");
-   return e->GetIntField(o, f);
-
-}
-
-jint nfc_jni_get_connected_technology(JNIEnv *e, jobject o)
-{
-   int connectedTech = -1;
-
-   int connectedTechIndex = nfc_jni_get_connected_tech_index(e,o);
-   jintArray techTypes = nfc_jni_get_nfc_tag_type(e, o);
-
-   if ((connectedTechIndex != -1) && (techTypes != NULL) &&
-           (connectedTechIndex < e->GetArrayLength(techTypes))) {
-       jint* technologies = e->GetIntArrayElements(techTypes, 0);
-       if (technologies != NULL) {
-           connectedTech = technologies[connectedTechIndex];
-           e->ReleaseIntArrayElements(techTypes, technologies, JNI_ABORT);
-       }
-   }
-
-   return connectedTech;
-
-}
-
-jint nfc_jni_get_connected_technology_libnfc_type(JNIEnv *e, jobject o)
-{
-   jint connectedLibNfcType = -1;
-
-   int connectedTechIndex = nfc_jni_get_connected_tech_index(e,o);
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mTechLibNfcTypes", "[I");
-   ScopedLocalRef<jintArray> libNfcTypes(e, (jintArray) e->GetObjectField(o, f));
-
-   if ((connectedTechIndex != -1) && (libNfcTypes.get() != NULL) &&
-           (connectedTechIndex < e->GetArrayLength(libNfcTypes.get()))) {
-       jint* types = e->GetIntArrayElements(libNfcTypes.get(), 0);
-       if (types != NULL) {
-           connectedLibNfcType = types[connectedTechIndex];
-           e->ReleaseIntArrayElements(libNfcTypes.get(), types, JNI_ABORT);
-       }
-   }
-   return connectedLibNfcType;
-}
-
-phLibNfc_Handle nfc_jni_get_connected_handle(JNIEnv *e, jobject o)
-{
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mConnectedHandle", "I");
-   return e->GetIntField(o, f);
-}
-
-phLibNfc_Handle nfc_jni_get_nfc_socket_handle(JNIEnv *e, jobject o)
-{
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mHandle", "I");
-   return e->GetIntField(o, f);
-}
-
-jintArray nfc_jni_get_nfc_tag_type(JNIEnv *e, jobject o)
-{
-   ScopedLocalRef<jclass> c(e, e->GetObjectClass(o));
-   jfieldID f = e->GetFieldID(c.get(), "mTechList","[I");
-   return (jintArray) e->GetObjectField(o, f);
-}
-
-
-
-//Display status code
-const char* nfc_jni_get_status_name(NFCSTATUS status)
-{
-   #define STATUS_ENTRY(status) { status, #status }
-
-   struct status_entry {
-      NFCSTATUS   code;
-      const char  *name;
-   };
-
-   const struct status_entry sNameTable[] = {
-      STATUS_ENTRY(NFCSTATUS_SUCCESS),
-      STATUS_ENTRY(NFCSTATUS_FAILED),
-      STATUS_ENTRY(NFCSTATUS_INVALID_PARAMETER),
-      STATUS_ENTRY(NFCSTATUS_INSUFFICIENT_RESOURCES),
-      STATUS_ENTRY(NFCSTATUS_TARGET_LOST),
-      STATUS_ENTRY(NFCSTATUS_INVALID_HANDLE),
-      STATUS_ENTRY(NFCSTATUS_MULTIPLE_TAGS),
-      STATUS_ENTRY(NFCSTATUS_ALREADY_REGISTERED),
-      STATUS_ENTRY(NFCSTATUS_FEATURE_NOT_SUPPORTED),
-      STATUS_ENTRY(NFCSTATUS_SHUTDOWN),
-      STATUS_ENTRY(NFCSTATUS_ABORTED),
-      STATUS_ENTRY(NFCSTATUS_REJECTED ),
-      STATUS_ENTRY(NFCSTATUS_NOT_INITIALISED),
-      STATUS_ENTRY(NFCSTATUS_PENDING),
-      STATUS_ENTRY(NFCSTATUS_BUFFER_TOO_SMALL),
-      STATUS_ENTRY(NFCSTATUS_ALREADY_INITIALISED),
-      STATUS_ENTRY(NFCSTATUS_BUSY),
-      STATUS_ENTRY(NFCSTATUS_TARGET_NOT_CONNECTED),
-      STATUS_ENTRY(NFCSTATUS_MULTIPLE_PROTOCOLS),
-      STATUS_ENTRY(NFCSTATUS_DESELECTED),
-      STATUS_ENTRY(NFCSTATUS_INVALID_DEVICE),
-      STATUS_ENTRY(NFCSTATUS_MORE_INFORMATION),
-      STATUS_ENTRY(NFCSTATUS_RF_TIMEOUT),
-      STATUS_ENTRY(NFCSTATUS_RF_ERROR),
-      STATUS_ENTRY(NFCSTATUS_BOARD_COMMUNICATION_ERROR),
-      STATUS_ENTRY(NFCSTATUS_INVALID_STATE),
-      STATUS_ENTRY(NFCSTATUS_NOT_REGISTERED),
-      STATUS_ENTRY(NFCSTATUS_RELEASED),
-      STATUS_ENTRY(NFCSTATUS_NOT_ALLOWED),
-      STATUS_ENTRY(NFCSTATUS_INVALID_REMOTE_DEVICE),
-      STATUS_ENTRY(NFCSTATUS_SMART_TAG_FUNC_NOT_SUPPORTED),
-      STATUS_ENTRY(NFCSTATUS_READ_FAILED),
-      STATUS_ENTRY(NFCSTATUS_WRITE_FAILED),
-      STATUS_ENTRY(NFCSTATUS_NO_NDEF_SUPPORT),
-      STATUS_ENTRY(NFCSTATUS_EOF_NDEF_CONTAINER_REACHED),
-      STATUS_ENTRY(NFCSTATUS_INVALID_RECEIVE_LENGTH),
-      STATUS_ENTRY(NFCSTATUS_INVALID_FORMAT),
-      STATUS_ENTRY(NFCSTATUS_INSUFFICIENT_STORAGE),
-      STATUS_ENTRY(NFCSTATUS_FORMAT_ERROR),
-   };
-
-   int i = sizeof(sNameTable)/sizeof(status_entry);
-
-   while(i>0)
-   {
-      i--;
-      if (sNameTable[i].code == PHNFCSTATUS(status))
-      {
-         return sNameTable[i].name;
-      }
-   }
-
-   return "UNKNOWN";
-}
-
-int addTechIfNeeded(int *techList, int* handleList, int* typeList, int listSize,
-        int maxListSize, int techToAdd, int handleToAdd, int typeToAdd) {
-    bool found = false;
-    for (int i = 0; i < listSize; i++) {
-        if (techList[i] == techToAdd) {
-            found = true;
-            break;
-        }
-    }
-    if (!found && listSize < maxListSize) {
-        techList[listSize] = techToAdd;
-        handleList[listSize] = handleToAdd;
-        typeList[listSize] = typeToAdd;
-        return listSize + 1;
-    }
-    else {
-        return listSize;
-    }
-}
-
-
-#define MAX_NUM_TECHNOLOGIES 32
-
-/*
- *  Utility to get a technology tree and a corresponding handle list from a detected tag.
- */
-void nfc_jni_get_technology_tree(JNIEnv* e, phLibNfc_RemoteDevList_t* devList, uint8_t count,
-                                 ScopedLocalRef<jintArray>* techList,
-                                 ScopedLocalRef<jintArray>* handleList,
-                                 ScopedLocalRef<jintArray>* libnfcTypeList)
-{
-   int technologies[MAX_NUM_TECHNOLOGIES];
-   int handles[MAX_NUM_TECHNOLOGIES];
-   int libnfctypes[MAX_NUM_TECHNOLOGIES];
-
-   int index = 0;
-   // TODO: This counts from up to down because on multi-protocols, the
-   // ISO handle is usually the second, and we prefer the ISO. Should implement
-   // a method to find the "preferred handle order" and use that instead,
-   // since we shouldn't have dependencies on the tech list ordering.
-   for (int target = count - 1; target >= 0; target--) {
-       int type = devList[target].psRemoteDevInfo->RemDevType;
-       int handle = devList[target].hTargetDev;
-       switch (type)
-       {
-          case phNfc_eISO14443_A_PICC:
-          case phNfc_eISO14443_4A_PICC:
-            {
-              index = addTechIfNeeded(technologies, handles, libnfctypes, index,
-                      MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_4, handle, type);
-              break;
-            }
-          case phNfc_eISO14443_4B_PICC:
-            {
-              index = addTechIfNeeded(technologies, handles, libnfctypes, index,
-                      MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_4, handle, type);
-              index = addTechIfNeeded(technologies, handles, libnfctypes, index,
-                      MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_3B, handle, type);
-            }break;
-          case phNfc_eISO14443_3A_PICC:
-            {
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_3A, handle, type);
-            }break;
-          case phNfc_eISO14443_B_PICC:
-            {
-              // TODO a bug in libnfc will cause 14443-3B only cards
-              // to be returned as this type as well, but these cards
-              // are very rare. Hence assume it's -4B
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_4, handle, type);
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_3B, handle, type);
-            }break;
-          case phNfc_eISO15693_PICC:
-            {
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO15693, handle, type);
-            }break;
-          case phNfc_eMifare_PICC:
-            {
-              // We don't want to be too clever here; libnfc has already determined
-              // it's a Mifare, so we only check for UL, for all other tags
-              // we assume it's a mifare classic. This should make us more
-              // future-proof.
-              int sak = devList[target].psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.Sak;
-              switch(sak)
-              {
-                case 0x00:
-                  // could be UL or UL-C
-                  index = addTechIfNeeded(technologies, handles, libnfctypes,
-                          index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_MIFARE_UL, handle, type);
-                  break;
-                default:
-                  index = addTechIfNeeded(technologies, handles, libnfctypes,
-                          index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_MIFARE_CLASSIC, handle, type);
-                  break;
-              }
-            }break;
-          case phNfc_eFelica_PICC:
-            {
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_FELICA, handle, type);
-            }break;
-          case phNfc_eJewel_PICC:
-            {
-              // Jewel represented as NfcA
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_ISO14443_3A, handle, type);
-            }break;
-          default:
-            {
-              index = addTechIfNeeded(technologies, handles, libnfctypes,
-                      index, MAX_NUM_TECHNOLOGIES, TARGET_TYPE_UNKNOWN, handle, type);
-            }
-        }
-   }
-
-   // Build the Java arrays
-   if (techList != NULL) {
-       techList->reset(e->NewIntArray(index));
-       e->SetIntArrayRegion(techList->get(), 0, index, technologies);
-   }
-
-   if (handleList != NULL) {
-       handleList->reset(e->NewIntArray(index));
-       e->SetIntArrayRegion(handleList->get(), 0, index, handles);
-   }
-
-   if (libnfcTypeList != NULL) {
-       libnfcTypeList->reset(e->NewIntArray(index));
-       e->SetIntArrayRegion(libnfcTypeList->get(), 0, index, libnfctypes);
-   }
-}
-
-} // namespace android
diff --git a/nxp/jni/com_android_nfc.h b/nxp/jni/com_android_nfc.h
deleted file mode 100644
index 49df964..0000000
--- a/nxp/jni/com_android_nfc.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __COM_ANDROID_NFC_JNI_H__
-#define __COM_ANDROID_NFC_JNI_H__
-
-#undef LOG_TAG
-#define LOG_TAG "NFCJNI"
-
-#include <JNIHelp.h>
-#include <jni.h>
-#include <ScopedLocalRef.h>
-
-#include <pthread.h>
-#include <sys/queue.h>
-
-extern "C" {
-#include <phNfcStatus.h>
-#include <phNfcTypes.h>
-#include <phNfcIoctlCode.h>
-#include <phLibNfc.h>
-#include <phDal4Nfc_messageQueueLib.h>
-#include <phFriNfc_NdefMap.h>
-#include <cutils/log.h>
-#include <com_android_nfc_list.h>
-#include <semaphore.h>
-
-}
-#include <cutils/properties.h> // for property_get
-
-
-/* Discovery modes -- keep in sync with NFCManager.DISCOVERY_MODE_* */
-#define DISCOVERY_MODE_TAG_READER         0
-#define DISCOVERY_MODE_NFCIP1             1
-#define DISCOVERY_MODE_CARD_EMULATION     2
-
-#define DISCOVERY_MODE_TABLE_SIZE         3
-
-#define DISCOVERY_MODE_DISABLED           0
-#define DISCOVERY_MODE_ENABLED            1
-
-#define MODE_P2P_TARGET                   0
-#define MODE_P2P_INITIATOR                1
-
-/* Properties values */
-#define PROPERTY_LLCP_LTO                 0
-#define PROPERTY_LLCP_MIU                 1
-#define PROPERTY_LLCP_WKS                 2
-#define PROPERTY_LLCP_OPT                 3
-#define PROPERTY_NFC_DISCOVERY_A          4
-#define PROPERTY_NFC_DISCOVERY_B          5
-#define PROPERTY_NFC_DISCOVERY_F          6
-#define PROPERTY_NFC_DISCOVERY_15693      7
-#define PROPERTY_NFC_DISCOVERY_NCFIP      8
-
-/* Error codes */
-#define ERROR_BUFFER_TOO_SMALL            -12
-#define ERROR_INSUFFICIENT_RESOURCES      -9
-
-/* Pre-defined card read/write state values. These must match the values in
- * Ndef.java in the framework.
- */
-
-#define NDEF_UNKNOWN_TYPE                -1
-#define NDEF_TYPE1_TAG                   1
-#define NDEF_TYPE2_TAG                   2
-#define NDEF_TYPE3_TAG                   3
-#define NDEF_TYPE4_TAG                   4
-#define NDEF_MIFARE_CLASSIC_TAG          101
-#define NDEF_ICODE_SLI_TAG               102
-
-/* Pre-defined tag type values. These must match the values in
- * Ndef.java in the framework.
- */
-
-#define NDEF_MODE_READ_ONLY              1
-#define NDEF_MODE_READ_WRITE             2
-#define NDEF_MODE_UNKNOWN                3
-
-
-/* Name strings for target types. These *must* match the values in TagTechnology.java */
-#define TARGET_TYPE_UNKNOWN               -1
-#define TARGET_TYPE_ISO14443_3A           1
-#define TARGET_TYPE_ISO14443_3B           2
-#define TARGET_TYPE_ISO14443_4            3
-#define TARGET_TYPE_FELICA                4
-#define TARGET_TYPE_ISO15693              5
-#define TARGET_TYPE_NDEF                  6
-#define TARGET_TYPE_NDEF_FORMATABLE       7
-#define TARGET_TYPE_MIFARE_CLASSIC        8
-#define TARGET_TYPE_MIFARE_UL             9
-
-#define SMX_SECURE_ELEMENT_ID   11259375
-
-
-/* These must match the EE_ERROR_ types in NfcService.java */
-#define EE_ERROR_IO                 -1
-#define EE_ERROR_ALREADY_OPEN       -2
-#define EE_ERROR_INIT               -3
-#define EE_ERROR_LISTEN_MODE        -4
-#define EE_ERROR_EXT_FIELD          -5
-#define EE_ERROR_NFC_DISABLED       -6
-
-/* Maximum byte length of an AID. */
-#define AID_MAXLEN                        16
-
-/* Utility macros for logging */
-#define GET_LEVEL(status) ((status)==NFCSTATUS_SUCCESS)?ANDROID_LOG_DEBUG:ANDROID_LOG_WARN
-
-#if 0
-  #define LOG_CALLBACK(funcName, status)  LOG_PRI(GET_LEVEL(status), LOG_TAG, "Callback: %s() - status=0x%04x[%s]", funcName, status, nfc_jni_get_status_name(status));
-  #define TRACE(...) ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)
-  #define TRACE_ENABLED 1
-#else
-  #define LOG_CALLBACK(...)
-  #define TRACE(...)
-  #define TRACE_ENABLED 0
-#endif
-
-struct nfc_jni_native_data
-{
-   /* Thread handle */
-   pthread_t thread;
-   int running;
-
-   /* Our VM */
-   JavaVM *vm;
-   int env_version;
-
-   /* Reference to the NFCManager instance */
-   jobject manager;
-
-   /* Cached objects */
-   jobject cached_NfcTag;
-   jobject cached_P2pDevice;
-
-   /* Target discovery configuration */
-   int discovery_modes_state[DISCOVERY_MODE_TABLE_SIZE];
-   phLibNfc_sADD_Cfg_t discovery_cfg;
-   phLibNfc_Registry_Info_t registry_info;
-
-   /* Secure Element selected */
-   int seId;
-
-   /* LLCP params */
-   int lto;
-   int miu;
-   int wks;
-   int opt;
-
-   /* Tag detected */
-   jobject tag;
-
-   /* Lib Status */
-   NFCSTATUS status;
-
-   /* p2p modes */
-   int p2p_initiator_modes;
-   int p2p_target_modes;
-
-};
-
-typedef struct nfc_jni_native_monitor
-{
-   /* Mutex protecting native library against reentrance */
-   pthread_mutex_t reentrance_mutex;
-
-   /* Mutex protecting native library against concurrency */
-   pthread_mutex_t concurrency_mutex;
-
-   /* List used to track pending semaphores waiting for callback */
-   struct listHead sem_list;
-
-   /* List used to track incoming socket requests (and associated sync variables) */
-   LIST_HEAD(, nfc_jni_listen_data) incoming_socket_head;
-   pthread_mutex_t incoming_socket_mutex;
-   pthread_cond_t  incoming_socket_cond;
-
-} nfc_jni_native_monitor_t;
-
-typedef struct nfc_jni_callback_data
-{
-   /* Semaphore used to wait for callback */
-   sem_t sem;
-
-   /* Used to store the status sent by the callback */
-   NFCSTATUS status;
-
-   /* Used to provide a local context to the callback */
-   void* pContext;
-
-} nfc_jni_callback_data_t;
-
-typedef struct nfc_jni_listen_data
-{
-   /* LLCP server socket receiving the connection request */
-   phLibNfc_Handle pServerSocket;
-
-   /* LLCP socket created from the connection request */
-   phLibNfc_Handle pIncomingSocket;
-
-   /* List entries */
-   LIST_ENTRY(nfc_jni_listen_data) entries;
-
-} nfc_jni_listen_data_t;
-
-/* TODO: treat errors and add traces */
-#define REENTRANCE_LOCK()        pthread_mutex_lock(&nfc_jni_get_monitor()->reentrance_mutex)
-#define REENTRANCE_UNLOCK()      pthread_mutex_unlock(&nfc_jni_get_monitor()->reentrance_mutex)
-#define CONCURRENCY_LOCK()       pthread_mutex_lock(&nfc_jni_get_monitor()->concurrency_mutex)
-#define CONCURRENCY_UNLOCK()     pthread_mutex_unlock(&nfc_jni_get_monitor()->concurrency_mutex)
-
-namespace android {
-
-extern JavaVM *vm;
-
-JNIEnv *nfc_get_env();
-
-bool nfc_cb_data_init(nfc_jni_callback_data* pCallbackData, void* pContext);
-void nfc_cb_data_deinit(nfc_jni_callback_data* pCallbackData);
-void nfc_cb_data_releaseAll();
-
-const char* nfc_jni_get_status_name(NFCSTATUS status);
-int nfc_jni_cache_object(JNIEnv *e, const char *clsname,
-   jobject *cached_obj);
-struct nfc_jni_native_data* nfc_jni_get_nat(JNIEnv *e, jobject o);
-struct nfc_jni_native_data* nfc_jni_get_nat_ext(JNIEnv *e);
-nfc_jni_native_monitor_t* nfc_jni_init_monitor(void);
-nfc_jni_native_monitor_t* nfc_jni_get_monitor(void);
-
-int get_technology_type(phNfc_eRemDevType_t type, uint8_t sak);
-void nfc_jni_get_technology_tree(JNIEnv* e, phLibNfc_RemoteDevList_t* devList, uint8_t count,
-                        ScopedLocalRef<jintArray>* techList,
-                        ScopedLocalRef<jintArray>* handleList,
-                        ScopedLocalRef<jintArray>* typeList);
-
-/* P2P */
-phLibNfc_Handle nfc_jni_get_p2p_device_handle(JNIEnv *e, jobject o);
-jshort nfc_jni_get_p2p_device_mode(JNIEnv *e, jobject o);
-
-/* TAG */
-jint nfc_jni_get_connected_technology(JNIEnv *e, jobject o);
-jint nfc_jni_get_connected_technology_libnfc_type(JNIEnv *e, jobject o);
-phLibNfc_Handle nfc_jni_get_connected_handle(JNIEnv *e, jobject o);
-jintArray nfc_jni_get_nfc_tag_type(JNIEnv *e, jobject o);
-
-/* LLCP */
-phLibNfc_Handle nfc_jni_get_nfc_socket_handle(JNIEnv *e, jobject o);
-
-int register_com_android_nfc_NativeNfcManager(JNIEnv *e);
-int register_com_android_nfc_NativeNfcTag(JNIEnv *e);
-int register_com_android_nfc_NativeP2pDevice(JNIEnv *e);
-int register_com_android_nfc_NativeLlcpConnectionlessSocket(JNIEnv *e);
-int register_com_android_nfc_NativeLlcpServiceSocket(JNIEnv *e);
-int register_com_android_nfc_NativeLlcpSocket(JNIEnv *e);
-
-} // namespace android
-
-#endif
diff --git a/nxp/jni/com_android_nfc_NativeLlcpConnectionlessSocket.cpp b/nxp/jni/com_android_nfc_NativeLlcpConnectionlessSocket.cpp
deleted file mode 100644
index b1fe791..0000000
--- a/nxp/jni/com_android_nfc_NativeLlcpConnectionlessSocket.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <errno.h>
-#include <malloc.h>
-#include <semaphore.h>
-
-#include "com_android_nfc.h"
-
-namespace android {
-
-/*
- * Callbacks
- */
-
-static void nfc_jni_receive_callback(void* pContext, uint8_t ssap, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_receiveFrom_callback", status);
-
-   if(status == NFCSTATUS_SUCCESS)
-   {
-      pCallbackData->pContext = (void*)(uintptr_t)ssap;
-      TRACE("RECEIVE UI_FRAME FROM SAP %d OK \n", ssap);
-   }
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_send_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_sendTo_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-/*
-* Methods
-*/
-static jboolean com_android_nfc_NativeLlcpConnectionlessSocket_doSendTo(JNIEnv *e, jobject o, jint nsap, jbyteArray data)
-{
-   NFCSTATUS ret;
-   struct timespec ts;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   phNfc_sData_t sSendBuffer = {NULL, 0};
-   struct nfc_jni_callback_data cb_data;
-   jboolean result = JNI_FALSE;
-   
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   sSendBuffer.buffer = (uint8_t*)e->GetByteArrayElements(data, NULL);
-   sSendBuffer.length = (uint32_t)e->GetArrayLength(data);   
-
-   TRACE("phLibNfc_Llcp_SendTo()");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_SendTo(hRemoteDevice,
-                              hLlcpSocket,
-                              nsap,
-                              &sSendBuffer,
-                              nfc_jni_send_callback,
-                              (void*)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Llcp_SendTo() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      goto clean_and_return;
-   } 
-   TRACE("phLibNfc_Llcp_SendTo() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-   
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   result = JNI_TRUE;
-
-clean_and_return:
-   if (sSendBuffer.buffer != NULL)
-   {
-      e->ReleaseByteArrayElements(data, (jbyte*)sSendBuffer.buffer, JNI_ABORT);
-   }
-   nfc_cb_data_deinit(&cb_data);
-   return result;
-}
-
-static jobject com_android_nfc_NativeLlcpConnectionlessSocket_doReceiveFrom(JNIEnv *e, jobject o, jint linkMiu)
-{
-   NFCSTATUS ret;
-   struct timespec ts;
-   uint8_t ssap;
-   jobject llcpPacket = NULL;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   phNfc_sData_t sReceiveBuffer;
-   jclass clsLlcpPacket;
-   jfieldID f;
-   jbyteArray receivedData = NULL;
-   struct nfc_jni_callback_data cb_data;
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   /* Create new LlcpPacket object */
-   if(nfc_jni_cache_object(e,"com/android/nfc/LlcpPacket",&(llcpPacket)) == -1)
-   {
-      ALOGE("Find LlcpPacket class error");
-      goto clean_and_return;
-   }
-
-   /* Get NativeConnectionless class object */
-   clsLlcpPacket = e->GetObjectClass(llcpPacket);
-   if(e->ExceptionCheck())
-   {
-      ALOGE("Get Object class error");
-      goto clean_and_return;
-   } 
-
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-   TRACE("phLibNfc_Llcp_RecvFrom(), Socket Handle = 0x%02x, Link LIU = %d", hLlcpSocket, linkMiu);
-
-   sReceiveBuffer.buffer = (uint8_t*)malloc(linkMiu);
-   sReceiveBuffer.length = linkMiu;
-
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_RecvFrom(hRemoteDevice,
-                                hLlcpSocket,
-                                &sReceiveBuffer,
-                                nfc_jni_receive_callback,
-                                &cb_data);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_PENDING && ret != NFCSTATUS_SUCCESS)
-   {
-      ALOGE("phLibNfc_Llcp_RecvFrom() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      goto clean_and_return;
-   } 
-   TRACE("phLibNfc_Llcp_RecvFrom() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-       goto clean_and_return;
-   }
-
-   ssap = (uintptr_t)cb_data.pContext;
-   TRACE("Data Received From SSAP = %d\n, length = %d", ssap, sReceiveBuffer.length);
-
-   /* Set Llcp Packet remote SAP */
-   f = e->GetFieldID(clsLlcpPacket, "mRemoteSap", "I");
-   e->SetIntField(llcpPacket, f,(jbyte)ssap);
-
-   /* Set Llcp Packet Buffer */
-   ALOGD("Set LlcpPacket Data Buffer\n");
-   f = e->GetFieldID(clsLlcpPacket, "mDataBuffer", "[B");
-   receivedData = e->NewByteArray(sReceiveBuffer.length);
-   e->SetByteArrayRegion(receivedData, 0, sReceiveBuffer.length,(jbyte *)sReceiveBuffer.buffer);
-   e->SetObjectField(llcpPacket, f, receivedData);
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   return llcpPacket;
-}
-
-static jboolean com_android_nfc_NativeLlcpConnectionlessSocket_doClose(JNIEnv *e, jobject o)
-{
-   NFCSTATUS ret;
-   phLibNfc_Handle hLlcpSocket;
-   TRACE("Close Connectionless socket");
-   
-   /* Retrieve socket handle */
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-
-   TRACE("phLibNfc_Llcp_Close()");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Close(hLlcpSocket);
-   REENTRANCE_UNLOCK();
-   if(ret == NFCSTATUS_SUCCESS)
-   {
-      TRACE("phLibNfc_Llcp_Close() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return TRUE;
-   }
-   else
-   {
-      ALOGE("phLibNfc_Llcp_Close() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return FALSE;
-   }
-}
-
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gMethods[] =
-{
-   {"doSendTo", "(I[B)Z", (void *)com_android_nfc_NativeLlcpConnectionlessSocket_doSendTo},
-      
-   {"doReceiveFrom", "(I)Lcom/android/nfc/LlcpPacket;", (void *)com_android_nfc_NativeLlcpConnectionlessSocket_doReceiveFrom},
-      
-   {"doClose", "()Z", (void *)com_android_nfc_NativeLlcpConnectionlessSocket_doClose},
-};
-
-
-int register_com_android_nfc_NativeLlcpConnectionlessSocket(JNIEnv *e)
-{
-   return jniRegisterNativeMethods(e,
-      "com/android/nfc/dhimpl/NativeLlcpConnectionlessSocket",
-      gMethods, NELEM(gMethods));
-}
-
-} // android namespace
diff --git a/nxp/jni/com_android_nfc_NativeLlcpServiceSocket.cpp b/nxp/jni/com_android_nfc_NativeLlcpServiceSocket.cpp
deleted file mode 100644
index eeeb909..0000000
--- a/nxp/jni/com_android_nfc_NativeLlcpServiceSocket.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <errno.h>
-#include <malloc.h>
-#include <semaphore.h>
-#include <ScopedLocalRef.h>
-
-#include "com_android_nfc.h"
-
-namespace android {
-
-extern void nfc_jni_llcp_transport_socket_err_callback(void*      pContext,
-                                                       uint8_t    nErrCode);
-/*
- * Callbacks
- */
-static void nfc_jni_llcp_accept_socket_callback(void*        pContext,
-                                                NFCSTATUS    status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_llcp_accept_socket_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
- 
- 
-/*
- * Utils
- */
-
-static phLibNfc_Handle getIncomingSocket(nfc_jni_native_monitor_t * pMonitor,
-                                                 phLibNfc_Handle hServerSocket)
-{
-   nfc_jni_listen_data_t * pListenData;
-   phLibNfc_Handle pIncomingSocket = (phLibNfc_Handle)NULL;
-
-   /* Look for a pending incoming connection on the current server */
-   LIST_FOREACH(pListenData, &pMonitor->incoming_socket_head, entries)
-   {
-      if (pListenData->pServerSocket == hServerSocket)
-      {
-         pIncomingSocket = pListenData->pIncomingSocket;
-         LIST_REMOVE(pListenData, entries);
-         free(pListenData);
-         break;
-      }
-   }
-
-   return pIncomingSocket;
-}
-
-/*
- * Methods
- */ 
-static jobject com_NativeLlcpServiceSocket_doAccept(JNIEnv *e, jobject o, jint miu, jint rw, jint linearBufferLength)
-{
-   NFCSTATUS ret = NFCSTATUS_SUCCESS;
-   struct timespec ts;
-   phLibNfc_Llcp_sSocketOptions_t sOptions;
-   phNfc_sData_t sWorkingBuffer;
-   jfieldID f;   
-   ScopedLocalRef<jclass> clsNativeLlcpSocket(e, NULL);
-   jobject clientSocket = NULL;
-   struct nfc_jni_callback_data cb_data;
-   phLibNfc_Handle hIncomingSocket, hServerSocket;
-   nfc_jni_native_monitor_t * pMonitor = nfc_jni_get_monitor();
-
-   hIncomingSocket = (phLibNfc_Handle)NULL;
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   /* Get server socket */
-   hServerSocket = nfc_jni_get_nfc_socket_handle(e,o);
-
-   /* Set socket options with the socket options of the service */
-   sOptions.miu = miu;
-   sOptions.rw = rw;
-   
-   /* Allocate Working buffer length */
-   sWorkingBuffer.buffer = (uint8_t*)malloc((miu*rw)+miu+linearBufferLength);
-   sWorkingBuffer.length = (miu*rw)+ miu + linearBufferLength;
-
-   while(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      /* Wait for tag Notification */
-      pthread_mutex_lock(&pMonitor->incoming_socket_mutex);
-      while ((hIncomingSocket = getIncomingSocket(pMonitor, hServerSocket)) == (phLibNfc_Handle)NULL) {
-         pthread_cond_wait(&pMonitor->incoming_socket_cond, &pMonitor->incoming_socket_mutex);
-      }
-      pthread_mutex_unlock(&pMonitor->incoming_socket_mutex);
-
-      /* Accept the incomming socket */
-      TRACE("phLibNfc_Llcp_Accept()");
-      REENTRANCE_LOCK();
-      ret = phLibNfc_Llcp_Accept( hIncomingSocket,
-                                  &sOptions,
-                                  &sWorkingBuffer,
-                                  nfc_jni_llcp_transport_socket_err_callback,
-                                  nfc_jni_llcp_accept_socket_callback,
-                                  (void*)&cb_data);
-      REENTRANCE_UNLOCK();
-      if(ret != NFCSTATUS_PENDING)
-      {
-         // NOTE: This may happen if link went down since incoming socket detected, then
-         //       just drop it and start a new accept loop.
-         ALOGD("phLibNfc_Llcp_Accept() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-         continue;
-      }
-      TRACE("phLibNfc_Llcp_Accept() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-      /* Wait for callback response */
-      if(sem_wait(&cb_data.sem))
-      {
-         ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-         goto clean_and_return;
-      }
-
-      if(cb_data.status != NFCSTATUS_SUCCESS)
-      {
-         /* NOTE: Do not generate an error if the accept failed to avoid error in server application */
-         ALOGD("Failed to accept incoming socket  0x%04x[%s]", cb_data.status, nfc_jni_get_status_name(cb_data.status));
-      }
-   }
-
-   /* Create new LlcpSocket object */
-   if(nfc_jni_cache_object(e,"com/android/nfc/dhimpl/NativeLlcpSocket",&(clientSocket)) == -1)
-   {
-      ALOGD("LLCP Socket creation error");
-      goto clean_and_return;
-   }
-
-   /* Get NativeConnectionOriented class object */
-   clsNativeLlcpSocket.reset(e->GetObjectClass(clientSocket));
-   if(e->ExceptionCheck())
-   {
-      ALOGD("LLCP Socket get class object error");
-      goto clean_and_return;
-   }
-
-   /* Set socket handle */
-   f = e->GetFieldID(clsNativeLlcpSocket.get(), "mHandle", "I");
-   e->SetIntField(clientSocket, f,(jint)hIncomingSocket);
-
-   /* Set socket MIU */
-   f = e->GetFieldID(clsNativeLlcpSocket.get(), "mLocalMiu", "I");
-   e->SetIntField(clientSocket, f,(jint)miu);
-
-   /* Set socket RW */
-   f = e->GetFieldID(clsNativeLlcpSocket.get(), "mLocalRw", "I");
-   e->SetIntField(clientSocket, f,(jint)rw);
-
-   TRACE("socket handle 0x%02x: MIU = %d, RW = %d\n",hIncomingSocket, miu, rw);
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   return clientSocket;
-}
-
-static jboolean com_NativeLlcpServiceSocket_doClose(JNIEnv *e, jobject o)
-{
-   NFCSTATUS ret;
-   phLibNfc_Handle hLlcpSocket;
-   nfc_jni_native_monitor_t * pMonitor = nfc_jni_get_monitor();
-
-   TRACE("Close Service socket");
-
-   /* Retrieve socket handle */
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-
-   pthread_mutex_lock(&pMonitor->incoming_socket_mutex);
-   /* TODO: implement accept abort */
-   pthread_cond_broadcast(&pMonitor->incoming_socket_cond);
-   pthread_mutex_unlock(&pMonitor->incoming_socket_mutex);
-
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Close(hLlcpSocket);
-   REENTRANCE_UNLOCK();
-   if(ret == NFCSTATUS_SUCCESS)
-   {
-      TRACE("Close Service socket OK");
-      return TRUE;
-   }
-   else
-   {
-      ALOGD("Close Service socket KO");
-      return FALSE;
-   }
-}
-
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gMethods[] =
-{
-   {"doAccept", "(III)Lcom/android/nfc/dhimpl/NativeLlcpSocket;",
-      (void *)com_NativeLlcpServiceSocket_doAccept},
-      
-   {"doClose", "()Z",
-      (void *)com_NativeLlcpServiceSocket_doClose},
-};
-
-
-int register_com_android_nfc_NativeLlcpServiceSocket(JNIEnv *e)
-{
-   return jniRegisterNativeMethods(e,
-      "com/android/nfc/dhimpl/NativeLlcpServiceSocket",
-      gMethods, NELEM(gMethods));
-}
-
-} // namespace android
diff --git a/nxp/jni/com_android_nfc_NativeLlcpSocket.cpp b/nxp/jni/com_android_nfc_NativeLlcpSocket.cpp
deleted file mode 100644
index 6a0fda2..0000000
--- a/nxp/jni/com_android_nfc_NativeLlcpSocket.cpp
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <semaphore.h>
-#include <errno.h>
-
-#include "com_android_nfc.h"
-
-namespace android {
-
-/*
- * Callbacks
- */
- 
-static void nfc_jni_disconnect_callback(void*        pContext,
-                                               NFCSTATUS    status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_disconnect_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
- 
-static void nfc_jni_connect_callback(void* pContext, uint8_t nErrCode, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_llcp_connect_callback", status);
-
-   if(status == NFCSTATUS_SUCCESS)
-   {
-      TRACE("Socket connected\n");
-   }
-   else
-   {
-      ALOGD("Socket not connected:");
-      switch(nErrCode)
-      {
-         case PHFRINFC_LLCP_DM_OPCODE_SAP_NOT_ACTIVE:
-            {
-               ALOGD("> SAP NOT ACTIVE\n");
-            }break;
-
-         case PHFRINFC_LLCP_DM_OPCODE_SAP_NOT_FOUND:
-            {
-               ALOGD("> SAP NOT FOUND\n");
-            }break;
-
-         case PHFRINFC_LLCP_DM_OPCODE_CONNECT_REJECTED:
-            {
-               ALOGD("> CONNECT REJECTED\n");
-            }break;
-
-         case PHFRINFC_LLCP_DM_OPCODE_CONNECT_NOT_ACCEPTED:
-            {
-               ALOGD("> CONNECT NOT ACCEPTED\n");
-            }break;
-
-         case PHFRINFC_LLCP_DM_OPCODE_SOCKET_NOT_AVAILABLE:
-            {
-               ALOGD("> SOCKET NOT AVAILABLE\n");
-            }break;
-      }
-   }
-   
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-} 
-
-
-
- 
-static void nfc_jni_receive_callback(void* pContext, NFCSTATUS    status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_llcp_receive_callback", status);
-   
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_send_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_llcp_send_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-/*
- * Methods
- */
-static jboolean com_android_nfc_NativeLlcpSocket_doConnect(JNIEnv *e, jobject o, jint nSap)
-{
-   NFCSTATUS ret;
-   struct timespec ts;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   struct nfc_jni_callback_data cb_data;
-   jboolean result = JNI_FALSE;
-
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-   
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   TRACE("phLibNfc_Llcp_Connect(%d)",nSap);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Connect(hRemoteDevice,
-                               hLlcpSocket,
-                               nSap,
-                               nfc_jni_connect_callback,
-                               (void*)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Llcp_Connect(%d) returned 0x%04x[%s]", nSap, ret, nfc_jni_get_status_name(ret));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Llcp_Connect(%d) returned 0x%04x[%s]", nSap, ret, nfc_jni_get_status_name(ret));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      ALOGW("LLCP Connect request failed");
-      goto clean_and_return;
-   }
-
-   result = JNI_TRUE;
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   return result;
-}
-
-static jboolean com_android_nfc_NativeLlcpSocket_doConnectBy(JNIEnv *e, jobject o, jstring sn)
-{
-   NFCSTATUS ret;
-   struct timespec ts;
-   phNfc_sData_t serviceName = {NULL, 0};
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   struct nfc_jni_callback_data cb_data;
-   jboolean result = JNI_FALSE;
-
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   /* Service socket */
-   serviceName.buffer = (uint8_t*)e->GetStringUTFChars(sn, NULL);
-   serviceName.length = (uint32_t)e->GetStringUTFLength(sn);
-   
-   TRACE("phLibNfc_Llcp_ConnectByUri()");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_ConnectByUri(hRemoteDevice,
-                                    hLlcpSocket,
-                                    &serviceName,
-                                    nfc_jni_connect_callback,
-                                    (void*)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Llcp_ConnectByUri() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Llcp_ConnectByUri() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   result = JNI_TRUE;
-
-clean_and_return:
-   if (serviceName.buffer != NULL) {
-      e->ReleaseStringUTFChars(sn, (const char *)serviceName.buffer);
-   }
-   nfc_cb_data_deinit(&cb_data);
-   return result;
-}
-
-static jboolean com_android_nfc_NativeLlcpSocket_doClose(JNIEnv *e, jobject o)
-{
-   NFCSTATUS ret;
-   phLibNfc_Handle hLlcpSocket;
-
-   /* Retrieve socket handle */
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-
-   TRACE("phLibNfc_Llcp_Close()");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Close(hLlcpSocket);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      ALOGE("phLibNfc_Llcp_Close() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return FALSE; 
-   }
-   TRACE("phLibNfc_Llcp_Close() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-   return TRUE;
-}
-
-static jboolean com_android_nfc_NativeLlcpSocket_doSend(JNIEnv *e, jobject o, jbyteArray  data)
-{
-   NFCSTATUS ret;
-   struct timespec ts;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   phNfc_sData_t sSendBuffer = {NULL, 0};
-   struct nfc_jni_callback_data cb_data;
-   jboolean result = JNI_FALSE;
-   
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-   
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   sSendBuffer.buffer = (uint8_t*)e->GetByteArrayElements(data, NULL);
-   sSendBuffer.length = (uint32_t)e->GetArrayLength(data);
-   
-   TRACE("phLibNfc_Llcp_Send()");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Send(hRemoteDevice,
-                            hLlcpSocket,
-                            &sSendBuffer,
-                            nfc_jni_send_callback,
-                            (void*)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Llcp_Send() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      goto clean_and_return;
-   } 
-   TRACE("phLibNfc_Llcp_Send() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-       goto clean_and_return;
-   }
-
-   result = JNI_TRUE;
-
-clean_and_return:
-   if (sSendBuffer.buffer != NULL)
-   {
-      e->ReleaseByteArrayElements(data, (jbyte*)sSendBuffer.buffer, JNI_ABORT);
-   }
-   nfc_cb_data_deinit(&cb_data);
-   return result;
-}
-
-static jint com_android_nfc_NativeLlcpSocket_doReceive(JNIEnv *e, jobject o, jbyteArray  buffer)
-{
-   NFCSTATUS ret;
-   struct timespec ts;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   phNfc_sData_t sReceiveBuffer = {NULL, 0};
-   struct nfc_jni_callback_data cb_data;
-   jint result = -1;
-   
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);
-   
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   sReceiveBuffer.buffer = (uint8_t*)e->GetByteArrayElements(buffer, NULL);
-   sReceiveBuffer.length = (uint32_t)e->GetArrayLength(buffer);
-   
-   TRACE("phLibNfc_Llcp_Recv()");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Recv(hRemoteDevice,
-                            hLlcpSocket,
-                            &sReceiveBuffer,
-                            nfc_jni_receive_callback,
-                            (void*)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(ret == NFCSTATUS_PENDING)
-   {
-      /* Wait for callback response */
-      if(sem_wait(&cb_data.sem))
-      {
-         ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-         goto clean_and_return;
-      }
-
-      if(cb_data.status == NFCSTATUS_SUCCESS)
-      {
-         result = sReceiveBuffer.length;
-      }
-   }
-   else if (ret == NFCSTATUS_SUCCESS)
-   {
-      result = sReceiveBuffer.length;
-   }
-   else
-   {
-      /* Return status should be either SUCCESS or PENDING */
-      ALOGE("phLibNfc_Llcp_Recv() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Llcp_Recv() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-clean_and_return:
-   if (sReceiveBuffer.buffer != NULL)
-   {
-      e->ReleaseByteArrayElements(buffer, (jbyte*)sReceiveBuffer.buffer, 0);
-   }
-   nfc_cb_data_deinit(&cb_data);
-   return result;
-}
-
-static jint com_android_nfc_NativeLlcpSocket_doGetRemoteSocketMIU(JNIEnv *e, jobject o)
-{
-   NFCSTATUS ret;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   phLibNfc_Llcp_sSocketOptions_t   remoteSocketOption;
-   
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);   
-   
-   TRACE("phLibNfc_Llcp_SocketGetRemoteOptions(MIU)");
-   REENTRANCE_LOCK();
-   ret  = phLibNfc_Llcp_SocketGetRemoteOptions(hRemoteDevice,
-                                               hLlcpSocket,
-                                               &remoteSocketOption);
-   REENTRANCE_UNLOCK();
-   if(ret == NFCSTATUS_SUCCESS)
-   {
-      TRACE("phLibNfc_Llcp_SocketGetRemoteOptions(MIU) returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return remoteSocketOption.miu;
-   }
-   else
-   {
-      ALOGW("phLibNfc_Llcp_SocketGetRemoteOptions(MIU) returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return 0;
-   }
-}
-
-static jint com_android_nfc_NativeLlcpSocket_doGetRemoteSocketRW(JNIEnv *e, jobject o)
-{
-   NFCSTATUS ret;
-   phLibNfc_Handle hRemoteDevice;
-   phLibNfc_Handle hLlcpSocket;
-   phLibNfc_Llcp_sSocketOptions_t   remoteSocketOption;
-
-   /* Retrieve handles */
-   hRemoteDevice = nfc_jni_get_p2p_device_handle(e,o);
-   hLlcpSocket = nfc_jni_get_nfc_socket_handle(e,o);   
-
-   TRACE("phLibNfc_Llcp_SocketGetRemoteOptions(RW)");
-   REENTRANCE_LOCK();
-   ret  = phLibNfc_Llcp_SocketGetRemoteOptions(hRemoteDevice,
-                                               hLlcpSocket,
-                                               &remoteSocketOption);
-   REENTRANCE_UNLOCK();
-   if(ret == NFCSTATUS_SUCCESS)
-   {
-      TRACE("phLibNfc_Llcp_SocketGetRemoteOptions(RW) returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return remoteSocketOption.rw;
-   }
-   else
-   {
-      ALOGW("phLibNfc_Llcp_SocketGetRemoteOptions(RW) returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return 0;
-   }
-}
-
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gMethods[] =
-{
-   {"doConnect", "(I)Z",
-      (void *)com_android_nfc_NativeLlcpSocket_doConnect},
-
-   {"doConnectBy", "(Ljava/lang/String;)Z",
-      (void *)com_android_nfc_NativeLlcpSocket_doConnectBy},
-      
-   {"doClose", "()Z",
-      (void *)com_android_nfc_NativeLlcpSocket_doClose},
-      
-   {"doSend", "([B)Z",
-      (void *)com_android_nfc_NativeLlcpSocket_doSend},
-
-   {"doReceive", "([B)I",
-      (void *)com_android_nfc_NativeLlcpSocket_doReceive},
-      
-   {"doGetRemoteSocketMiu", "()I",
-      (void *)com_android_nfc_NativeLlcpSocket_doGetRemoteSocketMIU},
-           
-   {"doGetRemoteSocketRw", "()I",
-      (void *)com_android_nfc_NativeLlcpSocket_doGetRemoteSocketRW},
-};
-
-
-int register_com_android_nfc_NativeLlcpSocket(JNIEnv *e)
-{
-   return jniRegisterNativeMethods(e,
-      "com/android/nfc/dhimpl/NativeLlcpSocket",gMethods, NELEM(gMethods));
-}
-
-} // namespace android
diff --git a/nxp/jni/com_android_nfc_NativeNfcManager.cpp b/nxp/jni/com_android_nfc_NativeNfcManager.cpp
deleted file mode 100644
index cfbab9b..0000000
--- a/nxp/jni/com_android_nfc_NativeNfcManager.cpp
+++ /dev/null
@@ -1,2446 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <errno.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <sys/queue.h>
-#include <hardware/hardware.h>
-#include <hardware/nfc.h>
-#include <cutils/properties.h>
-#include <ScopedLocalRef.h>
-
-#include "com_android_nfc.h"
-
-#define ERROR_BUFFER_TOO_SMALL       -12
-#define ERROR_INSUFFICIENT_RESOURCES -9
-
-extern uint32_t libnfc_llc_error_count;
-
-static phLibNfc_sConfig_t   gDrvCfg;
-void   *gHWRef;
-static phNfc_sData_t gInputParam;
-static phNfc_sData_t gOutputParam;
-
-uint8_t device_connected_flag;
-static bool driverConfigured = FALSE;
-
-static phLibNfc_Handle              hLlcpHandle;
-static NFCSTATUS                    lastErrorStatus = NFCSTATUS_FAILED;
-static phLibNfc_Llcp_eLinkStatus_t  g_eLinkStatus = phFriNfc_LlcpMac_eLinkDefault;
-
-static jmethodID cached_NfcManager_notifyNdefMessageListeners;
-static jmethodID cached_NfcManager_notifyLlcpLinkActivation;
-static jmethodID cached_NfcManager_notifyLlcpLinkDeactivated;
-static jmethodID cached_NfcManager_notifyTargetDeselected;
-
-static jmethodID cached_NfcManager_notifyRfFieldActivated;
-static jmethodID cached_NfcManager_notifyRfFieldDeactivated;
-namespace android {
-
-phLibNfc_Handle     storedHandle = 0;
-
-struct nfc_jni_native_data *exported_nat = NULL;
-
-/* Internal functions declaration */
-static void *nfc_jni_client_thread(void *arg);
-static void nfc_jni_init_callback(void *pContext, NFCSTATUS status);
-static void nfc_jni_deinit_callback(void *pContext, NFCSTATUS status);
-static void nfc_jni_discover_callback(void *pContext, NFCSTATUS status);
-static void nfc_jni_se_set_mode_callback(void *context,
-        phLibNfc_Handle handle, NFCSTATUS status);
-static void nfc_jni_llcpcfg_callback(void *pContext, NFCSTATUS status);
-static void nfc_jni_start_discovery_locked(struct nfc_jni_native_data *nat, bool resume);
-static void nfc_jni_Discovery_notification_callback(void *pContext,
-        phLibNfc_RemoteDevList_t *psRemoteDevList,
-        uint8_t uNofRemoteDev, NFCSTATUS status);
-static void nfc_jni_transaction_callback(void *context,
-        phLibNfc_eSE_EvtType_t evt_type, phLibNfc_Handle handle,
-        phLibNfc_uSeEvtInfo_t *evt_info, NFCSTATUS status);
-static bool performDownload(struct nfc_jni_native_data *nat, bool takeLock);
-
-extern void set_target_activationBytes(JNIEnv *e, jobject tag,
-        phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo);
-extern void set_target_pollBytes(JNIEnv *e, jobject tag,
-        phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo);
-
-/*
- * Deferred callback called when client thread must be exited
- */
-static void client_kill_deferred_call(void* arg)
-{
-   struct nfc_jni_native_data *nat = (struct nfc_jni_native_data *)arg;
-
-   nat->running = FALSE;
-}
-
-static void kill_client(nfc_jni_native_data *nat)
-{
-   phDal4Nfc_Message_Wrapper_t  wrapper;
-   phLibNfc_DeferredCall_t     *pMsg;
-
-   usleep(50000);
-
-   ALOGD("Terminating client thread...");
-
-   pMsg = (phLibNfc_DeferredCall_t*)malloc(sizeof(phLibNfc_DeferredCall_t));
-   pMsg->pCallback = client_kill_deferred_call;
-   pMsg->pParameter = (void*)nat;
-
-   wrapper.msg.eMsgType = PH_LIBNFC_DEFERREDCALL_MSG;
-   wrapper.msg.pMsgData = pMsg;
-   wrapper.msg.Size     = sizeof(phLibNfc_DeferredCall_t);
-
-   phDal4Nfc_msgsnd(gDrvCfg.nClientId, (struct msgbuf *)&wrapper, sizeof(phLibNfc_Message_t), 0);
-}
-
-static void nfc_jni_ioctl_callback(void *pContext, phNfc_sData_t* /*pOutput*/, NFCSTATUS status) {
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_ioctl_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_deinit_download_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_deinit_download_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static int nfc_jni_download_locked(struct nfc_jni_native_data *nat, uint8_t update)
-{
-    uint8_t OutputBuffer[1];
-    uint8_t InputBuffer[1];
-    struct timespec ts;
-    NFCSTATUS status = NFCSTATUS_FAILED;
-    phLibNfc_StackCapabilities_t caps;
-    struct nfc_jni_callback_data cb_data;
-    bool result;
-
-    /* Create the local semaphore */
-    if (!nfc_cb_data_init(&cb_data, NULL))
-    {
-       goto clean_and_return;
-    }
-
-    if(update)
-    {
-        //deinit
-        TRACE("phLibNfc_Mgt_DeInitialize() (download)");
-        REENTRANCE_LOCK();
-        status = phLibNfc_Mgt_DeInitialize(gHWRef, nfc_jni_deinit_download_callback, (void *)&cb_data);
-        REENTRANCE_UNLOCK();
-        if (status != NFCSTATUS_PENDING)
-        {
-            ALOGE("phLibNfc_Mgt_DeInitialize() (download) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-        }
-
-        clock_gettime(CLOCK_REALTIME, &ts);
-        ts.tv_sec += 5;
-
-        /* Wait for callback response */
-        if(sem_timedwait(&cb_data.sem, &ts))
-        {
-            ALOGW("Deinitialization timed out (download)");
-        }
-
-        if(cb_data.status != NFCSTATUS_SUCCESS)
-        {
-            ALOGW("Deinitialization FAILED (download)");
-        }
-        TRACE("Deinitialization SUCCESS (download)");
-    }
-
-    result = performDownload(nat, false);
-
-    if (!result) {
-        status = NFCSTATUS_FAILED;
-        goto clean_and_return;
-    }
-
-    TRACE("phLibNfc_Mgt_Initialize()");
-    REENTRANCE_LOCK();
-    status = phLibNfc_Mgt_Initialize(gHWRef, nfc_jni_init_callback, (void *)&cb_data);
-    REENTRANCE_UNLOCK();
-    if(status != NFCSTATUS_PENDING)
-    {
-        ALOGE("phLibNfc_Mgt_Initialize() (download) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-        goto clean_and_return;
-    }
-    TRACE("phLibNfc_Mgt_Initialize() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-    if(sem_wait(&cb_data.sem))
-    {
-       ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-       status = NFCSTATUS_FAILED;
-       goto clean_and_return;
-    }
-
-    /* Initialization Status */
-    if(cb_data.status != NFCSTATUS_SUCCESS)
-    {
-        status = cb_data.status;
-        goto clean_and_return;
-    }
-
-    /* ====== CAPABILITIES ======= */
-    REENTRANCE_LOCK();
-    status = phLibNfc_Mgt_GetstackCapabilities(&caps, (void*)nat);
-    REENTRANCE_UNLOCK();
-    if (status != NFCSTATUS_SUCCESS)
-    {
-       ALOGW("phLibNfc_Mgt_GetstackCapabilities returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-    }
-    else
-    {
-        ALOGD("NFC capabilities: HAL = %x, FW = %x, HW = %x, Model = %x, HCI = %x, Full_FW = %d, Rev = %d, FW Update Info = %d",
-              caps.psDevCapabilities.hal_version,
-              caps.psDevCapabilities.fw_version,
-              caps.psDevCapabilities.hw_version,
-              caps.psDevCapabilities.model_id,
-              caps.psDevCapabilities.hci_version,
-              caps.psDevCapabilities.full_version[NXP_FULL_VERSION_LEN-1],
-              caps.psDevCapabilities.full_version[NXP_FULL_VERSION_LEN-2],
-              caps.psDevCapabilities.firmware_update_info);
-    }
-
-    /*Download is successful*/
-    status = NFCSTATUS_SUCCESS;
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   return status;
-}
-
-static int nfc_jni_configure_driver(struct nfc_jni_native_data *nat)
-{
-    char value[PROPERTY_VALUE_MAX];
-    int result = FALSE;
-    NFCSTATUS status;
-
-    /* ====== CONFIGURE DRIVER ======= */
-    /* Configure hardware link */
-    gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
-
-    TRACE("phLibNfc_Mgt_ConfigureDriver(0x%08x)", gDrvCfg.nClientId);
-    REENTRANCE_LOCK();
-    status = phLibNfc_Mgt_ConfigureDriver(&gDrvCfg, &gHWRef);
-    REENTRANCE_UNLOCK();
-    if(status == NFCSTATUS_ALREADY_INITIALISED) {
-           ALOGW("phLibNfc_Mgt_ConfigureDriver() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-    }
-    else if(status != NFCSTATUS_SUCCESS)
-    {
-        ALOGE("phLibNfc_Mgt_ConfigureDriver() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-        goto clean_and_return;
-    }
-    TRACE("phLibNfc_Mgt_ConfigureDriver() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-    if(pthread_create(&(nat->thread), NULL, nfc_jni_client_thread, nat) != 0)
-    {
-        ALOGE("pthread_create failed");
-        goto clean_and_return;
-    }
-
-    driverConfigured = TRUE;
-
-clean_and_return:
-    return result;
-}
-
-static int nfc_jni_unconfigure_driver(struct nfc_jni_native_data* /*nat*/)
-{
-    int result = FALSE;
-    NFCSTATUS status;
-
-    /* Unconfigure driver */
-    TRACE("phLibNfc_Mgt_UnConfigureDriver()");
-    REENTRANCE_LOCK();
-    status = phLibNfc_Mgt_UnConfigureDriver(gHWRef);
-    REENTRANCE_UNLOCK();
-    if(status != NFCSTATUS_SUCCESS)
-    {
-        ALOGE("phLibNfc_Mgt_UnConfigureDriver() returned error 0x%04x[%s] -- this should never happen", status, nfc_jni_get_status_name( status));
-    }
-    else
-    {
-       ALOGD("phLibNfc_Mgt_UnConfigureDriver() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-       result = TRUE;
-    }
-
-    driverConfigured = FALSE;
-
-    return result;
-}
-
-/* Initialization function */
-static int nfc_jni_initialize(struct nfc_jni_native_data *nat) {
-   struct timespec ts;
-   uint8_t resp[16];
-   NFCSTATUS status;
-   phLibNfc_StackCapabilities_t caps;
-   phLibNfc_SE_List_t SE_List[PHLIBNFC_MAXNO_OF_SE];
-   uint8_t i, No_SE = PHLIBNFC_MAXNO_OF_SE, SmartMX_index = 0, SmartMX_detected = 0;
-   phLibNfc_Llcp_sLinkParameters_t LlcpConfigInfo;
-   struct nfc_jni_callback_data cb_data;
-   uint8_t firmware_status;
-   uint8_t update = TRUE;
-   int result = JNI_FALSE;
-   const hw_module_t* hw_module;
-   nfc_pn544_device_t* pn544_dev = NULL;
-   int ret = 0;
-   ALOGD("Start Initialization\n");
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-   /* Get EEPROM values and device port from product-specific settings */
-   ret = hw_get_module(NFC_HARDWARE_MODULE_ID, &hw_module);
-   if (ret) {
-      ALOGE("hw_get_module() failed.");
-      goto clean_and_return;
-   }
-   ret = nfc_pn544_open(hw_module, &pn544_dev);
-   if (ret) {
-      ALOGE("Could not open pn544 hw_module.");
-      goto clean_and_return;
-   }
-   if (pn544_dev->num_eeprom_settings == 0 || pn544_dev->eeprom_settings == NULL) {
-       ALOGE("Could not load EEPROM settings");
-       goto clean_and_return;
-   }
-
-   /* Reset device connected handle */
-   device_connected_flag = 0;
-
-   /* Reset stored handle */
-   storedHandle = 0;
-
-   /* Initialize Driver */
-   if(!driverConfigured)
-   {
-       nfc_jni_configure_driver(nat);
-   }
-
-   /* ====== INITIALIZE ======= */
-
-   TRACE("phLibNfc_Mgt_Initialize()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_Mgt_Initialize(gHWRef, nfc_jni_init_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Mgt_Initialize() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      update = FALSE;
-      goto force_download;
-   }
-   TRACE("phLibNfc_Mgt_Initialize returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   /* Initialization Status */
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      update = FALSE;
-      goto force_download;
-   }
-
-   /* ====== CAPABILITIES ======= */
-
-   REENTRANCE_LOCK();
-   status = phLibNfc_Mgt_GetstackCapabilities(&caps, (void*)nat);
-   REENTRANCE_UNLOCK();
-   if (status != NFCSTATUS_SUCCESS)
-   {
-      ALOGW("phLibNfc_Mgt_GetstackCapabilities returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-   }
-   else
-   {
-       ALOGD("NFC capabilities: HAL = %x, FW = %x, HW = %x, Model = %x, HCI = %x, Full_FW = %d, Rev = %d, FW Update Info = %d",
-             caps.psDevCapabilities.hal_version,
-             caps.psDevCapabilities.fw_version,
-             caps.psDevCapabilities.hw_version,
-             caps.psDevCapabilities.model_id,
-             caps.psDevCapabilities.hci_version,
-             caps.psDevCapabilities.full_version[NXP_FULL_VERSION_LEN-1],
-             caps.psDevCapabilities.full_version[NXP_FULL_VERSION_LEN-2],
-             caps.psDevCapabilities.firmware_update_info);
-   }
-
-   /* ====== FIRMWARE VERSION ======= */
-   if(caps.psDevCapabilities.firmware_update_info)
-   {
-force_download:
-       for (i=0; i<3; i++)
-       {
-           TRACE("Firmware version not UpToDate");
-           status = nfc_jni_download_locked(nat, update);
-           if(status == NFCSTATUS_SUCCESS)
-           {
-               ALOGI("Firmware update SUCCESS");
-               break;
-           }
-           ALOGW("Firmware update FAILED");
-           update = FALSE;
-       }
-       if(i>=3)
-       {
-           ALOGE("Unable to update firmware, giving up");
-           goto clean_and_return;
-       }
-   }
-   else
-   {
-       TRACE("Firmware version UpToDate");
-   }
-   /* ====== EEPROM SETTINGS ======= */
-
-   // Update EEPROM settings
-   TRACE("******  START EEPROM SETTINGS UPDATE ******");
-   for (i = 0; i < pn544_dev->num_eeprom_settings; i++)
-   {
-      char eeprom_property[PROPERTY_KEY_MAX];
-      char eeprom_value[PROPERTY_VALUE_MAX];
-      uint8_t* eeprom_base = &(pn544_dev->eeprom_settings[i*4]);
-      TRACE("> EEPROM SETTING: %d", i);
-
-      // Check for override of this EEPROM value in properties
-      snprintf(eeprom_property, sizeof(eeprom_property), "debug.nfc.eeprom.%02X%02X",
-              eeprom_base[1], eeprom_base[2]);
-      TRACE(">> Checking property: %s", eeprom_property);
-      if (property_get(eeprom_property, eeprom_value, "") == 2) {
-          int eeprom_value_num = (int)strtol(eeprom_value, (char**)NULL, 16);
-          ALOGD(">> Override EEPROM addr 0x%02X%02X with value %02X",
-                  eeprom_base[1], eeprom_base[2], eeprom_value_num);
-          eeprom_base[3] = eeprom_value_num;
-      }
-
-      TRACE(">> Addr: 0x%02X%02X set to: 0x%02X", eeprom_base[1], eeprom_base[2],
-              eeprom_base[3]);
-      gInputParam.buffer = eeprom_base;
-      gInputParam.length = 0x04;
-      gOutputParam.buffer = resp;
-
-      REENTRANCE_LOCK();
-      status = phLibNfc_Mgt_IoCtl(gHWRef, NFC_MEM_WRITE, &gInputParam, &gOutputParam, nfc_jni_ioctl_callback, (void *)&cb_data);
-      REENTRANCE_UNLOCK();
-      if (status != NFCSTATUS_PENDING) {
-         ALOGE("phLibNfc_Mgt_IoCtl() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-         goto clean_and_return;
-      }
-      /* Wait for callback response */
-      if(sem_wait(&cb_data.sem))
-      {
-         ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-         goto clean_and_return;
-      }
-
-      /* Initialization Status */
-      if (cb_data.status != NFCSTATUS_SUCCESS)
-      {
-         goto clean_and_return;
-      }
-   }
-   TRACE("******  ALL EEPROM SETTINGS UPDATED  ******");
-
-   /* ====== SECURE ELEMENTS ======= */
-
-   REENTRANCE_LOCK();
-   ALOGD("phLibNfc_SE_GetSecureElementList()");
-   status = phLibNfc_SE_GetSecureElementList(SE_List, &No_SE);
-   REENTRANCE_UNLOCK();
-   if (status != NFCSTATUS_SUCCESS)
-   {
-      ALOGD("phLibNfc_SE_GetSecureElementList(): Error");
-      goto clean_and_return;
-   }
-
-   ALOGD("\n> Number of Secure Element(s) : %d\n", No_SE);
-   /* Display Secure Element information */
-   for (i = 0; i < No_SE; i++)
-   {
-      if (SE_List[i].eSE_Type == phLibNfc_SE_Type_SmartMX) {
-         ALOGD("phLibNfc_SE_GetSecureElementList(): SMX detected, handle=%p", (void*)SE_List[i].hSecureElement);
-      } else if (SE_List[i].eSE_Type == phLibNfc_SE_Type_UICC) {
-         ALOGD("phLibNfc_SE_GetSecureElementList(): UICC detected, handle=%p", (void*)SE_List[i].hSecureElement);
-      }
-
-      /* Set SE mode - Off */
-      REENTRANCE_LOCK();
-      status = phLibNfc_SE_SetMode(SE_List[i].hSecureElement,
-            phLibNfc_SE_ActModeOff, nfc_jni_se_set_mode_callback,
-            (void *)&cb_data);
-      REENTRANCE_UNLOCK();
-      if (status != NFCSTATUS_PENDING)
-      {
-         ALOGE("phLibNfc_SE_SetMode() returned 0x%04x[%s]", status,
-               nfc_jni_get_status_name(status));
-         goto clean_and_return;
-      }
-      ALOGD("phLibNfc_SE_SetMode() returned 0x%04x[%s]", status,
-            nfc_jni_get_status_name(status));
-
-      /* Wait for callback response */
-      if(sem_wait(&cb_data.sem))
-      {
-         ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-         goto clean_and_return;
-      }
-   }
-
-   /* ====== LLCP ======= */
-
-   /* LLCP Params */
-   TRACE("******  NFC Config Mode NFCIP1 - LLCP ******");
-   LlcpConfigInfo.miu    = nat->miu;
-   LlcpConfigInfo.lto    = nat->lto;
-   LlcpConfigInfo.wks    = nat->wks;
-   LlcpConfigInfo.option = nat->opt;
-
-   REENTRANCE_LOCK();
-   status = phLibNfc_Mgt_SetLlcp_ConfigParams(&LlcpConfigInfo,
-                                              nfc_jni_llcpcfg_callback,
-                                              (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Mgt_SetLlcp_ConfigParams returned 0x%04x[%s]", status,
-           nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Mgt_SetLlcp_ConfigParams returned 0x%04x[%s]", status,
-         nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   /* ===== DISCOVERY ==== */
-   nat->discovery_cfg.NfcIP_Mode = nat->p2p_initiator_modes;  //initiator
-   nat->discovery_cfg.NfcIP_Target_Mode = nat->p2p_target_modes;  //target
-   nat->discovery_cfg.Duration = 300000; /* in ms */
-   nat->discovery_cfg.NfcIP_Tgt_Disable = FALSE;
-
-   /* Register for the card emulation mode */
-   REENTRANCE_LOCK();
-   ret = phLibNfc_SE_NtfRegister(nfc_jni_transaction_callback,(void *)nat);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-        ALOGD("phLibNfc_SE_NtfRegister returned 0x%02x",ret);
-        goto clean_and_return;
-   }
-   TRACE("phLibNfc_SE_NtfRegister returned 0x%x\n", ret);
-
-
-   /* ====== END ======= */
-
-   ALOGI("NFC Initialized");
-
-   result = TRUE;
-
-clean_and_return:
-   if (result != TRUE)
-   {
-      if(nat)
-      {
-         kill_client(nat);
-      }
-   }
-   if (pn544_dev != NULL) {
-       nfc_pn544_close(pn544_dev);
-   }
-   nfc_cb_data_deinit(&cb_data);
-
-   return result;
-}
-
-static int is_user_build() {
-    char value[PROPERTY_VALUE_MAX];
-    property_get("ro.build.type", value, "");
-    return !strncmp("user", value, PROPERTY_VALUE_MAX);
-}
-
-/*
- * Last-chance fallback when there is no clean way to recover
- * Performs a software reset
-  */
-void emergency_recovery(struct nfc_jni_native_data* /*nat*/) {
-   if (is_user_build()) {
-       ALOGE("emergency_recovery: force restart of NFC service");
-   } else {
-       // dont recover immediately, so we can debug
-       unsigned int t;
-       for (t=1; t < 1000000; t <<= 1) {
-           ALOGE("emergency_recovery: NFC stack dead-locked");
-           sleep(t);
-       }
-   }
-   phLibNfc_Mgt_Recovery();
-   abort();  // force a noisy crash
-}
-
-void nfc_jni_reset_timeout_values()
-{
-    REENTRANCE_LOCK();
-    phLibNfc_SetIsoXchgTimeout(NXP_ISO_XCHG_TIMEOUT);
-    phLibNfc_SetHciTimeout(NXP_NFC_HCI_TIMEOUT);
-    phLibNfc_SetFelicaTimeout(NXP_FELICA_XCHG_TIMEOUT);
-    phLibNfc_SetMifareRawTimeout(NXP_MIFARE_XCHG_TIMEOUT);
-    REENTRANCE_UNLOCK();
-}
-
-/*
- * Restart the polling loop when unable to perform disconnect
-  */
-void nfc_jni_restart_discovery_locked(struct nfc_jni_native_data *nat)
-{
-    nfc_jni_start_discovery_locked(nat, true);
-}
-
- /*
-  *  Utility to recover UID from target infos
-  */
-static phNfc_sData_t get_target_uid(phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo)
-{
-    phNfc_sData_t uid;
-
-    switch(psRemoteDevInfo->RemDevType)
-    {
-    case phNfc_eISO14443_A_PICC:
-    case phNfc_eISO14443_4A_PICC:
-    case phNfc_eISO14443_3A_PICC:
-    case phNfc_eMifare_PICC:
-        uid.buffer = psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.Uid;
-        uid.length = psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.UidLength;
-        break;
-    case phNfc_eISO14443_B_PICC:
-    case phNfc_eISO14443_4B_PICC:
-        uid.buffer = psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.Pupi;
-        uid.length = sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.Pupi);
-        break;
-    case phNfc_eFelica_PICC:
-        uid.buffer = psRemoteDevInfo->RemoteDevInfo.Felica_Info.IDm;
-        uid.length = psRemoteDevInfo->RemoteDevInfo.Felica_Info.IDmLength;
-        break;
-    case phNfc_eJewel_PICC:
-        uid.buffer = psRemoteDevInfo->RemoteDevInfo.Jewel_Info.Uid;
-        uid.length = psRemoteDevInfo->RemoteDevInfo.Jewel_Info.UidLength;
-        break;
-    case phNfc_eISO15693_PICC:
-        uid.buffer = psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Uid;
-        uid.length = psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.UidLength;
-        break;
-    case phNfc_eNfcIP1_Target:
-    case phNfc_eNfcIP1_Initiator:
-        uid.buffer = psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.NFCID;
-        uid.length = psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.NFCID_Length;
-        break;
-    default:
-        uid.buffer = NULL;
-        uid.length = 0;
-        break;
-    }
-
-    return uid;
-}
-
-/*
- * NFC stack message processing
- */
-static void *nfc_jni_client_thread(void *arg)
-{
-   struct nfc_jni_native_data *nat;
-   JNIEnv *e;
-   JavaVMAttachArgs thread_args;
-   phDal4Nfc_Message_Wrapper_t wrapper;
-
-   nat = (struct nfc_jni_native_data *)arg;
-
-   thread_args.name = "NFC Message Loop";
-   thread_args.version = nat->env_version;
-   thread_args.group = NULL;
-
-   nat->vm->AttachCurrentThread(&e, &thread_args);
-   pthread_setname_np(pthread_self(), "message");
-
-   TRACE("NFC client started");
-   nat->running = TRUE;
-   while(nat->running == TRUE)
-   {
-      /* Fetch next message from the NFC stack message queue */
-      if(phDal4Nfc_msgrcv(gDrvCfg.nClientId, (void *)&wrapper,
-         sizeof(phLibNfc_Message_t), 0, 0) == -1)
-      {
-         ALOGE("NFC client received bad message");
-         continue;
-      }
-
-      switch(wrapper.msg.eMsgType)
-      {
-         case PH_LIBNFC_DEFERREDCALL_MSG:
-         {
-            phLibNfc_DeferredCall_t *msg =
-               (phLibNfc_DeferredCall_t *)(wrapper.msg.pMsgData);
-
-            REENTRANCE_LOCK();
-            msg->pCallback(msg->pParameter);
-            REENTRANCE_UNLOCK();
-
-            break;
-         }
-      }
-   }
-   TRACE("NFC client stopped");
-
-   nat->vm->DetachCurrentThread();
-
-   return NULL;
-}
-
-extern uint8_t nfc_jni_is_ndef;
-extern uint8_t *nfc_jni_ndef_buf;
-extern uint32_t nfc_jni_ndef_buf_len;
-
-static phLibNfc_sNfcIPCfg_t nfc_jni_nfcip1_cfg =
-{
-   3,
-   { 0x46, 0x66, 0x6D }
-};
-
-/*
- * Callbacks
- */
-
-/* P2P - LLCP callbacks */
-static void nfc_jni_llcp_linkStatus_callback(void *pContext,
-                                                    phFriNfc_LlcpMac_eLinkStatus_t   eLinkStatus)
-{
-   phFriNfc_Llcp_sLinkParameters_t  sLinkParams;
-   JNIEnv *e;
-   NFCSTATUS status;
-
-   struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)pContext;
-
-   struct nfc_jni_native_data *nat = (nfc_jni_native_data *)pContextData->pContext;
-
-   nfc_jni_listen_data_t * pListenData = NULL;
-   nfc_jni_native_monitor * pMonitor = nfc_jni_get_monitor();
-
-   TRACE("Callback: nfc_jni_llcp_linkStatus_callback()");
-
-   nat->vm->GetEnv( (void **)&e, nat->env_version);
-
-   /* Update link status */
-   g_eLinkStatus = eLinkStatus;
-
-   if(eLinkStatus == phFriNfc_LlcpMac_eLinkActivated)
-   {
-      REENTRANCE_LOCK();
-      status = phLibNfc_Llcp_GetRemoteInfo(hLlcpHandle, &sLinkParams);
-      REENTRANCE_UNLOCK();
-      if(status != NFCSTATUS_SUCCESS)
-      {
-           ALOGW("GetRemote Info failded - Status = %02x",status);
-      }
-      else
-      {
-           ALOGI("LLCP Link activated (LTO=%d, MIU=%d, OPTION=0x%02x, WKS=0x%02x)",sLinkParams.lto,
-                                                                                  sLinkParams.miu,
-                                                                                  sLinkParams.option,
-                                                                                  sLinkParams.wks);
-           device_connected_flag = 1;
-      }
-   }
-   else if(eLinkStatus == phFriNfc_LlcpMac_eLinkDeactivated)
-   {
-      ALOGI("LLCP Link deactivated");
-      free(pContextData);
-      /* Reset device connected flag */
-      device_connected_flag = 0;
-
-      /* Reset incoming socket list */
-      while (!LIST_EMPTY(&pMonitor->incoming_socket_head))
-      {
-         pListenData = LIST_FIRST(&pMonitor->incoming_socket_head);
-         LIST_REMOVE(pListenData, entries);
-         free(pListenData);
-      }
-
-      /* Notify manager that the LLCP is lost or deactivated */
-      e->CallVoidMethod(nat->manager, cached_NfcManager_notifyLlcpLinkDeactivated, nat->tag);
-      if(e->ExceptionCheck())
-      {
-         ALOGE("Exception occured");
-         kill_client(nat);
-      }
-   }
-}
-
-static void nfc_jni_checkLlcp_callback(void *context,
-                                              NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)context;
-
-   LOG_CALLBACK("nfc_jni_checkLlcp_callback", status);
-
-   pContextData->status = status;
-   sem_post(&pContextData->sem);
-}
-
-static void nfc_jni_llcpcfg_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_llcpcfg_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_llcp_transport_listen_socket_callback(void              *pContext,
-                                                          phLibNfc_Handle   hIncomingSocket)
-{
-   phLibNfc_Handle hServiceSocket = (phLibNfc_Handle)pContext;
-   nfc_jni_listen_data_t * pListenData = NULL;
-   nfc_jni_native_monitor * pMonitor = nfc_jni_get_monitor();
-
-   TRACE("nfc_jni_llcp_transport_listen_socket_callback socket handle = %p", (void*)hIncomingSocket);
-
-   pthread_mutex_lock(&pMonitor->incoming_socket_mutex);
-
-   /* Store the connection request */
-   pListenData = (nfc_jni_listen_data_t*)malloc(sizeof(nfc_jni_listen_data_t));
-   if (pListenData == NULL)
-   {
-      ALOGE("Failed to create structure to handle incoming LLCP connection request");
-      goto clean_and_return;
-   }
-   pListenData->pServerSocket = hServiceSocket;
-   pListenData->pIncomingSocket = hIncomingSocket;
-   LIST_INSERT_HEAD(&pMonitor->incoming_socket_head, pListenData, entries);
-
-   /* Signal pending accept operations that the list is updated */
-   pthread_cond_broadcast(&pMonitor->incoming_socket_cond);
-
-clean_and_return:
-   pthread_mutex_unlock(&pMonitor->incoming_socket_mutex);
-}
-
-void nfc_jni_llcp_transport_socket_err_callback(void*      pContext,
-                                                       uint8_t    nErrCode)
-{
-   PHNFC_UNUSED_VARIABLE(pContext);
-
-   TRACE("Callback: nfc_jni_llcp_transport_socket_err_callback()");
-
-   if(nErrCode == PHFRINFC_LLCP_ERR_FRAME_REJECTED)
-   {
-      ALOGW("Frame Rejected - Disconnected");
-   }
-   else if(nErrCode == PHFRINFC_LLCP_ERR_DISCONNECTED)
-   {
-      ALOGD("Socket Disconnected");
-   }
-}
-
-
-static void nfc_jni_discover_callback(void *pContext, NFCSTATUS status)
-{
-    struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)pContext;
-
-    LOG_CALLBACK("nfc_jni_discover_callback", status);
-
-    pContextData->status = status;
-    sem_post(&pContextData->sem);
-}
-
-static uint8_t find_preferred_target(phLibNfc_RemoteDevList_t *psRemoteDevList,
-        uint8_t uNoOfRemoteDev)
-{
-    // Always prefer p2p targets over other targets. Otherwise, select the first target
-    // reported.
-    uint8_t preferred_index = 0;
-    for (uint8_t i = 0; i < uNoOfRemoteDev; i++) {
-        if((psRemoteDevList[i].psRemoteDevInfo->RemDevType == phNfc_eNfcIP1_Initiator)
-                || (psRemoteDevList[i].psRemoteDevInfo->RemDevType == phNfc_eNfcIP1_Target)) {
-            preferred_index = i;
-        }
-    }
-    return preferred_index;
-}
-
-static void nfc_jni_Discovery_notification_callback(void *pContext,
-   phLibNfc_RemoteDevList_t *psRemoteDevList,
-   uint8_t uNofRemoteDev, NFCSTATUS status)
-{
-   NFCSTATUS ret;
-   const char * typeName;
-   struct timespec ts;
-   phNfc_sData_t data;
-   int i;
-   int target_index = 0; // Target that will be reported (if multiple can be >0)
-
-   struct nfc_jni_native_data* nat = (struct nfc_jni_native_data *)pContext;
-
-   JNIEnv *e;
-   nat->vm->GetEnv( (void **)&e, nat->env_version);
-
-   if(status == NFCSTATUS_DESELECTED)
-   {
-      LOG_CALLBACK("nfc_jni_Discovery_notification_callback: Target deselected", status);
-
-      /* Notify manager that a target was deselected */
-      e->CallVoidMethod(nat->manager, cached_NfcManager_notifyTargetDeselected);
-      if(e->ExceptionCheck())
-      {
-         ALOGE("Exception occurred");
-         kill_client(nat);
-      }
-   }
-   else
-   {
-      LOG_CALLBACK("nfc_jni_Discovery_notification_callback", status);
-      TRACE("Discovered %d tags", uNofRemoteDev);
-
-      target_index = find_preferred_target(psRemoteDevList, uNofRemoteDev);
-
-      ScopedLocalRef<jobject> tag(e, NULL);
-
-      /* Reset device connected flag */
-      device_connected_flag = 1;
-      phLibNfc_sRemoteDevInformation_t *remDevInfo = psRemoteDevList[target_index].psRemoteDevInfo;
-      phLibNfc_Handle remDevHandle = psRemoteDevList[target_index].hTargetDev;
-      if((remDevInfo->RemDevType == phNfc_eNfcIP1_Initiator)
-          || (remDevInfo->RemDevType == phNfc_eNfcIP1_Target))
-      {
-         ScopedLocalRef<jclass> tag_cls(e, e->GetObjectClass(nat->cached_P2pDevice));
-         if(e->ExceptionCheck())
-         {
-            ALOGE("Get Object Class Error");
-            kill_client(nat);
-            return;
-         }
-
-         /* New target instance */
-         jmethodID ctor = e->GetMethodID(tag_cls.get(), "<init>", "()V");
-         tag.reset(e->NewObject(tag_cls.get(), ctor));
-
-         /* Set P2P Target mode */
-         jfieldID f = e->GetFieldID(tag_cls.get(), "mMode", "I");
-
-         if(remDevInfo->RemDevType == phNfc_eNfcIP1_Initiator)
-         {
-            ALOGD("Discovered P2P Initiator");
-            e->SetIntField(tag.get(), f, (jint)MODE_P2P_INITIATOR);
-         }
-         else
-         {
-            ALOGD("Discovered P2P Target");
-            e->SetIntField(tag.get(), f, (jint)MODE_P2P_TARGET);
-         }
-
-         if(remDevInfo->RemDevType == phNfc_eNfcIP1_Initiator)
-         {
-            /* Set General Bytes */
-            f = e->GetFieldID(tag_cls.get(), "mGeneralBytes", "[B");
-
-           TRACE("General Bytes length =");
-           for(i=0;i<remDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length;i++)
-           {
-               ALOGD("%02x ", remDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo[i]);
-           }
-
-            ScopedLocalRef<jbyteArray> generalBytes(e, e->NewByteArray(remDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length));
-
-            e->SetByteArrayRegion(generalBytes.get(), 0,
-                                  remDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length,
-                                  (jbyte *)remDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo);
-            e->SetObjectField(tag.get(), f, generalBytes.get());
-         }
-
-         /* Set tag handle */
-         f = e->GetFieldID(tag_cls.get(), "mHandle", "I");
-         e->SetIntField(tag.get(), f,(jint)remDevHandle);
-         TRACE("Target handle = 0x%08x",remDevHandle);
-      }
-      else
-      {
-        ScopedLocalRef<jclass> tag_cls(e, e->GetObjectClass(nat->cached_NfcTag));
-        if(e->ExceptionCheck())
-        {
-            kill_client(nat);
-            return;
-        }
-
-        /* New tag instance */
-        jmethodID ctor = e->GetMethodID(tag_cls.get(), "<init>", "()V");
-        tag.reset(e->NewObject(tag_cls.get(), ctor));
-
-        bool multi_protocol = false;
-
-        if(status == NFCSTATUS_MULTIPLE_PROTOCOLS)
-        {
-            TRACE("Multiple Protocol TAG detected\n");
-            multi_protocol = true;
-        }
-
-        /* Set tag UID */
-        jfieldID f = e->GetFieldID(tag_cls.get(), "mUid", "[B");
-        data = get_target_uid(remDevInfo);
-        ScopedLocalRef<jbyteArray> tagUid(e, e->NewByteArray(data.length));
-        if(data.length > 0)
-        {
-           e->SetByteArrayRegion(tagUid.get(), 0, data.length, (jbyte *)data.buffer);
-        }
-        e->SetObjectField(tag.get(), f, tagUid.get());
-
-        /* Generate technology list */
-        ScopedLocalRef<jintArray> techList(e, NULL);
-        ScopedLocalRef<jintArray> handleList(e, NULL);
-        ScopedLocalRef<jintArray> typeList(e, NULL);
-        nfc_jni_get_technology_tree(e, psRemoteDevList,
-                multi_protocol ? uNofRemoteDev : 1,
-                &techList, &handleList, &typeList);
-
-        /* Push the technology list into the java object */
-        f = e->GetFieldID(tag_cls.get(), "mTechList", "[I");
-        e->SetObjectField(tag.get(), f, techList.get());
-
-        f = e->GetFieldID(tag_cls.get(), "mTechHandles", "[I");
-        e->SetObjectField(tag.get(), f, handleList.get());
-
-        f = e->GetFieldID(tag_cls.get(), "mTechLibNfcTypes", "[I");
-        e->SetObjectField(tag.get(), f, typeList.get());
-
-        f = e->GetFieldID(tag_cls.get(), "mConnectedTechIndex", "I");
-        e->SetIntField(tag.get(), f,(jint)-1);
-
-        f = e->GetFieldID(tag_cls.get(), "mConnectedHandle", "I");
-        e->SetIntField(tag.get(), f,(jint)-1);
-
-        set_target_pollBytes(e, tag.get(), psRemoteDevList->psRemoteDevInfo);
-
-        set_target_activationBytes(e, tag.get(), psRemoteDevList->psRemoteDevInfo);
-      }
-
-      storedHandle = remDevHandle;
-      if (nat->tag != NULL) {
-          e->DeleteGlobalRef(nat->tag);
-      }
-      nat->tag = e->NewGlobalRef(tag.get());
-
-      /* Notify the service */
-      TRACE("Notify Nfc Service");
-      if((remDevInfo->RemDevType == phNfc_eNfcIP1_Initiator)
-          || (remDevInfo->RemDevType == phNfc_eNfcIP1_Target))
-      {
-         /* Store the handle of the P2P device */
-         hLlcpHandle = remDevHandle;
-
-         /* Notify manager that new a P2P device was found */
-         e->CallVoidMethod(nat->manager, cached_NfcManager_notifyLlcpLinkActivation, tag.get());
-         if(e->ExceptionCheck())
-         {
-            ALOGE("Exception occurred");
-            kill_client(nat);
-         }
-      }
-      else
-      {
-         /* Notify manager that new a tag was found */
-         e->CallVoidMethod(nat->manager, cached_NfcManager_notifyNdefMessageListeners, tag.get());
-         if(e->ExceptionCheck())
-         {
-            ALOGE("Exception occurred");
-            kill_client(nat);
-         }
-      }
-   }
-}
-
-static void nfc_jni_init_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)pContext;
-
-   LOG_CALLBACK("nfc_jni_init_callback", status);
-
-   pContextData->status = status;
-   sem_post(&pContextData->sem);
-}
-
-static void nfc_jni_deinit_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)pContext;
-
-   LOG_CALLBACK("nfc_jni_deinit_callback", status);
-
-   pContextData->status = status;
-   sem_post(&pContextData->sem);
-}
-
-/* Set Secure Element mode callback*/
-static void nfc_jni_smartMX_setModeCb (void*            pContext,
-                                       phLibNfc_Handle  /*hSecureElement*/,
-                                       NFCSTATUS        status)
-{
-   struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)pContext;
-
-   LOG_CALLBACK("nfc_jni_smartMX_setModeCb", status);
-
-   pContextData->status = status;
-   sem_post(&pContextData->sem);
-}
-
-/* Card Emulation callback */
-static void nfc_jni_transaction_callback(void *context,
-   phLibNfc_eSE_EvtType_t evt_type, phLibNfc_Handle /*handle*/,
-   phLibNfc_uSeEvtInfo_t *evt_info, NFCSTATUS status)
-{
-    JNIEnv *e;
-    jobject tmp_array = NULL;
-    jobject mifare_block = NULL;
-    struct nfc_jni_native_data *nat;
-    phNfc_sData_t *aid;
-    phNfc_sData_t *mifare_command;
-    struct nfc_jni_callback_data *pCallbackData;
-    int i=0;
-
-    LOG_CALLBACK("nfc_jni_transaction_callback", status);
-
-    nat = (struct nfc_jni_native_data *)context;
-
-    nat->vm->GetEnv( (void **)&e, nat->env_version);
-
-    if(status == NFCSTATUS_SUCCESS)
-    {
-        switch(evt_type)
-        {
-            case phLibNfc_eSE_EvtStartTransaction:
-            {
-                TRACE("> SE EVT_START_TRANSACTION");
-            }break;
-
-            case phLibNfc_eSE_EvtApduReceived:
-            {
-                TRACE("> SE EVT_APDU_RECEIVED");
-            }break;
-
-            case phLibNfc_eSE_EvtCardRemoval:
-            {
-                TRACE("> SE EVT_EMV_CARD_REMOVAL");
-            }break;
-
-            case phLibNfc_eSE_EvtMifareAccess:
-            {
-                TRACE("> SE EVT_MIFARE_ACCESS");
-            }break;
-
-            case phLibNfc_eSE_EvtFieldOn:
-            {
-                TRACE("> SE EVT_FIELD_ON");
-                e->CallVoidMethod(nat->manager, cached_NfcManager_notifyRfFieldActivated);
-            }break;
-
-            case phLibNfc_eSE_EvtFieldOff:
-            {
-                TRACE("> SE EVT_FIELD_OFF");
-                e->CallVoidMethod(nat->manager, cached_NfcManager_notifyRfFieldDeactivated);
-            }break;
-
-            default:
-            {
-                TRACE("Unknown SE event");
-            }break;
-        }
-    }
-    else
-    {
-        ALOGE("SE transaction notification error");
-        goto error;
-    }
-
-    /* Function finished, now clean and return */
-    goto clean_and_return;
-
- error:
-    /* In case of error, just discard the notification */
-    ALOGE("Failed to send SE transaction notification");
-    e->ExceptionClear();
-
- clean_and_return:
-    if(tmp_array != NULL)
-    {
-       e->DeleteLocalRef(tmp_array);
-    }
-}
-
-static void nfc_jni_se_set_mode_callback(void *pContext,
-   phLibNfc_Handle /*handle*/, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pContextData =  (struct nfc_jni_callback_data*)pContext;
-
-   LOG_CALLBACK("nfc_jni_se_set_mode_callback", status);
-
-   pContextData->status = status;
-   sem_post(&pContextData->sem);
-}
-
-/*
- * NFCManager methods
- */
-
-static void nfc_jni_start_discovery_locked(struct nfc_jni_native_data *nat, bool resume)
-{
-   NFCSTATUS ret;
-   struct nfc_jni_callback_data cb_data;
-   int numRetries = 3;
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-   /* Reset the PN544 ISO XCHG / sw watchdog timeouts */
-   nfc_jni_reset_timeout_values();
-
-   /* Reload the p2p modes */
-   nat->discovery_cfg.NfcIP_Mode = nat->p2p_initiator_modes;  //initiator
-   nat->discovery_cfg.NfcIP_Target_Mode = nat->p2p_target_modes;  //target
-   nat->discovery_cfg.NfcIP_Tgt_Disable = FALSE;
-
-   /* Reset device connected flag */
-   device_connected_flag = 0;
-configure:
-   /* Start Polling loop */
-   TRACE("******  Start NFC Discovery ******");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Mgt_ConfigureDiscovery(resume ? NFC_DISCOVERY_RESUME : NFC_DISCOVERY_CONFIG,
-      nat->discovery_cfg, nfc_jni_discover_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   TRACE("phLibNfc_Mgt_ConfigureDiscovery(%s-%s-%s-%s-%s-%s, %s-%x-%x) returned 0x%08x\n",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443A==TRUE?"3A":"",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443B==TRUE?"3B":"",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica212==TRUE?"F2":"",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica424==TRUE?"F4":"",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableNfcActive==TRUE?"NFC":"",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso15693==TRUE?"RFID":"",
-      nat->discovery_cfg.PollDevInfo.PollCfgInfo.DisableCardEmulation==FALSE?"CE":"",
-      nat->discovery_cfg.NfcIP_Mode, nat->discovery_cfg.Duration, ret);
-
-   if (ret == NFCSTATUS_BUSY && numRetries-- > 0)
-   {
-      TRACE("ConfigDiscovery BUSY, retrying");
-      usleep(1000000);
-      goto configure;
-   }
-
-   if(ret != NFCSTATUS_PENDING)
-   {
-      emergency_recovery(nat);
-      goto clean_and_return;
-   }
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-}
-
-static void nfc_jni_stop_discovery_locked(struct nfc_jni_native_data *nat)
-{
-   phLibNfc_sADD_Cfg_t discovery_cfg;
-   NFCSTATUS ret;
-   struct nfc_jni_callback_data cb_data;
-   int numRetries = 3;
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   discovery_cfg.PollDevInfo.PollEnabled = 0;
-   discovery_cfg.NfcIP_Mode = phNfc_eDefaultP2PMode;
-   discovery_cfg.NfcIP_Target_Mode = 0;
-   discovery_cfg.NfcIP_Tgt_Disable = TRUE;
-
-configure:
-   /* Start Polling loop */
-   TRACE("******  Stop NFC Discovery ******");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Mgt_ConfigureDiscovery(NFC_DISCOVERY_CONFIG,discovery_cfg, nfc_jni_discover_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   TRACE("phLibNfc_Mgt_ConfigureDiscovery(%s-%s-%s-%s-%s-%s, %s-%x-%x) returned 0x%08x\n",
-      discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443A==TRUE?"3A":"",
-      discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443B==TRUE?"3B":"",
-      discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica212==TRUE?"F2":"",
-      discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica424==TRUE?"F4":"",
-      discovery_cfg.PollDevInfo.PollCfgInfo.EnableNfcActive==TRUE?"NFC":"",
-      discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso15693==TRUE?"RFID":"",
-      discovery_cfg.PollDevInfo.PollCfgInfo.DisableCardEmulation==FALSE?"CE":"",
-      discovery_cfg.NfcIP_Mode, discovery_cfg.Duration, ret);
-
-   if (ret == NFCSTATUS_BUSY && numRetries-- > 0)
-   {
-      TRACE("ConfigDiscovery BUSY, retrying");
-      usleep(1000000);
-      goto configure;
-   }
-
-   if(ret != NFCSTATUS_PENDING)
-   {
-      ALOGE("[STOP] ConfigDiscovery returned %x", ret);
-      emergency_recovery(nat);
-   }
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-}
-
-
-static void com_android_nfc_NfcManager_disableDiscovery(JNIEnv *e, jobject o)
-{
-    struct nfc_jni_native_data *nat;
-
-    CONCURRENCY_LOCK();
-
-    /* Retrieve native structure address */
-    nat = nfc_jni_get_nat(e, o);
-
-    nfc_jni_stop_discovery_locked(nat);
-
-    CONCURRENCY_UNLOCK();
-
-}
-
-// TODO: use enable_lptd
-static void com_android_nfc_NfcManager_enableDiscovery(JNIEnv *e, jobject o, jint modes,
-        jboolean, jboolean reader_mode, jboolean enable_p2p, jboolean restart)
-{
-    NFCSTATUS ret;
-    struct nfc_jni_native_data *nat;
-
-    CONCURRENCY_LOCK();
-
-    nat = nfc_jni_get_nat(e, o);
-
-   /* Register callback for remote device notifications.
-    * Must re-register every time we turn on discovery, since other operations
-    * (such as opening the Secure Element) can change the remote device
-    * notification callback*/
-   REENTRANCE_LOCK();
-   ret = phLibNfc_RemoteDev_NtfRegister(&nat->registry_info, nfc_jni_Discovery_notification_callback, (void *)nat);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-        ALOGD("pphLibNfc_RemoteDev_NtfRegister returned 0x%02x",ret);
-        goto clean_and_return;
-   }
-   TRACE("phLibNfc_RemoteDev_NtfRegister(%s-%s-%s-%s-%s-%s-%s-%s) returned 0x%x\n",
-      nat->registry_info.Jewel==TRUE?"J":"",
-      nat->registry_info.MifareUL==TRUE?"UL":"",
-      nat->registry_info.MifareStd==TRUE?"Mi":"",
-      nat->registry_info.Felica==TRUE?"F":"",
-      nat->registry_info.ISO14443_4A==TRUE?"4A":"",
-      nat->registry_info.ISO14443_4B==TRUE?"4B":"",
-      nat->registry_info.NFC==TRUE?"P2P":"",
-      nat->registry_info.ISO15693==TRUE?"R":"", ret);
-
-    if (modes != 0)
-    {
-
-        if (enable_p2p)
-        {
-            nat->p2p_initiator_modes = phNfc_eP2P_ALL;
-            nat->p2p_target_modes = 0x0E; // All passive except 106, active
-            nat->discovery_cfg.Duration = 300000; /* in ms */
-        }
-        else
-        {
-            nat->p2p_initiator_modes = 0;
-            nat->p2p_target_modes = 0;
-            nat->discovery_cfg.Duration = 200000; /* in ms */
-
-        }
-
-        if (reader_mode)
-        {
-            nat->discovery_cfg.PollDevInfo.PollCfgInfo.DisableCardEmulation = TRUE;
-            nat->discovery_cfg.Duration = 200000; /* in ms */
-        }
-        else
-        {
-            nat->discovery_cfg.PollDevInfo.PollCfgInfo.DisableCardEmulation = FALSE;
-            nat->discovery_cfg.Duration = 300000; /* in ms */
-        }
-        nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443A = (modes & 0x01) != 0;
-        nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443B = (modes & 0x02) != 0;
-        nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica212 = (modes & 0x04) != 0;
-        nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica424 = (modes & 0x04) != 0;
-        nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso15693 = (modes & 0x08) != 0;
-    }
-
-    nfc_jni_start_discovery_locked(nat, false);
-clean_and_return:
-    CONCURRENCY_UNLOCK();
-}
-
-static void com_android_nfc_NfcManager_doResetTimeouts(JNIEnv*, jobject) {
-    CONCURRENCY_LOCK();
-    nfc_jni_reset_timeout_values();
-    CONCURRENCY_UNLOCK();
-}
-
-static void setFelicaTimeout(jint timeout) {
-   // The Felica timeout is configurable in the PN544 upto a maximum of 255 ms.
-   // It can be set to 0 to disable the timeout altogether, in which case we
-   // use the sw watchdog as a fallback.
-   if (timeout <= 255) {
-       phLibNfc_SetFelicaTimeout(timeout);
-   } else {
-       // Disable hw timeout, use sw watchdog for timeout
-       phLibNfc_SetFelicaTimeout(0);
-       phLibNfc_SetHciTimeout(timeout);
-   }
-
-}
-// Calculates ceiling log2 of value
-static unsigned int log2(int value) {
-    unsigned int ret = 0;
-    bool isPowerOf2 = ((value & (value - 1)) == 0);
-    while ( (value >> ret) > 1 ) ret++;
-    if (!isPowerOf2) ret++;
-    return ret;
-}
-
-// The Iso/Mifare Xchg timeout in PN544 is a non-linear function over X
-// spanning 0 - 4.9s: timeout in seconds = (256 * 16 / 13560000) * 2 ^ X
-//
-// We keep the constant part of the formula in a static; note the factor
-// 1000 off, which is due to the fact that the formula calculates seconds,
-// but this method gets milliseconds as an argument.
-static double nxp_nfc_timeout_factor = (256 * 16) / 13560.0;
-
-static int calcTimeout(int timeout_in_ms) {
-   // timeout = (256 * 16 / 13560000) * 2 ^ X
-   // First find the first X for which timeout > requested timeout
-   return (log2(ceil(((double) timeout_in_ms) / nxp_nfc_timeout_factor)));
-}
-
-static void setIsoDepTimeout(jint timeout) {
-   if (timeout <= 4900) {
-       int value = calcTimeout(timeout);
-       // Then re-compute the actual timeout based on X
-       double actual_timeout = nxp_nfc_timeout_factor * (1 << value);
-       // Set the sw watchdog a bit longer (The PN544 timeout is very accurate,
-       // but it will take some time to get back through the sw layers.
-       // 500 ms should be enough).
-       phLibNfc_SetHciTimeout(ceil(actual_timeout + 500));
-       value |= 0x10; // bit 4 to enable timeout
-       phLibNfc_SetIsoXchgTimeout(value);
-   }
-   else {
-       // Also note that if we desire a timeout > 4.9s, the Iso Xchg timeout
-       // must be disabled completely, to prevent the PN544 from aborting
-       // the transaction. We reuse the HCI sw watchdog to catch the timeout
-       // in that case.
-       phLibNfc_SetIsoXchgTimeout(0x00);
-       phLibNfc_SetHciTimeout(timeout);
-   }
-}
-
-static void setNfcATimeout(jint timeout) {
-   if (timeout <= 4900) {
-       int value = calcTimeout(timeout);
-       phLibNfc_SetMifareRawTimeout(value);
-   }
-   else {
-       // Disable mifare raw timeout, use HCI sw watchdog instead
-       phLibNfc_SetMifareRawTimeout(0x00);
-       phLibNfc_SetHciTimeout(timeout);
-   }
-}
-
-static bool com_android_nfc_NfcManager_doSetTimeout(JNIEnv*, jobject,
-        jint tech, jint timeout) {
-    bool success = false;
-    CONCURRENCY_LOCK();
-    if (timeout <= 0) {
-        ALOGE("Timeout must be positive.");
-        success = false;
-    } else {
-        switch (tech) {
-            case TARGET_TYPE_MIFARE_CLASSIC:
-            case TARGET_TYPE_MIFARE_UL:
-                // Intentional fall-through, Mifare UL, Classic
-                // transceive just uses raw 3A frames
-            case TARGET_TYPE_ISO14443_3A:
-                setNfcATimeout(timeout);
-                success = true;
-                break;
-            case TARGET_TYPE_ISO14443_4:
-                setIsoDepTimeout(timeout);
-                success = true;
-                break;
-            case TARGET_TYPE_FELICA:
-                setFelicaTimeout(timeout);
-                success = true;
-                break;
-            default:
-                ALOGW("doSetTimeout: Timeout not supported for tech %d", tech);
-                success = false;
-        }
-    }
-    CONCURRENCY_UNLOCK();
-    return success;
-}
-
-static jint com_android_nfc_NfcManager_doGetTimeout(JNIEnv*, jobject,
-        jint tech) {
-    int timeout = -1;
-    CONCURRENCY_LOCK();
-    switch (tech) {
-        case TARGET_TYPE_MIFARE_CLASSIC:
-        case TARGET_TYPE_MIFARE_UL:
-            // Intentional fall-through, Mifare UL, Classic
-            // transceive just uses raw 3A frames
-        case TARGET_TYPE_ISO14443_3A:
-            timeout = phLibNfc_GetMifareRawTimeout();
-            if (timeout == 0) {
-                timeout = phLibNfc_GetHciTimeout();
-            } else {
-                // Timeout returned from libnfc needs conversion to ms
-                timeout = (nxp_nfc_timeout_factor * (1 << timeout));
-            }
-            break;
-        case TARGET_TYPE_ISO14443_4:
-            timeout = phLibNfc_GetIsoXchgTimeout() & 0x0F; // lower 4 bits only
-            if (timeout == 0) {
-                timeout = phLibNfc_GetHciTimeout();
-            } else {
-                // Timeout returned from libnfc needs conversion to ms
-                timeout = (nxp_nfc_timeout_factor * (1 << timeout));
-            }
-            break;
-        case TARGET_TYPE_FELICA:
-            timeout = phLibNfc_GetFelicaTimeout();
-            if (timeout == 0) {
-                timeout = phLibNfc_GetHciTimeout();
-            } else {
-                // Felica timeout already in ms
-            }
-            break;
-        default:
-            ALOGW("doGetTimeout: Timeout not supported for tech %d", tech);
-            break;
-    }
-    CONCURRENCY_UNLOCK();
-    return timeout;
-}
-
-
-static jboolean com_android_nfc_NfcManager_init_native_struc(JNIEnv *e, jobject o)
-{
-   NFCSTATUS status;
-   struct nfc_jni_native_data *nat = NULL;
-   jclass cls;
-   jobject obj;
-   jfieldID f;
-
-   TRACE("******  Init Native Structure ******");
-
-   /* Initialize native structure */
-   nat = (nfc_jni_native_data*)malloc(sizeof(struct nfc_jni_native_data));
-   if(nat == NULL)
-   {
-      ALOGD("malloc of nfc_jni_native_data failed");
-      return FALSE;
-   }
-   memset(nat, 0, sizeof(*nat));
-   e->GetJavaVM(&(nat->vm));
-   nat->env_version = e->GetVersion();
-   nat->manager = e->NewGlobalRef(o);
-
-   cls = e->GetObjectClass(o);
-   f = e->GetFieldID(cls, "mNative", "J");
-   e->SetLongField(o, f, (jlong)nat);
-
-   /* Initialize native cached references */
-   cached_NfcManager_notifyNdefMessageListeners = e->GetMethodID(cls,
-      "notifyNdefMessageListeners","(Lcom/android/nfc/dhimpl/NativeNfcTag;)V");
-
-   cached_NfcManager_notifyLlcpLinkActivation = e->GetMethodID(cls,
-      "notifyLlcpLinkActivation","(Lcom/android/nfc/dhimpl/NativeP2pDevice;)V");
-
-   cached_NfcManager_notifyLlcpLinkDeactivated = e->GetMethodID(cls,
-      "notifyLlcpLinkDeactivated","(Lcom/android/nfc/dhimpl/NativeP2pDevice;)V");
-
-   cached_NfcManager_notifyRfFieldActivated = e->GetMethodID(cls,
-      "notifyRfFieldActivated", "()V");
-
-   cached_NfcManager_notifyRfFieldDeactivated = e->GetMethodID(cls,
-      "notifyRfFieldDeactivated", "()V");
-
-   if(nfc_jni_cache_object(e,"com/android/nfc/dhimpl/NativeNfcTag",&(nat->cached_NfcTag)) == -1)
-   {
-      ALOGD("Native Structure initialization failed");
-      return FALSE;
-   }
-
-   if(nfc_jni_cache_object(e,"com/android/nfc/dhimpl/NativeP2pDevice",&(nat->cached_P2pDevice)) == -1)
-   {
-      ALOGD("Native Structure initialization failed");
-      return FALSE;
-   }
-   TRACE("****** Init Native Structure OK ******");
-   return TRUE;
-
-}
-
-/* Init/Deinit method */
-static jboolean com_android_nfc_NfcManager_initialize(JNIEnv *e, jobject o)
-{
-   struct nfc_jni_native_data *nat = NULL;
-   int init_result = JNI_FALSE;
-#ifdef TNFC_EMULATOR_ONLY
-   char value[PROPERTY_VALUE_MAX];
-#endif
-   jboolean result;
-
-   CONCURRENCY_LOCK();
-
-#ifdef TNFC_EMULATOR_ONLY
-   if (!property_get("ro.kernel.qemu", value, 0))
-   {
-      ALOGE("NFC Initialization failed: not running in an emulator\n");
-      goto clean_and_return;
-   }
-#endif
-
-   /* Retrieve native structure address */
-   nat = nfc_jni_get_nat(e, o);
-
-   nat->seId = SMX_SECURE_ELEMENT_ID;
-
-   nat->lto = 150;  // LLCP_LTO
-   nat->miu = 128; // LLCP_MIU
-   // WKS indicates well-known services; 1 << sap for each supported SAP.
-   // We support Link mgmt (SAP 0), SDP (SAP 1) and SNEP (SAP 4)
-   nat->wks = 0x13;  // LLCP_WKS
-   nat->opt = 0;  // LLCP_OPT
-   nat->p2p_initiator_modes = phNfc_eP2P_ALL;
-   nat->p2p_target_modes = 0x0E; // All passive except 106, active
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443A = TRUE;
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso14443B = TRUE;
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica212 = TRUE;
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableFelica424 = TRUE;
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableIso15693 = TRUE;
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.EnableNfcActive = TRUE;
-   nat->discovery_cfg.PollDevInfo.PollCfgInfo.DisableCardEmulation = FALSE;
-
-   nat->registry_info.MifareUL = TRUE;
-   nat->registry_info.MifareStd = TRUE;
-   nat->registry_info.ISO14443_4A = TRUE;
-   nat->registry_info.ISO14443_4B = TRUE;
-   nat->registry_info.Jewel = TRUE;
-   nat->registry_info.Felica = TRUE;
-   nat->registry_info.NFC = TRUE;
-   nat->registry_info.ISO15693 = TRUE;
-
-   exported_nat = nat;
-
-   /* Perform the initialization */
-   init_result = nfc_jni_initialize(nat);
-
-clean_and_return:
-   CONCURRENCY_UNLOCK();
-
-   /* Convert the result and return */
-   return (init_result==TRUE)?JNI_TRUE:JNI_FALSE;
-}
-
-static jboolean com_android_nfc_NfcManager_deinitialize(JNIEnv *e, jobject o)
-{
-   struct timespec ts;
-   NFCSTATUS status;
-   int result = JNI_FALSE;
-   struct nfc_jni_native_data *nat;
-   int bStackReset = FALSE;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   /* Retrieve native structure address */
-   nat = nfc_jni_get_nat(e, o);
-
-   /* Clear previous configuration */
-   memset(&nat->discovery_cfg, 0, sizeof(phLibNfc_sADD_Cfg_t));
-   memset(&nat->registry_info, 0, sizeof(phLibNfc_Registry_Info_t));
-
-   /* Create the local semaphore */
-   if (nfc_cb_data_init(&cb_data, NULL))
-   {
-      TRACE("phLibNfc_Mgt_DeInitialize()");
-      REENTRANCE_LOCK();
-      status = phLibNfc_Mgt_DeInitialize(gHWRef, nfc_jni_deinit_callback, (void *)&cb_data);
-      REENTRANCE_UNLOCK();
-      if (status == NFCSTATUS_PENDING)
-      {
-         TRACE("phLibNfc_Mgt_DeInitialize() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-         clock_gettime(CLOCK_REALTIME, &ts);
-         ts.tv_sec += 5;
-
-         /* Wait for callback response */
-         if(sem_timedwait(&cb_data.sem, &ts) == -1)
-         {
-            ALOGW("Operation timed out");
-            bStackReset = TRUE;
-         }
-
-         if(cb_data.status != NFCSTATUS_SUCCESS)
-         {
-            ALOGE("Failed to deinit the stack");
-            bStackReset = TRUE;
-         }
-      }
-      else
-      {
-         TRACE("phLibNfc_Mgt_DeInitialize() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-         bStackReset = TRUE;
-      }
-      nfc_cb_data_deinit(&cb_data);
-   }
-   else
-   {
-       ALOGE("Failed to create semaphore (errno=0x%08x)", errno);
-       bStackReset = TRUE;
-   }
-
-   kill_client(nat);
-
-   if(bStackReset == TRUE)
-   {
-      /* Complete deinit. failed, try hard restart of NFC */
-      ALOGW("Reseting stack...");
-      emergency_recovery(nat);
-   }
-
-   result = nfc_jni_unconfigure_driver(nat);
-
-   TRACE("NFC Deinitialized");
-
-   CONCURRENCY_UNLOCK();
-
-   return TRUE;
-}
-
-/* Llcp methods */
-
-static jboolean com_android_nfc_NfcManager_doCheckLlcp(JNIEnv *e, jobject o)
-{
-   NFCSTATUS ret;
-   bool freeData = false;
-   jboolean result = JNI_FALSE;
-   struct nfc_jni_native_data *nat;
-   struct nfc_jni_callback_data  *cb_data;
-
-
-   CONCURRENCY_LOCK();
-
-   /* Memory allocation for cb_data
-    * This is on the heap because it is used by libnfc
-    * even after this call has succesfully finished. It is only freed
-    * upon link closure in nfc_jni_llcp_linkStatus_callback.
-    */
-   cb_data = (struct nfc_jni_callback_data*) malloc (sizeof(nfc_jni_callback_data));
-
-   /* Retrieve native structure address */
-   nat = nfc_jni_get_nat(e, o);
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(cb_data, (void*)nat))
-   {
-      goto clean_and_return;
-   }
-
-   /* Check LLCP compliancy */
-   TRACE("phLibNfc_Llcp_CheckLlcp(hLlcpHandle=0x%08x)", hLlcpHandle);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_CheckLlcp(hLlcpHandle,
-                                 nfc_jni_checkLlcp_callback,
-                                 nfc_jni_llcp_linkStatus_callback,
-                                 (void*)cb_data);
-   REENTRANCE_UNLOCK();
-   /* In case of a NFCIP return NFCSTATUS_SUCCESS and in case of an another protocol
-    * NFCSTATUS_PENDING. In this case NFCSTATUS_SUCCESS will also cause the callback. */
-   if(ret != NFCSTATUS_PENDING && ret != NFCSTATUS_SUCCESS)
-   {
-      ALOGE("phLibNfc_Llcp_CheckLlcp() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      freeData = true;
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Llcp_CheckLlcp() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data->sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data->status == NFCSTATUS_SUCCESS)
-   {
-      result = JNI_TRUE;
-   }
-
-clean_and_return:
-   nfc_cb_data_deinit(cb_data);
-   if (freeData) {
-       free(cb_data);
-   }
-   CONCURRENCY_UNLOCK();
-   return result;
-}
-
-static jboolean com_android_nfc_NfcManager_doActivateLlcp(JNIEnv*, jobject)
-{
-   NFCSTATUS ret;
-   TRACE("phLibNfc_Llcp_Activate(hRemoteDevice=0x%08x)", hLlcpHandle);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Activate(hLlcpHandle);
-   REENTRANCE_UNLOCK();
-   if(ret == NFCSTATUS_SUCCESS)
-   {
-      TRACE("phLibNfc_Llcp_Activate() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return JNI_TRUE;
-   }
-   else
-   {
-      ALOGE("phLibNfc_Llcp_Activate() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      return JNI_FALSE;
-   }
-}
-
-
-
-static jobject com_android_nfc_NfcManager_doCreateLlcpConnectionlessSocket(JNIEnv *e, jobject o,
-        jint nSap, jstring sn)
-{
-   NFCSTATUS ret;
-   jobject connectionlessSocket = NULL;
-   phLibNfc_Handle hLlcpSocket;
-   struct nfc_jni_native_data *nat;
-   phNfc_sData_t sWorkingBuffer = {NULL, 0};
-   phNfc_sData_t serviceName = {NULL, 0};
-   phLibNfc_Llcp_sLinkParameters_t sParams;
-   jclass clsNativeConnectionlessSocket;
-   jfieldID f;
-
-   /* Retrieve native structure address */
-   nat = nfc_jni_get_nat(e, o);
-
-   /* Allocate Working buffer length */
-   phLibNfc_Llcp_GetLocalInfo(hLlcpHandle, &sParams);
-   sWorkingBuffer.length = sParams.miu + 1; // extra byte for SAP
-   sWorkingBuffer.buffer = (uint8_t*)malloc(sWorkingBuffer.length);
-
-   /* Create socket */
-   TRACE("phLibNfc_Llcp_Socket(eType=phFriNfc_LlcpTransport_eConnectionLess, ...)");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Socket(phFriNfc_LlcpTransport_eConnectionLess,
-                              NULL,
-                              &sWorkingBuffer,
-                              &hLlcpSocket,
-                              nfc_jni_llcp_transport_socket_err_callback,
-                              (void*)nat);
-   REENTRANCE_UNLOCK();
-
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      lastErrorStatus = ret;
-      ALOGE("phLibNfc_Llcp_Socket() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      goto error;
-   }
-   TRACE("phLibNfc_Llcp_Socket() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Service socket */
-   if (sn == NULL) {
-       serviceName.buffer = NULL;
-       serviceName.length = 0;
-   } else {
-       serviceName.buffer = (uint8_t*)e->GetStringUTFChars(sn, NULL);
-       serviceName.length = (uint32_t)e->GetStringUTFLength(sn);
-   }
-
-   /* Bind socket */
-   TRACE("phLibNfc_Llcp_Bind(hSocket=0x%08x, nSap=0x%02x)", hLlcpSocket, nSap);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Bind(hLlcpSocket,nSap, &serviceName);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      lastErrorStatus = ret;
-      ALOGE("phLibNfc_Llcp_Bind() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      /* Close socket created */
-      REENTRANCE_LOCK();
-      ret = phLibNfc_Llcp_Close(hLlcpSocket);
-      REENTRANCE_UNLOCK();
-      goto error;
-   }
-   TRACE("phLibNfc_Llcp_Bind() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-
-   /* Create new NativeLlcpConnectionlessSocket object */
-   if(nfc_jni_cache_object(e,"com/android/nfc/dhimpl/NativeLlcpConnectionlessSocket",&(connectionlessSocket)) == -1)
-   {
-      goto error;
-   }
-
-   /* Get NativeConnectionless class object */
-   clsNativeConnectionlessSocket = e->GetObjectClass(connectionlessSocket);
-   if(e->ExceptionCheck())
-   {
-      goto error;
-   }
-
-   /* Set socket handle */
-   f = e->GetFieldID(clsNativeConnectionlessSocket, "mHandle", "I");
-   e->SetIntField(connectionlessSocket, f,(jint)hLlcpSocket);
-   TRACE("Connectionless socket Handle = %02x\n",hLlcpSocket);
-
-   /* Set the miu link of the connectionless socket */
-   f = e->GetFieldID(clsNativeConnectionlessSocket, "mLinkMiu", "I");
-   e->SetIntField(connectionlessSocket, f,(jint)PHFRINFC_LLCP_MIU_DEFAULT);
-   TRACE("Connectionless socket Link MIU = %d\n",PHFRINFC_LLCP_MIU_DEFAULT);
-
-   /* Set socket SAP */
-   f = e->GetFieldID(clsNativeConnectionlessSocket, "mSap", "I");
-   e->SetIntField(connectionlessSocket, f,(jint)nSap);
-   TRACE("Connectionless socket SAP = %d\n",nSap);
-
-   return connectionlessSocket;
-error:
-   if (serviceName.buffer != NULL) {
-      e->ReleaseStringUTFChars(sn, (const char *)serviceName.buffer);
-   }
-
-   if (sWorkingBuffer.buffer != NULL) {
-       free(sWorkingBuffer.buffer);
-   }
-
-   return NULL;
-}
-
-static jobject com_android_nfc_NfcManager_doCreateLlcpServiceSocket(JNIEnv *e, jobject o, jint nSap, jstring sn, jint miu, jint rw, jint linearBufferLength)
-{
-   NFCSTATUS ret;
-   phLibNfc_Handle hLlcpSocket;
-   phLibNfc_Llcp_sSocketOptions_t sOptions;
-   phNfc_sData_t sWorkingBuffer;
-   phNfc_sData_t serviceName;
-   struct nfc_jni_native_data *nat;
-   jobject serviceSocket = NULL;
-   jclass clsNativeLlcpServiceSocket;
-   jfieldID f;
-
-   /* Retrieve native structure address */
-   nat = nfc_jni_get_nat(e, o);
-
-   /* Set Connection Oriented socket options */
-   sOptions.miu = miu;
-   sOptions.rw  = rw;
-
-   /* Allocate Working buffer length */
-   sWorkingBuffer.length = (miu*rw)+ miu + linearBufferLength;
-   sWorkingBuffer.buffer = (uint8_t*)malloc(sWorkingBuffer.length);
-
-
-   /* Create socket */
-   TRACE("phLibNfc_Llcp_Socket(hRemoteDevice=0x%08x, eType=phFriNfc_LlcpTransport_eConnectionOriented, ...)", hLlcpHandle);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Socket(phFriNfc_LlcpTransport_eConnectionOriented,
-                              &sOptions,
-                              &sWorkingBuffer,
-                              &hLlcpSocket,
-                              nfc_jni_llcp_transport_socket_err_callback,
-                              (void*)nat);
-   REENTRANCE_UNLOCK();
-
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      ALOGE("phLibNfc_Llcp_Socket() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      lastErrorStatus = ret;
-      goto error;
-   }
-   TRACE("phLibNfc_Llcp_Socket() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Service socket */
-   if (sn == NULL) {
-       serviceName.buffer = NULL;
-       serviceName.length = 0;
-   } else {
-       serviceName.buffer = (uint8_t*)e->GetStringUTFChars(sn, NULL);
-       serviceName.length = (uint32_t)e->GetStringUTFLength(sn);
-   }
-
-   /* Bind socket */
-   TRACE("phLibNfc_Llcp_Bind(hSocket=0x%08x, nSap=0x%02x)", hLlcpSocket, nSap);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Bind(hLlcpSocket,nSap, &serviceName);
-   REENTRANCE_UNLOCK();
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      lastErrorStatus = ret;
-      ALOGE("phLibNfc_Llcp_Bind() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      /* Close socket created */
-      ret = phLibNfc_Llcp_Close(hLlcpSocket);
-      goto error;
-   }
-   TRACE("phLibNfc_Llcp_Bind() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   TRACE("phLibNfc_Llcp_Listen(hSocket=0x%08x, ...)", hLlcpSocket);
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Listen( hLlcpSocket,
-                               nfc_jni_llcp_transport_listen_socket_callback,
-                               (void*)hLlcpSocket);
-   REENTRANCE_UNLOCK();
-
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      ALOGE("phLibNfc_Llcp_Listen() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      lastErrorStatus = ret;
-      /* Close created socket */
-      REENTRANCE_LOCK();
-      ret = phLibNfc_Llcp_Close(hLlcpSocket);
-      REENTRANCE_UNLOCK();
-      goto error;
-   }
-   TRACE("phLibNfc_Llcp_Listen() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Create new NativeLlcpServiceSocket object */
-   if(nfc_jni_cache_object(e,"com/android/nfc/dhimpl/NativeLlcpServiceSocket",&(serviceSocket)) == -1)
-   {
-      ALOGE("Llcp Socket object creation error");
-      goto error;
-   }
-
-   /* Get NativeLlcpServiceSocket class object */
-   clsNativeLlcpServiceSocket = e->GetObjectClass(serviceSocket);
-   if(e->ExceptionCheck())
-   {
-      ALOGE("Llcp Socket get object class error");
-      goto error;
-   }
-
-   /* Set socket handle */
-   f = e->GetFieldID(clsNativeLlcpServiceSocket, "mHandle", "I");
-   e->SetIntField(serviceSocket, f,(jint)hLlcpSocket);
-   TRACE("Service socket Handle = %02x\n",hLlcpSocket);
-
-   /* Set socket linear buffer length */
-   f = e->GetFieldID(clsNativeLlcpServiceSocket, "mLocalLinearBufferLength", "I");
-   e->SetIntField(serviceSocket, f,(jint)linearBufferLength);
-   TRACE("Service socket Linear buffer length = %02x\n",linearBufferLength);
-
-   /* Set socket MIU */
-   f = e->GetFieldID(clsNativeLlcpServiceSocket, "mLocalMiu", "I");
-   e->SetIntField(serviceSocket, f,(jint)miu);
-   TRACE("Service socket MIU = %d\n",miu);
-
-   /* Set socket RW */
-   f = e->GetFieldID(clsNativeLlcpServiceSocket, "mLocalRw", "I");
-   e->SetIntField(serviceSocket, f,(jint)rw);
-   TRACE("Service socket RW = %d\n",rw);
-
-   return serviceSocket;
-error:
-   if (serviceName.buffer != NULL) {
-      e->ReleaseStringUTFChars(sn, (const char *)serviceName.buffer);
-   }
-   return NULL;
-}
-
-static jobject com_android_nfc_NfcManager_doCreateLlcpSocket(JNIEnv *e, jobject o, jint nSap, jint miu, jint rw, jint linearBufferLength)
-{
-   jobject clientSocket = NULL;
-   NFCSTATUS ret;
-   phLibNfc_Handle hLlcpSocket;
-   phLibNfc_Llcp_sSocketOptions_t sOptions;
-   phNfc_sData_t sWorkingBuffer;
-   struct nfc_jni_native_data *nat;
-   jclass clsNativeLlcpSocket;
-   jfieldID f;
-
-   /* Retrieve native structure address */
-   nat = nfc_jni_get_nat(e, o);
-
-   /* Set Connection Oriented socket options */
-   sOptions.miu = miu;
-   sOptions.rw  = rw;
-
-   /* Allocate Working buffer length */
-   sWorkingBuffer.length = (miu*rw)+ miu + linearBufferLength;
-   sWorkingBuffer.buffer = (uint8_t*)malloc(sWorkingBuffer.length);
-
-   /* Create socket */
-   TRACE("phLibNfc_Llcp_Socket(eType=phFriNfc_LlcpTransport_eConnectionOriented, ...)");
-   REENTRANCE_LOCK();
-   ret = phLibNfc_Llcp_Socket(phFriNfc_LlcpTransport_eConnectionOriented,
-                              &sOptions,
-                              &sWorkingBuffer,
-                              &hLlcpSocket,
-                              nfc_jni_llcp_transport_socket_err_callback,
-                              (void*)nat);
-   REENTRANCE_UNLOCK();
-
-   if(ret != NFCSTATUS_SUCCESS)
-   {
-      ALOGE("phLibNfc_Llcp_Socket() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-      lastErrorStatus = ret;
-      return NULL;
-   }
-   TRACE("phLibNfc_Llcp_Socket() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-   /* Create new NativeLlcpSocket object */
-   if(nfc_jni_cache_object(e,"com/android/nfc/dhimpl/NativeLlcpSocket",&(clientSocket)) == -1)
-   {
-      ALOGE("Llcp socket object creation error");
-      return NULL;
-   }
-
-   /* Get NativeConnectionless class object */
-   clsNativeLlcpSocket = e->GetObjectClass(clientSocket);
-   if(e->ExceptionCheck())
-   {
-      ALOGE("Get class object error");
-      return NULL;
-   }
-
-   /* Test if an SAP number is present */
-   if(nSap != 0)
-   {
-      /* Bind socket */
-      TRACE("phLibNfc_Llcp_Bind(hSocket=0x%08x, nSap=0x%02x)", hLlcpSocket, nSap);
-      REENTRANCE_LOCK();
-      ret = phLibNfc_Llcp_Bind(hLlcpSocket,nSap, NULL);
-      REENTRANCE_UNLOCK();
-      if(ret != NFCSTATUS_SUCCESS)
-      {
-         lastErrorStatus = ret;
-         ALOGE("phLibNfc_Llcp_Bind() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-         /* Close socket created */
-         REENTRANCE_LOCK();
-         ret = phLibNfc_Llcp_Close(hLlcpSocket);
-         REENTRANCE_UNLOCK();
-         return NULL;
-      }
-      TRACE("phLibNfc_Llcp_Bind() returned 0x%04x[%s]", ret, nfc_jni_get_status_name(ret));
-
-      /* Set socket SAP */
-      f = e->GetFieldID(clsNativeLlcpSocket, "mSap", "I");
-      e->SetIntField(clientSocket, f,(jint)nSap);
-      TRACE("socket SAP = %d\n",nSap);
-   }
-
-   /* Set socket handle */
-   f = e->GetFieldID(clsNativeLlcpSocket, "mHandle", "I");
-   e->SetIntField(clientSocket, f,(jint)hLlcpSocket);
-   TRACE("socket Handle = %02x\n",hLlcpSocket);
-
-   /* Set socket MIU */
-   f = e->GetFieldID(clsNativeLlcpSocket, "mLocalMiu", "I");
-   e->SetIntField(clientSocket, f,(jint)miu);
-   TRACE("socket MIU = %d\n",miu);
-
-   /* Set socket RW */
-   f = e->GetFieldID(clsNativeLlcpSocket, "mLocalRw", "I");
-   e->SetIntField(clientSocket, f,(jint)rw);
-   TRACE("socket RW = %d\n",rw);
-
-
-   return clientSocket;
-}
-
-static jint com_android_nfc_NfcManager_doGetLastError(JNIEnv*, jobject)
-{
-   TRACE("Last Error Status = 0x%02x",lastErrorStatus);
-
-   if(lastErrorStatus == NFCSTATUS_BUFFER_TOO_SMALL)
-   {
-      return ERROR_BUFFER_TOO_SMALL;
-   }
-   else if(lastErrorStatus == NFCSTATUS_INSUFFICIENT_RESOURCES)
-   {
-      return  ERROR_INSUFFICIENT_RESOURCES;
-   }
-   else
-   {
-      return lastErrorStatus;
-   }
-}
-
-static void com_android_nfc_NfcManager_doAbort(JNIEnv*, jobject)
-{
-    emergency_recovery(NULL);
-}
-
-static void com_android_nfc_NfcManager_doSetP2pInitiatorModes(JNIEnv *e, jobject o,
-        jint modes)
-{
-    ALOGE("Setting init modes to %x", modes);
-    struct nfc_jni_native_data *nat = NULL;
-    nat = nfc_jni_get_nat(e, o);
-    nat->p2p_initiator_modes = modes;
-}
-
-static void com_android_nfc_NfcManager_doSetP2pTargetModes(JNIEnv *e, jobject o,
-        jint modes)
-{
-    ALOGE("Setting target modes to %x", modes);
-    struct nfc_jni_native_data *nat = NULL;
-    nat = nfc_jni_get_nat(e, o);
-    nat->p2p_target_modes = modes;
-}
-
-static bool performDownload(struct nfc_jni_native_data* nat, bool takeLock) {
-    bool result = FALSE;
-    int load_result;
-    bool wasDisabled = FALSE;
-    uint8_t OutputBuffer[1];
-    uint8_t InputBuffer[1];
-    NFCSTATUS status = NFCSTATUS_FAILED;
-    struct nfc_jni_callback_data cb_data;
-
-    /* Create the local semaphore */
-    if (!nfc_cb_data_init(&cb_data, NULL))
-    {
-       result = FALSE;
-       goto clean_and_return;
-    }
-
-    if (takeLock)
-    {
-        CONCURRENCY_LOCK();
-    }
-
-    /* Initialize Driver */
-    if(!driverConfigured)
-    {
-        result = nfc_jni_configure_driver(nat);
-        wasDisabled = TRUE;
-    }
-    TRACE("com_android_nfc_NfcManager_doDownload()");
-
-    TRACE("Go in Download Mode");
-    phLibNfc_Download_Mode();
-
-    TRACE("Load new Firmware Image");
-    load_result = phLibNfc_Load_Firmware_Image();
-    if(load_result != 0)
-    {
-        TRACE("Load new Firmware Image - status = %d",load_result);
-        result = FALSE;
-        goto clean_and_return;
-    }
-
-    // Download
-    gInputParam.buffer  = InputBuffer;
-    gInputParam.length  = 0x01;
-    gOutputParam.buffer = OutputBuffer;
-    gOutputParam.length = 0x01;
-
-    ALOGD("Download new Firmware");
-    REENTRANCE_LOCK();
-    status = phLibNfc_Mgt_IoCtl(gHWRef,NFC_FW_DOWNLOAD, &gInputParam, &gOutputParam, nfc_jni_ioctl_callback, (void *)&cb_data);
-    REENTRANCE_UNLOCK();
-    if(status != NFCSTATUS_PENDING)
-    {
-        ALOGE("phLibNfc_Mgt_IoCtl() (download) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-        result = FALSE;
-        goto clean_and_return;
-    }
-    TRACE("phLibNfc_Mgt_IoCtl() (download) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-    /* Wait for callback response */
-    if(sem_wait(&cb_data.sem))
-    {
-       ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-       result = FALSE;
-       goto clean_and_return;
-    }
-
-    /* NOTE: we will get NFCSTATUS_FEATURE_NOT_SUPPORTED when we
-       try to download an old-style firmware on top of a new-style
-       firmware.  Hence, this is expected behavior, and not an
-       error condition. */
-    if(cb_data.status != NFCSTATUS_SUCCESS && cb_data.status != NFCSTATUS_FEATURE_NOT_SUPPORTED)
-    {
-        TRACE("phLibNfc_Mgt_IoCtl() (download) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-        result = FALSE;
-        goto clean_and_return;
-    }
-
-    if(cb_data.status == NFCSTATUS_FEATURE_NOT_SUPPORTED)
-    {
-        ALOGW("Old-style firmware not installed on top of new-style firmware. Using existing firmware in the chip.");
-    }
-
-    /*Download is successful*/
-    result = TRUE;
-clean_and_return:
-    TRACE("phLibNfc_HW_Reset()");
-    phLibNfc_HW_Reset();
-    /* Deinitialize Driver */
-    if(wasDisabled)
-    {
-        result = nfc_jni_unconfigure_driver(nat);
-    }
-    if (takeLock)
-    {
-        CONCURRENCY_UNLOCK();
-    }
-    nfc_cb_data_deinit(&cb_data);
-    return result;
-}
-
-static jboolean com_android_nfc_NfcManager_doDownload(JNIEnv *e, jobject o)
-{
-    struct nfc_jni_native_data *nat = NULL;
-    nat = nfc_jni_get_nat(e, o);
-    return performDownload(nat, true);
-}
-
-static jstring com_android_nfc_NfcManager_doDump(JNIEnv *e, jobject)
-{
-    char buffer[100];
-    snprintf(buffer, sizeof(buffer), "libnfc llc error_count=%u", libnfc_llc_error_count);
-    return e->NewStringUTF(buffer);
-}
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gMethods[] =
-{
-   {"doDownload", "()Z",
-        (void *)com_android_nfc_NfcManager_doDownload},
-
-   {"initializeNativeStructure", "()Z",
-      (void *)com_android_nfc_NfcManager_init_native_struc},
-
-   {"doInitialize", "()Z",
-      (void *)com_android_nfc_NfcManager_initialize},
-
-   {"doDeinitialize", "()Z",
-      (void *)com_android_nfc_NfcManager_deinitialize},
-
-   {"doEnableDiscovery", "(IZZZZ)V",
-      (void *)com_android_nfc_NfcManager_enableDiscovery},
-
-   {"doCheckLlcp", "()Z",
-      (void *)com_android_nfc_NfcManager_doCheckLlcp},
-
-   {"doActivateLlcp", "()Z",
-      (void *)com_android_nfc_NfcManager_doActivateLlcp},
-
-   {"doCreateLlcpConnectionlessSocket", "(ILjava/lang/String;)Lcom/android/nfc/dhimpl/NativeLlcpConnectionlessSocket;",
-      (void *)com_android_nfc_NfcManager_doCreateLlcpConnectionlessSocket},
-
-   {"doCreateLlcpServiceSocket", "(ILjava/lang/String;III)Lcom/android/nfc/dhimpl/NativeLlcpServiceSocket;",
-      (void *)com_android_nfc_NfcManager_doCreateLlcpServiceSocket},
-
-   {"doCreateLlcpSocket", "(IIII)Lcom/android/nfc/dhimpl/NativeLlcpSocket;",
-      (void *)com_android_nfc_NfcManager_doCreateLlcpSocket},
-
-   {"doGetLastError", "()I",
-      (void *)com_android_nfc_NfcManager_doGetLastError},
-
-   {"disableDiscovery", "()V",
-      (void *)com_android_nfc_NfcManager_disableDiscovery},
-
-   {"doSetTimeout", "(II)Z",
-      (void *)com_android_nfc_NfcManager_doSetTimeout},
-
-   {"doGetTimeout", "(I)I",
-      (void *)com_android_nfc_NfcManager_doGetTimeout},
-
-   {"doResetTimeouts", "()V",
-      (void *)com_android_nfc_NfcManager_doResetTimeouts},
-
-   {"doAbort", "()V",
-      (void *)com_android_nfc_NfcManager_doAbort},
-
-   {"doSetP2pInitiatorModes","(I)V",
-      (void *)com_android_nfc_NfcManager_doSetP2pInitiatorModes},
-
-   {"doSetP2pTargetModes","(I)V",
-      (void *)com_android_nfc_NfcManager_doSetP2pTargetModes},
-
-   {"doDump", "()Ljava/lang/String;",
-      (void *)com_android_nfc_NfcManager_doDump},
-};
-
-
-int register_com_android_nfc_NativeNfcManager(JNIEnv *e)
-{
-    nfc_jni_native_monitor_t *nfc_jni_native_monitor;
-
-   nfc_jni_native_monitor = nfc_jni_init_monitor();
-   if(nfc_jni_native_monitor == NULL)
-   {
-      ALOGE("NFC Manager cannot recover native monitor %x\n", errno);
-      return -1;
-   }
-
-   return jniRegisterNativeMethods(e,
-      "com/android/nfc/dhimpl/NativeNfcManager",
-      gMethods, NELEM(gMethods));
-}
-
-} /* namespace android */
diff --git a/nxp/jni/com_android_nfc_NativeNfcTag.cpp b/nxp/jni/com_android_nfc_NativeNfcTag.cpp
deleted file mode 100644
index 09af46f..0000000
--- a/nxp/jni/com_android_nfc_NativeNfcTag.cpp
+++ /dev/null
@@ -1,1243 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <errno.h>
-#include <malloc.h>
-#include <semaphore.h>
-#include <ScopedLocalRef.h>
-#include <ScopedPrimitiveArray.h>
-
-#include "com_android_nfc.h"
-#include "phNfcHalTypes.h"
-
-static phLibNfc_Data_t nfc_jni_ndef_rw;
-static phLibNfc_Handle handle;
-uint8_t *nfc_jni_ndef_buf = NULL;
-uint32_t nfc_jni_ndef_buf_len = 0;
-
-extern uint8_t device_connected_flag;
-
-namespace android {
-
-extern phLibNfc_Handle storedHandle;
-
-extern void nfc_jni_restart_discovery_locked(struct nfc_jni_native_data *nat);
-extern void nfc_jni_reset_timeout_values();
-
-/*
- * Callbacks
- */
- static void nfc_jni_tag_rw_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_tag_rw_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_connect_callback(void *pContext,
-   phLibNfc_Handle /*hRemoteDev*/,
-   phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_connect_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   if (pCallbackData->pContext != NULL) {
-       // Store the remote dev info ptr in the callback context
-       // Note that this ptr will remain valid, it is tied to a statically
-       // allocated buffer in libnfc.
-       phLibNfc_sRemoteDevInformation_t** ppRemoteDevInfo =
-           (phLibNfc_sRemoteDevInformation_t**)pCallbackData->pContext;
-       *ppRemoteDevInfo = psRemoteDevInfo;
-   }
-
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_checkndef_callback(void *pContext,
-   phLibNfc_ChkNdef_Info_t info, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_checkndef_callback", status);
-   phLibNfc_ChkNdef_Info_t* pNdefInfo = (phLibNfc_ChkNdef_Info_t*) (pCallbackData->pContext);
-   if(status == NFCSTATUS_OK)
-   {
-      if(nfc_jni_ndef_buf)
-      {
-         free(nfc_jni_ndef_buf);
-      }
-      nfc_jni_ndef_buf_len = info.MaxNdefMsgLength;
-      nfc_jni_ndef_buf = (uint8_t*)malloc(nfc_jni_ndef_buf_len);
-      if (pNdefInfo != NULL) *pNdefInfo = info;
-   }
-   else {
-      if (pNdefInfo != NULL) {
-        memset(pNdefInfo, 0, sizeof(*pNdefInfo));
-      }
-   }
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_disconnect_callback(void *pContext,
-   phLibNfc_Handle /*hRemoteDev*/, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_disconnect_callback", status);
-
-   if(nfc_jni_ndef_buf)
-   {
-      free(nfc_jni_ndef_buf);
-   }
-   nfc_jni_ndef_buf = NULL;
-   nfc_jni_ndef_buf_len = 0;
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_async_disconnect_callback(void * /*pContext*/,
-   phLibNfc_Handle /*hRemoteDev*/, NFCSTATUS status)
-{
-   LOG_CALLBACK("nfc_jni_async_disconnect_callback", status);
-
-   if(nfc_jni_ndef_buf)
-   {
-      free(nfc_jni_ndef_buf);
-   }
-   nfc_jni_ndef_buf = NULL;
-   nfc_jni_ndef_buf_len = 0;
-}
-
-static phNfc_sData_t *nfc_jni_transceive_buffer;
-
-static void nfc_jni_transceive_callback(void *pContext,
-   phLibNfc_Handle /*handle*/, phNfc_sData_t *pResBuffer, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_transceive_callback", status);
-
-   nfc_jni_transceive_buffer = pResBuffer;
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_presencecheck_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_presencecheck_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_formatndef_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_formatndef_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_readonly_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_readonly_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-/* Functions */
-static jbyteArray com_android_nfc_NativeNfcTag_doRead(JNIEnv *e,
-   jobject o)
-{
-   NFCSTATUS status;
-   phLibNfc_Handle handle = 0;
-   jbyteArray buf = NULL;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   handle = nfc_jni_get_connected_handle(e, o);
-
-   nfc_jni_ndef_rw.length = nfc_jni_ndef_buf_len;
-   nfc_jni_ndef_rw.buffer = nfc_jni_ndef_buf;
-
-   TRACE("phLibNfc_Ndef_Read()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_Ndef_Read(handle, &nfc_jni_ndef_rw,
-                               phLibNfc_Ndef_EBegin,
-                               nfc_jni_tag_rw_callback,
-                               (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Ndef_Read() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Ndef_Read() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   buf = e->NewByteArray(nfc_jni_ndef_rw.length);
-   e->SetByteArrayRegion(buf, 0, nfc_jni_ndef_rw.length,
-      (jbyte *)nfc_jni_ndef_rw.buffer);
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-
-   return buf;
-}
-
-
-static jboolean com_android_nfc_NativeNfcTag_doWrite(JNIEnv *e,
-   jobject o, jbyteArray buf)
-{
-   NFCSTATUS   status;
-   jboolean    result = JNI_FALSE;
-   struct nfc_jni_callback_data cb_data;
-
-   phLibNfc_Handle handle = nfc_jni_get_connected_handle(e, o);
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   nfc_jni_ndef_rw.length = (uint32_t)e->GetArrayLength(buf);
-   nfc_jni_ndef_rw.buffer = (uint8_t *)e->GetByteArrayElements(buf, NULL);
-
-   TRACE("phLibNfc_Ndef_Write()");
-   TRACE("Ndef Handle :0x%x\n",handle);
-   TRACE("Ndef buffer length : %d", nfc_jni_ndef_rw.length);
-   REENTRANCE_LOCK();
-   status = phLibNfc_Ndef_Write(handle, &nfc_jni_ndef_rw,nfc_jni_tag_rw_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Ndef_Write() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Ndef_Write() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   result = JNI_TRUE;
-
-clean_and_return:
-   e->ReleaseByteArrayElements(buf, (jbyte *)nfc_jni_ndef_rw.buffer, JNI_ABORT);
-
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return result;
-}
-
-/*
- *  Utility to recover poll bytes from target infos
- */
-void set_target_pollBytes(JNIEnv *e, jobject tag,
-        phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo)
-{
-    ScopedLocalRef<jclass> tag_cls(e, e->GetObjectClass(tag));
-    jfieldID f = e->GetFieldID(tag_cls.get(), "mTechPollBytes", "[[B");
-
-    ScopedLocalRef<jobjectArray> existingPollBytes(e, (jobjectArray) e->GetObjectField(tag, f));
-    if (existingPollBytes.get() != NULL) {
-        return;
-    }
-
-    jfieldID techListField = e->GetFieldID(tag_cls.get(), "mTechList", "[I");
-    ScopedLocalRef<jintArray> techList(e, (jintArray) e->GetObjectField(tag, techListField));
-    ScopedIntArrayRO techIds(e, techList.get());
-    int techListLength = techIds.size();
-
-    ScopedLocalRef<jbyteArray> pollBytes(e, e->NewByteArray(0));
-    ScopedLocalRef<jclass> byteArrayClass(e, e->GetObjectClass(pollBytes.get()));
-    ScopedLocalRef<jobjectArray> techPollBytes(e, e->NewObjectArray(techListLength, byteArrayClass.get(), NULL));
-
-    for (int tech = 0; tech < techListLength; tech++) {
-        switch(techIds[tech])
-        {
-            /* ISO14443-3A: ATQA/SENS_RES */
-            case TARGET_TYPE_ISO14443_3A:
-                if (psRemoteDevInfo->RemDevType == phNfc_eJewel_PICC) {
-                    // Jewel ATQA is not read and stored by the PN544, but it is fixed
-                    // at {0x00, 0x0C} in the spec. So eJewel can safely be
-                    // translated to {0x00, 0x0C}.
-                    const static jbyte JewelAtqA[2] = {0x00, 0x0C};
-                    pollBytes.reset(e->NewByteArray(2));
-                    e->SetByteArrayRegion(pollBytes.get(), 0, 2, (jbyte*) JewelAtqA);
-                } else {
-                    pollBytes.reset(e->NewByteArray(sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.AtqA)));
-                    e->SetByteArrayRegion(pollBytes.get(), 0, sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.AtqA),
-                                          (jbyte *)psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.AtqA);
-                }
-                break;
-            /* ISO14443-3B: Application data (4 bytes) and Protocol Info (3 bytes) from ATQB/SENSB_RES */
-            case TARGET_TYPE_ISO14443_3B:
-                pollBytes.reset(e->NewByteArray(sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.AppData)
-                        + sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.ProtInfo)));
-                e->SetByteArrayRegion(pollBytes.get(), 0, sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.AppData),
-                                      (jbyte *)psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.AppData);
-                e->SetByteArrayRegion(pollBytes.get(), sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.AppData),
-                                      sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.ProtInfo),
-                                      (jbyte *)psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.AtqB.AtqResInfo.ProtInfo);
-                break;
-            /* JIS_X_6319_4: PAD0 (2 byte), PAD1 (2 byte), MRTI(2 byte), PAD2 (1 byte), RC (2 byte) */
-            case TARGET_TYPE_FELICA:
-                pollBytes.reset(e->NewByteArray(sizeof(psRemoteDevInfo->RemoteDevInfo.Felica_Info.PMm)
-                        + sizeof(psRemoteDevInfo->RemoteDevInfo.Felica_Info.SystemCode)));
-                e->SetByteArrayRegion(pollBytes.get(), 0, sizeof(psRemoteDevInfo->RemoteDevInfo.Felica_Info.PMm),
-                                      (jbyte *)psRemoteDevInfo->RemoteDevInfo.Felica_Info.PMm);
-                e->SetByteArrayRegion(pollBytes.get(), sizeof(psRemoteDevInfo->RemoteDevInfo.Felica_Info.PMm),
-                                      sizeof(psRemoteDevInfo->RemoteDevInfo.Felica_Info.SystemCode),
-                                      (jbyte *)psRemoteDevInfo->RemoteDevInfo.Felica_Info.SystemCode);
-                break;
-            /* ISO15693: response flags (1 byte), DSFID (1 byte) */
-            case TARGET_TYPE_ISO15693:
-                pollBytes.reset(e->NewByteArray(sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags)
-                        + sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Dsfid)));
-                e->SetByteArrayRegion(pollBytes.get(), 0, sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags),
-                                      (jbyte *)&psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags);
-                e->SetByteArrayRegion(pollBytes.get(), sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags),
-                                      sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Dsfid),
-                                      (jbyte *)&psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Dsfid);
-                break;
-            default:
-                pollBytes.reset(e->NewByteArray(0));
-                break;
-        }
-        e->SetObjectArrayElement(techPollBytes.get(), tech, pollBytes.get());
-    }
-
-    e->SetObjectField(tag, f, techPollBytes.get());
-}
-
-/*
- *  Utility to recover activation bytes from target infos
- */
-void set_target_activationBytes(JNIEnv *e, jobject tag,
-        phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo)
-{
-    ScopedLocalRef<jclass> tag_cls(e, e->GetObjectClass(tag));
-
-    jfieldID f = e->GetFieldID(tag_cls.get(), "mTechActBytes", "[[B");
-    ScopedLocalRef<jobjectArray> existingActBytes(e, (jobjectArray) e->GetObjectField(tag, f));
-    if (existingActBytes.get() != NULL) {
-        return;
-    }
-
-    jfieldID techListField = e->GetFieldID(tag_cls.get(), "mTechList", "[I");
-    ScopedLocalRef<jintArray> techList(e, (jintArray) e->GetObjectField(tag, techListField));
-    ScopedIntArrayRO techIds(e, techList.get());
-    int techListLength = techIds.size();
-
-    ScopedLocalRef<jbyteArray> actBytes(e, e->NewByteArray(0));
-    ScopedLocalRef<jclass> byteArrayClass(e, e->GetObjectClass(actBytes.get()));
-    ScopedLocalRef<jobjectArray> techActBytes(e, e->NewObjectArray(techListLength, byteArrayClass.get(), 0));
-
-    for (int tech = 0; tech < techListLength; tech++) {
-        switch(techIds[tech]) {
-
-            /* ISO14443-3A: SAK/SEL_RES */
-            case TARGET_TYPE_ISO14443_3A:
-                actBytes.reset(e->NewByteArray(sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.Sak)));
-                e->SetByteArrayRegion(actBytes.get(), 0, sizeof(psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.Sak),
-                                      (jbyte *)&psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.Sak);
-                break;
-            /* ISO14443-3A & ISO14443-4: SAK/SEL_RES, historical bytes from ATS */
-            /* ISO14443-3B & ISO14443-4: HiLayerResp */
-            case TARGET_TYPE_ISO14443_4:
-                // Determine whether -A or -B
-                if (psRemoteDevInfo->RemDevType == phNfc_eISO14443_B_PICC ||
-                        psRemoteDevInfo->RemDevType == phNfc_eISO14443_4B_PICC) {
-                    actBytes.reset(e->NewByteArray(psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.HiLayerRespLength));
-                    e->SetByteArrayRegion(actBytes.get(), 0, psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.HiLayerRespLength,
-                                      (jbyte *)psRemoteDevInfo->RemoteDevInfo.Iso14443B_Info.HiLayerResp);
-                } else if (psRemoteDevInfo->RemDevType == phNfc_eISO14443_A_PICC ||
-                        psRemoteDevInfo->RemDevType == phNfc_eISO14443_4A_PICC) {
-                    actBytes.reset(e->NewByteArray(psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.AppDataLength));
-                    e->SetByteArrayRegion(actBytes.get(), 0,
-                                          psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.AppDataLength,
-                                          (jbyte *)psRemoteDevInfo->RemoteDevInfo.Iso14443A_Info.AppData);
-                }
-                break;
-            /* ISO15693: response flags (1 byte), DSFID (1 byte) */
-            case TARGET_TYPE_ISO15693:
-                actBytes.reset(e->NewByteArray(sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags)
-                        + sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Dsfid)));
-                e->SetByteArrayRegion(actBytes.get(), 0, sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags),
-                                      (jbyte *)&psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags);
-                e->SetByteArrayRegion(actBytes.get(), sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Flags),
-                                      sizeof(psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Dsfid),
-                                      (jbyte *)&psRemoteDevInfo->RemoteDevInfo.Iso15693_Info.Dsfid);
-                break;
-            default:
-                actBytes.reset(e->NewByteArray(0));
-                break;
-        }
-        e->SetObjectArrayElement(techActBytes.get(), tech, actBytes.get());
-    }
-    e->SetObjectField(tag, f, techActBytes.get());
-}
-
-static jint com_android_nfc_NativeNfcTag_doConnect(JNIEnv *e,
-   jobject o, phLibNfc_Handle handle)
-{
-   jint status;
-   struct nfc_jni_callback_data cb_data;
-   phLibNfc_sRemoteDevInformation_t* pRemDevInfo = NULL;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, &pRemDevInfo))
-   {
-      status = NFCSTATUS_NOT_ENOUGH_MEMORY;
-      goto clean_and_return;
-   }
-
-   TRACE("phLibNfc_RemoteDev_Connect(RW)");
-   REENTRANCE_LOCK();
-   storedHandle = handle;
-   status = phLibNfc_RemoteDev_Connect(handle, nfc_jni_connect_callback,(void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_Connect(RW) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_RemoteDev_Connect(RW) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      status = NFCSTATUS_ABORTED;
-      goto clean_and_return;
-   }
-
-   status = cb_data.status;
-   TRACE("phLibNfc_RemoteDev_Connect() - Status code = %d", status);
-
-   /* Connect Status */
-   if(status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   // Success, set poll & act bytes
-   set_target_pollBytes(e, o, pRemDevInfo);
-   set_target_activationBytes(e, o, pRemDevInfo);
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return status;
-}
-
-static jint com_android_nfc_NativeNfcTag_doHandleReconnect(JNIEnv*,
-   jobject, phLibNfc_Handle handle)
-{
-   jint status;
-   struct nfc_jni_callback_data cb_data;
-   phLibNfc_sRemoteDevInformation_t* pRemDevInfo = NULL;
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, &pRemDevInfo))
-   {
-      status = NFCSTATUS_NOT_ENOUGH_MEMORY;
-      goto clean_and_return;
-   }
-
-   TRACE("phLibNfc_RemoteDev_ReConnect(RW)");
-   REENTRANCE_LOCK();
-   storedHandle = handle;
-   status = phLibNfc_RemoteDev_ReConnect(handle, nfc_jni_connect_callback,(void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_ReConnect(RW) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_RemoteDev_ReConnect(RW) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      status = NFCSTATUS_ABORTED;
-      goto clean_and_return;
-   }
-
-   status = cb_data.status;
-
-   /* Connect Status */
-   if(status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return status;
-}
-
-static jint com_android_nfc_NativeNfcTag_doReconnect(JNIEnv *e,
-   jobject o)
-{
-    // Reconnect is provided by libnfc by just calling connect again
-    // on the same handle.
-    int libNfcType = nfc_jni_get_connected_technology_libnfc_type(e, o);
-    if (libNfcType != -1) {
-        // Note that some tag types are stateless, hence we do not reconnect
-        // those. Currently those are the Jewel and Iso15693 technologies.
-        if ((libNfcType != phNfc_eJewel_PICC) && (libNfcType != phNfc_eISO15693_PICC)) {
-            phLibNfc_Handle handle = nfc_jni_get_connected_handle(e,o);
-            return com_android_nfc_NativeNfcTag_doConnect(e, o, handle);
-        }
-        else {
-            return NFCSTATUS_SUCCESS;
-        }
-    }
-    else {
-        return NFCSTATUS_REJECTED;
-    }
-}
-
-
-static jboolean com_android_nfc_NativeNfcTag_doDisconnect(JNIEnv *e, jobject o)
-{
-   phLibNfc_Handle handle = 0;
-   NFCSTATUS status;
-   jboolean result = JNI_FALSE;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   handle = nfc_jni_get_connected_handle(e, o);
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   /* Reset the stored handle */
-   storedHandle = 0;
-
-   nfc_jni_reset_timeout_values();
-
-   /* Disconnect */
-   TRACE("Disconnecting from tag (%x)", handle);
-
-   if (handle == (phLibNfc_Handle)-1) {
-       // Was never connected to any tag, exit
-       result = JNI_TRUE;
-       ALOGE("doDisconnect() - Target already disconnected");
-       nfc_jni_restart_discovery_locked(nfc_jni_get_nat_ext(e));
-       goto clean_and_return;
-   }
-
-    TRACE("phLibNfc_RemoteDev_Disconnect(%x)", handle);
-    REENTRANCE_LOCK();
-    status = phLibNfc_RemoteDev_Disconnect(handle, NFC_DISCOVERY_CONTINUE,
-                                          nfc_jni_disconnect_callback, (void *)&cb_data);
-    REENTRANCE_UNLOCK();
-
-    if(status == NFCSTATUS_TARGET_NOT_CONNECTED)
-    {
-        result = JNI_TRUE;
-        TRACE("phLibNfc_RemoteDev_Disconnect() - Target already disconnected");
-        goto clean_and_return;
-    }
-    if(status != NFCSTATUS_PENDING)
-    {
-        ALOGE("phLibNfc_RemoteDev_Disconnect(%x) returned 0x%04x[%s]", handle, status, nfc_jni_get_status_name(status));
-        nfc_jni_restart_discovery_locked(nfc_jni_get_nat_ext(e));
-        goto clean_and_return;
-    }
-    TRACE("phLibNfc_RemoteDev_Disconnect(%x) returned 0x%04x[%s]", handle, status, nfc_jni_get_status_name(status));
-
-    /* Wait for callback response */
-    if(sem_wait(&cb_data.sem))
-    {
-       ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-       goto clean_and_return;
-    }
-
-    /* Disconnect Status */
-    if(cb_data.status != NFCSTATUS_SUCCESS)
-    {
-        goto clean_and_return;
-    }
-
-    result = JNI_TRUE;
-
-clean_and_return:
-    /* Reset device connected flag */
-    device_connected_flag = 0;
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return result;
-}
-
-static uint16_t
-crc_16_ccitt1( uint8_t* msg, size_t len, uint16_t init )
-{
-    uint16_t b, crc = init;
-
-    do {
-        b = *msg++ ^ (crc & 0xFF);
-        b ^= (b << 4) & 0xFF;
-        crc = (crc >> 8) ^ (b << 8) ^ (b << 3) ^ (b >> 4);
-    } while( --len );
-
-    return crc;
-}
-
-static void
-nfc_insert_crc_a( uint8_t* msg, size_t len )
-{
-    uint16_t crc;
-
-    crc = crc_16_ccitt1( msg, len, 0x6363 );
-    msg[len] = crc & 0xFF;
-    msg[len + 1] = (crc >> 8) & 0xFF;
-}
-
-static void
-nfc_get_crc_a( uint8_t* msg, size_t len, uint8_t* byte1, uint8_t* byte2)
-{
-    uint16_t crc;
-
-    crc = crc_16_ccitt1( msg, len, 0x6363 );
-    *byte1 = crc & 0xFF;
-    *byte2 = (crc >> 8) & 0xFF;
-}
-
-static bool
-crc_valid( uint8_t* msg, size_t len)
-{
-    uint8_t crcByte1, crcByte2;
-
-    nfc_get_crc_a(nfc_jni_transceive_buffer->buffer,
-          len - 2, &crcByte1, &crcByte2);
-
-    if (msg[len - 2] == crcByte1 &&
-          msg[len - 1] == crcByte2) {
-        return true;
-    }
-    else {
-        return false;
-    }
-
-}
-
-static jbyteArray com_android_nfc_NativeNfcTag_doTransceive(JNIEnv *e,
-   jobject o, jbyteArray data, jboolean raw, jintArray statusTargetLost)
-{
-    uint8_t offset = 0;
-    // buf is the pointer to the JNI array and never overwritten,
-    // outbuf is passed into the transceive - it may be pointed to new memory
-    // to be extended with CRC.
-    uint8_t *buf = NULL;
-    uint32_t buflen;
-
-    uint8_t *outbuf = NULL;
-    uint32_t outlen;
-    phLibNfc_sTransceiveInfo_t transceive_info;
-    jbyteArray result = NULL;
-    int res;
-    phLibNfc_Handle handle = nfc_jni_get_connected_handle(e, o);
-    NFCSTATUS status;
-    struct nfc_jni_callback_data cb_data;
-    int selectedTech = 0;
-    int selectedLibNfcType = 0;
-    jint* technologies = NULL;
-    bool checkResponseCrc = false;
-
-    jint *targetLost;
-    if (statusTargetLost != NULL) {
-        targetLost = e->GetIntArrayElements(statusTargetLost, 0);
-        if (targetLost != NULL) {
-            *targetLost = 0;
-        }
-    } else {
-        targetLost = NULL;
-    }
-
-    memset(&transceive_info, 0, sizeof(transceive_info));
-    CONCURRENCY_LOCK();
-
-    /* Create the local semaphore */
-    if (!nfc_cb_data_init(&cb_data, NULL))
-    {
-       goto clean_and_return;
-    }
-
-    selectedTech = nfc_jni_get_connected_technology(e, o);
-    selectedLibNfcType = nfc_jni_get_connected_technology_libnfc_type(e, o);
-
-    buf = outbuf = (uint8_t *)e->GetByteArrayElements(data, NULL);
-    buflen = outlen = (uint32_t)e->GetArrayLength(data);
-
-    switch (selectedTech) {
-        case TARGET_TYPE_FELICA:
-          transceive_info.cmd.FelCmd = phNfc_eFelica_Raw;
-          transceive_info.addr = 0;
-          break;
-        case TARGET_TYPE_MIFARE_CLASSIC:
-        case TARGET_TYPE_MIFARE_UL:
-          if (raw) {
-              transceive_info.cmd.MfCmd = phHal_eMifareRaw;
-              transceive_info.addr = 0;
-              // Need to add in the crc here
-              outbuf = (uint8_t*)malloc(buflen + 2);
-              outlen += 2;
-              memcpy(outbuf, buf, buflen);
-              nfc_insert_crc_a(outbuf, buflen);
-
-              checkResponseCrc = true;
-          } else {
-              offset = 2;
-              transceive_info.cmd.MfCmd = (phNfc_eMifareCmdList_t)buf[0];
-              transceive_info.addr = (uint8_t)buf[1];
-          }
-          break;
-        case TARGET_TYPE_ISO14443_3A:
-          // Check which libnfc type
-          if (selectedLibNfcType == phNfc_eJewel_PICC) {
-              // For the Jewel pipe, CRC is automatically computed
-              transceive_info.cmd.JewelCmd = phNfc_eJewel_Raw;
-              transceive_info.addr = 0;
-          } else {
-              if (raw) {
-                  // Use Mifare Raw to implement a standard
-                  // ISO14443-3A transceive, with CRC added
-                  transceive_info.cmd.MfCmd = phHal_eMifareRaw;
-                  transceive_info.addr = 0;
-                  // Need to add in the crc here
-                  outbuf = (uint8_t*)malloc(buflen + 2);
-                  outlen += 2;
-                  memcpy(outbuf, buf, buflen);
-                  nfc_insert_crc_a(outbuf, buflen);
-
-                  checkResponseCrc = true;
-              } else {
-                  // Use the mifare pipe
-                  offset = 2;
-                  transceive_info.cmd.MfCmd = (phNfc_eMifareCmdList_t)buf[0];
-                  transceive_info.addr = (uint8_t)buf[1];
-              }
-
-          }
-          break;
-        case TARGET_TYPE_ISO14443_4:
-          transceive_info.cmd.Iso144434Cmd = phNfc_eIso14443_4_Raw;
-          transceive_info.addr = 0;
-          break;
-        case TARGET_TYPE_ISO15693:
-          transceive_info.cmd.Iso15693Cmd = phNfc_eIso15693_Cmd;
-          transceive_info.addr = 0;
-          break;
-        case TARGET_TYPE_UNKNOWN:
-        case TARGET_TYPE_ISO14443_3B:
-          // Not supported
-          goto clean_and_return;
-        default:
-          break;
-    }
-
-    transceive_info.sSendData.buffer = outbuf + offset;
-    transceive_info.sSendData.length = outlen - offset;
-    transceive_info.sRecvData.buffer = (uint8_t*)malloc(1024);
-    transceive_info.sRecvData.length = 1024;
-    if(transceive_info.sRecvData.buffer == NULL)
-    {
-      goto clean_and_return;
-    }
-
-    TRACE("phLibNfc_RemoteDev_Transceive()");
-    REENTRANCE_LOCK();
-    status = phLibNfc_RemoteDev_Transceive(handle, &transceive_info,
-         nfc_jni_transceive_callback, (void *)&cb_data);
-    REENTRANCE_UNLOCK();
-    if(status != NFCSTATUS_PENDING)
-    {
-      ALOGE("phLibNfc_RemoteDev_Transceive() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      if ((targetLost != NULL) && (status == NFCSTATUS_TARGET_LOST)) {
-          *targetLost = 1;
-      }
-      goto clean_and_return;
-    }
-    TRACE("phLibNfc_RemoteDev_Transceive() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-    /* Wait for callback response */
-    if(sem_wait(&cb_data.sem))
-    {
-       ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-       goto clean_and_return;
-    }
-
-    if(cb_data.status != NFCSTATUS_SUCCESS)
-    {
-        if ((targetLost != NULL) && (cb_data.status == NFCSTATUS_TARGET_LOST)) {
-            *targetLost = 1;
-        }
-        goto clean_and_return;
-    }
-
-    /* Copy results back to Java *
-     * In case of NfcA and raw, also check the CRC in the response
-     * and cut it off in the returned data.
-     */
-    if ((nfc_jni_transceive_buffer->length > 2) && checkResponseCrc) {
-        if (crc_valid(nfc_jni_transceive_buffer->buffer, nfc_jni_transceive_buffer->length)) {
-            result = e->NewByteArray(nfc_jni_transceive_buffer->length - 2);
-            if (result != NULL) {
-                e->SetByteArrayRegion(result, 0,
-                 nfc_jni_transceive_buffer->length - 2,
-                 (jbyte *)nfc_jni_transceive_buffer->buffer);
-            }
-        }
-    } else {
-        result = e->NewByteArray(nfc_jni_transceive_buffer->length);
-        if (result != NULL) {
-            e->SetByteArrayRegion(result, 0,
-             nfc_jni_transceive_buffer->length,
-             (jbyte *)nfc_jni_transceive_buffer->buffer);
-        }
-    }
-clean_and_return:
-    if(transceive_info.sRecvData.buffer != NULL)
-    {
-      free(transceive_info.sRecvData.buffer);
-    }
-
-    if ((outbuf != buf) && (outbuf != NULL)) {
-        // Buf was extended and re-alloced with crc bytes, free separately
-        free(outbuf);
-    }
-
-    e->ReleaseByteArrayElements(data,
-      (jbyte *)buf, JNI_ABORT);
-
-    if (targetLost != NULL) {
-        e->ReleaseIntArrayElements(statusTargetLost, targetLost, 0);
-    }
-
-    nfc_cb_data_deinit(&cb_data);
-
-    CONCURRENCY_UNLOCK();
-
-    return result;
-}
-
-static jint com_android_nfc_NativeNfcTag_doGetNdefType(JNIEnv*, jobject,
-        jint libnfcType, jint javaType)
-{
-    jint ndefType =  NDEF_UNKNOWN_TYPE;
-
-    switch (libnfcType) {
-          case phNfc_eJewel_PICC:
-              ndefType = NDEF_TYPE1_TAG;
-              break;
-          case phNfc_eISO14443_3A_PICC:
-              ndefType = NDEF_TYPE2_TAG;;
-              break;
-          case phNfc_eFelica_PICC:
-              ndefType = NDEF_TYPE3_TAG;
-              break;
-          case phNfc_eISO14443_A_PICC:
-          case phNfc_eISO14443_4A_PICC:
-          case phNfc_eISO14443_B_PICC:
-          case phNfc_eISO14443_4B_PICC:
-              ndefType = NDEF_TYPE4_TAG;
-              break;
-          case phNfc_eMifare_PICC:
-              if (javaType == TARGET_TYPE_MIFARE_UL) {
-                  ndefType = NDEF_TYPE2_TAG;
-              } else {
-                  ndefType = NDEF_MIFARE_CLASSIC_TAG;
-              }
-              break;
-          case phNfc_eISO15693_PICC:
-              ndefType = NDEF_ICODE_SLI_TAG;
-              break;
-          default:
-              ndefType = NDEF_UNKNOWN_TYPE;
-              break;
-    }
-    return ndefType;
-}
-
-static jint com_android_nfc_NativeNfcTag_doCheckNdef(JNIEnv *e, jobject o, jintArray ndefinfo)
-{
-   phLibNfc_Handle handle = 0;
-   jint status;
-   phLibNfc_ChkNdef_Info_t sNdefInfo;
-   struct nfc_jni_callback_data cb_data;
-   jint *ndef = e->GetIntArrayElements(ndefinfo, 0);
-   int apiCardState = NDEF_MODE_UNKNOWN;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      status = NFCSTATUS_NOT_ENOUGH_MEMORY;
-      goto clean_and_return;
-   }
-   cb_data.pContext = &sNdefInfo;
-
-   handle = nfc_jni_get_connected_handle(e, o);
-
-   TRACE("phLibNfc_Ndef_CheckNdef()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_Ndef_CheckNdef(handle, nfc_jni_checkndef_callback,(void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_Ndef_CheckNdef() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_Ndef_CheckNdef() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      status = NFCSTATUS_ABORTED;
-      goto clean_and_return;
-   }
-
-   status = cb_data.status;
-   TRACE("phLibNfc_Ndef_CheckNdef() - Status code = %d", status);
-
-   if (status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   ndef[0] = sNdefInfo.MaxNdefMsgLength;
-   // Translate the card state to know values for the NFC API
-   switch (sNdefInfo.NdefCardState) {
-       case PHLIBNFC_NDEF_CARD_INITIALISED:
-           apiCardState = NDEF_MODE_READ_WRITE;
-           break;
-       case PHLIBNFC_NDEF_CARD_READ_ONLY:
-           apiCardState = NDEF_MODE_READ_ONLY;
-           break;
-       case PHLIBNFC_NDEF_CARD_READ_WRITE:
-           apiCardState = NDEF_MODE_READ_WRITE;
-           break;
-       case PHLIBNFC_NDEF_CARD_INVALID:
-           apiCardState = NDEF_MODE_UNKNOWN;
-           break;
-   }
-   ndef[1] = apiCardState;
-
-clean_and_return:
-   e->ReleaseIntArrayElements(ndefinfo, ndef, 0);
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return status;
-}
-
-static jboolean com_android_nfc_NativeNfcTag_doPresenceCheck(JNIEnv *e, jobject o)
-{
-   phLibNfc_Handle handle = 0;
-   NFCSTATUS status;
-   jboolean result = JNI_FALSE;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   handle = nfc_jni_get_connected_handle(e, o);
-
-   TRACE("phLibNfc_RemoteDev_CheckPresence()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_RemoteDev_CheckPresence(handle, nfc_jni_presencecheck_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_CheckPresence() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_RemoteDev_CheckPresence() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if (cb_data.status == NFCSTATUS_SUCCESS)
-   {
-       result = JNI_TRUE;
-   }
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-
-   CONCURRENCY_UNLOCK();
-
-   return result;
-}
-
-static jboolean com_android_nfc_NativeNfcTag_doIsIsoDepNdefFormatable(JNIEnv *e,
-        jobject o, jbyteArray pollBytes, jbyteArray actBytes)
-{
-    // Determines whether this is a formatable IsoDep tag - currently only NXP DESFire
-    // is supported.
-    jboolean result = JNI_FALSE;
-
-    // DESfire has one sak byte and 2 ATQA bytes
-    if (pollBytes != NULL && (e->GetArrayLength(pollBytes) >= 2) &&
-            actBytes != NULL && (e->GetArrayLength(actBytes) >= 1)) {
-        jbyte* poll = e->GetByteArrayElements(pollBytes, NULL);
-        jbyte* act = e->GetByteArrayElements(actBytes, NULL);
-        if (act[0] == 0x20 && poll[1] == 0x03) {
-            uint8_t cmd[] = {0x90, 0x60, 0x00, 0x00, 0x00};
-            // Identifies as DESfire, use get version cmd to be sure
-            jbyteArray versionCmd = e->NewByteArray(5);
-            e->SetByteArrayRegion(versionCmd, 0, 5, (jbyte*)cmd);
-            jbyteArray respBytes = com_android_nfc_NativeNfcTag_doTransceive(e, o,
-                        versionCmd, JNI_TRUE, NULL);
-            if (respBytes != NULL) {
-                // Check whether the response matches a typical DESfire
-                // response.
-                // libNFC even does more advanced checking than we do
-                // here, and will only format DESfire's with a certain
-                // major/minor sw version and NXP as a manufacturer.
-                // We don't want to do such checking here, to avoid
-                // having to change code in multiple places.
-                // A succesful (wrapped) DESFire getVersion command returns
-                // 9 bytes, with byte 7 0x91 and byte 8 having status
-                // code 0xAF (these values are fixed and well-known).
-                int respLength = e->GetArrayLength(respBytes);
-                jbyte* resp = e->GetByteArrayElements(respBytes, NULL);
-                if (respLength == 9 && resp[7] == (jbyte)0x91 &&
-                        resp[8] == (jbyte)0xAF) {
-                    result = JNI_TRUE;
-                }
-                e->ReleaseByteArrayElements(respBytes, (jbyte *)resp, JNI_ABORT);
-            }
-        }
-        e->ReleaseByteArrayElements(pollBytes, (jbyte *)poll, JNI_ABORT);
-        e->ReleaseByteArrayElements(actBytes, (jbyte *)act, JNI_ABORT);
-    }
-
-    return result;
-}
-
-static jboolean com_android_nfc_NativeNfcTag_doNdefFormat(JNIEnv *e, jobject o, jbyteArray key)
-{
-   phLibNfc_Handle handle = 0;
-   NFCSTATUS status;
-   phNfc_sData_t keyBuffer;
-   jboolean result = JNI_FALSE;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   handle = nfc_jni_get_connected_handle(e, o);
-
-   keyBuffer.buffer = (uint8_t *)e->GetByteArrayElements(key, NULL);
-   keyBuffer.length = e->GetArrayLength(key);
-   TRACE("phLibNfc_RemoteDev_FormatNdef()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_RemoteDev_FormatNdef(handle, &keyBuffer, nfc_jni_formatndef_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_FormatNdef() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_RemoteDev_FormatNdef() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if (cb_data.status == NFCSTATUS_SUCCESS)
-   {
-       result = JNI_TRUE;
-   }
-
-clean_and_return:
-   e->ReleaseByteArrayElements(key, (jbyte *)keyBuffer.buffer, JNI_ABORT);
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return result;
-}
-
-static jboolean com_android_nfc_NativeNfcTag_doMakeReadonly(JNIEnv *e, jobject o, jbyteArray key)
-{
-   phLibNfc_Handle handle = 0;
-   NFCSTATUS status;
-   jboolean result = JNI_FALSE;
-   struct nfc_jni_callback_data cb_data;
-   phNfc_sData_t keyBuffer;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   handle = nfc_jni_get_connected_handle(e, o);
-   keyBuffer.buffer = (uint8_t *)e->GetByteArrayElements(key, NULL);
-   keyBuffer.length = e->GetArrayLength(key);
-   TRACE("phLibNfc_ConvertToReadOnlyNdef()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_ConvertToReadOnlyNdef(handle, &keyBuffer, nfc_jni_readonly_callback,
-           (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("pphLibNfc_ConvertToReadOnlyNdef() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_ConvertToReadOnlyNdef() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if (cb_data.status == NFCSTATUS_SUCCESS)
-   {
-       result = JNI_TRUE;
-   }
-
-clean_and_return:
-   e->ReleaseByteArrayElements(key, (jbyte *)keyBuffer.buffer, JNI_ABORT);
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return result;
-}
-/*
- * JNI registration.
- */
-static JNINativeMethod gMethods[] =
-{
-   {"doConnect", "(I)I",
-      (void *)com_android_nfc_NativeNfcTag_doConnect},
-   {"doDisconnect", "()Z",
-      (void *)com_android_nfc_NativeNfcTag_doDisconnect},
-   {"doReconnect", "()I",
-      (void *)com_android_nfc_NativeNfcTag_doReconnect},
-   {"doHandleReconnect", "(I)I",
-      (void *)com_android_nfc_NativeNfcTag_doHandleReconnect},
-   {"doTransceive", "([BZ[I)[B",
-      (void *)com_android_nfc_NativeNfcTag_doTransceive},
-   {"doGetNdefType", "(II)I",
-      (void *)com_android_nfc_NativeNfcTag_doGetNdefType},
-   {"doCheckNdef", "([I)I",
-      (void *)com_android_nfc_NativeNfcTag_doCheckNdef},
-   {"doRead", "()[B",
-      (void *)com_android_nfc_NativeNfcTag_doRead},
-   {"doWrite", "([B)Z",
-      (void *)com_android_nfc_NativeNfcTag_doWrite},
-   {"doPresenceCheck", "()Z",
-      (void *)com_android_nfc_NativeNfcTag_doPresenceCheck},
-   {"doIsIsoDepNdefFormatable", "([B[B)Z",
-      (void *)com_android_nfc_NativeNfcTag_doIsIsoDepNdefFormatable},
-   {"doNdefFormat", "([B)Z",
-      (void *)com_android_nfc_NativeNfcTag_doNdefFormat},
-   {"doMakeReadonly", "([B)Z",
-      (void *)com_android_nfc_NativeNfcTag_doMakeReadonly},
-};
-
-int register_com_android_nfc_NativeNfcTag(JNIEnv *e)
-{
-   return jniRegisterNativeMethods(e,
-      "com/android/nfc/dhimpl/NativeNfcTag",
-      gMethods, NELEM(gMethods));
-}
-
-} // namespace android
diff --git a/nxp/jni/com_android_nfc_NativeP2pDevice.cpp b/nxp/jni/com_android_nfc_NativeP2pDevice.cpp
deleted file mode 100644
index f78f626..0000000
--- a/nxp/jni/com_android_nfc_NativeP2pDevice.cpp
+++ /dev/null
@@ -1,492 +0,0 @@
-
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <errno.h>
-#include <malloc.h>
-#include <semaphore.h>
-#include <ScopedLocalRef.h>
-
-#include "com_android_nfc.h"
-
-extern uint8_t device_connected_flag;
-
-namespace android {
-
-extern void nfc_jni_restart_discovery_locked(struct nfc_jni_native_data *nat);
-
-/*
- * Callbacks
- */
-static void nfc_jni_presence_check_callback(void* pContext, NFCSTATUS status)
-{   
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_presence_check_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
- 
-static void nfc_jni_connect_callback(void *pContext,
-                                     phLibNfc_Handle /*hRemoteDev*/,
-                                     phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo, NFCSTATUS status)
-{   
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   phNfc_sData_t * psGeneralBytes = (phNfc_sData_t *)pCallbackData->pContext;
-   LOG_CALLBACK("nfc_jni_connect_callback", status);
-   
-   if(status == NFCSTATUS_SUCCESS)
-   {
-      psGeneralBytes->length = psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length;
-      psGeneralBytes->buffer = (uint8_t*)malloc(psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length);
-      psGeneralBytes->buffer = psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo;
-   }
-   
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_disconnect_callback(void *pContext, phLibNfc_Handle /*hRemoteDev*/, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_disconnect_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_receive_callback(void *pContext, phNfc_sData_t *data, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   phNfc_sData_t **ptr = (phNfc_sData_t **)pCallbackData->pContext;
-   LOG_CALLBACK("nfc_jni_receive_callback", status);
-
-   if(status == NFCSTATUS_SUCCESS)
-   {
-      *ptr = data;
-   }
-   else
-   {
-      *ptr = NULL;
-   }
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static void nfc_jni_send_callback(void *pContext, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_send_callback", status);
-
-   /* Report the callback status and wake up the caller */
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-/*
- * Functions
- */
-
-static void nfc_jni_transceive_callback(void *pContext,
-  phLibNfc_Handle /*handle*/, phNfc_sData_t *pResBuffer, NFCSTATUS status)
-{
-   struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext;
-   LOG_CALLBACK("nfc_jni_transceive_callback", status);
-
-   /* Report the callback data and wake up the caller */
-   pCallbackData->pContext = pResBuffer;
-   pCallbackData->status = status;
-   sem_post(&pCallbackData->sem);
-}
-
-static jboolean com_android_nfc_NativeP2pDevice_doConnect(JNIEnv *e, jobject o)
-{
-    phLibNfc_Handle handle = 0;
-    NFCSTATUS status;
-    jboolean result = JNI_FALSE;
-    struct nfc_jni_callback_data cb_data;
-
-    ScopedLocalRef<jclass> target_cls(e, NULL);
-    jobject tag;
-    jmethodID ctor;
-    jfieldID f;
-    jbyteArray generalBytes = NULL;
-    phNfc_sData_t sGeneralBytes;
-    unsigned int i;
-
-    CONCURRENCY_LOCK();
-
-    handle = nfc_jni_get_p2p_device_handle(e, o);
-
-    /* Create the local semaphore */
-    if (!nfc_cb_data_init(&cb_data, (void*)&sGeneralBytes))
-    {
-       goto clean_and_return;
-    }
-
-    TRACE("phLibNfc_RemoteDev_Connect(P2P)");
-    REENTRANCE_LOCK();
-    status = phLibNfc_RemoteDev_Connect(handle, nfc_jni_connect_callback, (void*)&cb_data);
-    REENTRANCE_UNLOCK();
-    if(status != NFCSTATUS_PENDING)
-    {
-      ALOGE("phLibNfc_RemoteDev_Connect(P2P) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-    }
-    TRACE("phLibNfc_RemoteDev_Connect(P2P) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-    /* Wait for callback response */
-    if(sem_wait(&cb_data.sem))
-    {
-       ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-       goto clean_and_return;
-    }
-
-    if(cb_data.status != NFCSTATUS_SUCCESS)
-    {
-        goto clean_and_return;
-    }
-
-    /* Set General Bytes */
-    target_cls.reset(e->GetObjectClass(o));
-
-    f = e->GetFieldID(target_cls.get(), "mGeneralBytes", "[B");
-
-    TRACE("General Bytes Length = %d", sGeneralBytes.length);
-    TRACE("General Bytes =");
-    for(i=0;i<sGeneralBytes.length;i++)
-    {
-      TRACE("0x%02x ", sGeneralBytes.buffer[i]);
-    }
-
-    generalBytes = e->NewByteArray(sGeneralBytes.length);
-
-    e->SetByteArrayRegion(generalBytes, 0,
-                         sGeneralBytes.length, 
-                         (jbyte *)sGeneralBytes.buffer);
-
-    e->SetObjectField(o, f, generalBytes);
-
-    result = JNI_TRUE;
-
-clean_and_return:
-    if (result != JNI_TRUE)
-    {
-       /* Restart the polling loop if the connection failed */
-       nfc_jni_restart_discovery_locked(nfc_jni_get_nat_ext(e));
-    }
-    nfc_cb_data_deinit(&cb_data);
-    CONCURRENCY_UNLOCK();
-    return result;
-}
-
-static jboolean com_android_nfc_NativeP2pDevice_doDisconnect(JNIEnv *e, jobject o)
-{
-    phLibNfc_Handle     handle = 0;
-    jboolean            result = JNI_FALSE;
-    NFCSTATUS           status;
-    struct nfc_jni_callback_data cb_data;
-
-    CONCURRENCY_LOCK();
-
-    handle = nfc_jni_get_p2p_device_handle(e, o);
-
-    /* Create the local semaphore */
-    if (!nfc_cb_data_init(&cb_data, NULL))
-    {
-       goto clean_and_return;
-    }
-
-    /* Disconnect */
-    TRACE("Disconnecting from target (handle = 0x%x)", handle);
-
-    /* NativeNfcTag waits for tag to leave the field here with presence check.
-     * We do not in P2P path because presence check is not safe while transceive may be
-     * in progress.
-     */
-
-    TRACE("phLibNfc_RemoteDev_Disconnect()");
-    REENTRANCE_LOCK();
-    status = phLibNfc_RemoteDev_Disconnect(handle, NFC_DISCOVERY_CONTINUE,nfc_jni_disconnect_callback, (void *)&cb_data);
-    REENTRANCE_UNLOCK();
-    if(status != NFCSTATUS_PENDING)
-    {
-        ALOGE("phLibNfc_RemoteDev_Disconnect() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-        if(status == NFCSTATUS_TARGET_NOT_CONNECTED)
-        {
-            ALOGE("phLibNfc_RemoteDev_Disconnect() failed: Target not connected");
-        }
-        else
-        {
-            ALOGE("phLibNfc_RemoteDev_Disconnect() failed");
-            nfc_jni_restart_discovery_locked(nfc_jni_get_nat_ext(e));
-        }
-
-        goto clean_and_return;
-    }
-    TRACE("phLibNfc_RemoteDev_Disconnect() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-    /* Wait for callback response */
-    if(sem_wait(&cb_data.sem))
-    {
-       ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-       goto clean_and_return;
-    }
-
-    /* Disconnect Status */
-    if(cb_data.status != NFCSTATUS_SUCCESS)
-    {
-        goto clean_and_return;
-    }
-
-    result = JNI_TRUE;
-
-clean_and_return:
-    /* Reset device connected flag */
-    device_connected_flag = 0;
-    nfc_cb_data_deinit(&cb_data);
-    CONCURRENCY_UNLOCK();
-    return result;
-}
-
-static jbyteArray com_android_nfc_NativeP2pDevice_doTransceive(JNIEnv *e,
-   jobject o, jbyteArray data)
-{
-   NFCSTATUS status;
-   uint8_t offset = 2;
-   uint8_t *buf;
-   uint32_t buflen;
-   phLibNfc_sTransceiveInfo_t transceive_info;
-   jbyteArray result = NULL;
-   phLibNfc_Handle handle = nfc_jni_get_p2p_device_handle(e, o);
-   phNfc_sData_t * receive_buffer = NULL;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, (void*)receive_buffer))
-   {
-      goto clean_and_return;
-   }
-
-   /* Transceive*/
-   TRACE("Transceive data to target (handle = 0x%x)", handle);
-
-   buf = (uint8_t *)e->GetByteArrayElements(data, NULL);
-   buflen = (uint32_t)e->GetArrayLength(data);
-   
-   TRACE("Buffer Length = %d\n", buflen);
-
-   transceive_info.sSendData.buffer = buf; //+ offset;
-   transceive_info.sSendData.length = buflen; //- offset;
-   transceive_info.sRecvData.buffer = (uint8_t*)malloc(1024);
-   transceive_info.sRecvData.length = 1024;
-
-   if(transceive_info.sRecvData.buffer == NULL)
-   {
-      goto clean_and_return;
-   }
-
-   TRACE("phLibNfc_RemoteDev_Transceive(P2P)");
-   REENTRANCE_LOCK();
-   status = phLibNfc_RemoteDev_Transceive(handle, &transceive_info, nfc_jni_transceive_callback, (void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_Transceive(P2P) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;
-   }
-   TRACE("phLibNfc_RemoteDev_Transceive(P2P) returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   /* Copy results back to Java */
-   result = e->NewByteArray(receive_buffer->length);
-   if(result != NULL)
-      e->SetByteArrayRegion(result, 0,
-         receive_buffer->length,
-         (jbyte *)receive_buffer->buffer);
-
-clean_and_return:
-   if(transceive_info.sRecvData.buffer != NULL)
-   {
-      free(transceive_info.sRecvData.buffer);
-   }
-
-   e->ReleaseByteArrayElements(data,
-      (jbyte *)transceive_info.sSendData.buffer, JNI_ABORT);
-
-   nfc_cb_data_deinit(&cb_data);
-
-   CONCURRENCY_UNLOCK();
-
-   return result;
-}
-
-
-static jbyteArray com_android_nfc_NativeP2pDevice_doReceive(
-   JNIEnv *e, jobject o)
-{
-   NFCSTATUS status;
-   struct timespec ts;
-   phLibNfc_Handle handle;
-   jbyteArray buf = NULL;
-   static phNfc_sData_t *data;
-   struct nfc_jni_callback_data cb_data;
-
-   CONCURRENCY_LOCK();
-
-   handle = nfc_jni_get_p2p_device_handle(e, o);
-   
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, (void*)data))
-   {
-      goto clean_and_return;
-   }
-
-   /* Receive */
-   TRACE("phLibNfc_RemoteDev_Receive()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_RemoteDev_Receive(handle, nfc_jni_receive_callback,(void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_Receive() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;   
-   }
-   TRACE("phLibNfc_RemoteDev_Receive() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(data == NULL)
-   {
-      goto clean_and_return;
-   }
-
-   buf = e->NewByteArray(data->length);
-   e->SetByteArrayRegion(buf, 0, data->length, (jbyte *)data->buffer);
-
-clean_and_return:
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return buf;
-}
-
-static jboolean com_android_nfc_NativeP2pDevice_doSend(
-   JNIEnv *e, jobject o, jbyteArray buf)
-{
-   NFCSTATUS status;
-   phNfc_sData_t data;
-   jboolean result = JNI_FALSE;
-   struct nfc_jni_callback_data cb_data;
-   
-   phLibNfc_Handle handle = nfc_jni_get_p2p_device_handle(e, o);
-   
-   CONCURRENCY_LOCK();
-
-   /* Create the local semaphore */
-   if (!nfc_cb_data_init(&cb_data, NULL))
-   {
-      goto clean_and_return;
-   }
-
-   /* Send */
-   TRACE("Send data to the Initiator (handle = 0x%x)", handle);
-
-   data.length = (uint32_t)e->GetArrayLength(buf);
-   data.buffer = (uint8_t *)e->GetByteArrayElements(buf, NULL);
-
-   TRACE("phLibNfc_RemoteDev_Send()");
-   REENTRANCE_LOCK();
-   status = phLibNfc_RemoteDev_Send(handle, &data, nfc_jni_send_callback,(void *)&cb_data);
-   REENTRANCE_UNLOCK();
-   if(status != NFCSTATUS_PENDING)
-   {
-      ALOGE("phLibNfc_RemoteDev_Send() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-      goto clean_and_return;   
-   }
-   TRACE("phLibNfc_RemoteDev_Send() returned 0x%04x[%s]", status, nfc_jni_get_status_name(status));
-
-   /* Wait for callback response */
-   if(sem_wait(&cb_data.sem))
-   {
-      ALOGE("Failed to wait for semaphore (errno=0x%08x)", errno);
-      goto clean_and_return;
-   }
-
-   if(cb_data.status != NFCSTATUS_SUCCESS)
-   {
-      goto clean_and_return;
-   }
-
-   result = JNI_TRUE;
-
-clean_and_return:
-   if (result != JNI_TRUE)
-   {
-      e->ReleaseByteArrayElements(buf, (jbyte *)data.buffer, JNI_ABORT);
-   }
-   nfc_cb_data_deinit(&cb_data);
-   CONCURRENCY_UNLOCK();
-   return result;
-}
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gMethods[] =
-{
-   {"doConnect", "()Z",
-      (void *)com_android_nfc_NativeP2pDevice_doConnect},
-   {"doDisconnect", "()Z",
-      (void *)com_android_nfc_NativeP2pDevice_doDisconnect},
-   {"doTransceive", "([B)[B",
-      (void *)com_android_nfc_NativeP2pDevice_doTransceive},
-   {"doReceive", "()[B",
-      (void *)com_android_nfc_NativeP2pDevice_doReceive},
-   {"doSend", "([B)Z",
-      (void *)com_android_nfc_NativeP2pDevice_doSend},
-};
-
-int register_com_android_nfc_NativeP2pDevice(JNIEnv *e)
-{
-   return jniRegisterNativeMethods(e,
-      "com/android/nfc/dhimpl/NativeP2pDevice",
-      gMethods, NELEM(gMethods));
-}
-
-} // namepspace android
diff --git a/nxp/jni/com_android_nfc_list.cpp b/nxp/jni/com_android_nfc_list.cpp
deleted file mode 100644
index 1d9819f..0000000
--- a/nxp/jni/com_android_nfc_list.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <com_android_nfc_list.h>
-#include <com_android_nfc.h>
-#include <errno.h>
-#include <malloc.h>
-#include <pthread.h>
-#include <cutils/log.h>
-
-#undef LOG_TAG
-#define LOG_TAG "NFC_LIST"
-
-bool listInit(listHead* pList)
-{
-   pList->pFirst = NULL;
-   if(pthread_mutex_init(&pList->mutex, NULL) == -1)
-   {
-      ALOGE("Mutex creation failed (errno=0x%08x)", errno);
-      return false;
-   }
-
-   return true;
-}
-
-bool listDestroy(listHead* pList)
-{
-   bool bListNotEmpty = true;
-   while (bListNotEmpty) {
-      bListNotEmpty = listGetAndRemoveNext(pList, NULL);
-   }
-
-   if(pthread_mutex_destroy(&pList->mutex) == -1)
-   {
-      ALOGE("Mutex destruction failed (errno=0x%08x)", errno);
-      return false;
-   }
-
-   return true;
-}
-
-bool listAdd(listHead* pList, void* pData)
-{
-   struct listNode* pNode;
-   struct listNode* pLastNode;
-   bool result;
-
-   /* Create node */
-   pNode = (struct listNode*)malloc(sizeof(listNode));
-   if (pNode == NULL)
-   {
-      result = false;
-      ALOGE("Failed to malloc");
-      goto clean_and_return;
-   }
-   TRACE("Allocated node: %8p (%8p)", pNode, pData);
-   pNode->pData = pData;
-   pNode->pNext = NULL;
-
-   pthread_mutex_lock(&pList->mutex);
-
-   /* Add the node to the list */
-   if (pList->pFirst == NULL)
-   {
-       /* Set the node as the head */
-      pList->pFirst = pNode;
-   }
-   else
-   {
-      /* Seek to the end of the list */
-      pLastNode = pList->pFirst;
-      while(pLastNode->pNext != NULL)
-      {
-          pLastNode = pLastNode->pNext;
-      }
-
-      /* Add the node to the current list */
-      pLastNode->pNext = pNode;
-   }
-
-   result = true;
-
-clean_and_return:
-   pthread_mutex_unlock(&pList->mutex);
-   return result;
-}
-
-bool listRemove(listHead* pList, void* pData)
-{
-   struct listNode* pNode;
-   struct listNode* pRemovedNode;
-   bool result;
-
-   pthread_mutex_lock(&pList->mutex);
-
-   if (pList->pFirst == NULL)
-   {
-      /* Empty list */
-      ALOGE("Failed to deallocate (list empty)");
-      result = false;
-      goto clean_and_return;
-   }
-
-   pNode = pList->pFirst;
-   if (pList->pFirst->pData == pData)
-   {
-      /* Get the removed node */
-      pRemovedNode = pNode;
-
-      /* Remove the first node */
-      pList->pFirst = pList->pFirst->pNext;
-   }
-   else
-   {
-      while (pNode->pNext != NULL)
-      {
-         if (pNode->pNext->pData == pData)
-         {
-            /* Node found ! */
-            break;
-         }
-         pNode = pNode->pNext;
-      }
-
-      if (pNode->pNext == NULL)
-      {
-         /* Node not found */
-          result = false;
-          ALOGE("Failed to deallocate (not found %8p)", pData);
-          goto clean_and_return;
-      }
-
-      /* Get the removed node */
-      pRemovedNode = pNode->pNext;
-
-      /* Remove the node from the list */
-      pNode->pNext = pNode->pNext->pNext;
-   }
-
-   /* Deallocate the node */
-   TRACE("Deallocating node: %8p (%8p)", pRemovedNode, pRemovedNode->pData);
-   free(pRemovedNode);
-
-   result = true;
-
-clean_and_return:
-   pthread_mutex_unlock(&pList->mutex);
-   return result;
-}
-
-bool listGetAndRemoveNext(listHead* pList, void** ppData)
-{
-   struct listNode* pNode;
-   bool result;
-
-   pthread_mutex_lock(&pList->mutex);
-
-   if (pList->pFirst)
-   {
-      /* Empty list */
-      ALOGE("Failed to deallocate (list empty)");
-      result = false;
-      goto clean_and_return;
-   }
-
-   /* Work on the first node */
-   pNode = pList->pFirst;
-
-   /* Return the data */
-   if (ppData != NULL)
-   {
-      *ppData = pNode->pData;
-   }
-
-   /* Remove and deallocate the node */
-   pList->pFirst = pNode->pNext;
-   TRACE("Deallocating node: %8p (%8p)", pNode, pNode->pData);
-   free(pNode);
-
-   result = true;
-
-clean_and_return:
-   listDump(pList);
-   pthread_mutex_unlock(&pList->mutex);
-   return result;
-}
-
-void listDump(listHead* pList)
-{
-   struct listNode* pNode = pList->pFirst;
-
-   TRACE("Node dump:");
-   while (pNode != NULL)
-   {
-      TRACE("- %8p (%8p)", pNode, pNode->pData);
-      pNode = pNode->pNext;
-   }
-}
diff --git a/nxp/jni/com_android_nfc_list.h b/nxp/jni/com_android_nfc_list.h
deleted file mode 100644
index 22b4f09..0000000
--- a/nxp/jni/com_android_nfc_list.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __COM_ANDROID_NFC_LIST_H__
-#define __COM_ANDROID_NFC_LIST_H__
-
-#include <pthread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct listNode
-{
-   void* pData;
-   struct listNode* pNext;
-};
-
-struct listHead
-{
-    listNode* pFirst;
-    pthread_mutex_t mutex;
-};
-
-bool listInit(listHead* pList);
-bool listDestroy(listHead* pList);
-bool listAdd(listHead* pList, void* pData);
-bool listRemove(listHead* pList, void* pData);
-bool listGetAndRemoveNext(listHead* pList, void** ppData);
-void listDump(listHead* pList);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __COM_ANDROID_NFC_LIST_H__ */
diff --git a/nxp/src/com/android/nfc/dhimpl/NativeLlcpConnectionlessSocket.java b/nxp/src/com/android/nfc/dhimpl/NativeLlcpConnectionlessSocket.java
deleted file mode 100755
index db78496..0000000
--- a/nxp/src/com/android/nfc/dhimpl/NativeLlcpConnectionlessSocket.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.nfc.dhimpl;
-
-import com.android.nfc.DeviceHost;
-import com.android.nfc.LlcpPacket;
-
-import java.io.IOException;
-
-/**
- * LlcpConnectionlessSocket represents a LLCP Connectionless object to be used
- * in a connectionless communication
- */
-public class NativeLlcpConnectionlessSocket implements DeviceHost.LlcpConnectionlessSocket {
-
-    private int mHandle;
-    private int mSap;
-    private int mLinkMiu;
-
-    public NativeLlcpConnectionlessSocket() { }
-
-    public native boolean doSendTo(int sap, byte[] data);
-
-    public native LlcpPacket doReceiveFrom(int linkMiu);
-
-    public native boolean doClose();
-
-    @Override
-    public int getLinkMiu(){
-        return mLinkMiu;
-    }
-
-    @Override
-    public int getSap(){
-        return mSap;
-    }
-
-    @Override
-    public void send(int sap, byte[] data) throws IOException {
-        if (!doSendTo(sap, data)) {
-            throw new IOException();
-        }
-    }
-
-    @Override
-    public LlcpPacket receive() throws IOException {
-        LlcpPacket packet = doReceiveFrom(mLinkMiu);
-        if (packet == null) {
-            throw new IOException();
-        }
-        return packet;
-    }
-
-    public int getHandle(){
-        return mHandle;
-    }
-
-    @Override
-    public void close() throws IOException {
-        if (!doClose()) {
-            throw new IOException();
-        }
-    }
-}
diff --git a/nxp/src/com/android/nfc/dhimpl/NativeLlcpServiceSocket.java b/nxp/src/com/android/nfc/dhimpl/NativeLlcpServiceSocket.java
deleted file mode 100755
index 3a7e57f..0000000
--- a/nxp/src/com/android/nfc/dhimpl/NativeLlcpServiceSocket.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.nfc.dhimpl;
-
-import com.android.nfc.DeviceHost;
-import com.android.nfc.DeviceHost.LlcpSocket;
-
-import java.io.IOException;
-
-/**
- * LlcpServiceSocket represents a LLCP Service to be used in a
- * Connection-oriented communication
- */
-public class NativeLlcpServiceSocket implements DeviceHost.LlcpServerSocket {
-    private int mHandle;
-    private int mLocalMiu;
-    private int mLocalRw;
-    private int mLocalLinearBufferLength;
-    private int mSap;
-    private String mServiceName;
-
-    public NativeLlcpServiceSocket(){ }
-
-    private native NativeLlcpSocket doAccept(int miu, int rw, int linearBufferLength);
-    @Override
-    public LlcpSocket accept() throws IOException {
-        LlcpSocket socket = doAccept(mLocalMiu, mLocalRw, mLocalLinearBufferLength);
-        if (socket == null) throw new IOException();
-        return socket;
-    }
-
-    private native boolean doClose();
-    @Override
-    public void close() throws IOException {
-        if (!doClose()) {
-            throw new IOException();
-        }
-    }
-}
diff --git a/nxp/src/com/android/nfc/dhimpl/NativeLlcpSocket.java b/nxp/src/com/android/nfc/dhimpl/NativeLlcpSocket.java
deleted file mode 100755
index 69506c5..0000000
--- a/nxp/src/com/android/nfc/dhimpl/NativeLlcpSocket.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.nfc.dhimpl;
-
-import com.android.nfc.DeviceHost;
-
-import java.io.IOException;
-
-/**
- * LlcpClientSocket represents a LLCP Connection-Oriented client to be used in a
- * connection-oriented communication
- */
-public class NativeLlcpSocket implements DeviceHost.LlcpSocket {
-    private int mHandle;
-    private int mSap;
-    private int mLocalMiu;
-    private int mLocalRw;
-
-    public NativeLlcpSocket(){ }
-
-    private native boolean doConnect(int nSap);
-    @Override
-    public void connectToSap(int sap) throws IOException {
-        if (!doConnect(sap)) {
-            throw new IOException();
-        }
-    }
-
-    private native boolean doConnectBy(String sn);
-    @Override
-    public void connectToService(String serviceName) throws IOException {
-        if (!doConnectBy(serviceName)) {
-            throw new IOException();
-        }
-    }
-
-    private native boolean doClose();
-    @Override
-    public void close() throws IOException {
-        if (!doClose()) {
-            throw new IOException();
-        }
-    }
-
-    private native boolean doSend(byte[] data);
-    @Override
-    public void send(byte[] data) throws IOException {
-        if (!doSend(data)) {
-            throw new IOException();
-        }
-    }
-
-    private native int doReceive(byte[] recvBuff);
-    @Override
-    public int receive(byte[] recvBuff) throws IOException {
-        int receiveLength = doReceive(recvBuff);
-        if (receiveLength == -1) {
-            throw new IOException();
-        }
-        return receiveLength;
-    }
-
-    private native int doGetRemoteSocketMiu();
-    @Override
-    public int getRemoteMiu() { return doGetRemoteSocketMiu(); }
-
-    private native int doGetRemoteSocketRw();
-    @Override
-    public int getRemoteRw() { return doGetRemoteSocketRw(); }
-
-    @Override
-    public int getLocalSap(){
-        return mSap;
-    }
-
-    @Override
-    public int getLocalMiu(){
-        return mLocalMiu;
-    }
-
-    @Override
-    public int getLocalRw(){
-        return mLocalRw;
-    }
-}
diff --git a/nxp/src/com/android/nfc/dhimpl/NativeNfcManager.java b/nxp/src/com/android/nfc/dhimpl/NativeNfcManager.java
deleted file mode 100755
index 60a08a2..0000000
--- a/nxp/src/com/android/nfc/dhimpl/NativeNfcManager.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.nfc.dhimpl;
-
-import com.android.nfc.DeviceHost;
-import com.android.nfc.LlcpException;
-
-import android.annotation.SdkConstant;
-import android.annotation.SdkConstant.SdkConstantType;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.nfc.ErrorCodes;
-import android.nfc.tech.Ndef;
-import android.nfc.tech.TagTechnology;
-import android.util.Log;
-import com.android.nfc.NfcDiscoveryParameters;
-
-import java.io.File;
-
-/**
- * Native interface to the NFC Manager functions
- */
-public class NativeNfcManager implements DeviceHost {
-    private static final String TAG = "NativeNfcManager";
-
-    private static final String NFC_CONTROLLER_FIRMWARE_FILE_NAME = "/vendor/firmware/libpn544_fw.so";
-
-    static final String PREF = "NxpDeviceHost";
-
-    private static final String PREF_FIRMWARE_MODTIME = "firmware_modtime";
-    private static final long FIRMWARE_MODTIME_DEFAULT = -1;
-
-    static final String DRIVER_NAME = "nxp";
-
-    static final int DEFAULT_LLCP_MIU = 128;
-    static final int DEFAULT_LLCP_RWSIZE = 1;
-
-    static {
-        System.loadLibrary("nfc_jni");
-    }
-
-    /* Native structure */
-    private long mNative;
-
-    private final DeviceHostListener mListener;
-    private final Context mContext;
-
-    public NativeNfcManager(Context context, DeviceHostListener listener) {
-        mListener = listener;
-        initializeNativeStructure();
-        mContext = context;
-    }
-
-    public native boolean initializeNativeStructure();
-
-    private native boolean doDownload();
-
-    public native int doGetLastError();
-
-    @Override
-    public void checkFirmware() {
-        // Check that the NFC controller firmware is up to date.  This
-        // ensures that firmware updates are applied in a timely fashion,
-        // and makes it much less likely that the user will have to wait
-        // for a firmware download when they enable NFC in the settings
-        // app.  Firmware download can take some time, so this should be
-        // run in a separate thread.
-
-        // check the timestamp of the firmware file
-        File firmwareFile;
-        int nbRetry = 0;
-        try {
-            firmwareFile = new File(NFC_CONTROLLER_FIRMWARE_FILE_NAME);
-        } catch(NullPointerException npe) {
-            Log.e(TAG,"path to firmware file was null");
-            return;
-        }
-
-        long modtime = firmwareFile.lastModified();
-
-        SharedPreferences prefs = mContext.getSharedPreferences(PREF, Context.MODE_PRIVATE);
-        long prev_fw_modtime = prefs.getLong(PREF_FIRMWARE_MODTIME, FIRMWARE_MODTIME_DEFAULT);
-        Log.d(TAG,"prev modtime: " + prev_fw_modtime);
-        Log.d(TAG,"new modtime: " + modtime);
-        if (prev_fw_modtime == modtime) {
-            return;
-        }
-
-        // FW download.
-        while(nbRetry < 5) {
-            Log.d(TAG,"Perform Download");
-            if(doDownload()) {
-                Log.d(TAG,"Download Success");
-                // Now that we've finished updating the firmware, save the new modtime.
-                prefs.edit().putLong(PREF_FIRMWARE_MODTIME, modtime).apply();
-                break;
-            } else {
-                Log.d(TAG,"Download Failed");
-                nbRetry++;
-            }
-        }
-    }
-
-    private native boolean doInitialize();
-
-    @Override
-    public boolean initialize() {
-        return doInitialize();
-    }
-
-    private native boolean doDeinitialize();
-
-    @Override
-    public boolean deinitialize() {
-        return doDeinitialize();
-    }
-
-    @Override
-    public String getName() {
-        return DRIVER_NAME;
-    }
-
-    @Override
-    public boolean sendRawFrame(byte[] data) {
-        return false;
-    }
-
-    @Override
-    public boolean routeAid(byte[] aid, int route) {
-        return false;
-    }
-
-    @Override
-    public boolean unrouteAid(byte[] aid) {
-       return false;
-    }
-
-    @Override
-    public boolean commitRouting() {
-        return false;
-    }
-
-    @Override
-    public void registerT3tIdentifier(byte[] t3tIdentifier) {
-        return;
-    }
-
-    @Override
-    public void deregisterT3tIdentifier(byte[] t3tIdentifier) {
-        return;
-    }
-
-    @Override
-    public void clearT3tIdentifiersCache() {
-        return;
-    }
-
-    @Override
-    public int getLfT3tMax() {
-        return 0;
-    }
-
-    private native void doEnableDiscovery(int techMask,
-                                          boolean enableLowPowerPolling,
-                                          boolean enableReaderMode,
-                                          boolean enableP2p,
-                                          boolean restart);
-    @Override
-    public void enableDiscovery(NfcDiscoveryParameters params, boolean restart) {
-        doEnableDiscovery(params.getTechMask(), params.shouldEnableLowPowerDiscovery(),
-                params.shouldEnableReaderMode(), params.shouldEnableP2p(), restart);
-    }
-
-    @Override
-    public native void disableDiscovery();
-
-    private native NativeLlcpConnectionlessSocket doCreateLlcpConnectionlessSocket(int nSap,
-            String sn);
-
-    @Override
-    public LlcpConnectionlessSocket createLlcpConnectionlessSocket(int nSap, String sn)
-            throws LlcpException {
-        LlcpConnectionlessSocket socket = doCreateLlcpConnectionlessSocket(nSap, sn);
-        if (socket != null) {
-            return socket;
-        } else {
-            /* Get Error Status */
-            int error = doGetLastError();
-
-            Log.d(TAG, "failed to create llcp socket: " + ErrorCodes.asString(error));
-
-            switch (error) {
-                case ErrorCodes.ERROR_BUFFER_TO_SMALL:
-                case ErrorCodes.ERROR_INSUFFICIENT_RESOURCES:
-                    throw new LlcpException(error);
-                default:
-                    throw new LlcpException(ErrorCodes.ERROR_SOCKET_CREATION);
-            }
-        }
-    }
-
-    private native NativeLlcpServiceSocket doCreateLlcpServiceSocket(int nSap, String sn, int miu,
-            int rw, int linearBufferLength);
-    @Override
-    public LlcpServerSocket createLlcpServerSocket(int nSap, String sn, int miu,
-            int rw, int linearBufferLength) throws LlcpException {
-        LlcpServerSocket socket = doCreateLlcpServiceSocket(nSap, sn, miu, rw, linearBufferLength);
-        if (socket != null) {
-            return socket;
-        } else {
-            /* Get Error Status */
-            int error = doGetLastError();
-
-            Log.d(TAG, "failed to create llcp socket: " + ErrorCodes.asString(error));
-
-            switch (error) {
-                case ErrorCodes.ERROR_BUFFER_TO_SMALL:
-                case ErrorCodes.ERROR_INSUFFICIENT_RESOURCES:
-                    throw new LlcpException(error);
-                default:
-                    throw new LlcpException(ErrorCodes.ERROR_SOCKET_CREATION);
-            }
-        }
-    }
-
-    private native NativeLlcpSocket doCreateLlcpSocket(int sap, int miu, int rw,
-            int linearBufferLength);
-    @Override
-    public LlcpSocket createLlcpSocket(int sap, int miu, int rw,
-            int linearBufferLength) throws LlcpException {
-        LlcpSocket socket = doCreateLlcpSocket(sap, miu, rw, linearBufferLength);
-        if (socket != null) {
-            return socket;
-        } else {
-            /* Get Error Status */
-            int error = doGetLastError();
-
-            Log.d(TAG, "failed to create llcp socket: " + ErrorCodes.asString(error));
-
-            switch (error) {
-                case ErrorCodes.ERROR_BUFFER_TO_SMALL:
-                case ErrorCodes.ERROR_INSUFFICIENT_RESOURCES:
-                    throw new LlcpException(error);
-                default:
-                    throw new LlcpException(ErrorCodes.ERROR_SOCKET_CREATION);
-            }
-        }
-    }
-
-    @Override
-    public native boolean doCheckLlcp();
-
-    @Override
-    public native boolean doActivateLlcp();
-
-    private native void doResetTimeouts();
-
-    @Override
-    public void resetTimeouts() {
-        doResetTimeouts();
-    }
-
-    @Override
-    public native void doAbort();
-
-    private native boolean doSetTimeout(int tech, int timeout);
-    @Override
-    public boolean setTimeout(int tech, int timeout) {
-        return doSetTimeout(tech, timeout);
-    }
-
-    private native int doGetTimeout(int tech);
-    @Override
-    public int getTimeout(int tech) {
-        return doGetTimeout(tech);
-    }
-
-
-    @Override
-    public boolean canMakeReadOnly(int ndefType) {
-        return (ndefType == Ndef.TYPE_1 || ndefType == Ndef.TYPE_2 ||
-                ndefType == Ndef.TYPE_MIFARE_CLASSIC);
-    }
-
-    @Override
-    public int getMaxTransceiveLength(int technology) {
-        switch (technology) {
-            case (TagTechnology.NFC_A):
-            case (TagTechnology.MIFARE_CLASSIC):
-            case (TagTechnology.MIFARE_ULTRALIGHT):
-                return 253; // PN544 RF buffer = 255 bytes, subtract two for CRC
-            case (TagTechnology.NFC_B):
-                return 0; // PN544 does not support transceive of raw NfcB
-            case (TagTechnology.NFC_V):
-                return 253; // PN544 RF buffer = 255 bytes, subtract two for CRC
-            case (TagTechnology.ISO_DEP):
-                /* The maximum length of a normal IsoDep frame consists of:
-                 * CLA, INS, P1, P2, LC, LE + 255 payload bytes = 261 bytes
-                 * such a frame is supported. Extended length frames however
-                 * are not supported.
-                 */
-                return 261; // Will be automatically split in two frames on the RF layer
-            case (TagTechnology.NFC_F):
-                return 252; // PN544 RF buffer = 255 bytes, subtract one for SoD, two for CRC
-            default:
-                return 0;
-        }
-
-    }
-
-    private native void doSetP2pInitiatorModes(int modes);
-    @Override
-    public void setP2pInitiatorModes(int modes) {
-        doSetP2pInitiatorModes(modes);
-    }
-
-    private native void doSetP2pTargetModes(int modes);
-    @Override
-    public void setP2pTargetModes(int modes) {
-        doSetP2pTargetModes(modes);
-    }
-
-    @Override
-    public boolean enableScreenOffSuspend() {
-        // Snooze mode not supported on NXP silicon
-        Log.i(TAG, "Snooze mode is not supported on NXP NFCC");
-        return false;
-    }
-
-    @Override
-    public boolean disableScreenOffSuspend() {
-        // Snooze mode not supported on NXP silicon
-        Log.i(TAG, "Snooze mode is not supported on NXP NFCC");
-        return true;
-    }
-
-    @Override
-    public boolean getExtendedLengthApdusSupported() {
-        // Not supported on the PN544
-        return false;
-    }
-
-    @Override
-    public int getDefaultLlcpMiu() {
-        return DEFAULT_LLCP_MIU;
-    }
-
-    @Override
-    public int getDefaultLlcpRwSize() {
-        return DEFAULT_LLCP_RWSIZE;
-    }
-
-    private native String doDump();
-    @Override
-    public String dump() {
-        return doDump();
-    }
-
-    /**
-     * Notifies Ndef Message (TODO: rename into notifyTargetDiscovered)
-     */
-    private void notifyNdefMessageListeners(NativeNfcTag tag) {
-        mListener.onRemoteEndpointDiscovered(tag);
-    }
-
-    /**
-     * Notifies P2P Device detected, to activate LLCP link
-     */
-    private void notifyLlcpLinkActivation(NativeP2pDevice device) {
-        mListener.onLlcpLinkActivated(device);
-    }
-
-    /**
-     * Notifies P2P Device detected, to activate LLCP link
-     */
-    private void notifyLlcpLinkDeactivated(NativeP2pDevice device) {
-        mListener.onLlcpLinkDeactivated(device);
-    }
-
-    private void notifyHostEmuActivated(int technology) {
-        mListener.onHostCardEmulationActivated(technology);
-    }
-
-    private void notifyHostEmuData(int technology, byte[] data) {
-        mListener.onHostCardEmulationData(technology, data);
-    }
-
-    private void notifyHostEmuDeactivated(int technology) {
-        mListener.onHostCardEmulationDeactivated(technology);
-    }
-
-    private void notifyRfFieldActivated() {
-        mListener.onRemoteFieldActivated();
-    }
-
-    private void notifyRfFieldDeactivated() {
-        mListener.onRemoteFieldDeactivated();
-    }
-}
diff --git a/nxp/src/com/android/nfc/dhimpl/NativeNfcTag.java b/nxp/src/com/android/nfc/dhimpl/NativeNfcTag.java
deleted file mode 100755
index 66d6fb7..0000000
--- a/nxp/src/com/android/nfc/dhimpl/NativeNfcTag.java
+++ /dev/null
@@ -1,821 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.nfc.dhimpl;
-
-import com.android.nfc.DeviceHost;
-import com.android.nfc.DeviceHost.TagEndpoint;
-
-import android.nfc.FormatException;
-import android.nfc.NdefMessage;
-import android.nfc.tech.IsoDep;
-import android.nfc.tech.MifareClassic;
-import android.nfc.tech.MifareUltralight;
-import android.nfc.tech.Ndef;
-import android.nfc.tech.NfcA;
-import android.nfc.tech.NfcB;
-import android.nfc.tech.NfcF;
-import android.nfc.tech.NfcV;
-import android.nfc.tech.TagTechnology;
-import android.os.Bundle;
-import android.util.Log;
-
-/**
- * Native interface to the NFC tag functions
- */
-public class NativeNfcTag implements TagEndpoint {
-    static final boolean DBG = false;
-
-    static final int STATUS_CODE_TARGET_LOST = 146;
-
-    private int[] mTechList;
-    private int[] mTechHandles;
-    private int[] mTechLibNfcTypes;
-    private Bundle[] mTechExtras;
-    private byte[][] mTechPollBytes;
-    private byte[][] mTechActBytes;
-    private byte[] mUid;
-
-    // mConnectedHandle stores the *real* libnfc handle
-    // that we're connected to.
-    private int mConnectedHandle;
-
-    // mConnectedTechIndex stores to which technology
-    // the upper layer stack is connected. Note that
-    // we may be connected to a libnfchandle without being
-    // connected to a technology - technology changes
-    // may occur runtime, whereas the underlying handle
-    // could stay present. Usually all technologies are on the
-    // same handle, with the exception of multi-protocol
-    // tags.
-    private int mConnectedTechIndex; // Index in mTechHandles
-
-    private final String TAG = "NativeNfcTag";
-
-    private boolean mIsPresent; // Whether the tag is known to be still present
-
-    private PresenceCheckWatchdog mWatchdog;
-    class PresenceCheckWatchdog extends Thread {
-
-        private final DeviceHost.TagDisconnectedCallback tagDisconnectedCallback;
-        private int watchdogTimeout;
-
-        private boolean isPresent = true;
-        private boolean isStopped = false;
-        private boolean isPaused = false;
-        private boolean doCheck = true;
-
-        public PresenceCheckWatchdog(int presenceCheckDelay, DeviceHost.TagDisconnectedCallback callback) {
-            watchdogTimeout = presenceCheckDelay;
-            tagDisconnectedCallback = callback;
-        }
-
-        public synchronized void pause() {
-            isPaused = true;
-            doCheck = false;
-            this.notifyAll();
-        }
-
-        public synchronized void doResume() {
-            isPaused = false;
-            // We don't want to resume presence checking immediately,
-            // but go through at least one more wait period.
-            doCheck = false;
-            this.notifyAll();
-        }
-
-        public synchronized void end() {
-            isStopped = true;
-            doCheck = false;
-            this.notifyAll();
-        }
-
-        @Override
-        public void run() {
-            if (DBG) Log.d(TAG, "Starting background presence check");
-            synchronized (this) {
-                while (isPresent && !isStopped) {
-                    try {
-                        if (!isPaused) {
-                            doCheck = true;
-                        }
-                        this.wait(watchdogTimeout);
-                        if (doCheck) {
-                            isPresent = doPresenceCheck();
-                        } else {
-                            // 1) We are paused, waiting for unpause
-                            // 2) We just unpaused, do pres check in next iteration
-                            //       (after watchdogTimeout ms sleep)
-                            // 3) We just set the timeout, wait for this timeout
-                            //       to expire once first.
-                            // 4) We just stopped, exit loop anyway
-                        }
-                    } catch (InterruptedException e) {
-                        // Activity detected, loop
-                    }
-                }
-            }
-
-            synchronized (NativeNfcTag.this) {
-                mIsPresent = false;
-            }
-            // Restart the polling loop
-
-            Log.d(TAG, "Tag lost, restarting polling loop");
-            doDisconnect();
-            if (tagDisconnectedCallback != null) {
-                tagDisconnectedCallback.onTagDisconnected(mConnectedHandle);
-            }
-            if (DBG) Log.d(TAG, "Stopping background presence check");
-        }
-    }
-
-    private native int doConnect(int handle);
-    public synchronized int connectWithStatus(int technology) {
-        if (technology == TagTechnology.NFC_B) {
-            // Not supported by PN544
-            return -1;
-        }
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        int status = -1;
-        for (int i = 0; i < mTechList.length; i++) {
-            if (mTechList[i] == technology) {
-                // Get the handle and connect, if not already connected
-                if (mConnectedHandle != mTechHandles[i]) {
-                    // We're not yet connected to this handle, there are
-                    // a few scenario's here:
-                    // 1) We are not connected to anything yet - allow
-                    // 2) We are connected to a technology which has
-                    //    a different handle (multi-protocol tag); we support
-                    //    switching to that.
-                    if (mConnectedHandle == -1) {
-                        // Not connected yet
-                        status = doConnect(mTechHandles[i]);
-                    } else {
-                        // Connect to a tech with a different handle
-                        status = reconnectWithStatus(mTechHandles[i]);
-                    }
-                    if (status == 0) {
-                        mConnectedHandle = mTechHandles[i];
-                        mConnectedTechIndex = i;
-                    }
-                } else {
-                    // 1) We are connected to a technology which has the same
-                    //    handle; we do not support connecting at a different
-                    //    level (libnfc auto-activates to the max level on
-                    //    any handle).
-                    // 2) We are connecting to the ndef technology - always
-                    //    allowed.
-                    if ((technology == TagTechnology.NDEF) ||
-                            (technology == TagTechnology.NDEF_FORMATABLE)) {
-                        status = 0;
-                    } else {
-                        if ((technology != TagTechnology.ISO_DEP) &&
-                            (hasTechOnHandle(TagTechnology.ISO_DEP, mTechHandles[i]))) {
-                            // Don't allow to connect a -4 tag at a different level
-                            // than IsoDep, as this is not supported by
-                            // libNFC.
-                            status = -1;
-                        } else {
-                            status = 0;
-                        }
-                    }
-                    if (status == 0) {
-                        mConnectedTechIndex = i;
-                        // Handle was already identical
-                    }
-                }
-                break;
-            }
-        }
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return status;
-    }
-    @Override
-    public synchronized boolean connect(int technology) {
-        return connectWithStatus(technology) == 0;
-    }
-
-    @Override
-    public synchronized void startPresenceChecking(int presenceCheckDelay,
-                                                   DeviceHost.TagDisconnectedCallback callback) {
-        // Once we start presence checking, we allow the upper layers
-        // to know the tag is in the field.
-        mIsPresent = true;
-        if (mConnectedTechIndex == -1 && mTechList.length > 0) {
-            connect(mTechList[0]);
-        }
-        if (mWatchdog == null) {
-            mWatchdog = new PresenceCheckWatchdog(presenceCheckDelay, callback);
-            mWatchdog.start();
-        }
-    }
-
-    @Override
-    public synchronized boolean isPresent() {
-        // Returns whether the tag is still in the field to the best
-        // of our knowledge.
-        return mIsPresent;
-    }
-    native boolean doDisconnect();
-    @Override
-    public synchronized boolean disconnect() {
-        boolean result = false;
-
-        mIsPresent = false;
-        if (mWatchdog != null) {
-            // Watchdog has already disconnected or will do it
-            mWatchdog.end();
-            try {
-                mWatchdog.join();
-            } catch (InterruptedException e) {
-                // Should never happen.
-            }
-            mWatchdog = null;
-            result = true;
-        } else {
-            result = doDisconnect();
-        }
-
-        mConnectedTechIndex = -1;
-        mConnectedHandle = -1;
-        return result;
-    }
-
-    native int doReconnect();
-    public synchronized int reconnectWithStatus() {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        int status = doReconnect();
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return status;
-    }
-    @Override
-    public synchronized boolean reconnect() {
-        return reconnectWithStatus() == 0;
-    }
-
-    native int doHandleReconnect(int handle);
-    public synchronized int reconnectWithStatus(int handle) {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        int status = doHandleReconnect(handle);
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return status;
-    }
-
-    private native byte[] doTransceive(byte[] data, boolean raw, int[] returnCode);
-    @Override
-    public synchronized byte[] transceive(byte[] data, boolean raw, int[] returnCode) {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        byte[] result = doTransceive(data, raw, returnCode);
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return result;
-    }
-
-    private native int doCheckNdef(int[] ndefinfo);
-    private synchronized int checkNdefWithStatus(int[] ndefinfo) {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        int status = doCheckNdef(ndefinfo);
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return status;
-    }
-    @Override
-    public synchronized boolean checkNdef(int[] ndefinfo) {
-        return checkNdefWithStatus(ndefinfo) == 0;
-    }
-
-    private native byte[] doRead();
-    @Override
-    public synchronized byte[] readNdef() {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        byte[] result = doRead();
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return result;
-    }
-
-    private native boolean doWrite(byte[] buf);
-    @Override
-    public synchronized boolean writeNdef(byte[] buf) {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        boolean result = doWrite(buf);
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return result;
-    }
-
-    native boolean doPresenceCheck();
-    @Override
-    public synchronized boolean presenceCheck() {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        boolean result = doPresenceCheck();
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return result;
-    }
-
-    native boolean doNdefFormat(byte[] key);
-    @Override
-    public synchronized boolean formatNdef(byte[] key) {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        boolean result = doNdefFormat(key);
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return result;
-    }
-
-    native boolean doMakeReadonly(byte[] key);
-    @Override
-    public synchronized boolean makeReadOnly() {
-        if (mWatchdog != null) {
-            mWatchdog.pause();
-        }
-        boolean result;
-        if (hasTech(TagTechnology.MIFARE_CLASSIC)) {
-            result = doMakeReadonly(MifareClassic.KEY_DEFAULT);
-        } else {
-            // No key needed for other technologies
-            result = doMakeReadonly(new byte[] {});
-        }
-        if (mWatchdog != null) {
-            mWatchdog.doResume();
-        }
-        return result;
-    }
-
-    native boolean doIsIsoDepNdefFormatable(byte[] poll, byte[] act);
-    @Override
-    public synchronized boolean isNdefFormatable() {
-        if (hasTech(TagTechnology.MIFARE_CLASSIC) || hasTech(TagTechnology.MIFARE_ULTRALIGHT)) {
-            // These are always formatable
-            return true;
-        }
-        if (hasTech(TagTechnology.NFC_V)) {
-            // Currently libnfc only formats NXP NFC-V tags
-            if (mUid[5] >= 1 && mUid[5] <= 3 && mUid[6] == 0x04) {
-                return true;
-            } else {
-                return false;
-            }
-        }
-        // For ISO-DEP, call native code to determine at lower level if format
-        // is possible. It will need NFC-A poll/activation time bytes for this.
-        if (hasTech(TagTechnology.ISO_DEP)) {
-            int nfcaTechIndex = getTechIndex(TagTechnology.NFC_A);
-            if (nfcaTechIndex != -1) {
-                return doIsIsoDepNdefFormatable(mTechPollBytes[nfcaTechIndex],
-                        mTechActBytes[nfcaTechIndex]);
-            } else {
-                return false;
-            }
-        } else {
-            // Formatting not supported by libNFC
-            return false;
-        }
-    }
-
-    @Override
-    public int getHandle() {
-        // This is just a handle for the clients; it can simply use the first
-        // technology handle we have.
-        if (mTechHandles.length > 0) {
-            return mTechHandles[0];
-        } else {
-            return 0;
-        }
-    }
-
-    @Override
-    public byte[] getUid() {
-        return mUid;
-    }
-
-    @Override
-    public int[] getTechList() {
-        return mTechList;
-    }
-
-    private int getConnectedHandle() {
-        return mConnectedHandle;
-    }
-
-    private int getConnectedLibNfcType() {
-        if (mConnectedTechIndex != -1 && mConnectedTechIndex < mTechLibNfcTypes.length) {
-            return mTechLibNfcTypes[mConnectedTechIndex];
-        } else {
-            return 0;
-        }
-    }
-
-    @Override
-    public int getConnectedTechnology() {
-        if (mConnectedTechIndex != -1 && mConnectedTechIndex < mTechList.length) {
-            return mTechList[mConnectedTechIndex];
-        } else {
-            return 0;
-        }
-    }
-    native int doGetNdefType(int libnfctype, int javatype);
-    private int getNdefType(int libnfctype, int javatype) {
-        return doGetNdefType(libnfctype, javatype);
-    }
-
-    private void addTechnology(int tech, int handle, int libnfctype) {
-            int[] mNewTechList = new int[mTechList.length + 1];
-            System.arraycopy(mTechList, 0, mNewTechList, 0, mTechList.length);
-            mNewTechList[mTechList.length] = tech;
-            mTechList = mNewTechList;
-
-            int[] mNewHandleList = new int[mTechHandles.length + 1];
-            System.arraycopy(mTechHandles, 0, mNewHandleList, 0, mTechHandles.length);
-            mNewHandleList[mTechHandles.length] = handle;
-            mTechHandles = mNewHandleList;
-
-            int[] mNewTypeList = new int[mTechLibNfcTypes.length + 1];
-            System.arraycopy(mTechLibNfcTypes, 0, mNewTypeList, 0, mTechLibNfcTypes.length);
-            mNewTypeList[mTechLibNfcTypes.length] = libnfctype;
-            mTechLibNfcTypes = mNewTypeList;
-    }
-
-    @Override
-    public void removeTechnology(int tech) {
-        synchronized (this) {
-            int techIndex = getTechIndex(tech);
-            if (techIndex != -1) {
-                int[] mNewTechList = new int[mTechList.length - 1];
-                System.arraycopy(mTechList, 0, mNewTechList, 0, techIndex);
-                System.arraycopy(mTechList, techIndex + 1, mNewTechList, techIndex,
-                        mTechList.length - techIndex - 1);
-                mTechList = mNewTechList;
-
-                int[] mNewHandleList = new int[mTechHandles.length - 1];
-                System.arraycopy(mTechHandles, 0, mNewHandleList, 0, techIndex);
-                System.arraycopy(mTechHandles, techIndex + 1, mNewTechList, techIndex,
-                        mTechHandles.length - techIndex - 1);
-                mTechHandles = mNewHandleList;
-
-                int[] mNewTypeList = new int[mTechLibNfcTypes.length - 1];
-                System.arraycopy(mTechLibNfcTypes, 0, mNewTypeList, 0, techIndex);
-                System.arraycopy(mTechLibNfcTypes, techIndex + 1, mNewTypeList, techIndex,
-                        mTechLibNfcTypes.length - techIndex - 1);
-                mTechLibNfcTypes = mNewTypeList;
-            }
-        }
-    }
-
-    public void addNdefFormatableTechnology(int handle, int libnfcType) {
-        synchronized (this) {
-            addTechnology(TagTechnology.NDEF_FORMATABLE, handle, libnfcType);
-        }
-    }
-
-    // This method exists to "patch in" the ndef technologies,
-    // which is done inside Java instead of the native JNI code.
-    // To not create some nasty dependencies on the order on which things
-    // are called (most notably getTechExtras()), it needs some additional
-    // checking.
-    public void addNdefTechnology(NdefMessage msg, int handle, int libnfcType,
-            int javaType, int maxLength, int cardState) {
-        synchronized (this) {
-            addTechnology(TagTechnology.NDEF, handle, libnfcType);
-
-            Bundle extras = new Bundle();
-            extras.putParcelable(Ndef.EXTRA_NDEF_MSG, msg);
-            extras.putInt(Ndef.EXTRA_NDEF_MAXLENGTH, maxLength);
-            extras.putInt(Ndef.EXTRA_NDEF_CARDSTATE, cardState);
-            extras.putInt(Ndef.EXTRA_NDEF_TYPE, getNdefType(libnfcType, javaType));
-
-            if (mTechExtras == null) {
-                // This will build the tech extra's for the first time,
-                // including a NULL ref for the NDEF tech we generated above.
-                Bundle[] builtTechExtras = getTechExtras();
-                builtTechExtras[builtTechExtras.length - 1] = extras;
-            }
-            else {
-                // Tech extras were built before, patch the NDEF one in
-                Bundle[] oldTechExtras = getTechExtras();
-                Bundle[] newTechExtras = new Bundle[oldTechExtras.length + 1];
-                System.arraycopy(oldTechExtras, 0, newTechExtras, 0, oldTechExtras.length);
-                newTechExtras[oldTechExtras.length] = extras;
-                mTechExtras = newTechExtras;
-            }
-
-
-        }
-    }
-
-    private int getTechIndex(int tech) {
-      int techIndex = -1;
-      for (int i = 0; i < mTechList.length; i++) {
-          if (mTechList[i] == tech) {
-              techIndex = i;
-              break;
-          }
-      }
-      return techIndex;
-    }
-
-    private boolean hasTech(int tech) {
-      boolean hasTech = false;
-      for (int i = 0; i < mTechList.length; i++) {
-          if (mTechList[i] == tech) {
-              hasTech = true;
-              break;
-          }
-      }
-      return hasTech;
-    }
-
-    private boolean hasTechOnHandle(int tech, int handle) {
-      boolean hasTech = false;
-      for (int i = 0; i < mTechList.length; i++) {
-          if (mTechList[i] == tech && mTechHandles[i] == handle) {
-              hasTech = true;
-              break;
-          }
-      }
-      return hasTech;
-
-    }
-
-    private boolean isUltralightC() {
-        /* Make a best-effort attempt at classifying ULTRALIGHT
-         * vs ULTRALIGHT-C (based on NXP's public AN1303).
-         * The memory layout is as follows:
-         *   Page # BYTE1  BYTE2  BYTE3  BYTE4
-         *   2      INT1   INT2   LOCK   LOCK
-         *   3      OTP    OTP    OTP    OTP  (NDEF CC if NDEF-formatted)
-         *   4      DATA   DATA   DATA   DATA (version info if factory-state)
-         *
-         * Read four blocks from page 2, which will get us both
-         * the lock page, the OTP page and the version info.
-         */
-        boolean isUltralightC = false;
-        byte[] readCmd = { 0x30, 0x02 };
-        int[] retCode = new int[2];
-        byte[] respData = transceive(readCmd, false, retCode);
-        if (respData != null && respData.length == 16) {
-            // Check the lock bits (last 2 bytes in page2)
-            // and the OTP bytes (entire page 3)
-            if (respData[2] == 0 && respData[3] == 0 && respData[4] == 0 &&
-                respData[5] == 0 && respData[6] == 0 && respData[7] == 0) {
-                // Very likely to be a blank card, look at version info
-                // in page 4.
-                if ((respData[8] == (byte)0x02) && respData[9] == (byte)0x00) {
-                    // This is Ultralight-C
-                    isUltralightC = true;
-                } else {
-                    // 0xFF 0xFF would indicate Ultralight, but we also use Ultralight
-                    // as a fallback if it's anything else
-                    isUltralightC = false;
-                }
-            } else {
-                // See if we can find the NDEF CC in the OTP page and if it's
-                // smaller than major version two
-                if (respData[4] == (byte)0xE1 && ((respData[5] & 0xff) < 0x20)) {
-                    // OK, got NDEF. Technically we'd have to search for the
-                    // NDEF TLV as well. However, this would add too much
-                    // time for discovery and we can make already make a good guess
-                    // with the data we have here. Byte 2 of the OTP page
-                    // indicates the size of the tag - 0x06 is UL, anything
-                    // above indicates UL-C.
-                    if ((respData[6] & 0xff) > 0x06) {
-                        isUltralightC = true;
-                    }
-                } else {
-                    // Fall back to ultralight
-                    isUltralightC = false;
-                }
-            }
-        }
-        return isUltralightC;
-    }
-
-    @Override
-    public Bundle[] getTechExtras() {
-        synchronized (this) {
-            if (mTechExtras != null) return mTechExtras;
-            mTechExtras = new Bundle[mTechList.length];
-            for (int i = 0; i < mTechList.length; i++) {
-                Bundle extras = new Bundle();
-                switch (mTechList[i]) {
-                    case TagTechnology.NFC_A: {
-                        byte[] actBytes = mTechActBytes[i];
-                        if ((actBytes != null) && (actBytes.length > 0)) {
-                            extras.putShort(NfcA.EXTRA_SAK, (short) (actBytes[0] & (short) 0xFF));
-                        } else {
-                            // Unfortunately Jewel doesn't have act bytes,
-                            // ignore this case.
-                        }
-                        extras.putByteArray(NfcA.EXTRA_ATQA, mTechPollBytes[i]);
-                        break;
-                    }
-
-                    case TagTechnology.NFC_B: {
-                        // What's returned from the PN544 is actually:
-                        // 4 bytes app data
-                        // 3 bytes prot info
-                        byte[] appData = new byte[4];
-                        byte[] protInfo = new byte[3];
-                        if (mTechPollBytes[i].length >= 7) {
-                            System.arraycopy(mTechPollBytes[i], 0, appData, 0, 4);
-                            System.arraycopy(mTechPollBytes[i], 4, protInfo, 0, 3);
-
-                            extras.putByteArray(NfcB.EXTRA_APPDATA, appData);
-                            extras.putByteArray(NfcB.EXTRA_PROTINFO, protInfo);
-                        }
-                        break;
-                    }
-
-                    case TagTechnology.NFC_F: {
-                        byte[] pmm = new byte[8];
-                        byte[] sc = new byte[2];
-                        if (mTechPollBytes[i].length >= 8) {
-                            // At least pmm is present
-                            System.arraycopy(mTechPollBytes[i], 0, pmm, 0, 8);
-                            extras.putByteArray(NfcF.EXTRA_PMM, pmm);
-                        }
-                        if (mTechPollBytes[i].length == 10) {
-                            System.arraycopy(mTechPollBytes[i], 8, sc, 0, 2);
-                            extras.putByteArray(NfcF.EXTRA_SC, sc);
-                        }
-                        break;
-                    }
-
-                    case TagTechnology.ISO_DEP: {
-                        if (hasTech(TagTechnology.NFC_A)) {
-                            extras.putByteArray(IsoDep.EXTRA_HIST_BYTES, mTechActBytes[i]);
-                        }
-                        else {
-                            extras.putByteArray(IsoDep.EXTRA_HI_LAYER_RESP, mTechActBytes[i]);
-                        }
-                        break;
-                    }
-
-                    case TagTechnology.NFC_V: {
-                        // First byte response flags, second byte DSFID
-                        if (mTechPollBytes[i] != null && mTechPollBytes[i].length >= 2) {
-                            extras.putByte(NfcV.EXTRA_RESP_FLAGS, mTechPollBytes[i][0]);
-                            extras.putByte(NfcV.EXTRA_DSFID, mTechPollBytes[i][1]);
-                        }
-                        break;
-                    }
-
-                    case TagTechnology.MIFARE_ULTRALIGHT: {
-                        boolean isUlc = isUltralightC();
-                        extras.putBoolean(MifareUltralight.EXTRA_IS_UL_C, isUlc);
-                        break;
-                    }
-
-                    default: {
-                        // Leave the entry in the array null
-                        continue;
-                    }
-                }
-                mTechExtras[i] = extras;
-            }
-            return mTechExtras;
-        }
-    }
-
-    @Override
-    public NdefMessage findAndReadNdef() {
-        // Try to find NDEF on any of the technologies.
-        int[] technologies = getTechList();
-        int[] handles = mTechHandles;
-        NdefMessage ndefMsg = null;
-        boolean foundFormattable = false;
-        int formattableHandle = 0;
-        int formattableLibNfcType = 0;
-        int status;
-
-        for (int techIndex = 0; techIndex < technologies.length; techIndex++) {
-            // have we seen this handle before?
-            for (int i = 0; i < techIndex; i++) {
-                if (handles[i] == handles[techIndex]) {
-                    continue;  // don't check duplicate handles
-                }
-            }
-
-            status = connectWithStatus(technologies[techIndex]);
-            if (status != 0) {
-                Log.d(TAG, "Connect Failed - status = "+ status);
-                if (status == STATUS_CODE_TARGET_LOST) {
-                    break;
-                }
-                continue;  // try next handle
-            }
-            // Check if this type is NDEF formatable
-            if (!foundFormattable) {
-                if (isNdefFormatable()) {
-                    foundFormattable = true;
-                    formattableHandle = getConnectedHandle();
-                    formattableLibNfcType = getConnectedLibNfcType();
-                    // We'll only add formattable tech if no ndef is
-                    // found - this is because libNFC refuses to format
-                    // an already NDEF formatted tag.
-                }
-                reconnect();
-            }
-
-            int[] ndefinfo = new int[2];
-            status = checkNdefWithStatus(ndefinfo);
-            if (status != 0) {
-                Log.d(TAG, "Check NDEF Failed - status = " + status);
-                if (status == STATUS_CODE_TARGET_LOST) {
-                    break;
-                }
-                continue;  // try next handle
-            }
-
-            // found our NDEF handle
-            boolean generateEmptyNdef = false;
-
-            int supportedNdefLength = ndefinfo[0];
-            int cardState = ndefinfo[1];
-            byte[] buff = readNdef();
-            if (buff != null) {
-                try {
-                    ndefMsg = new NdefMessage(buff);
-                    addNdefTechnology(ndefMsg,
-                            getConnectedHandle(),
-                            getConnectedLibNfcType(),
-                            getConnectedTechnology(),
-                            supportedNdefLength, cardState);
-                    reconnect();
-                } catch (FormatException e) {
-                   // Create an intent anyway, without NDEF messages
-                   generateEmptyNdef = true;
-                }
-            } else {
-                generateEmptyNdef = true;
-            }
-
-            if (generateEmptyNdef) {
-                ndefMsg = null;
-                addNdefTechnology(null,
-                        getConnectedHandle(),
-                        getConnectedLibNfcType(),
-                        getConnectedTechnology(),
-                        supportedNdefLength, cardState);
-                foundFormattable = false;
-                reconnect();
-            }
-            break;
-        }
-
-        if (ndefMsg == null && foundFormattable) {
-            // Tag is not NDEF yet, and found a formattable target,
-            // so add formattable tech to tech list.
-            addNdefFormatableTechnology(
-                    formattableHandle,
-                    formattableLibNfcType);
-        }
-
-        return ndefMsg;
-    }
-}
diff --git a/nxp/src/com/android/nfc/dhimpl/NativeP2pDevice.java b/nxp/src/com/android/nfc/dhimpl/NativeP2pDevice.java
deleted file mode 100755
index 143f658..0000000
--- a/nxp/src/com/android/nfc/dhimpl/NativeP2pDevice.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.nfc.dhimpl;
-
-import com.android.nfc.DeviceHost.NfcDepEndpoint;
-
-/**
- * Native interface to the P2P Initiator functions
- */
-public class NativeP2pDevice implements NfcDepEndpoint {
-
-    private int mHandle;
-
-    private int mMode;
-
-    private byte mLlcpVersion;
-
-    private byte[] mGeneralBytes;
-
-    private native byte[] doReceive();
-    @Override
-    public byte[] receive() {
-        return doReceive();
-    }
-
-    private native boolean doSend(byte[] data);
-    @Override
-    public boolean send(byte[] data) {
-        return doSend(data);
-    }
-
-    private native boolean doConnect();
-    @Override
-    public boolean connect() {
-        return doConnect();
-    }
-
-    private native boolean doDisconnect();
-    @Override
-    public boolean disconnect() {
-        return doDisconnect();
-    }
-
-    public native byte[] doTransceive(byte[] data);
-    @Override
-    public byte[] transceive(byte[] data) {
-        return doTransceive(data);
-    }
-
-    @Override
-    public int getHandle() {
-        return mHandle;
-    }
-
-    @Override
-    public int getMode() {
-        return mMode;
-    }
-
-    @Override
-    public byte[] getGeneralBytes() {
-        return mGeneralBytes;
-    }
-
-    @Override
-    public byte getLlcpVersion() {
-        return mLlcpVersion;
-    }
-}
diff --git a/res/values-az-rAZ/live_cases.xml b/res/values-az/live_cases.xml
similarity index 100%
rename from res/values-az-rAZ/live_cases.xml
rename to res/values-az/live_cases.xml
diff --git a/res/values-az-rAZ/provisioning.xml b/res/values-az/provisioning.xml
similarity index 100%
rename from res/values-az-rAZ/provisioning.xml
rename to res/values-az/provisioning.xml
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az/strings.xml
similarity index 100%
rename from res/values-az-rAZ/strings.xml
rename to res/values-az/strings.xml
diff --git a/res/values-be-rBY/live_cases.xml b/res/values-be/live_cases.xml
similarity index 100%
rename from res/values-be-rBY/live_cases.xml
rename to res/values-be/live_cases.xml
diff --git a/res/values-be-rBY/provisioning.xml b/res/values-be/provisioning.xml
similarity index 100%
rename from res/values-be-rBY/provisioning.xml
rename to res/values-be/provisioning.xml
diff --git a/res/values-be-rBY/strings.xml b/res/values-be/strings.xml
similarity index 100%
rename from res/values-be-rBY/strings.xml
rename to res/values-be/strings.xml
diff --git a/res/values-bn-rBD/live_cases.xml b/res/values-bn/live_cases.xml
similarity index 100%
rename from res/values-bn-rBD/live_cases.xml
rename to res/values-bn/live_cases.xml
diff --git a/res/values-bn-rBD/provisioning.xml b/res/values-bn/provisioning.xml
similarity index 100%
rename from res/values-bn-rBD/provisioning.xml
rename to res/values-bn/provisioning.xml
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn/strings.xml
similarity index 100%
rename from res/values-bn-rBD/strings.xml
rename to res/values-bn/strings.xml
diff --git a/res/values-bs-rBA/live_cases.xml b/res/values-bs/live_cases.xml
similarity index 100%
rename from res/values-bs-rBA/live_cases.xml
rename to res/values-bs/live_cases.xml
diff --git a/res/values-bs-rBA/provisioning.xml b/res/values-bs/provisioning.xml
similarity index 100%
rename from res/values-bs-rBA/provisioning.xml
rename to res/values-bs/provisioning.xml
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs/strings.xml
similarity index 100%
rename from res/values-bs-rBA/strings.xml
rename to res/values-bs/strings.xml
diff --git a/res/values-et-rEE/live_cases.xml b/res/values-et/live_cases.xml
similarity index 100%
rename from res/values-et-rEE/live_cases.xml
rename to res/values-et/live_cases.xml
diff --git a/res/values-et-rEE/provisioning.xml b/res/values-et/provisioning.xml
similarity index 100%
rename from res/values-et-rEE/provisioning.xml
rename to res/values-et/provisioning.xml
diff --git a/res/values-et-rEE/strings.xml b/res/values-et/strings.xml
similarity index 100%
rename from res/values-et-rEE/strings.xml
rename to res/values-et/strings.xml
diff --git a/res/values-eu-rES/live_cases.xml b/res/values-eu/live_cases.xml
similarity index 100%
rename from res/values-eu-rES/live_cases.xml
rename to res/values-eu/live_cases.xml
diff --git a/res/values-eu-rES/provisioning.xml b/res/values-eu/provisioning.xml
similarity index 100%
rename from res/values-eu-rES/provisioning.xml
rename to res/values-eu/provisioning.xml
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu/strings.xml
similarity index 98%
rename from res/values-eu-rES/strings.xml
rename to res/values-eu/strings.xml
index 315dca5..5dad922 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu/strings.xml
@@ -23,7 +23,7 @@
     <string name="disconnected_peripheral" msgid="4470578100296504366">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> deskonektatu da"</string>
     <string name="pairing_peripheral" msgid="6983626861540899365">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatzen"</string>
     <string name="pairing_peripheral_failed" msgid="6087643307743264679">"Ezin izan da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatu"</string>
-    <string name="failed_to_enable_bt" msgid="7229153323594758077">"Ezin izan da Bluetootha gaitu"</string>
+    <string name="failed_to_enable_bt" msgid="7229153323594758077">"Ezin izan da gaitu Bluetooth"</string>
     <string name="confirm_pairing" msgid="4112568077038265363">"Ziur <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Bluetooth gailuarekin parekatu nahi duzula?"</string>
     <string name="pair_yes" msgid="3525614878559994448">"Bai"</string>
     <string name="pair_no" msgid="5022308368904055020">"Ez"</string>
diff --git a/res/values-gl-rES/live_cases.xml b/res/values-gl/live_cases.xml
similarity index 100%
rename from res/values-gl-rES/live_cases.xml
rename to res/values-gl/live_cases.xml
diff --git a/res/values-gl-rES/provisioning.xml b/res/values-gl/provisioning.xml
similarity index 100%
rename from res/values-gl-rES/provisioning.xml
rename to res/values-gl/provisioning.xml
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl/strings.xml
similarity index 100%
rename from res/values-gl-rES/strings.xml
rename to res/values-gl/strings.xml
diff --git a/res/values-gu-rIN/live_cases.xml b/res/values-gu/live_cases.xml
similarity index 100%
rename from res/values-gu-rIN/live_cases.xml
rename to res/values-gu/live_cases.xml
diff --git a/res/values-gu-rIN/provisioning.xml b/res/values-gu/provisioning.xml
similarity index 100%
rename from res/values-gu-rIN/provisioning.xml
rename to res/values-gu/provisioning.xml
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu/strings.xml
similarity index 100%
rename from res/values-gu-rIN/strings.xml
rename to res/values-gu/strings.xml
diff --git a/res/values-hy-rAM/live_cases.xml b/res/values-hy/live_cases.xml
similarity index 100%
rename from res/values-hy-rAM/live_cases.xml
rename to res/values-hy/live_cases.xml
diff --git a/res/values-hy-rAM/provisioning.xml b/res/values-hy/provisioning.xml
similarity index 100%
rename from res/values-hy-rAM/provisioning.xml
rename to res/values-hy/provisioning.xml
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy/strings.xml
similarity index 100%
rename from res/values-hy-rAM/strings.xml
rename to res/values-hy/strings.xml
diff --git a/res/values-is-rIS/live_cases.xml b/res/values-is/live_cases.xml
similarity index 100%
rename from res/values-is-rIS/live_cases.xml
rename to res/values-is/live_cases.xml
diff --git a/res/values-is-rIS/provisioning.xml b/res/values-is/provisioning.xml
similarity index 100%
rename from res/values-is-rIS/provisioning.xml
rename to res/values-is/provisioning.xml
diff --git a/res/values-is-rIS/strings.xml b/res/values-is/strings.xml
similarity index 100%
rename from res/values-is-rIS/strings.xml
rename to res/values-is/strings.xml
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index b7eb404..533c147 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -24,7 +24,7 @@
     <string name="pairing_peripheral" msgid="6983626861540899365">"מבצע התאמה עם <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="pairing_peripheral_failed" msgid="6087643307743264679">"לא ניתן לבצע התאמה עם <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="failed_to_enable_bt" msgid="7229153323594758077">"‏לא ניתן להפעיל Bluetooth"</string>
-    <string name="confirm_pairing" msgid="4112568077038265363">"‏האם אתה בטוח שאתה רוצה להתאים את מכשיר ה-Bluetooth <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
+    <string name="confirm_pairing" msgid="4112568077038265363">"‏האם אתה בטוח שברצונך להתאים את מכשיר ה-Bluetooth <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="pair_yes" msgid="3525614878559994448">"כן"</string>
     <string name="pair_no" msgid="5022308368904055020">"לא"</string>
     <string name="tap_again_to_pay" msgid="5754988005412859897">"הקש שוב כדי לשלם באמצעות <xliff:g id="APP">%1$s</xliff:g>"</string>
diff --git a/res/values-ka-rGE/live_cases.xml b/res/values-ka/live_cases.xml
similarity index 100%
rename from res/values-ka-rGE/live_cases.xml
rename to res/values-ka/live_cases.xml
diff --git a/res/values-ka-rGE/provisioning.xml b/res/values-ka/provisioning.xml
similarity index 100%
rename from res/values-ka-rGE/provisioning.xml
rename to res/values-ka/provisioning.xml
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka/strings.xml
similarity index 100%
rename from res/values-ka-rGE/strings.xml
rename to res/values-ka/strings.xml
diff --git a/res/values-kk-rKZ/live_cases.xml b/res/values-kk/live_cases.xml
similarity index 100%
rename from res/values-kk-rKZ/live_cases.xml
rename to res/values-kk/live_cases.xml
diff --git a/res/values-kk-rKZ/provisioning.xml b/res/values-kk/provisioning.xml
similarity index 100%
rename from res/values-kk-rKZ/provisioning.xml
rename to res/values-kk/provisioning.xml
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk/strings.xml
similarity index 100%
rename from res/values-kk-rKZ/strings.xml
rename to res/values-kk/strings.xml
diff --git a/res/values-km-rKH/live_cases.xml b/res/values-km/live_cases.xml
similarity index 100%
rename from res/values-km-rKH/live_cases.xml
rename to res/values-km/live_cases.xml
diff --git a/res/values-km-rKH/provisioning.xml b/res/values-km/provisioning.xml
similarity index 100%
rename from res/values-km-rKH/provisioning.xml
rename to res/values-km/provisioning.xml
diff --git a/res/values-km-rKH/strings.xml b/res/values-km/strings.xml
similarity index 100%
rename from res/values-km-rKH/strings.xml
rename to res/values-km/strings.xml
diff --git a/res/values-kn-rIN/live_cases.xml b/res/values-kn/live_cases.xml
similarity index 100%
rename from res/values-kn-rIN/live_cases.xml
rename to res/values-kn/live_cases.xml
diff --git a/res/values-kn-rIN/provisioning.xml b/res/values-kn/provisioning.xml
similarity index 100%
rename from res/values-kn-rIN/provisioning.xml
rename to res/values-kn/provisioning.xml
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn/strings.xml
similarity index 100%
rename from res/values-kn-rIN/strings.xml
rename to res/values-kn/strings.xml
diff --git a/res/values-ky-rKG/live_cases.xml b/res/values-ky/live_cases.xml
similarity index 100%
rename from res/values-ky-rKG/live_cases.xml
rename to res/values-ky/live_cases.xml
diff --git a/res/values-ky-rKG/provisioning.xml b/res/values-ky/provisioning.xml
similarity index 100%
rename from res/values-ky-rKG/provisioning.xml
rename to res/values-ky/provisioning.xml
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky/strings.xml
similarity index 100%
rename from res/values-ky-rKG/strings.xml
rename to res/values-ky/strings.xml
diff --git a/res/values-lo-rLA/live_cases.xml b/res/values-lo/live_cases.xml
similarity index 100%
rename from res/values-lo-rLA/live_cases.xml
rename to res/values-lo/live_cases.xml
diff --git a/res/values-lo-rLA/provisioning.xml b/res/values-lo/provisioning.xml
similarity index 100%
rename from res/values-lo-rLA/provisioning.xml
rename to res/values-lo/provisioning.xml
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo/strings.xml
similarity index 100%
rename from res/values-lo-rLA/strings.xml
rename to res/values-lo/strings.xml
diff --git a/res/values-mk-rMK/live_cases.xml b/res/values-mk/live_cases.xml
similarity index 100%
rename from res/values-mk-rMK/live_cases.xml
rename to res/values-mk/live_cases.xml
diff --git a/res/values-mk-rMK/provisioning.xml b/res/values-mk/provisioning.xml
similarity index 100%
rename from res/values-mk-rMK/provisioning.xml
rename to res/values-mk/provisioning.xml
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk/strings.xml
similarity index 100%
rename from res/values-mk-rMK/strings.xml
rename to res/values-mk/strings.xml
diff --git a/res/values-ml-rIN/live_cases.xml b/res/values-ml/live_cases.xml
similarity index 100%
rename from res/values-ml-rIN/live_cases.xml
rename to res/values-ml/live_cases.xml
diff --git a/res/values-ml-rIN/provisioning.xml b/res/values-ml/provisioning.xml
similarity index 100%
rename from res/values-ml-rIN/provisioning.xml
rename to res/values-ml/provisioning.xml
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml/strings.xml
similarity index 95%
rename from res/values-ml-rIN/strings.xml
rename to res/values-ml/strings.xml
index 90d3aef..0001a2f 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml/strings.xml
@@ -33,7 +33,7 @@
     <string name="could_not_use_app" msgid="8137587876138569083">"<xliff:g id="APP">%1$s</xliff:g> ഉപയോഗിക്കാനായില്ല."</string>
     <string name="pay_with" msgid="5531545488795798945">"ഇതുപയോഗിച്ച് പണമടയ്‌ക്കുക"</string>
     <string name="complete_with" msgid="6797459104103012992">"ഇതുപയോഗിച്ച് പൂർത്തിയാക്കുക"</string>
-    <string name="default_pay_app_removed" msgid="4108250545457437360">"\'മൊബൈൽ തൊടീച്ച് പണമടയ്ക്കുക\' എന്നതിനായി നിങ്ങൾ തിരഞ്ഞെടുത്ത സേവനം നീക്കംചെയ്‌തു. മറ്റൊന്ന് തിരഞ്ഞെടുക്കണോ?"</string>
+    <string name="default_pay_app_removed" msgid="4108250545457437360">"\'ടാപ്പുചെയ്‌ത് പണമടയ്‌ക്കുക\' എന്നതിനായി നിങ്ങൾ തിരഞ്ഞെടുത്ത സേവനം നീക്കംചെയ്‌തു. മറ്റൊന്ന് തിരഞ്ഞെടുക്കണോ?"</string>
     <string name="ask_nfc_tap" msgid="2925239870458286340">"പൂർത്തിയാക്കുന്നതിന് മറ്റൊരു ഉപകരണം ടാപ്പുചെയ്യുക"</string>
     <string name="wifi_connect" msgid="6250727951843550671">"കണക്റ്റുചെയ്യുക"</string>
     <string name="status_unable_to_connect" msgid="9183908200295307657">"നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യാനായില്ല"</string>
diff --git a/res/values-mn-rMN/live_cases.xml b/res/values-mn/live_cases.xml
similarity index 100%
rename from res/values-mn-rMN/live_cases.xml
rename to res/values-mn/live_cases.xml
diff --git a/res/values-mn-rMN/provisioning.xml b/res/values-mn/provisioning.xml
similarity index 100%
rename from res/values-mn-rMN/provisioning.xml
rename to res/values-mn/provisioning.xml
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn/strings.xml
similarity index 100%
rename from res/values-mn-rMN/strings.xml
rename to res/values-mn/strings.xml
diff --git a/res/values-mr-rIN/live_cases.xml b/res/values-mr/live_cases.xml
similarity index 100%
rename from res/values-mr-rIN/live_cases.xml
rename to res/values-mr/live_cases.xml
diff --git a/res/values-mr-rIN/provisioning.xml b/res/values-mr/provisioning.xml
similarity index 100%
rename from res/values-mr-rIN/provisioning.xml
rename to res/values-mr/provisioning.xml
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr/strings.xml
similarity index 100%
rename from res/values-mr-rIN/strings.xml
rename to res/values-mr/strings.xml
diff --git a/res/values-ms-rMY/live_cases.xml b/res/values-ms/live_cases.xml
similarity index 100%
rename from res/values-ms-rMY/live_cases.xml
rename to res/values-ms/live_cases.xml
diff --git a/res/values-ms-rMY/provisioning.xml b/res/values-ms/provisioning.xml
similarity index 100%
rename from res/values-ms-rMY/provisioning.xml
rename to res/values-ms/provisioning.xml
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms/strings.xml
similarity index 100%
rename from res/values-ms-rMY/strings.xml
rename to res/values-ms/strings.xml
diff --git a/res/values-my-rMM/live_cases.xml b/res/values-my/live_cases.xml
similarity index 100%
rename from res/values-my-rMM/live_cases.xml
rename to res/values-my/live_cases.xml
diff --git a/res/values-my-rMM/provisioning.xml b/res/values-my/provisioning.xml
similarity index 100%
rename from res/values-my-rMM/provisioning.xml
rename to res/values-my/provisioning.xml
diff --git a/res/values-my-rMM/strings.xml b/res/values-my/strings.xml
similarity index 96%
rename from res/values-my-rMM/strings.xml
rename to res/values-my/strings.xml
index 6fb1a4e..185f863 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my/strings.xml
@@ -40,6 +40,6 @@
     <string name="status_wifi_connected" msgid="5893022897732105739">"ချိတ်ဆက်ထားပြီး"</string>
     <string name="title_connect_to_network" msgid="2474034615817280146">"ကွန်ယက်ကို ဆက်သွယ်ရန်"</string>
     <string name="prompt_connect_to_network" msgid="8511683573657516114">"ကွန်ရက် <xliff:g id="NETWORK_SSID">%1$s</xliff:g>ကို ချိတ်ဆက်ရမလား?"</string>
-    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android Beam သင် NFC ဖွင့်ရန်လိုအပ်သည်။ သင်၎င်းအားဖွင့်လိုသလား?"</string>
+    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android Beam သုံးရန် NFC ကို ဖွင့်ထားဖို့လိုပါသည်။ ၎င်းအားဖွင့်လိုပါသလား။"</string>
     <string name="android_beam" msgid="1666446406999492763">"Android Beam"</string>
 </resources>
diff --git a/res/values-ne-rNP/live_cases.xml b/res/values-ne/live_cases.xml
similarity index 100%
rename from res/values-ne-rNP/live_cases.xml
rename to res/values-ne/live_cases.xml
diff --git a/res/values-ne-rNP/provisioning.xml b/res/values-ne/provisioning.xml
similarity index 100%
rename from res/values-ne-rNP/provisioning.xml
rename to res/values-ne/provisioning.xml
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne/strings.xml
similarity index 97%
rename from res/values-ne-rNP/strings.xml
rename to res/values-ne/strings.xml
index c538bf7..d0cec81 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne/strings.xml
@@ -24,7 +24,7 @@
     <string name="pairing_peripheral" msgid="6983626861540899365">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> जोडा गर्दै"</string>
     <string name="pairing_peripheral_failed" msgid="6087643307743264679">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> जोडा गर्न सकेन"</string>
     <string name="failed_to_enable_bt" msgid="7229153323594758077">"ब्लुटुथ सक्षम पार्न सकेन"</string>
-    <string name="confirm_pairing" msgid="4112568077038265363">"तपाईँ ब्लुटुथ उपकरण जोडी गर्न निश्चित हुनुहुन्छ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
+    <string name="confirm_pairing" msgid="4112568077038265363">"तपाईं ब्लुटुथ उपकरण जोडी गर्न निश्चित हुनुहुन्छ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="pair_yes" msgid="3525614878559994448">"हो"</string>
     <string name="pair_no" msgid="5022308368904055020">"होइन"</string>
     <string name="tap_again_to_pay" msgid="5754988005412859897">"<xliff:g id="APP">%1$s</xliff:g>सँग तिर्न फेरी छुनुहोस्"</string>
@@ -40,6 +40,6 @@
     <string name="status_wifi_connected" msgid="5893022897732105739">"जोडिएको"</string>
     <string name="title_connect_to_network" msgid="2474034615817280146">"सञ्जालमा जडान गर्नुहोस्"</string>
     <string name="prompt_connect_to_network" msgid="8511683573657516114">"सञ्जाल <xliff:g id="NETWORK_SSID">%1$s</xliff:g>मा जडान गर्ने?"</string>
-    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android बीम सक्षम गर्नको लागि NFC आवश्यक छ। के तपाईँ यसलाई सक्षम गर्न चाहनुहुन्छ?"</string>
+    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android बीम सक्षम गर्नको लागि NFC आवश्यक छ। के तपाईं यसलाई सक्षम गर्न चाहनुहुन्छ?"</string>
     <string name="android_beam" msgid="1666446406999492763">"Android बिम"</string>
 </resources>
diff --git a/res/values-pa-rIN/live_cases.xml b/res/values-pa/live_cases.xml
similarity index 100%
rename from res/values-pa-rIN/live_cases.xml
rename to res/values-pa/live_cases.xml
diff --git a/res/values-pa-rIN/provisioning.xml b/res/values-pa/provisioning.xml
similarity index 100%
rename from res/values-pa-rIN/provisioning.xml
rename to res/values-pa/provisioning.xml
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa/strings.xml
similarity index 100%
rename from res/values-pa-rIN/strings.xml
rename to res/values-pa/strings.xml
diff --git a/res/values-si-rLK/live_cases.xml b/res/values-si/live_cases.xml
similarity index 100%
rename from res/values-si-rLK/live_cases.xml
rename to res/values-si/live_cases.xml
diff --git a/res/values-si-rLK/provisioning.xml b/res/values-si/provisioning.xml
similarity index 100%
rename from res/values-si-rLK/provisioning.xml
rename to res/values-si/provisioning.xml
diff --git a/res/values-si-rLK/strings.xml b/res/values-si/strings.xml
similarity index 100%
rename from res/values-si-rLK/strings.xml
rename to res/values-si/strings.xml
diff --git a/res/values-sq-rAL/live_cases.xml b/res/values-sq/live_cases.xml
similarity index 100%
rename from res/values-sq-rAL/live_cases.xml
rename to res/values-sq/live_cases.xml
diff --git a/res/values-sq-rAL/provisioning.xml b/res/values-sq/provisioning.xml
similarity index 100%
rename from res/values-sq-rAL/provisioning.xml
rename to res/values-sq/provisioning.xml
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq/strings.xml
similarity index 100%
rename from res/values-sq-rAL/strings.xml
rename to res/values-sq/strings.xml
diff --git a/res/values-ta-rIN/live_cases.xml b/res/values-ta/live_cases.xml
similarity index 100%
rename from res/values-ta-rIN/live_cases.xml
rename to res/values-ta/live_cases.xml
diff --git a/res/values-ta-rIN/provisioning.xml b/res/values-ta/provisioning.xml
similarity index 100%
rename from res/values-ta-rIN/provisioning.xml
rename to res/values-ta/provisioning.xml
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta/strings.xml
similarity index 100%
rename from res/values-ta-rIN/strings.xml
rename to res/values-ta/strings.xml
diff --git a/res/values-te-rIN/live_cases.xml b/res/values-te/live_cases.xml
similarity index 100%
rename from res/values-te-rIN/live_cases.xml
rename to res/values-te/live_cases.xml
diff --git a/res/values-te-rIN/provisioning.xml b/res/values-te/provisioning.xml
similarity index 100%
rename from res/values-te-rIN/provisioning.xml
rename to res/values-te/provisioning.xml
diff --git a/res/values-te-rIN/strings.xml b/res/values-te/strings.xml
similarity index 100%
rename from res/values-te-rIN/strings.xml
rename to res/values-te/strings.xml
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9637dee..e53f842 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -4,14 +4,14 @@
     <string name="app_name" msgid="78565911793142902">"Nfc Hizmeti"</string>
     <string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string>
     <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC etkin."</string>
-    <string name="tap_to_beam" msgid="5819197866281059878">"Işınlamak için hafifçe dokunun"</string>
+    <string name="tap_to_beam" msgid="5819197866281059878">"Işınlamak için dokunun"</string>
     <string name="beam_progress" msgid="7453634884807323920">"Gelen ışın..."</string>
     <string name="beam_outgoing" msgid="4679536649779123495">"Işınlanıyor..."</string>
     <string name="beam_complete" msgid="477026736424637435">"Işınlama tamamlandı"</string>
     <string name="beam_failed" msgid="5116241718189888630">"Işınlama tamamlanmadı"</string>
     <string name="beam_canceled" msgid="5425192751826544741">"Işınlama iptal edildi"</string>
     <string name="cancel" msgid="61873902552555096">"İptal"</string>
-    <string name="beam_tap_to_view" msgid="7430394753262448349">"Görüntülemek için hafifçe dokunun"</string>
+    <string name="beam_tap_to_view" msgid="7430394753262448349">"Görüntülemek için dokunun"</string>
     <string name="beam_handover_not_supported" msgid="4083165921751489015">"Alıcının cihazı yüksek boyutlu dosyaların ışınlamayla aktarılmasını desteklemiyor."</string>
     <string name="beam_try_again" msgid="3364677301009783455">"Cihazları tekrar bir araya getirin"</string>
     <string name="beam_busy" msgid="5253335587620612576">"Android Beam şu anda meşgul. Önceki aktarım işlemi tamamlandığında tekrar deneyin."</string>
@@ -28,13 +28,13 @@
     <string name="pair_yes" msgid="3525614878559994448">"Evet"</string>
     <string name="pair_no" msgid="5022308368904055020">"Hayır"</string>
     <string name="tap_again_to_pay" msgid="5754988005412859897">"<xliff:g id="APP">%1$s</xliff:g> ile ödemek için tekrar dokundurun"</string>
-    <string name="tap_again_to_complete" msgid="5423640945118279123">"<xliff:g id="APP">%1$s</xliff:g> ile tamamlamak için tekrar hafifçe dokunun"</string>
+    <string name="tap_again_to_complete" msgid="5423640945118279123">"<xliff:g id="APP">%1$s</xliff:g> ile tamamlamak için tekrar dokunun"</string>
     <string name="transaction_failure" msgid="7828102078637936513">"Bu işlem <xliff:g id="APP">%1$s</xliff:g> ile tamamlanamadı."</string>
     <string name="could_not_use_app" msgid="8137587876138569083">"<xliff:g id="APP">%1$s</xliff:g> kullanılamadı."</string>
     <string name="pay_with" msgid="5531545488795798945">"Ödemeyi şu uygulamayla yap:"</string>
     <string name="complete_with" msgid="6797459104103012992">"İşlemi şu uygulamayla tamamla:"</string>
     <string name="default_pay_app_removed" msgid="4108250545457437360">"Dokundur ve öde özelliği için tercih ettiğiniz hizmet kaldırıldı. Başka bir hizmet seçmek ister misiniz?"</string>
-    <string name="ask_nfc_tap" msgid="2925239870458286340">"Tamamlamak için diğer cihaza hafifçe dokunun"</string>
+    <string name="ask_nfc_tap" msgid="2925239870458286340">"Tamamlamak için diğer cihaza dokunun"</string>
     <string name="wifi_connect" msgid="6250727951843550671">"Bağlan"</string>
     <string name="status_unable_to_connect" msgid="9183908200295307657">"Ağa bağlanılamıyor"</string>
     <string name="status_wifi_connected" msgid="5893022897732105739">"Bağlanıldı"</string>
diff --git a/res/values-ur-rPK/live_cases.xml b/res/values-ur/live_cases.xml
similarity index 100%
rename from res/values-ur-rPK/live_cases.xml
rename to res/values-ur/live_cases.xml
diff --git a/res/values-ur-rPK/provisioning.xml b/res/values-ur/provisioning.xml
similarity index 100%
rename from res/values-ur-rPK/provisioning.xml
rename to res/values-ur/provisioning.xml
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur/strings.xml
similarity index 100%
rename from res/values-ur-rPK/strings.xml
rename to res/values-ur/strings.xml
diff --git a/res/values-uz-rUZ/live_cases.xml b/res/values-uz/live_cases.xml
similarity index 100%
rename from res/values-uz-rUZ/live_cases.xml
rename to res/values-uz/live_cases.xml
diff --git a/res/values-uz-rUZ/provisioning.xml b/res/values-uz/provisioning.xml
similarity index 100%
rename from res/values-uz-rUZ/provisioning.xml
rename to res/values-uz/provisioning.xml
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz/strings.xml
similarity index 100%
rename from res/values-uz-rUZ/strings.xml
rename to res/values-uz/strings.xml
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 4b4b1e2..0977726 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -24,7 +24,7 @@
     <string name="pairing_peripheral" msgid="6983626861540899365">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 配對中"</string>
     <string name="pairing_peripheral_failed" msgid="6087643307743264679">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 無法配對"</string>
     <string name="failed_to_enable_bt" msgid="7229153323594758077">"無法啟用藍牙"</string>
-    <string name="confirm_pairing" msgid="4112568077038265363">"您確定要與藍牙裝置「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對嗎?"</string>
+    <string name="confirm_pairing" msgid="4112568077038265363">"你確定要與藍牙裝置「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對嗎?"</string>
     <string name="pair_yes" msgid="3525614878559994448">"是"</string>
     <string name="pair_no" msgid="5022308368904055020">"否"</string>
     <string name="tap_again_to_pay" msgid="5754988005412859897">"再輕觸一下即可使用「<xliff:g id="APP">%1$s</xliff:g>」付款"</string>
@@ -33,13 +33,13 @@
     <string name="could_not_use_app" msgid="8137587876138569083">"無法使用「<xliff:g id="APP">%1$s</xliff:g>」。"</string>
     <string name="pay_with" msgid="5531545488795798945">"使用以下應用程式完成付款:"</string>
     <string name="complete_with" msgid="6797459104103012992">"使用以下應用程式完成操作:"</string>
-    <string name="default_pay_app_removed" msgid="4108250545457437360">"您偏好的感應付款服務已遭移除,要選擇其他服務嗎?"</string>
+    <string name="default_pay_app_removed" msgid="4108250545457437360">"你偏好的感應付款服務已遭移除,要選擇其他服務嗎?"</string>
     <string name="ask_nfc_tap" msgid="2925239870458286340">"輕觸另一個裝置即可完成"</string>
     <string name="wifi_connect" msgid="6250727951843550671">"連線"</string>
     <string name="status_unable_to_connect" msgid="9183908200295307657">"無法連線至網路"</string>
     <string name="status_wifi_connected" msgid="5893022897732105739">"已連線"</string>
     <string name="title_connect_to_network" msgid="2474034615817280146">"連線至網路"</string>
     <string name="prompt_connect_to_network" msgid="8511683573657516114">"連線至網路 <xliff:g id="NETWORK_SSID">%1$s</xliff:g>?"</string>
-    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"需要 NFC 才能啟用 Android Beam。您要啟用嗎?"</string>
+    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"需要 NFC 才能啟用 Android Beam。你要啟用嗎?"</string>
     <string name="android_beam" msgid="1666446406999492763">"Android Beam"</string>
 </resources>
diff --git a/src/com/android/nfc/BeamShareActivity.java b/src/com/android/nfc/BeamShareActivity.java
index f06bfdb..4cc29b0 100644
--- a/src/com/android/nfc/BeamShareActivity.java
+++ b/src/com/android/nfc/BeamShareActivity.java
@@ -148,7 +148,8 @@
     }
 
     public void parseShareIntentAndFinish(Intent intent) {
-        if (intent == null || (!intent.getAction().equalsIgnoreCase(Intent.ACTION_SEND) &&
+        if (intent == null || intent.getAction() == null ||
+                (!intent.getAction().equalsIgnoreCase(Intent.ACTION_SEND) &&
                 !intent.getAction().equalsIgnoreCase(Intent.ACTION_SEND_MULTIPLE))) return;
 
         // First, see if the intent contains clip-data, and if so get data from there
diff --git a/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java b/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java
index dc143e3..e85eb4c 100644
--- a/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java
+++ b/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java
@@ -82,6 +82,7 @@
     }
 
     private void doConnect(WifiManager wifiManager) {
+        mCurrentWifiConfiguration.hiddenSSID = true;
         int networkId = wifiManager.addNetwork(mCurrentWifiConfiguration);
 
         if (networkId < 0) {
diff --git a/src/com/android/nfc/DeviceHost.java b/src/com/android/nfc/DeviceHost.java
index a123dde..621478c 100644
--- a/src/com/android/nfc/DeviceHost.java
+++ b/src/com/android/nfc/DeviceHost.java
@@ -216,7 +216,7 @@
 
     public int getTimeout(int technology);
 
-    public void doAbort();
+    public void doAbort(String msg);
 
     boolean canMakeReadOnly(int technology);
 
diff --git a/src/com/android/nfc/ForegroundUtils.java b/src/com/android/nfc/ForegroundUtils.java
index 0202356..e5c3491 100644
--- a/src/com/android/nfc/ForegroundUtils.java
+++ b/src/com/android/nfc/ForegroundUtils.java
@@ -18,7 +18,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import android.app.ActivityManagerNative;
+import android.app.ActivityManager;
 import android.app.IActivityManager;
 import android.app.IProcessObserver;
 import android.os.RemoteException;
@@ -45,7 +45,7 @@
     }
 
     private ForegroundUtils() {
-        mIActivityManager = ActivityManagerNative.getDefault();
+        mIActivityManager = ActivityManager.getService();
         try {
             mIActivityManager.registerProcessObserver(this);
         } catch (RemoteException e) {
@@ -182,10 +182,4 @@
                 Integer.toString(pid));
         onForegroundActivitiesChanged(pid, uid, false);
     }
-
-    @Override
-    public void onProcessStateChanged(int pid, int uid, int procState)
-            throws RemoteException {
-        // Don't care
-    }
 }
diff --git a/src/com/android/nfc/NfcApplication.java b/src/com/android/nfc/NfcApplication.java
index 8747abe..f72988d 100644
--- a/src/com/android/nfc/NfcApplication.java
+++ b/src/com/android/nfc/NfcApplication.java
@@ -22,6 +22,7 @@
 import android.os.Process;
 import android.os.UserHandle;
 import android.view.ThreadedRenderer;
+import android.content.pm.PackageManager;
 
 import java.util.Iterator;
 import java.util.List;
@@ -40,6 +41,12 @@
     @Override
     public void onCreate() {
         super.onCreate();
+        PackageManager pm = getApplicationContext().getPackageManager();
+        if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_ANY)) {
+            pm.setApplicationEnabledSetting(getApplicationContext().getPackageName(),
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
+                return;
+        }
 
         boolean isMainProcess = false;
         // We start a service in a separate process to do
diff --git a/src/com/android/nfc/NfcBackupAgent.java b/src/com/android/nfc/NfcBackupAgent.java
index 27fdf76..98637db 100644
--- a/src/com/android/nfc/NfcBackupAgent.java
+++ b/src/com/android/nfc/NfcBackupAgent.java
@@ -18,6 +18,9 @@
 
 import android.app.backup.BackupAgentHelper;
 import android.app.backup.SharedPreferencesBackupHelper;
+import android.content.SharedPreferences;
+import android.nfc.NfcAdapter;
+import android.content.Context;
 
 public class NfcBackupAgent extends BackupAgentHelper {
     // Backup identifier
@@ -29,5 +32,28 @@
                 new SharedPreferencesBackupHelper(this, NfcService.PREF);
         addHelper(SHARED_PREFS_BACKUP_KEY, helper);
     }
+
+    @Override
+    public void onRestoreFinished() {
+        NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
+
+        if (nfcAdapter != null) {
+            SharedPreferences prefs = getSharedPreferences(NfcService.PREF,
+                Context.MODE_MULTI_PROCESS);
+            if (prefs.getBoolean(NfcService.PREF_NDEF_PUSH_ON,
+                    NfcService.NDEF_PUSH_ON_DEFAULT)) {
+                nfcAdapter.enableNdefPush();
+            } else {
+                nfcAdapter.disableNdefPush();
+            }
+
+            if (prefs.getBoolean(NfcService.PREF_NFC_ON,
+                    NfcService.NFC_ON_DEFAULT)) {
+                nfcAdapter.enable();
+            } else {
+                nfcAdapter.disable();
+            }
+        }
+    }
 }
 
diff --git a/src/com/android/nfc/NfcDispatcher.java b/src/com/android/nfc/NfcDispatcher.java
index 9f70b2e..03d2b3b 100644
--- a/src/com/android/nfc/NfcDispatcher.java
+++ b/src/com/android/nfc/NfcDispatcher.java
@@ -26,7 +26,6 @@
 
 import android.app.Activity;
 import android.app.ActivityManager;
-import android.app.ActivityManagerNative;
 import android.app.IActivityManager;
 import android.app.PendingIntent;
 import android.app.PendingIntent.CanceledException;
@@ -90,7 +89,7 @@
                   HandoverDataParser handoverDataParser,
                   boolean provisionOnly) {
         mContext = context;
-        mIActivityManager = ActivityManagerNative.getDefault();
+        mIActivityManager = ActivityManager.getService();
         mTechListFilters = new RegisteredComponentCache(mContext,
                 NfcAdapter.ACTION_TECH_DISCOVERED, NfcAdapter.ACTION_TECH_DISCOVERED);
         mContentResolver = context.getContentResolver();
@@ -628,6 +627,12 @@
         if (handover.oobData != null) {
             intent.putExtra(PeripheralHandoverService.EXTRA_PERIPHERAL_OOB_DATA, handover.oobData);
         }
+        if (handover.uuids != null) {
+            intent.putExtra(PeripheralHandoverService.EXTRA_PERIPHERAL_UUIDS, handover.uuids);
+        }
+        if (handover.btClass != null) {
+            intent.putExtra(PeripheralHandoverService.EXTRA_PERIPHERAL_CLASS, handover.btClass);
+        }
         mContext.startServiceAsUser(intent, UserHandle.CURRENT);
 
         return true;
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index 0c36868..770b59e 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -18,6 +18,7 @@
 
 import android.app.ActivityManager;
 import android.app.Application;
+import android.app.backup.BackupManager;
 import android.app.KeyguardManager;
 import android.app.PendingIntent;
 import android.app.admin.DevicePolicyManager;
@@ -194,6 +195,8 @@
 
     private final NfceeAccessControl mNfceeAccessControl;
 
+    private final BackupManager mBackupManager;
+
     List<PackageInfo> mInstalledPackages; // cached version of installed packages
 
     // fields below are used in multiple threads and protected by synchronized(this)
@@ -419,6 +422,8 @@
         mNumP2pDetected = new AtomicInteger();
         mNumHceDetected = new AtomicInteger();
 
+        mBackupManager = new BackupManager(mContext);
+
         // Intents for all users
         IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
         filter.addAction(Intent.ACTION_SCREEN_ON);
@@ -678,6 +683,7 @@
         synchronized (NfcService.this) {
             mPrefsEditor.putBoolean(PREF_NFC_ON, on);
             mPrefsEditor.apply();
+            mBackupManager.dataChanged();
         }
     }
 
@@ -820,6 +826,7 @@
                 if (isNfcEnabled()) {
                     mP2pLinkManager.enableDisable(true, true);
                 }
+                mBackupManager.dataChanged();
             }
             return true;
         }
@@ -839,6 +846,7 @@
                 if (isNfcEnabled()) {
                     mP2pLinkManager.enableDisable(false, true);
                 }
+                mBackupManager.dataChanged();
             }
             return true;
         }
@@ -1477,7 +1485,7 @@
                 interrupt();
             }
             Log.e(TAG, "Watchdog triggered, aborting.");
-            mDeviceHost.doAbort();
+            mDeviceHost.doAbort(getName());
         }
 
         public synchronized void cancel() {
@@ -1574,7 +1582,7 @@
                 paramsBuilder.setEnableReaderMode(true);
             } else {
                 paramsBuilder.setTechMask(NfcDiscoveryParameters.NFC_POLL_DEFAULT);
-                paramsBuilder.setEnableP2p(mIsNdefPushEnabled);
+                paramsBuilder.setEnableP2p(true);
             }
         } else if (screenState == ScreenStateHelper.SCREEN_STATE_ON_LOCKED && mInProvisionMode) {
             paramsBuilder.setTechMask(NfcDiscoveryParameters.NFC_POLL_DEFAULT);
@@ -2194,6 +2202,10 @@
                 if (mIsHceCapable) {
                     mCardEmulationManager.onUserSwitched(getUserId());
                 }
+                int screenState = mScreenStateHelper.checkScreenState();
+                if (screenState != mScreenState) {
+                    new ApplyRoutingTask().execute(Integer.valueOf(screenState));
+                }
             }
         }
     };
diff --git a/src/com/android/nfc/NfcWifiProtectedSetup.java b/src/com/android/nfc/NfcWifiProtectedSetup.java
index 10c9596..66c2553 100644
--- a/src/com/android/nfc/NfcWifiProtectedSetup.java
+++ b/src/com/android/nfc/NfcWifiProtectedSetup.java
@@ -102,22 +102,23 @@
                 ByteBuffer payload = ByteBuffer.wrap(record.getPayload());
                 while (payload.hasRemaining()) {
                     short fieldId = payload.getShort();
-                    short fieldSize = payload.getShort();
+                    int fieldSize = payload.getShort() & 0xFFFF;
                     if (fieldId == CREDENTIAL_FIELD_ID) {
                         return parseCredential(payload, fieldSize);
                     }
+                    payload.position(payload.position() + fieldSize);
                 }
             }
         }
         return null;
     }
 
-    private static WifiConfiguration parseCredential(ByteBuffer payload, short size) {
+    private static WifiConfiguration parseCredential(ByteBuffer payload, int size) {
         int startPosition = payload.position();
         WifiConfiguration result = new WifiConfiguration();
         while (payload.position() < startPosition + size) {
             short fieldId = payload.getShort();
-            short fieldSize = payload.getShort();
+            int fieldSize = payload.getShort() & 0xFFFF;
 
             // sanity check
             if (payload.position() + fieldSize > startPosition + size) {
diff --git a/src/com/android/nfc/P2pLinkManager.java b/src/com/android/nfc/P2pLinkManager.java
index b083549..5877959 100755
--- a/src/com/android/nfc/P2pLinkManager.java
+++ b/src/com/android/nfc/P2pLinkManager.java
@@ -482,6 +482,7 @@
                 } else {
                     mMessageToSend = createDefaultNdef(pkgs[0]);
                     mUrisToSend = null;
+                    mSendFlags = 0;
                 }
             }
 
@@ -763,7 +764,10 @@
                     response = snepResponse.getNdefMessage();
                 }
                 if (response == null) {
-                    return HANDOVER_UNSUPPORTED;
+                    if (snepClient != null)
+                        return HANDOVER_UNSUPPORTED;
+                    else
+                        return HANDOVER_FAILURE;
                 }
             } else {
                 return HANDOVER_UNSUPPORTED;
diff --git a/src/com/android/nfc/beam/BeamManager.java b/src/com/android/nfc/beam/BeamManager.java
index ba16aa5..8cd3dfc 100644
--- a/src/com/android/nfc/beam/BeamManager.java
+++ b/src/com/android/nfc/beam/BeamManager.java
@@ -15,6 +15,7 @@
 */
 package com.android.nfc.beam;
 
+import com.android.nfc.NfcService;
 import com.android.nfc.handover.HandoverDataParser;
 
 import android.bluetooth.BluetoothDevice;
@@ -36,6 +37,7 @@
     private static final String TAG = "BeamManager";
     private static final boolean DBG = false;
 
+    private static final String BLUETOOTH_PACKAGE = "com.android.bluetooth";
     private static final String ACTION_WHITELIST_DEVICE =
             "android.btopp.intent.action.WHITELIST_DEVICE";
     public static final int MSG_BEAM_COMPLETE = 0;
@@ -45,6 +47,8 @@
     private boolean mBeamInProgress;
     private final Handler mCallback;
 
+    private NfcService mNfcService;
+
     private static final class Singleton {
         public static final BeamManager INSTANCE = new BeamManager();
     }
@@ -53,6 +57,7 @@
         mLock = new Object();
         mBeamInProgress = false;
         mCallback = new Handler(Looper.getMainLooper(), this);
+        mNfcService = NfcService.getInstance();
     }
 
     public static BeamManager getInstance() {
@@ -118,6 +123,11 @@
             synchronized (mLock) {
                 mBeamInProgress = false;
             }
+
+            boolean success = msg.arg1 == 1;
+            if (success) {
+                mNfcService.playSound(NfcService.SOUND_END);
+            }
             return true;
         }
         return false;
@@ -126,6 +136,7 @@
     void whitelistOppDevice(Context context, BluetoothDevice device) {
         if (DBG) Log.d(TAG, "Whitelisting " + device + " for BT OPP");
         Intent intent = new Intent(ACTION_WHITELIST_DEVICE);
+        intent.setPackage(BLUETOOTH_PACKAGE);
         intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
         context.sendBroadcastAsUser(intent, UserHandle.CURRENT);
     }
diff --git a/src/com/android/nfc/beam/BeamReceiveService.java b/src/com/android/nfc/beam/BeamReceiveService.java
index 7deb014..9d24dd0 100644
--- a/src/com/android/nfc/beam/BeamReceiveService.java
+++ b/src/com/android/nfc/beam/BeamReceiveService.java
@@ -1,15 +1,11 @@
 package com.android.nfc.beam;
 
-import com.android.nfc.R;
-
 import android.app.Service;
 import android.bluetooth.BluetoothAdapter;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.media.AudioManager;
-import android.media.SoundPool;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
@@ -33,8 +29,6 @@
     private BeamStatusReceiver mBeamStatusReceiver;
     private boolean mBluetoothEnabledByNfc;
     private int mStartId;
-    private SoundPool mSoundPool;
-    private int mSuccessSound;
     private BeamTransferManager mTransferManager;
     private Messenger mCompleteCallback;
 
@@ -75,7 +69,7 @@
             if (DBG) Log.i(TAG, "Ready for incoming Beam transfer");
             return START_STICKY;
         } else {
-            invokeCompleteCallback();
+            invokeCompleteCallback(false);
             stopSelf(startId);
             return START_NOT_STICKY;
         }
@@ -86,9 +80,6 @@
     public void onCreate() {
         super.onCreate();
 
-        mSoundPool = new SoundPool(1, AudioManager.STREAM_NOTIFICATION, 0);
-        mSuccessSound = mSoundPool.load(this, R.raw.end, 1);
-
         // register BT state receiver
         IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
         registerReceiver(mBluetoothStateReceiver, filter);
@@ -97,10 +88,6 @@
     @Override
     public void onDestroy() {
         super.onDestroy();
-        if (mSoundPool != null) {
-            mSoundPool.release();
-        }
-
         if (mBeamStatusReceiver != null) {
             unregisterReceiver(mBeamStatusReceiver);
         }
@@ -139,10 +126,12 @@
         return true;
     }
 
-    private void invokeCompleteCallback() {
+    private void invokeCompleteCallback(boolean success) {
         if (mCompleteCallback != null) {
             try {
-                mCompleteCallback.send(Message.obtain(null, BeamManager.MSG_BEAM_COMPLETE));
+                Message msg = Message.obtain(null, BeamManager.MSG_BEAM_COMPLETE);
+                msg.arg1 = success ? 1 : 0;
+                mCompleteCallback.send(msg);
             } catch (RemoteException e) {
                 Log.e(TAG, "failed to invoke Beam complete callback", e);
             }
@@ -152,9 +141,7 @@
     @Override
     public void onTransferComplete(BeamTransferManager transfer, boolean success) {
         // Play success sound
-        if (success) {
-            mSoundPool.play(mSuccessSound, 1.0f, 1.0f, 0, 0, 1.0f);
-        } else {
+        if (!success) {
             if (DBG) Log.d(TAG, "Transfer failed, final state: " +
                     Integer.toString(transfer.mState));
         }
@@ -164,7 +151,7 @@
             mBluetoothAdapter.disable();
         }
 
-        invokeCompleteCallback();
+        invokeCompleteCallback(success);
         stopSelf(mStartId);
     }
 
diff --git a/src/com/android/nfc/beam/BeamSendService.java b/src/com/android/nfc/beam/BeamSendService.java
index 59019d5..6c013ea 100644
--- a/src/com/android/nfc/beam/BeamSendService.java
+++ b/src/com/android/nfc/beam/BeamSendService.java
@@ -16,16 +16,12 @@
 
 package com.android.nfc.beam;
 
-import com.android.nfc.R;
-
 import android.app.Service;
 import android.bluetooth.BluetoothAdapter;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.media.AudioManager;
-import android.media.SoundPool;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
@@ -47,8 +43,6 @@
     private boolean mBluetoothEnabledByNfc;
     private Messenger mCompleteCallback;
     private int mStartId;
-    SoundPool mSoundPool;
-    int mSuccessSound;
 
     private final BluetoothAdapter mBluetoothAdapter;
     private final BroadcastReceiver mBluetoothStateReceiver = new BroadcastReceiver() {
@@ -69,9 +63,6 @@
     public void onCreate() {
         super.onCreate();
 
-        mSoundPool = new SoundPool(1, AudioManager.STREAM_NOTIFICATION, 0);
-        mSuccessSound = mSoundPool.load(this, R.raw.end, 1);
-
         // register BT state receiver
         IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
         registerReceiver(mBluetoothStateReceiver, filter);
@@ -80,9 +71,6 @@
     @Override
     public void onDestroy() {
         super.onDestroy();
-        if (mSoundPool != null) {
-            mSoundPool.release();
-        }
 
         if (mBeamStatusReceiver != null) {
             unregisterReceiver(mBeamStatusReceiver);
@@ -108,7 +96,7 @@
             if (DBG) Log.i(TAG, "Starting outgoing Beam transfer");
             return START_STICKY;
         } else {
-            invokeCompleteCallback();
+            invokeCompleteCallback(false);
             stopSelf(startId);
             return START_NOT_STICKY;
         }
@@ -170,10 +158,12 @@
         }
     }
 
-    private void invokeCompleteCallback() {
+    private void invokeCompleteCallback(boolean success) {
         if (mCompleteCallback != null) {
             try {
-                mCompleteCallback.send(Message.obtain(null, BeamManager.MSG_BEAM_COMPLETE));
+                Message msg = Message.obtain(null, BeamManager.MSG_BEAM_COMPLETE);
+                msg.arg1 = success ? 1 : 0;
+                mCompleteCallback.send(msg);
             } catch (RemoteException e) {
                 Log.e(TAG, "failed to invoke Beam complete callback", e);
             }
@@ -183,9 +173,7 @@
     @Override
     public void onTransferComplete(BeamTransferManager transfer, boolean success) {
         // Play success sound
-        if (success) {
-            mSoundPool.play(mSuccessSound, 1.0f, 1.0f, 0, 0, 1.0f);
-        } else {
+        if (!success) {
             if (DBG) Log.d(TAG, "Transfer failed, final state: " +
                     Integer.toString(transfer.mState));
         }
@@ -195,7 +183,7 @@
             mBluetoothAdapter.disable();
         }
 
-        invokeCompleteCallback();
+        invokeCompleteCallback(success);
         stopSelf(mStartId);
     }
 
diff --git a/src/com/android/nfc/beam/BeamTransferManager.java b/src/com/android/nfc/beam/BeamTransferManager.java
index 0dafd95..f0b018f 100644
--- a/src/com/android/nfc/beam/BeamTransferManager.java
+++ b/src/com/android/nfc/beam/BeamTransferManager.java
@@ -19,6 +19,7 @@
 import com.android.nfc.R;
 
 import android.app.Notification;
+import android.app.NotificationChannel;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Notification.Builder;
@@ -102,6 +103,10 @@
 
     static final String BEAM_DIR = "beam";
 
+    static final String BEAM_NOTIFICATION_CHANNEL = "beam_notification_channel";
+
+    static final String BLUETOOTH_PACKAGE = "com.android.bluetooth";
+
     static final String ACTION_WHITELIST_DEVICE =
             "android.btopp.intent.action.WHITELIST_DEVICE";
 
@@ -171,11 +176,16 @@
         mHandler.sendEmptyMessageDelayed(MSG_TRANSFER_TIMEOUT, ALIVE_CHECK_MS);
         mNotificationManager = (NotificationManager) mContext.getSystemService(
                 Context.NOTIFICATION_SERVICE);
+        NotificationChannel notificationChannel = new NotificationChannel(
+                BEAM_NOTIFICATION_CHANNEL, mContext.getString(R.string.app_name),
+                NotificationManager.IMPORTANCE_HIGH);
+        mNotificationManager.createNotificationChannel(notificationChannel);
     }
 
     void whitelistOppDevice(BluetoothDevice device) {
         if (DBG) Log.d(TAG, "Whitelisting " + device + " for BT OPP");
         Intent intent = new Intent(ACTION_WHITELIST_DEVICE);
+        intent.setPackage(BLUETOOTH_PACKAGE);
         intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
         mContext.sendBroadcastAsUser(intent, UserHandle.CURRENT);
     }
@@ -285,17 +295,19 @@
 
     private void sendBluetoothCancelIntentAndUpdateState() {
         Intent cancelIntent = new Intent(ACTION_STOP_BLUETOOTH_TRANSFER);
+        cancelIntent.setPackage(BLUETOOTH_PACKAGE);
         cancelIntent.putExtra(BeamStatusReceiver.EXTRA_TRANSFER_ID, mBluetoothTransferId);
         mContext.sendBroadcast(cancelIntent);
         updateStateAndNotification(STATE_CANCELLED);
     }
 
     void updateNotification() {
-        Builder notBuilder = new Notification.Builder(mContext);
+        Builder notBuilder = new Notification.Builder(mContext, BEAM_NOTIFICATION_CHANNEL);
         notBuilder.setColor(mContext.getResources().getColor(
                 com.android.internal.R.color.system_notification_accent_color));
         notBuilder.setWhen(mStartTime);
         notBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
+        notBuilder.setOnlyAlertOnce(true);
         String beamString;
         if (mIncoming) {
             beamString = mContext.getString(R.string.beam_progress);
diff --git a/src/com/android/nfc/beam/SendUi.java b/src/com/android/nfc/beam/SendUi.java
index 254acfa..940316e 100644
--- a/src/com/android/nfc/beam/SendUi.java
+++ b/src/com/android/nfc/beam/SendUi.java
@@ -26,7 +26,10 @@
 import android.animation.TimeAnimator;
 import android.app.ActivityManager;
 import android.app.StatusBarManager;
+import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
 import android.graphics.Bitmap;
@@ -322,6 +325,9 @@
         }
         mState = STATE_W4_SCREENSHOT;
         new ScreenshotTask().execute();
+
+        final IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+        mContext.registerReceiver(mReceiver, filter);
     }
 
     /** Show pre-send animation */
@@ -529,8 +535,11 @@
         mWindowManager.removeView(mDecor);
         mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
         mScreenshotBitmap = null;
+        mContext.unregisterReceiver(mReceiver);
         if (mToastString != null) {
-            Toast.makeText(mContext, mToastString, Toast.LENGTH_LONG).show();
+            Toast toast = Toast.makeText(mContext, mToastString, Toast.LENGTH_LONG);
+            toast.getWindowParams().privateFlags |= LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
+            toast.show();
         }
         mToastString = null;
     }
@@ -891,4 +900,13 @@
     @Override
     public void onActionModeFinished(ActionMode mode) {
     }
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) {
+                mCallback.onCanceled();
+            }
+        }
+    };
 }
diff --git a/src/com/android/nfc/cardemulation/CardEmulationManager.java b/src/com/android/nfc/cardemulation/CardEmulationManager.java
index cff9dd3..3fc58fd 100644
--- a/src/com/android/nfc/cardemulation/CardEmulationManager.java
+++ b/src/com/android/nfc/cardemulation/CardEmulationManager.java
@@ -154,6 +154,7 @@
         mHostNfcFEmulationManager.onUserSwitched();
         mT3tIdentifiersCache.onUserSwitched();
         mEnabledNfcFServices.onUserSwitched(userId);
+        mNfcFServicesCache.onUserSwitched();
         mNfcFServicesCache.invalidateCache(userId);
     }
 
@@ -356,7 +357,7 @@
                 throws RemoteException {
             NfcPermissions.validateUserId(userId);
             NfcPermissions.enforceAdminPermissions(mContext);
-            if (!isServiceRegistered(userId, service)) {
+            if (service != null && !isServiceRegistered(userId, service)) {
                 return false;
             }
             return mPreferredServices.setDefaultForNextTap(service);
diff --git a/src/com/android/nfc/cardemulation/HostEmulationManager.java b/src/com/android/nfc/cardemulation/HostEmulationManager.java
index b481130..d5a00ee 100644
--- a/src/com/android/nfc/cardemulation/HostEmulationManager.java
+++ b/src/com/android/nfc/cardemulation/HostEmulationManager.java
@@ -515,7 +515,7 @@
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("Bound services: ");
+        pw.println("Bound HCE-A/HCE-B services: ");
         if (mPaymentServiceBound) {
             pw.println("    payment: " + mPaymentServiceName);
         }
diff --git a/src/com/android/nfc/cardemulation/HostNfcFEmulationManager.java b/src/com/android/nfc/cardemulation/HostNfcFEmulationManager.java
index db61a06..b6d1440 100644
--- a/src/com/android/nfc/cardemulation/HostNfcFEmulationManager.java
+++ b/src/com/android/nfc/cardemulation/HostNfcFEmulationManager.java
@@ -362,7 +362,7 @@
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("Bound services: ");
+        pw.println("Bound HCE-F services: ");
         if (mServiceBound) {
             pw.println("    service: " + mServiceName);
         }
diff --git a/src/com/android/nfc/cardemulation/PreferredServices.java b/src/com/android/nfc/cardemulation/PreferredServices.java
index 9118aa5..01fe229 100644
--- a/src/com/android/nfc/cardemulation/PreferredServices.java
+++ b/src/com/android/nfc/cardemulation/PreferredServices.java
@@ -135,8 +135,8 @@
         ComponentName newDefault = name != null ? ComponentName.unflattenFromString(name) : null;
         boolean preferForeground = false;
         try {
-            preferForeground = Settings.Secure.getInt(mContext.getContentResolver(),
-                    Settings.Secure.NFC_PAYMENT_FOREGROUND) != 0;
+            preferForeground = Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                    Settings.Secure.NFC_PAYMENT_FOREGROUND, userId) != 0;
         } catch (SettingNotFoundException e) {
         }
         synchronized (mLock) {
@@ -206,7 +206,7 @@
             // preferences.
             if (mForegroundCurrent != null) {
                 if (!isForegroundAllowedLocked(mForegroundCurrent))  {
-                    Log.d(TAG, "Removing foreground preferred service because of conflict.");
+                    Log.d(TAG, "Removing foreground preferred service.");
                     mForegroundRequested = null;
                     mForegroundUid = -1;
                     changed = true;
@@ -229,6 +229,10 @@
         }
         ApduServiceInfo serviceInfo = mServiceCache.getService(ActivityManager.getCurrentUser(),
                 service);
+        if (serviceInfo == null) {
+            Log.d(TAG, "Requested foreground service unexpectedly removed");
+            return false;
+        }
         // Do some sanity checking
         if (!mPaymentDefaults.preferForeground) {
             // Foreground apps are not allowed to override payment default
@@ -281,7 +285,7 @@
                     success = false;
                 }
             } else {
-                Log.e(TAG, "Requested foreground service conflicts with default payment app.");
+                Log.e(TAG, "Requested foreground service conflicts or was removed.");
             }
         }
         if (success) {
diff --git a/src/com/android/nfc/cardemulation/RegisteredNfcFServicesCache.java b/src/com/android/nfc/cardemulation/RegisteredNfcFServicesCache.java
index cf188aa..5867b3c 100644
--- a/src/com/android/nfc/cardemulation/RegisteredNfcFServicesCache.java
+++ b/src/com/android/nfc/cardemulation/RegisteredNfcFServicesCache.java
@@ -73,6 +73,7 @@
     final Callback mCallback;
     final AtomicFile mDynamicSystemCodeNfcid2File;
     boolean mActivated = false;
+    boolean mUserSwitched = false;
 
     public interface Callback {
         void onNfcFServicesUpdated(int userId, final List<NfcFServiceInfo> services);
@@ -301,7 +302,10 @@
                 }
                 matched = false;
             }
-            if (toBeAdded.size() == 0 && toBeRemoved.size() == 0) {
+            if (mUserSwitched) {
+                Log.d(TAG, "User switched, rebuild internal cache");
+                mUserSwitched = false;
+            } else if (toBeAdded.size() == 0 && toBeRemoved.size() == 0) {
                 Log.d(TAG, "Service unchanged, not updating");
                 return;
             }
@@ -693,6 +697,12 @@
         }
     }
 
+    public void onUserSwitched() {
+        synchronized (mLock) {
+            mUserSwitched = true;
+        }
+    }
+
     private String generateRandomNfcid2() {
         long min = 0L;
         long max = 0xFFFFFFFFFFFFL;
@@ -705,7 +715,7 @@
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("Registered HCE services for current user: ");
+        pw.println("Registered HCE-F services for current user: ");
         synchronized (mLock) {
             UserServices userServices = findOrCreateUserLocked(ActivityManager.getCurrentUser());
             for (NfcFServiceInfo service : userServices.services.values()) {
diff --git a/src/com/android/nfc/cardemulation/RegisteredServicesCache.java b/src/com/android/nfc/cardemulation/RegisteredServicesCache.java
index be84e53..b454073 100644
--- a/src/com/android/nfc/cardemulation/RegisteredServicesCache.java
+++ b/src/com/android/nfc/cardemulation/RegisteredServicesCache.java
@@ -225,9 +225,9 @@
 
         ArrayList<ApduServiceInfo> validServices = new ArrayList<ApduServiceInfo>();
 
-        List<ResolveInfo> resolvedServices = pm.queryIntentServicesAsUser(
+        List<ResolveInfo> resolvedServices = new ArrayList<>(pm.queryIntentServicesAsUser(
                 new Intent(HostApduService.SERVICE_INTERFACE),
-                PackageManager.GET_META_DATA, userId);
+                PackageManager.GET_META_DATA, userId));
 
         List<ResolveInfo> resolvedOffHostServices = pm.queryIntentServicesAsUser(
                 new Intent(OffHostApduService.SERVICE_INTERFACE),
diff --git a/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java b/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java
index 47408a8..de7ef8f 100644
--- a/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java
+++ b/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java
@@ -197,7 +197,7 @@
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("    T3T Identifier cache entries: ");
+        pw.println("T3T Identifier cache entries: ");
         for (Map.Entry<String, NfcFServiceInfo> entry : mForegroundT3tIdentifiersCache.entrySet()) {
             pw.println("    NFCID2: " + entry.getKey());
             pw.println("    NfcFServiceInfo: ");
diff --git a/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java b/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java
index 3067573..7019525 100644
--- a/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java
+++ b/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java
@@ -104,7 +104,7 @@
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("Routing table:");
+        pw.println("HCE-F routing table:");
         synchronized (mLock) {
             for (T3tIdentifier t3tIdentifier : mConfiguredT3tIdentifiers) {
                 pw.println("    " + t3tIdentifier.systemCode +
diff --git a/src/com/android/nfc/handover/BluetoothPeripheralHandover.java b/src/com/android/nfc/handover/BluetoothPeripheralHandover.java
index b43961b..bba4403 100644
--- a/src/com/android/nfc/handover/BluetoothPeripheralHandover.java
+++ b/src/com/android/nfc/handover/BluetoothPeripheralHandover.java
@@ -18,10 +18,12 @@
 
 import android.bluetooth.BluetoothA2dp;
 import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothHeadset;
 import android.bluetooth.BluetoothInputDevice;
 import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothUuid;
 import android.bluetooth.OobData;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
@@ -58,6 +60,8 @@
     static final String ACTION_DENY_CONNECT = "com.android.nfc.handover.action.DENY_CONNECT";
 
     static final int TIMEOUT_MS = 20000;
+    static final int RETRY_PAIRING_WAIT_TIME_MS = 2000;
+    static final int RETRY_CONNECT_WAIT_TIME_MS = 5000;
 
     static final int STATE_INIT = 0;
     static final int STATE_WAITING_FOR_PROXIES = 1;
@@ -78,6 +82,9 @@
 
     static final int MSG_TIMEOUT = 1;
     static final int MSG_NEXT_STEP = 2;
+    static final int MSG_RETRY = 3;
+
+    static final int MAX_RETRY_COUNT = 3;
 
     final Context mContext;
     final BluetoothDevice mDevice;
@@ -95,7 +102,10 @@
     int mHfpResult;  // used only in STATE_CONNECTING and STATE_DISCONNETING
     int mA2dpResult; // used only in STATE_CONNECTING and STATE_DISCONNETING
     int mHidResult;
+    int mRetryCount;
     OobData mOobData;
+    boolean mIsHeadsetAvailable;
+    boolean mIsA2dpAvailable;
 
     // protected by mLock
     BluetoothA2dp mA2dp;
@@ -107,7 +117,8 @@
     }
 
     public BluetoothPeripheralHandover(Context context, BluetoothDevice device, String name,
-                                       int transport, OobData oobData, Callback callback) {
+            int transport, OobData oobData, ParcelUuid[] uuids, BluetoothClass btClass,
+            Callback callback) {
         checkMainThread();  // mHandler must get get constructed on Main Thread for toasts to work
         mContext = context;
         mDevice = device;
@@ -121,6 +132,16 @@
         mProvisioning = Settings.Secure.getInt(contentResolver,
                 Settings.Global.DEVICE_PROVISIONED, 0) == 0;
 
+        mIsHeadsetAvailable = hasHeadsetCapability(uuids, btClass);
+        mIsA2dpAvailable = hasA2dpCapability(uuids, btClass);
+
+        // Capability information is from NDEF optional field, then it might be empty.
+        // If all capabilities indicate false, try to connect Headset and A2dp just in case.
+        if (!mIsHeadsetAvailable && !mIsA2dpAvailable) {
+            mIsHeadsetAvailable = true;
+            mIsA2dpAvailable = true;
+        }
+
         mState = STATE_INIT;
     }
 
@@ -154,6 +175,7 @@
         mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_TIMEOUT), TIMEOUT_MS);
 
         mAction = ACTION_INIT;
+        mRetryCount = 0;
 
         nextStep();
 
@@ -205,6 +227,18 @@
                             Log.i(TAG, "ACTION_DISCONNECT addr=" + mDevice + " name=" + mName);
                             mAction = ACTION_DISCONNECT;
                         } else {
+                            // Check if each profile of the device is disabled or not
+                            if (mHeadset.getPriority(mDevice) == BluetoothProfile.PRIORITY_OFF) {
+                                mIsHeadsetAvailable = false;
+                            }
+                            if (mA2dp.getPriority(mDevice) == BluetoothProfile.PRIORITY_OFF) {
+                                mIsA2dpAvailable = false;
+                            }
+                            if (!mIsHeadsetAvailable && !mIsA2dpAvailable) {
+                                Log.i(TAG, "Both Headset and A2DP profiles are unavailable");
+                                complete(false);
+                                break;
+                            }
                             Log.i(TAG, "ACTION_CONNECT addr=" + mDevice + " name=" + mName);
                             mAction = ACTION_CONNECT;
                         }
@@ -326,50 +360,42 @@
                 // HFP then A2DP connect
                 mState = STATE_CONNECTING;
                 synchronized (mLock) {
-                    if (mTransport == BluetoothDevice.TRANSPORT_LE) {
-                        if (mInput.getConnectionState(mDevice)
-                                != BluetoothProfile.STATE_CONNECTED) {
-                            mHidResult = RESULT_PENDING;
-                            mInput.connect(mDevice);
-                            toast(getToastString(R.string.connecting_peripheral));
-                            break;
-                        } else {
-                            mHidResult = RESULT_CONNECTED;
-                        }
-                    } else {
+                    if (mTransport != BluetoothDevice.TRANSPORT_LE) {
                         if (mHeadset.getConnectionState(mDevice) !=
                                 BluetoothProfile.STATE_CONNECTED) {
-                            mHfpResult = RESULT_PENDING;
-                            mHeadset.connect(mDevice);
+                            if (mIsHeadsetAvailable) {
+                                mHfpResult = RESULT_PENDING;
+                                mHeadset.connect(mDevice);
+                            } else {
+                                mHfpResult = RESULT_DISCONNECTED;
+                            }
                         } else {
                             mHfpResult = RESULT_CONNECTED;
                         }
                         if (mA2dp.getConnectionState(mDevice) != BluetoothProfile.STATE_CONNECTED) {
-                            mA2dpResult = RESULT_PENDING;
-                            mA2dp.connect(mDevice);
+                            if (mIsA2dpAvailable) {
+                                mA2dpResult = RESULT_PENDING;
+                                mA2dp.connect(mDevice);
+                            } else {
+                                mA2dpResult = RESULT_DISCONNECTED;
+                            }
                         } else {
                             mA2dpResult = RESULT_CONNECTED;
                         }
                         if (mA2dpResult == RESULT_PENDING || mHfpResult == RESULT_PENDING) {
-                            toast(getToastString(R.string.connecting_peripheral));
-                            break;
+                            if (mRetryCount == 0) {
+                                toast(getToastString(R.string.connecting_peripheral));
+                            }
+                            if (mRetryCount < MAX_RETRY_COUNT) {
+                                sendRetryMessage(RETRY_CONNECT_WAIT_TIME_MS);
+                                break;
+                            }
                         }
                     }
                 }
                 // fall-through
             case STATE_CONNECTING:
-                if (mTransport == BluetoothDevice.TRANSPORT_LE) {
-                    if (mHidResult == RESULT_PENDING) {
-                        break;
-                    } else if (mHidResult == RESULT_CONNECTED) {
-                        toast(getToastString(R.string.connected_peripheral));
-                        mDevice.setAlias(mName);
-                        complete(true);
-                    } else {
-                        toast (getToastString(R.string.connect_peripheral_failed));
-                        complete(false);
-                    }
-                } else {
+                if (mTransport != BluetoothDevice.TRANSPORT_LE) {
                     if (mA2dpResult == RESULT_PENDING || mHfpResult == RESULT_PENDING) {
                         // another connection type still pending
                         break;
@@ -391,7 +417,9 @@
 
     void startBonding() {
         mState = STATE_BONDING;
-        toast(getToastString(R.string.pairing_peripheral));
+        if (mRetryCount == 0) {
+            toast(getToastString(R.string.pairing_peripheral));
+        }
         if (mOobData != null) {
             if (!mDevice.createBondOutOfBand(mTransport, mOobData)) {
                 toast(getToastString(R.string.pairing_peripheral_failed));
@@ -410,6 +438,8 @@
         if (!mDevice.equals(device)) return;
 
         if (ACTION_ALLOW_CONNECT.equals(action)) {
+            mHandler.removeMessages(MSG_TIMEOUT);
+            mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_TIMEOUT), TIMEOUT_MS);
             nextStepConnect();
         } else if (ACTION_DENY_CONNECT.equals(action)) {
             complete(false);
@@ -418,10 +448,15 @@
             int bond = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
                     BluetoothAdapter.ERROR);
             if (bond == BluetoothDevice.BOND_BONDED) {
+                mRetryCount = 0;
                 nextStepConnect();
             } else if (bond == BluetoothDevice.BOND_NONE) {
-                toast(getToastString(R.string.pairing_peripheral_failed));
-                complete(false);
+                if (mRetryCount < MAX_RETRY_COUNT) {
+                    sendRetryMessage(RETRY_PAIRING_WAIT_TIME_MS);
+                } else {
+                    toast(getToastString(R.string.pairing_peripheral_failed));
+                    complete(false);
+                }
             }
         } else if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action) &&
                 (mState == STATE_CONNECTING || mState == STATE_DISCONNECTING)) {
@@ -430,8 +465,12 @@
                 mHfpResult = RESULT_CONNECTED;
                 nextStep();
             } else if (state == BluetoothProfile.STATE_DISCONNECTED) {
-                mHfpResult = RESULT_DISCONNECTED;
-                nextStep();
+                if (mAction == ACTION_CONNECT && mRetryCount < MAX_RETRY_COUNT) {
+                    sendRetryMessage(RETRY_CONNECT_WAIT_TIME_MS);
+                } else {
+                    mHfpResult = RESULT_DISCONNECTED;
+                    nextStep();
+                }
             }
         } else if (BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED.equals(action) &&
                 (mState == STATE_CONNECTING || mState == STATE_DISCONNECTING)) {
@@ -440,8 +479,12 @@
                 mA2dpResult = RESULT_CONNECTED;
                 nextStep();
             } else if (state == BluetoothProfile.STATE_DISCONNECTED) {
-                mA2dpResult = RESULT_DISCONNECTED;
-                nextStep();
+                if (mAction == ACTION_CONNECT && mRetryCount < MAX_RETRY_COUNT) {
+                    sendRetryMessage(RETRY_CONNECT_WAIT_TIME_MS);
+                } else {
+                    mA2dpResult = RESULT_DISCONNECTED;
+                    nextStep();
+                }
             }
         } else if (BluetoothInputDevice.ACTION_CONNECTION_STATE_CHANGED.equals(action) &&
                 (mState == STATE_CONNECTING || mState == STATE_DISCONNECTING)) {
@@ -461,6 +504,7 @@
         mState = STATE_COMPLETE;
         mContext.unregisterReceiver(mReceiver);
         mHandler.removeMessages(MSG_TIMEOUT);
+        mHandler.removeMessages(MSG_RETRY);
         synchronized (mLock) {
             if (mA2dp != null) {
                 mBluetoothAdapter.closeProfileProxy(BluetoothProfile.A2DP, mA2dp);
@@ -504,6 +548,34 @@
         mContext.startActivity(dialogIntent);
     }
 
+    boolean hasA2dpCapability(ParcelUuid[] uuids, BluetoothClass btClass) {
+        if (uuids != null) {
+            for (ParcelUuid uuid : uuids) {
+                if (BluetoothUuid.isAudioSink(uuid) || BluetoothUuid.isAdvAudioDist(uuid)) {
+                    return true;
+                }
+            }
+        }
+        if (btClass != null && btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) {
+            return true;
+        }
+        return false;
+    }
+
+    boolean hasHeadsetCapability(ParcelUuid[] uuids, BluetoothClass btClass) {
+        if (uuids != null) {
+            for (ParcelUuid uuid : uuids) {
+                if (BluetoothUuid.isHandsfree(uuid) || BluetoothUuid.isHeadset(uuid)) {
+                    return true;
+                }
+            }
+        }
+        if (btClass != null && btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
+            return true;
+        }
+        return false;
+    }
+
     final Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -516,6 +588,16 @@
                 case MSG_NEXT_STEP:
                     nextStep();
                     break;
+                case MSG_RETRY:
+                    mHandler.removeMessages(MSG_RETRY);
+                    if (mState == STATE_BONDING) {
+                        mState = STATE_WAITING_FOR_BOND_CONFIRMATION;
+                    } else if (mState == STATE_CONNECTING) {
+                        mState = STATE_BONDING;
+                    }
+                    mRetryCount++;
+                    nextStepConnect();
+                    break;
             }
         }
     };
@@ -563,4 +645,10 @@
     public void onServiceDisconnected(int profile) {
         // We can ignore these
     }
+
+    void sendRetryMessage(int waitTime) {
+        if (!mHandler.hasMessages(MSG_RETRY)) {
+            mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RETRY), waitTime);
+        }
+    }
 }
diff --git a/src/com/android/nfc/handover/HandoverDataParser.java b/src/com/android/nfc/handover/HandoverDataParser.java
index 8973ca5..3408320 100644
--- a/src/com/android/nfc/handover/HandoverDataParser.java
+++ b/src/com/android/nfc/handover/HandoverDataParser.java
@@ -18,6 +18,7 @@
 
 import java.nio.BufferUnderflowException;
 import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.nio.charset.Charset;
@@ -25,13 +26,16 @@
 import java.util.Random;
 
 import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothUuid;
 import android.bluetooth.OobData;
 import android.content.Context;
 import android.content.Intent;
 import android.nfc.FormatException;
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
+import android.os.ParcelUuid;
 import android.os.UserHandle;
 import android.util.Log;
 
@@ -60,6 +64,13 @@
     private static final int BT_HANDOVER_TYPE_LE_ROLE = 0x1C;
     private static final int BT_HANDOVER_TYPE_LONG_LOCAL_NAME = 0x09;
     private static final int BT_HANDOVER_TYPE_SHORT_LOCAL_NAME = 0x08;
+    private static final int BT_HANDOVER_TYPE_16_BIT_UUIDS_PARTIAL = 0x02;
+    private static final int BT_HANDOVER_TYPE_16_BIT_UUIDS_COMPLETE = 0x03;
+    private static final int BT_HANDOVER_TYPE_32_BIT_UUIDS_PARTIAL = 0x04;
+    private static final int BT_HANDOVER_TYPE_32_BIT_UUIDS_COMPLETE = 0x05;
+    private static final int BT_HANDOVER_TYPE_128_BIT_UUIDS_PARTIAL = 0x06;
+    private static final int BT_HANDOVER_TYPE_128_BIT_UUIDS_COMPLETE = 0x07;
+    private static final int BT_HANDOVER_TYPE_CLASS_OF_DEVICE = 0x0D;
     private static final int BT_HANDOVER_TYPE_SECURITY_MANAGER_TK = 0x10;
     private static final int BT_HANDOVER_TYPE_APPEARANCE = 0x19;
     private static final int BT_HANDOVER_TYPE_LE_SC_CONFIRMATION = 0x22;
@@ -70,6 +81,7 @@
     public static final int SECURITY_MANAGER_TK_SIZE = 16;
     public static final int SECURITY_MANAGER_LE_SC_C_SIZE = 16;
     public static final int SECURITY_MANAGER_LE_SC_R_SIZE = 16;
+    private static final int CLASS_OF_DEVICE_SIZE = 3;
 
     private final BluetoothAdapter mBluetoothAdapter;
 
@@ -85,6 +97,8 @@
         public boolean carrierActivating = false;
         public int transport = BluetoothDevice.TRANSPORT_AUTO;
         public OobData oobData;
+        public ParcelUuid[] uuids = null;
+        public BluetoothClass btClass = null;
     }
 
     public static class IncomingHandoverData {
@@ -382,6 +396,7 @@
             result.valid = true;
 
             while (payload.remaining() > 0) {
+                boolean success = false;
                 byte[] nameBytes;
                 int len = payload.get();
                 int type = payload.get();
@@ -390,17 +405,41 @@
                         nameBytes = new byte[len - 1];
                         payload.get(nameBytes);
                         result.name = new String(nameBytes, StandardCharsets.UTF_8);
+                        success = true;
                         break;
                     case BT_HANDOVER_TYPE_LONG_LOCAL_NAME:
                         if (result.name != null) break;  // prefer short name
                         nameBytes = new byte[len - 1];
                         payload.get(nameBytes);
                         result.name = new String(nameBytes, StandardCharsets.UTF_8);
+                        success = true;
+                        break;
+                    case BT_HANDOVER_TYPE_16_BIT_UUIDS_PARTIAL:
+                    case BT_HANDOVER_TYPE_16_BIT_UUIDS_COMPLETE:
+                    case BT_HANDOVER_TYPE_32_BIT_UUIDS_PARTIAL:
+                    case BT_HANDOVER_TYPE_32_BIT_UUIDS_COMPLETE:
+                    case BT_HANDOVER_TYPE_128_BIT_UUIDS_PARTIAL:
+                    case BT_HANDOVER_TYPE_128_BIT_UUIDS_COMPLETE:
+                        result.uuids = parseUuidFromBluetoothRecord(payload, type, len - 1);
+                        if (result.uuids != null) {
+                            success = true;
+                        }
+                        break;
+                    case BT_HANDOVER_TYPE_CLASS_OF_DEVICE:
+                        if (len - 1 != CLASS_OF_DEVICE_SIZE) {
+                            Log.i(TAG, "BT OOB: invalid size of Class of Device, should be " +
+                                  CLASS_OF_DEVICE_SIZE + " bytes.");
+                            break;
+                        }
+                        result.btClass = parseBluetoothClassFromBluetoothRecord(payload);
+                        success = true;
                         break;
                     default:
-                        payload.position(payload.position() + len - 1);
                         break;
                 }
+                if (!success) {
+                    payload.position(payload.position() + len - 1);
+                }
             }
         } catch (IllegalArgumentException e) {
             Log.i(TAG, "BT OOB: invalid BT address");
@@ -533,5 +572,50 @@
 
         return result;
     }
-}
 
+    private ParcelUuid[] parseUuidFromBluetoothRecord(ByteBuffer payload, int type, int len) {
+        int uuidSize;
+        switch (type) {
+            case BT_HANDOVER_TYPE_16_BIT_UUIDS_PARTIAL:
+            case BT_HANDOVER_TYPE_16_BIT_UUIDS_COMPLETE:
+                uuidSize = BluetoothUuid.UUID_BYTES_16_BIT;
+                break;
+            case BT_HANDOVER_TYPE_32_BIT_UUIDS_PARTIAL:
+            case BT_HANDOVER_TYPE_32_BIT_UUIDS_COMPLETE:
+                uuidSize = BluetoothUuid.UUID_BYTES_32_BIT;
+                break;
+            case BT_HANDOVER_TYPE_128_BIT_UUIDS_PARTIAL:
+            case BT_HANDOVER_TYPE_128_BIT_UUIDS_COMPLETE:
+                uuidSize = BluetoothUuid.UUID_BYTES_128_BIT;
+                break;
+            default:
+                Log.i(TAG, "BT OOB: invalid size of UUID");
+                return null;
+        }
+
+        if (len == 0 || len % uuidSize != 0) {
+            Log.i(TAG, "BT OOB: invalid size of UUIDs, should be multiples of UUID bytes length");
+            return null;
+        }
+
+        int num = len / uuidSize;
+        ParcelUuid[] uuids = new ParcelUuid[num];
+        byte[] data = new byte[uuidSize];
+        for (int i = 0; i < num; i++) {
+            payload.get(data);
+            uuids[i] = BluetoothUuid.parseUuidFrom(data);
+        }
+        return uuids;
+    }
+
+    private BluetoothClass parseBluetoothClassFromBluetoothRecord(ByteBuffer payload) {
+        byte[] btClass = new byte[CLASS_OF_DEVICE_SIZE];
+        payload.get(btClass);
+
+        ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES);
+        buffer.put(btClass);
+        buffer.order(ByteOrder.LITTLE_ENDIAN);
+
+        return new BluetoothClass(buffer.getInt(0));
+    }
+}
diff --git a/src/com/android/nfc/handover/PeripheralHandoverService.java b/src/com/android/nfc/handover/PeripheralHandoverService.java
index 95bf0d6..06b1843 100644
--- a/src/com/android/nfc/handover/PeripheralHandoverService.java
+++ b/src/com/android/nfc/handover/PeripheralHandoverService.java
@@ -18,6 +18,7 @@
 
 import android.app.Service;
 import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.OobData;
 import android.content.BroadcastReceiver;
@@ -32,6 +33,8 @@
 import android.os.IBinder;
 import android.os.Message;
 import android.os.Messenger;
+import android.os.Parcelable;
+import android.os.ParcelUuid;
 import android.os.RemoteException;
 import android.util.Log;
 
@@ -48,6 +51,8 @@
     public static final String EXTRA_PERIPHERAL_NAME = "headsetname";
     public static final String EXTRA_PERIPHERAL_TRANSPORT = "transporttype";
     public static final String EXTRA_PERIPHERAL_OOB_DATA = "oobdata";
+    public static final String EXTRA_PERIPHERAL_UUIDS = "uuids";
+    public static final String EXTRA_PERIPHERAL_CLASS = "class";
 
     // Amount of time to pause polling when connecting to peripherals
     private static final int PAUSE_POLLING_TIMEOUT_MS = 35000;
@@ -160,9 +165,19 @@
         String name = msgData.getString(EXTRA_PERIPHERAL_NAME);
         int transport = msgData.getInt(EXTRA_PERIPHERAL_TRANSPORT);
         OobData oobData = msgData.getParcelable(EXTRA_PERIPHERAL_OOB_DATA);
+        Parcelable[] parcelables = msgData.getParcelableArray(EXTRA_PERIPHERAL_UUIDS);
+        BluetoothClass btClass = msgData.getParcelable(EXTRA_PERIPHERAL_CLASS);
+
+        ParcelUuid[] uuids = null;
+        if (parcelables != null) {
+            uuids = new ParcelUuid[parcelables.length];
+            for (int i = 0; i < parcelables.length; i++) {
+                uuids[i] = (ParcelUuid)parcelables[i];
+            }
+        }
 
         mBluetoothPeripheralHandover = new BluetoothPeripheralHandover(
-                this, device, name, transport, oobData, this);
+                this, device, name, transport, oobData, uuids, btClass, this);
 
         if (transport == BluetoothDevice.TRANSPORT_LE) {
             mHandler.sendMessageDelayed(
diff --git a/tests/Android.mk b/tests/Android.mk
index ae91373..66c22d3 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -19,6 +19,7 @@
 LOCAL_MODULE_TAGS := tests
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_STATIC_JAVA_LIBRARIES := junit legacy-android-test
 
 # Include all test java files.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)