diff options
author | Manish Dungriyal <mdungriyal@google.com> | 2023-01-06 12:49:47 +0000 |
---|---|---|
committer | Manish Dungriyal <mdungriyal@google.com> | 2023-01-11 10:03:07 +0000 |
commit | 21f6fc3223923b766a50cd0db260156aa1a097c5 (patch) | |
tree | 02d408b6f108bac7df5883955888a9c02b299660 /services/QualifiedNetworksService/src/com/android | |
parent | 1a460e3fb092f0a7389a873e994526f7e7fd1d9f (diff) | |
download | Telephony-21f6fc3223923b766a50cd0db260156aa1a097c5.tar.gz |
[QNS] 5G to Vowifi Handover Failure
CQM did not report NR signal change due to assumed invalid signal strength.
Updated CQM logic to check for individual parameter of CellSignalStrength for the registered thresholds.
Bug: 264504428
Test: atest QualifiedNetworksServiceTests
Change-Id: Ia56e7ffdaee5ac3fad69d324ee5d9969fe95b037
Diffstat (limited to 'services/QualifiedNetworksService/src/com/android')
-rw-r--r-- | services/QualifiedNetworksService/src/com/android/telephony/qns/CellularQualityMonitor.java | 66 |
1 files changed, 4 insertions, 62 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/CellularQualityMonitor.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/CellularQualityMonitor.java index 9bd4555..c2b8d07 100644 --- a/services/QualifiedNetworksService/src/com/android/telephony/qns/CellularQualityMonitor.java +++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/CellularQualityMonitor.java @@ -27,7 +27,6 @@ import android.os.Looper; import android.os.Message; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.CellSignalStrength; -import android.telephony.CellSignalStrengthCdma; import android.telephony.CellSignalStrengthGsm; import android.telephony.CellSignalStrengthLte; import android.telephony.CellSignalStrengthNr; @@ -163,69 +162,13 @@ class CellularQualityMonitor extends QualityMonitor { private void onSignalStrengthsChanged(SignalStrength signalStrength) { List<CellSignalStrength> ss = signalStrength.getCellSignalStrengths(); if (!ss.isEmpty()) { - int accessNetwork; for (CellSignalStrength cs : ss) { - accessNetwork = getAccessNetworkForSignalStrength(cs); - if (accessNetwork != AccessNetworkType.UNKNOWN) { - checkAndNotifySignalStrength(cs, accessNetwork); - } - } - } - } - - private int getAccessNetworkForSignalStrength(CellSignalStrength cs) { - int accessNetwork = AccessNetworkType.UNKNOWN; - if (cs instanceof CellSignalStrengthNr) { - CellSignalStrengthNr ss = (CellSignalStrengthNr) cs; - if (ss.getCsiRsrp() != UNAVAILABLE - && ss.getCsiRsrq() != UNAVAILABLE - && ss.getCsiSinr() != UNAVAILABLE - && ss.getSsRsrp() != UNAVAILABLE - && ss.getSsRsrq() != UNAVAILABLE - && ss.getSsSinr() != UNAVAILABLE - && ss.getCsiCqiTableIndex() != UNAVAILABLE) { - accessNetwork = AccessNetworkType.NGRAN; + checkAndNotifySignalStrength(cs); } - } else if (cs instanceof CellSignalStrengthLte) { - CellSignalStrengthLte ss = (CellSignalStrengthLte) cs; - if (ss.getRssi() != UNAVAILABLE - && ss.getRsrp() != UNAVAILABLE - && ss.getRsrq() != UNAVAILABLE - && ss.getRssnr() != UNAVAILABLE - && ss.getCqiTableIndex() != UNAVAILABLE - && ss.getCqi() != UNAVAILABLE - && ss.getTimingAdvance() != UNAVAILABLE) { - accessNetwork = AccessNetworkType.EUTRAN; - } - } else if (cs instanceof CellSignalStrengthWcdma) { - CellSignalStrengthWcdma ss = (CellSignalStrengthWcdma) cs; - if (ss.getDbm() != UNAVAILABLE && ss.getEcNo() != UNAVAILABLE) { - accessNetwork = AccessNetworkType.UTRAN; - } - } else if (cs instanceof CellSignalStrengthCdma) { - CellSignalStrengthCdma ss = (CellSignalStrengthCdma) cs; - if (ss.getCdmaDbm() != UNAVAILABLE - && ss.getCdmaEcio() != UNAVAILABLE - && ss.getEvdoDbm() != UNAVAILABLE - && ss.getEvdoEcio() != UNAVAILABLE - && ss.getEvdoSnr() != UNAVAILABLE) { - accessNetwork = AccessNetworkType.CDMA2000; - } - } else if (cs instanceof CellSignalStrengthGsm) { - CellSignalStrengthGsm ss = (CellSignalStrengthGsm) cs; - if (ss.getRssi() != UNAVAILABLE - && ss.getBitErrorRate() != UNAVAILABLE - && ss.getTimingAdvance() != UNAVAILABLE) { - accessNetwork = AccessNetworkType.GERAN; - } - } else { - Log.d(mTag, "Unknown signal strength :" + cs); } - return accessNetwork; } - private void checkAndNotifySignalStrength( - CellSignalStrength cellSignalStrength, int accessNetwork) { + private void checkAndNotifySignalStrength(CellSignalStrength cellSignalStrength) { Log.d(mTag, "CellSignalStrength Changed: " + cellSignalStrength); int signalStrength; @@ -238,11 +181,10 @@ class CellularQualityMonitor extends QualityMonitor { List<Threshold> matchedThresholds = new ArrayList<>(); Threshold threshold; for (Threshold th : entry.getValue()) { - if (th.getAccessNetwork() != accessNetwork) continue; signalStrength = getSignalStrength( th.getAccessNetwork(), th.getMeasurementType(), cellSignalStrength); - if (th.isMatching(signalStrength)) { + if (signalStrength != UNAVAILABLE && th.isMatching(signalStrength)) { threshold = th.copy(); threshold.setThreshold(signalStrength); matchedThresholds.add(threshold); @@ -451,7 +393,7 @@ class CellularQualityMonitor extends QualityMonitor { } private int getSignalStrength(int accessNetwork, int measurementType, CellSignalStrength css) { - int signalStrength = SignalStrength.INVALID; + int signalStrength = UNAVAILABLE; switch (measurementType) { case SignalThresholdInfo.SIGNAL_MEASUREMENT_TYPE_RSSI: if (accessNetwork == AccessNetworkType.GERAN |