[automerger] [DO NOT MERGE]Prevent length underflow in NfcTag.cpp am: 96a10332c8 am: 4675f8788b am: d2dbaf8b16 am: f5ada89db2 skipped: a3e20aea92
Change-Id: I91b343b0dd427a832dedc4cbd96fd3310f152e05
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 adc2619..0e70707 100644
--- 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"
@@ -156,7 +156,7 @@
mNdefDetectionTimedOut = false;
if (deactivated.type == NFA_DEACTIVATE_TYPE_SLEEP)
mActivationState = Sleep;
- ALOGD ("%s: state=%u", fn, mActivationState);
+ ALOGV("%s: state=%u", fn, mActivationState);
}
@@ -174,7 +174,7 @@
static const char fn [] = "NfcTag::setActivationState";
mNdefDetectionTimedOut = false;
mActivationState = Active;
- ALOGD ("%s: state=%u", fn, mActivationState);
+ ALOGV("%s: state=%u", fn, mActivationState);
}
/*******************************************************************************
@@ -215,7 +215,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)
@@ -248,7 +248,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)
@@ -283,7 +283,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;
}
@@ -301,7 +301,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;
@@ -342,7 +342,7 @@
}
else if (NFC_PROTOCOL_T3T == rfDetail.protocol)
{
- UINT8 xx = 0;
+ uint8_t xx = 0;
mTechList [mNumTechList] = TARGET_TYPE_FELICA;
@@ -392,12 +392,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++;
@@ -409,17 +409,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);
}
@@ -439,10 +439,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;
@@ -531,7 +531,7 @@
}
else
{
- ALOGE ("%s: unknown protocol ????", fn);
+ ALOGE("%s: unknown protocol ????", fn);
mTechList [mNumTechList] = TARGET_TYPE_UNKNOWN;
}
@@ -540,13 +540,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);
}
@@ -565,7 +565,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);
@@ -609,15 +609,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);
}
@@ -636,7 +636,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));
@@ -687,7 +687,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);
}
@@ -718,13 +718,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);
}
@@ -740,14 +740,14 @@
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;
if (len >= NFC_NFCID0_MAX_LEN) {
// subtract 4 bytes for NFCID0 at byte 2 through 5
len = len - NFC_NFCID0_MAX_LEN;
} else {
android_errorWriteLog(0x534e4554, "124940143");
- ALOGE ("%s: sensb_res_len error", fn);
+ ALOGE("%s: sensb_res_len error", fn);
len = 0;
}
pollBytes.reset(e->NewByteArray(len));
@@ -769,25 +769,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);
@@ -795,7 +795,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();
@@ -805,7 +805,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());
@@ -839,26 +839,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);
@@ -879,14 +879,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));
}
}
@@ -901,21 +901,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);
}
@@ -926,7 +926,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();
@@ -936,7 +936,7 @@
}
else
{
- ALOGD ("%s: tech unknown ????", fn);
+ ALOGV("%s: tech unknown ????", fn);
actBytes.reset(e->NewByteArray(0));
}
e->SetObjectArrayElement(techActBytes.get(), i, actBytes.get());
@@ -969,7 +969,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,
@@ -980,7 +980,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,
@@ -997,7 +997,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);
@@ -1010,12 +1010,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];
@@ -1024,7 +1024,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");
@@ -1051,12 +1051,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;
}
@@ -1073,7 +1073,7 @@
void NfcTag::selectP2p()
{
static const char fn [] = "NfcTag::selectP2p";
- UINT8 rfDiscoveryId = 0;
+ uint8_t rfDiscoveryId = 0;
for (int i = 0; i < mNumTechList; i++)
{
@@ -1100,13 +1100,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 ();
}
@@ -1123,7 +1123,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));
@@ -1152,7 +1152,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)
{
@@ -1176,10 +1176,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);
}
@@ -1198,7 +1198,7 @@
if (mProtocol != NFC_PROTOCOL_T1T)
{
- ALOGE ("%s: wrong protocol %u", fn, mProtocol);
+ ALOGE("%s: wrong protocol %u", fn, mProtocol);
return 0;
}
return mtT1tMaxMessageSize;
@@ -1236,7 +1236,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;
}
@@ -1274,7 +1274,7 @@
break;
}
}
- ALOGD ("%s: return=%u", fn, retval);
+ ALOGV("%s: return=%u", fn, retval);
return retval;
}
@@ -1310,7 +1310,7 @@
}
}
- ALOGD ("%s: return=%u", fn, retval);
+ ALOGV("%s: return=%u", fn, retval);
return retval;
}
@@ -1344,7 +1344,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;
@@ -1356,7 +1356,7 @@
else
isNack = true; //assume every value is a NACK
}
- ALOGD ("%s: return %u", fn, isNack);
+ ALOGV("%s: return %u", fn, isNack);
return isNack;
}
@@ -1387,7 +1387,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";
@@ -1432,7 +1432,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;
@@ -1442,7 +1442,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);
}
}
}
@@ -1520,7 +1520,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;
}
@@ -1542,7 +1542,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);
}
@@ -1583,14 +1583,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;
}
@@ -1620,6 +1620,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 50e2dee..4a097d4 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 <log/log.h>
#include <nfc_api.h>
@@ -29,7 +32,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);
@@ -188,13 +191,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 )
@@ -316,7 +319,7 @@
{
NFCSTATUS status = NFCSTATUS_FAILED;
- EXTNS_SetCallBackFlag(FALSE);
+ EXTNS_SetCallBackFlag(false);
/* Set Completion Routine for CheckNdef */
NdefMap->CompletionRoutine[0].CompletionRoutine = Mfc_CheckNdef_Completion_Routine;
@@ -577,7 +580,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);
@@ -598,18 +601,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;
@@ -662,7 +665,7 @@
uint32_t *PacketDataLength = NULL;
phLibNfc_Ndef_EOffset_t Offset;
- EXTNS_SetCallBackFlag(FALSE);
+ EXTNS_SetCallBackFlag(false);
Offset = phLibNfc_Ndef_EBegin;
@@ -752,19 +755,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;
}
}
@@ -772,7 +775,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;
}
/*******************************************************************************
@@ -800,7 +803,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)
@@ -937,7 +940,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);
@@ -1001,10 +1004,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;
}
@@ -1026,11 +1029,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;
@@ -1074,11 +1077,11 @@
return status;
}
- 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 )
{
if ( len < 12 )
@@ -1106,9 +1109,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;
@@ -1121,9 +1124,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;
@@ -1138,8 +1141,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;
}
@@ -1196,7 +1199,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;
}
@@ -1281,12 +1284,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)) */
@@ -1300,9 +1303,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;
}
@@ -1311,7 +1314,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;
}
@@ -1358,10 +1361,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;
@@ -1397,10 +1400,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;
@@ -1428,13 +1431,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 )
@@ -1442,7 +1445,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 )
@@ -1459,7 +1462,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 )
@@ -1467,7 +1470,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 )
@@ -1478,7 +1481,7 @@
{
status = NFCSTATUS_SUCCESS;
}
- gphNxpExtns_Context.incrdecstatusflag = TRUE;
+ gphNxpExtns_Context.incrdecstatusflag = true;
if( pcmd_buff != NULL )
{
free(pcmd_buff);
@@ -1490,9 +1493,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);
@@ -2102,7 +2105,7 @@
pTransceiveInfo->sSendData.length = length;
pTransceiveInfo->sRecvData.length = MAX_BUFF_SIZE;
- gphNxpExtns_Context.writecmdFlag = TRUE;
+ gphNxpExtns_Context.writecmdFlag = true;
status = phLibNfc_SendWrt16Cmd(pTransceiveInfo, &tNciTranscvInfo);
}
@@ -2114,7 +2117,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);
@@ -2127,7 +2130,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)