summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jni/Android.mk5
-rw-r--r--jni/com_android_nfc_NativeNfcManager.cpp139
-rw-r--r--res/drawable-hdpi/back.pngbin32598 -> 0 bytes
-rw-r--r--res/layout/screenshot.xml9
-rw-r--r--res/raw/end.oggbin18638 -> 6641 bytes
-rw-r--r--res/raw/error.oggbin18935 -> 6185 bytes
-rw-r--r--res/raw/start.oggbin19646 -> 7437 bytes
-rw-r--r--res/values-be/strings.xml14
-rw-r--r--res/values-et/strings.xml14
-rw-r--r--src/com/android/nfc/P2pEventManager.java4
-rw-r--r--src/com/android/nfc/SendUi.java36
11 files changed, 72 insertions, 149 deletions
diff --git a/jni/Android.mk b/jni/Android.mk
index 600a54a..8ae792a 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -24,11 +24,12 @@ LOCAL_SHARED_LIBRARIES := \
libnativehelper \
libcutils \
libutils \
- libnfc
+ libnfc \
+ libhardware
#LOCAL_CFLAGS += -O0 -g
LOCAL_MODULE := libnfc_jni
LOCAL_MODULE_TAGS := optional
-include $(BUILD_SHARED_LIBRARY) \ No newline at end of file
+include $(BUILD_SHARED_LIBRARY)
diff --git a/jni/com_android_nfc_NativeNfcManager.cpp b/jni/com_android_nfc_NativeNfcManager.cpp
index 7bbac44..70c60bb 100644
--- a/jni/com_android_nfc_NativeNfcManager.cpp
+++ b/jni/com_android_nfc_NativeNfcManager.cpp
@@ -21,12 +21,13 @@
#include <stdio.h>
#include <math.h>
#include <sys/queue.h>
+#include <hardware/hardware.h>
+#include <hardware/nfc.h>
#include "com_android_nfc.h"
#define ERROR_BUFFER_TOO_SMALL -12
#define ERROR_INSUFFICIENT_RESOURCES -9
-#define EEDATA_SETTINGS_NUMBER 33
extern uint32_t libnfc_llc_error_count;
@@ -61,67 +62,6 @@ phLibNfc_Handle storedHandle = 0;
struct nfc_jni_native_data *exported_nat = NULL;
-/* TODO: move product specific configuration such as this
- * antenna tuning into product specific configuration */
-uint8_t EEDATA_Settings[EEDATA_SETTINGS_NUMBER][4] = {
- // DIFFERENTIAL_ANTENNA
-
- // RF Settings
- {0x00,0x9B,0xD1,0x0D} // Tx consumption higher than 0x0D (average 50mA)
- ,{0x00,0x9B,0xD2,0x24} // GSP setting for this threshold
- ,{0x00,0x9B,0xD3,0x0A} // Tx consumption higher than 0x0A (average 40mA)
- ,{0x00,0x9B,0xD4,0x22} // GSP setting for this threshold
- ,{0x00,0x9B,0xD5,0x08} // Tx consumption higher than 0x08 (average 30mA)
- ,{0x00,0x9B,0xD6,0x1E} // GSP setting for this threshold
- ,{0x00,0x9B,0xDD,0x1C} // GSP setting for this threshold
- ,{0x00,0x9B,0x84,0x13} // ANACM2 setting
- ,{0x00,0x99,0x81,0x7F} // ANAVMID setting PCD
- ,{0x00,0x99,0x31,0x70} // ANAVMID setting PICC
-
- // Enable PBTF
- ,{0x00,0x98,0x00,0x3F} // SECURE_ELEMENT_CONFIGURATION - No Secure Element
- ,{0x00,0x9F,0x09,0x00} // SWP_PBTF_RFU
- ,{0x00,0x9F,0x0A,0x05} // SWP_PBTF_RFLD --> RFLEVEL Detector for PBTF
- ,{0x00,0x9E,0xD1,0xA1} //
-
- // Change RF Level Detector ANARFLDWU
- ,{0x00,0x99,0x23,0x00} // Default Value is 0x01
-
- // Low-power polling
- ,{0x00,0x9E,0x74,0x80} // Default Value is 0x00, bits 0->2: sensitivity (0==maximal, 6==minimal), bits 3->6: RFU, bit 7: (0 -> disabled, 1 -> enabled)
- ,{0x00,0x9F,0x28,0x10} // Default value for register 0x28 in FW 109.7
-
- // Polling Loop - Card Emulation Timeout
- ,{0x00,0x9F,0x35,0x14} // Time for which PN544 stays in Card Emulation mode after leaving RF field
- ,{0x00,0x9F,0x36,0x60} // Default value 0x0411 = 50 ms ---> New Value : 0x1460 = 250 ms
-
- //LLC Timer
- ,{0x00,0x9C,0x31,0x00} // Guard host time-out in ms (MSB)
- ,{0x00,0x9C,0x32,0xC8} // Guard host time-out in ms (LSB)
- ,{0x00,0x9C,0x19,0x40} // Max RX retry (PN544=>host?)
- ,{0x00,0x9C,0x1A,0x40} // Max TX retry (PN544=>host?)
-
- ,{0x00,0x9C,0x0C,0x00} //
- ,{0x00,0x9C,0x0D,0x00} //
- ,{0x00,0x9C,0x12,0x00} //
- ,{0x00,0x9C,0x13,0x00} //
-
- //WTX for LLCP communication
- ,{0x00,0x98,0xA2,0x0E} // Max value: 14 (default value: 09)
-
- //SE GPIO
- ,{0x00, 0x98, 0x93, 0x40}
-
- // Set NFCT ATQA
- ,{0x00, 0x98, 0x7D, 0x02}
- ,{0x00, 0x98, 0x7E, 0x00}
-
- // Enable CEA detection mechanism
- ,{0x00, 0x9F, 0xC8, 0x01}
- // Set NFC-F poll RC=0x00
- ,{0x00, 0x9F, 0x9A, 0x00}
-};
-
/* Internal functions declaration */
static void *nfc_jni_client_thread(void *arg);
static void nfc_jni_init_callback(void *pContext, NFCSTATUS status);
@@ -132,48 +72,6 @@ static void nfc_jni_se_set_mode_callback(void *context,
static void nfc_jni_llcpcfg_callback(void *pContext, NFCSTATUS status);
static void nfc_jni_start_discovery_locked(struct nfc_jni_native_data *nat);
-static phLibNfc_eConfigLinkType parseLinkType(const char* link_name)
-{
- struct link_name_entry {
- phLibNfc_eConfigLinkType value;
- const char * name;
- };
- const struct link_name_entry sLinkNameTable[] = {
- {ENUM_LINK_TYPE_COM1, "COM1"},
- {ENUM_LINK_TYPE_COM2, "COM2"},
- {ENUM_LINK_TYPE_COM3, "COM3"},
- {ENUM_LINK_TYPE_COM4, "COM4"},
- {ENUM_LINK_TYPE_COM5, "COM5"},
- {ENUM_LINK_TYPE_COM6, "COM6"},
- {ENUM_LINK_TYPE_COM7, "COM7"},
- {ENUM_LINK_TYPE_COM8, "COM8"},
- {ENUM_LINK_TYPE_I2C, "I2C"},
- {ENUM_LINK_TYPE_USB, "USB"},
- };
- phLibNfc_eConfigLinkType ret;
- unsigned int i;
-
- /* NOTE: ENUM_LINK_TYPE_NB corresponds to undefined link name */
-
- if (link_name == NULL)
- {
- return ENUM_LINK_TYPE_NB;
- }
-
- ret = ENUM_LINK_TYPE_NB;
- for (i=0 ; i<sizeof(sLinkNameTable)/sizeof(link_name_entry) ; i++)
- {
- if (strcmp(sLinkNameTable[i].name, link_name) == 0)
- {
- ret = sLinkNameTable[i].value;
- break;
- }
- }
-
- return ret;
-}
-
-
/*
* Deferred callback called when client thread must be exited
*/
@@ -378,10 +276,7 @@ static int nfc_jni_configure_driver(struct nfc_jni_native_data *nat)
/* Configure hardware link */
gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
- property_get("ro.nfc.port", value, "unknown");
- gDrvCfg.nLinkType = parseLinkType(value);
-
- TRACE("phLibNfc_Mgt_ConfigureDriver(0x%08x, 0x%08x)", gDrvCfg.nClientId, gDrvCfg.nLinkType);
+ TRACE("phLibNfc_Mgt_ConfigureDriver(0x%08x, 0x%08x)", gDrvCfg.nClientId);
REENTRANCE_LOCK();
status = phLibNfc_Mgt_ConfigureDriver(&gDrvCfg, &gHWRef);
REENTRANCE_UNLOCK();
@@ -445,7 +340,9 @@ static int nfc_jni_initialize(struct nfc_jni_native_data *nat) {
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;
LOGD("Start Initialization\n");
/* Create the local semaphore */
@@ -453,6 +350,21 @@ static int nfc_jni_initialize(struct nfc_jni_native_data *nat) {
{
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) {
+ LOGE("hw_get_module() failed.");
+ goto clean_and_return;
+ }
+ ret = nfc_pn544_open(hw_module, &pn544_dev);
+ if (ret) {
+ LOGE("Could not open pn544 hw_module.");
+ goto clean_and_return;
+ }
+ if (pn544_dev->num_eeprom_settings == 0 || pn544_dev->eeprom_settings == NULL) {
+ LOGE("Could not load EEPROM settings");
+ goto clean_and_return;
+ }
/* Reset device connected handle */
device_connected_flag = 0;
@@ -547,13 +459,14 @@ force_download:
// Update EEPROM settings
TRACE("****** START EEPROM SETTINGS UPDATE ******");
- for (i = 0; i < EEDATA_SETTINGS_NUMBER; i++)
+ for (i = 0; i < pn544_dev->num_eeprom_settings; i++)
{
- gInputParam.buffer = EEDATA_Settings[i];
+ gInputParam.buffer = &(pn544_dev->eeprom_settings[i*4]);
gInputParam.length = 0x04;
gOutputParam.buffer = resp;
TRACE("> EEPROM SETTING: %d", i);
+
REENTRANCE_LOCK();
status = phLibNfc_Mgt_IoCtl(gHWRef, NFC_MEM_WRITE, &gInputParam, &gOutputParam, nfc_jni_ioctl_callback, (void *)&cb_data);
REENTRANCE_UNLOCK();
@@ -665,7 +578,9 @@ clean_and_return:
kill_client(nat);
}
}
-
+ if (pn544_dev != NULL) {
+ nfc_pn544_close(pn544_dev);
+ }
nfc_cb_data_deinit(&cb_data);
return result;
diff --git a/res/drawable-hdpi/back.png b/res/drawable-hdpi/back.png
deleted file mode 100644
index dcad41d..0000000
--- a/res/drawable-hdpi/back.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/screenshot.xml b/res/layout/screenshot.xml
index 2e12a59..24a3a71 100644
--- a/res/layout/screenshot.xml
+++ b/res/layout/screenshot.xml
@@ -22,14 +22,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
- <ImageView android:id="@+id/back"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:adjustViewBounds="true"
- android:src="@drawable/back"
- android:scaleType="centerCrop"
- android:visibility="gone"
- />
+
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/res/raw/end.ogg b/res/raw/end.ogg
index 6cf4b98..7199153 100644
--- a/res/raw/end.ogg
+++ b/res/raw/end.ogg
Binary files differ
diff --git a/res/raw/error.ogg b/res/raw/error.ogg
index fbbc356..71d14b4 100644
--- a/res/raw/error.ogg
+++ b/res/raw/error.ogg
Binary files differ
diff --git a/res/raw/start.ogg b/res/raw/start.ogg
index f7b1a00..3c4d8c5 100644
--- a/res/raw/start.ogg
+++ b/res/raw/start.ogg
Binary files differ
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
new file mode 100644
index 0000000..80a1be4
--- /dev/null
+++ b/res/values-be/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="78565911793142902">"Служба Nfc"</string>
+ <string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string>
+ <string name="permlab_nfcAdmin" msgid="5329590200504457455">"кантроль над абароненым апаратным забеспячэннем з падтрымкай сувязi малога радыусу дзеяння"</string>
+ <string name="permdesc_nfcAdmin" msgid="1527271067096288484">"Дазваляе гэтаму прыкладанню кантраляваць абароненае апаратнае забеспячэнне з дапамогай сувязi малога радыусу дзеяння, напрыклад, каб змяняць рэгiстрацыйныя дадзеныя для плацяжу"</string>
+ <string name="inbound_me_profile_title" msgid="6146013785225412693">"Кантакт атрыманы праз NFC"</string>
+ <string name="inbound_me_profile_text" msgid="1409138030064787748">"Дакраніцеся, каб дадаць гэтага чалавека ў кантакты"</string>
+ <string name="outbound_me_profile_title" msgid="2523625031572784769">"Узаемадзеянне NFC завершанае"</string>
+ <string name="outbound_me_profile_text" msgid="7431318734941861000">"Націсніце, каб даслаць гэтаму чалавеку сваю кантактн. інфармацыю"</string>
+ <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC ўключаны."</string>
+ <string name="touch" msgid="4727218133711188355">"Краніце, каб перадаць"</string>
+</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
new file mode 100644
index 0000000..d1eeca7
--- /dev/null
+++ b/res/values-et/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="78565911793142902">"Nfc teenus"</string>
+ <string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string>
+ <string name="permlab_nfcAdmin" msgid="5329590200504457455">"Lähiväljaside turvalise riistvara juhtimine"</string>
+ <string name="permdesc_nfcAdmin" msgid="1527271067096288484">"Lubab rakendusel juhtida turvalist riistvara, mida kasutatakse lähiväljasideks, nt maksemandaatide muutmiseks."</string>
+ <string name="inbound_me_profile_title" msgid="6146013785225412693">"Kontakt saadud NFC kaudu"</string>
+ <string name="inbound_me_profile_text" msgid="1409138030064787748">"Koputage, et lisada see isik kontaktide hulka"</string>
+ <string name="outbound_me_profile_title" msgid="2523625031572784769">"NFC koostoime lõpetatud"</string>
+ <string name="outbound_me_profile_text" msgid="7431318734941861000">"Koputage, et anda sellele isikule oma kontaktandmed"</string>
+ <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC lubatud."</string>
+ <string name="touch" msgid="4727218133711188355">"Puudutage kiire kasutamiseks"</string>
+</resources>
diff --git a/src/com/android/nfc/P2pEventManager.java b/src/com/android/nfc/P2pEventManager.java
index 18ec8ae..9273afa 100644
--- a/src/com/android/nfc/P2pEventManager.java
+++ b/src/com/android/nfc/P2pEventManager.java
@@ -110,7 +110,9 @@ public class P2pEventManager implements P2pEventListener, SendUi.Callback {
playSound(mErrorSound);
mSending = false;
}
- mSendUi.finish(SendUi.FINISH_SCALE_UP);
+ if (!mNdefSent && !mNdefReceived) {
+ mSendUi.finish(SendUi.FINISH_SCALE_UP);
+ }
}
@Override
diff --git a/src/com/android/nfc/SendUi.java b/src/com/android/nfc/SendUi.java
index 37c8cfc..37ac6e0 100644
--- a/src/com/android/nfc/SendUi.java
+++ b/src/com/android/nfc/SendUi.java
@@ -77,9 +77,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
static final int TEXT_HINT_ALPHA_DURATION_MS = 500;
static final int TEXT_HINT_ALPHA_START_DELAY_MS = 300;
- static final float[] BACKGROUND_SCALE_RANGE = {2.0f, 1.0f};
- static final int BACKGROUND_SCALE_DURATION_MS = 5000;
-
static final int FINISH_SCALE_UP = 0;
static final int FINISH_SLIDE_OUT = 1;
@@ -94,7 +91,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
final StatusBarManager mStatusBarManager;
final View mScreenshotLayout;
final ImageView mScreenshotView;
- final ImageView mBackgroundImage;
final TextureView mTextureView;
final TextView mTextHint;
final Callback mCallback;
@@ -104,7 +100,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
final ObjectAnimator mFadeInAnimator;
final ObjectAnimator mHintAnimator;
final AnimatorSet mSuccessAnimatorSet;
- final ObjectAnimator mBackgroundAnimator;
final boolean mHardwareAccelerated;
Bitmap mScreenshotBitmap;
@@ -140,7 +135,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
mTextureView = (TextureView) mScreenshotLayout.findViewById(R.id.fireflies);
mTextureView.setSurfaceTextureListener(this);
- mBackgroundImage = (ImageView) mScreenshotLayout.findViewById(R.id.back);
// We're only allowed to use hardware acceleration if
// isHighEndGfx() returns true - otherwise, we're too limited
// on resources to do it.
@@ -148,11 +142,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
int hwAccelerationFlags = mHardwareAccelerated ?
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED : 0;
- if (!mHardwareAccelerated) {
- // Only show background in case we're not hw-accelerated
- mBackgroundImage.setVisibility(View.VISIBLE);
- }
-
mWindowLayoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT, 0, 0,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
@@ -209,12 +198,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
mSuccessAnimatorSet = new AnimatorSet();
mSuccessAnimatorSet.playSequentially(mFastCloneAnimator, mFadeInAnimator);
- scaleUpX = PropertyValuesHolder.ofFloat("scaleX", BACKGROUND_SCALE_RANGE);
- scaleUpY = PropertyValuesHolder.ofFloat("scaleY", BACKGROUND_SCALE_RANGE);
- mBackgroundAnimator = ObjectAnimator.ofPropertyValuesHolder(mBackgroundImage, scaleUpX, scaleUpY);
- mBackgroundAnimator.setInterpolator(new DecelerateInterpolator(2.0f));
- mBackgroundAnimator.setDuration(BACKGROUND_SCALE_DURATION_MS);
-
mAttached = false;
}
@@ -274,10 +257,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
mAttached = true;
mPreAnimator.start();
-
- if (!mHardwareAccelerated) {
- mBackgroundAnimator.start();
- }
}
/** Show starting send animation */
@@ -356,6 +335,9 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
if (!mAttached) {
return;
}
+ // Immediately set to false, to prevent .cancel() calls
+ // below from immediately calling into dismiss() again.
+ mAttached = false;
mPreAnimator.cancel();
mSlowSendAnimator.cancel();
mFastCloneAnimator.cancel();
@@ -363,7 +345,6 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
mScaleUpAnimator.cancel();
mWindowManager.removeView(mScreenshotLayout);
mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
- mAttached = false;
releaseScreenshot();
}
@@ -394,16 +375,19 @@ public class SendUi implements Animator.AnimatorListener, View.OnTouchListener,
// take screenshots only in the natural orientation of the device :!)
mDisplay.getRealMetrics(mDisplayMetrics);
+ boolean hasNavBar = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_showNavigationBar);
float[] dims = {mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels};
float degrees = getDegreesForRotation(mDisplay.getRotation());
final int statusBarHeight = mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_height);
+
// Navbar has different sizes, depending on orientation
- final int navBarHeight = mContext.getResources().getDimensionPixelSize(
- com.android.internal.R.dimen.navigation_bar_height);
- final int navBarWidth = mContext.getResources().getDimensionPixelSize(
- com.android.internal.R.dimen.navigation_bar_width);
+ final int navBarHeight = hasNavBar ? mContext.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.navigation_bar_height) : 0;
+ final int navBarWidth = hasNavBar ? mContext.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.navigation_bar_width) : 0;
boolean requiresRotation = (degrees > 0);
if (requiresRotation) {