• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import android.net.wifi.WifiUsabilityStatsEntry;
4 import android.net.wifi.WifiUsabilityStatsEntry.ContentionTimeStats;
5 import android.net.wifi.WifiUsabilityStatsEntry.RadioStats;
6 import android.net.wifi.WifiUsabilityStatsEntry.RateStats;
7 import android.os.Build.VERSION_CODES;
8 import android.util.SparseArray;
9 import org.robolectric.RuntimeEnvironment;
10 import org.robolectric.util.ReflectionHelpers;
11 import org.robolectric.util.ReflectionHelpers.ClassParameter;
12 
13 /** Builder for {@link WifiUsabilityStatsEntry}. */
14 public class WifiUsabilityStatsEntryBuilder {
15   private long timeStampMillis;
16   private int rssi;
17   private int linkSpeedMbps;
18   private long totalTxSuccess;
19   private long totalTxRetries;
20   private long totalTxBad;
21   private long totalRxSuccess;
22   private long totalRadioOnTimeMillis;
23   private long totalRadioTxTimeMillis;
24   private long totalRadioRxTimeMillis;
25   private long totalScanTimeMillis;
26   private long totalNanScanTimeMillis;
27   private long totalBackgroundScanTimeMillis;
28   private long totalRoamScanTimeMillis;
29   private long totalPnoScanTimeMillis;
30   private long totalHotspot2ScanTimeMillis;
31   private long totalCcaBusyFreqTimeMillis;
32   private long totalRadioOnFreqTimeMillis;
33   private long totalBeaconRx;
34   private int probeStatusSinceLastUpdate;
35   private int probeElapsedTimeSinceLastUpdateMillis;
36   private int probeMcsRateSinceLastUpdate;
37   private int rxLinkSpeedMbps;
38   private int timeSliceDutyCycleInPercent;
39   private static final int CHANNEL_UTILIZATION_RATIO = 0;
40   private boolean isThroughputSufficient = true;
41   private boolean isWifiScoringEnabled = true;
42   private boolean isCellularDataAvailable = true;
43   private int cellularDataNetworkType;
44   private int cellularSignalStrengthDbm;
45   private int cellularSignalStrengthDb;
46   private boolean isSameRegisteredCell;
47 
build()48   public WifiUsabilityStatsEntry build() {
49     if (RuntimeEnvironment.getApiLevel() <= VERSION_CODES.R) {
50       return ReflectionHelpers.callConstructor(
51           WifiUsabilityStatsEntry.class,
52           ClassParameter.from(long.class, timeStampMillis),
53           ClassParameter.from(int.class, rssi),
54           ClassParameter.from(int.class, linkSpeedMbps),
55           ClassParameter.from(long.class, totalTxSuccess),
56           ClassParameter.from(long.class, totalTxRetries),
57           ClassParameter.from(long.class, totalTxBad),
58           ClassParameter.from(long.class, totalRxSuccess),
59           ClassParameter.from(long.class, totalRadioOnTimeMillis),
60           ClassParameter.from(long.class, totalRadioTxTimeMillis),
61           ClassParameter.from(long.class, totalRadioRxTimeMillis),
62           ClassParameter.from(long.class, totalScanTimeMillis),
63           ClassParameter.from(long.class, totalNanScanTimeMillis),
64           ClassParameter.from(long.class, totalBackgroundScanTimeMillis),
65           ClassParameter.from(long.class, totalRoamScanTimeMillis),
66           ClassParameter.from(long.class, totalPnoScanTimeMillis),
67           ClassParameter.from(long.class, totalHotspot2ScanTimeMillis),
68           ClassParameter.from(long.class, totalCcaBusyFreqTimeMillis),
69           ClassParameter.from(long.class, totalRadioOnFreqTimeMillis),
70           ClassParameter.from(long.class, totalBeaconRx),
71           ClassParameter.from(int.class, probeStatusSinceLastUpdate),
72           ClassParameter.from(int.class, probeElapsedTimeSinceLastUpdateMillis),
73           ClassParameter.from(int.class, probeMcsRateSinceLastUpdate),
74           ClassParameter.from(int.class, rxLinkSpeedMbps),
75           ClassParameter.from(int.class, cellularDataNetworkType),
76           ClassParameter.from(int.class, cellularSignalStrengthDbm),
77           ClassParameter.from(int.class, cellularSignalStrengthDb),
78           ClassParameter.from(boolean.class, isSameRegisteredCell));
79     } else if (RuntimeEnvironment.getApiLevel() > VERSION_CODES.TIRAMISU) {
80       return ReflectionHelpers.callConstructor(
81           WifiUsabilityStatsEntry.class,
82           ClassParameter.from(long.class, timeStampMillis),
83           ClassParameter.from(int.class, rssi),
84           ClassParameter.from(int.class, linkSpeedMbps),
85           ClassParameter.from(long.class, totalTxSuccess),
86           ClassParameter.from(long.class, totalTxRetries),
87           ClassParameter.from(long.class, totalTxBad),
88           ClassParameter.from(long.class, totalRxSuccess),
89           ClassParameter.from(long.class, totalRadioOnTimeMillis),
90           ClassParameter.from(long.class, totalRadioTxTimeMillis),
91           ClassParameter.from(long.class, totalRadioRxTimeMillis),
92           ClassParameter.from(long.class, totalScanTimeMillis),
93           ClassParameter.from(long.class, totalNanScanTimeMillis),
94           ClassParameter.from(long.class, totalBackgroundScanTimeMillis),
95           ClassParameter.from(long.class, totalRoamScanTimeMillis),
96           ClassParameter.from(long.class, totalPnoScanTimeMillis),
97           ClassParameter.from(long.class, totalHotspot2ScanTimeMillis),
98           ClassParameter.from(long.class, totalCcaBusyFreqTimeMillis),
99           ClassParameter.from(long.class, totalRadioOnFreqTimeMillis),
100           ClassParameter.from(long.class, totalBeaconRx),
101           ClassParameter.from(int.class, probeStatusSinceLastUpdate),
102           ClassParameter.from(int.class, probeElapsedTimeSinceLastUpdateMillis),
103           ClassParameter.from(int.class, probeMcsRateSinceLastUpdate),
104           ClassParameter.from(int.class, rxLinkSpeedMbps),
105           ClassParameter.from(int.class, timeSliceDutyCycleInPercent), // new in T
106           ClassParameter.from(
107               ContentionTimeStats[].class, new ContentionTimeStats[] {}), // new in T
108           ClassParameter.from(RateStats[].class, new RateStats[] {}), // new in T
109           ClassParameter.from(RadioStats[].class, new RadioStats[] {}), // new in T
110           ClassParameter.from(int.class, CHANNEL_UTILIZATION_RATIO), // new in T
111           ClassParameter.from(boolean.class, isThroughputSufficient), // new in T
112           ClassParameter.from(boolean.class, isWifiScoringEnabled), // new in T
113           ClassParameter.from(boolean.class, isCellularDataAvailable), // new in T
114           ClassParameter.from(int.class, cellularDataNetworkType),
115           ClassParameter.from(int.class, cellularSignalStrengthDbm),
116           ClassParameter.from(int.class, cellularSignalStrengthDb),
117           ClassParameter.from(boolean.class, isSameRegisteredCell),
118           ClassParameter.from(SparseArray.class, new SparseArray<>())); // new in >T
119     } else {
120       return ReflectionHelpers.callConstructor(
121           WifiUsabilityStatsEntry.class,
122           ClassParameter.from(long.class, timeStampMillis),
123           ClassParameter.from(int.class, rssi),
124           ClassParameter.from(int.class, linkSpeedMbps),
125           ClassParameter.from(long.class, totalTxSuccess),
126           ClassParameter.from(long.class, totalTxRetries),
127           ClassParameter.from(long.class, totalTxBad),
128           ClassParameter.from(long.class, totalRxSuccess),
129           ClassParameter.from(long.class, totalRadioOnTimeMillis),
130           ClassParameter.from(long.class, totalRadioTxTimeMillis),
131           ClassParameter.from(long.class, totalRadioRxTimeMillis),
132           ClassParameter.from(long.class, totalScanTimeMillis),
133           ClassParameter.from(long.class, totalNanScanTimeMillis),
134           ClassParameter.from(long.class, totalBackgroundScanTimeMillis),
135           ClassParameter.from(long.class, totalRoamScanTimeMillis),
136           ClassParameter.from(long.class, totalPnoScanTimeMillis),
137           ClassParameter.from(long.class, totalHotspot2ScanTimeMillis),
138           ClassParameter.from(long.class, totalCcaBusyFreqTimeMillis),
139           ClassParameter.from(long.class, totalRadioOnFreqTimeMillis),
140           ClassParameter.from(long.class, totalBeaconRx),
141           ClassParameter.from(int.class, probeStatusSinceLastUpdate),
142           ClassParameter.from(int.class, probeElapsedTimeSinceLastUpdateMillis),
143           ClassParameter.from(int.class, probeMcsRateSinceLastUpdate),
144           ClassParameter.from(int.class, rxLinkSpeedMbps),
145           ClassParameter.from(int.class, timeSliceDutyCycleInPercent), // new in T
146           ClassParameter.from(
147               ContentionTimeStats[].class, new ContentionTimeStats[] {}), // new in T
148           ClassParameter.from(RateStats[].class, new RateStats[] {}), // new in T
149           ClassParameter.from(RadioStats[].class, new RadioStats[] {}), // new in T
150           ClassParameter.from(int.class, CHANNEL_UTILIZATION_RATIO), // new in T
151           ClassParameter.from(boolean.class, isThroughputSufficient), // new in T
152           ClassParameter.from(boolean.class, isWifiScoringEnabled), // new in T
153           ClassParameter.from(boolean.class, isCellularDataAvailable), // new in T
154           ClassParameter.from(int.class, cellularDataNetworkType),
155           ClassParameter.from(int.class, cellularSignalStrengthDbm),
156           ClassParameter.from(int.class, cellularSignalStrengthDb),
157           ClassParameter.from(boolean.class, isSameRegisteredCell));
158     }
159   }
160 
setTimeStampMillis(long timeStampMillis)161   public WifiUsabilityStatsEntryBuilder setTimeStampMillis(long timeStampMillis) {
162     this.timeStampMillis = timeStampMillis;
163     return this;
164   }
165 
setRssi(int rssi)166   public WifiUsabilityStatsEntryBuilder setRssi(int rssi) {
167     this.rssi = rssi;
168     return this;
169   }
170 
setLinkSpeedMbps(int linkSpeedMbps)171   public WifiUsabilityStatsEntryBuilder setLinkSpeedMbps(int linkSpeedMbps) {
172     this.linkSpeedMbps = linkSpeedMbps;
173     return this;
174   }
175 
setTotalTxSuccess(long totalTxSuccess)176   public WifiUsabilityStatsEntryBuilder setTotalTxSuccess(long totalTxSuccess) {
177     this.totalTxSuccess = totalTxSuccess;
178     return this;
179   }
180 
setTotalTxRetries(long totalTxRetries)181   public WifiUsabilityStatsEntryBuilder setTotalTxRetries(long totalTxRetries) {
182     this.totalTxRetries = totalTxRetries;
183     return this;
184   }
185 
setTotalTxBad(long totalTxBad)186   public WifiUsabilityStatsEntryBuilder setTotalTxBad(long totalTxBad) {
187     this.totalTxBad = totalTxBad;
188     return this;
189   }
190 
setTotalRxSuccess(long totalRxSuccess)191   public WifiUsabilityStatsEntryBuilder setTotalRxSuccess(long totalRxSuccess) {
192     this.totalRxSuccess = totalRxSuccess;
193     return this;
194   }
195 
setTotalRadioOnTimeMillis(long totalRadioOnTimeMillis)196   public WifiUsabilityStatsEntryBuilder setTotalRadioOnTimeMillis(long totalRadioOnTimeMillis) {
197     this.totalRadioOnTimeMillis = totalRadioOnTimeMillis;
198     return this;
199   }
200 
setTotalRadioTxTimeMillis(long totalRadioTxTimeMillis)201   public WifiUsabilityStatsEntryBuilder setTotalRadioTxTimeMillis(long totalRadioTxTimeMillis) {
202     this.totalRadioTxTimeMillis = totalRadioTxTimeMillis;
203     return this;
204   }
205 
setTotalRadioRxTimeMillis(long totalRadioRxTimeMillis)206   public WifiUsabilityStatsEntryBuilder setTotalRadioRxTimeMillis(long totalRadioRxTimeMillis) {
207     this.totalRadioRxTimeMillis = totalRadioRxTimeMillis;
208     return this;
209   }
210 
setTotalScanTimeMillis(long totalScanTimeMillis)211   public WifiUsabilityStatsEntryBuilder setTotalScanTimeMillis(long totalScanTimeMillis) {
212     this.totalScanTimeMillis = totalScanTimeMillis;
213     return this;
214   }
215 
setTotalNanScanTimeMillis(long totalNanScanTimeMillis)216   public WifiUsabilityStatsEntryBuilder setTotalNanScanTimeMillis(long totalNanScanTimeMillis) {
217     this.totalNanScanTimeMillis = totalNanScanTimeMillis;
218     return this;
219   }
220 
setTotalBackgroundScanTimeMillis( long totalBackgroundScanTimeMillis)221   public WifiUsabilityStatsEntryBuilder setTotalBackgroundScanTimeMillis(
222       long totalBackgroundScanTimeMillis) {
223     this.totalBackgroundScanTimeMillis = totalBackgroundScanTimeMillis;
224     return this;
225   }
226 
setTotalRoamScanTimeMillis(long totalRoamScanTimeMillis)227   public WifiUsabilityStatsEntryBuilder setTotalRoamScanTimeMillis(long totalRoamScanTimeMillis) {
228     this.totalRoamScanTimeMillis = totalRoamScanTimeMillis;
229     return this;
230   }
231 
setTotalPnoScanTimeMillis(long totalPnoScanTimeMillis)232   public WifiUsabilityStatsEntryBuilder setTotalPnoScanTimeMillis(long totalPnoScanTimeMillis) {
233     this.totalPnoScanTimeMillis = totalPnoScanTimeMillis;
234     return this;
235   }
236 
setTotalHotspot2ScanTimeMillis( long totalHotspot2ScanTimeMillis)237   public WifiUsabilityStatsEntryBuilder setTotalHotspot2ScanTimeMillis(
238       long totalHotspot2ScanTimeMillis) {
239     this.totalHotspot2ScanTimeMillis = totalHotspot2ScanTimeMillis;
240     return this;
241   }
242 
setTotalCcaBusyFreqTimeMillis( long totalCcaBusyFreqTimeMillis)243   public WifiUsabilityStatsEntryBuilder setTotalCcaBusyFreqTimeMillis(
244       long totalCcaBusyFreqTimeMillis) {
245     this.totalCcaBusyFreqTimeMillis = totalCcaBusyFreqTimeMillis;
246     return this;
247   }
248 
setTotalRadioOnFreqTimeMillis( long totalRadioOnFreqTimeMillis)249   public WifiUsabilityStatsEntryBuilder setTotalRadioOnFreqTimeMillis(
250       long totalRadioOnFreqTimeMillis) {
251     this.totalRadioOnFreqTimeMillis = totalRadioOnFreqTimeMillis;
252     return this;
253   }
254 
setTotalBeaconRx(long totalBeaconRx)255   public WifiUsabilityStatsEntryBuilder setTotalBeaconRx(long totalBeaconRx) {
256     this.totalBeaconRx = totalBeaconRx;
257     return this;
258   }
259 
setProbeStatusSinceLastUpdate( int probeStatusSinceLastUpdate)260   public WifiUsabilityStatsEntryBuilder setProbeStatusSinceLastUpdate(
261       int probeStatusSinceLastUpdate) {
262     this.probeStatusSinceLastUpdate = probeStatusSinceLastUpdate;
263     return this;
264   }
265 
setProbeElapsedTimeSinceLastUpdateMillis( int probeElapsedTimeSinceLastUpdateMillis)266   public WifiUsabilityStatsEntryBuilder setProbeElapsedTimeSinceLastUpdateMillis(
267       int probeElapsedTimeSinceLastUpdateMillis) {
268     this.probeElapsedTimeSinceLastUpdateMillis = probeElapsedTimeSinceLastUpdateMillis;
269     return this;
270   }
271 
setProbeMcsRateSinceLastUpdate( int probeMcsRateSinceLastUpdate)272   public WifiUsabilityStatsEntryBuilder setProbeMcsRateSinceLastUpdate(
273       int probeMcsRateSinceLastUpdate) {
274     this.probeMcsRateSinceLastUpdate = probeMcsRateSinceLastUpdate;
275     return this;
276   }
277 
setRxLinkSpeedMbps(int rxLinkSpeedMbps)278   public WifiUsabilityStatsEntryBuilder setRxLinkSpeedMbps(int rxLinkSpeedMbps) {
279     this.rxLinkSpeedMbps = rxLinkSpeedMbps;
280     return this;
281   }
282 
setCellularDataNetworkType(int cellularDataNetworkType)283   public WifiUsabilityStatsEntryBuilder setCellularDataNetworkType(int cellularDataNetworkType) {
284     this.cellularDataNetworkType = cellularDataNetworkType;
285     return this;
286   }
287 
setCellularSignalStrengthDbm( int cellularSignalStrengthDbm)288   public WifiUsabilityStatsEntryBuilder setCellularSignalStrengthDbm(
289       int cellularSignalStrengthDbm) {
290     this.cellularSignalStrengthDbm = cellularSignalStrengthDbm;
291     return this;
292   }
293 
setCellularSignalStrengthDb(int cellularSignalStrengthDb)294   public WifiUsabilityStatsEntryBuilder setCellularSignalStrengthDb(int cellularSignalStrengthDb) {
295     this.cellularSignalStrengthDb = cellularSignalStrengthDb;
296     return this;
297   }
298 
setSameRegisteredCell(boolean sameRegisteredCell)299   public WifiUsabilityStatsEntryBuilder setSameRegisteredCell(boolean sameRegisteredCell) {
300     isSameRegisteredCell = sameRegisteredCell;
301     return this;
302   }
303 
setTimeSliceDutyCycleInPercent(int percent)304   public WifiUsabilityStatsEntryBuilder setTimeSliceDutyCycleInPercent(int percent) {
305     this.timeSliceDutyCycleInPercent = percent;
306     return this;
307   }
308 
setIsCellularDataAvailable(boolean avail)309   public WifiUsabilityStatsEntryBuilder setIsCellularDataAvailable(boolean avail) {
310     this.isCellularDataAvailable = avail;
311     return this;
312   }
313 
setIsThroughputSufficient(boolean sufficient)314   public WifiUsabilityStatsEntryBuilder setIsThroughputSufficient(boolean sufficient) {
315     this.isThroughputSufficient = sufficient;
316     return this;
317   }
318 
setIsWifiScoringEnabled(boolean enabled)319   public WifiUsabilityStatsEntryBuilder setIsWifiScoringEnabled(boolean enabled) {
320     this.isWifiScoringEnabled = enabled;
321     return this;
322   }
323 }
324