Persist Telephony Satellite SOS logs
1. Add feature flag for persistent satellite logging
2. Persist satellite telephony module logs
Bug: 343478281
Flag: com.android.internal.telephony.flags.satellite_persistent_logging
Test: make & manual tests
Change-Id: Iaeab24745fd493148274c986f418e3a117fcac48
diff --git a/flags/satellite.aconfig b/flags/satellite.aconfig
index 27ab0b1..2eea80a 100644
--- a/flags/satellite.aconfig
+++ b/flags/satellite.aconfig
@@ -25,4 +25,12 @@
namespace: "telephony"
description: "This flag enables satellite internet support."
bug:"326972202"
+}
+
+# OWNER=xalle TARGET=24Q3
+flag {
+ name: "satellite_persistent_logging"
+ namespace: "telephony"
+ description: "This flag enables satellite persistent logging"
+ bug:"339877723"
}
\ No newline at end of file
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramController.java b/src/java/com/android/internal/telephony/satellite/DatagramController.java
index 8271187..ff2ee9f 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramController.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramController.java
@@ -28,11 +28,14 @@
import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.os.Looper;
import android.os.SystemProperties;
+import android.telephony.DropBoxManagerLoggerBackend;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.satellite.ISatelliteDatagramCallback;
import android.telephony.satellite.SatelliteDatagram;
@@ -41,6 +44,7 @@
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.FeatureFlags;
import java.util.ArrayList;
import java.util.List;
@@ -55,6 +59,7 @@
@NonNull private static DatagramController sInstance;
@NonNull private final Context mContext;
+ @NonNull private final FeatureFlags mFeatureFlags;
@NonNull private final PointingAppController mPointingAppController;
@NonNull private final DatagramDispatcher mDatagramDispatcher;
@NonNull private final DatagramReceiver mDatagramReceiver;
@@ -109,6 +114,8 @@
@GuardedBy("mLock")
@SatelliteManager.SatelliteModemState
private int mSatelltieModemState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
+ @Nullable
+ private PersistentLogger mPersistentLogger = null;
/**
* @return The singleton instance of DatagramController.
@@ -124,14 +131,17 @@
* Create the DatagramController singleton instance.
* @param context The Context to use to create the DatagramController.
* @param looper The looper for the handler.
+ * @param featureFlags The telephony feature flags.
* @param pointingAppController PointingAppController is used to update
* PointingApp about datagram transfer state changes.
* @return The singleton instance of DatagramController.
*/
public static DatagramController make(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull PointingAppController pointingAppController) {
if (sInstance == null) {
- sInstance = new DatagramController(context, looper, pointingAppController);
+ sInstance = new DatagramController(
+ context, looper, featureFlags, pointingAppController);
}
return sInstance;
}
@@ -141,22 +151,27 @@
*
* @param context The Context for the DatagramController.
* @param looper The looper for the handler
+ * @param featureFlags The telephony feature flags.
* @param pointingAppController PointingAppController is used to update PointingApp
* about datagram transfer state changes.
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
public DatagramController(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull PointingAppController pointingAppController) {
mContext = context;
+ mFeatureFlags = featureFlags;
mPointingAppController = pointingAppController;
// Create the DatagramDispatcher singleton,
// which is used to send satellite datagrams.
- mDatagramDispatcher = DatagramDispatcher.make(mContext, looper, this);
+ mDatagramDispatcher = DatagramDispatcher.make(
+ mContext, looper, mFeatureFlags, this);
// Create the DatagramReceiver singleton,
// which is used to receive satellite datagrams.
- mDatagramReceiver = DatagramReceiver.make(mContext, looper, this);
+ mDatagramReceiver = DatagramReceiver.make(
+ mContext, looper, mFeatureFlags, this);
mDatagramWaitTimeForConnectedState = getDatagramWaitForConnectedStateTimeoutMillis();
mModemImageSwitchingDuration = getSatelliteModemImageSwitchingDurationMillis();
@@ -165,6 +180,11 @@
mDatagramWaitTimeForConnectedStateForLastMessage =
getDatagramWaitForConnectedStateForLastMessageTimeoutMillis();
mDemoModeDatagramList = new ArrayList<>();
+
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
}
/**
@@ -205,7 +225,7 @@
* @param callback The callback to get {@link SatelliteManager.SatelliteResult} of the request.
*/
public void pollPendingSatelliteDatagrams(int subId, @NonNull Consumer<Integer> callback) {
- logd("pollPendingSatelliteDatagrams");
+ plogd("pollPendingSatelliteDatagrams");
mDatagramReceiver.pollPendingSatelliteDatagrams(subId, callback);
}
@@ -247,13 +267,13 @@
@SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
int sendPendingCount, int errorCode) {
synchronized (mLock) {
- logd("updateSendStatus"
+ plogd("updateSendStatus"
+ " subId: " + subId
+ " datagramType: " + datagramType
+ " datagramTransferState: " + datagramTransferState
+ " sendPendingCount: " + sendPendingCount + " errorCode: " + errorCode);
if (shouldSuppressDatagramTransferStateUpdate(datagramType)) {
- logd("Ignore the request to update send status");
+ plogd("Ignore the request to update send status");
return;
}
@@ -295,7 +315,7 @@
@SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
int receivePendingCount, int errorCode) {
synchronized (mLock) {
- logd("updateReceiveStatus"
+ plogd("updateReceiveStatus"
+ " subId: " + subId
+ " datagramTransferState: " + datagramTransferState
+ " receivePendingCount: " + receivePendingCount + " errorCode: " + errorCode);
@@ -411,7 +431,7 @@
}
setDeviceAlignedWithSatellite(false);
}
- logd("setDemoMode: mIsDemoMode=" + mIsDemoMode);
+ plogd("setDemoMode: mIsDemoMode=" + mIsDemoMode);
}
/** Get the last sent datagram for demo mode */
@@ -422,7 +442,7 @@
}
synchronized (mLock) {
- logd("popDemoModeDatagram");
+ plogd("popDemoModeDatagram");
return mDemoModeDatagramList.size() > 0 ? mDemoModeDatagramList.remove(0) : null;
}
}
@@ -440,7 +460,7 @@
if (mIsDemoMode && SatelliteServiceUtils.isSosMessage(datagramType)) {
synchronized (mLock) {
mDemoModeDatagramList.add(datagram);
- logd("pushDemoModeDatagram size=" + mDemoModeDatagramList.size());
+ plogd("pushDemoModeDatagram size=" + mDemoModeDatagramList.size());
}
}
}
@@ -473,11 +493,11 @@
boolean setDatagramControllerTimeoutDuration(
boolean reset, int timeoutType, long timeoutMillis) {
if (!isMockModemAllowed()) {
- loge("Updating timeout duration is not allowed");
+ ploge("Updating timeout duration is not allowed");
return false;
}
- logd("setDatagramControllerTimeoutDuration: timeoutMillis=" + timeoutMillis
+ plogd("setDatagramControllerTimeoutDuration: timeoutMillis=" + timeoutMillis
+ ", reset=" + reset + ", timeoutType=" + timeoutType);
if (timeoutType == TIMEOUT_TYPE_ALIGN) {
if (reset) {
@@ -499,7 +519,7 @@
} else if (timeoutType == TIMEOUT_TYPE_DATAGRAM_DELAY_IN_DEMO_MODE) {
mDatagramDispatcher.setTimeoutDatagramDelayInDemoMode(reset, timeoutMillis);
} else {
- loge("Invalid timeout type " + timeoutType);
+ ploge("Invalid timeout type " + timeoutType);
return false;
}
return true;
@@ -542,7 +562,7 @@
private void notifyDatagramTransferStateChangedToSessionController() {
SatelliteSessionController sessionController = SatelliteSessionController.getInstance();
if (sessionController == null) {
- loge("notifyDatagramTransferStateChangeToSessionController: SatelliteSessionController"
+ ploge("notifyDatagramTransferStateChangeToSessionController: SatelliteSessionController"
+ " is not initialized yet");
} else {
sessionController.onDatagramTransferStateChanged(
@@ -585,7 +605,7 @@
@Override
public void accept(Integer result) {
if (result != SATELLITE_RESULT_SUCCESS) {
- logd("retryPollPendingDatagramsInDemoMode result: " + result);
+ plogd("retryPollPendingDatagramsInDemoMode result: " + result);
}
}
};
@@ -633,4 +653,31 @@
private static void loge(@NonNull String log) {
Rlog.e(TAG, log);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
}
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index c4667e8..2c9463f 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -32,6 +32,8 @@
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.telephony.DropBoxManagerLoggerBackend;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.satellite.SatelliteDatagram;
@@ -41,6 +43,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats;
import com.android.internal.telephony.satellite.metrics.SessionMetricsStats;
@@ -72,6 +75,7 @@
@NonNull private final DatagramController mDatagramController;
@NonNull private final ControllerMetricsStats mControllerMetricsStats;
@NonNull private final SessionMetricsStats mSessionMetricsStats;
+ @NonNull private final FeatureFlags mFeatureFlags;
private boolean mIsDemoMode = false;
private boolean mIsAligned = false;
@@ -107,18 +111,21 @@
private long mWaitTimeForDatagramSendingForLastMessageResponse;
@SatelliteManager.DatagramType
private int mLastSendRequestDatagramType = DATAGRAM_TYPE_UNKNOWN;
+ @Nullable private PersistentLogger mPersistentLogger = null;
/**
* Create the DatagramDispatcher singleton instance.
* @param context The Context to use to create the DatagramDispatcher.
* @param looper The looper for the handler.
+ * @param featureFlags The telephony feature flags.
* @param datagramController DatagramController which is used to update datagram transfer state.
* @return The singleton instance of DatagramDispatcher.
*/
public static DatagramDispatcher make(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull DatagramController datagramController) {
if (sInstance == null) {
- sInstance = new DatagramDispatcher(context, looper, datagramController);
+ sInstance = new DatagramDispatcher(context, looper, featureFlags, datagramController);
}
return sInstance;
}
@@ -138,16 +145,23 @@
*
* @param context The Context for the DatagramDispatcher.
* @param looper The looper for the handler.
+ * @param featureFlags The telephony feature flags.
* @param datagramController DatagramController which is used to update datagram transfer state.
*/
@VisibleForTesting
protected DatagramDispatcher(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull DatagramController datagramController) {
super(looper);
mContext = context;
+ mFeatureFlags = featureFlags;
mDatagramController = datagramController;
mControllerMetricsStats = ControllerMetricsStats.getInstance();
mSessionMetricsStats = SessionMetricsStats.getInstance();
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
synchronized (mLock) {
mSendingDatagramInProgress = false;
@@ -219,7 +233,7 @@
switch(msg.what) {
case CMD_SEND_SATELLITE_DATAGRAM: {
- logd("CMD_SEND_SATELLITE_DATAGRAM mIsDemoMode=" + mIsDemoMode
+ plogd("CMD_SEND_SATELLITE_DATAGRAM mIsDemoMode=" + mIsDemoMode
+ ", shouldSendDatagramToModemInDemoMode="
+ shouldSendDatagramToModemInDemoMode());
request = (DatagramDispatcherHandlerRequest) msg.obj;
@@ -251,14 +265,15 @@
synchronized (mLock) {
if (mIsDemoMode && (error == SatelliteManager.SATELLITE_RESULT_SUCCESS)) {
if (argument.skipCheckingSatelliteAligned) {
- logd("Satellite was already aligned. No need to check alignment again");
+ plogd("Satellite was already aligned. "
+ + "No need to check alignment again");
} else if (mDatagramController.waitForAligningToSatellite(mIsAligned)) {
- logd("Satellite is not aligned in demo mode, wait for the alignment.");
+ plogd("Satellite is not aligned in demo mode, wait for the alignment.");
startSatelliteAlignedTimer(request);
break;
}
}
- logd("EVENT_SEND_SATELLITE_DATAGRAM_DONE error: " + error
+ plogd("EVENT_SEND_SATELLITE_DATAGRAM_DONE error: " + error
+ ", mIsDemoMode=" + mIsDemoMode);
/*
@@ -269,7 +284,7 @@
* 3) All pending send requests have been aborted due to some error.
*/
if (!shouldProcessEventSendSatelliteDatagramDone(argument)) {
- logw("The message " + argument.datagramId + " was already processed");
+ plogw("The message " + argument.datagramId + " was already processed");
break;
}
@@ -337,7 +352,7 @@
break;
default:
- logw("DatagramDispatcherHandler: unexpected message code: " + msg.what);
+ plogw("DatagramDispatcherHandler: unexpected message code: " + msg.what);
break;
}
}
@@ -379,7 +394,7 @@
}
if (mDatagramController.needsWaitingForSatelliteConnected(datagramType)) {
- logd("sendDatagram: wait for satellite connected");
+ plogd("sendDatagram: wait for satellite connected");
mDatagramController.updateSendStatus(subId, datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_WAITING_TO_CONNECT,
getPendingDatagramCount(), SatelliteManager.SATELLITE_RESULT_SUCCESS);
@@ -394,7 +409,7 @@
getPendingDatagramCount(), SatelliteManager.SATELLITE_RESULT_SUCCESS);
sendRequestAsync(CMD_SEND_SATELLITE_DATAGRAM, datagramArgs, phone);
} else {
- logd("sendDatagram: mSendingDatagramInProgress="
+ plogd("sendDatagram: mSendingDatagramInProgress="
+ mSendingDatagramInProgress + ", isPollingInIdleState="
+ mDatagramController.isPollingInIdleState());
}
@@ -414,7 +429,7 @@
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
protected void setDemoMode(boolean isDemoMode) {
mIsDemoMode = isDemoMode;
- logd("setDemoMode: mIsDemoMode=" + mIsDemoMode);
+ plogd("setDemoMode: mIsDemoMode=" + mIsDemoMode);
}
/**
@@ -424,14 +439,14 @@
public void setDeviceAlignedWithSatellite(boolean isAligned) {
synchronized (mLock) {
mIsAligned = isAligned;
- logd("setDeviceAlignedWithSatellite: " + mIsAligned);
+ plogd("setDeviceAlignedWithSatellite: " + mIsAligned);
if (isAligned && mIsDemoMode) handleEventSatelliteAligned();
}
}
private void startSatelliteAlignedTimer(@NonNull DatagramDispatcherHandlerRequest request) {
if (isSatelliteAlignedTimerStarted()) {
- logd("Satellite aligned timer was already started");
+ plogd("Satellite aligned timer was already started");
return;
}
mSendSatelliteDatagramRequest = request;
@@ -450,7 +465,7 @@
stopSatelliteAlignedTimer();
if (mSendSatelliteDatagramRequest == null) {
- loge("handleEventSatelliteAligned: mSendSatelliteDatagramRequest is null");
+ ploge("handleEventSatelliteAligned: mSendSatelliteDatagramRequest is null");
} else {
SendSatelliteDatagramArgument argument =
(SendSatelliteDatagramArgument) mSendSatelliteDatagramRequest.argument;
@@ -460,14 +475,14 @@
mSendSatelliteDatagramRequest = null;
AsyncResult.forMessage(message, null, null);
message.sendToTarget();
- logd("handleEventSatelliteAligned: EVENT_SEND_SATELLITE_DATAGRAM_DONE");
+ plogd("handleEventSatelliteAligned: EVENT_SEND_SATELLITE_DATAGRAM_DONE");
}
}
}
private void handleEventSatelliteAlignedTimeout(
@NonNull DatagramDispatcherHandlerRequest request) {
- logd("handleEventSatelliteAlignedTimeout");
+ plogd("handleEventSatelliteAlignedTimeout");
mSendSatelliteDatagramRequest = null;
SatelliteManager.SatelliteException exception =
new SatelliteManager.SatelliteException(
@@ -491,15 +506,15 @@
*/
@GuardedBy("mLock")
private void sendPendingDatagrams() {
- logd("sendPendingDatagrams()");
+ plogd("sendPendingDatagrams()");
if (!mDatagramController.isPollingInIdleState()) {
// Datagram should be sent to satellite modem when modem is free.
- logd("sendPendingDatagrams: modem is receiving datagrams");
+ plogd("sendPendingDatagrams: modem is receiving datagrams");
return;
}
if (getPendingDatagramCount() <= 0) {
- logd("sendPendingDatagrams: no pending datagrams to send");
+ plogd("sendPendingDatagrams: no pending datagrams to send");
return;
}
@@ -515,7 +530,7 @@
SendSatelliteDatagramArgument datagramArg =
pendingDatagram.iterator().next().getValue();
if (mDatagramController.needsWaitingForSatelliteConnected(datagramArg.datagramType)) {
- logd("sendPendingDatagrams: wait for satellite connected");
+ plogd("sendPendingDatagrams: wait for satellite connected");
return;
}
@@ -542,7 +557,7 @@
if (pendingDatagramsMap.size() == 0) {
return;
}
- loge("sendErrorCodeAndCleanupPendingDatagrams: cleaning up resources");
+ ploge("sendErrorCodeAndCleanupPendingDatagrams: cleaning up resources");
// Send error code to all the pending datagrams
for (Entry<Long, SendSatelliteDatagramArgument> entry :
@@ -565,7 +580,7 @@
@GuardedBy("mLock")
private void abortSendingPendingDatagrams(int subId,
@SatelliteManager.SatelliteResult int errorCode) {
- logd("abortSendingPendingDatagrams()");
+ plogd("abortSendingPendingDatagrams()");
sendErrorCodeAndCleanupPendingDatagrams(mPendingEmergencyDatagramsMap, errorCode);
sendErrorCodeAndCleanupPendingDatagrams(mPendingNonEmergencyDatagramsMap, errorCode);
}
@@ -653,7 +668,7 @@
synchronized (mLock) {
if (state == SatelliteManager.SATELLITE_MODEM_STATE_OFF
|| state == SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE) {
- logd("onSatelliteModemStateChanged: cleaning up resources");
+ plogd("onSatelliteModemStateChanged: cleaning up resources");
cleanUpResources();
} else if (state == SatelliteManager.SATELLITE_MODEM_STATE_IDLE) {
sendPendingDatagrams();
@@ -669,7 +684,7 @@
@GuardedBy("mLock")
private void cleanUpResources() {
- logd("cleanUpResources");
+ plogd("cleanUpResources");
mSendingDatagramInProgress = false;
if (getPendingDatagramCount() > 0) {
mDatagramController.updateSendStatus(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
@@ -697,7 +712,7 @@
private void startDatagramWaitForConnectedStateTimer(
@NonNull SendSatelliteDatagramArgument datagramArgs) {
if (isDatagramWaitForConnectedStateTimerStarted()) {
- logd("DatagramWaitForConnectedStateTimer is already started");
+ plogd("DatagramWaitForConnectedStateTimer is already started");
return;
}
sendMessageDelayed(obtainMessage(
@@ -729,7 +744,7 @@
private void startWaitForDatagramSendingResponseTimer(
@NonNull SendSatelliteDatagramArgument argument) {
if (hasMessages(EVENT_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMED_OUT)) {
- logd("WaitForDatagramSendingResponseTimer was already started");
+ plogd("WaitForDatagramSendingResponseTimer was already started");
return;
}
long waitTime = SatelliteServiceUtils.isLastSosMessage(argument.datagramType)
@@ -747,7 +762,7 @@
private void handleEventDatagramWaitForConnectedStateTimedOut(
@NonNull SendSatelliteDatagramArgument argument) {
- logw("Timed out to wait for satellite connected before sending datagrams");
+ plogw("Timed out to wait for satellite connected before sending datagrams");
synchronized (mLock) {
// Update send status
mDatagramController.updateSendStatus(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
@@ -776,7 +791,7 @@
return mShouldSendDatagramToModemInDemoMode.get();
} catch (Resources.NotFoundException ex) {
- loge("shouldSendDatagramToModemInDemoMode: id= "
+ ploge("shouldSendDatagramToModemInDemoMode: id= "
+ R.bool.config_send_satellite_datagram_to_modem_in_demo_mode + ", ex=" + ex);
return false;
}
@@ -806,7 +821,7 @@
private void handleEventWaitForDatagramSendingResponseTimedOut(
@NonNull SendSatelliteDatagramArgument argument) {
synchronized (mLock) {
- logw("Timed out to wait for the response of the request to send the datagram "
+ plogw("Timed out to wait for the response of the request to send the datagram "
+ argument.datagramId);
// Ask vendor service to abort all datagram-sending requests
@@ -851,7 +866,7 @@
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
protected void setShouldSendDatagramToModemInDemoMode(
@Nullable Boolean shouldSendToModemInDemoMode) {
- logd("setShouldSendDatagramToModemInDemoMode(" + (shouldSendToModemInDemoMode == null
+ plogd("setShouldSendDatagramToModemInDemoMode(" + (shouldSendToModemInDemoMode == null
? "null" : shouldSendToModemInDemoMode) + ")");
if (shouldSendToModemInDemoMode == null) {
@@ -869,12 +884,12 @@
private void startWaitForSimulatedPollDatagramsDelayTimer(
@NonNull DatagramDispatcherHandlerRequest request) {
if (mIsDemoMode) {
- logd("startWaitForSimulatedPollDatagramsDelayTimer");
+ plogd("startWaitForSimulatedPollDatagramsDelayTimer");
sendMessageDelayed(
obtainMessage(EVENT_WAIT_FOR_SIMULATED_POLL_DATAGRAMS_DELAY_TIMED_OUT, request),
getDemoTimeoutDuration());
} else {
- logd("Should not start WaitForSimulatedPollDatagramsDelayTimer in non-demo mode");
+ plogd("Should not start WaitForSimulatedPollDatagramsDelayTimer in non-demo mode");
}
}
@@ -885,17 +900,17 @@
private void handleEventWaitForSimulatedPollDatagramsDelayTimedOut(
@NonNull SendSatelliteDatagramArgument argument) {
if (mIsDemoMode) {
- logd("handleEventWaitForSimulatedPollDatagramsDelayTimedOut");
+ plogd("handleEventWaitForSimulatedPollDatagramsDelayTimedOut");
mDatagramController.pushDemoModeDatagram(argument.datagramType, argument.datagram);
Consumer<Integer> internalCallback = new Consumer<Integer>() {
@Override
public void accept(Integer result) {
- logd("pollPendingSatelliteDatagrams result: " + result);
+ plogd("pollPendingSatelliteDatagrams result: " + result);
}
};
mDatagramController.pollPendingSatelliteDatagrams(argument.subId, internalCallback);
} else {
- logd("Unexpected EVENT_WAIT_FOR_SIMULATED_POLL_DATAGRAMS_DELAY_TIMED_OUT in "
+ plogd("Unexpected EVENT_WAIT_FOR_SIMULATED_POLL_DATAGRAMS_DELAY_TIMED_OUT in "
+ "non-demo mode");
}
}
@@ -916,7 +931,7 @@
} else {
mDemoTimeoutDuration = timeoutMillis;
}
- logd("setTimeoutDatagramDelayInDemoMode " + mDemoTimeoutDuration + " reset=" + reset);
+ plogd("setTimeoutDatagramDelayInDemoMode " + mDemoTimeoutDuration + " reset=" + reset);
}
private static void logd(@NonNull String log) {
@@ -928,4 +943,38 @@
}
private static void logw(@NonNull String log) { Rlog.w(TAG, log); }
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void plogw(@NonNull String log) {
+ Rlog.w(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.warn(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
}
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java b/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java
index 21e4318..ea75f03 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java
@@ -37,6 +37,8 @@
import android.os.Message;
import android.os.RemoteException;
import android.provider.Telephony;
+import android.telephony.DropBoxManagerLoggerBackend;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.satellite.ISatelliteDatagramCallback;
@@ -50,6 +52,7 @@
import com.android.internal.telephony.IIntegerConsumer;
import com.android.internal.telephony.IVoidConsumer;
import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats;
import com.android.internal.telephony.satellite.metrics.SessionMetricsStats;
@@ -83,6 +86,7 @@
@NonNull private final ControllerMetricsStats mControllerMetricsStats;
@NonNull private final SessionMetricsStats mSessionMetricsStats;
@NonNull private final Looper mLooper;
+ @NonNull private final FeatureFlags mFeatureFlags;
private long mDatagramTransferStartTime = 0;
private boolean mIsDemoMode = false;
@@ -93,6 +97,8 @@
@Nullable
private DatagramReceiverHandlerRequest mPendingPollSatelliteDatagramsRequest = null;
private final Object mLock = new Object();
+ @Nullable
+ private PersistentLogger mPersistentLogger = null;
/**
* Map key: subId, value: SatelliteDatagramListenerHandler to notify registrants.
@@ -112,13 +118,15 @@
* Create the DatagramReceiver singleton instance.
* @param context The Context to use to create the DatagramReceiver.
* @param looper The looper for the handler.
+ * @param featureFlags The telephony feature flags.
* @param datagramController DatagramController which is used to update datagram transfer state.
* @return The singleton instance of DatagramReceiver.
*/
public static DatagramReceiver make(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull DatagramController datagramController) {
if (sInstance == null) {
- sInstance = new DatagramReceiver(context, looper, datagramController);
+ sInstance = new DatagramReceiver(context, looper, featureFlags, datagramController);
}
return sInstance;
}
@@ -129,25 +137,31 @@
*
* @param context The Context for the DatagramReceiver.
* @param looper The looper for the handler.
+ * @param featureFlags The telephony feature flags.
* @param datagramController DatagramController which is used to update datagram transfer state.
*/
@VisibleForTesting
protected DatagramReceiver(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull DatagramController datagramController) {
super(looper);
mContext = context;
mLooper = looper;
+ mFeatureFlags = featureFlags;
mContentResolver = context.getContentResolver();
mDatagramController = datagramController;
mControllerMetricsStats = ControllerMetricsStats.getInstance();
mSessionMetricsStats = SessionMetricsStats.getInstance();
-
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
try {
mSharedPreferences =
mContext.getSharedPreferences(SatelliteController.SATELLITE_SHARED_PREF,
Context.MODE_PRIVATE);
} catch (Exception e) {
- loge("Cannot get default shared preferences: " + e);
+ ploge("Cannot get default shared preferences: " + e);
}
}
@@ -457,7 +471,7 @@
}
}
- logd("EVENT_POLL_PENDING_SATELLITE_DATAGRAMS_DONE error: " + error);
+ plogd("EVENT_POLL_PENDING_SATELLITE_DATAGRAMS_DONE error: " + error);
if (error != SatelliteManager.SATELLITE_RESULT_SUCCESS) {
mDatagramController.updateReceiveStatus(request.subId,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED,
@@ -485,7 +499,7 @@
break;
default:
- logw("DatagramDispatcherHandler: unexpected message code: " + msg.what);
+ plogw("DatagramDispatcherHandler: unexpected message code: " + msg.what);
break;
}
}
@@ -558,7 +572,7 @@
public void pollPendingSatelliteDatagrams(int subId, @NonNull Consumer<Integer> callback) {
if (!mDatagramController.isPollingInIdleState()) {
// Poll request should be sent to satellite modem only when it is free.
- logd("pollPendingSatelliteDatagrams: satellite modem is busy receiving datagrams.");
+ plogd("pollPendingSatelliteDatagrams: satellite modem is busy receiving datagrams.");
callback.accept(SatelliteManager.SATELLITE_RESULT_MODEM_BUSY);
return;
}
@@ -570,7 +584,7 @@
if (isDatagramWaitForConnectedStateTimerStarted()) {
stopDatagramWaitForConnectedStateTimer();
if (mPendingPollSatelliteDatagramsRequest == null) {
- loge("handleSatelliteConnectedEvent: mPendingPollSatelliteDatagramsRequest is"
+ ploge("handleSatelliteConnectedEvent: mPendingPollSatelliteDatagramsRequest is"
+ " null");
return;
}
@@ -588,7 +602,7 @@
@NonNull Consumer<Integer> callback) {
if (!mDatagramController.isSendingInIdleState()) {
// Poll request should be sent to satellite modem only when it is free.
- logd("pollPendingSatelliteDatagramsInternal: satellite modem is busy sending "
+ plogd("pollPendingSatelliteDatagramsInternal: satellite modem is busy sending "
+ "datagrams.");
callback.accept(SatelliteManager.SATELLITE_RESULT_MODEM_BUSY);
return;
@@ -596,7 +610,7 @@
if (mDatagramController.needsWaitingForSatelliteConnected(
SatelliteManager.DATAGRAM_TYPE_UNKNOWN)) {
- logd("pollPendingSatelliteDatagramsInternal: wait for satellite connected");
+ plogd("pollPendingSatelliteDatagramsInternal: wait for satellite connected");
synchronized (mLock) {
mPendingPollSatelliteDatagramsRequest = new DatagramReceiverHandlerRequest(
callback, SatelliteServiceUtils.getPhone(), subId);
@@ -644,7 +658,7 @@
synchronized (mLock) {
if (state == SatelliteManager.SATELLITE_MODEM_STATE_OFF
|| state == SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE) {
- logd("onSatelliteModemStateChanged: cleaning up resources");
+ plogd("onSatelliteModemStateChanged: cleaning up resources");
cleanUpResources();
} else if (state == SATELLITE_MODEM_STATE_CONNECTED) {
handleSatelliteConnectedEvent();
@@ -657,7 +671,7 @@
if (isSatelliteAlignedTimerStarted()) {
stopSatelliteAlignedTimer();
if (mDemoPollPendingSatelliteDatagramsRequest == null) {
- loge("Satellite aligned timer was started "
+ ploge("Satellite aligned timer was started "
+ "but mDemoPollPendingSatelliteDatagramsRequest is null");
} else {
Consumer<Integer> callback =
@@ -755,14 +769,14 @@
public void setDeviceAlignedWithSatellite(boolean isAligned) {
synchronized (mLock) {
mIsAligned = isAligned;
- logd("setDeviceAlignedWithSatellite: " + mIsAligned);
+ plogd("setDeviceAlignedWithSatellite: " + mIsAligned);
if (isAligned && mIsDemoMode) handleEventSatelliteAligned();
}
}
private void startSatelliteAlignedTimer(DatagramReceiverHandlerRequest request) {
if (isSatelliteAlignedTimerStarted()) {
- logd("Satellite aligned timer was already started");
+ plogd("Satellite aligned timer was already started");
return;
}
mDemoPollPendingSatelliteDatagramsRequest = request;
@@ -781,7 +795,7 @@
stopSatelliteAlignedTimer();
if (mDemoPollPendingSatelliteDatagramsRequest == null) {
- loge("handleSatelliteAlignedTimer: mDemoPollPendingSatelliteDatagramsRequest "
+ ploge("handleSatelliteAlignedTimer: mDemoPollPendingSatelliteDatagramsRequest "
+ "is null");
} else {
Message message = obtainMessage(
@@ -813,7 +827,7 @@
private void startDatagramWaitForConnectedStateTimer() {
if (isDatagramWaitForConnectedStateTimerStarted()) {
- logd("DatagramWaitForConnectedStateTimer is already started");
+ plogd("DatagramWaitForConnectedStateTimer is already started");
return;
}
sendMessageDelayed(obtainMessage(
@@ -833,12 +847,12 @@
private void handleEventDatagramWaitForConnectedStateTimedOut() {
synchronized (mLock) {
if (mPendingPollSatelliteDatagramsRequest == null) {
- logw("handleEventDatagramWaitForConnectedStateTimedOut: "
+ plogw("handleEventDatagramWaitForConnectedStateTimedOut: "
+ "mPendingPollSatelliteDatagramsRequest is null");
return;
}
- logw("Timed out to wait for satellite connected before polling datagrams");
+ plogw("Timed out to wait for satellite connected before polling datagrams");
mDatagramController.updateReceiveStatus(mPendingPollSatelliteDatagramsRequest.subId,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED,
mDatagramController.getReceivePendingCount(),
@@ -877,4 +891,38 @@
private static void logw(@NonNull String log) {
Rlog.w(TAG, log);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void plogw(@NonNull String log) {
+ Rlog.w(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.warn(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
}
diff --git a/src/java/com/android/internal/telephony/satellite/PointingAppController.java b/src/java/com/android/internal/telephony/satellite/PointingAppController.java
index d6b40ca..06281c7 100644
--- a/src/java/com/android/internal/telephony/satellite/PointingAppController.java
+++ b/src/java/com/android/internal/telephony/satellite/PointingAppController.java
@@ -34,6 +34,8 @@
import android.os.Message;
import android.os.RemoteException;
import android.os.SystemProperties;
+import android.telephony.DropBoxManagerLoggerBackend;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.satellite.ISatelliteTransmissionUpdateCallback;
import android.telephony.satellite.PointingInfo;
@@ -42,6 +44,7 @@
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.FeatureFlags;
import java.util.ArrayList;
import java.util.Arrays;
@@ -60,6 +63,7 @@
@NonNull
private static PointingAppController sInstance;
@NonNull private final Context mContext;
+ @NonNull private final FeatureFlags mFeatureFlags;
private boolean mStartedSatelliteTransmissionUpdates;
private boolean mLastNeedFullScreenPointingUI;
private boolean mLastIsDemoMode;
@@ -74,6 +78,7 @@
*/
private final ConcurrentHashMap<Integer, SatelliteTransmissionUpdateHandler>
mSatelliteTransmissionUpdateHandlers = new ConcurrentHashMap<>();
+ @Nullable private PersistentLogger mPersistentLogger = null;
/**
* @return The singleton instance of PointingAppController.
@@ -88,11 +93,13 @@
/**
* Create the PointingAppController singleton instance.
* @param context The Context to use to create the PointingAppController.
+ * @param featureFlags The telephony feature flags.
* @return The singleton instance of PointingAppController.
*/
- public static PointingAppController make(@NonNull Context context) {
+ public static PointingAppController make(@NonNull Context context,
+ @NonNull FeatureFlags featureFlags) {
if (sInstance == null) {
- sInstance = new PointingAppController(context);
+ sInstance = new PointingAppController(context, featureFlags);
}
return sInstance;
}
@@ -103,14 +110,20 @@
* @param context The Context for the PointingUIController.
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
- public PointingAppController(@NonNull Context context) {
+ public PointingAppController(@NonNull Context context,
+ @NonNull FeatureFlags featureFlags) {
mContext = context;
+ mFeatureFlags = featureFlags;
mStartedSatelliteTransmissionUpdates = false;
mLastNeedFullScreenPointingUI = false;
mLastIsDemoMode = false;
mLastIsEmergency = false;
mListenerForPointingUIRegistered = false;
mActivityManager = mContext.getSystemService(ActivityManager.class);
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
}
/**
@@ -147,7 +160,7 @@
if (callerPackages != null) {
if (Arrays.stream(callerPackages).anyMatch(pointingUiPackage::contains)) {
- logd("Restarting pointingUI");
+ plogd("Restarting pointingUI");
startPointingUI(mLastNeedFullScreenPointingUI, mLastIsDemoMode,
mLastIsEmergency);
}
@@ -331,7 +344,7 @@
*/
public void startSatelliteTransmissionUpdates(@NonNull Message message) {
if (mStartedSatelliteTransmissionUpdates) {
- logd("startSatelliteTransmissionUpdates: already started");
+ plogd("startSatelliteTransmissionUpdates: already started");
AsyncResult.forMessage(message, null, new SatelliteManager.SatelliteException(
SatelliteManager.SATELLITE_RESULT_SUCCESS));
message.sendToTarget();
@@ -359,7 +372,7 @@
boolean isEmergency) {
String packageName = getPointingUiPackageName();
if (TextUtils.isEmpty(packageName)) {
- logd("startPointingUI: config_pointing_ui_package is not set. Ignore the request");
+ plogd("startPointingUI: config_pointing_ui_package is not set. Ignore the request");
return;
}
@@ -373,10 +386,10 @@
launchIntent = mContext.getPackageManager().getLaunchIntentForPackage(packageName);
}
if (launchIntent == null) {
- loge("startPointingUI: launchIntent is null");
+ ploge("startPointingUI: launchIntent is null");
return;
}
- logd("startPointingUI: needFullScreenPointingUI: " + needFullScreenPointingUI
+ plogd("startPointingUI: needFullScreenPointingUI: " + needFullScreenPointingUI
+ ", isDemoMode: " + isDemoMode + ", isEmergency: " + isEmergency);
launchIntent.putExtra("needFullScreen", needFullScreenPointingUI);
launchIntent.putExtra("isDemoMode", isDemoMode);
@@ -393,7 +406,7 @@
mLastIsEmergency = isEmergency;
mContext.startActivity(launchIntent);
} catch (ActivityNotFoundException ex) {
- loge("startPointingUI: Pointing UI app activity is not found, ex=" + ex);
+ ploge("startPointingUI: Pointing UI app activity is not found, ex=" + ex);
}
}
@@ -422,7 +435,7 @@
request);
msg.sendToTarget();
} else {
- loge("SatelliteTransmissionUpdateHandler not found for subId: " + subId);
+ ploge("SatelliteTransmissionUpdateHandler not found for subId: " + subId);
}
}
@@ -441,7 +454,7 @@
request);
msg.sendToTarget();
} else {
- loge(" SatelliteTransmissionUpdateHandler not found for subId: " + subId);
+ ploge(" SatelliteTransmissionUpdateHandler not found for subId: " + subId);
}
}
@@ -456,12 +469,12 @@
boolean setSatellitePointingUiClassName(
@Nullable String packageName, @Nullable String className) {
if (!isMockModemAllowed()) {
- loge("setSatellitePointingUiClassName: modifying satellite pointing UI package and "
+ ploge("setSatellitePointingUiClassName: modifying satellite pointing UI package and "
+ "class name is not allowed");
return false;
}
- logd("setSatellitePointingUiClassName: config_pointing_ui_package is updated, new "
+ plogd("setSatellitePointingUiClassName: config_pointing_ui_package is updated, new "
+ "packageName=" + packageName
+ ", config_pointing_ui_class new className=" + className);
@@ -507,6 +520,33 @@
private static void loge(@NonNull String log) {
Rlog.e(TAG, log);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
/**
* TODO: The following needs to be added in this class:
* - check if pointingUI crashes - then restart it
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 3a63ac3..76dc8be 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -83,7 +83,9 @@
import android.provider.Settings;
import android.provider.Telephony;
import android.telephony.CarrierConfigManager;
+import android.telephony.DropBoxManagerLoggerBackend;
import android.telephony.NetworkRegistrationInfo;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
@@ -397,6 +399,8 @@
private int mDelayInSendingEventDisplayEmergencyMessage = 0;
@NonNull private SharedPreferences mSharedPreferences = null;
+ @Nullable private PersistentLogger mPersistentLogger = null;
+
/**
* Key : Subscription ID, Value: {@code true} if the EntitlementStatus is enabled,
* {@code false} otherwise.
@@ -472,6 +476,11 @@
@NonNull Context context, @NonNull Looper looper, @NonNull FeatureFlags featureFlags) {
super(looper);
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
+
mContext = context;
mFeatureFlags = featureFlags;
Phone phone = SatelliteServiceUtils.getPhone();
@@ -479,11 +488,12 @@
mDSM = phone.getDeviceStateMonitor();
// Create the SatelliteModemInterface singleton, which is used to manage connections
// to the satellite service and HAL interface.
- mSatelliteModemInterface = SatelliteModemInterface.make(mContext, this);
+ mSatelliteModemInterface = SatelliteModemInterface.make(
+ mContext, this, mFeatureFlags);
// Create the PointingUIController singleton,
// which is used to manage interactions with PointingUI app.
- mPointingAppController = PointingAppController.make(mContext);
+ mPointingAppController = PointingAppController.make(mContext, mFeatureFlags);
// Create the SatelliteControllerMetrics to report controller metrics
// should be called before making DatagramController
@@ -496,7 +506,8 @@
// Create the DatagramController singleton,
// which is used to send and receive satellite datagrams.
- mDatagramController = DatagramController.make(mContext, looper, mPointingAppController);
+ mDatagramController = DatagramController.make(
+ mContext, looper, mFeatureFlags, mPointingAppController);
mCi.registerForRadioStateChanged(this, EVENT_RADIO_STATE_CHANGED, null);
mIsRadioOn = phone.isRadioOn();
@@ -613,10 +624,10 @@
String satelliteModeRadios = Settings.Global.getString(mContentResolver,
Settings.Global.SATELLITE_MODE_RADIOS);
if (satelliteModeRadios == null) {
- loge("initializeSatelliteModeRadios: satelliteModeRadios is null");
+ ploge("initializeSatelliteModeRadios: satelliteModeRadios is null");
return;
}
- logd("Radios To be checked when satellite is on: " + satelliteModeRadios);
+ plogd("Radios To be checked when satellite is on: " + satelliteModeRadios);
if (satelliteModeRadios.contains(Settings.Global.RADIO_BLUETOOTH)) {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -653,7 +664,7 @@
// Unregister receiver before registering it.
mContext.unregisterReceiver(mBTWifiNFCSateReceiver);
} catch (IllegalArgumentException e) {
- logd("initializeSatelliteModeRadios: unregisterReceiver, e=" + e);
+ plogd("initializeSatelliteModeRadios: unregisterReceiver, e=" + e);
}
mContext.registerReceiver(mBTWifiNFCSateReceiver, radioStateIntentFilter);
@@ -674,12 +685,12 @@
}
}
- logd("mDisableBTOnSatelliteEnabled: " + mDisableBTOnSatelliteEnabled
+ plogd("mDisableBTOnSatelliteEnabled: " + mDisableBTOnSatelliteEnabled
+ " mDisableNFCOnSatelliteEnabled: " + mDisableNFCOnSatelliteEnabled
+ " mDisableWifiOnSatelliteEnabled: " + mDisableWifiOnSatelliteEnabled
+ " mDisableUWBOnSatelliteEnabled: " + mDisableUWBOnSatelliteEnabled);
- logd("mBTStateEnabled: " + mBTStateEnabled
+ plogd("mBTStateEnabled: " + mBTStateEnabled
+ " mNfcStateEnabled: " + mNfcStateEnabled
+ " mWifiStateEnabled: " + mWifiStateEnabled
+ " mUwbStateEnabled: " + mUwbStateEnabled);
@@ -707,8 +718,8 @@
@Override
public void onStateChanged(int state, int reason) {
- logd("UwbAdapterStateCallback#onStateChanged() called, state = " + toString(state));
- logd("Adapter state changed reason " + String.valueOf(reason));
+ plogd("UwbAdapterStateCallback#onStateChanged() called, state = " + toString(state));
+ plogd("Adapter state changed reason " + String.valueOf(reason));
synchronized (mRadioStateLock) {
if (state == UwbManager.AdapterStateCallback.STATE_DISABLED) {
mUwbStateEnabled = false;
@@ -716,7 +727,7 @@
} else {
mUwbStateEnabled = true;
}
- logd("mUwbStateEnabled: " + mUwbStateEnabled);
+ plogd("mUwbStateEnabled: " + mUwbStateEnabled);
}
}
}
@@ -726,7 +737,7 @@
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action == null) {
- logd("BTWifiNFCStateReceiver NULL action for intent " + intent);
+ plogd("BTWifiNFCStateReceiver NULL action for intent " + intent);
return;
}
@@ -743,7 +754,7 @@
mBTStateEnabled = true;
}
if (currentBTStateEnabled != mBTStateEnabled) {
- logd("mBTStateEnabled=" + mBTStateEnabled);
+ plogd("mBTStateEnabled=" + mBTStateEnabled);
}
}
break;
@@ -759,7 +770,7 @@
evaluateToSendSatelliteEnabledSuccess();
}
if (currentNfcStateEnabled != mNfcStateEnabled) {
- logd("mNfcStateEnabled=" + mNfcStateEnabled);
+ plogd("mNfcStateEnabled=" + mNfcStateEnabled);
}
}
break;
@@ -776,7 +787,7 @@
evaluateToSendSatelliteEnabledSuccess();
}
if (currentWifiStateEnabled != mWifiStateEnabled) {
- logd("mWifiStateEnabled=" + mWifiStateEnabled);
+ plogd("mWifiStateEnabled=" + mWifiStateEnabled);
}
}
break;
@@ -965,14 +976,14 @@
RequestSatelliteEnabledArgument argument =
(RequestSatelliteEnabledArgument) request.argument;
int error = SatelliteServiceUtils.getSatelliteError(ar, "setSatelliteEnabled");
- logd("EVENT_SET_SATELLITE_ENABLED_DONE = " + error);
+ plogd("EVENT_SET_SATELLITE_ENABLED_DONE = " + error);
/*
* The timer to wait for EVENT_SET_SATELLITE_ENABLED_DONE might have expired and
* thus the request resources might have been cleaned up.
*/
if (!shouldProcessEventSetSatelliteEnabledDone(argument)) {
- logw("The request ID=" + argument.requestId + ", enableSatellite="
+ plogw("The request ID=" + argument.requestId + ", enableSatellite="
+ argument.enableSatellite + " was already processed");
return;
}
@@ -1010,7 +1021,7 @@
SATELLITE_RESULT_SUCCESS,
argument.callback);
} else {
- logd("Wait for satellite modem off before updating satellite"
+ plogd("Wait for satellite modem off before updating satellite"
+ " modem state");
}
mWaitingForDisableSatelliteModemResponse = false;
@@ -1064,6 +1075,8 @@
mControllerMetricsStats.onSatelliteDisabled();
+ tryFlushPersistedLogs(mIsEmergency);
+
synchronized (mIsSatelliteEnabledLock) {
mWaitingForDisableSatelliteModemResponse = false;
}
@@ -1091,11 +1104,11 @@
Bundle bundle = new Bundle();
if (error == SATELLITE_RESULT_SUCCESS) {
if (ar.result == null) {
- loge("isSatelliteEnabled: result is null");
+ ploge("isSatelliteEnabled: result is null");
error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
} else {
boolean enabled = ((int[]) ar.result)[0] == 1;
- if (DBG) logd("isSatelliteEnabled: " + enabled);
+ if (DBG) plogd("isSatelliteEnabled: " + enabled);
bundle.putBoolean(SatelliteManager.KEY_SATELLITE_ENABLED, enabled);
updateSatelliteEnabledState(enabled, "EVENT_IS_SATELLITE_ENABLED_DONE");
}
@@ -1120,11 +1133,11 @@
Bundle bundle = new Bundle();
if (error == SATELLITE_RESULT_SUCCESS) {
if (ar.result == null) {
- loge("isSatelliteSupported: result is null");
+ ploge("isSatelliteSupported: result is null");
error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
} else {
boolean supported = (boolean) ar.result;
- logd("isSatelliteSupported: " + supported);
+ plogd("isSatelliteSupported: " + supported);
bundle.putBoolean(SatelliteManager.KEY_SATELLITE_SUPPORTED, supported);
updateSatelliteSupportedStateWhenSatelliteServiceConnected(supported);
}
@@ -1148,14 +1161,14 @@
Bundle bundle = new Bundle();
if (error == SATELLITE_RESULT_SUCCESS) {
if (ar.result == null) {
- loge("getSatelliteCapabilities: result is null");
+ ploge("getSatelliteCapabilities: result is null");
error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
} else {
SatelliteCapabilities capabilities = (SatelliteCapabilities) ar.result;
synchronized (mNeedsSatellitePointingLock) {
mNeedsSatellitePointing = capabilities.isPointingRequired();
}
- if (DBG) logd("getSatelliteCapabilities: " + capabilities);
+ if (DBG) plogd("getSatelliteCapabilities: " + capabilities);
bundle.putParcelable(SatelliteManager.KEY_SATELLITE_CAPABILITIES,
capabilities);
synchronized (mSatelliteCapabilitiesLock) {
@@ -1183,13 +1196,13 @@
Bundle bundle = new Bundle();
if (error == SATELLITE_RESULT_SUCCESS) {
if (ar.result == null) {
- loge("requestTimeForNextSatelliteVisibility: result is null");
+ ploge("requestTimeForNextSatelliteVisibility: result is null");
error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
} else {
int nextVisibilityDuration = ((int[]) ar.result)[0];
if (DBG) {
- logd("requestTimeForNextSatelliteVisibility: " +
- nextVisibilityDuration);
+ plogd("requestTimeForNextSatelliteVisibility: "
+ + nextVisibilityDuration);
}
bundle.putInt(SatelliteManager.KEY_SATELLITE_NEXT_VISIBILITY,
nextVisibilityDuration);
@@ -1215,7 +1228,7 @@
@Override
protected void onReceiveResult(
int resultCode, Bundle resultData) {
- logd("onRadioStateChanged.requestIsSatelliteSupported: "
+ plogd("onRadioStateChanged.requestIsSatelliteSupported: "
+ "resultCode=" + resultCode
+ ", resultData=" + resultData);
}
@@ -1243,18 +1256,18 @@
case EVENT_SATELLITE_PROVISION_STATE_CHANGED:
ar = (AsyncResult) msg.obj;
if (ar.result == null) {
- loge("EVENT_SATELLITE_PROVISION_STATE_CHANGED: result is null");
+ ploge("EVENT_SATELLITE_PROVISION_STATE_CHANGED: result is null");
} else {
handleEventSatelliteProvisionStateChanged((boolean) ar.result);
}
break;
case EVENT_PENDING_DATAGRAMS:
- logd("Received EVENT_PENDING_DATAGRAMS");
+ plogd("Received EVENT_PENDING_DATAGRAMS");
IIntegerConsumer internalCallback = new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- logd("pollPendingSatelliteDatagram result: " + result);
+ plogd("pollPendingSatelliteDatagram result: " + result);
}
};
pollPendingDatagrams(
@@ -1264,7 +1277,7 @@
case EVENT_SATELLITE_MODEM_STATE_CHANGED:
ar = (AsyncResult) msg.obj;
if (ar.result == null) {
- loge("EVENT_SATELLITE_MODEM_STATE_CHANGED: result is null");
+ ploge("EVENT_SATELLITE_MODEM_STATE_CHANGED: result is null");
} else {
handleEventSatelliteModemStateChanged((int) ar.result);
}
@@ -1275,7 +1288,7 @@
break;
case CMD_EVALUATE_SATELLITE_ATTACH_RESTRICTION_CHANGE: {
- logd("CMD_EVALUATE_SATELLITE_ATTACH_RESTRICTION_CHANGE");
+ plogd("CMD_EVALUATE_SATELLITE_ATTACH_RESTRICTION_CHANGE");
request = (SatelliteControllerHandlerRequest) msg.obj;
handleRequestSatelliteAttachRestrictionForCarrierCmd(request);
break;
@@ -1306,7 +1319,7 @@
}
case CMD_REQUEST_NTN_SIGNAL_STRENGTH: {
- logd("CMD_REQUEST_NTN_SIGNAL_STRENGTH");
+ plogd("CMD_REQUEST_NTN_SIGNAL_STRENGTH");
request = (SatelliteControllerHandlerRequest) msg.obj;
onCompleted = obtainMessage(EVENT_REQUEST_NTN_SIGNAL_STRENGTH_DONE, request);
mSatelliteModemInterface.requestNtnSignalStrength(onCompleted);
@@ -1335,7 +1348,7 @@
NTN_SIGNAL_STRENGTH_NONE);
}
}
- loge("EVENT_REQUEST_NTN_SIGNAL_STRENGTH_DONE: ntnSignalStrength is null");
+ ploge("EVENT_REQUEST_NTN_SIGNAL_STRENGTH_DONE: ntnSignalStrength is null");
result.send(SatelliteManager.SATELLITE_RESULT_REQUEST_FAILED, null);
}
} else {
@@ -1352,7 +1365,7 @@
case EVENT_NTN_SIGNAL_STRENGTH_CHANGED: {
ar = (AsyncResult) msg.obj;
if (ar.result == null) {
- loge("EVENT_NTN_SIGNAL_STRENGTH_CHANGED: result is null");
+ ploge("EVENT_NTN_SIGNAL_STRENGTH_CHANGED: result is null");
} else {
handleEventNtnSignalStrengthChanged((NtnSignalStrength) ar.result);
}
@@ -1363,7 +1376,7 @@
ar = (AsyncResult) msg.obj;
boolean shouldReport = (boolean) ar.result;
if (DBG) {
- logd("CMD_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING: shouldReport=" + shouldReport);
+ plogd("CMD_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING: shouldReport=" + shouldReport);
}
handleCmdUpdateNtnSignalStrengthReporting(shouldReport);
break;
@@ -1400,7 +1413,7 @@
case EVENT_SATELLITE_CAPABILITIES_CHANGED: {
ar = (AsyncResult) msg.obj;
if (ar.result == null) {
- loge("EVENT_SATELLITE_CAPABILITIES_CHANGED: result is null");
+ ploge("EVENT_SATELLITE_CAPABILITIES_CHANGED: result is null");
} else {
handleEventSatelliteCapabilitiesChanged((SatelliteCapabilities) ar.result);
}
@@ -1410,7 +1423,7 @@
case EVENT_SATELLITE_SUPPORTED_STATE_CHANGED: {
ar = (AsyncResult) msg.obj;
if (ar.result == null) {
- loge("EVENT_SATELLITE_SUPPORTED_STATE_CHANGED: result is null");
+ ploge("EVENT_SATELLITE_SUPPORTED_STATE_CHANGED: result is null");
} else {
handleEventSatelliteSupportedStateChanged((boolean) ar.result);
}
@@ -1445,7 +1458,7 @@
processNewCarrierConfigData(subId);
}
} else {
- loge("updateSupportedSatelliteServicesForActiveSubscriptions: "
+ ploge("updateSupportedSatelliteServicesForActiveSubscriptions: "
+ "activeSubIds is null");
}
}
@@ -1470,7 +1483,7 @@
*/
public void requestSatelliteEnabled(int subId, boolean enableSatellite, boolean enableDemoMode,
boolean isEmergency, @NonNull IIntegerConsumer callback) {
- logd("requestSatelliteEnabled subId: " + subId + " enableSatellite: " + enableSatellite
+ plogd("requestSatelliteEnabled subId: " + subId + " enableSatellite: " + enableSatellite
+ " enableDemoMode: " + enableDemoMode + " isEmergency: " + isEmergency);
Consumer<Integer> result = FunctionalUtils.ignoreRemoteException(callback::accept);
int error = evaluateOemSatelliteRequestAllowed(true);
@@ -1481,7 +1494,7 @@
if (enableSatellite) {
if (!mIsRadioOn) {
- loge("Radio is not on, can not enable satellite");
+ ploge("Radio is not on, can not enable satellite");
sendErrorAndReportSessionMetrics(
SatelliteManager.SATELLITE_RESULT_INVALID_MODEM_STATE, result);
return;
@@ -1495,13 +1508,13 @@
if (mIsSatelliteEnabled != null) {
if (mIsSatelliteEnabled == enableSatellite) {
if (enableDemoMode != mIsDemoModeEnabled) {
- loge("Received invalid demo mode while satellite session is enabled"
+ ploge("Received invalid demo mode while satellite session is enabled"
+ " enableDemoMode = " + enableDemoMode);
sendErrorAndReportSessionMetrics(
SatelliteManager.SATELLITE_RESULT_INVALID_ARGUMENTS, result);
return;
} else {
- logd("Enable request matches with current state"
+ plogd("Enable request matches with current state"
+ " enableSatellite = " + enableSatellite);
sendErrorAndReportSessionMetrics(
SatelliteManager.SATELLITE_RESULT_SUCCESS, result);
@@ -1528,14 +1541,14 @@
if (mSatelliteEnabledRequest == null) {
mSatelliteEnabledRequest = request;
} else if (mSatelliteEnabledRequest.enableSatellite == request.enableSatellite) {
- logd("requestSatelliteEnabled enableSatellite: " + enableSatellite
+ plogd("requestSatelliteEnabled enableSatellite: " + enableSatellite
+ " is already in progress.");
sendErrorAndReportSessionMetrics(
SatelliteManager.SATELLITE_RESULT_REQUEST_IN_PROGRESS, result);
return;
} else if (mSatelliteEnabledRequest.enableSatellite == false
&& request.enableSatellite == true) {
- logd("requestSatelliteEnabled enableSatellite: " + enableSatellite + " cannot be "
+ plogd("requestSatelliteEnabled enableSatellite: " + enableSatellite + " cannot be "
+ "processed. Disable satellite is already in progress.");
sendErrorAndReportSessionMetrics(
SatelliteManager.SATELLITE_RESULT_ERROR, result);
@@ -1581,7 +1594,7 @@
*/
public boolean isSatelliteEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("isSatelliteEnabled: oemEnabledSatelliteFlag is disabled");
+ plogd("isSatelliteEnabled: oemEnabledSatelliteFlag is disabled");
return false;
}
if (mIsSatelliteEnabled == null) return false;
@@ -1595,7 +1608,7 @@
*/
public boolean isSatelliteBeingEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("isSatelliteBeingEnabled: oemEnabledSatelliteFlag is disabled");
+ plogd("isSatelliteBeingEnabled: oemEnabledSatelliteFlag is disabled");
return false;
}
@@ -1632,7 +1645,7 @@
*/
public boolean isDemoModeEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("isDemoModeEnabled: oemEnabledSatelliteFlag is disabled");
+ plogd("isDemoModeEnabled: oemEnabledSatelliteFlag is disabled");
return false;
}
return mIsDemoModeEnabled;
@@ -1647,7 +1660,7 @@
*/
public void requestIsSatelliteSupported(int subId, @NonNull ResultReceiver result) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("requestIsSatelliteSupported: oemEnabledSatelliteFlag is disabled");
+ plogd("requestIsSatelliteSupported: oemEnabledSatelliteFlag is disabled");
result.send(SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED, null);
return;
}
@@ -1860,7 +1873,7 @@
public void unregisterForSatelliteProvisionStateChanged(
int subId, @NonNull ISatelliteProvisionStateCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("unregisterForSatelliteProvisionStateChanged: "
+ plogd("unregisterForSatelliteProvisionStateChanged: "
+ "oemEnabledSatelliteFlag is disabled");
return;
}
@@ -1906,13 +1919,13 @@
@SatelliteManager.SatelliteResult public int registerForSatelliteModemStateChanged(int subId,
@NonNull ISatelliteModemStateCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("registerForSatelliteModemStateChanged: oemEnabledSatelliteFlag is disabled");
+ plogd("registerForSatelliteModemStateChanged: oemEnabledSatelliteFlag is disabled");
return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED;
}
if (mSatelliteSessionController != null) {
mSatelliteSessionController.registerForSatelliteModemStateChanged(callback);
} else {
- loge("registerForSatelliteModemStateChanged: mSatelliteSessionController"
+ ploge("registerForSatelliteModemStateChanged: mSatelliteSessionController"
+ " is not initialized yet");
return SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
}
@@ -1930,13 +1943,13 @@
public void unregisterForModemStateChanged(int subId,
@NonNull ISatelliteModemStateCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("unregisterForModemStateChanged: oemEnabledSatelliteFlag is disabled");
+ plogd("unregisterForModemStateChanged: oemEnabledSatelliteFlag is disabled");
return;
}
if (mSatelliteSessionController != null) {
mSatelliteSessionController.unregisterForSatelliteModemStateChanged(callback);
} else {
- loge("unregisterForModemStateChanged: mSatelliteSessionController"
+ ploge("unregisterForModemStateChanged: mSatelliteSessionController"
+ " is not initialized yet");
}
}
@@ -1952,13 +1965,13 @@
@SatelliteManager.SatelliteResult public int registerForIncomingDatagram(int subId,
@NonNull ISatelliteDatagramCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("registerForIncomingDatagram: oemEnabledSatelliteFlag is disabled");
+ plogd("registerForIncomingDatagram: oemEnabledSatelliteFlag is disabled");
return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED;
}
if (!mSatelliteModemInterface.isSatelliteServiceSupported()) {
return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED;
}
- logd("registerForIncomingDatagram: callback=" + callback);
+ plogd("registerForIncomingDatagram: callback=" + callback);
return mDatagramController.registerForSatelliteDatagram(subId, callback);
}
@@ -1973,13 +1986,13 @@
public void unregisterForIncomingDatagram(int subId,
@NonNull ISatelliteDatagramCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("unregisterForIncomingDatagram: oemEnabledSatelliteFlag is disabled");
+ plogd("unregisterForIncomingDatagram: oemEnabledSatelliteFlag is disabled");
return;
}
if (!mSatelliteModemInterface.isSatelliteServiceSupported()) {
return;
}
- logd("unregisterForIncomingDatagram: callback=" + callback);
+ plogd("unregisterForIncomingDatagram: callback=" + callback);
mDatagramController.unregisterForSatelliteDatagram(subId, callback);
}
@@ -2025,7 +2038,7 @@
public void sendDatagram(int subId, @SatelliteManager.DatagramType int datagramType,
SatelliteDatagram datagram, boolean needFullScreenPointingUI,
@NonNull IIntegerConsumer callback) {
- logd("sendSatelliteDatagram: subId: " + subId + " datagramType: " + datagramType
+ plogd("sendSatelliteDatagram: subId: " + subId + " datagramType: " + datagramType
+ " needFullScreenPointingUI: " + needFullScreenPointingUI);
Consumer<Integer> result = FunctionalUtils.ignoreRemoteException(callback::accept);
@@ -2074,7 +2087,7 @@
*/
public void setDeviceAlignedWithSatellite(@NonNull int subId, @NonNull boolean isAligned) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setDeviceAlignedWithSatellite: oemEnabledSatelliteFlag is disabled");
+ plogd("setDeviceAlignedWithSatellite: oemEnabledSatelliteFlag is disabled");
return;
}
@@ -2191,7 +2204,7 @@
* strength of the satellite connection.
*/
public void requestNtnSignalStrength(int subId, @NonNull ResultReceiver result) {
- if (DBG) logd("requestNtnSignalStrength()");
+ if (DBG) plogd("requestNtnSignalStrength()");
int error = evaluateOemSatelliteRequestAllowed(true);
if (error != SATELLITE_RESULT_SUCCESS) {
@@ -2230,7 +2243,7 @@
*/
public void registerForNtnSignalStrengthChanged(int subId,
@NonNull INtnSignalStrengthCallback callback) throws RemoteException {
- if (DBG) logd("registerForNtnSignalStrengthChanged()");
+ if (DBG) plogd("registerForNtnSignalStrengthChanged()");
int error = evaluateOemSatelliteRequestAllowed(true);
if (error == SATELLITE_RESULT_SUCCESS) {
@@ -2251,7 +2264,7 @@
*/
public void unregisterForNtnSignalStrengthChanged(
int subId, @NonNull INtnSignalStrengthCallback callback) {
- if (DBG) logd("unregisterForNtnSignalStrengthChanged()");
+ if (DBG) plogd("unregisterForNtnSignalStrengthChanged()");
int error = evaluateOemSatelliteRequestAllowed(true);
if (error == SATELLITE_RESULT_SUCCESS) {
@@ -2269,7 +2282,7 @@
*/
@SatelliteManager.SatelliteResult public int registerForCapabilitiesChanged(
int subId, @NonNull ISatelliteCapabilitiesCallback callback) {
- if (DBG) logd("registerForCapabilitiesChanged()");
+ if (DBG) plogd("registerForCapabilitiesChanged()");
int error = evaluateOemSatelliteRequestAllowed(true);
if (error != SATELLITE_RESULT_SUCCESS) return error;
@@ -2289,7 +2302,7 @@
*/
public void unregisterForCapabilitiesChanged(
int subId, @NonNull ISatelliteCapabilitiesCallback callback) {
- if (DBG) logd("unregisterForCapabilitiesChanged()");
+ if (DBG) plogd("unregisterForCapabilitiesChanged()");
int error = evaluateOemSatelliteRequestAllowed(true);
if (error == SATELLITE_RESULT_SUCCESS) {
@@ -2308,7 +2321,7 @@
@SatelliteManager.SatelliteResult public int registerForSatelliteSupportedStateChanged(
int subId, @NonNull ISatelliteSupportedStateCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("registerForSatelliteSupportedStateChanged: oemEnabledSatelliteFlag is disabled");
+ plogd("registerForSatelliteSupportedStateChanged: oemEnabledSatelliteFlag is disabled");
return SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED;
}
@@ -2327,7 +2340,7 @@
public void unregisterForSatelliteSupportedStateChanged(
int subId, @NonNull ISatelliteSupportedStateCallback callback) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("unregisterForSatelliteSupportedStateChanged: "
+ plogd("unregisterForSatelliteSupportedStateChanged: "
+ "oemEnabledSatelliteFlag is disabled");
return;
}
@@ -2343,16 +2356,16 @@
*/
public boolean setSatelliteServicePackageName(@Nullable String servicePackageName) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setSatelliteServicePackageName: oemEnabledSatelliteFlag is disabled");
+ plogd("setSatelliteServicePackageName: oemEnabledSatelliteFlag is disabled");
return false;
}
if (!isMockModemAllowed()) {
- logd("setSatelliteServicePackageName: mock modem not allowed");
+ plogd("setSatelliteServicePackageName: mock modem not allowed");
return false;
}
// Cached states need to be cleared whenever switching satellite vendor services.
- logd("setSatelliteServicePackageName: Resetting cached states");
+ plogd("setSatelliteServicePackageName: Resetting cached states");
synchronized (mIsSatelliteSupportedLock) {
mIsSatelliteSupported = null;
}
@@ -2379,11 +2392,11 @@
*/
public boolean setSatelliteListeningTimeoutDuration(long timeoutMillis) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setSatelliteListeningTimeoutDuration: oemEnabledSatelliteFlag is disabled");
+ plogd("setSatelliteListeningTimeoutDuration: oemEnabledSatelliteFlag is disabled");
return false;
}
if (mSatelliteSessionController == null) {
- loge("mSatelliteSessionController is not initialized yet");
+ ploge("mSatelliteSessionController is not initialized yet");
return false;
}
return mSatelliteSessionController.setSatelliteListeningTimeoutDuration(timeoutMillis);
@@ -2399,10 +2412,10 @@
public boolean setDatagramControllerTimeoutDuration(
boolean reset, int timeoutType, long timeoutMillis) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setDatagramControllerTimeoutDuration: oemEnabledSatelliteFlag is disabled");
+ plogd("setDatagramControllerTimeoutDuration: oemEnabledSatelliteFlag is disabled");
return false;
}
- logd("setDatagramControllerTimeoutDuration: reset=" + reset + ", timeoutType="
+ plogd("setDatagramControllerTimeoutDuration: reset=" + reset + ", timeoutType="
+ timeoutType + ", timeoutMillis=" + timeoutMillis);
return mDatagramController.setDatagramControllerTimeoutDuration(
reset, timeoutType, timeoutMillis);
@@ -2437,14 +2450,14 @@
public boolean setSatelliteControllerTimeoutDuration(
boolean reset, int timeoutType, long timeoutMillis) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setSatelliteControllerTimeoutDuration: oemEnabledSatelliteFlag is disabled");
+ plogd("setSatelliteControllerTimeoutDuration: oemEnabledSatelliteFlag is disabled");
return false;
}
if (!isMockModemAllowed()) {
- logd("setSatelliteControllerTimeoutDuration: mock modem is not allowed");
+ plogd("setSatelliteControllerTimeoutDuration: mock modem is not allowed");
return false;
}
- logd("setSatelliteControllerTimeoutDuration: reset=" + reset + ", timeoutType="
+ plogd("setSatelliteControllerTimeoutDuration: reset=" + reset + ", timeoutType="
+ timeoutType + ", timeoutMillis=" + timeoutMillis);
if (timeoutType == TIMEOUT_TYPE_WAIT_FOR_SATELLITE_ENABLING_RESPONSE) {
if (reset) {
@@ -2453,7 +2466,7 @@
} else {
mWaitTimeForSatelliteEnablingResponse = timeoutMillis;
}
- logd("mWaitTimeForSatelliteEnablingResponse=" + mWaitTimeForSatelliteEnablingResponse);
+ plogd("mWaitTimeForSatelliteEnablingResponse=" + mWaitTimeForSatelliteEnablingResponse);
} else if (timeoutType == TIMEOUT_TYPE_DEMO_POINTING_ALIGNED_DURATION_MILLIS) {
if (reset) {
mDemoPointingAlignedDurationMillis =
@@ -2469,7 +2482,7 @@
mDemoPointingNotAlignedDurationMillis = timeoutMillis;
}
} else {
- logw("Invalid timeoutType=" + timeoutType);
+ plogw("Invalid timeoutType=" + timeoutType);
return false;
}
return true;
@@ -2484,11 +2497,11 @@
*/
public boolean setSatelliteGatewayServicePackageName(@Nullable String servicePackageName) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setSatelliteGatewayServicePackageName: oemEnabledSatelliteFlag is disabled");
+ plogd("setSatelliteGatewayServicePackageName: oemEnabledSatelliteFlag is disabled");
return false;
}
if (mSatelliteSessionController == null) {
- loge("mSatelliteSessionController is not initialized yet");
+ ploge("mSatelliteSessionController is not initialized yet");
return false;
}
return mSatelliteSessionController.setSatelliteGatewayServicePackageName(
@@ -2506,7 +2519,7 @@
public boolean setSatellitePointingUiClassName(
@Nullable String packageName, @Nullable String className) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setSatellitePointingUiClassName: oemEnabledSatelliteFlag is disabled");
+ plogd("setSatellitePointingUiClassName: oemEnabledSatelliteFlag is disabled");
return false;
}
return mPointingAppController.setSatellitePointingUiClassName(packageName, className);
@@ -2527,7 +2540,7 @@
*/
public boolean setEmergencyCallToSatelliteHandoverType(int handoverType, int delaySeconds) {
if (!isMockModemAllowed()) {
- loge("setEmergencyCallToSatelliteHandoverType: mock modem not allowed");
+ ploge("setEmergencyCallToSatelliteHandoverType: mock modem not allowed");
return false;
}
if (isHandoverTypeValid(handoverType)) {
@@ -2551,7 +2564,7 @@
*/
public boolean setOemEnabledSatelliteProvisionStatus(boolean reset, boolean isProvisioned) {
if (!isMockModemAllowed()) {
- loge("setOemEnabledSatelliteProvisionStatus: mock modem not allowed");
+ ploge("setOemEnabledSatelliteProvisionStatus: mock modem not allowed");
return false;
}
synchronized (mSatelliteViaOemProvisionLock) {
@@ -2596,7 +2609,7 @@
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
public void onSatelliteServiceConnected() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("onSatelliteServiceConnected: oemEnabledSatelliteFlag is disabled");
+ plogd("onSatelliteServiceConnected: oemEnabledSatelliteFlag is disabled");
return;
}
if (mSatelliteModemInterface.isSatelliteServiceSupported()) {
@@ -2606,7 +2619,7 @@
@Override
protected void onReceiveResult(
int resultCode, Bundle resultData) {
- logd("onSatelliteServiceConnected.requestIsSatelliteSupported:"
+ plogd("onSatelliteServiceConnected.requestIsSatelliteSupported:"
+ " resultCode=" + resultCode);
}
};
@@ -2615,7 +2628,7 @@
}
}
} else {
- logd("onSatelliteServiceConnected: Satellite vendor service is not supported."
+ plogd("onSatelliteServiceConnected: Satellite vendor service is not supported."
+ " Ignored the event");
}
}
@@ -2627,7 +2640,7 @@
*/
public void onCellularRadioPowerOffRequested() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("onCellularRadioPowerOffRequested: oemEnabledSatelliteFlag is disabled");
+ plogd("onCellularRadioPowerOffRequested: oemEnabledSatelliteFlag is disabled");
return;
}
@@ -2637,7 +2650,7 @@
new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- logd("onRadioPowerOffRequested: requestSatelliteEnabled result=" + result);
+ plogd("onRadioPowerOffRequested: requestSatelliteEnabled result=" + result);
}
});
}
@@ -2648,7 +2661,7 @@
*/
public boolean isSatelliteSupportedViaOem() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("isSatelliteSupported: oemEnabledSatelliteFlag is disabled");
+ plogd("isSatelliteSupported: oemEnabledSatelliteFlag is disabled");
return false;
}
Boolean supported = isSatelliteSupportedViaOemInternal();
@@ -2729,13 +2742,13 @@
*/
public boolean isSatelliteAttachRequired() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("isSatelliteAttachRequired: oemEnabledSatelliteFlag is disabled");
+ plogd("isSatelliteAttachRequired: oemEnabledSatelliteFlag is disabled");
return false;
}
synchronized (mSatelliteCapabilitiesLock) {
if (mSatelliteCapabilities == null) {
- loge("isSatelliteAttachRequired: mSatelliteCapabilities is null");
+ ploge("isSatelliteAttachRequired: mSatelliteCapabilities is null");
return false;
}
if (mSatelliteCapabilities.getSupportedRadioTechnologies().contains(
@@ -3041,7 +3054,7 @@
private boolean isValidPlmnList(@NonNull List<String> plmnList) {
for (String plmn : plmnList) {
if (!TelephonyUtils.isValidPlmn(plmn)) {
- loge("Invalid PLMN = " + plmn);
+ ploge("Invalid PLMN = " + plmn);
return false;
}
}
@@ -3067,7 +3080,7 @@
new ResultReceiver(this) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
- logd("isSatelliteSupportedViaOemInternal.requestIsSatelliteSupported:"
+ plogd("isSatelliteSupportedViaOemInternal.requestIsSatelliteSupported:"
+ " resultCode=" + resultCode);
}
});
@@ -3077,12 +3090,12 @@
private void handleEventProvisionSatelliteServiceDone(
@NonNull ProvisionSatelliteServiceArgument arg,
@SatelliteManager.SatelliteResult int result) {
- logd("handleEventProvisionSatelliteServiceDone: result="
+ plogd("handleEventProvisionSatelliteServiceDone: result="
+ result + ", subId=" + arg.subId);
Consumer<Integer> callback = mSatelliteProvisionCallbacks.remove(arg.subId);
if (callback == null) {
- loge("handleEventProvisionSatelliteServiceDone: callback is null for subId="
+ ploge("handleEventProvisionSatelliteServiceDone: callback is null for subId="
+ arg.subId);
mProvisionMetricsStats
.setResultCode(SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE)
@@ -3113,10 +3126,10 @@
@NonNull ProvisionSatelliteServiceArgument arg,
@SatelliteManager.SatelliteResult int result) {
if (arg == null) {
- loge("handleEventDeprovisionSatelliteServiceDone: arg is null");
+ ploge("handleEventDeprovisionSatelliteServiceDone: arg is null");
return;
}
- logd("handleEventDeprovisionSatelliteServiceDone: result="
+ plogd("handleEventDeprovisionSatelliteServiceDone: result="
+ result + ", subId=" + arg.subId);
if (result == SATELLITE_RESULT_SUCCESS
@@ -3224,7 +3237,7 @@
new ResultReceiver(this) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
- logd("isSatelliteViaOemProvisioned: resultCode=" + resultCode);
+ plogd("isSatelliteViaOemProvisioned: resultCode=" + resultCode);
}
});
return null;
@@ -3236,7 +3249,7 @@
if (mSatelliteSessionController != null) {
mSatelliteSessionController.onSatelliteEnablementStarted(argument.enableSatellite);
} else {
- loge("handleSatelliteEnabled: mSatelliteSessionController is not initialized yet");
+ ploge("handleSatelliteEnabled: mSatelliteSessionController is not initialized yet");
}
if (!argument.enableSatellite && mSatelliteModemInterface.isSatelliteServiceSupported()) {
@@ -3277,8 +3290,8 @@
mIsSatelliteSupported = supported;
}
mSatelliteSessionController = SatelliteSessionController.make(
- mContext, getLooper(), supported);
- logd("create a new SatelliteSessionController due to isSatelliteSupported state has "
+ mContext, getLooper(), mFeatureFlags, supported);
+ plogd("create a new SatelliteSessionController due to isSatelliteSupported state has "
+ "changed to " + supported);
if (supported) {
@@ -3292,14 +3305,14 @@
new ResultReceiver(this) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
- logd("requestIsSatelliteProvisioned: resultCode=" + resultCode
+ plogd("requestIsSatelliteProvisioned: resultCode=" + resultCode
+ ", resultData=" + resultData);
requestSatelliteEnabled(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
false, false, false,
new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- logd("requestSatelliteEnabled: result=" + result);
+ plogd("requestSatelliteEnabled: result=" + result);
}
});
}
@@ -3308,7 +3321,7 @@
new ResultReceiver(this) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
- logd("requestSatelliteCapabilities: resultCode=" + resultCode
+ plogd("requestSatelliteCapabilities: resultCode=" + resultCode
+ ", resultData=" + resultData);
}
});
@@ -3324,7 +3337,7 @@
mSatelliteSessionController.onSatelliteEnabledStateChanged(enabled);
mSatelliteSessionController.setDemoMode(mIsDemoModeEnabled);
} else {
- loge(caller + ": mSatelliteSessionController is not initialized yet");
+ ploge(caller + ": mSatelliteSessionController is not initialized yet");
}
if (!enabled) {
mIsModemEnabledReportingNtnSignalStrength.set(false);
@@ -3363,7 +3376,7 @@
private void registerForNtnSignalStrengthChanged() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("registerForNtnSignalStrengthChanged: oemEnabledSatelliteFlag is disabled");
+ plogd("registerForNtnSignalStrengthChanged: oemEnabledSatelliteFlag is disabled");
return;
}
@@ -3378,7 +3391,7 @@
private void registerForCapabilitiesChanged() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("registerForCapabilitiesChanged: oemEnabledSatelliteFlag is disabled");
+ plogd("registerForCapabilitiesChanged: oemEnabledSatelliteFlag is disabled");
return;
}
@@ -3402,7 +3415,7 @@
}
private void handleEventSatelliteProvisionStateChanged(boolean provisioned) {
- logd("handleSatelliteProvisionStateChangedEvent: provisioned=" + provisioned);
+ plogd("handleSatelliteProvisionStateChangedEvent: provisioned=" + provisioned);
synchronized (mSatelliteViaOemProvisionLock) {
persistOemEnabledSatelliteProvisionStatus(provisioned);
@@ -3414,7 +3427,7 @@
try {
listener.onSatelliteProvisionStateChanged(provisioned);
} catch (RemoteException e) {
- logd("handleSatelliteProvisionStateChangedEvent RemoteException: " + e);
+ plogd("handleSatelliteProvisionStateChangedEvent RemoteException: " + e);
deadCallersList.add(listener);
}
});
@@ -3425,7 +3438,7 @@
private void handleEventSatelliteModemStateChanged(
@SatelliteManager.SatelliteModemState int state) {
- logd("handleEventSatelliteModemStateChanged: state=" + state);
+ plogd("handleEventSatelliteModemStateChanged: state=" + state);
if (state == SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE
|| state == SatelliteManager.SATELLITE_MODEM_STATE_OFF) {
synchronized (mIsSatelliteEnabledLock) {
@@ -3443,8 +3456,8 @@
}
moveSatelliteToOffStateAndCleanUpResources(error, callback);
} else {
- logd("Either waiting for the response of disabling satellite modem or the event"
- + " should be ignored because isSatelliteEnabled="
+ plogd("Either waiting for the response of disabling satellite modem or the"
+ + " event should be ignored because isSatelliteEnabled="
+ isSatelliteEnabled()
+ ", mIsSatelliteEnabled=" + mIsSatelliteEnabled);
}
@@ -3454,7 +3467,7 @@
if (mSatelliteSessionController != null) {
mSatelliteSessionController.onSatelliteModemStateChanged(state);
} else {
- loge("handleEventSatelliteModemStateChanged: mSatelliteSessionController is null");
+ ploge("handleEventSatelliteModemStateChanged: mSatelliteSessionController is null");
}
}
}
@@ -3476,7 +3489,7 @@
try {
listener.onNtnSignalStrengthChanged(ntnSignalStrength);
} catch (RemoteException e) {
- logd("handleEventNtnSignalStrengthChanged RemoteException: " + e);
+ plogd("handleEventNtnSignalStrengthChanged RemoteException: " + e);
deadCallersList.add(listener);
}
});
@@ -3486,9 +3499,9 @@
}
private void handleEventSatelliteCapabilitiesChanged(SatelliteCapabilities capabilities) {
- logd("handleEventSatelliteCapabilitiesChanged()");
+ plogd("handleEventSatelliteCapabilitiesChanged()");
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("handleEventSatelliteCapabilitiesChanged: oemEnabledSatelliteFlag is disabled");
+ plogd("handleEventSatelliteCapabilitiesChanged: oemEnabledSatelliteFlag is disabled");
return;
}
@@ -3501,7 +3514,7 @@
try {
listener.onSatelliteCapabilitiesChanged(capabilities);
} catch (RemoteException e) {
- logd("handleEventSatelliteCapabilitiesChanged RemoteException: " + e);
+ plogd("handleEventSatelliteCapabilitiesChanged RemoteException: " + e);
deadCallersList.add(listener);
}
});
@@ -3511,12 +3524,12 @@
}
private void handleEventSatelliteSupportedStateChanged(boolean supported) {
- logd("handleSatelliteSupportedStateChangedEvent: supported=" + supported);
+ plogd("handleSatelliteSupportedStateChangedEvent: supported=" + supported);
synchronized (mIsSatelliteSupportedLock) {
if (mIsSatelliteSupported != null && mIsSatelliteSupported == supported) {
if (DBG) {
- logd("current satellite support state and new supported state are matched,"
+ plogd("current satellite support state and new supported state are matched,"
+ " ignore update.");
}
return;
@@ -3528,7 +3541,7 @@
enabled, request disable satellite. */
synchronized (mIsSatelliteEnabledLock) {
if (!supported && mIsSatelliteEnabled != null && mIsSatelliteEnabled) {
- logd("Invoke requestSatelliteEnabled(), supported=false, "
+ plogd("Invoke requestSatelliteEnabled(), supported=false, "
+ "mIsSatelliteEnabled=true");
requestSatelliteEnabled(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
false /* enableSatellite */, false /* enableDemoMode */,
@@ -3536,7 +3549,7 @@
new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- logd("handleSatelliteSupportedStateChangedEvent: request "
+ plogd("handleSatelliteSupportedStateChangedEvent: request "
+ "satellite disable, result="
+ result);
}
@@ -3552,7 +3565,7 @@
try {
listener.onSatelliteSupportedStateChanged(supported);
} catch (RemoteException e) {
- logd("handleSatelliteSupportedStateChangedEvent RemoteException: " + e);
+ plogd("handleSatelliteSupportedStateChangedEvent RemoteException: " + e);
deadCallersList.add(listener);
}
});
@@ -3563,7 +3576,7 @@
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
protected void setSettingsKeyForSatelliteMode(int val) {
- logd("setSettingsKeyForSatelliteMode val: " + val);
+ plogd("setSettingsKeyForSatelliteMode val: " + val);
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.SATELLITE_MODE_ENABLED, val);
}
@@ -3575,20 +3588,20 @@
|| (mDisableNFCOnSatelliteEnabled && mNfcStateEnabled)
|| (mDisableWifiOnSatelliteEnabled && mWifiStateEnabled)
|| (mDisableUWBOnSatelliteEnabled && mUwbStateEnabled)) {
- logd("All radios are not disabled yet.");
+ plogd("All radios are not disabled yet.");
return false;
}
- logd("All radios are disabled.");
+ plogd("All radios are disabled.");
return true;
}
}
private void evaluateToSendSatelliteEnabledSuccess() {
- logd("evaluateToSendSatelliteEnabledSuccess");
+ plogd("evaluateToSendSatelliteEnabledSuccess");
synchronized (mSatelliteEnabledRequestLock) {
if (areAllRadiosDisabled() && (mSatelliteEnabledRequest != null)
&& mWaitingForRadioDisabled) {
- logd("Sending success to callback that sent enable satellite request");
+ plogd("Sending success to callback that sent enable satellite request");
setDemoModeEnabled(mSatelliteEnabledRequest.enableDemoMode);
mIsEmergency = mSatelliteEnabledRequest.isEmergency;
synchronized (mIsSatelliteEnabledLock) {
@@ -3605,7 +3618,7 @@
}
private void resetSatelliteEnabledRequest() {
- logd("resetSatelliteEnabledRequest");
+ plogd("resetSatelliteEnabledRequest");
synchronized (mSatelliteEnabledRequestLock) {
mSatelliteEnabledRequest = null;
mWaitingForRadioDisabled = false;
@@ -3614,10 +3627,11 @@
private void moveSatelliteToOffStateAndCleanUpResources(
@SatelliteManager.SatelliteResult int error, @Nullable Consumer<Integer> callback) {
- logd("moveSatelliteToOffStateAndCleanUpResources");
+ plogd("moveSatelliteToOffStateAndCleanUpResources");
synchronized (mIsSatelliteEnabledLock) {
resetSatelliteEnabledRequest();
setDemoModeEnabled(false);
+ tryFlushPersistedLogs(mIsEmergency);
mIsEmergency = false;
mIsSatelliteEnabled = false;
setSettingsKeyForSatelliteMode(SATELLITE_MODE_ENABLED_FALSE);
@@ -3630,7 +3644,7 @@
private void setDemoModeEnabled(boolean enabled) {
mIsDemoModeEnabled = enabled;
mDatagramController.setDemoMode(mIsDemoModeEnabled);
- logd("setDemoModeEnabled: mIsDemoModeEnabled=" + mIsDemoModeEnabled);
+ plogd("setDemoModeEnabled: mIsDemoModeEnabled=" + mIsDemoModeEnabled);
}
private boolean isMockModemAllowed() {
@@ -3688,19 +3702,19 @@
* Otherwise, If the carrierPlmnList exist then used it.
*/
private void updatePlmnListPerCarrier(int subId) {
- logd("updatePlmnListPerCarrier: subId=" + subId);
+ plogd("updatePlmnListPerCarrier: subId=" + subId);
synchronized (mSupportedSatelliteServicesLock) {
List<String> carrierPlmnList, entitlementPlmnList;
if (getConfigForSubId(subId).getBoolean(KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL,
false)) {
entitlementPlmnList = mEntitlementPlmnListPerCarrier.get(subId,
new ArrayList<>()).stream().toList();
- logd("updatePlmnListPerCarrier: entitlementPlmnList="
+ plogd("updatePlmnListPerCarrier: entitlementPlmnList="
+ String.join(",", entitlementPlmnList)
+ " size=" + entitlementPlmnList.size());
if (!entitlementPlmnList.isEmpty()) {
mMergedPlmnListPerCarrier.put(subId, entitlementPlmnList);
- logd("mMergedPlmnListPerCarrier is updated by Entitlement");
+ plogd("mMergedPlmnListPerCarrier is updated by Entitlement");
mCarrierRoamingSatelliteControllerStats.reportConfigDataSource(
SatelliteConstants.CONFIG_DATA_SOURCE_ENTITLEMENT);
return;
@@ -3713,7 +3727,7 @@
int carrierId = tm.createForSubscriptionId(subId).getSimCarrierId();
List<String> plmnList = satelliteConfig.getAllSatellitePlmnsForCarrier(carrierId);
if (!plmnList.isEmpty()) {
- logd("mMergedPlmnListPerCarrier is updated by ConfigUpdater : "
+ plogd("mMergedPlmnListPerCarrier is updated by ConfigUpdater : "
+ String.join(",", plmnList));
mMergedPlmnListPerCarrier.put(subId, plmnList);
mCarrierRoamingSatelliteControllerStats.reportConfigDataSource(
@@ -3726,20 +3740,20 @@
&& mSatelliteServicesSupportedByCarriers.get(subId) != null) {
carrierPlmnList =
mSatelliteServicesSupportedByCarriers.get(subId).keySet().stream().toList();
- logd("mMergedPlmnListPerCarrier is updated by carrier config: "
+ plogd("mMergedPlmnListPerCarrier is updated by carrier config: "
+ String.join(",", carrierPlmnList));
mCarrierRoamingSatelliteControllerStats.reportConfigDataSource(
SatelliteConstants.CONFIG_DATA_SOURCE_CARRIER_CONFIG);
} else {
carrierPlmnList = new ArrayList<>();
- logd("Empty mMergedPlmnListPerCarrier");
+ plogd("Empty mMergedPlmnListPerCarrier");
}
mMergedPlmnListPerCarrier.put(subId, carrierPlmnList);
}
}
private void updateSupportedSatelliteServices(int subId) {
- logd("updateSupportedSatelliteServices with subId " + subId);
+ plogd("updateSupportedSatelliteServices with subId " + subId);
synchronized (mSupportedSatelliteServicesLock) {
SatelliteConfig satelliteConfig = getSatelliteConfig();
@@ -3751,19 +3765,19 @@
satelliteConfig.getSupportedSatelliteServices(carrierId);
if (!supportedServicesPerPlmn.isEmpty()) {
mSatelliteServicesSupportedByCarriers.put(subId, supportedServicesPerPlmn);
- logd("updateSupportedSatelliteServices using ConfigUpdater, "
+ plogd("updateSupportedSatelliteServices using ConfigUpdater, "
+ "supportedServicesPerPlmn = " + supportedServicesPerPlmn.size());
updatePlmnListPerCarrier(subId);
return;
} else {
- logd("supportedServicesPerPlmn is empty");
+ plogd("supportedServicesPerPlmn is empty");
}
}
mSatelliteServicesSupportedByCarriers.put(
subId, readSupportedSatelliteServicesFromCarrierConfig(subId));
updatePlmnListPerCarrier(subId);
- logd("updateSupportedSatelliteServices using carrier config");
+ plogd("updateSupportedSatelliteServices using carrier config");
}
}
@@ -3804,7 +3818,7 @@
private void handleCarrierConfigChanged(int slotIndex, int subId, int carrierId,
int specificCarrierId) {
- logd("handleCarrierConfigChanged(): slotIndex(" + slotIndex + "), subId("
+ plogd("handleCarrierConfigChanged(): slotIndex(" + slotIndex + "), subId("
+ subId + "), carrierId(" + carrierId + "), specificCarrierId("
+ specificCarrierId + ")");
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
@@ -3837,21 +3851,21 @@
*/
private void updateEntitlementPlmnListPerCarrier(int subId) {
if (!getConfigForSubId(subId).getBoolean(KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, false)) {
- logd("don't support entitlement");
+ plogd("don't support entitlement");
return;
}
synchronized (mSupportedSatelliteServicesLock) {
if (mEntitlementPlmnListPerCarrier.indexOfKey(subId) < 0) {
- logd("updateEntitlementPlmnListPerCarrier: no correspondent cache, load from "
+ plogd("updateEntitlementPlmnListPerCarrier: no correspondent cache, load from "
+ "persist storage");
List<String> entitlementPlmnList =
mSubscriptionManagerService.getSatelliteEntitlementPlmnList(subId);
if (entitlementPlmnList.isEmpty()) {
- logd("updateEntitlementPlmnListPerCarrier: read empty list");
+ plogd("updateEntitlementPlmnListPerCarrier: read empty list");
return;
}
- logd("updateEntitlementPlmnListPerCarrier: entitlementPlmnList="
+ plogd("updateEntitlementPlmnListPerCarrier: entitlementPlmnList="
+ String.join(",", entitlementPlmnList));
mEntitlementPlmnListPerCarrier.put(subId, entitlementPlmnList);
}
@@ -3881,7 +3895,7 @@
try {
strArray = mContext.getResources().getStringArray(id);
} catch (Resources.NotFoundException ex) {
- loge("readStringArrayFromOverlayConfig: id= " + id + ", ex=" + ex);
+ ploge("readStringArrayFromOverlayConfig: id= " + id + ", ex=" + ex);
}
if (strArray == null) {
strArray = new String[0];
@@ -3911,7 +3925,7 @@
return !cachedRestrictionSet.contains(
SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER);
} else {
- logd("isSatelliteAttachEnabledForCarrierByUser() no correspondent cache, "
+ plogd("isSatelliteAttachEnabledForCarrierByUser() no correspondent cache, "
+ "load from persist storage");
try {
String enabled =
@@ -3920,13 +3934,13 @@
mContext.getOpPackageName(), mContext.getAttributionTag());
if (enabled == null) {
- loge("isSatelliteAttachEnabledForCarrierByUser: invalid subId, subId="
+ ploge("isSatelliteAttachEnabledForCarrierByUser: invalid subId, subId="
+ subId);
return false;
}
if (enabled.isEmpty()) {
- loge("isSatelliteAttachEnabledForCarrierByUser: no data for subId(" + subId
+ ploge("isSatelliteAttachEnabledForCarrierByUser: no data for subId(" + subId
+ ")");
return false;
}
@@ -3941,7 +3955,7 @@
return result;
}
} catch (IllegalArgumentException | SecurityException ex) {
- loge("isSatelliteAttachEnabledForCarrierByUser: ex=" + ex);
+ ploge("isSatelliteAttachEnabledForCarrierByUser: ex=" + ex);
return false;
}
}
@@ -3964,19 +3978,19 @@
private void updateRestrictReasonForEntitlementPerCarrier(int subId) {
if (!getConfigForSubId(subId).getBoolean(KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, false)) {
- logd("don't support entitlement");
+ plogd("don't support entitlement");
return;
}
IIntegerConsumer callback = new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- logd("updateRestrictReasonForEntitlementPerCarrier:" + result);
+ plogd("updateRestrictReasonForEntitlementPerCarrier:" + result);
}
};
synchronized (mSupportedSatelliteServicesLock) {
if (mSatelliteEntitlementStatusPerCarrier.indexOfKey(subId) < 0) {
- logd("updateRestrictReasonForEntitlementPerCarrier: no correspondent cache, "
+ plogd("updateRestrictReasonForEntitlementPerCarrier: no correspondent cache, "
+ "load from persist storage");
String entitlementStatus = null;
try {
@@ -3985,17 +3999,17 @@
SATELLITE_ENTITLEMENT_STATUS, mContext.getOpPackageName(),
mContext.getAttributionTag());
} catch (IllegalArgumentException | SecurityException e) {
- loge("updateRestrictReasonForEntitlementPerCarrier, e=" + e);
+ ploge("updateRestrictReasonForEntitlementPerCarrier, e=" + e);
}
if (entitlementStatus == null) {
- loge("updateRestrictReasonForEntitlementPerCarrier: invalid subId, subId="
+ ploge("updateRestrictReasonForEntitlementPerCarrier: invalid subId, subId="
+ subId + " set to default value");
entitlementStatus = "0";
}
if (entitlementStatus.isEmpty()) {
- loge("updateRestrictReasonForEntitlementPerCarrier: no data for subId(" + subId
+ ploge("updateRestrictReasonForEntitlementPerCarrier: no data for subId(" + subId
+ "). set to default value");
entitlementStatus = "0";
}
@@ -4020,9 +4034,9 @@
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
protected boolean persistSatelliteAttachEnabledForCarrierSetting(int subId) {
- logd("persistSatelliteAttachEnabledForCarrierSetting");
+ plogd("persistSatelliteAttachEnabledForCarrierSetting");
if (!isValidSubscriptionId(subId)) {
- loge("persistSatelliteAttachEnabledForCarrierSetting: subId is not valid,"
+ ploge("persistSatelliteAttachEnabledForCarrierSetting: subId is not valid,"
+ " subId=" + subId);
return false;
}
@@ -4035,7 +4049,7 @@
.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER)
? "0" : "1");
} catch (IllegalArgumentException | SecurityException ex) {
- loge("persistSatelliteAttachEnabledForCarrierSetting, ex=" + ex);
+ ploge("persistSatelliteAttachEnabledForCarrierSetting, ex=" + ex);
return false;
}
}
@@ -4084,12 +4098,12 @@
private void evaluateEnablingSatelliteForCarrier(int subId, int reason,
@Nullable Consumer<Integer> callback) {
if (callback == null) {
- callback = errorCode -> logd("evaluateEnablingSatelliteForCarrier: "
+ callback = errorCode -> plogd("evaluateEnablingSatelliteForCarrier: "
+ "SetSatelliteAttachEnableForCarrier error code =" + errorCode);
}
if (!isSatelliteSupportedViaCarrier(subId)) {
- logd("Satellite for carrier is not supported. Only user setting is stored");
+ plogd("Satellite for carrier is not supported. Only user setting is stored");
callback.accept(SATELLITE_RESULT_SUCCESS);
return;
}
@@ -4121,17 +4135,17 @@
@SatelliteManager.SatelliteResult private int evaluateOemSatelliteRequestAllowed(
boolean isProvisionRequired) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("oemEnabledSatelliteFlag is disabled");
+ plogd("oemEnabledSatelliteFlag is disabled");
return SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED;
}
if (!mSatelliteModemInterface.isSatelliteServiceSupported()) {
- logd("evaluateOemSatelliteRequestAllowed: satellite service is not supported");
+ plogd("evaluateOemSatelliteRequestAllowed: satellite service is not supported");
return SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED;
}
Boolean satelliteSupported = isSatelliteSupportedViaOemInternal();
if (satelliteSupported == null) {
- logd("evaluateOemSatelliteRequestAllowed: satelliteSupported is null");
+ plogd("evaluateOemSatelliteRequestAllowed: satelliteSupported is null");
return SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
}
if (!satelliteSupported) {
@@ -4141,7 +4155,7 @@
if (isProvisionRequired) {
Boolean satelliteProvisioned = isSatelliteViaOemProvisioned();
if (satelliteProvisioned == null) {
- logd("evaluateOemSatelliteRequestAllowed: satelliteProvisioned is null");
+ plogd("evaluateOemSatelliteRequestAllowed: satelliteProvisioned is null");
return SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
}
if (!satelliteProvisioned) {
@@ -4232,7 +4246,7 @@
// and is not connected to any terrestrial network that has coverage
mLastSatelliteDisconnectedTimesMillis.put(subId, getElapsedRealtime());
- logd("sendMessageDelayed subId:" + subId
+ plogd("sendMessageDelayed subId:" + subId
+ " phoneId:" + phone.getPhoneId()
+ " time:" + getSatelliteConnectionHysteresisTimeMillis(subId));
sendMessageDelayed(obtainMessage(EVENT_NOTIFY_NTN_HYSTERESIS_TIMED_OUT,
@@ -4300,12 +4314,12 @@
private void persistOemEnabledSatelliteProvisionStatus(boolean isProvisioned) {
synchronized (mSatelliteViaOemProvisionLock) {
- logd("persistOemEnabledSatelliteProvisionStatus: isProvisioned=" + isProvisioned);
+ plogd("persistOemEnabledSatelliteProvisionStatus: isProvisioned=" + isProvisioned);
if (!loadSatelliteSharedPreferences()) return;
if (mSharedPreferences == null) {
- loge("persistOemEnabledSatelliteProvisionStatus: mSharedPreferences is null");
+ ploge("persistOemEnabledSatelliteProvisionStatus: mSharedPreferences is null");
} else {
mSharedPreferences.edit().putBoolean(
OEM_ENABLED_SATELLITE_PROVISION_STATUS_KEY, isProvisioned).apply();
@@ -4318,7 +4332,7 @@
if (!loadSatelliteSharedPreferences()) return false;
if (mSharedPreferences == null) {
- loge("getPersistedOemEnabledSatelliteProvisionStatus: mSharedPreferences is null");
+ ploge("getPersistedOemEnabledSatelliteProvisionStatus: mSharedPreferences is null");
return false;
} else {
return mSharedPreferences.getBoolean(
@@ -4334,7 +4348,7 @@
mContext.getSharedPreferences(SATELLITE_SHARED_PREF,
Context.MODE_PRIVATE);
} catch (Exception e) {
- loge("loadSatelliteSharedPreferences: Cannot get default "
+ ploge("loadSatelliteSharedPreferences: Cannot get default "
+ "shared preferences, e=" + e);
return false;
}
@@ -4349,18 +4363,18 @@
boolean isSatelliteProvisionedInModem = false;
if (error == SATELLITE_RESULT_SUCCESS) {
if (ar.result == null) {
- loge("handleIsSatelliteProvisionedDoneEvent: result is null");
+ ploge("handleIsSatelliteProvisionedDoneEvent: result is null");
error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
} else {
isSatelliteProvisionedInModem = ((int[]) ar.result)[0] == 1;
}
} else if (error == SATELLITE_RESULT_REQUEST_NOT_SUPPORTED) {
- logd("handleIsSatelliteProvisionedDoneEvent: Modem does not support this request");
+ plogd("handleIsSatelliteProvisionedDoneEvent: Modem does not support this request");
isSatelliteProvisionedInModem = true;
}
boolean isSatelliteViaOemProvisioned =
isSatelliteProvisionedInModem && getPersistedOemEnabledSatelliteProvisionStatus();
- logd("isSatelliteProvisionedInModem=" + isSatelliteProvisionedInModem
+ plogd("isSatelliteProvisionedInModem=" + isSatelliteProvisionedInModem
+ ", isSatelliteViaOemProvisioned=" + isSatelliteViaOemProvisioned);
Bundle bundle = new Bundle();
bundle.putBoolean(SatelliteManager.KEY_SATELLITE_PROVISIONED, isSatelliteViaOemProvisioned);
@@ -4379,11 +4393,11 @@
@NonNull RequestSatelliteEnabledArgument argument) {
synchronized (mSatelliteEnabledRequestLock) {
if (hasMessages(EVENT_WAIT_FOR_SATELLITE_ENABLING_RESPONSE_TIMED_OUT, argument)) {
- logd("WaitForSatelliteEnablingResponseTimer of request ID "
+ plogd("WaitForSatelliteEnablingResponseTimer of request ID "
+ argument.requestId + " was already started");
return;
}
- logd("Start timer to wait for response of the satellite enabling request ID="
+ plogd("Start timer to wait for response of the satellite enabling request ID="
+ argument.requestId + ", enableSatellite=" + argument.enableSatellite
+ ", mWaitTimeForSatelliteEnablingResponse="
+ mWaitTimeForSatelliteEnablingResponse);
@@ -4395,7 +4409,7 @@
private void stopWaitForSatelliteEnablingResponseTimer(
@NonNull RequestSatelliteEnabledArgument argument) {
synchronized (mSatelliteEnabledRequestLock) {
- logd("Stop timer to wait for response of the satellite enabling request ID="
+ plogd("Stop timer to wait for response of the satellite enabling request ID="
+ argument.requestId + ", enableSatellite=" + argument.enableSatellite);
removeMessages(EVENT_WAIT_FOR_SATELLITE_ENABLING_RESPONSE_TIMED_OUT, argument);
}
@@ -4413,7 +4427,7 @@
private void handleEventWaitForSatelliteEnablingResponseTimedOut(
@NonNull RequestSatelliteEnabledArgument argument) {
- logw("Timed out to wait for response of the satellite enabling request ID="
+ plogw("Timed out to wait for response of the satellite enabling request ID="
+ argument.requestId + ", enableSatellite=" + argument.enableSatellite);
synchronized (mSatelliteEnabledRequestLock) {
@@ -4438,7 +4452,7 @@
IIntegerConsumer callback = new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- logd("handleEventWaitForSatelliteEnablingResponseTimedOut: "
+ plogd("handleEventWaitForSatelliteEnablingResponseTimedOut: "
+ "disable satellite result=" + result);
}
};
@@ -4488,20 +4502,20 @@
private void handleCmdUpdateNtnSignalStrengthReporting(boolean shouldReport) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("handleCmdUpdateNtnSignalStrengthReporting: oemEnabledSatelliteFlag is "
+ plogd("handleCmdUpdateNtnSignalStrengthReporting: oemEnabledSatelliteFlag is "
+ "disabled");
return;
}
if (!isSatelliteEnabled()) {
- logd("handleCmdUpdateNtnSignalStrengthReporting: ignore request, satellite is "
+ plogd("handleCmdUpdateNtnSignalStrengthReporting: ignore request, satellite is "
+ "disabled");
return;
}
mLatestRequestedStateForNtnSignalStrengthReport.set(shouldReport);
if (mIsModemEnabledReportingNtnSignalStrength.get() == shouldReport) {
- logd("handleCmdUpdateNtnSignalStrengthReporting: ignore request. "
+ plogd("handleCmdUpdateNtnSignalStrengthReporting: ignore request. "
+ "mIsModemEnabledReportingNtnSignalStrength="
+ mIsModemEnabledReportingNtnSignalStrength.get());
return;
@@ -4512,7 +4526,7 @@
private void updateNtnSignalStrengthReporting(boolean shouldReport) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("updateNtnSignalStrengthReporting: oemEnabledSatelliteFlag is "
+ plogd("updateNtnSignalStrengthReporting: oemEnabledSatelliteFlag is "
+ "disabled");
return;
}
@@ -4522,10 +4536,10 @@
Message onCompleted = obtainMessage(EVENT_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING_DONE,
request);
if (shouldReport) {
- logd("updateNtnSignalStrengthReporting: startSendingNtnSignalStrength");
+ plogd("updateNtnSignalStrengthReporting: startSendingNtnSignalStrength");
mSatelliteModemInterface.startSendingNtnSignalStrength(onCompleted);
} else {
- logd("updateNtnSignalStrengthReporting: stopSendingNtnSignalStrength");
+ plogd("updateNtnSignalStrengthReporting: stopSendingNtnSignalStrength");
mSatelliteModemInterface.stopSendingNtnSignalStrength(onCompleted);
}
}
@@ -4542,12 +4556,12 @@
*/
public boolean setShouldSendDatagramToModemInDemoMode(boolean shouldSendToModemInDemoMode) {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
- logd("setShouldSendDatagramToModemInDemoMode: oemEnabledSatelliteFlag is disabled");
+ plogd("setShouldSendDatagramToModemInDemoMode: oemEnabledSatelliteFlag is disabled");
return false;
}
if (!isMockModemAllowed()) {
- logd("setShouldSendDatagramToModemInDemoMode: mock modem not allowed.");
+ plogd("setShouldSendDatagramToModemInDemoMode: mock modem not allowed.");
return false;
}
@@ -4584,7 +4598,7 @@
}
private void showSatelliteSystemNotification(int subId) {
- logd("showSatelliteSystemNotification");
+ plogd("showSatelliteSystemNotification");
final NotificationChannel notificationChannel = new NotificationChannel(
NOTIFICATION_CHANNEL_ID,
NOTIFICATION_CHANNEL,
@@ -4622,7 +4636,7 @@
intent.addCategory(Intent.CATEGORY_HOME);
return intent;
}).orElseGet(() -> {
- loge("showSatelliteSystemNotification: no default sms package name, Invoke "
+ ploge("showSatelliteSystemNotification: no default sms package name, Invoke "
+ "default sms compose window instead");
Intent newIntent = new Intent(Intent.ACTION_VIEW);
newIntent.setData(Uri.parse("sms:"));
@@ -4695,7 +4709,7 @@
if (mSatelliteSessionController != null) {
mSatelliteSessionController.onSatelliteEnablementFailed();
} else {
- loge("notifyEnablementFailedToSatelliteSessionController: mSatelliteSessionController"
+ ploge("notifyEnablementFailedToSatelliteSessionController: mSatelliteSessionController"
+ " is not initialized yet");
}
}
@@ -4745,4 +4759,45 @@
private static void loge(@NonNull String log) {
Rlog.e(TAG, log);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void plogw(@NonNull String log) {
+ Rlog.w(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.warn(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
+
+ private void tryFlushPersistedLogs(boolean isEmergency) {
+ // Flush persistent satellite logs on eSOS session end
+ if (isEmergency) {
+ DropBoxManagerLoggerBackend.getInstance(mContext).flushAsync();
+ }
+ }
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java b/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java
index 9f025db..da4c69b 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java
@@ -30,8 +30,10 @@
import android.os.Message;
import android.os.RegistrantList;
import android.os.RemoteException;
+import android.telephony.DropBoxManagerLoggerBackend;
import android.telephony.IBooleanConsumer;
import android.telephony.IIntegerConsumer;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.satellite.NtnSignalStrength;
import android.telephony.satellite.SatelliteCapabilities;
@@ -50,6 +52,7 @@
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.ExponentialBackoff;
+import com.android.internal.telephony.flags.FeatureFlags;
import java.util.Arrays;
import java.util.List;
@@ -81,6 +84,7 @@
@NonNull private String mVendorSatellitePackageName = "";
private boolean mIsBound;
private boolean mIsBinding;
+ @Nullable private PersistentLogger mPersistentLogger = null;
@NonNull private final RegistrantList mSatelliteProvisionStateChangedRegistrants =
new RegistrantList();
@@ -117,7 +121,7 @@
public void onSatelliteDatagramReceived(
android.telephony.satellite.stub.SatelliteDatagram datagram, int pendingCount) {
if (notifyResultIfExpectedListener()) {
- logd("onSatelliteDatagramReceived: pendingCount=" + pendingCount);
+ plogd("onSatelliteDatagramReceived: pendingCount=" + pendingCount);
mSatelliteDatagramsReceivedRegistrants.notifyResult(new Pair<>(
SatelliteServiceUtils.fromSatelliteDatagram(datagram), pendingCount));
}
@@ -126,7 +130,7 @@
@Override
public void onPendingDatagrams() {
if (notifyResultIfExpectedListener()) {
- logd("onPendingDatagrams");
+ plogd("onPendingDatagrams");
mPendingDatagramsRegistrants.notifyResult(null);
}
}
@@ -222,13 +226,15 @@
* Create the SatelliteModemInterface singleton instance.
* @param context The Context to use to create the SatelliteModemInterface.
* @param satelliteController The singleton instance of SatelliteController.
+ * @param featureFlags The telephony feature flags.
* @return The singleton instance of SatelliteModemInterface.
*/
public static SatelliteModemInterface make(@NonNull Context context,
- SatelliteController satelliteController) {
+ SatelliteController satelliteController,
+ @NonNull FeatureFlags featureFlags) {
if (sInstance == null) {
sInstance = new SatelliteModemInterface(
- context, satelliteController, Looper.getMainLooper());
+ context, satelliteController, Looper.getMainLooper(), featureFlags);
}
return sInstance;
}
@@ -237,11 +243,18 @@
* Create a SatelliteModemInterface to manage connections to the SatelliteService.
*
* @param context The Context for the SatelliteModemInterface.
+ * @param featureFlags The telephony feature flags.
* @param looper The Looper to run binding retry on.
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
protected SatelliteModemInterface(@NonNull Context context,
- SatelliteController satelliteController, @NonNull Looper looper) {
+ SatelliteController satelliteController,
+ @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags) {
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
mContext = context;
mDemoSimulator = DemoSimulator.make(context, satelliteController);
mVendorListener = new SatelliteListener(false);
@@ -265,7 +278,7 @@
bindService();
});
mExponentialBackoff.start();
- logd("Created SatelliteModemInterface. Attempting to bind to SatelliteService.");
+ plogd("Created SatelliteModemInterface. Attempting to bind to SatelliteService.");
bindService();
}
@@ -298,7 +311,7 @@
}
String packageName = getSatellitePackageName();
if (TextUtils.isEmpty(packageName)) {
- loge("Unable to bind to the satellite service because the package is undefined.");
+ ploge("Unable to bind to the satellite service because the package is undefined.");
// Since the package name comes from static device configs, stop retry because
// rebind will continue to fail without a valid package name.
synchronized (mLock) {
@@ -311,18 +324,18 @@
intent.setPackage(packageName);
mSatelliteServiceConnection = new SatelliteServiceConnection();
- logd("Binding to " + packageName);
+ plogd("Binding to " + packageName);
try {
boolean success = mContext.bindService(
intent, mSatelliteServiceConnection, Context.BIND_AUTO_CREATE);
if (success) {
- logd("Successfully bound to the satellite service.");
+ plogd("Successfully bound to the satellite service.");
} else {
synchronized (mLock) {
mIsBinding = false;
}
mExponentialBackoff.notifyFailed();
- loge("Error binding to the satellite service. Retrying in "
+ ploge("Error binding to the satellite service. Retrying in "
+ mExponentialBackoff.getCurrentDelay() + " ms.");
}
} catch (Exception e) {
@@ -330,7 +343,7 @@
mIsBinding = false;
}
mExponentialBackoff.notifyFailed();
- loge("Exception binding to the satellite service. Retrying in "
+ ploge("Exception binding to the satellite service. Retrying in "
+ mExponentialBackoff.getCurrentDelay() + " ms. Exception: " + e);
}
}
@@ -350,7 +363,7 @@
private class SatelliteServiceConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
- logd("onServiceConnected: ComponentName=" + name);
+ plogd("onServiceConnected: ComponentName=" + name);
synchronized (mLock) {
mIsBound = true;
mIsBinding = false;
@@ -362,14 +375,14 @@
mDemoSimulator.setSatelliteListener(mDemoListener);
} catch (RemoteException e) {
// TODO: Retry setSatelliteListener
- logd("setSatelliteListener: RemoteException " + e);
+ plogd("setSatelliteListener: RemoteException " + e);
}
mSatelliteController.onSatelliteServiceConnected();
}
@Override
public void onServiceDisconnected(ComponentName name) {
- loge("onServiceDisconnected: Waiting for reconnect.");
+ ploge("onServiceDisconnected: Waiting for reconnect.");
synchronized (mLock) {
mIsBinding = false;
}
@@ -379,7 +392,7 @@
@Override
public void onBindingDied(ComponentName name) {
- loge("onBindingDied: Unbinding and rebinding service.");
+ ploge("onBindingDied: Unbinding and rebinding service.");
synchronized (mLock) {
mIsBound = false;
mIsBinding = false;
@@ -595,7 +608,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestSatelliteListeningEnabled: " + error);
+ plogd("requestSatelliteListeningEnabled: " + error);
Binder.withCleanCallingIdentity(() -> {
if (message != null) {
sendMessageWithResult(message, null, error);
@@ -604,14 +617,14 @@
}
});
} catch (RemoteException e) {
- loge("requestSatelliteListeningEnabled: RemoteException " + e);
+ ploge("requestSatelliteListeningEnabled: RemoteException " + e);
if (message != null) {
sendMessageWithResult(
message, null, SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
}
} else {
- loge("requestSatelliteListeningEnabled: Satellite service is unavailable.");
+ ploge("requestSatelliteListeningEnabled: Satellite service is unavailable.");
if (message != null) {
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
@@ -633,7 +646,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("enableCellularModemWhileSatelliteModeIsOn: " + error);
+ plogd("enableCellularModemWhileSatelliteModeIsOn: " + error);
Binder.withCleanCallingIdentity(() -> {
if (message != null) {
sendMessageWithResult(message, null, error);
@@ -650,14 +663,14 @@
enabled, errorCallback);
}
} catch (RemoteException e) {
- loge("enableCellularModemWhileSatelliteModeIsOn: RemoteException " + e);
+ ploge("enableCellularModemWhileSatelliteModeIsOn: RemoteException " + e);
if (message != null) {
sendMessageWithResult(
message, null, SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
}
} else {
- loge("enableCellularModemWhileSatelliteModeIsOn: Satellite service is unavailable.");
+ ploge("enableCellularModemWhileSatelliteModeIsOn: Satellite service is unavailable.");
if (message != null) {
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
@@ -683,18 +696,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("setSatelliteEnabled: " + error);
+ plogd("setSatelliteEnabled: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("setSatelliteEnabled: RemoteException " + e);
+ ploge("setSatelliteEnabled: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("setSatelliteEnabled: Satellite service is unavailable.");
+ ploge("setSatelliteEnabled: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -712,7 +725,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestIsSatelliteEnabled: " + error);
+ plogd("requestIsSatelliteEnabled: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -722,18 +735,18 @@
// Convert for compatibility with SatelliteResponse
// TODO: This should just report result instead.
int[] enabled = new int[] {result ? 1 : 0};
- logd("requestIsSatelliteEnabled: " + Arrays.toString(enabled));
+ plogd("requestIsSatelliteEnabled: " + Arrays.toString(enabled));
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, enabled, SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestIsSatelliteEnabled: RemoteException " + e);
+ ploge("requestIsSatelliteEnabled: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestIsSatelliteEnabled: Satellite service is unavailable.");
+ ploge("requestIsSatelliteEnabled: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -751,25 +764,25 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestIsSatelliteSupported: " + error);
+ plogd("requestIsSatelliteSupported: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
}, new IBooleanConsumer.Stub() {
@Override
public void accept(boolean result) {
- logd("requestIsSatelliteSupported: " + result);
+ plogd("requestIsSatelliteSupported: " + result);
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, result, SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestIsSatelliteSupported: RemoteException " + e);
+ ploge("requestIsSatelliteSupported: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestIsSatelliteSupported: Satellite service is unavailable.");
+ ploge("requestIsSatelliteSupported: Satellite service is unavailable.");
sendMessageWithResult(
message, null, SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -787,7 +800,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestSatelliteCapabilities: " + error);
+ plogd("requestSatelliteCapabilities: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -797,18 +810,18 @@
result) {
SatelliteCapabilities capabilities =
SatelliteServiceUtils.fromSatelliteCapabilities(result);
- logd("requestSatelliteCapabilities: " + capabilities);
+ plogd("requestSatelliteCapabilities: " + capabilities);
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, capabilities, SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestSatelliteCapabilities: RemoteException " + e);
+ ploge("requestSatelliteCapabilities: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestSatelliteCapabilities: Satellite service is unavailable.");
+ ploge("requestSatelliteCapabilities: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -828,18 +841,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("startSendingSatellitePointingInfo: " + error);
+ plogd("startSendingSatellitePointingInfo: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("startSendingSatellitePointingInfo: RemoteException " + e);
+ ploge("startSendingSatellitePointingInfo: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("startSendingSatellitePointingInfo: Satellite service is unavailable.");
+ ploge("startSendingSatellitePointingInfo: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -858,18 +871,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("stopSendingSatellitePointingInfo: " + error);
+ plogd("stopSendingSatellitePointingInfo: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("stopSendingSatellitePointingInfo: RemoteException " + e);
+ ploge("stopSendingSatellitePointingInfo: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("stopSendingSatellitePointingInfo: Satellite service is unavailable.");
+ ploge("stopSendingSatellitePointingInfo: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -894,18 +907,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("provisionSatelliteService: " + error);
+ plogd("provisionSatelliteService: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("provisionSatelliteService: RemoteException " + e);
+ ploge("provisionSatelliteService: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("provisionSatelliteService: Satellite service is unavailable.");
+ ploge("provisionSatelliteService: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -926,18 +939,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("deprovisionSatelliteService: " + error);
+ plogd("deprovisionSatelliteService: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("deprovisionSatelliteService: RemoteException " + e);
+ ploge("deprovisionSatelliteService: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("deprovisionSatelliteService: Satellite service is unavailable.");
+ ploge("deprovisionSatelliteService: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -955,7 +968,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestIsSatelliteProvisioned: " + error);
+ plogd("requestIsSatelliteProvisioned: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -965,18 +978,18 @@
// Convert for compatibility with SatelliteResponse
// TODO: This should just report result instead.
int[] provisioned = new int[] {result ? 1 : 0};
- logd("requestIsSatelliteProvisioned: " + Arrays.toString(provisioned));
+ plogd("requestIsSatelliteProvisioned: " + Arrays.toString(provisioned));
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, provisioned, SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestIsSatelliteProvisioned: RemoteException " + e);
+ ploge("requestIsSatelliteProvisioned: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestIsSatelliteProvisioned: Satellite service is unavailable.");
+ ploge("requestIsSatelliteProvisioned: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -996,18 +1009,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("pollPendingDatagrams: " + error);
+ plogd("pollPendingDatagrams: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("pollPendingDatagrams: RemoteException " + e);
+ ploge("pollPendingDatagrams: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("pollPendingDatagrams: Satellite service is unavailable.");
+ ploge("pollPendingDatagrams: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1032,18 +1045,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("sendDatagram: " + error);
+ plogd("sendDatagram: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("sendDatagram: RemoteException " + e);
+ ploge("sendDatagram: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("sendDatagram: Satellite service is unavailable.");
+ ploge("sendDatagram: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1063,7 +1076,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestSatelliteModemState: " + error);
+ plogd("requestSatelliteModemState: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -1072,18 +1085,18 @@
public void accept(int result) {
// Convert SatelliteModemState from service to frameworks definition.
int modemState = SatelliteServiceUtils.fromSatelliteModemState(result);
- logd("requestSatelliteModemState: " + modemState);
+ plogd("requestSatelliteModemState: " + modemState);
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, modemState, SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestSatelliteModemState: RemoteException " + e);
+ ploge("requestSatelliteModemState: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestSatelliteModemState: Satellite service is unavailable.");
+ ploge("requestSatelliteModemState: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1104,7 +1117,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestTimeForNextSatelliteVisibility: " + error);
+ plogd("requestTimeForNextSatelliteVisibility: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -1114,19 +1127,19 @@
// Convert for compatibility with SatelliteResponse
// TODO: This should just report result instead.
int[] time = new int[] {result};
- logd("requestTimeForNextSatelliteVisibility: "
+ plogd("requestTimeForNextSatelliteVisibility: "
+ Arrays.toString(time));
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, time, SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestTimeForNextSatelliteVisibility: RemoteException " + e);
+ ploge("requestTimeForNextSatelliteVisibility: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestTimeForNextSatelliteVisibility: Satellite service is unavailable.");
+ ploge("requestTimeForNextSatelliteVisibility: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1159,18 +1172,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("setSatellitePlmn: " + error);
+ plogd("setSatellitePlmn: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("setSatellitePlmn: RemoteException " + e);
+ ploge("setSatellitePlmn: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("setSatellitePlmn: Satellite service is unavailable.");
+ ploge("setSatellitePlmn: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1194,18 +1207,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestSetSatelliteEnabledForCarrier: " + error);
+ plogd("requestSetSatelliteEnabledForCarrier: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("requestSetSatelliteEnabledForCarrier: RemoteException " + e);
+ ploge("requestSetSatelliteEnabledForCarrier: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestSetSatelliteEnabledForCarrier: Satellite service is unavailable.");
+ ploge("requestSetSatelliteEnabledForCarrier: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED);
}
@@ -1227,7 +1240,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestIsSatelliteEnabledForCarrier: " + error);
+ plogd("requestIsSatelliteEnabledForCarrier: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -1237,7 +1250,7 @@
// Convert for compatibility with SatelliteResponse
// TODO: This should just report result instead.
int[] enabled = new int[] {result ? 1 : 0};
- logd("requestIsSatelliteEnabledForCarrier: "
+ plogd("requestIsSatelliteEnabledForCarrier: "
+ Arrays.toString(enabled));
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, enabled,
@@ -1245,12 +1258,12 @@
}
});
} catch (RemoteException e) {
- loge("requestIsSatelliteEnabledForCarrier: RemoteException " + e);
+ ploge("requestIsSatelliteEnabledForCarrier: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestIsSatelliteEnabledForCarrier: Satellite service is unavailable.");
+ ploge("requestIsSatelliteEnabledForCarrier: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1269,7 +1282,7 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestNtnSignalStrength: " + error);
+ plogd("requestNtnSignalStrength: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
@@ -1279,19 +1292,19 @@
android.telephony.satellite.stub.NtnSignalStrength result) {
NtnSignalStrength ntnSignalStrength =
SatelliteServiceUtils.fromNtnSignalStrength(result);
- logd("requestNtnSignalStrength: " + ntnSignalStrength);
+ plogd("requestNtnSignalStrength: " + ntnSignalStrength);
Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
message, ntnSignalStrength,
SatelliteManager.SATELLITE_RESULT_SUCCESS));
}
});
} catch (RemoteException e) {
- loge("requestNtnSignalStrength: RemoteException " + e);
+ ploge("requestNtnSignalStrength: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("requestNtnSignalStrength: Satellite service is unavailable.");
+ ploge("requestNtnSignalStrength: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1310,18 +1323,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("startSendingNtnSignalStrength: " + error);
+ plogd("startSendingNtnSignalStrength: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("startSendingNtnSignalStrength: RemoteException " + e);
+ ploge("startSendingNtnSignalStrength: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("startSendingNtnSignalStrength: Satellite service is unavailable.");
+ ploge("startSendingNtnSignalStrength: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1339,18 +1352,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("stopSendingNtnSignalStrength: " + error);
+ plogd("stopSendingNtnSignalStrength: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("stopSendingNtnSignalStrength: RemoteException " + e);
+ ploge("stopSendingNtnSignalStrength: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("stopSendingNtnSignalStrength: Satellite service is unavailable.");
+ ploge("stopSendingNtnSignalStrength: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1368,18 +1381,18 @@
@Override
public void accept(int result) {
int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("abortSendingSatelliteDatagrams: " + error);
+ plogd("abortSendingSatelliteDatagrams: " + error);
Binder.withCleanCallingIdentity(() ->
sendMessageWithResult(message, null, error));
}
});
} catch (RemoteException e) {
- loge("abortSendingSatelliteDatagrams: RemoteException " + e);
+ ploge("abortSendingSatelliteDatagrams: RemoteException " + e);
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
}
} else {
- loge("abortSendingSatelliteDatagrams: Satellite service is unavailable.");
+ ploge("abortSendingSatelliteDatagrams: Satellite service is unavailable.");
sendMessageWithResult(message, null,
SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
}
@@ -1405,7 +1418,7 @@
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
public void setSatelliteServicePackageName(@Nullable String servicePackageName) {
- logd("setSatelliteServicePackageName: config_satellite_service_package is "
+ plogd("setSatelliteServicePackageName: config_satellite_service_package is "
+ "updated, new packageName=" + servicePackageName);
mExponentialBackoff.stop();
if (mSatelliteServiceConnection != null) {
@@ -1442,4 +1455,31 @@
private static void loge(@NonNull String log) {
Rlog.e(TAG, log);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java b/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
index c497ca1..aa87d39 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
@@ -24,6 +24,7 @@
import static android.telephony.satellite.SatelliteManager.EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS;
import static android.telephony.satellite.SatelliteManager.EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911;
+import static com.android.internal.telephony.flags.Flags.satellitePersistentLogging;
import static com.android.internal.telephony.satellite.SatelliteController.INVALID_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE;
import android.annotation.NonNull;
@@ -42,6 +43,8 @@
import android.os.SystemProperties;
import android.provider.DeviceConfig;
import android.telecom.Connection;
+import android.telephony.DropBoxManagerLoggerBackend;
+import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
@@ -109,13 +112,16 @@
protected int mCountOfTimerStarted = 0;
private final Object mLock = new Object();
+ @Nullable private PersistentLogger mPersistentLogger = null;
+
/**
* Create an instance of SatelliteSOSMessageRecommender.
*
* @param context The Context for the SatelliteSOSMessageRecommender.
* @param looper The looper used with the handler of this class.
*/
- public SatelliteSOSMessageRecommender(@NonNull Context context, @NonNull Looper looper) {
+ public SatelliteSOSMessageRecommender(@NonNull Context context,
+ @NonNull Looper looper) {
this(context, looper, SatelliteController.getInstance(), null);
}
@@ -131,8 +137,13 @@
*/
@VisibleForTesting
protected SatelliteSOSMessageRecommender(@NonNull Context context, @NonNull Looper looper,
- @NonNull SatelliteController satelliteController, ImsManager imsManager) {
+ @NonNull SatelliteController satelliteController,
+ ImsManager imsManager) {
super(looper);
+ if (isSatellitePersistentLoggingEnabled(context)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
mContext = context;
mSatelliteController = satelliteController;
mImsManager = imsManager;
@@ -141,7 +152,7 @@
mISatelliteProvisionStateCallback = new ISatelliteProvisionStateCallback.Stub() {
@Override
public void onSatelliteProvisionStateChanged(boolean provisioned) {
- logd("onSatelliteProvisionStateChanged: provisioned=" + provisioned);
+ plogd("onSatelliteProvisionStateChanged: provisioned=" + provisioned);
sendMessage(obtainMessage(EVENT_SATELLITE_PROVISIONED_STATE_CHANGED, provisioned));
}
};
@@ -172,7 +183,7 @@
handleSatelliteAccessRestrictionCheckingResult((boolean) msg.obj);
break;
default:
- logd("handleMessage: unexpected message code: " + msg.what);
+ plogd("handleMessage: unexpected message code: " + msg.what);
break;
}
}
@@ -186,7 +197,7 @@
public void onEmergencyCallStarted(@NonNull Connection connection) {
if (!mSatelliteController.isSatelliteSupportedViaOem()
&& !mSatelliteController.isSatelliteEmergencyMessagingSupportedViaCarrier()) {
- logd("onEmergencyCallStarted: satellite is not supported");
+ plogd("onEmergencyCallStarted: satellite is not supported");
return;
}
@@ -215,10 +226,10 @@
*/
public void onEmergencyCallConnectionStateChanged(
String callId, @Connection.ConnectionState int state) {
- logd("callId=" + callId + ", state=" + state);
+ plogd("callId=" + callId + ", state=" + state);
if (!mSatelliteController.isSatelliteSupportedViaOem()
&& !mSatelliteController.isSatelliteEmergencyMessagingSupportedViaCarrier()) {
- logd("onEmergencyCallConnectionStateChanged: satellite is not supported");
+ plogd("onEmergencyCallConnectionStateChanged: satellite is not supported");
return;
}
Pair<String, Integer> argument = new Pair<>(callId, state);
@@ -263,12 +274,12 @@
private void evaluateSendingConnectionEventDisplayEmergencyMessage() {
synchronized (mLock) {
if (mEmergencyConnection == null) {
- loge("No emergency call is ongoing...");
+ ploge("No emergency call is ongoing...");
return;
}
if (!mIsTimerTimedOut || mCheckingAccessRestrictionInProgress) {
- logd("mIsTimerTimedOut=" + mIsTimerTimedOut
+ plogd("mIsTimerTimedOut=" + mIsTimerTimedOut
+ ", mCheckingAccessRestrictionInProgress="
+ mCheckingAccessRestrictionInProgress);
return;
@@ -286,14 +297,14 @@
&& isSatelliteAllowed()
&& (isSatelliteViaOemAvailable() || isSatelliteViaCarrierAvailable())
&& shouldTrackCall(mEmergencyConnection.getState())) {
- logd("handleTimeoutEvent: Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer");
+ plogd("handleTimeoutEvent: Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer");
Bundle extras = createExtraBundleForEventDisplayEmergencyMessage();
mEmergencyConnection.sendConnectionEvent(
TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras);
isDialerNotified = true;
}
- logd("handleTimeoutEvent: isImsRegistered=" + isImsRegistered()
+ plogd("handleTimeoutEvent: isImsRegistered=" + isImsRegistered()
+ ", isCellularAvailable=" + isCellularAvailable()
+ ", isSatelliteAllowed=" + isSatelliteAllowed()
+ ", shouldTrackCall=" + shouldTrackCall(mEmergencyConnection.getState()));
@@ -340,7 +351,7 @@
String callId = arg.first;
int state = arg.second;
if (!mEmergencyConnection.getTelecomCallId().equals(callId)) {
- loge("handleEmergencyCallConnectionStateChangedEvent: unexpected state changed event "
+ ploge("handleEmergencyCallConnectionStateChangedEvent: unexpected state changed event "
+ ", mEmergencyConnection=" + mEmergencyConnection + ", callId=" + callId
+ ", state=" + state);
/*
@@ -409,7 +420,7 @@
imsManager.addRegistrationCallback(
getOrCreateImsRegistrationCallback(phone.getPhoneId()), this::post);
} catch (ImsException ex) {
- loge("registerForImsRegistrationStateChanged: ex=" + ex);
+ ploge("registerForImsRegistrationStateChanged: ex=" + ex);
}
}
@@ -430,7 +441,7 @@
imsManager.removeRegistrationListener(
mImsRegistrationCallbacks.get(phone.getPhoneId()));
} else {
- loge("Phone ID=" + phone.getPhoneId() + " was not registered with ImsManager");
+ ploge("Phone ID=" + phone.getPhoneId() + " was not registered with ImsManager");
}
}
@@ -523,7 +534,7 @@
} else {
mTimeoutMillis = mOemEnabledTimeoutMillis;
}
- logd("mTimeoutMillis = " + mTimeoutMillis);
+ plogd("mTimeoutMillis = " + mTimeoutMillis);
}
private static long getOemEnabledEmergencyCallWaitForConnectionTimeoutMillis(
@@ -631,7 +642,7 @@
packageName = defaultSmsAppComponent.getPackageName();
className = defaultSmsAppComponent.getClassName();
}
- logd("EVENT_DISPLAY_EMERGENCY_MESSAGE: handoverType=" + handoverType + ", packageName="
+ plogd("EVENT_DISPLAY_EMERGENCY_MESSAGE: handoverType=" + handoverType + ", packageName="
+ packageName + ", className=" + className + ", action=" + action);
Bundle result = new Bundle();
@@ -652,7 +663,7 @@
if (mEmergencyConnection != null) {
emergencyNumber = mEmergencyConnection.getAddress().getSchemeSpecificPart();
}
- logd("emergencyNumber=" + emergencyNumber);
+ plogd("emergencyNumber=" + emergencyNumber);
Uri uri = Uri.parse("smsto:" + emergencyNumber);
intent = new Intent(Intent.ACTION_SENDTO, uri);
@@ -684,7 +695,7 @@
private void handleCmdSendEventDisplayEmergencyMessageForcefully(
@NonNull Connection connection) {
- logd("Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer forcefully.");
+ plogd("Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer forcefully.");
mEmergencyConnection = connection;
Bundle extras = createExtraBundleForEventDisplayEmergencyMessage();
connection.sendConnectionEvent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras);
@@ -694,7 +705,7 @@
private boolean isMultiSim() {
TelephonyManager telephonyManager = mContext.getSystemService(TelephonyManager.class);
if (telephonyManager == null) {
- loge("isMultiSim: telephonyManager is null");
+ ploge("isMultiSim: telephonyManager is null");
return false;
}
return telephonyManager.isMultiSimEnabled();
@@ -711,7 +722,7 @@
private void requestIsSatelliteAllowedForCurrentLocation() {
synchronized (mLock) {
if (mCheckingAccessRestrictionInProgress) {
- logd("requestIsSatelliteCommunicationAllowedForCurrentLocation was already sent");
+ plogd("requestIsSatelliteCommunicationAllowedForCurrentLocation was already sent");
return;
}
mCheckingAccessRestrictionInProgress = true;
@@ -721,14 +732,14 @@
new OutcomeReceiver<>() {
@Override
public void onResult(Boolean result) {
- logd("requestIsSatelliteAllowedForCurrentLocation: result=" + result);
+ plogd("requestIsSatelliteAllowedForCurrentLocation: result=" + result);
sendMessage(obtainMessage(
EVENT_SATELLITE_ACCESS_RESTRICTION_CHECKING_RESULT, result));
}
@Override
public void onError(SatelliteManager.SatelliteException ex) {
- logd("requestIsSatelliteAllowedForCurrentLocation: onError, ex=" + ex);
+ plogd("requestIsSatelliteAllowedForCurrentLocation: onError, ex=" + ex);
sendMessage(obtainMessage(
EVENT_SATELLITE_ACCESS_RESTRICTION_CHECKING_RESULT, false));
}
@@ -760,4 +771,31 @@
private static void loge(@NonNull String log) {
Rlog.e(TAG, log);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context) {
+ if (satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ Rlog.d(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ Rlog.e(TAG, log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java b/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
index dcf9bb0..dde10a0 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
@@ -39,6 +39,9 @@
import android.os.Message;
import android.os.RemoteException;
import android.os.SystemProperties;
+import android.telephony.DropBoxManagerLoggerBackend;
+import android.telephony.PersistentLogger;
+import android.telephony.Rlog;
import android.telephony.satellite.ISatelliteModemStateCallback;
import android.telephony.satellite.SatelliteManager;
import android.telephony.satellite.stub.ISatelliteGateway;
@@ -50,6 +53,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.ExponentialBackoff;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
@@ -141,6 +145,8 @@
@NonNull private boolean mIsDisableCellularModemInProgress = false;
@NonNull private final SatelliteController mSatelliteController;
@NonNull private final DatagramController mDatagramController;
+ @Nullable private PersistentLogger mPersistentLogger = null;
+
/**
* @return The singleton instance of SatelliteSessionController.
@@ -157,13 +163,21 @@
*
* @param context The Context for the SatelliteSessionController.
* @param looper The looper associated with the handler of this class.
+ * @param featureFlags The telephony feature flags.
* @param isSatelliteSupported Whether satellite is supported on the device.
* @return The singleton instance of SatelliteSessionController.
*/
public static SatelliteSessionController make(
- @NonNull Context context, @NonNull Looper looper, boolean isSatelliteSupported) {
+ @NonNull Context context,
+ @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
+ boolean isSatelliteSupported) {
if (sInstance == null || isSatelliteSupported != sInstance.mIsSatelliteSupported) {
- sInstance = new SatelliteSessionController(context, looper, isSatelliteSupported,
+ sInstance = new SatelliteSessionController(
+ context,
+ looper,
+ featureFlags,
+ isSatelliteSupported,
SatelliteModemInterface.getInstance());
}
return sInstance;
@@ -174,15 +188,22 @@
*
* @param context The Context for the SatelliteSessionController.
* @param looper The looper associated with the handler of this class.
+ * @param featureFlags The telephony feature flags.
* @param isSatelliteSupported Whether satellite is supported on the device.
* @param satelliteModemInterface The singleton of SatelliteModemInterface.
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
protected SatelliteSessionController(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
boolean isSatelliteSupported,
@NonNull SatelliteModemInterface satelliteModemInterface) {
super(TAG, looper);
+ if (isSatellitePersistentLoggingEnabled(context, featureFlags)) {
+ mPersistentLogger = new PersistentLogger(
+ DropBoxManagerLoggerBackend.getInstance(context));
+ }
+
mContext = context;
mSatelliteModemInterface = satelliteModemInterface;
mSatelliteController = SatelliteController.getInstance();
@@ -297,7 +318,7 @@
callback.onSatelliteModemStateChanged(mCurrentState);
mListeners.put(callback.asBinder(), callback);
} catch (RemoteException ex) {
- loge("registerForSatelliteModemStateChanged: Got RemoteException ex=" + ex);
+ ploge("registerForSatelliteModemStateChanged: Got RemoteException ex=" + ex);
}
}
@@ -323,11 +344,11 @@
*/
boolean setSatelliteListeningTimeoutDuration(long timeoutMillis) {
if (!isMockModemAllowed()) {
- loge("Updating listening timeout duration is not allowed");
+ ploge("Updating listening timeout duration is not allowed");
return false;
}
- logd("setSatelliteListeningTimeoutDuration: timeoutMillis=" + timeoutMillis);
+ plogd("setSatelliteListeningTimeoutDuration: timeoutMillis=" + timeoutMillis);
if (timeoutMillis == 0) {
mSatelliteStayAtListeningFromSendingMillis =
getSatelliteStayAtListeningFromSendingMillis();
@@ -353,12 +374,12 @@
*/
boolean setSatelliteGatewayServicePackageName(@Nullable String servicePackageName) {
if (!isMockModemAllowed()) {
- loge("setSatelliteGatewayServicePackageName: modifying satellite gateway service "
+ ploge("setSatelliteGatewayServicePackageName: modifying satellite gateway service "
+ "package name is not allowed");
return false;
}
- logd("setSatelliteGatewayServicePackageName: config_satellite_gateway_service_package is "
+ plogd("setSatelliteGatewayServicePackageName: config_satellite_gateway_service_package is "
+ "updated, new packageName=" + servicePackageName);
if (servicePackageName == null || servicePackageName.equals("null")) {
@@ -397,7 +418,7 @@
* @return {@code true} if state machine is in enabling state and {@code false} otherwise.
*/
public boolean isInEnablingState() {
- if (DBG) logd("isInEnablingState: getCurrentState=" + getCurrentState());
+ if (DBG) plogd("isInEnablingState: getCurrentState=" + getCurrentState());
return getCurrentState() == mEnablingState;
}
@@ -419,14 +440,14 @@
private class UnavailableState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering UnavailableState");
+ if (DBG) plogd("Entering UnavailableState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE;
notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE);
}
@Override
public boolean processMessage(Message msg) {
- loge("UnavailableState: receive msg " + getWhatToString(msg.what) + " unexpectedly");
+ ploge("UnavailableState: receive msg " + getWhatToString(msg.what) + " unexpectedly");
return HANDLED;
}
}
@@ -434,7 +455,7 @@
private class PowerOffState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering PowerOffState");
+ if (DBG) plogd("Entering PowerOffState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_OFF;
mIsSendingTriggeredDuringTransferringState.set(false);
@@ -449,14 +470,14 @@
@Override
public void exit() {
- if (DBG) logd("Exiting PowerOffState");
- logd("Attempting to bind to SatelliteGatewayService.");
+ if (DBG) plogd("Exiting PowerOffState");
+ plogd("Attempting to bind to SatelliteGatewayService.");
bindService();
}
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("PowerOffState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("PowerOffState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_SATELLITE_ENABLEMENT_STARTED:
handleSatelliteEnablementStarted((boolean) msg.obj);
@@ -470,7 +491,7 @@
if (enabled) {
transitionTo(mEnablingState);
} else {
- logw("Unexpected satellite disablement started in PowerOff state");
+ plogw("Unexpected satellite disablement started in PowerOff state");
}
}
}
@@ -478,7 +499,7 @@
private class EnablingState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering EnablingState");
+ if (DBG) plogd("Entering EnablingState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE;
notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE);
@@ -486,12 +507,12 @@
@Override
public void exit() {
- if (DBG) logd("Exiting EnablingState");
+ if (DBG) plogd("Exiting EnablingState");
}
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("EnablingState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("EnablingState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_SATELLITE_ENABLED_STATE_CHANGED:
handleSatelliteEnabledStateChanged((boolean) msg.obj);
@@ -531,7 +552,7 @@
private class DisablingState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering DisablingState");
+ if (DBG) plogd("Entering DisablingState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE;
notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE);
@@ -539,12 +560,12 @@
@Override
public void exit() {
- if (DBG) logd("Exiting DisablingState");
+ if (DBG) plogd("Exiting DisablingState");
}
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("DisablingState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("DisablingState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_SATELLITE_ENABLED_STATE_CHANGED:
handleSatelliteEnabledStateChanged((boolean) msg.obj);
@@ -556,7 +577,7 @@
private void handleSatelliteEnabledStateChanged(boolean on) {
if (on) {
- logw("Unexpected power on event while disabling satellite");
+ plogw("Unexpected power on event while disabling satellite");
} else {
transitionTo(mPowerOffState);
}
@@ -566,7 +587,7 @@
private class IdleState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering IdleState");
+ if (DBG) plogd("Entering IdleState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_IDLE;
mIsSendingTriggeredDuringTransferringState.set(false);
stopNbIotInactivityTimer();
@@ -577,7 +598,7 @@
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("IdleState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("IdleState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_DATAGRAM_TRANSFER_STATE_CHANGED:
handleEventDatagramTransferStateChanged((DatagramTransferState) msg.obj);
@@ -603,7 +624,7 @@
|| (datagramTransferState.receiveState
== SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING)) {
if (mSatelliteController.isSatelliteAttachRequired()) {
- loge("Unexpected transferring state received for NB-IOT NTN");
+ ploge("Unexpected transferring state received for NB-IOT NTN");
} else {
transitionTo(mTransferringState);
}
@@ -614,7 +635,7 @@
if (mSatelliteController.isSatelliteAttachRequired()) {
disableCellularModemWhileSatelliteModeIsOn();
} else {
- loge("Unexpected transferring state received for non-NB-IOT NTN");
+ ploge("Unexpected transferring state received for non-NB-IOT NTN");
}
}
}
@@ -630,7 +651,7 @@
}
mIsDisableCellularModemInProgress = false;
} else {
- loge("DisableCellularModemWhileSatelliteModeIsOn is not in progress");
+ ploge("DisableCellularModemWhileSatelliteModeIsOn is not in progress");
}
}
}
@@ -638,7 +659,7 @@
private void disableCellularModemWhileSatelliteModeIsOn() {
synchronized (mLock) {
if (mIsDisableCellularModemInProgress) {
- logd("Cellular scanning is already being disabled");
+ plogd("Cellular scanning is already being disabled");
return;
}
@@ -652,7 +673,7 @@
@Override
public void exit() {
- if (DBG) logd("Exiting IdleState");
+ if (DBG) plogd("Exiting IdleState");
if (!mSatelliteController.isSatelliteAttachRequired()) {
// Disable cellular modem scanning
mSatelliteModemInterface.enableCellularModemWhileSatelliteModeIsOn(false, null);
@@ -663,7 +684,7 @@
private class TransferringState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering TransferringState");
+ if (DBG) plogd("Entering TransferringState");
stopNbIotInactivityTimer();
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING;
notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
@@ -671,7 +692,7 @@
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("TransferringState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("TransferringState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_DATAGRAM_TRANSFER_STATE_CHANGED:
handleEventDatagramTransferStateChanged((DatagramTransferState) msg.obj);
@@ -722,7 +743,7 @@
private class ListeningState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering ListeningState");
+ if (DBG) plogd("Entering ListeningState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_LISTENING;
long timeoutMillis = updateListeningMode(true);
@@ -733,7 +754,7 @@
@Override
public void exit() {
- if (DBG) logd("Exiting ListeningState");
+ if (DBG) plogd("Exiting ListeningState");
removeMessages(EVENT_LISTENING_TIMER_TIMEOUT);
updateListeningMode(false);
@@ -741,7 +762,7 @@
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("ListeningState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("ListeningState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_LISTENING_TIMER_TIMEOUT:
transitionTo(mIdleState);
@@ -785,7 +806,7 @@
private class NotConnectedState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering NotConnectedState");
+ if (DBG) plogd("Entering NotConnectedState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED;
notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);
@@ -794,12 +815,12 @@
@Override
public void exit() {
- if (DBG) logd("Exiting NotConnectedState");
+ if (DBG) plogd("Exiting NotConnectedState");
}
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("NotConnectedState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("NotConnectedState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_SATELLITE_ENABLED_STATE_CHANGED:
handleSatelliteEnabledStateChanged(
@@ -850,7 +871,7 @@
private class ConnectedState extends State {
@Override
public void enter() {
- if (DBG) logd("Entering ConnectedState");
+ if (DBG) plogd("Entering ConnectedState");
mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED;
notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
@@ -859,12 +880,12 @@
@Override
public void exit() {
- if (DBG) logd("Exiting ConnectedState");
+ if (DBG) plogd("Exiting ConnectedState");
}
@Override
public boolean processMessage(Message msg) {
- if (DBG) log("ConnectedState: processing " + getWhatToString(msg.what));
+ if (DBG) plogd("ConnectedState: processing " + getWhatToString(msg.what));
switch (msg.what) {
case EVENT_SATELLITE_ENABLED_STATE_CHANGED:
handleSatelliteEnabledStateChanged(
@@ -956,7 +977,7 @@
try {
listener.onSatelliteModemStateChanged(state);
} catch (RemoteException e) {
- logd("notifyStateChangedEvent RemoteException: " + e);
+ plogd("notifyStateChangedEvent RemoteException: " + e);
toBeRemoved.add(listener);
}
});
@@ -970,7 +991,7 @@
if (off) {
transitionTo(mPowerOffState);
} else {
- loge(caller + ": Unexpected satellite radio powered-on state changed event");
+ ploge(caller + ": Unexpected satellite radio powered-on state changed event");
}
}
@@ -1003,7 +1024,7 @@
String packageName = getSatelliteGatewayPackageName();
if (TextUtils.isEmpty(packageName)) {
- loge("Unable to bind to the satellite gateway service because the package is"
+ ploge("Unable to bind to the satellite gateway service because the package is"
+ " undefined.");
// Since the package name comes from static device configs, stop retry because
// rebind will continue to fail without a valid package name.
@@ -1021,13 +1042,13 @@
boolean success = mContext.bindService(
intent, mSatelliteGatewayServiceConnection, Context.BIND_AUTO_CREATE);
if (success) {
- logd("Successfully bound to the satellite gateway service.");
+ plogd("Successfully bound to the satellite gateway service.");
} else {
synchronized (mLock) {
mIsBinding = false;
}
mExponentialBackoff.notifyFailed();
- loge("Error binding to the satellite gateway service. Retrying in "
+ ploge("Error binding to the satellite gateway service. Retrying in "
+ mExponentialBackoff.getCurrentDelay() + " ms.");
}
} catch (Exception e) {
@@ -1035,13 +1056,13 @@
mIsBinding = false;
}
mExponentialBackoff.notifyFailed();
- loge("Exception binding to the satellite gateway service. Retrying in "
+ ploge("Exception binding to the satellite gateway service. Retrying in "
+ mExponentialBackoff.getCurrentDelay() + " ms. Exception: " + e);
}
}
private void unbindService() {
- logd("unbindService");
+ plogd("unbindService");
mExponentialBackoff.stop();
mSatelliteGatewayService = null;
synchronized (mLock) {
@@ -1056,7 +1077,7 @@
private class SatelliteGatewayServiceConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
- logd("onServiceConnected: ComponentName=" + name);
+ plogd("onServiceConnected: ComponentName=" + name);
synchronized (mLock) {
mIsBound = true;
mIsBinding = false;
@@ -1067,7 +1088,7 @@
@Override
public void onServiceDisconnected(ComponentName name) {
- loge("onServiceDisconnected: Waiting for reconnect.");
+ ploge("onServiceDisconnected: Waiting for reconnect.");
synchronized (mLock) {
mIsBinding = false;
mIsBound = false;
@@ -1077,7 +1098,7 @@
@Override
public void onBindingDied(ComponentName name) {
- loge("onBindingDied: Unbinding and rebinding service.");
+ ploge("onBindingDied: Unbinding and rebinding service.");
synchronized (mLock) {
mIsBound = false;
mIsBinding = false;
@@ -1132,7 +1153,7 @@
private void startNbIotInactivityTimer() {
if (isNbIotInactivityTimerStarted()) {
- logd("NB IOT inactivity timer is already started");
+ plogd("NB IOT inactivity timer is already started");
return;
}
@@ -1152,4 +1173,38 @@
private boolean isNbIotInactivityTimerStarted() {
return hasMessages(EVENT_NB_IOT_INACTIVITY_TIMER_TIMED_OUT);
}
+
+ private boolean isSatellitePersistentLoggingEnabled(
+ @NonNull Context context, @NonNull FeatureFlags featureFlags) {
+ if (featureFlags.satellitePersistentLogging()) {
+ return true;
+ }
+ try {
+ return context.getResources().getBoolean(
+ R.bool.config_dropboxmanager_persistent_logging_enabled);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ }
+
+ private void plogd(@NonNull String log) {
+ logd(log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.debug(TAG, log);
+ }
+ }
+
+ private void plogw(@NonNull String log) {
+ logw(log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.warn(TAG, log);
+ }
+ }
+
+ private void ploge(@NonNull String log) {
+ loge(log);
+ if (mPersistentLogger != null) {
+ mPersistentLogger.error(TAG, log);
+ }
+ }
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java b/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java
index 552b5a7..4612ad9 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java
@@ -65,6 +65,7 @@
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.Bundle;
+import android.os.DropBoxManager;
import android.os.Handler;
import android.os.IInterface;
import android.os.PersistableBundle;
@@ -313,6 +314,8 @@
return mImsManager;
case Context.DEVICE_POLICY_SERVICE:
return mDevicePolicyManager;
+ case Context.DROPBOX_SERVICE:
+ return mDropBoxManager;
default:
return null;
}
@@ -364,6 +367,8 @@
return Context.DEVICE_POLICY_SERVICE;
} else if (serviceClass == NotificationManager.class) {
return Context.NOTIFICATION_SERVICE;
+ } else if (serviceClass == DropBoxManager.class) {
+ return Context.DROPBOX_SERVICE;
}
return super.getSystemServiceName(serviceClass);
}
@@ -739,6 +744,7 @@
private final NetworkPolicyManager mNetworkPolicyManager = mock(NetworkPolicyManager.class);
private final ImsManager mImsManager = mock(ImsManager.class);
private final DevicePolicyManager mDevicePolicyManager = mock(DevicePolicyManager.class);
+ private final DropBoxManager mDropBoxManager = mock(DropBoxManager.class);
private final Configuration mConfiguration = new Configuration();
private final DisplayMetrics mDisplayMetrics = new DisplayMetrics();
private final SharedPreferences mSharedPreferences = PreferenceManager
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java
index f1508ee..2961b4d 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java
@@ -87,7 +87,7 @@
when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true);
when(mMockSatelliteController.isSatelliteAttachRequired()).thenReturn(true);
mDatagramControllerUT = new DatagramController(
- mContext, Looper.myLooper(), mMockPointingAppController);
+ mContext, Looper.myLooper(), mFeatureFlags, mMockPointingAppController);
// Move both send and receive to IDLE state
mDatagramControllerUT.updateSendStatus(SUB_ID, DATAGRAM_TYPE_UNKNOWN,
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
index 1bb45b8..7094399 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
@@ -60,6 +60,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.TelephonyTest;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats;
import com.android.internal.telephony.satellite.metrics.SessionMetricsStats;
@@ -155,7 +156,9 @@
mMockSessionMetricsStats);
when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true);
+ when(mFeatureFlags.satellitePersistentLogging()).thenReturn(true);
mDatagramDispatcherUT = new TestDatagramDispatcher(mContext, Looper.myLooper(),
+ mFeatureFlags,
mMockDatagramController);
mResultListener = new LinkedBlockingQueue<>(1);
@@ -782,8 +785,9 @@
private long mLong = SATELLITE_ALIGN_TIMEOUT;
TestDatagramDispatcher(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull DatagramController datagramController) {
- super(context, looper, datagramController);
+ super(context, looper, featureFlags, datagramController);
}
@Override
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramReceiverTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramReceiverTest.java
index 4d3acb4..947661b 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramReceiverTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramReceiverTest.java
@@ -58,6 +58,7 @@
import com.android.internal.telephony.IVoidConsumer;
import com.android.internal.telephony.TelephonyTest;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats;
import com.android.internal.telephony.satellite.metrics.SessionMetricsStats;
@@ -126,9 +127,11 @@
replaceInstance(SessionMetricsStats.class, "sInstance", null,
mMockSessionMetricsStats);
- mDatagramReceiverUT = DatagramReceiver.make(mContext, Looper.myLooper(),
+ when(mFeatureFlags.satellitePersistentLogging()).thenReturn(true);
+ mDatagramReceiverUT = DatagramReceiver.make(mContext, Looper.myLooper(), mFeatureFlags,
mMockDatagramController);
mTestDemoModeDatagramReceiver = new TestDatagramReceiver(mContext, Looper.myLooper(),
+ mFeatureFlags,
mMockDatagramController);
mSatelliteDatagramListenerHandler = new DatagramReceiver.SatelliteDatagramListenerHandler(
Looper.myLooper(), SUB_ID);
@@ -490,8 +493,9 @@
private long mLong = SATELLITE_ALIGN_TIMEOUT;
TestDatagramReceiver(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags,
@NonNull DatagramController datagramController) {
- super(context, looper, datagramController);
+ super(context, looper, featureFlags, datagramController);
}
@Override
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java
index c1f3a88..36d32fe 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java
@@ -100,12 +100,13 @@
super.setUp(getClass().getSimpleName());
MockitoAnnotations.initMocks(this);
logd(TAG + " Setup!");
+ when(mFeatureFlags.satellitePersistentLogging()).thenReturn(true);
mInOrderForPointingUi = inOrder(mContext);
replaceInstance(SatelliteModemInterface.class, "sInstance", null,
mMockSatelliteModemInterface);
replaceInstance(SatelliteController.class, "sInstance", null,
mMockSatelliteController);
- mPointingAppController = new PointingAppController(mContext);
+ mPointingAppController = new PointingAppController(mContext, mFeatureFlags);
mContextFixture.putResource(R.string.config_pointing_ui_package,
KEY_POINTING_UI_PACKAGE_NAME);
mContextFixture.putResource(R.string.config_pointing_ui_class,
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSessionControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSessionControllerTest.java
index f6131ea..78763d1 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSessionControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSessionControllerTest.java
@@ -45,6 +45,7 @@
import android.testing.TestableLooper;
import com.android.internal.telephony.TelephonyTest;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
@@ -105,11 +106,12 @@
Resources resources = mContext.getResources();
when(resources.getInteger(anyInt())).thenReturn(TEST_SATELLITE_TIMEOUT_MILLIS);
+ when(mFeatureFlags.satellitePersistentLogging()).thenReturn(true);
when(mMockSatelliteController.isSatelliteAttachRequired()).thenReturn(false);
mSatelliteModemInterface = new TestSatelliteModemInterface(
- mContext, mMockSatelliteController, Looper.myLooper());
+ mContext, mMockSatelliteController, Looper.myLooper(), mFeatureFlags);
mTestSatelliteSessionController = new TestSatelliteSessionController(mContext,
- Looper.myLooper(), true, mSatelliteModemInterface);
+ Looper.myLooper(), mFeatureFlags, true, mSatelliteModemInterface);
processAllMessages();
mTestSatelliteModemStateCallback = new TestSatelliteModemStateCallback();
@@ -131,7 +133,7 @@
* state.
*/
TestSatelliteSessionController sessionController1 = new TestSatelliteSessionController(
- mContext, Looper.myLooper(), false, mSatelliteModemInterface);
+ mContext, Looper.myLooper(), mFeatureFlags, false, mSatelliteModemInterface);
assertNotNull(sessionController1);
processAllMessages();
assertEquals(STATE_UNAVAILABLE, sessionController1.getCurrentStateName());
@@ -140,7 +142,7 @@
* Since satellite is supported, SatelliteSessionController should move to POWER_OFF state.
*/
TestSatelliteSessionController sessionController2 = new TestSatelliteSessionController(
- mContext, Looper.myLooper(), true, mSatelliteModemInterface);
+ mContext, Looper.myLooper(), mFeatureFlags, true, mSatelliteModemInterface);
assertNotNull(sessionController2);
processAllMessages();
assertEquals(STATE_POWER_OFF, sessionController2.getCurrentStateName());
@@ -153,7 +155,7 @@
* state.
*/
TestSatelliteSessionController sessionController = new TestSatelliteSessionController(
- mContext, Looper.myLooper(), false, mSatelliteModemInterface);
+ mContext, Looper.myLooper(), mFeatureFlags, false, mSatelliteModemInterface);
assertNotNull(sessionController);
processAllMessages();
assertEquals(STATE_UNAVAILABLE, sessionController.getCurrentStateName());
@@ -1117,8 +1119,9 @@
private int mErrorCode = SatelliteManager.SATELLITE_RESULT_SUCCESS;
TestSatelliteModemInterface(@NonNull Context context,
- SatelliteController satelliteController, @NonNull Looper looper) {
- super(context, satelliteController, looper);
+ SatelliteController satelliteController, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags) {
+ super(context, satelliteController, looper, featureFlags);
mExponentialBackoff.stop();
}
@@ -1161,9 +1164,10 @@
}
private static class TestSatelliteSessionController extends SatelliteSessionController {
- TestSatelliteSessionController(Context context, Looper looper, boolean isSatelliteSupported,
+ TestSatelliteSessionController(Context context, Looper looper, FeatureFlags featureFlags,
+ boolean isSatelliteSupported,
SatelliteModemInterface satelliteModemInterface) {
- super(context, looper, isSatelliteSupported, satelliteModemInterface);
+ super(context, looper, featureFlags, isSatelliteSupported, satelliteModemInterface);
}
String getCurrentStateName() {