diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/java/com/android/internal/telephony/satellite/SatelliteController.java | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java index 0d6a2250a7..672a064549 100644 --- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java +++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java @@ -9195,23 +9195,42 @@ public class SatelliteController extends Handler { * @return Supported modes {@link CarrierConfigManager.SATELLITE_DATA_SUPPORT_MODE} */ public int getSatelliteDataServicePolicyForPlmn(int subId, String plmn) { - if (plmn != null && isValidSubscriptionId(subId)) { + plogd("getSatelliteDataServicePolicyForPlmn: subId=" + subId + " plmn=" + plmn); + if (isValidSubscriptionId(subId)) { + Map<String, Integer> dataServicePolicy; synchronized (mSupportedSatelliteServicesLock) { - Map<String, Integer> dataServicePolicy = - mEntitlementDataServicePolicyMapPerCarrier.get( - subId); - logd("data policy available for sub id:" + dataServicePolicy); - if (dataServicePolicy != null && dataServicePolicy.containsKey(plmn) - && !plmn.isEmpty()) { + dataServicePolicy = mEntitlementDataServicePolicyMapPerCarrier.get(subId); + } + plogd("getSatelliteDataServicePolicyForPlmn: dataServicePolicy=" + dataServicePolicy); + + if (dataServicePolicy != null) { + if (!TextUtils.isEmpty(plmn) && dataServicePolicy.containsKey(plmn)) { + plogd("getSatelliteDataServicePolicyForPlmn: " + + "return policy using dataServicePolicy map"); return dataServicePolicy.get(plmn); + } else if (TextUtils.isEmpty(plmn)) { + int preferredPolicy = + CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED; + for (String plmnKey : dataServicePolicy.keySet()) { + int policy = dataServicePolicy.get(plmnKey); + // higher value has higher preference + if (policy > preferredPolicy) { + preferredPolicy = policy; + } + } + plogd("getSatelliteDataServicePolicyForPlmn: " + + "return preferredPolicy=" + preferredPolicy); + return preferredPolicy; } } if (isSatelliteDataServicesAllowed(subId, plmn)) { + plogd("getSatelliteDataServicePolicyForPlmn: return data support mode from config"); return getCarrierSatelliteDataSupportedModeFromConfig(subId); } } + plogd("getSatelliteDataServicePolicyForPlmn: return data support only restricted"); return CarrierConfigManager.SATELLITE_DATA_SUPPORT_ONLY_RESTRICTED; } |