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