1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.net;
18 
19 import android.os.Parcel;
20 
21 /**
22  *  Class that represents useful attributes of wifi network links
23  *  such as the upload/download throughput or error rate etc.
24  *  @hide
25  */
26 public class WifiLinkQualityInfo extends LinkQualityInfo {
27 
28     /* Indicates Wifi network type such as b/g etc*/
29     private int  mType = UNKNOWN_INT;
30 
31     private String mBssid;
32 
33     /* Rssi found by scans */
34     private int  mRssi = UNKNOWN_INT;
35 
36     /* packet statistics */
37     private long mTxGood = UNKNOWN_LONG;
38     private long mTxBad = UNKNOWN_LONG;
39 
40     /**
41      * Implement the Parcelable interface.
42      * @hide
43      */
44     @Override
writeToParcel(Parcel dest, int flags)45     public void writeToParcel(Parcel dest, int flags) {
46         super.writeToParcel(dest, flags, OBJECT_TYPE_WIFI_LINK_QUALITY_INFO);
47 
48         dest.writeInt(mType);
49         dest.writeInt(mRssi);
50         dest.writeLong(mTxGood);
51         dest.writeLong(mTxBad);
52 
53         dest.writeString(mBssid);
54     }
55 
56     /* Un-parceling helper */
57     /**
58      * @hide
59      */
createFromParcelBody(Parcel in)60     public static WifiLinkQualityInfo createFromParcelBody(Parcel in) {
61         WifiLinkQualityInfo li = new WifiLinkQualityInfo();
62 
63         li.initializeFromParcel(in);
64 
65         li.mType =  in.readInt();
66         li.mRssi =  in.readInt();
67         li.mTxGood =  in.readLong();
68         li.mTxBad =  in.readLong();
69 
70         li.mBssid =  in.readString();
71 
72         return li;
73     }
74 
75     /**
76      * returns Wifi network type
77      * @return network type or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
78      */
getType()79     public int getType() {
80         return mType;
81     }
82 
83     /**
84      * @hide
85      */
setType(int type)86     public void setType(int type) {
87         mType = type;
88     }
89 
90     /**
91      * returns BSSID of the access point
92      * @return the BSSID, in the form of a six-byte MAC address: {@code XX:XX:XX:XX:XX:XX} or null
93      */
getBssid()94     public String getBssid() {
95         return mBssid;
96     }
97 
98     /**
99      * @hide
100      */
setBssid(String bssid)101     public void setBssid(String bssid) {
102         mBssid = bssid;
103     }
104 
105     /**
106      * returns RSSI of the network in raw form
107      * @return un-normalized RSSI or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
108      */
getRssi()109     public int getRssi() {
110         return mRssi;
111     }
112 
113     /**
114      * @hide
115      */
setRssi(int rssi)116     public void setRssi(int rssi) {
117         mRssi = rssi;
118     }
119 
120     /**
121      * returns number of packets transmitted without error
122      * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG}
123      */
getTxGood()124     public long getTxGood() {
125         return mTxGood;
126     }
127 
128     /**
129      * @hide
130      */
setTxGood(long txGood)131     public void setTxGood(long txGood) {
132         mTxGood = txGood;
133     }
134 
135     /**
136      * returns number of transmitted packets that encountered errors
137      * @return number of packets or {@link android.net.LinkQualityInfo#UNKNOWN_LONG}
138      */
getTxBad()139     public long getTxBad() {
140         return mTxBad;
141     }
142 
143     /**
144      * @hide
145      */
setTxBad(long txBad)146     public void setTxBad(long txBad) {
147         mTxBad = txBad;
148     }
149 }
150