Do not start RILReceiver if wifi-only.

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
This commit is contained in:
Wink Saville
2011-02-23 17:28:05 -08:00
parent 5107eea64e
commit 0dc8618dc7

View 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();
// 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);
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
context.registerReceiver(mIntentReceiver, filter);
}
}
//***** CommandsInterface implementation