Merge "Plumb PhysicalChannelConfig all the way up."

This commit is contained in:
Treehugger Robot
2018-03-01 03:48:32 +00:00
committed by Gerrit Code Review
5 changed files with 69 additions and 3 deletions

View File

@@ -37,6 +37,7 @@ import android.telephony.CellLocation;
import android.telephony.DisconnectCause; import android.telephony.DisconnectCause;
import android.telephony.LocationAccessPolicy; import android.telephony.LocationAccessPolicy;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState; import android.telephony.PreciseCallState;
import android.telephony.PreciseDataConnectionState; import android.telephony.PreciseDataConnectionState;
import android.telephony.PreciseDisconnectCause; import android.telephony.PreciseDisconnectCause;
@@ -179,6 +180,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
private ArrayList<List<CellInfo>> mCellInfo = null; private ArrayList<List<CellInfo>> mCellInfo = null;
private ArrayList<List<PhysicalChannelConfig>> mPhysicalChannelConfigs;
private VoLteServiceState mVoLteServiceState = new VoLteServiceState(); private VoLteServiceState mVoLteServiceState = new VoLteServiceState();
private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -335,6 +338,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
mDataConnectionLinkProperties = new LinkProperties[numPhones]; mDataConnectionLinkProperties = new LinkProperties[numPhones];
mDataConnectionNetworkCapabilities = new NetworkCapabilities[numPhones]; mDataConnectionNetworkCapabilities = new NetworkCapabilities[numPhones];
mCellInfo = new ArrayList<List<CellInfo>>(); mCellInfo = new ArrayList<List<CellInfo>>();
mPhysicalChannelConfigs = new ArrayList<List<PhysicalChannelConfig>>();
for (int i = 0; i < numPhones; i++) { for (int i = 0; i < numPhones; i++) {
mCallState[i] = TelephonyManager.CALL_STATE_IDLE; mCallState[i] = TelephonyManager.CALL_STATE_IDLE;
mDataActivity[i] = TelephonyManager.DATA_ACTIVITY_NONE; mDataActivity[i] = TelephonyManager.DATA_ACTIVITY_NONE;
@@ -349,6 +353,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
mCallForwarding[i] = false; mCallForwarding[i] = false;
mCellLocation[i] = new Bundle(); mCellLocation[i] = new Bundle();
mCellInfo.add(i, null); mCellInfo.add(i, null);
mPhysicalChannelConfigs.add(i, null);
mConnectedApns[i] = new ArrayList<String>(); mConnectedApns[i] = new ArrayList<String>();
} }
@@ -659,6 +664,14 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
remove(r.binder); remove(r.binder);
} }
} }
if ((events & PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION) != 0) {
try {
r.callback.onPhysicalChannelConfigurationChanged(
mPhysicalChannelConfigs.get(phoneId));
} catch (RemoteException ex) {
remove(r.binder);
}
}
} }
} }
} else { } else {
@@ -1020,6 +1033,45 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
} }
} }
public void notifyPhysicalChannelConfiguration(List<PhysicalChannelConfig> configs) {
notifyPhysicalChannelConfigurationForSubscriber(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
configs);
}
public void notifyPhysicalChannelConfigurationForSubscriber(int subId,
List<PhysicalChannelConfig> configs) {
if (!checkNotifyPermission("notifyPhysicalChannelConfiguration()")) {
return;
}
if (VDBG) {
log("notifyPhysicalChannelConfiguration: subId=" + subId + " configs=" + configs);
}
synchronized (mRecords) {
int phoneId = SubscriptionManager.getPhoneId(subId);
if (validatePhoneId(phoneId)) {
mPhysicalChannelConfigs.set(phoneId, configs);
for (Record r : mRecords) {
if (r.matchPhoneStateListenerEvent(
PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION)
&& idMatch(r.subId, subId, phoneId)) {
try {
if (DBG_LOC) {
log("notifyPhysicalChannelConfiguration: mPhysicalChannelConfigs="
+ configs + " r=" + r);
}
r.callback.onPhysicalChannelConfigurationChanged(configs);
} catch (RemoteException ex) {
mRemoveList.add(r.binder);
}
}
}
}
handleRemoveListLocked();
}
}
@Override @Override
public void notifyMessageWaitingChangedForPhoneId(int phoneId, int subId, boolean mwi) { public void notifyMessageWaitingChangedForPhoneId(int phoneId, int subId, boolean mwi) {
if (!checkNotifyPermission("notifyMessageWaitingChanged()")) { if (!checkNotifyPermission("notifyMessageWaitingChanged()")) {

View File

@@ -700,6 +700,10 @@ public class PhoneStateListener {
public void onCarrierNetworkChange(boolean active) { public void onCarrierNetworkChange(boolean active) {
send(LISTEN_CARRIER_NETWORK_CHANGE, 0, 0, active); send(LISTEN_CARRIER_NETWORK_CHANGE, 0, 0, active);
} }
public void onPhysicalChannelConfigurationChanged(List<PhysicalChannelConfig> configs) {
send(LISTEN_PHYSICAL_CHANNEL_CONFIGURATION, 0, 0, configs);
}
} }
IPhoneStateListener callback = new IPhoneStateListenerStub(this); IPhoneStateListener callback = new IPhoneStateListenerStub(this);

View File

@@ -27,8 +27,9 @@ import java.lang.annotation.RetentionPolicy;
*/ */
public final class PhysicalChannelConfig implements Parcelable { public final class PhysicalChannelConfig implements Parcelable {
// TODO(b/72993578) consolidate these enums in a central location.
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({CONNECTION_PRIMARY_SERVING, CONNECTION_SECONDARY_SERVING}) @IntDef({CONNECTION_PRIMARY_SERVING, CONNECTION_SECONDARY_SERVING, CONNECTION_UNKNOWN})
public @interface ConnectionStatus {} public @interface ConnectionStatus {}
/** /**
@@ -41,6 +42,9 @@ public final class PhysicalChannelConfig implements Parcelable {
*/ */
public static final int CONNECTION_SECONDARY_SERVING = 2; public static final int CONNECTION_SECONDARY_SERVING = 2;
/** Connection status is unknown. */
public static final int CONNECTION_UNKNOWN = Integer.MAX_VALUE;
/** /**
* Connection status of the cell. * Connection status of the cell.
* *
@@ -86,6 +90,7 @@ public final class PhysicalChannelConfig implements Parcelable {
* *
* @see #CONNECTION_PRIMARY_SERVING * @see #CONNECTION_PRIMARY_SERVING
* @see #CONNECTION_SECONDARY_SERVING * @see #CONNECTION_SECONDARY_SERVING
* @see #CONNECTION_UNKNOWN
* *
* @return Connection status of the cell * @return Connection status of the cell
*/ */

View File

@@ -21,6 +21,7 @@ import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
import android.telephony.CellInfo; import android.telephony.CellInfo;
import android.telephony.DataConnectionRealTimeInfo; import android.telephony.DataConnectionRealTimeInfo;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState; import android.telephony.PreciseCallState;
import android.telephony.PreciseDataConnectionState; import android.telephony.PreciseDataConnectionState;
import android.telephony.VoLteServiceState; import android.telephony.VoLteServiceState;
@@ -37,6 +38,7 @@ oneway interface IPhoneStateListener {
void onDataConnectionStateChanged(int state, int networkType); void onDataConnectionStateChanged(int state, int networkType);
void onDataActivity(int direction); void onDataActivity(int direction);
void onSignalStrengthsChanged(in SignalStrength signalStrength); void onSignalStrengthsChanged(in SignalStrength signalStrength);
void onPhysicalChannelConfigurationChanged(in List<PhysicalChannelConfig> configs);
void onOtaspChanged(in int otaspMode); void onOtaspChanged(in int otaspMode);
void onCellInfoChanged(in List<CellInfo> cellInfo); void onCellInfoChanged(in List<CellInfo> cellInfo);
void onPreciseCallStateChanged(in PreciseCallState callState); void onPreciseCallStateChanged(in PreciseCallState callState);

View File

@@ -21,9 +21,9 @@ import android.net.LinkProperties;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.os.Bundle; import android.os.Bundle;
import android.telephony.CellInfo; import android.telephony.CellInfo;
import android.telephony.PhysicalChannelConfig;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
import android.telephony.CellInfo;
import android.telephony.VoLteServiceState; import android.telephony.VoLteServiceState;
import com.android.internal.telephony.IPhoneStateListener; import com.android.internal.telephony.IPhoneStateListener;
import com.android.internal.telephony.IOnSubscriptionsChangedListener; import com.android.internal.telephony.IOnSubscriptionsChangedListener;
@@ -58,6 +58,9 @@ interface ITelephonyRegistry {
void notifyCellLocationForSubscriber(in int subId, in Bundle cellLocation); void notifyCellLocationForSubscriber(in int subId, in Bundle cellLocation);
void notifyOtaspChanged(in int otaspMode); void notifyOtaspChanged(in int otaspMode);
void notifyCellInfo(in List<CellInfo> cellInfo); void notifyCellInfo(in List<CellInfo> cellInfo);
void notifyPhysicalChannelConfiguration(in List<PhysicalChannelConfig> configs);
void notifyPhysicalChannelConfigurationForSubscriber(in int subId,
in List<PhysicalChannelConfig> configs);
void notifyPreciseCallState(int ringingCallState, int foregroundCallState, void notifyPreciseCallState(int ringingCallState, int foregroundCallState,
int backgroundCallState); int backgroundCallState);
void notifyDisconnectCause(int disconnectCause, int preciseDisconnectCause); void notifyDisconnectCause(int disconnectCause, int preciseDisconnectCause);