Fix no data issue after system server crash

FW was checking "Radio Available" instead of "Radio On" when
broadcasting data availability. This was causing an issue in
a certain recovery case (system server restart/phone process
restart) where "Radio (modem) is available" but radio was
turned off.

This patch obsolete the use of mRadioAvailable attribute and
use RadioState from RIL directly to check if Radio is ON.

Bug:5077346
Change-Id: Ie7ac05e3d5e328e3d5303541ca41326754f309c1
This commit is contained in:
Kazuhiro Ondo
2011-09-06 18:25:22 -05:00
committed by John Huang
parent 37f770f03f
commit b1a3f0ca4b

View File

@ -122,7 +122,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
static final Uri PREFERAPN_URI = Uri.parse("content://telephony/carriers/preferapn"); static final Uri PREFERAPN_URI = Uri.parse("content://telephony/carriers/preferapn");
static final String APN_ID = "apn_id"; static final String APN_ID = "apn_id";
private boolean canSetPreferApn = false; private boolean canSetPreferApn = false;
private boolean mRadioAvailable = false;
@Override @Override
protected void onActionIntentReconnectAlarm(Intent intent) { protected void onActionIntentReconnectAlarm(Intent intent) {
@ -1571,7 +1570,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
private void onRecordsLoaded() { private void onRecordsLoaded() {
if (DBG) log("onRecordsLoaded: createAllApnList"); if (DBG) log("onRecordsLoaded: createAllApnList");
createAllApnList(); createAllApnList();
if (mRadioAvailable) { if (mPhone.mCM.getRadioState().isOn()) {
if (DBG) log("onRecordsLoaded: notifying data availability"); if (DBG) log("onRecordsLoaded: notifying data availability");
notifyDataAvailability(Phone.REASON_SIM_LOADED); notifyDataAvailability(Phone.REASON_SIM_LOADED);
} }
@ -1703,7 +1702,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
@Override @Override
protected void onRadioAvailable() { protected void onRadioAvailable() {
if (DBG) log("onRadioAvailable"); if (DBG) log("onRadioAvailable");
mRadioAvailable = true;
if (mPhone.getSimulatedRadioControl() != null) { if (mPhone.getSimulatedRadioControl() != null) {
// Assume data is connected on the simulator // Assume data is connected on the simulator
// FIXME this can be improved // FIXME this can be improved
@ -1731,7 +1729,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
dc.resetRetryCount(); dc.resetRetryCount();
} }
mReregisterOnReconnectFailure = false; mReregisterOnReconnectFailure = false;
mRadioAvailable = false;
if (mPhone.getSimulatedRadioControl() != null) { if (mPhone.getSimulatedRadioControl() != null) {
// Assume data is connected on the simulator // Assume data is connected on the simulator