Merge "Fix the incorrect type signature requestSatelliteConfigurationForCurrentLocation" into main
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
index 0ba1fd7..2019eb1 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -56,6 +56,7 @@
import android.telephony.satellite.SatelliteSubscriberProvisionStatus;
import android.telephony.satellite.SatelliteSupportedStateCallback;
import android.telephony.satellite.SatelliteTransmissionUpdateCallback;
+import android.telephony.satellite.SelectedNbIotSatelliteSubscriptionCallback;
import com.android.internal.telephony.flags.Flags;
import com.android.telephony.Rlog;
@@ -131,9 +132,13 @@
SatelliteCommunicationAllowedStateCallback>
sSatelliteCommunicationAllowedStateCallbackWrapperMap = new ConcurrentHashMap<>();
- private static final ConcurrentHashMap<SatelliteCommunicationAllowedStateCallbackWrapper2,
- SatelliteCommunicationAllowedStateCallback>
- sSatelliteCommunicationAllowedStateCallbackWrapperMap2 = new ConcurrentHashMap<>();
+ private static final ConcurrentHashMap<SatelliteCommunicationAllowedStateCallbackWrapper2,
+ SatelliteCommunicationAllowedStateCallback>
+ sSatelliteCommunicationAllowedStateCallbackWrapperMap2 = new ConcurrentHashMap<>();
+
+ private static final ConcurrentHashMap<SelectedNbIotSatelliteSubscriptionCallbackWrapper,
+ SelectedNbIotSatelliteSubscriptionCallback>
+ sSelectedNbIotSatelliteSubscriptionCallbackWrapperMap = new ConcurrentHashMap<>();
private final SatelliteManager mSatelliteManager;
private final SubscriptionManager mSubscriptionManager;
@@ -1395,6 +1400,45 @@
mSatelliteManager.requestSelectedNbIotSatelliteSubscriptionId(executor, internalCallback);
}
+ /**
+ * Wrapper API to register for selected satellite subscription changed event from the satellite
+ * service.
+ *
+ * @param executor The executor on which the callback will be called.
+ * @param callback The callback to handle the selected satellite subscription changed event.
+ */
+ @SatelliteResult public int registerForSelectedNbIotSatelliteSubscriptionChanged(
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull SelectedNbIotSatelliteSubscriptionCallbackWrapper callback) {
+ SelectedNbIotSatelliteSubscriptionCallback internalCallback =
+ selectedSubId -> callback.onSelectedNbIotSatelliteSubscriptionChanged(
+ selectedSubId);
+ sSelectedNbIotSatelliteSubscriptionCallbackWrapperMap.put(callback, internalCallback);
+ return mSatelliteManager.registerForSelectedNbIotSatelliteSubscriptionChanged(executor,
+ internalCallback);
+ }
+
+ /**
+ * Wrapper API to unregisters for selected satellite subscription changed event from the
+ * satellite service. If callback was not registered before, the request will be ignored.
+ *
+ * @param callback The callback that was passed to {@link
+ * #registerForSelectedNbIotSatelliteSubscriptionChanged(Executor,
+ * SelectedNbIotSatelliteSubscriptionCallbackWrapper)}.
+ */
+ public void unregisterForSelectedNbIotSatelliteSubscriptionChanged(
+ @NonNull SelectedNbIotSatelliteSubscriptionCallbackWrapper callback) {
+ SelectedNbIotSatelliteSubscriptionCallback internalCallback =
+ sSelectedNbIotSatelliteSubscriptionCallbackWrapperMap.remove(callback);
+ if (internalCallback != null) {
+ mSatelliteManager.unregisterForSelectedNbIotSatelliteSubscriptionChanged(
+ internalCallback);
+ } else {
+ logd("unregisterForSelectedNbIotSatelliteSubscriptionChanged: internalCallback is"
+ + " null");
+ }
+ }
+
/**
* Inform whether the device is aligned with the satellite for demo mode.
*/
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SelectedNbIotSatelliteSubscriptionCallbackWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SelectedNbIotSatelliteSubscriptionCallbackWrapper.java
new file mode 100644
index 0000000..b716de5
--- /dev/null
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SelectedNbIotSatelliteSubscriptionCallbackWrapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.satellite.wrapper;
+
+/**
+ * A callback class for selected satellite subscription changed events.
+ */
+public interface SelectedNbIotSatelliteSubscriptionCallbackWrapper {
+ /**
+ * Called when selected satellite subscription has changed.
+ *
+ * @param selectedSubId The new satellite subscription id.
+ */
+ void onSelectedNbIotSatelliteSubscriptionChanged(int selectedSubId);
+}
\ No newline at end of file