Merge "Implement physicalChannelConfig framework/base"

This commit is contained in:
Pengquan Meng
2018-11-28 19:34:46 +00:00
committed by Gerrit Code Review

View File

@@ -16,11 +16,15 @@
package android.telephony; package android.telephony;
import android.annotation.IntDef;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.annotation.IntDef; import android.telephony.TelephonyManager.NetworkType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.Objects;
/** /**
* @hide * @hide
@@ -50,6 +54,7 @@ public final class PhysicalChannelConfig implements Parcelable {
* *
* <p>One of {@link #CONNECTION_PRIMARY_SERVING}, {@link #CONNECTION_SECONDARY_SERVING}. * <p>One of {@link #CONNECTION_PRIMARY_SERVING}, {@link #CONNECTION_SECONDARY_SERVING}.
*/ */
@ConnectionStatus
private int mCellConnectionStatus; private int mCellConnectionStatus;
/** /**
@@ -57,15 +62,33 @@ public final class PhysicalChannelConfig implements Parcelable {
*/ */
private int mCellBandwidthDownlinkKhz; private int mCellBandwidthDownlinkKhz;
public PhysicalChannelConfig(int status, int bandwidth) { /**
mCellConnectionStatus = status; * The radio technology for this physical channel.
mCellBandwidthDownlinkKhz = bandwidth; */
} @NetworkType
private int mRat;
public PhysicalChannelConfig(Parcel in) { /**
mCellConnectionStatus = in.readInt(); * The rough frequency range for this physical channel.
mCellBandwidthDownlinkKhz = in.readInt(); */
} @ServiceState.FrequencyRange
private int mFrequencyRange;
/**
* The absolute radio frequency channel number, {@link Integer#MAX_VALUE} if unknown.
*/
private int mChannelNumber;
/**
* A list of data calls mapped to this physical channel. An empty list means the physical
* channel has no data call mapped to it.
*/
private int[] mContextIds;
/**
* The physical cell identifier for this cell - PCI, PSC, {@link Integer#MAX_VALUE} if known.
*/
private int mPhysicalCellId;
@Override @Override
public int describeContents() { public int describeContents() {
@@ -76,6 +99,11 @@ public final class PhysicalChannelConfig implements Parcelable {
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mCellConnectionStatus); dest.writeInt(mCellConnectionStatus);
dest.writeInt(mCellBandwidthDownlinkKhz); dest.writeInt(mCellBandwidthDownlinkKhz);
dest.writeInt(mRat);
dest.writeInt(mChannelNumber);
dest.writeInt(mFrequencyRange);
dest.writeIntArray(mContextIds);
dest.writeInt(mPhysicalCellId);
} }
/** /**
@@ -85,6 +113,60 @@ public final class PhysicalChannelConfig implements Parcelable {
return mCellBandwidthDownlinkKhz; return mCellBandwidthDownlinkKhz;
} }
/**
* Get the list of data call ids mapped to this physical channel. This list is sorted into
* ascending numerical order. Each id in this list must match the id in
* {@link com.android.internal.telephony.dataconnection.DataConnection}. An empty list means the
* physical channel has no data call mapped to it.
*
* @return an integer list indicates the data call ids.
*/
public int[] getContextIds() {
return mContextIds;
}
/**
* @return the rough frequency range for this physical channel.
* @see {@link ServiceState#FREQUENCY_RANGE_LOW}
* @see {@link ServiceState#FREQUENCY_RANGE_MID}
* @see {@link ServiceState#FREQUENCY_RANGE_HIGH}
* @see {@link ServiceState#FREQUENCY_RANGE_MMWAVE}
*/
@ServiceState.FrequencyRange
public int getFrequencyRange() {
return mFrequencyRange;
}
/**
* @return the absolute radio frequency channel number for this physical channel,
* {@link Integer#MAX_VALUE} if unknown.
*/
public int getChannelNumber() {
return mChannelNumber;
}
/**
* In UTRAN, this value is primary scrambling code. The range is [0, 511].
* Reference: 3GPP TS 25.213 section 5.2.2.
*
* In EUTRAN, this value is physical layer cell identity. The range is [0, 503].
* Reference: 3GPP TS 36.211 section 6.11.
*
* In 5G RAN, this value is physical layer cell identity. The range is [0, 1008].
* Reference: 3GPP TS 38.211 section 7.4.2.1.
*
* @return the physical cell identifier for this cell, {@link Integer#MAX_VALUE} if unknown.
*/
public int getPhysicalCellId() {
return mPhysicalCellId;
}
/**The radio technology for this physical channel. */
@NetworkType
public int getRat() {
return mRat;
}
/** /**
* Gets the connection status of the cell. * Gets the connection status of the cell.
* *
@@ -125,12 +207,19 @@ public final class PhysicalChannelConfig implements Parcelable {
PhysicalChannelConfig config = (PhysicalChannelConfig) o; PhysicalChannelConfig config = (PhysicalChannelConfig) o;
return mCellConnectionStatus == config.mCellConnectionStatus return mCellConnectionStatus == config.mCellConnectionStatus
&& mCellBandwidthDownlinkKhz == config.mCellBandwidthDownlinkKhz; && mCellBandwidthDownlinkKhz == config.mCellBandwidthDownlinkKhz
&& mRat == config.mRat
&& mFrequencyRange == config.mFrequencyRange
&& mChannelNumber == config.mChannelNumber
&& mPhysicalCellId == config.mPhysicalCellId
&& Arrays.equals(mContextIds, config.mContextIds);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return (mCellBandwidthDownlinkKhz * 29) + (mCellConnectionStatus * 31); return Objects.hash(
mCellConnectionStatus, mCellBandwidthDownlinkKhz, mRat, mFrequencyRange,
mChannelNumber, mPhysicalCellId, mContextIds);
} }
public static final Parcelable.Creator<PhysicalChannelConfig> CREATOR = public static final Parcelable.Creator<PhysicalChannelConfig> CREATOR =
@@ -147,11 +236,111 @@ public final class PhysicalChannelConfig implements Parcelable {
@Override @Override
public String toString() { public String toString() {
return new StringBuilder() return new StringBuilder()
.append("{mConnectionStatus=") .append("{mConnectionStatus=")
.append(getConnectionStatusString()) .append(getConnectionStatusString())
.append(",mCellBandwidthDownlinkKhz=") .append(",mCellBandwidthDownlinkKhz=")
.append(mCellBandwidthDownlinkKhz) .append(mCellBandwidthDownlinkKhz)
.append("}") .append(",mRat=")
.toString(); .append(mRat)
.append(",mFrequencyRange=")
.append(mFrequencyRange)
.append(",mChannelNumber=")
.append(mChannelNumber)
.append(",mContextIds=")
.append(mContextIds.toString())
.append(",mPhysicalCellId=")
.append(mPhysicalCellId)
.append("}")
.toString();
}
private PhysicalChannelConfig(Parcel in) {
mCellConnectionStatus = in.readInt();
mCellBandwidthDownlinkKhz = in.readInt();
mRat = in.readInt();
mChannelNumber = in.readInt();
mFrequencyRange = in.readInt();
mContextIds = in.createIntArray();
mPhysicalCellId = in.readInt();
}
private PhysicalChannelConfig(Builder builder) {
mCellConnectionStatus = builder.mCellConnectionStatus;
mCellBandwidthDownlinkKhz = builder.mCellBandwidthDownlinkKhz;
mRat = builder.mRat;
mChannelNumber = builder.mChannelNumber;
mFrequencyRange = builder.mFrequencyRange;
mContextIds = builder.mContextIds;
mPhysicalCellId = builder.mPhysicalCellId;
}
/** The builder of {@code PhysicalChannelConfig}. */
public static final class Builder {
private int mRat;
private int mFrequencyRange;
private int mChannelNumber;
private int mCellBandwidthDownlinkKhz;
private int mCellConnectionStatus;
private int[] mContextIds;
private int mPhysicalCellId;
/** @hide */
public Builder() {
mRat = ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN;
mFrequencyRange = ServiceState.FREQUENCY_RANGE_UNKNOWN;
mChannelNumber = Integer.MAX_VALUE;
mCellBandwidthDownlinkKhz = 0;
mCellConnectionStatus = CONNECTION_UNKNOWN;
mContextIds = new int[0];
mPhysicalCellId = Integer.MAX_VALUE;
}
/** @hide */
public PhysicalChannelConfig build() {
return new PhysicalChannelConfig(this);
}
/** @hide */
public Builder setRat(int rat) {
this.mRat = rat;
return this;
}
/** @hide */
public Builder setFrequencyRange(int frequencyRange) {
this.mFrequencyRange = frequencyRange;
return this;
}
/** @hide */
public Builder setChannelNumber(int channelNumber) {
this.mChannelNumber = channelNumber;
return this;
}
/** @hide */
public Builder setCellBandwidthDownlinkKhz(int cellBandwidthDownlinkKhz) {
this.mCellBandwidthDownlinkKhz = cellBandwidthDownlinkKhz;
return this;
}
/** @hide */
public Builder setCellConnectionStatus(int connectionStatus) {
this.mCellConnectionStatus = connectionStatus;
return this;
}
/** @hide */
public Builder setContextIds(int[] contextIds) {
if (contextIds != null) Arrays.sort(contextIds);
this.mContextIds = contextIds;
return this;
}
/** @hide */
public Builder setPhysicalCellId(int physicalCellId) {
this.mPhysicalCellId = physicalCellId;
return this;
}
} }
} }