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 Deshapnde
216a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde/**
226a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde *  Class that represents useful attributes of wifi network links
236a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde *  such as the upload/download throughput or error rate etc.
246a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde *  @hide
256a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde */
266a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapndepublic class WifiLinkQualityInfo extends LinkQualityInfo {
276a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
286a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /* Indicates Wifi network type such as b/g etc*/
296a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    private int  mType = UNKNOWN_INT;
306a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
316a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    private String mBssid;
326a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
336a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /* Rssi found by scans */
346a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    private int  mRssi = UNKNOWN_INT;
356a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
366a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /* packet statistics */
376a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    private long mTxGood = UNKNOWN_LONG;
386a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    private long mTxBad = UNKNOWN_LONG;
396a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
406a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
416a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * Implement the Parcelable interface.
426a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
436a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
446a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    @Override
456a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public void writeToParcel(Parcel dest, int flags) {
466a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        super.writeToParcel(dest, flags, OBJECT_TYPE_WIFI_LINK_QUALITY_INFO);
476a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
486a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        dest.writeInt(mType);
496a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        dest.writeInt(mRssi);
506a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        dest.writeLong(mTxGood);
516a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        dest.writeLong(mTxBad);
526a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
536a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        dest.writeString(mBssid);
546a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
556a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
566a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /* Un-parceling helper */
576a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
586a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
596a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
606a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public static WifiLinkQualityInfo createFromParcelBody(Parcel in) {
616a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        WifiLinkQualityInfo li = new WifiLinkQualityInfo();
626a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
636a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        li.initializeFromParcel(in);
646a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
656a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        li.mType =  in.readInt();
666a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        li.mRssi =  in.readInt();
676a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        li.mTxGood =  in.readLong();
686a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        li.mTxBad =  in.readLong();
696a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
706a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        li.mBssid =  in.readString();
716a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
726a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        return li;
736a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
746a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
756a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
766a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * returns Wifi network type
776a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @return network type or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
786a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
796a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public int getType() {
806a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        return mType;
816a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
826a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
836a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
846a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
856a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
866a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public void setType(int type) {
876a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        mType = type;
886a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
896a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
906a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
916a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * returns BSSID of the access point
926a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @return the BSSID, in the form of a six-byte MAC address: {@code XX:XX:XX:XX:XX:XX} or null
936a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
946a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public String getBssid() {
956a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        return mBssid;
966a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
976a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
986a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
996a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
1006a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1016a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public void setBssid(String bssid) {
1026a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        mBssid = bssid;
1036a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1046a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
1056a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
1066a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * returns RSSI of the network in raw form
1076a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @return un-normalized RSSI or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
1086a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1096a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public int getRssi() {
1106a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        return mRssi;
1116a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1126a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
1136a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
1146a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
1156a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1166a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public void setRssi(int rssi) {
1176a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        mRssi = rssi;
1186a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1196a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
1206a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
1216a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * returns number of packets transmitted without error
1226a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG}
1236a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1246a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public long getTxGood() {
1256a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        return mTxGood;
1266a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1276a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
1286a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
1296a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
1306a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1316a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public void setTxGood(long txGood) {
1326a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        mTxGood = txGood;
1336a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1346a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
1356a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
1366a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * returns number of transmitted packets that encountered errors
1376a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG}
1386a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1396a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public long getTxBad() {
1406a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        return mTxBad;
1416a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1426a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde
1436a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    /**
1446a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     * @hide
1456a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde     */
1466a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    public void setTxBad(long txBad) {
1476a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde        mTxBad = txBad;
1486a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    }
1496a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde}
150