summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2013-12-06 02:24:22 +0000
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2013-12-06 02:24:22 +0000
commitc8a2a6b1ca703d0c6078b7f57663781245b787e7 (patch)
treedd9c77878036c3a39724ef5a7e65305104b5fff1
parent95dffb3f27d1dd6991ac2c1422764ae82f33f5c9 (diff)
parent8d9375ec6e24546fe7b5423e436b7bbe48862f57 (diff)
downloadandroid_packages_apps_Nfc-c8a2a6b1ca703d0c6078b7f57663781245b787e7.tar.gz
android_packages_apps_Nfc-c8a2a6b1ca703d0c6078b7f57663781245b787e7.tar.bz2
android_packages_apps_Nfc-c8a2a6b1ca703d0c6078b7f57663781245b787e7.zip
Merge tag 'android-4.4.1_r1' into HEAD
Android 4.4.1 Release 1
-rwxr-xr-xnci/jni/NativeNfcManager.cpp29
-rw-r--r--res/values-ar/strings.xml8
-rw-r--r--res/values-fa/strings.xml8
-rw-r--r--res/values-fr/strings.xml2
-rw-r--r--res/values-iw/strings.xml12
-rw-r--r--res/values-sw/strings.xml6
-rw-r--r--res/values-zh-rCN/strings.xml14
-rw-r--r--src/com/android/nfc/cardemulation/HostEmulationManager.java15
-rw-r--r--src/com/android/nfc/cardemulation/RegisteredServicesCache.java8
9 files changed, 77 insertions, 25 deletions
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp
index 8d27c3bc..0c7ba8bb 100755
--- a/nci/jni/NativeNfcManager.cpp
+++ b/nci/jni/NativeNfcManager.cpp
@@ -150,6 +150,8 @@ static bool isListenMode(tNFA_ACTIVATED& activated);
static UINT16 sCurrentConfigLen;
static UINT8 sConfig[256];
+static UINT8 sLongGuardTime[] = { 0x00, 0x20 };
+static UINT8 sDefaultGuardTime[] = { 0x00, 0x11 };
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
@@ -1042,6 +1044,31 @@ TheEnd:
ALOGD ("%s: exit", __FUNCTION__);
}
+void enableDisableLongGuardTime (bool enable)
+{
+ // TODO
+ // This is basically a work-around for an issue
+ // in BCM20791B5: if a reader is configured as follows
+ // 1) Only polls for NFC-A
+ // 2) Cuts field between polls
+ // 3) Has a short guard time (~5ms)
+ // the BCM20791B5 doesn't wake up when such a reader
+ // is polling it. Unfortunately the default reader
+ // mode configuration on Android matches those
+ // criteria. To avoid the issue, increase the guard
+ // time when in reader mode.
+ //
+ // Proper fix is firmware patch for B5 controllers.
+ SyncEventGuard guard(sNfaSetConfigEvent);
+ tNFA_STATUS stat = NFA_SetConfig(NCI_PARAM_ID_T1T_RDR_ONLY, 2,
+ enable ? sLongGuardTime : sDefaultGuardTime);
+ if (stat == NFA_STATUS_OK)
+ sNfaSetConfigEvent.wait ();
+ else
+ ALOGE("%s: Could not configure longer guard time", __FUNCTION__);
+ return;
+}
+
void enableDisableLptd (bool enable)
{
// This method is *NOT* thread-safe. Right now
@@ -1825,6 +1852,7 @@ static void nfcManager_doEnableReaderMode (JNIEnv*, jobject, jint technologies)
tech_mask |= NFA_TECHNOLOGY_MASK_KOVIO;
enableDisableLptd(false);
+ enableDisableLongGuardTime(true);
NFA_SetRfDiscoveryDuration(READER_MODE_DISCOVERY_DURATION);
restartPollingWithTechMask(tech_mask);
}
@@ -1840,6 +1868,7 @@ static void nfcManager_doDisableReaderMode (JNIEnv* e, jobject o)
NFA_EnableListening();
enableDisableLptd(true);
+ enableDisableLongGuardTime(false);
NFA_SetRfDiscoveryDuration(nat->discovery_duration);
restartPollingWithTechMask(nat->tech_mask);
}
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 45891990..6b3a48ac 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1,13 +1,13 @@
<?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="app_name" msgid="78565911793142902">"‏خدمة NFC"</string>
<string name="nfcUserLabel" msgid="7708535817084357357">"NFC"</string>
- <string name="inbound_me_profile_title" msgid="6146013785225412693">"تم استلام جهة اتصال عبر NFC"</string>
+ <string name="inbound_me_profile_title" msgid="6146013785225412693">"‏تم استلام جهة اتصال عبر NFC"</string>
<string name="inbound_me_profile_text" msgid="2342757196108092923">"المس لإضافة هذا الشخص كجهة اتصال."</string>
- <string name="outbound_me_profile_title" msgid="2523625031572784769">"اكتمل تفاعل NFC"</string>
+ <string name="outbound_me_profile_title" msgid="2523625031572784769">"‏اكتمل تفاعل NFC"</string>
<string name="outbound_me_profile_text" msgid="5594998841143667989">"المس لمنح هذا الشخص معلومات اتصالك."</string>
- <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"تم تمكين NFC."</string>
+ <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"‏تم تمكين NFC."</string>
<string name="touch" msgid="4727218133711188355">"المس لتبادل البيانات"</string>
<string name="beam_progress" msgid="7453634884807323920">"بيانات واردة..."</string>
<string name="beam_outgoing" msgid="4679536649779123495">"إرسال لاسلكي..."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index c23b8e9f..2dd62ca6 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1,13 +1,13 @@
<?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="app_name" msgid="78565911793142902">"‏سرویس Nfc"</string>
<string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string>
- <string name="inbound_me_profile_title" msgid="6146013785225412693">"مخاطب از طریق NFC دریافت شد"</string>
+ <string name="inbound_me_profile_title" msgid="6146013785225412693">"‏مخاطب از طریق NFC دریافت شد"</string>
<string name="inbound_me_profile_text" msgid="2342757196108092923">"برای افزودن این فرد به‌عنوان یک مخاطب، لمس کنید."</string>
- <string name="outbound_me_profile_title" msgid="2523625031572784769">"تعامل NFC کامل شد"</string>
+ <string name="outbound_me_profile_title" msgid="2523625031572784769">"‏تعامل NFC کامل شد"</string>
<string name="outbound_me_profile_text" msgid="5594998841143667989">"لمس کنید تا اطلاعات تماس خود را به این فرد بدهید."</string>
- <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"با NFC فعال شده."</string>
+ <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"‏با NFC فعال شده."</string>
<string name="touch" msgid="4727218133711188355">"برای پخش، لمس کنید"</string>
<string name="beam_progress" msgid="7453634884807323920">"در حال دریافت پرتو..."</string>
<string name="beam_outgoing" msgid="4679536649779123495">"پرتو…"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 8004df0a..8de8ec9b 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -35,5 +35,5 @@
<string name="could_not_use_app" msgid="8137587876138569083">"Impossible d\'utiliser <xliff:g id="APP">%1$s</xliff:g>."</string>
<string name="pay_with" msgid="5531545488795798945">"Payer avec"</string>
<string name="complete_with" msgid="6797459104103012992">"Effectuer avec"</string>
- <string name="default_pay_app_removed" msgid="4108250545457437360">"Le service par défaut pour la fonctionnalité tap-and-pay a été supprimé. Voulez-vous en sélectionner un autre ?"</string>
+ <string name="default_pay_app_removed" msgid="4108250545457437360">"Le service par défaut de paiement sans contact a été supprimé. Voulez-vous en sélectionner un autre ?"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7c2f2377..d3ae9967 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1,13 +1,13 @@
<?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="app_name" msgid="78565911793142902">"‏שירות Nfc"</string>
<string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string>
- <string name="inbound_me_profile_title" msgid="6146013785225412693">"איש הקשר התקבל באמצעות NFC"</string>
+ <string name="inbound_me_profile_title" msgid="6146013785225412693">"‏איש הקשר התקבל באמצעות NFC"</string>
<string name="inbound_me_profile_text" msgid="2342757196108092923">"גע כדי להוסיף משתמש זה כאיש קשר"</string>
- <string name="outbound_me_profile_title" msgid="2523625031572784769">"האינטראקציה עם NFC הושלמה"</string>
+ <string name="outbound_me_profile_title" msgid="2523625031572784769">"‏האינטראקציה עם NFC הושלמה"</string>
<string name="outbound_me_profile_text" msgid="5594998841143667989">"גע כדי לתת למשתמש זה את פרטי הקשר שלך"</string>
- <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC מופעל."</string>
+ <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"‏NFC מופעל."</string>
<string name="touch" msgid="4727218133711188355">"גע כדי להקרין"</string>
<string name="beam_progress" msgid="7453634884807323920">"קרן נכנסת..."</string>
<string name="beam_outgoing" msgid="4679536649779123495">"מעביר תוכן..."</string>
@@ -25,8 +25,8 @@
<string name="disconnected_headset" msgid="4066109452701733916">"מנותק"</string>
<string name="pairing_headset" msgid="6443461444755646137">"התאמה"</string>
<string name="pairing_headset_failed" msgid="6509629663883514688">"לא ניתן לבצע התאמה"</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="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="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-sw/strings.xml b/res/values-sw/strings.xml
index 89c29d7d..fc17a198 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -8,11 +8,11 @@
<string name="outbound_me_profile_title" msgid="2523625031572784769">"NFC imemaliza kushirikiana"</string>
<string name="outbound_me_profile_text" msgid="5594998841143667989">"Gusa ili kumpa mtu huyu maelezo yako ya mawasiliano."</string>
<string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC imewezeshwa."</string>
- <string name="touch" msgid="4727218133711188355">"Gusa kwa boriti"</string>
+ <string name="touch" msgid="4727218133711188355">"Gusa ili kusambaza"</string>
<string name="beam_progress" msgid="7453634884807323920">"Boriti zinazoingia..."</string>
<string name="beam_outgoing" msgid="4679536649779123495">"Inasambaza..."</string>
- <string name="beam_complete" msgid="477026736424637435">"Boriti umekamilika"</string>
- <string name="beam_failed" msgid="5116241718189888630">"Boriti haikukamilisha"</string>
+ <string name="beam_complete" msgid="477026736424637435">"Kusambaza kumekamilika"</string>
+ <string name="beam_failed" msgid="5116241718189888630">"Usambazaji haukukamilika"</string>
<string name="beam_canceled" msgid="5425192751826544741">"Boriti imeghairiwa"</string>
<string name="cancel" msgid="61873902552555096">"Ghairi"</string>
<string name="beam_touch_to_view" msgid="7853129156831642630">"Gusa ili utazame"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 6fae4f8d..2397e87c 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -8,15 +8,15 @@
<string name="outbound_me_profile_title" msgid="2523625031572784769">"NFC 互动完成"</string>
<string name="outbound_me_profile_text" msgid="5594998841143667989">"接触可向此人发送您的联系人信息。"</string>
<string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC 已启用。"</string>
- <string name="touch" msgid="4727218133711188355">"触摸即可发送"</string>
- <string name="beam_progress" msgid="7453634884807323920">"正在接收 Beam 内容..."</string>
- <string name="beam_outgoing" msgid="4679536649779123495">"正在用 Beam 传送信息..."</string>
- <string name="beam_complete" msgid="477026736424637435">"Beam 发送完毕"</string>
- <string name="beam_failed" msgid="5116241718189888630">"Beam 发送未完成"</string>
- <string name="beam_canceled" msgid="5425192751826544741">"Beam 发送已取消"</string>
+ <string name="touch" msgid="4727218133711188355">"触摸即可传输"</string>
+ <string name="beam_progress" msgid="7453634884807323920">"正在接收传输内容..."</string>
+ <string name="beam_outgoing" msgid="4679536649779123495">"正在传输信息..."</string>
+ <string name="beam_complete" msgid="477026736424637435">"传输完毕"</string>
+ <string name="beam_failed" msgid="5116241718189888630">"传输未完成"</string>
+ <string name="beam_canceled" msgid="5425192751826544741">"传输已取消"</string>
<string name="cancel" msgid="61873902552555096">"取消"</string>
<string name="beam_touch_to_view" msgid="7853129156831642630">"触摸即可查看"</string>
- <string name="beam_handover_not_supported" msgid="4083165921751489015">"接收者的设备不支持通过 Beam 传输较大的文件。"</string>
+ <string name="beam_handover_not_supported" msgid="4083165921751489015">"接收者的设备不支持传输较大的文件。"</string>
<string name="beam_try_again" msgid="3364677301009783455">"再次让两台设备接触"</string>
<string name="connecting_headset" msgid="3929250919225573008">"正在连接"</string>
<string name="connected_headset" msgid="4047751837023241955">"已连接"</string>
diff --git a/src/com/android/nfc/cardemulation/HostEmulationManager.java b/src/com/android/nfc/cardemulation/HostEmulationManager.java
index 0dc75b59..a4e7f757 100644
--- a/src/com/android/nfc/cardemulation/HostEmulationManager.java
+++ b/src/com/android/nfc/cardemulation/HostEmulationManager.java
@@ -60,6 +60,9 @@ public class HostEmulationManager {
static final byte INSTR_SELECT = (byte)0xA4;
+ static final String ANDROID_HCE_AID = "A000000476416E64726F6964484345";
+ static final byte[] ANDROID_HCE_RESPONSE = {0x14, (byte)0x81, 0x00, 0x00, (byte)0x90, 0x00};
+
static final byte[] AID_NOT_FOUND = {0x6A, (byte)0x82};
static final byte[] UNKNOWN_ERROR = {0x6F, 0x00};
@@ -161,6 +164,10 @@ public class HostEmulationManager {
return;
}
if (selectAid != null) {
+ if (selectAid.equals(ANDROID_HCE_AID)) {
+ NfcService.getInstance().sendData(ANDROID_HCE_RESPONSE);
+ return;
+ }
AidResolveInfo resolveInfo = mAidCache.resolveAidPrefix(selectAid);
if (resolveInfo == null || resolveInfo.services.size() == 0) {
// Tell the remote we don't handle this AID
@@ -179,6 +186,14 @@ public class HostEmulationManager {
launchTapAgain(resolveInfo.defaultService, category);
return;
}
+ // In no circumstance should this be an OffHostService -
+ // we should never get this AID on the host in the first place
+ if (!resolveInfo.defaultService.isOnHost()) {
+ Log.e(TAG, "AID that was meant to go off-host was routed to host." +
+ " Check routing table configuration.");
+ NfcService.getInstance().sendData(AID_NOT_FOUND);
+ return;
+ }
resolvedService = resolveInfo.defaultService.getComponent();
} else if (mActiveServiceName != null) {
for (ApduServiceInfo service : resolveInfo.services) {
diff --git a/src/com/android/nfc/cardemulation/RegisteredServicesCache.java b/src/com/android/nfc/cardemulation/RegisteredServicesCache.java
index 2e037d2c..0cfc0e0b 100644
--- a/src/com/android/nfc/cardemulation/RegisteredServicesCache.java
+++ b/src/com/android/nfc/cardemulation/RegisteredServicesCache.java
@@ -207,6 +207,14 @@ public class RegisteredServicesCache {
boolean onHost = !resolvedOffHostServices.contains(resolvedService);
ServiceInfo si = resolvedService.serviceInfo;
ComponentName componentName = new ComponentName(si.packageName, si.name);
+ // Check if the package holds the NFC permission
+ if (pm.checkPermission(android.Manifest.permission.NFC, si.packageName) !=
+ PackageManager.PERMISSION_GRANTED) {
+ Log.e(TAG, "Skipping APDU service " + componentName +
+ ": it does not require the permission " +
+ android.Manifest.permission.NFC);
+ continue;
+ }
if (!android.Manifest.permission.BIND_NFC_SERVICE.equals(
si.permission)) {
Log.e(TAG, "Skipping APDU service " + componentName +