Merge "Chage featureFlag to carrierRoamingNbIotNtn" into main
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 621eb93..b9e6490 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -657,6 +657,11 @@
private final Object mNtnSmsSupportedByMessagesAppLock = new Object();
@GuardedBy("mNtnSmsSupportedByMessagesAppLock")
private Boolean mNtnSmsSupportedByMessagesApp = null;
+
+ private final Object mSatelliteModemStateLock = new Object();
+ @GuardedBy("mSatelliteModemStateLock")
+ @SatelliteManager.SatelliteModemState
+ private int mSatelliteModemState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
private BroadcastReceiver
mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() {
@Override
@@ -4772,6 +4777,11 @@
private void handleEventSatelliteModemStateChanged(
@SatelliteManager.SatelliteModemState int state) {
plogd("handleEventSatelliteModemStateChanged: state=" + state);
+
+ synchronized (mSatelliteModemStateLock) {
+ mSatelliteModemState = state;
+ }
+
if (state == SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE
|| state == SatelliteManager.SATELLITE_MODEM_STATE_OFF) {
if (!isWaitingForDisableSatelliteModemResponse()) {
@@ -8094,7 +8104,7 @@
NTN_SIGNAL_STRENGTH_NONE);
if (isInCarrierRoamingNbIotNtn(phone)) {
- if (mSatelliteSessionController.isInConnectedState()) {
+ if (isInConnectedState()) {
synchronized (mNtnSignalsStrengthLock) {
carrierRoamingNtnSignalStrength = mNtnSignalStrength;
}
@@ -8114,6 +8124,20 @@
return carrierRoamingNtnSignalStrength;
}
+ private boolean isInConnectedState() {
+ synchronized (mSatelliteModemStateLock) {
+ switch (mSatelliteModemState) {
+ case SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED:
+ case SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING:
+ plogd("isInConnectedState: return true");
+ return true;
+ default:
+ plogd("isInConnectedState: return false");
+ return false;
+ }
+ }
+ }
+
protected void updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(
@Nullable Phone phone) {
if (!mFeatureFlags.carrierRoamingNbIotNtn()) return;
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java b/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java
index 1e467e8..7aaf936 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteServiceUtils.java
@@ -555,31 +555,43 @@
convertedSpecifier.mMccMnc = systemSelectionSpecifier.getMccMnc();
convertedSpecifier.mBands = systemSelectionSpecifier.getBands().toArray();
convertedSpecifier.mEarfcs = systemSelectionSpecifier.getEarfcns().toArray();
+
SatelliteInfo[] satelliteInfos = systemSelectionSpecifier.getSatelliteInfos();
android.telephony.satellite.stub.SatelliteInfo[] halSatelliteInfos =
new android.telephony.satellite.stub.SatelliteInfo[satelliteInfos.length];
for (int i = 0; i < satelliteInfos.length; i++) {
+ halSatelliteInfos[i] = new android.telephony.satellite.stub.SatelliteInfo();
+
+ halSatelliteInfos[i].id = new android.telephony.satellite.stub.UUID();
halSatelliteInfos[i].id.mostSigBits =
satelliteInfos[i].getSatelliteId().getMostSignificantBits();
halSatelliteInfos[i].id.leastSigBits =
satelliteInfos[i].getSatelliteId().getLeastSignificantBits();
+
+ halSatelliteInfos[i].position =
+ new android.telephony.satellite.stub.SatellitePosition();
halSatelliteInfos[i].position.longitudeDegree =
satelliteInfos[i].getSatellitePosition().getLongitudeDegrees();
halSatelliteInfos[i].position.altitudeKm =
satelliteInfos[i].getSatellitePosition().getAltitudeKm();
+
halSatelliteInfos[i].bands = satelliteInfos[i].getBands().stream().mapToInt(
Integer::intValue).toArray();
+
List<EarfcnRange> earfcnRangeList = satelliteInfos[i].getEarfcnRanges();
halSatelliteInfos[i].earfcnRanges =
new android.telephony.satellite.stub.EarfcnRange[earfcnRangeList.size()];
for (int j = 0; j < earfcnRangeList.size(); j++) {
+ halSatelliteInfos[i].earfcnRanges[j] =
+ new android.telephony.satellite.stub.EarfcnRange();
halSatelliteInfos[i].earfcnRanges[j].startEarfcn = earfcnRangeList.get(
j).getStartEarfcn();
halSatelliteInfos[i].earfcnRanges[j].endEarfcn = earfcnRangeList.get(
- j).getStartEarfcn();
+ j).getEndEarfcn();
}
}
convertedSpecifier.satelliteInfos = halSatelliteInfos;
+
convertedSpecifier.tagIds = systemSelectionSpecifier.getTagIds().toArray();
return convertedSpecifier;
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java b/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
index d1d03a0..b2861d3 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
@@ -68,7 +68,6 @@
import android.util.Log;
import com.android.internal.R;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.DeviceStateMonitor;
import com.android.internal.telephony.ExponentialBackoff;
@@ -586,17 +585,6 @@
}
/**
- * Get whether state machine is in connected state.
- *
- * @return {@code true} if state machine is in connected state and {@code false} otherwise.
- */
- public boolean isInConnectedState() {
- if (DBG) plogd("isInConnectedState: getCurrentState=" + getCurrentState());
- return getCurrentState() == mConnectedState;
- }
-
-
- /**
* Release all resource.
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)