LCE feature enhancement
fenglu [Sat, 2 May 2015 00:04:20 +0000 (17:04 -0700)]
start LCE service when radio state changes from unavailable to available.
cherry pick from mwd to mnc-dev
capacityDownBps --> capacityDownKbps name nit fix

Bug: 21307951
Change-Id: I0a966440bbddff87417cbea12f46583657e0b1e7

src/java/com/android/internal/telephony/Phone.java
src/java/com/android/internal/telephony/PhoneBase.java
src/java/com/android/internal/telephony/PhoneProxy.java
src/java/com/android/internal/telephony/RIL.java
src/java/com/android/internal/telephony/cdma/CDMAPhone.java
src/java/com/android/internal/telephony/gsm/GSMPhone.java

index 067f1e3..5f13ecf 100644 (file)
@@ -2053,4 +2053,9 @@ public interface Phone {
      * @return {@code true} if video call is present, false otherwise.
      */
     public boolean isVideoCallPresent();
+
+    /**
+     * Returns the status of Link Capacity Estimation (LCE) service.
+     */
+    public int getLceStatus();
 }
index 893bd88..a8d241a 100644 (file)
@@ -2365,10 +2365,22 @@ public abstract class PhoneBase extends Handler implements Phone {
         return false;
     }
 
+    @Override
     public int getLceStatus() {
         return mLceStatus;
     }
 
+    /**
+     * Starts LCE service after radio becomes available.
+     * LCE service state may get destroyed on the modem when radio becomes unavailable.
+     */
+    public void startLceAfterRadioIsAvailable() {
+        if (mIsTheCurrentActivePhone) {
+            mCi.startLceService(DEFAULT_REPORT_INTERVAL_MS, LCE_PULL_MODE,
+                obtainMessage(EVENT_CONFIG_LCE));
+        }
+    }
+
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         pw.println("PhoneBase: subId=" + getSubId());
         pw.println(" mPhoneId=" + mPhoneId);
index b6314b2..9b88d5e 100644 (file)
@@ -1556,6 +1556,14 @@ public class PhoneProxy extends Handler implements Phone {
     }
 
     /**
+     * Returns the status of Link Capacity Estimation (LCE) service.
+     */
+    @Override
+    public int getLceStatus() {
+        return mActivePhone.getLceStatus();
+    }
+
+    /**
      * @return true if we are in the emergency call back mode. This is a period where
      * the phone should be using as little power as possible and be ready to receive an
      * incoming call from the emergency operator.
index a72f3f0..0649d16 100644 (file)
@@ -3982,16 +3982,16 @@ public final class RIL extends BaseCommands implements CommandsInterface {
 
     private Object responseLceData(Parcel p) {
         final ArrayList<Integer> capacityResponse = new ArrayList<Integer>();
-        final int capacityDownBps = p.readInt();
+        final int capacityDownKbps = p.readInt();
         final int confidenceLevel = p.readByte();
         final int lceSuspended = p.readByte();
 
         riljLog("LCE capacity information received:" +
-                " capacity=" + capacityDownBps +
+                " capacity=" + capacityDownKbps +
                 " confidence=" + confidenceLevel +
                 " lceSuspended=" + lceSuspended);
 
-        capacityResponse.add(capacityDownBps);
+        capacityResponse.add(capacityDownKbps);
         capacityResponse.add(confidenceLevel);
         capacityResponse.add(lceSuspended);
         return capacityResponse;
index a44dd6e..b965800 100644 (file)
@@ -1205,6 +1205,7 @@ public class CDMAPhone extends PhoneBase {
 
                 mCi.getDeviceIdentity(obtainMessage(EVENT_GET_DEVICE_IDENTITY_DONE));
                 mCi.getRadioCapability(obtainMessage(EVENT_GET_RADIO_CAPABILITY));
+                startLceAfterRadioIsAvailable();
             }
             break;
 
index afa94ed..4447678 100755 (executable)
@@ -1443,6 +1443,7 @@ public class GSMPhone extends PhoneBase {
                 mCi.getIMEI(obtainMessage(EVENT_GET_IMEI_DONE));
                 mCi.getIMEISV(obtainMessage(EVENT_GET_IMEISV_DONE));
                 mCi.getRadioCapability(obtainMessage(EVENT_GET_RADIO_CAPABILITY));
+                startLceAfterRadioIsAvailable();
             }
             break;