OSDN Git Service

Do not start RILReceiver if wifi-only.
authorWink Saville <wink@google.com>
Thu, 24 Feb 2011 01:28:05 +0000 (17:28 -0800)
committerWink Saville <wink@google.com>
Thu, 24 Feb 2011 02:11:45 +0000 (18:11 -0800)
By not starting RILReceiver we don't waste any cycles
trying to communicate with a vendor ril which may
not exist. This allows a wifi-only device to operate
as expected and the system to gracefully handle the
missing radio as ril requests will report RADIO_NOT_AVAILABLE.

Change-Id: I6c6f60830486c5f0447b3b9eb44c8b1f2d70c517

telephony/java/com/android/internal/telephony/RIL.java

index 91b19a9..657377f 100644 (file)
@@ -244,6 +244,8 @@ public final class RIL extends BaseCommands implements CommandsInterface {
 
     Object     mLastNITZTimeInfo;
 
+    private static final String WIFI_ONLY_CARRIER = "wifi-only";
+
     //***** Events
 
     static final int EVENT_SEND                 = 1;
@@ -656,14 +658,22 @@ public final class RIL extends BaseCommands implements CommandsInterface {
         Looper looper = mSenderThread.getLooper();
         mSender = new RILSender(looper);
 
-        mReceiver = new RILReceiver();
-        mReceiverThread = new Thread(mReceiver, "RILReceiver");
-        mReceiverThread.start();
-
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(Intent.ACTION_SCREEN_ON);
-        filter.addAction(Intent.ACTION_SCREEN_OFF);
-        context.registerReceiver(mIntentReceiver, filter);
+        // TODO: Provide a common API for determining if a
+        // device is wifi-only. bug: 3480713
+        String carrier = SystemProperties.get("ro.carrier");
+        if (WIFI_ONLY_CARRIER.equals(carrier)) {
+            riljLog("Not starting RILReceiver: wifi-only");
+        } else {
+            riljLog("Starting RILReceiver");
+            mReceiver = new RILReceiver();
+            mReceiverThread = new Thread(mReceiver, "RILReceiver");
+            mReceiverThread.start();
+
+            IntentFilter filter = new IntentFilter();
+            filter.addAction(Intent.ACTION_SCREEN_ON);
+            filter.addAction(Intent.ACTION_SCREEN_OFF);
+            context.registerReceiver(mIntentReceiver, filter);
+        }
     }
 
     //***** CommandsInterface implementation