diff options
author | Martijn Coenen <maco@google.com> | 2014-09-08 21:34:22 -0700 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2014-09-08 21:37:59 -0700 |
commit | c19c065b6d0e1a088780c4dca27a1404d5926765 (patch) | |
tree | 80fc306e820caea226517ab2c9aa4454db61d2d9 /nci | |
parent | d0393d4d0f421623fb52328fda5ab6a3d93a1a84 (diff) | |
download | android_packages_apps_Nfc-c19c065b6d0e1a088780c4dca27a1404d5926765.tar.gz android_packages_apps_Nfc-c19c065b6d0e1a088780c4dca27a1404d5926765.tar.bz2 android_packages_apps_Nfc-c19c065b6d0e1a088780c4dca27a1404d5926765.zip |
Reinstate RF field events.
These are generic enough to maintain in AOSP,
and can still be protected by nfcee_access.xml
like they used to be.
Bug: 16653617
Change-Id: Id604fcc45d4263b24fea2f16ca6a24e25f8580c3
Diffstat (limited to 'nci')
-rwxr-xr-x | nci/jni/NativeNfcManager.cpp | 22 | ||||
-rwxr-xr-x | nci/src/com/android/nfc/dhimpl/NativeNfcManager.java | 9 |
2 files changed, 31 insertions, 0 deletions
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp index fa1b2d21..57dcb809 100755 --- a/nci/jni/NativeNfcManager.cpp +++ b/nci/jni/NativeNfcManager.cpp @@ -84,6 +84,8 @@ namespace android jmethodID gCachedNfcManagerNotifyHostEmuActivated; jmethodID gCachedNfcManagerNotifyHostEmuData; jmethodID gCachedNfcManagerNotifyHostEmuDeactivated; + jmethodID gCachedNfcManagerNotifyRfFieldActivated; + jmethodID gCachedNfcManagerNotifyRfFieldDeactivated; const char* gNativeP2pDeviceClassName = "com/android/nfc/dhimpl/NativeP2pDevice"; const char* gNativeLlcpServiceSocketClassName = "com/android/nfc/dhimpl/NativeLlcpServiceSocket"; const char* gNativeLlcpConnectionlessSocketClassName = "com/android/nfc/dhimpl/NativeLlcpConnectionlessSocket"; @@ -562,6 +564,11 @@ static jboolean nfcManager_initNativeStruc (JNIEnv* e, jobject o) gCachedNfcManagerNotifyHostEmuDeactivated = e->GetMethodID(cls.get(), "notifyHostEmuDeactivated", "()V"); + gCachedNfcManagerNotifyRfFieldActivated = e->GetMethodID(cls.get(), + "notifyRfFieldActivated", "()V"); + gCachedNfcManagerNotifyRfFieldDeactivated = e->GetMethodID(cls.get(), + "notifyRfFieldDeactivated", "()V"); + if (nfc_jni_cache_object(e, gNativeNfcTagClassName, &(nat->cached_NfcTag)) == -1) { ALOGE ("%s: fail cache NativeNfcTag", __FUNCTION__); @@ -647,6 +654,21 @@ void nfaDeviceManagementCallback (UINT8 dmEvent, tNFA_DM_CBACK_DATA* eventData) case NFA_DM_RF_FIELD_EVT: ALOGD ("%s: NFA_DM_RF_FIELD_EVT; status=0x%X; field status=%u", __FUNCTION__, eventData->rf_field.status, eventData->rf_field.rf_field_status); + if (!sP2pActive && eventData->rf_field.status == NFA_STATUS_OK) + { + struct nfc_jni_native_data *nat = getNative(NULL, NULL); + JNIEnv* e = NULL; + ScopedAttach attach(nat->vm, &e); + if (e == NULL) + { + ALOGE ("jni env is null"); + return; + } + if (eventData->rf_field.rf_field_status == NFA_DM_RF_FIELD_ON) + e->CallVoidMethod (nat->manager, android::gCachedNfcManagerNotifyRfFieldActivated); + else + e->CallVoidMethod (nat->manager, android::gCachedNfcManagerNotifyRfFieldDeactivated); + } break; case NFA_DM_NFCC_TRANSPORT_ERR_EVT: diff --git a/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java b/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java index 080bca01..d327f62a 100755 --- a/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java +++ b/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java @@ -335,4 +335,13 @@ public class NativeNfcManager implements DeviceHost { private void notifyHostEmuDeactivated() { mListener.onHostCardEmulationDeactivated(); } + + private void notifyRfFieldActivated() { + mListener.onRemoteFieldActivated(); + } + + private void notifyRfFieldDeactivated() { + mListener.onRemoteFieldDeactivated(); + } + } |