diff options
Diffstat (limited to 'core/java/android/net/LinkQualityInfo.java')
| -rw-r--r-- | core/java/android/net/LinkQualityInfo.java | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/core/java/android/net/LinkQualityInfo.java b/core/java/android/net/LinkQualityInfo.java new file mode 100644 index 000000000000..9c8e61d8fc82 --- /dev/null +++ b/core/java/android/net/LinkQualityInfo.java @@ -0,0 +1,286 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.net; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Class that represents useful attributes of generic network links + * such as the upload/download throughput or packet error rate. + * Generally speaking, you should be dealing with instances of + * LinkQualityInfo subclasses, such as {@link android.net.#WifiLinkQualityInfo} + * or {@link android.net.#MobileLinkQualityInfo} which provide additional + * information. + * @hide + */ +public class LinkQualityInfo implements Parcelable { + + /** + * Represents a value that you can use to test if an integer field is set to a good value + */ + public static final int UNKNOWN_INT = Integer.MAX_VALUE; + + /** + * Represents a value that you can use to test if a long field is set to a good value + */ + public static final long UNKNOWN_LONG = Long.MAX_VALUE; + + public static final int NORMALIZED_MIN_SIGNAL_STRENGTH = 0; + + public static final int NORMALIZED_MAX_SIGNAL_STRENGTH = 99; + + public static final int NORMALIZED_SIGNAL_STRENGTH_RANGE = + NORMALIZED_MAX_SIGNAL_STRENGTH - NORMALIZED_MIN_SIGNAL_STRENGTH + 1; + + /* Network type as defined by ConnectivityManager */ + private int mNetworkType = ConnectivityManager.TYPE_NONE; + + private int mNormalizedSignalStrength = UNKNOWN_INT; + + private long mPacketCount = UNKNOWN_LONG; + private long mPacketErrorCount = UNKNOWN_LONG; + private int mTheoreticalTxBandwidth = UNKNOWN_INT; + private int mTheoreticalRxBandwidth = UNKNOWN_INT; + private int mTheoreticalLatency = UNKNOWN_INT; + + /* Timestamp when last sample was made available */ + private long mLastDataSampleTime = UNKNOWN_LONG; + + /* Sample duration in millisecond */ + private int mDataSampleDuration = UNKNOWN_INT; + + public LinkQualityInfo() { + + } + + /** + * Implement the Parcelable interface + * @hide + */ + public int describeContents() { + return 0; + } + + /** + * Implement the Parcelable interface. + */ + + protected static final int OBJECT_TYPE_LINK_QUALITY_INFO = 1; + protected static final int OBJECT_TYPE_WIFI_LINK_QUALITY_INFO = 2; + protected static final int OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO = 3; + + /** + * @hide + */ + public void writeToParcel(Parcel dest, int flags) { + writeToParcel(dest, flags, OBJECT_TYPE_LINK_QUALITY_INFO); + } + + /** + * @hide + */ + public void writeToParcel(Parcel dest, int flags, int objectType) { + dest.writeInt(objectType); + dest.writeInt(mNetworkType); + dest.writeInt(mNormalizedSignalStrength); + dest.writeLong(mPacketCount); + dest.writeLong(mPacketErrorCount); + dest.writeInt(mTheoreticalTxBandwidth); + dest.writeInt(mTheoreticalRxBandwidth); + dest.writeInt(mTheoreticalLatency); + dest.writeLong(mLastDataSampleTime); + dest.writeInt(mDataSampleDuration); + } + + /** + * @hide + */ + public static final Creator<LinkQualityInfo> CREATOR = + new Creator<LinkQualityInfo>() { + public LinkQualityInfo createFromParcel(Parcel in) { + int objectType = in.readInt(); + if (objectType == OBJECT_TYPE_LINK_QUALITY_INFO) { + LinkQualityInfo li = new LinkQualityInfo(); + li.initializeFromParcel(in); + return li; + } else if (objectType == OBJECT_TYPE_WIFI_LINK_QUALITY_INFO) { + return WifiLinkQualityInfo.createFromParcelBody(in); + } else if (objectType == OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO) { + return MobileLinkQualityInfo.createFromParcelBody(in); + } else { + return null; + } + } + + public LinkQualityInfo[] newArray(int size) { + return new LinkQualityInfo[size]; + } + }; + + /** + * @hide + */ + protected void initializeFromParcel(Parcel in) { + mNetworkType = in.readInt(); + mNormalizedSignalStrength = in.readInt(); + mPacketCount = in.readLong(); + mPacketErrorCount = in.readLong(); + mTheoreticalTxBandwidth = in.readInt(); + mTheoreticalRxBandwidth = in.readInt(); + mTheoreticalLatency = in.readInt(); + mLastDataSampleTime = in.readLong(); + mDataSampleDuration = in.readInt(); + } + + /** + * returns the type of network this link is connected to + * @return network type as defined by {@link android.net.ConnectivityManager} or + * {@link android.net.LinkQualityInfo#UNKNOWN_INT} + */ + public int getNetworkType() { + return mNetworkType; + } + + /** + * @hide + */ + public void setNetworkType(int networkType) { + mNetworkType = networkType; + } + + /** + * returns the signal strength normalized across multiple types of networks + * @return an integer value from 0 - 99 or {@link android.net.LinkQualityInfo#UNKNOWN_INT} + */ + public int getNormalizedSignalStrength() { + return mNormalizedSignalStrength; + } + + /** + * @hide + */ + public void setNormalizedSignalStrength(int normalizedSignalStrength) { + mNormalizedSignalStrength = normalizedSignalStrength; + } + + /** + * returns the total number of packets sent or received in sample duration + * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG} + */ + public long getPacketCount() { + return mPacketCount; + } + + /** + * @hide + */ + public void setPacketCount(long packetCount) { + mPacketCount = packetCount; + } + + /** + * returns the total number of packets errors encountered in sample duration + * @return number of errors or {@link android.net.LinkQualityInfo#UNKNOWN_LONG} + */ + public long getPacketErrorCount() { + return mPacketErrorCount; + } + + /** + * @hide + */ + public void setPacketErrorCount(long packetErrorCount) { + mPacketErrorCount = packetErrorCount; + } + + /** + * returns the theoretical upload bandwidth of this network + * @return bandwidth in Kbps or {@link android.net.LinkQualityInfo#UNKNOWN_INT} + */ + public int getTheoreticalTxBandwidth() { + return mTheoreticalTxBandwidth; + } + + /** + * @hide + */ + public void setTheoreticalTxBandwidth(int theoreticalTxBandwidth) { + mTheoreticalTxBandwidth = theoreticalTxBandwidth; + } + + /** + * returns the theoretical download bandwidth of this network + * @return bandwidth in Kbps or {@link android.net.LinkQualityInfo#UNKNOWN_INT} + */ + public int getTheoreticalRxBandwidth() { + return mTheoreticalRxBandwidth; + } + + /** + * @hide + */ + public void setTheoreticalRxBandwidth(int theoreticalRxBandwidth) { + mTheoreticalRxBandwidth = theoreticalRxBandwidth; + } + + /** + * returns the theoretical latency of this network + * @return latency in milliseconds or {@link android.net.LinkQualityInfo#UNKNOWN_INT} + */ + public int getTheoreticalLatency() { + return mTheoreticalLatency; + } + + /** + * @hide + */ + public void setTheoreticalLatency(int theoreticalLatency) { + mTheoreticalLatency = theoreticalLatency; + } + + /** + * returns the time stamp of the last sample + * @return milliseconds elapsed since start and sample time or + * {@link android.net.LinkQualityInfo#UNKNOWN_LONG} + */ + public long getLastDataSampleTime() { + return mLastDataSampleTime; + } + + /** + * @hide + */ + public void setLastDataSampleTime(long lastDataSampleTime) { + mLastDataSampleTime = lastDataSampleTime; + } + + /** + * returns the sample duration used + * @return duration in milliseconds or {@link android.net.LinkQualityInfo#UNKNOWN_INT} + */ + public int getDataSampleDuration() { + return mDataSampleDuration; + } + + /** + * @hide + */ + public void setDataSampleDuration(int dataSampleDuration) { + mDataSampleDuration = dataSampleDuration; + } +} |
