Snap for 4818534 from a2ea959366a264fffb4ee8254015d90161e93cd2 to pi-release

Change-Id: I05fc6c44e49f6e93ff06620c80c2bbb986d90a7f
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp
index a112501..6f3c569 100755
--- a/nci/jni/NativeNfcManager.cpp
+++ b/nci/jni/NativeNfcManager.cpp
@@ -907,7 +907,13 @@
 **
 *******************************************************************************/
 static jboolean nfcManager_commitRouting(JNIEnv* e, jobject) {
-  return RoutingManager::getInstance().commitRouting();
+  if (sRfEnabled) {
+    /*Update routing table only in Idle state.*/
+    startRfDiscovery(false);
+  }
+  jboolean commitStatus = RoutingManager::getInstance().commitRouting();
+  startRfDiscovery(true);
+  return commitStatus;
 }
 
 /*******************************************************************************
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp
index cc37431..ba2e3ab 100755
--- a/nci/jni/RoutingManager.cpp
+++ b/nci/jni/RoutingManager.cpp
@@ -84,6 +84,9 @@
     }
   }
 
+  mOffHostAidRoutingPowerState =
+      NfcConfig::getUnsigned(NAME_OFFHOST_AID_ROUTE_PWR_STATE, 0x01);
+
   memset(&mEeInfo, 0, sizeof(mEeInfo));
   mReceivedEeInfo = false;
   mSeTechMask = 0x00;
@@ -143,6 +146,8 @@
           (eeHandle == (mDefaultOffHostRoute | NFA_HANDLE_GROUP_EE))) {
         if (mEeInfo.ee_disc_info[i].la_protocol != 0)
           seTechMask |= NFA_TECHNOLOGY_MASK_A;
+        if (mEeInfo.ee_disc_info[i].lb_protocol != 0)
+          seTechMask |= NFA_TECHNOLOGY_MASK_B;
       }
       if ((mDefaultFelicaRoute != 0) &&
           (eeHandle == (mDefaultFelicaRoute | NFA_HANDLE_GROUP_EE))) {
@@ -359,8 +364,10 @@
                                    int route, int aidInfo) {
   static const char fn[] = "RoutingManager::addAidRouting";
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", fn);
+  uint8_t powerState =
+      (route == mDefaultOffHostRoute) ? mOffHostAidRoutingPowerState : 0x01;
   tNFA_STATUS nfaStat =
-      NFA_EeAddAidRouting(route, aidLen, (uint8_t*)aid, 0x01, aidInfo);
+      NFA_EeAddAidRouting(route, aidLen, (uint8_t*)aid, powerState, aidInfo);
   if (nfaStat == NFA_STATUS_OK) {
     DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: routed AID", fn);
     return true;
diff --git a/nci/jni/RoutingManager.h b/nci/jni/RoutingManager.h
index 843d490..2d3f315 100755
--- a/nci/jni/RoutingManager.h
+++ b/nci/jni/RoutingManager.h
@@ -89,6 +89,7 @@
   uint16_t mDefaultSysCode;
   uint16_t mDefaultSysCodeRoute;
   uint8_t mDefaultSysCodePowerstate;
+  uint8_t mOffHostAidRoutingPowerState;
   bool mReceivedEeInfo;
   tNFA_EE_CBACK_DATA mCbEventData;
   tNFA_EE_DISCOVER_REQ mEeInfo;