diff options
author | Hakjun Choi <hakjunc@google.com> | 2023-10-30 08:32:35 +0000 |
---|---|---|
committer | Hakjun Choi <hakjunc@google.com> | 2023-10-31 08:18:08 +0000 |
commit | 042b87cb203ed9f7d490371b301fe709204cd57f (patch) | |
tree | bb42520d5362bd8e74e95ac869f06a53651d2596 | |
parent | 7fb979ca1981747f820e477eda31de8d0c16f1df (diff) | |
download | gsma_services-042b87cb203ed9f7d490371b301fe709204cd57f.tar.gz |
Provide wrapper for monitoring satellite capabilities change.
Add wrapper API to provide a way to call registerForSatelliteCapabilitiesChanged/unregisterForatelliteCapabilitiesChanged.
Bug: 307821402
Test: manual
1. push updated SatelliteClient.jar into /system_ext/framework/
2. run SatelliteTestApp to check whether correspondent APIs in SatelliteManager called as expected.
Change-Id: Iad18fbdc71070b39c0c365d5c8f72eab20df3097
2 files changed, 78 insertions, 0 deletions
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteCapabilitiesCallbackWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteCapabilitiesCallbackWrapper.java new file mode 100644 index 0000000..c538608 --- /dev/null +++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteCapabilitiesCallbackWrapper.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2023 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; + +import android.annotation.FlaggedApi; +import android.annotation.NonNull; + +import com.android.internal.telephony.flags.Flags; + +/** + * A callback class for satellite capabilities change events. + */ +@FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) +public interface SatelliteCapabilitiesCallbackWrapper { + /** + * Called when satellite capability has changed. + * @param capabilities The new satellite capabilities. + */ + @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) + void onSatelliteCapabilitiesChanged(@NonNull SatelliteCapabilitiesWrapper capabilities); +} diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java index 88ae1f8..2bacdba 100644 --- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java +++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java @@ -33,6 +33,7 @@ import android.telephony.satellite.NtnSignalStrength; import android.telephony.satellite.NtnSignalStrengthCallback; import android.telephony.satellite.PointingInfo; import android.telephony.satellite.SatelliteCapabilities; +import android.telephony.satellite.SatelliteCapabilitiesCallback; import android.telephony.satellite.SatelliteDatagram; import android.telephony.satellite.SatelliteDatagramCallback; import android.telephony.satellite.SatelliteManager; @@ -79,6 +80,10 @@ public class SatelliteManagerWrapper { NtnSignalStrengthCallbackWrapper, NtnSignalStrengthCallback> sNtnSignalStrengthCallbackWrapperMap = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap< + SatelliteCapabilitiesCallbackWrapper, SatelliteCapabilitiesCallback> + sSatelliteCapabilitiesCallbackWrapperMap = new ConcurrentHashMap<>(); + private final SatelliteManager mSatelliteManager; private final SubscriptionManager mSubscriptionManager; @@ -843,6 +848,44 @@ public class SatelliteManagerWrapper { return false; } + /** + * Wrapper API to register for satellite capabilities change event from the satellite service. + * + * @param executor The executor on which the callback will be called. + * @param callback The callback to handle the satellite capabilities changed event. + */ + @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) + public int registerForSatelliteCapabilitiesChanged( + @NonNull @CallbackExecutor Executor executor, + @NonNull SatelliteCapabilitiesCallbackWrapper callback) { + SatelliteCapabilitiesCallback internalCallback = + capabilities -> callback.onSatelliteCapabilitiesChanged( + new SatelliteCapabilitiesWrapper( + capabilities.getSupportedRadioTechnologies(), + capabilities.isPointingRequired(), + capabilities.getMaxBytesPerOutgoingDatagram(), + transformToAntennaPositionWrapperMap( + capabilities.getAntennaPositionMap()))); + sSatelliteCapabilitiesCallbackWrapperMap.put(callback, internalCallback); + return mSatelliteManager.registerForSatelliteCapabilitiesChanged(executor, internalCallback); + } + + /** + * Wrapper API to unregisters for satellite capabilities change event from the satellite service. + * If callback was not registered before, the request will be ignored. + * + * @param callback The callback that was passed to. + */ + @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) + public void unregisterForSatelliteCapabilitiesChanged( + @NonNull SatelliteCapabilitiesCallbackWrapper callback) { + SatelliteCapabilitiesCallback internalCallback = + sSatelliteCapabilitiesCallbackWrapperMap.get(callback); + if (internalCallback != null) { + mSatelliteManager.unregisterForSatelliteCapabilitiesChanged(internalCallback); + } + } + private void logd(String message) { Rlog.d(TAG, message); } |