16a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde/* 26a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Copyright (C) 2013 The Android Open Source Project 36a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * 46a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Licensed under the Apache License, Version 2.0 (the "License"); 56a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * you may not use this file except in compliance with the License. 66a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * You may obtain a copy of the License at 76a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * 86a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * http://www.apache.org/licenses/LICENSE-2.0 96a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * 106a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Unless required by applicable law or agreed to in writing, software 116a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * distributed under the License is distributed on an "AS IS" BASIS, 126a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * See the License for the specific language governing permissions and 146a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * limitations under the License. 156a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 166a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 176a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapndepackage android.net; 186a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 196a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapndeimport android.os.Parcel; 206a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapndeimport android.os.Parcelable; 216a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 226a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde/** 236a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Class that represents useful attributes of generic network links 246a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * such as the upload/download throughput or packet error rate. 256a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Generally speaking, you should be dealing with instances of 266a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * LinkQualityInfo subclasses, such as {@link android.net.#WifiLinkQualityInfo} 276a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * or {@link android.net.#MobileLinkQualityInfo} which provide additional 286a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * information. 296a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 306a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 316a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapndepublic class LinkQualityInfo implements Parcelable { 326a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 336a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 346a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Represents a value that you can use to test if an integer field is set to a good value 356a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 366a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public static final int UNKNOWN_INT = Integer.MAX_VALUE; 376a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 386a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 396a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Represents a value that you can use to test if a long field is set to a good value 406a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 416a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public static final long UNKNOWN_LONG = Long.MAX_VALUE; 426a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 436a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public static final int NORMALIZED_MIN_SIGNAL_STRENGTH = 0; 446a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 456a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public static final int NORMALIZED_MAX_SIGNAL_STRENGTH = 99; 466a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 476a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public static final int NORMALIZED_SIGNAL_STRENGTH_RANGE = 486a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde NORMALIZED_MAX_SIGNAL_STRENGTH - NORMALIZED_MIN_SIGNAL_STRENGTH + 1; 496a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 506a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /* Network type as defined by ConnectivityManager */ 516a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private int mNetworkType = ConnectivityManager.TYPE_NONE; 526a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 536a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private int mNormalizedSignalStrength = UNKNOWN_INT; 546a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 556a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private long mPacketCount = UNKNOWN_LONG; 566a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private long mPacketErrorCount = UNKNOWN_LONG; 576a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private int mTheoreticalTxBandwidth = UNKNOWN_INT; 586a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private int mTheoreticalRxBandwidth = UNKNOWN_INT; 596a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private int mTheoreticalLatency = UNKNOWN_INT; 606a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 616a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /* Timestamp when last sample was made available */ 626a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private long mLastDataSampleTime = UNKNOWN_LONG; 636a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 646a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /* Sample duration in millisecond */ 656a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde private int mDataSampleDuration = UNKNOWN_INT; 666a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 676a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public LinkQualityInfo() { 686a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 696a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 706a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 716a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 726a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Implement the Parcelable interface 736a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 746a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 756a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int describeContents() { 766a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return 0; 776a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 786a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 796a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 806a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * Implement the Parcelable interface. 816a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 826a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 836a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde protected static final int OBJECT_TYPE_LINK_QUALITY_INFO = 1; 846a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde protected static final int OBJECT_TYPE_WIFI_LINK_QUALITY_INFO = 2; 856a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde protected static final int OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO = 3; 866a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 876a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 886a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 896a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 906a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void writeToParcel(Parcel dest, int flags) { 916a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde writeToParcel(dest, flags, OBJECT_TYPE_LINK_QUALITY_INFO); 926a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 936a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 946a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 956a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 966a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 976a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void writeToParcel(Parcel dest, int flags, int objectType) { 986a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(objectType); 996a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(mNetworkType); 1006a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(mNormalizedSignalStrength); 1016a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeLong(mPacketCount); 1026a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeLong(mPacketErrorCount); 1036a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(mTheoreticalTxBandwidth); 1046a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(mTheoreticalRxBandwidth); 1056a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(mTheoreticalLatency); 1066a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeLong(mLastDataSampleTime); 1076a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde dest.writeInt(mDataSampleDuration); 1086a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1096a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1106a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1116a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 1126a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1136a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public static final Creator<LinkQualityInfo> CREATOR = 1146a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde new Creator<LinkQualityInfo>() { 1156a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public LinkQualityInfo createFromParcel(Parcel in) { 1166a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde int objectType = in.readInt(); 1176a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde if (objectType == OBJECT_TYPE_LINK_QUALITY_INFO) { 1186a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde LinkQualityInfo li = new LinkQualityInfo(); 1196a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde li.initializeFromParcel(in); 1206a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return li; 1216a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } else if (objectType == OBJECT_TYPE_WIFI_LINK_QUALITY_INFO) { 1226a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return WifiLinkQualityInfo.createFromParcelBody(in); 1236a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } else if (objectType == OBJECT_TYPE_MOBILE_LINK_QUALITY_INFO) { 1246a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return MobileLinkQualityInfo.createFromParcelBody(in); 1256a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } else { 1266a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return null; 1276a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1286a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1296a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1306a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public LinkQualityInfo[] newArray(int size) { 1316a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return new LinkQualityInfo[size]; 1326a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1336a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde }; 1346a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1356a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1366a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 1376a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1386a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde protected void initializeFromParcel(Parcel in) { 1396a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mNetworkType = in.readInt(); 1406a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mNormalizedSignalStrength = in.readInt(); 1416a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mPacketCount = in.readLong(); 1426a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mPacketErrorCount = in.readLong(); 1436a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mTheoreticalTxBandwidth = in.readInt(); 1446a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mTheoreticalRxBandwidth = in.readInt(); 1456a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mTheoreticalLatency = in.readInt(); 1466a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mLastDataSampleTime = in.readLong(); 1476a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mDataSampleDuration = in.readInt(); 1486a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1496a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1506a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1516a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the type of network this link is connected to 1526a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return network type as defined by {@link android.net.ConnectivityManager} or 1536a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * {@link android.net.LinkQualityInfo#UNKNOWN_INT} 1546a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1556a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int getNetworkType() { 1566a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mNetworkType; 1576a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1586a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1596a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1606a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 1616a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1626a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setNetworkType(int networkType) { 1636a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mNetworkType = networkType; 1646a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1656a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1666a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1676a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the signal strength normalized across multiple types of networks 1686a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return an integer value from 0 - 99 or {@link android.net.LinkQualityInfo#UNKNOWN_INT} 1696a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1706a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int getNormalizedSignalStrength() { 1716a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mNormalizedSignalStrength; 1726a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1736a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1746a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1756a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 1766a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1776a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setNormalizedSignalStrength(int normalizedSignalStrength) { 1786a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mNormalizedSignalStrength = normalizedSignalStrength; 1796a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1806a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1816a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1826a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the total number of packets sent or received in sample duration 1836a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG} 1846a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1856a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public long getPacketCount() { 1866a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mPacketCount; 1876a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1886a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1896a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1906a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 1916a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 1926a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setPacketCount(long packetCount) { 1936a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mPacketCount = packetCount; 1946a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 1956a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 1966a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 1976a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the total number of packets errors encountered in sample duration 1986a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return number of errors or {@link android.net.LinkQualityInfo#UNKNOWN_LONG} 1996a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2006a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public long getPacketErrorCount() { 2016a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mPacketErrorCount; 2026a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2036a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2046a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2056a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 2066a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2076a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setPacketErrorCount(long packetErrorCount) { 2086a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mPacketErrorCount = packetErrorCount; 2096a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2106a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2116a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2126a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the theoretical upload bandwidth of this network 2136a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return bandwidth in Kbps or {@link android.net.LinkQualityInfo#UNKNOWN_INT} 2146a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2156a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int getTheoreticalTxBandwidth() { 2166a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mTheoreticalTxBandwidth; 2176a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2186a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2196a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2206a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 2216a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2226a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setTheoreticalTxBandwidth(int theoreticalTxBandwidth) { 2236a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mTheoreticalTxBandwidth = theoreticalTxBandwidth; 2246a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2256a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2266a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2276a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the theoretical download bandwidth of this network 2286a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return bandwidth in Kbps or {@link android.net.LinkQualityInfo#UNKNOWN_INT} 2296a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2306a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int getTheoreticalRxBandwidth() { 2316a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mTheoreticalRxBandwidth; 2326a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2336a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2346a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2356a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 2366a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2376a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setTheoreticalRxBandwidth(int theoreticalRxBandwidth) { 2386a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mTheoreticalRxBandwidth = theoreticalRxBandwidth; 2396a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2406a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2416a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2426a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the theoretical latency of this network 2436a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return latency in milliseconds or {@link android.net.LinkQualityInfo#UNKNOWN_INT} 2446a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2456a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int getTheoreticalLatency() { 2466a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mTheoreticalLatency; 2476a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2486a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2496a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2506a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 2516a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2526a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setTheoreticalLatency(int theoreticalLatency) { 2536a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mTheoreticalLatency = theoreticalLatency; 2546a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2556a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2566a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2576a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the time stamp of the last sample 2586a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return milliseconds elapsed since start and sample time or 2596a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * {@link android.net.LinkQualityInfo#UNKNOWN_LONG} 2606a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2616a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public long getLastDataSampleTime() { 2626a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mLastDataSampleTime; 2636a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2646a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2656a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2666a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 2676a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2686a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setLastDataSampleTime(long lastDataSampleTime) { 2696a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mLastDataSampleTime = lastDataSampleTime; 2706a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2716a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2726a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2736a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * returns the sample duration used 2746a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @return duration in milliseconds or {@link android.net.LinkQualityInfo#UNKNOWN_INT} 2756a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2766a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public int getDataSampleDuration() { 2776a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde return mDataSampleDuration; 2786a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2796a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde 2806a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde /** 2816a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde * @hide 2826a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */ 2836a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde public void setDataSampleDuration(int dataSampleDuration) { 2846a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde mDataSampleDuration = dataSampleDuration; 2856a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde } 2866a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde} 287