update getStaticPhoneCapability to use HAL instead of default value
Bug: 123359867
Test: build
Change-Id: Iec4461f2c98afdbc876b196efb5f8132bcbef0c9
Merged-In: Iec4461f2c98afdbc876b196efb5f8132bcbef0c9
(cherry picked from commit af57040b8f15c89de2166205caca4266e280cf04)
diff --git a/src/java/com/android/internal/telephony/PhoneConfigurationManager.java b/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
index 616e9fe..a191c47 100644
--- a/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
+++ b/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
@@ -46,11 +46,11 @@
private static final int EVENT_SWITCH_DSDS_CONFIG_DONE = 100;
private static final int EVENT_GET_MODEM_STATUS = 101;
private static final int EVENT_GET_MODEM_STATUS_DONE = 102;
+ private static final int EVENT_GET_PHONE_CAPABILITY_DONE = 103;
private static PhoneConfigurationManager sInstance = null;
private final Context mContext;
private PhoneCapability mStaticCapability;
- private PhoneCapability mCurrentCapability;
private final RadioConfig mRadioConfig;
private final MainThreadHandler mHandler;
private final Phone[] mPhones;
@@ -79,8 +79,8 @@
mContext = context;
// TODO: send commands to modem once interface is ready.
TelephonyManager telephonyManager = new TelephonyManager(context);
- mStaticCapability = PhoneConfigurationModels.DSDS_CAPABILITY;
- mCurrentCapability = mStaticCapability;
+ //initialize with default, it'll get updated when RADIO is ON/AVAILABLE
+ mStaticCapability = getDefaultCapability();
mRadioConfig = RadioConfig.getInstance(mContext);
mHandler = new MainThreadHandler();
mPhoneStatusMap = new HashMap<>();
@@ -99,6 +99,14 @@
}
}
+ private PhoneCapability getDefaultCapability() {
+ if (getPhoneCount() > 1) {
+ return PhoneConfigurationModels.DSDS_CAPABILITY;
+ } else {
+ return PhoneConfigurationModels.SSSS_CAPABILITY;
+ }
+ }
+
/**
* Static method to get instance.
*/
@@ -131,6 +139,7 @@
} else {
updatePhoneStatus(phone);
}
+ getStaticPhoneCapability();
break;
case EVENT_SWITCH_DSDS_CONFIG_DONE:
ar = (AsyncResult) msg.obj;
@@ -152,6 +161,14 @@
log(msg.what + " failure. Not updating modem status." + ar.exception);
}
break;
+ case EVENT_GET_PHONE_CAPABILITY_DONE:
+ ar = (AsyncResult) msg.obj;
+ if (ar != null && ar.exception == null) {
+ mStaticCapability = (PhoneCapability) ar.result;
+ notifyCapabilityChanged();
+ } else {
+ log(msg.what + " failure. Not getting phone capability." + ar.exception);
+ }
}
}
}
@@ -196,7 +213,7 @@
}
/**
- * method to call RIL getM
+ * method to call RIL getModemStatus
*/
private void updatePhoneStatus(Phone phone) {
Message callback = Message.obtain(
@@ -224,7 +241,13 @@
/**
* get static overall phone capabilities for all phones.
*/
- public PhoneCapability getStaticPhoneCapability() {
+ public synchronized PhoneCapability getStaticPhoneCapability() {
+ if (getDefaultCapability().equals(mStaticCapability)) {
+ log("getStaticPhoneCapability: sending the request for getting PhoneCapability");
+ Message callback = Message.obtain(
+ mHandler, EVENT_GET_PHONE_CAPABILITY_DONE);
+ mRadioConfig.getPhoneCapability(callback);
+ }
return mStaticCapability;
}
@@ -232,17 +255,17 @@
* get configuration related status of each phone.
*/
public PhoneCapability getCurrentPhoneCapability() {
- return mCurrentCapability;
+ return getStaticPhoneCapability();
}
public int getNumberOfModemsWithSimultaneousDataConnections() {
- return mCurrentCapability.maxActiveData;
+ return mStaticCapability.maxActiveData;
}
private void notifyCapabilityChanged() {
PhoneNotifier notifier = new DefaultPhoneNotifier();
- notifier.notifyPhoneCapabilityChanged(mCurrentCapability);
+ notifier.notifyPhoneCapabilityChanged(mStaticCapability);
}
/**
diff --git a/src/java/com/android/internal/telephony/RadioConfig.java b/src/java/com/android/internal/telephony/RadioConfig.java
index ab9afec..680d052 100644
--- a/src/java/com/android/internal/telephony/RadioConfig.java
+++ b/src/java/com/android/internal/telephony/RadioConfig.java
@@ -324,7 +324,7 @@
* Wrapper function for IRadioConfig.getPhoneCapability().
*/
public void getPhoneCapability(Message result) {
- IRadioConfig radioConfigProxy = getRadioConfigProxy(result);
+ IRadioConfig radioConfigProxy = getRadioConfigProxy(null);
if (radioConfigProxy == null || mRadioConfigVersion.less(RADIO_CONFIG_HAL_VERSION_1_1)) {
if (result != null) {
AsyncResult.forMessage(result, null,