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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user