Loading src/java/com/android/internal/telephony/satellite/DatagramReceiver.java +5 −0 Original line number Diff line number Diff line Loading @@ -442,6 +442,11 @@ public class DatagramReceiver extends Handler { SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED, mDatagramController.getReceivePendingCount(), error); mDatagramController.updateReceiveStatus(request.subId, SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE, mDatagramController.getReceivePendingCount(), SatelliteManager.SATELLITE_ERROR_NONE); reportMetrics(null, error); mControllerMetricsStats.reportIncomingDatagramCount(error); } Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +29 −1 Original line number Diff line number Diff line Loading @@ -201,7 +201,6 @@ public class SatelliteController extends Handler { // Create the SatelliteControllerMetrics to report controller metrics // should be called before making DatagramController loge("mControllerMetricsStats = ControllerMetricsStats.make(mContext);"); mControllerMetricsStats = ControllerMetricsStats.make(mContext); mProvisionMetricsStats = ProvisionMetricsStats.getOrCreateInstance(); Loading Loading @@ -1407,6 +1406,35 @@ public class SatelliteController extends Handler { sendRequestAsync(CMD_GET_TIME_SATELLITE_NEXT_VISIBLE, result, phone); } /** * This API can be used by only CTS to update satellite vendor service package name. * * @param servicePackageName The package name of the satellite vendor service. * @return {@code true} if the satellite vendor service is set successfully, * {@code false} otherwise. */ public boolean setSatelliteServicePackageName(@Nullable String servicePackageName) { boolean result = mSatelliteModemInterface.setSatelliteServicePackageName( servicePackageName); if (result && (servicePackageName == null || servicePackageName.equals("null"))) { /** * mIsSatelliteSupported is set to true when running SatelliteManagerTestOnMockService. * We need to set it to the actual state of the device. */ synchronized (mIsSatelliteSupportedLock) { mIsSatelliteSupported = null; } ResultReceiver receiver = new ResultReceiver(this) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { logd("requestIsSatelliteSupported: resultCode=" + resultCode); } }; requestIsSatelliteSupported(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, receiver); } return result; } /** * This function is used by {@link SatelliteModemInterface} to notify * {@link SatelliteController} that the satellite vendor service was just connected. Loading src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java +51 −3 Original line number Diff line number Diff line Loading @@ -24,12 +24,14 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.AsyncResult; import android.os.Binder; import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.RegistrantList; import android.os.RemoteException; import android.os.SystemProperties; import android.telephony.Rlog; import android.telephony.satellite.SatelliteCapabilities; import android.telephony.satellite.SatelliteDatagram; Loading @@ -55,7 +57,8 @@ import java.util.Arrays; */ public class SatelliteModemInterface { private static final String TAG = "SatelliteModemInterface"; private static final String ALLOW_MOCK_MODEM_PROPERTY = "persist.radio.allow_mock_modem"; private static final boolean DEBUG = !"user".equals(Build.TYPE); private static final long REBIND_INITIAL_DELAY = 2 * 1000; // 2 seconds private static final long REBIND_MAXIMUM_DELAY = 64 * 1000; // 1 minute private static final int REBIND_MULTIPLIER = 2; Loading @@ -69,9 +72,10 @@ public class SatelliteModemInterface { /** * {@code true} to use the vendor satellite service and {@code false} to use the HAL. */ private final boolean mIsSatelliteServiceSupported; private boolean mIsSatelliteServiceSupported; @Nullable private ISatellite mSatelliteService; @Nullable private SatelliteServiceConnection mSatelliteServiceConnection; @NonNull private String mVendorSatellitePackageName = ""; private boolean mIsBound; private boolean mIsBinding; Loading Loading @@ -133,7 +137,6 @@ public class SatelliteModemInterface { // keep previous state as this could be retrying sending or receiving break; } // TODO: properly notify the rest of the datagram transfer state changed parameters mDatagramTransferStateChangedRegistrants.notifyResult(datagramTransferState); } }; Loading Loading @@ -206,6 +209,9 @@ public class SatelliteModemInterface { } @NonNull private String getSatellitePackageName() { if (!TextUtils.isEmpty(mVendorSatellitePackageName)) { return mVendorSatellitePackageName; } return TextUtils.emptyIfNull(mContext.getResources().getString( R.string.config_satellite_service_package)); } Loading Loading @@ -235,6 +241,7 @@ public class SatelliteModemInterface { intent.setPackage(packageName); mSatelliteServiceConnection = new SatelliteServiceConnection(); logd("Binding to " + packageName); try { boolean success = mContext.bindService( intent, mSatelliteServiceConnection, Context.BIND_AUTO_CREATE); Loading Loading @@ -963,6 +970,43 @@ public class SatelliteModemInterface { return mIsSatelliteServiceSupported; } /** * This API can be used by only CTS to update satellite vendor service package name. * * @param servicePackageName The package name of the satellite vendor service. * @return {@code true} if the satellite vendor service is set successfully, * {@code false} otherwise. */ boolean setSatelliteServicePackageName(@Nullable String servicePackageName) { if (!shouldAllowModifyingSatelliteServicePackageName()) { loge("setSatelliteServicePackageName: modifying satellite service package name " + "is not allowed"); return false; } logd("setSatelliteServicePackageName: config_satellite_service_package is " + "updated, new packageName=" + servicePackageName); mExponentialBackoff.stop(); if (mSatelliteServiceConnection != null) { synchronized (mLock) { mIsBound = false; mIsBinding = false; } unbindService(); } if (servicePackageName == null || servicePackageName.equals("null")) { mVendorSatellitePackageName = ""; } else { mVendorSatellitePackageName = servicePackageName; } mIsSatelliteServiceSupported = getSatelliteServiceSupport(); bindService(); mExponentialBackoff.start(); return true; } @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected static void sendMessageWithResult(@NonNull Message message, @Nullable Object result, @SatelliteManager.SatelliteError int error) { Loading @@ -972,6 +1016,10 @@ public class SatelliteModemInterface { message.sendToTarget(); } private boolean shouldAllowModifyingSatelliteServicePackageName() { return (DEBUG || SystemProperties.getBoolean(ALLOW_MOCK_MODEM_PROPERTY, false)); } private static void logd(@NonNull String log) { Rlog.d(TAG, log); } Loading Loading
src/java/com/android/internal/telephony/satellite/DatagramReceiver.java +5 −0 Original line number Diff line number Diff line Loading @@ -442,6 +442,11 @@ public class DatagramReceiver extends Handler { SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED, mDatagramController.getReceivePendingCount(), error); mDatagramController.updateReceiveStatus(request.subId, SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE, mDatagramController.getReceivePendingCount(), SatelliteManager.SATELLITE_ERROR_NONE); reportMetrics(null, error); mControllerMetricsStats.reportIncomingDatagramCount(error); } Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +29 −1 Original line number Diff line number Diff line Loading @@ -201,7 +201,6 @@ public class SatelliteController extends Handler { // Create the SatelliteControllerMetrics to report controller metrics // should be called before making DatagramController loge("mControllerMetricsStats = ControllerMetricsStats.make(mContext);"); mControllerMetricsStats = ControllerMetricsStats.make(mContext); mProvisionMetricsStats = ProvisionMetricsStats.getOrCreateInstance(); Loading Loading @@ -1407,6 +1406,35 @@ public class SatelliteController extends Handler { sendRequestAsync(CMD_GET_TIME_SATELLITE_NEXT_VISIBLE, result, phone); } /** * This API can be used by only CTS to update satellite vendor service package name. * * @param servicePackageName The package name of the satellite vendor service. * @return {@code true} if the satellite vendor service is set successfully, * {@code false} otherwise. */ public boolean setSatelliteServicePackageName(@Nullable String servicePackageName) { boolean result = mSatelliteModemInterface.setSatelliteServicePackageName( servicePackageName); if (result && (servicePackageName == null || servicePackageName.equals("null"))) { /** * mIsSatelliteSupported is set to true when running SatelliteManagerTestOnMockService. * We need to set it to the actual state of the device. */ synchronized (mIsSatelliteSupportedLock) { mIsSatelliteSupported = null; } ResultReceiver receiver = new ResultReceiver(this) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { logd("requestIsSatelliteSupported: resultCode=" + resultCode); } }; requestIsSatelliteSupported(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, receiver); } return result; } /** * This function is used by {@link SatelliteModemInterface} to notify * {@link SatelliteController} that the satellite vendor service was just connected. Loading
src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java +51 −3 Original line number Diff line number Diff line Loading @@ -24,12 +24,14 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.AsyncResult; import android.os.Binder; import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.RegistrantList; import android.os.RemoteException; import android.os.SystemProperties; import android.telephony.Rlog; import android.telephony.satellite.SatelliteCapabilities; import android.telephony.satellite.SatelliteDatagram; Loading @@ -55,7 +57,8 @@ import java.util.Arrays; */ public class SatelliteModemInterface { private static final String TAG = "SatelliteModemInterface"; private static final String ALLOW_MOCK_MODEM_PROPERTY = "persist.radio.allow_mock_modem"; private static final boolean DEBUG = !"user".equals(Build.TYPE); private static final long REBIND_INITIAL_DELAY = 2 * 1000; // 2 seconds private static final long REBIND_MAXIMUM_DELAY = 64 * 1000; // 1 minute private static final int REBIND_MULTIPLIER = 2; Loading @@ -69,9 +72,10 @@ public class SatelliteModemInterface { /** * {@code true} to use the vendor satellite service and {@code false} to use the HAL. */ private final boolean mIsSatelliteServiceSupported; private boolean mIsSatelliteServiceSupported; @Nullable private ISatellite mSatelliteService; @Nullable private SatelliteServiceConnection mSatelliteServiceConnection; @NonNull private String mVendorSatellitePackageName = ""; private boolean mIsBound; private boolean mIsBinding; Loading Loading @@ -133,7 +137,6 @@ public class SatelliteModemInterface { // keep previous state as this could be retrying sending or receiving break; } // TODO: properly notify the rest of the datagram transfer state changed parameters mDatagramTransferStateChangedRegistrants.notifyResult(datagramTransferState); } }; Loading Loading @@ -206,6 +209,9 @@ public class SatelliteModemInterface { } @NonNull private String getSatellitePackageName() { if (!TextUtils.isEmpty(mVendorSatellitePackageName)) { return mVendorSatellitePackageName; } return TextUtils.emptyIfNull(mContext.getResources().getString( R.string.config_satellite_service_package)); } Loading Loading @@ -235,6 +241,7 @@ public class SatelliteModemInterface { intent.setPackage(packageName); mSatelliteServiceConnection = new SatelliteServiceConnection(); logd("Binding to " + packageName); try { boolean success = mContext.bindService( intent, mSatelliteServiceConnection, Context.BIND_AUTO_CREATE); Loading Loading @@ -963,6 +970,43 @@ public class SatelliteModemInterface { return mIsSatelliteServiceSupported; } /** * This API can be used by only CTS to update satellite vendor service package name. * * @param servicePackageName The package name of the satellite vendor service. * @return {@code true} if the satellite vendor service is set successfully, * {@code false} otherwise. */ boolean setSatelliteServicePackageName(@Nullable String servicePackageName) { if (!shouldAllowModifyingSatelliteServicePackageName()) { loge("setSatelliteServicePackageName: modifying satellite service package name " + "is not allowed"); return false; } logd("setSatelliteServicePackageName: config_satellite_service_package is " + "updated, new packageName=" + servicePackageName); mExponentialBackoff.stop(); if (mSatelliteServiceConnection != null) { synchronized (mLock) { mIsBound = false; mIsBinding = false; } unbindService(); } if (servicePackageName == null || servicePackageName.equals("null")) { mVendorSatellitePackageName = ""; } else { mVendorSatellitePackageName = servicePackageName; } mIsSatelliteServiceSupported = getSatelliteServiceSupport(); bindService(); mExponentialBackoff.start(); return true; } @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected static void sendMessageWithResult(@NonNull Message message, @Nullable Object result, @SatelliteManager.SatelliteError int error) { Loading @@ -972,6 +1016,10 @@ public class SatelliteModemInterface { message.sendToTarget(); } private boolean shouldAllowModifyingSatelliteServicePackageName() { return (DEBUG || SystemProperties.getBoolean(ALLOW_MOCK_MODEM_PROPERTY, false)); } private static void logd(@NonNull String log) { Rlog.d(TAG, log); } Loading