Loading src/java/com/android/internal/telephony/DeviceStateMonitor.java +0 −142 Original line number Diff line number Diff line Loading @@ -41,9 +41,7 @@ import android.os.Registrant; import android.os.RegistrantList; import android.provider.Settings; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.CarrierConfigManager; import android.telephony.NetworkRegistrationInfo; import android.telephony.SignalThresholdInfo; import android.util.LocalLog; import android.view.Display; Loading Loading @@ -590,7 +588,6 @@ public class DeviceStateMonitor extends Handler { sendDeviceState(LOW_DATA_EXPECTED, mIsLowDataExpected); sendDeviceState(POWER_SAVE_MODE, mIsPowerSaveOn); setUnsolResponseFilter(mUnsolicitedResponseFilter, true); setSignalStrengthReportingCriteria(); setLinkCapacityReportingCriteria(); setCellInfoMinInterval(mCellInfoMinInterval); } Loading Loading @@ -635,36 +632,6 @@ public class DeviceStateMonitor extends Handler { } } private void setSignalStrengthReportingCriteria() { mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.GERAN, AccessNetworkType.GERAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSCP, AccessNetworkThresholds.UTRAN, AccessNetworkType.UTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRP, AccessNetworkThresholds.EUTRAN_RSRP, AccessNetworkType.EUTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.CDMA2000, AccessNetworkType.CDMA2000, true); if (mPhone.getHalVersion().greaterOrEqual(RIL.RADIO_HAL_VERSION_1_5)) { mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRQ, AccessNetworkThresholds.EUTRAN_RSRQ, AccessNetworkType.EUTRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSNR, AccessNetworkThresholds.EUTRAN_RSSNR, AccessNetworkType.EUTRAN, true); // Defaultly we only need SSRSRP for NGRAN signal criteria reporting mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRP, AccessNetworkThresholds.NGRAN_RSRSRP, AccessNetworkType.NGRAN, true); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRQ, AccessNetworkThresholds.NGRAN_RSRSRQ, AccessNetworkType.NGRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSSINR, AccessNetworkThresholds.NGRAN_SSSINR, AccessNetworkType.NGRAN, false); } } private void setLinkCapacityReportingCriteria() { mPhone.setLinkCapacityReportingCriteria(LINK_CAPACITY_DOWNLINK_THRESHOLDS, LINK_CAPACITY_UPLINK_THRESHOLDS, AccessNetworkType.GERAN); Loading Loading @@ -813,115 +780,6 @@ public class DeviceStateMonitor extends Handler { ipw.flush(); } /** * dBm thresholds that correspond to changes in signal strength indications. */ private static final class AccessNetworkThresholds { /** * List of dBm thresholds for GERAN {@link AccessNetworkType}. * * Calculated from GSM asu level thresholds - TS 27.007 Sec 8.5 */ public static final int[] GERAN = new int[] { -109, -103, -97, -89, }; /** * List of default dBm thresholds for UTRAN {@link AccessNetworkType}. * * These thresholds are taken from the WCDMA RSCP defaults in {@link CarrierConfigManager}. * See TS 27.007 Sec 8.69. */ public static final int[] UTRAN = new int[] { -114, /* SIGNAL_STRENGTH_POOR */ -104, /* SIGNAL_STRENGTH_MODERATE */ -94, /* SIGNAL_STRENGTH_GOOD */ -84 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dBm RSRP thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSRP defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRP = new int[] { -128, /* SIGNAL_STRENGTH_POOR */ -118, /* SIGNAL_STRENGTH_MODERATE */ -108, /* SIGNAL_STRENGTH_GOOD */ -98, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSRQ thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSRQ defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRQ = new int[] { -20, /* SIGNAL_STRENGTH_POOR */ -17, /* SIGNAL_STRENGTH_MODERATE */ -14, /* SIGNAL_STRENGTH_GOOD */ -11 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSSNR thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSSNR defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSSNR = new int[] { -3, /* SIGNAL_STRENGTH_POOR */ 1, /* SIGNAL_STRENGTH_MODERATE */ 5, /* SIGNAL_STRENGTH_GOOD */ 13 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dBm thresholds for CDMA2000 {@link AccessNetworkType}. * * These correspond to EVDO level thresholds. */ public static final int[] CDMA2000 = new int[] { -105, -90, -75, -65 }; /** * List of dB thresholds for NGRAN {@link AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRP = new int[] { -110, /* SIGNAL_STRENGTH_POOR */ -90, /* SIGNAL_STRENGTH_MODERATE */ -80, /* SIGNAL_STRENGTH_GOOD */ -65, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRQ = new int[] { -31, /* SIGNAL_STRENGTH_POOR */ -19, /* SIGNAL_STRENGTH_MODERATE */ -7, /* SIGNAL_STRENGTH_GOOD */ 6 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkType} SSSINR */ public static final int[] NGRAN_SSSINR = new int[] { -5, /* SIGNAL_STRENGTH_POOR */ 5, /* SIGNAL_STRENGTH_MODERATE */ 15, /* SIGNAL_STRENGTH_GOOD */ 30 /* SIGNAL_STRENGTH_GREAT */ }; } /** * Downlink reporting thresholds in kbps * Loading src/java/com/android/internal/telephony/SignalStrengthController.java +172 −2 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ public class SignalStrengthController extends Handler { private static final int EVENT_SET_SIGNAL_STRENGTH_UPDATE_REQUEST = 1; private static final int EVENT_CLEAR_SIGNAL_STRENGTH_UPDATE_REQUEST = 2; private static final int EVENT_ON_DEVICE_IDLE_STATE_CHANGED = 3; private static final int EVENT_RIL_CONNECTED = 4; private static final int EVENT_RADIO_AVAILABLE = 5; private final Phone mPhone; private final CommandsInterface mCi; Loading @@ -64,6 +67,9 @@ public class SignalStrengthController extends Handler { public SignalStrengthController(Phone phone) { mPhone = phone; mCi = mPhone.mCi; mCi.registerForRilConnected(this, EVENT_RIL_CONNECTED, null); mCi.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null); } @Override Loading @@ -71,6 +77,10 @@ public class SignalStrengthController extends Handler { if (DBG) log("received event " + msg.what); switch (msg.what) { case EVENT_RIL_CONNECTED: // fall through case EVENT_RADIO_AVAILABLE: onReset(); break; case EVENT_SET_SIGNAL_STRENGTH_UPDATE_REQUEST: { Pair<SignalRequestRecord, Message> pair = (Pair<SignalRequestRecord, Message>) msg.obj; Loading Loading @@ -324,6 +334,158 @@ public class SignalStrengthController extends Handler { return false; } private void setDefaultSignalStrengthReportingCriteria() { mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.GERAN, AccessNetworkConstants.AccessNetworkType.GERAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSCP, AccessNetworkThresholds.UTRAN, AccessNetworkConstants.AccessNetworkType.UTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRP, AccessNetworkThresholds.EUTRAN_RSRP, AccessNetworkConstants.AccessNetworkType.EUTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.CDMA2000, AccessNetworkConstants.AccessNetworkType.CDMA2000, true); if (mPhone.getHalVersion().greaterOrEqual(RIL.RADIO_HAL_VERSION_1_5)) { mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRQ, AccessNetworkThresholds.EUTRAN_RSRQ, AccessNetworkConstants.AccessNetworkType.EUTRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSNR, AccessNetworkThresholds.EUTRAN_RSSNR, AccessNetworkConstants.AccessNetworkType.EUTRAN, true); // Defaultly we only need SSRSRP for NGRAN signal criteria reporting mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRP, AccessNetworkThresholds.NGRAN_RSRSRP, AccessNetworkConstants.AccessNetworkType.NGRAN, true); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRQ, AccessNetworkThresholds.NGRAN_RSRSRQ, AccessNetworkConstants.AccessNetworkType.NGRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSSINR, AccessNetworkThresholds.NGRAN_SSSINR, AccessNetworkConstants.AccessNetworkType.NGRAN, false); } } /** * dBm thresholds that correspond to changes in signal strength indications. */ private static final class AccessNetworkThresholds { /** * List of dBm thresholds for GERAN {@link AccessNetworkConstants.AccessNetworkType}. * * Calculated from GSM asu level thresholds - TS 27.007 Sec 8.5 */ public static final int[] GERAN = new int[]{ -109, -103, -97, -89, }; /** * List of default dBm thresholds for UTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the WCDMA RSCP defaults in {@link CarrierConfigManager}. * See TS 27.007 Sec 8.69. */ public static final int[] UTRAN = new int[]{ -114, /* SIGNAL_STRENGTH_POOR */ -104, /* SIGNAL_STRENGTH_MODERATE */ -94, /* SIGNAL_STRENGTH_GOOD */ -84 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dBm RSRP thresholds for EUTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the LTE RSRP defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRP = new int[]{ -128, /* SIGNAL_STRENGTH_POOR */ -118, /* SIGNAL_STRENGTH_MODERATE */ -108, /* SIGNAL_STRENGTH_GOOD */ -98, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSRQ thresholds for EUTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the LTE RSRQ defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRQ = new int[]{ -20, /* SIGNAL_STRENGTH_POOR */ -17, /* SIGNAL_STRENGTH_MODERATE */ -14, /* SIGNAL_STRENGTH_GOOD */ -11 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSSNR thresholds for EUTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the LTE RSSNR defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSSNR = new int[]{ -3, /* SIGNAL_STRENGTH_POOR */ 1, /* SIGNAL_STRENGTH_MODERATE */ 5, /* SIGNAL_STRENGTH_GOOD */ 13 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dBm thresholds for CDMA2000 {@link AccessNetworkConstants.AccessNetworkType}. * * These correspond to EVDO level thresholds. */ public static final int[] CDMA2000 = new int[]{ -105, -90, -75, -65 }; /** * List of dB thresholds for NGRAN {@link AccessNetworkConstants.AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRP = new int[]{ -110, /* SIGNAL_STRENGTH_POOR */ -90, /* SIGNAL_STRENGTH_MODERATE */ -80, /* SIGNAL_STRENGTH_GOOD */ -65, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkConstants.AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRQ = new int[]{ -31, /* SIGNAL_STRENGTH_POOR */ -19, /* SIGNAL_STRENGTH_MODERATE */ -7, /* SIGNAL_STRENGTH_GOOD */ 6 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkConstants.AccessNetworkType} SSSINR */ public static final int[] NGRAN_SSSINR = new int[]{ -5, /* SIGNAL_STRENGTH_POOR */ 5, /* SIGNAL_STRENGTH_MODERATE */ 15, /* SIGNAL_STRENGTH_GOOD */ 30 /* SIGNAL_STRENGTH_GREAT */ }; } private static boolean isRanAndSignalMeasurementTypeMatch( @AccessNetworkConstants.RadioAccessNetworkType int ran, @SignalThresholdInfo.SignalMeasurementType int measurement, Loading Loading @@ -394,6 +556,14 @@ public class SignalStrengthController extends Handler { mPhone.setAlwaysReportSignalStrength(alwaysReport); } /** * Called when RIL is connected during boot up or after modem restart. Set the default criteria * so that modem can start with default state before updated criteria is ready. */ private void onReset() { setDefaultSignalStrengthReportingCriteria(); } private void log(String msg) { if (DBG) Rlog.d(TAG, msg); } Loading tests/telephonytests/src/com/android/internal/telephony/DeviceStateMonitorTest.java +4 −3 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ import java.util.Map; public class DeviceStateMonitorTest extends TelephonyTest { private static final int INDICATION_FILTERS_MINIMUM = IndicationFilter.REGISTRATION_FAILURE; // All implemented indiation filters set so far // All implemented indication filters set so far // which is a subset of IndicationFilter.ALL private static final int INDICATION_FILTERS_ALL = IndicationFilter.SIGNAL_STRENGTH Loading Loading @@ -93,7 +93,7 @@ public class DeviceStateMonitorTest extends TelephonyTest { @Retention(RetentionPolicy.SOURCE) private @interface StateType {} // Keep the same value as correspoinding event // Keep the same value as corresponding event // See state2Event() for detail private static final int STATE_TYPE_RIL_CONNECTED = 0; // EVENT_UPDATE_NODE_CHANGED is not here, it will be removed in aosp soon Loading Loading @@ -135,6 +135,7 @@ public class DeviceStateMonitorTest extends TelephonyTest { @Mock UiModeManager mUiModeManager; private DeviceStateMonitor mDSM; // Given a stateType, return the event type that can change the state private int state2Event(@StateType int stateType) { // As long as we keep the same value, we can directly return the stateType Loading Loading @@ -169,7 +170,7 @@ public class DeviceStateMonitorTest extends TelephonyTest { // Initialize with ALL states off updateAllStatesToOff(); // eliminate the accumuted impact on Mockito.verify() // eliminate the accumulated impact on Mockito.verify() reset(mSimulatedCommandsVerifier); } Loading Loading
src/java/com/android/internal/telephony/DeviceStateMonitor.java +0 −142 Original line number Diff line number Diff line Loading @@ -41,9 +41,7 @@ import android.os.Registrant; import android.os.RegistrantList; import android.provider.Settings; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.CarrierConfigManager; import android.telephony.NetworkRegistrationInfo; import android.telephony.SignalThresholdInfo; import android.util.LocalLog; import android.view.Display; Loading Loading @@ -590,7 +588,6 @@ public class DeviceStateMonitor extends Handler { sendDeviceState(LOW_DATA_EXPECTED, mIsLowDataExpected); sendDeviceState(POWER_SAVE_MODE, mIsPowerSaveOn); setUnsolResponseFilter(mUnsolicitedResponseFilter, true); setSignalStrengthReportingCriteria(); setLinkCapacityReportingCriteria(); setCellInfoMinInterval(mCellInfoMinInterval); } Loading Loading @@ -635,36 +632,6 @@ public class DeviceStateMonitor extends Handler { } } private void setSignalStrengthReportingCriteria() { mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.GERAN, AccessNetworkType.GERAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSCP, AccessNetworkThresholds.UTRAN, AccessNetworkType.UTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRP, AccessNetworkThresholds.EUTRAN_RSRP, AccessNetworkType.EUTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.CDMA2000, AccessNetworkType.CDMA2000, true); if (mPhone.getHalVersion().greaterOrEqual(RIL.RADIO_HAL_VERSION_1_5)) { mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRQ, AccessNetworkThresholds.EUTRAN_RSRQ, AccessNetworkType.EUTRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSNR, AccessNetworkThresholds.EUTRAN_RSSNR, AccessNetworkType.EUTRAN, true); // Defaultly we only need SSRSRP for NGRAN signal criteria reporting mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRP, AccessNetworkThresholds.NGRAN_RSRSRP, AccessNetworkType.NGRAN, true); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRQ, AccessNetworkThresholds.NGRAN_RSRSRQ, AccessNetworkType.NGRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSSINR, AccessNetworkThresholds.NGRAN_SSSINR, AccessNetworkType.NGRAN, false); } } private void setLinkCapacityReportingCriteria() { mPhone.setLinkCapacityReportingCriteria(LINK_CAPACITY_DOWNLINK_THRESHOLDS, LINK_CAPACITY_UPLINK_THRESHOLDS, AccessNetworkType.GERAN); Loading Loading @@ -813,115 +780,6 @@ public class DeviceStateMonitor extends Handler { ipw.flush(); } /** * dBm thresholds that correspond to changes in signal strength indications. */ private static final class AccessNetworkThresholds { /** * List of dBm thresholds for GERAN {@link AccessNetworkType}. * * Calculated from GSM asu level thresholds - TS 27.007 Sec 8.5 */ public static final int[] GERAN = new int[] { -109, -103, -97, -89, }; /** * List of default dBm thresholds for UTRAN {@link AccessNetworkType}. * * These thresholds are taken from the WCDMA RSCP defaults in {@link CarrierConfigManager}. * See TS 27.007 Sec 8.69. */ public static final int[] UTRAN = new int[] { -114, /* SIGNAL_STRENGTH_POOR */ -104, /* SIGNAL_STRENGTH_MODERATE */ -94, /* SIGNAL_STRENGTH_GOOD */ -84 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dBm RSRP thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSRP defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRP = new int[] { -128, /* SIGNAL_STRENGTH_POOR */ -118, /* SIGNAL_STRENGTH_MODERATE */ -108, /* SIGNAL_STRENGTH_GOOD */ -98, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSRQ thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSRQ defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRQ = new int[] { -20, /* SIGNAL_STRENGTH_POOR */ -17, /* SIGNAL_STRENGTH_MODERATE */ -14, /* SIGNAL_STRENGTH_GOOD */ -11 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSSNR thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSSNR defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSSNR = new int[] { -3, /* SIGNAL_STRENGTH_POOR */ 1, /* SIGNAL_STRENGTH_MODERATE */ 5, /* SIGNAL_STRENGTH_GOOD */ 13 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dBm thresholds for CDMA2000 {@link AccessNetworkType}. * * These correspond to EVDO level thresholds. */ public static final int[] CDMA2000 = new int[] { -105, -90, -75, -65 }; /** * List of dB thresholds for NGRAN {@link AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRP = new int[] { -110, /* SIGNAL_STRENGTH_POOR */ -90, /* SIGNAL_STRENGTH_MODERATE */ -80, /* SIGNAL_STRENGTH_GOOD */ -65, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRQ = new int[] { -31, /* SIGNAL_STRENGTH_POOR */ -19, /* SIGNAL_STRENGTH_MODERATE */ -7, /* SIGNAL_STRENGTH_GOOD */ 6 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkType} SSSINR */ public static final int[] NGRAN_SSSINR = new int[] { -5, /* SIGNAL_STRENGTH_POOR */ 5, /* SIGNAL_STRENGTH_MODERATE */ 15, /* SIGNAL_STRENGTH_GOOD */ 30 /* SIGNAL_STRENGTH_GREAT */ }; } /** * Downlink reporting thresholds in kbps * Loading
src/java/com/android/internal/telephony/SignalStrengthController.java +172 −2 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ public class SignalStrengthController extends Handler { private static final int EVENT_SET_SIGNAL_STRENGTH_UPDATE_REQUEST = 1; private static final int EVENT_CLEAR_SIGNAL_STRENGTH_UPDATE_REQUEST = 2; private static final int EVENT_ON_DEVICE_IDLE_STATE_CHANGED = 3; private static final int EVENT_RIL_CONNECTED = 4; private static final int EVENT_RADIO_AVAILABLE = 5; private final Phone mPhone; private final CommandsInterface mCi; Loading @@ -64,6 +67,9 @@ public class SignalStrengthController extends Handler { public SignalStrengthController(Phone phone) { mPhone = phone; mCi = mPhone.mCi; mCi.registerForRilConnected(this, EVENT_RIL_CONNECTED, null); mCi.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null); } @Override Loading @@ -71,6 +77,10 @@ public class SignalStrengthController extends Handler { if (DBG) log("received event " + msg.what); switch (msg.what) { case EVENT_RIL_CONNECTED: // fall through case EVENT_RADIO_AVAILABLE: onReset(); break; case EVENT_SET_SIGNAL_STRENGTH_UPDATE_REQUEST: { Pair<SignalRequestRecord, Message> pair = (Pair<SignalRequestRecord, Message>) msg.obj; Loading Loading @@ -324,6 +334,158 @@ public class SignalStrengthController extends Handler { return false; } private void setDefaultSignalStrengthReportingCriteria() { mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.GERAN, AccessNetworkConstants.AccessNetworkType.GERAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSCP, AccessNetworkThresholds.UTRAN, AccessNetworkConstants.AccessNetworkType.UTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRP, AccessNetworkThresholds.EUTRAN_RSRP, AccessNetworkConstants.AccessNetworkType.EUTRAN, true); mPhone.setSignalStrengthReportingCriteria(SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI, AccessNetworkThresholds.CDMA2000, AccessNetworkConstants.AccessNetworkType.CDMA2000, true); if (mPhone.getHalVersion().greaterOrEqual(RIL.RADIO_HAL_VERSION_1_5)) { mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSRQ, AccessNetworkThresholds.EUTRAN_RSRQ, AccessNetworkConstants.AccessNetworkType.EUTRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSNR, AccessNetworkThresholds.EUTRAN_RSSNR, AccessNetworkConstants.AccessNetworkType.EUTRAN, true); // Defaultly we only need SSRSRP for NGRAN signal criteria reporting mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRP, AccessNetworkThresholds.NGRAN_RSRSRP, AccessNetworkConstants.AccessNetworkType.NGRAN, true); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSRSRQ, AccessNetworkThresholds.NGRAN_RSRSRQ, AccessNetworkConstants.AccessNetworkType.NGRAN, false); mPhone.setSignalStrengthReportingCriteria( SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_SSSINR, AccessNetworkThresholds.NGRAN_SSSINR, AccessNetworkConstants.AccessNetworkType.NGRAN, false); } } /** * dBm thresholds that correspond to changes in signal strength indications. */ private static final class AccessNetworkThresholds { /** * List of dBm thresholds for GERAN {@link AccessNetworkConstants.AccessNetworkType}. * * Calculated from GSM asu level thresholds - TS 27.007 Sec 8.5 */ public static final int[] GERAN = new int[]{ -109, -103, -97, -89, }; /** * List of default dBm thresholds for UTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the WCDMA RSCP defaults in {@link CarrierConfigManager}. * See TS 27.007 Sec 8.69. */ public static final int[] UTRAN = new int[]{ -114, /* SIGNAL_STRENGTH_POOR */ -104, /* SIGNAL_STRENGTH_MODERATE */ -94, /* SIGNAL_STRENGTH_GOOD */ -84 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dBm RSRP thresholds for EUTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the LTE RSRP defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRP = new int[]{ -128, /* SIGNAL_STRENGTH_POOR */ -118, /* SIGNAL_STRENGTH_MODERATE */ -108, /* SIGNAL_STRENGTH_GOOD */ -98, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSRQ thresholds for EUTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the LTE RSRQ defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSRQ = new int[]{ -20, /* SIGNAL_STRENGTH_POOR */ -17, /* SIGNAL_STRENGTH_MODERATE */ -14, /* SIGNAL_STRENGTH_GOOD */ -11 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of default dB RSSNR thresholds for EUTRAN * {@link AccessNetworkConstants.AccessNetworkType}. * * These thresholds are taken from the LTE RSSNR defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSSNR = new int[]{ -3, /* SIGNAL_STRENGTH_POOR */ 1, /* SIGNAL_STRENGTH_MODERATE */ 5, /* SIGNAL_STRENGTH_GOOD */ 13 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dBm thresholds for CDMA2000 {@link AccessNetworkConstants.AccessNetworkType}. * * These correspond to EVDO level thresholds. */ public static final int[] CDMA2000 = new int[]{ -105, -90, -75, -65 }; /** * List of dB thresholds for NGRAN {@link AccessNetworkConstants.AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRP = new int[]{ -110, /* SIGNAL_STRENGTH_POOR */ -90, /* SIGNAL_STRENGTH_MODERATE */ -80, /* SIGNAL_STRENGTH_GOOD */ -65, /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkConstants.AccessNetworkType} RSRSRP */ public static final int[] NGRAN_RSRSRQ = new int[]{ -31, /* SIGNAL_STRENGTH_POOR */ -19, /* SIGNAL_STRENGTH_MODERATE */ -7, /* SIGNAL_STRENGTH_GOOD */ 6 /* SIGNAL_STRENGTH_GREAT */ }; /** * List of dB thresholds for NGRAN {@link AccessNetworkConstants.AccessNetworkType} SSSINR */ public static final int[] NGRAN_SSSINR = new int[]{ -5, /* SIGNAL_STRENGTH_POOR */ 5, /* SIGNAL_STRENGTH_MODERATE */ 15, /* SIGNAL_STRENGTH_GOOD */ 30 /* SIGNAL_STRENGTH_GREAT */ }; } private static boolean isRanAndSignalMeasurementTypeMatch( @AccessNetworkConstants.RadioAccessNetworkType int ran, @SignalThresholdInfo.SignalMeasurementType int measurement, Loading Loading @@ -394,6 +556,14 @@ public class SignalStrengthController extends Handler { mPhone.setAlwaysReportSignalStrength(alwaysReport); } /** * Called when RIL is connected during boot up or after modem restart. Set the default criteria * so that modem can start with default state before updated criteria is ready. */ private void onReset() { setDefaultSignalStrengthReportingCriteria(); } private void log(String msg) { if (DBG) Rlog.d(TAG, msg); } Loading
tests/telephonytests/src/com/android/internal/telephony/DeviceStateMonitorTest.java +4 −3 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ import java.util.Map; public class DeviceStateMonitorTest extends TelephonyTest { private static final int INDICATION_FILTERS_MINIMUM = IndicationFilter.REGISTRATION_FAILURE; // All implemented indiation filters set so far // All implemented indication filters set so far // which is a subset of IndicationFilter.ALL private static final int INDICATION_FILTERS_ALL = IndicationFilter.SIGNAL_STRENGTH Loading Loading @@ -93,7 +93,7 @@ public class DeviceStateMonitorTest extends TelephonyTest { @Retention(RetentionPolicy.SOURCE) private @interface StateType {} // Keep the same value as correspoinding event // Keep the same value as corresponding event // See state2Event() for detail private static final int STATE_TYPE_RIL_CONNECTED = 0; // EVENT_UPDATE_NODE_CHANGED is not here, it will be removed in aosp soon Loading Loading @@ -135,6 +135,7 @@ public class DeviceStateMonitorTest extends TelephonyTest { @Mock UiModeManager mUiModeManager; private DeviceStateMonitor mDSM; // Given a stateType, return the event type that can change the state private int state2Event(@StateType int stateType) { // As long as we keep the same value, we can directly return the stateType Loading Loading @@ -169,7 +170,7 @@ public class DeviceStateMonitorTest extends TelephonyTest { // Initialize with ALL states off updateAllStatesToOff(); // eliminate the accumuted impact on Mockito.verify() // eliminate the accumulated impact on Mockito.verify() reset(mSimulatedCommandsVerifier); } Loading