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