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