1 /*
2  * Copyright (C) 2017 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.telephony;
18 
19 import android.annotation.IntDef;
20 import android.annotation.NonNull;
21 import android.annotation.SystemApi;
22 import android.hardware.radio.AccessNetwork;
23 
24 import java.lang.annotation.Retention;
25 import java.lang.annotation.RetentionPolicy;
26 import java.util.Locale;
27 
28 /**
29  * Contains access network related constants.
30  */
31 public final class AccessNetworkConstants {
32 
33     private static final String TAG = AccessNetworkConstants.class.getSimpleName();
34 
35     /**
36      * Wireless transportation type
37      *
38      * @hide */
39     @Retention(RetentionPolicy.SOURCE)
40     @IntDef(prefix = {"TRANSPORT_TYPE_"},
41             value = {
42                     TRANSPORT_TYPE_INVALID,
43                     TRANSPORT_TYPE_WWAN,
44                     TRANSPORT_TYPE_WLAN})
45     public @interface TransportType {}
46 
47     /**
48      * Invalid transport type
49      * @hide
50      */
51     @SystemApi
52     public static final int TRANSPORT_TYPE_INVALID = -1;
53 
54     /**
55      * Transport type for Wireless Wide Area Networks (i.e. Cellular)
56      */
57     public static final int TRANSPORT_TYPE_WWAN = 1;
58 
59     /**
60      * Transport type for Wireless Local Area Networks (i.e. Wifi)
61      */
62     public static final int TRANSPORT_TYPE_WLAN = 2;
63 
64     /** @hide */
transportTypeToString(@ransportType int transportType)65     public static String transportTypeToString(@TransportType int transportType) {
66         switch (transportType) {
67             case TRANSPORT_TYPE_WWAN: return "WWAN";
68             case TRANSPORT_TYPE_WLAN: return "WLAN";
69             case TRANSPORT_TYPE_INVALID: return "INVALID";
70             default: return Integer.toString(transportType);
71         }
72     }
73 
74     /**
75      * Access network type
76      * @hide
77      */
78     @Retention(RetentionPolicy.SOURCE)
79     @IntDef(prefix = {"RADIO_ACCESS_NETWORK_TYPE_"},
80             value = {
81                     AccessNetworkType.UNKNOWN,
82                     AccessNetworkType.GERAN,
83                     AccessNetworkType.UTRAN,
84                     AccessNetworkType.EUTRAN,
85                     AccessNetworkType.CDMA2000,
86                     AccessNetworkType.IWLAN,
87                     AccessNetworkType.NGRAN})
88     public @interface RadioAccessNetworkType {}
89 
90     public static final class AccessNetworkType {
91         public static final int UNKNOWN = AccessNetwork.UNKNOWN;
92         public static final int GERAN = AccessNetwork.GERAN;
93         public static final int UTRAN = AccessNetwork.UTRAN;
94         public static final int EUTRAN = AccessNetwork.EUTRAN;
95         public static final int CDMA2000 = AccessNetwork.CDMA2000;
96         public static final int IWLAN = AccessNetwork.IWLAN;
97         public static final int NGRAN = AccessNetwork.NGRAN;
98 
99         /** @hide */
AccessNetworkType()100         private AccessNetworkType() {}
101 
102         /** @hide */
toString(int type)103         public static String toString(int type) {
104             switch (type) {
105                 case UNKNOWN: return "UNKNOWN";
106                 case GERAN: return "GERAN";
107                 case UTRAN: return "UTRAN";
108                 case EUTRAN: return "EUTRAN";
109                 case CDMA2000: return "CDMA2000";
110                 case IWLAN: return "IWLAN";
111                 case NGRAN: return "NGRAN";
112                 default: return Integer.toString(type);
113             }
114         }
115 
116         /** @hide */
fromString(@onNull String str)117         public static @RadioAccessNetworkType int fromString(@NonNull String str) {
118             switch (str.toUpperCase(Locale.ROOT)) {
119                 case "UNKNOWN": return UNKNOWN;
120                 case "GERAN": return GERAN;
121                 case "UTRAN": return UTRAN;
122                 case "EUTRAN": return EUTRAN;
123                 case "CDMA2000": return CDMA2000;
124                 case "IWLAN": return IWLAN;
125                 case "NGRAN": return NGRAN;
126                 default:
127                     throw new IllegalArgumentException("Invalid access network type " + str);
128             }
129         }
130     }
131 
132     /**
133      * Frequency bands for GERAN.
134      * http://www.etsi.org/deliver/etsi_ts/145000_145099/145005/14.00.00_60/ts_145005v140000p.pdf
135      */
136     public static final class GeranBand {
137         public static final int BAND_T380 = android.hardware.radio.network.GeranBands.BAND_T380;
138         public static final int BAND_T410 = android.hardware.radio.network.GeranBands.BAND_T410;
139         public static final int BAND_450 = android.hardware.radio.network.GeranBands.BAND_450;
140         public static final int BAND_480 = android.hardware.radio.network.GeranBands.BAND_480;
141         public static final int BAND_710 = android.hardware.radio.network.GeranBands.BAND_710;
142         public static final int BAND_750 = android.hardware.radio.network.GeranBands.BAND_750;
143         public static final int BAND_T810 = android.hardware.radio.network.GeranBands.BAND_T810;
144         public static final int BAND_850 = android.hardware.radio.network.GeranBands.BAND_850;
145         public static final int BAND_P900 = android.hardware.radio.network.GeranBands.BAND_P900;
146         public static final int BAND_E900 = android.hardware.radio.network.GeranBands.BAND_E900;
147         public static final int BAND_R900 = android.hardware.radio.network.GeranBands.BAND_R900;
148         public static final int BAND_DCS1800 =
149                 android.hardware.radio.network.GeranBands.BAND_DCS1800;
150         public static final int BAND_PCS1900 =
151                 android.hardware.radio.network.GeranBands.BAND_PCS1900;
152         public static final int BAND_ER900 = android.hardware.radio.network.GeranBands.BAND_ER900;
153 
154         /**
155          * GeranBand
156          *
157          * @hide */
158         @Retention(RetentionPolicy.SOURCE)
159         @IntDef(prefix = {"BAND_"},
160                 value = {BAND_T380,
161                         BAND_T410,
162                         BAND_450,
163                         BAND_480,
164                         BAND_710,
165                         BAND_750,
166                         BAND_T810,
167                         BAND_850,
168                         BAND_P900,
169                         BAND_E900,
170                         BAND_R900,
171                         BAND_DCS1800,
172                         BAND_PCS1900,
173                         BAND_ER900})
174 
175         public @interface GeranBands {}
176 
177         /** @hide */
GeranBand()178         private GeranBand() {}
179     }
180 
181     /**
182      * 3GPP TS 45.005 Table 2-1 Dynamically mapped ARFCN.
183      * 3GPP TS 45.005 Table 2-2 Fixed designation of ARFCN.
184      * @hide
185      */
186     enum GeranBandArfcnFrequency {
187 
188         // Dynamically mapped ARFCN
189 //        GERAN_ARFCN_FREQUENCY_BAND_T380(GeranBand.BAND_T380, 380.2, 0),
190 //        GERAN_ARFCN_FREQUENCY_BAND_T410(GeranBand.BAND_T410, 410.2, 0),
191 //        GERAN_ARFCN_FREQUENCY_BAND_710(GeranBand.BAND_710, 698, 0),
192 //        GERAN_ARFCN_FREQUENCY_BAND_750(GeranBand.BAND_750, 747, 438, 30),
193 //        GERAN_ARFCN_FREQUENCY_BAND_T810(GeranBand.BAND_T810, 806, 350),
194         // Fixed designation of ARFCN
195         GERAN_ARFCN_FREQUENCY_BAND_450(GeranBand.BAND_450, 450600, 259, 259, 293, 10),
196         GERAN_ARFCN_FREQUENCY_BAND_480(GeranBand.BAND_480, 479000, 306, 306, 340, 10),
197         GERAN_ARFCN_FREQUENCY_BAND_850(GeranBand.BAND_850, 824200, 128, 128, 251, 45),
198         GERAN_ARFCN_FREQUENCY_BAND_DCS1800(GeranBand.BAND_DCS1800, 1710200, 512, 512, 885, 95),
199         GERAN_ARFCN_FREQUENCY_BAND_PCS1900(GeranBand.BAND_PCS1900, 1850200, 512, 512, 810, 80),
200         GERAN_ARFCN_FREQUENCY_BAND_E900_1(GeranBand.BAND_E900, 890000, 0, 0, 124, 45),
201         GERAN_ARFCN_FREQUENCY_BAND_E900_2(GeranBand.BAND_E900, 890000, 1024, 975, 1023, 45),
202         GERAN_ARFCN_FREQUENCY_BAND_R900_1(GeranBand.BAND_R900, 890000, 0, 0, 124, 45),
203         GERAN_ARFCN_FREQUENCY_BAND_R900_2(GeranBand.BAND_R900, 890000, 1024, 955, 1023, 45),
204         GERAN_ARFCN_FREQUENCY_BAND_P900(GeranBand.BAND_P900, 890000, 0, 1, 124, 45),
205         GERAN_ARFCN_FREQUENCY_BAND_ER900_1(GeranBand.BAND_ER900, 890000, 0, 0, 124, 45),
206         GERAN_ARFCN_FREQUENCY_BAND_ER900_2(GeranBand.BAND_ER900, 890000, 1024, 940, 1023, 1024);
207 
GeranBandArfcnFrequency(int band, int uplinkFrequencyFirstKhz, int arfcnOffset, int arfcnRangeFirst, int arfcnRangeLast, int downlinkOffset)208         GeranBandArfcnFrequency(int band, int uplinkFrequencyFirstKhz, int arfcnOffset,
209                                 int arfcnRangeFirst, int arfcnRangeLast, int downlinkOffset) {
210             this.band = band;
211             this.uplinkFrequencyFirst = uplinkFrequencyFirstKhz;
212             this.arfcnOffset = arfcnOffset;
213             this.arfcnRangeFirst = arfcnRangeFirst;
214             this.arfcnRangeLast = arfcnRangeLast;
215             this.downlinkOffset = downlinkOffset;
216         }
217 
218         int band;
219         int uplinkFrequencyFirst;
220         int arfcnOffset;
221         int arfcnRangeFirst;
222         int arfcnRangeLast;
223         int downlinkOffset;
224     }
225 
226     /**
227      * Frequency bands for UTRAN.
228      * http://www.etsi.org/deliver/etsi_ts/125100_125199/125104/13.03.00_60/ts_125104v130p.pdf
229      */
230     public static final class UtranBand {
231         public static final int BAND_1 = android.hardware.radio.network.UtranBands.BAND_1;
232         public static final int BAND_2 = android.hardware.radio.network.UtranBands.BAND_2;
233         public static final int BAND_3 = android.hardware.radio.network.UtranBands.BAND_3;
234         public static final int BAND_4 = android.hardware.radio.network.UtranBands.BAND_4;
235         public static final int BAND_5 = android.hardware.radio.network.UtranBands.BAND_5;
236         public static final int BAND_6 = android.hardware.radio.network.UtranBands.BAND_6;
237         public static final int BAND_7 = android.hardware.radio.network.UtranBands.BAND_7;
238         public static final int BAND_8 = android.hardware.radio.network.UtranBands.BAND_8;
239         public static final int BAND_9 = android.hardware.radio.network.UtranBands.BAND_9;
240         public static final int BAND_10 = android.hardware.radio.network.UtranBands.BAND_10;
241         public static final int BAND_11 = android.hardware.radio.network.UtranBands.BAND_11;
242         public static final int BAND_12 = android.hardware.radio.network.UtranBands.BAND_12;
243         public static final int BAND_13 = android.hardware.radio.network.UtranBands.BAND_13;
244         public static final int BAND_14 = android.hardware.radio.network.UtranBands.BAND_14;
245         // band 15, 16, 17, 18 are reserved
246         public static final int BAND_19 = android.hardware.radio.network.UtranBands.BAND_19;
247         public static final int BAND_20 = android.hardware.radio.network.UtranBands.BAND_20;
248         public static final int BAND_21 = android.hardware.radio.network.UtranBands.BAND_21;
249         public static final int BAND_22 = android.hardware.radio.network.UtranBands.BAND_22;
250         // band 23, 24 are reserved
251         public static final int BAND_25 = android.hardware.radio.network.UtranBands.BAND_25;
252         public static final int BAND_26 = android.hardware.radio.network.UtranBands.BAND_26;
253 
254         // Frequency bands for TD-SCDMA. Defined in 3GPP TS 25.102, Table 5.2.
255 
256         /**
257          * Band A
258          * 1900 - 1920 MHz: Uplink and downlink transmission
259          * 2010 - 2025 MHz: Uplink and downlink transmission
260          */
261         public static final int BAND_A = android.hardware.radio.network.UtranBands.BAND_A;
262 
263         /**
264          * Band B
265          * 1850 - 1910 MHz: Uplink and downlink transmission
266          * 1930 - 1990 MHz: Uplink and downlink transmission
267          */
268         public static final int BAND_B = android.hardware.radio.network.UtranBands.BAND_B;
269 
270         /**
271          * Band C
272          * 1910 - 1930 MHz: Uplink and downlink transmission
273          */
274         public static final int BAND_C = android.hardware.radio.network.UtranBands.BAND_C;
275 
276         /**
277          * Band D
278          * 2570 - 2620 MHz: Uplink and downlink transmission
279          */
280         public static final int BAND_D = android.hardware.radio.network.UtranBands.BAND_D;
281 
282         /**
283          * Band E
284          * 2300—2400 MHz: Uplink and downlink transmission
285          */
286         public static final int BAND_E = android.hardware.radio.network.UtranBands.BAND_E;
287 
288         /**
289          * Band F
290          * 1880 - 1920 MHz: Uplink and downlink transmission
291          */
292         public static final int BAND_F = android.hardware.radio.network.UtranBands.BAND_F;
293 
294         /**
295          * UtranBand
296          *
297          * @hide */
298         @Retention(RetentionPolicy.SOURCE)
299         @IntDef(prefix = {"BAND_"},
300                 value = {BAND_1,
301                         BAND_2,
302                         BAND_3,
303                         BAND_4,
304                         BAND_5,
305                         BAND_6,
306                         BAND_7,
307                         BAND_8,
308                         BAND_9,
309                         BAND_10,
310                         BAND_11,
311                         BAND_12,
312                         BAND_13,
313                         BAND_14,
314                         BAND_19,
315                         BAND_20,
316                         BAND_21,
317                         BAND_22,
318                         BAND_25,
319                         BAND_26,
320                         BAND_A,
321                         BAND_B,
322                         BAND_C,
323                         BAND_D,
324                         BAND_E,
325                         BAND_F})
326 
327         public @interface UtranBands {}
328 
329         /** @hide */
UtranBand()330         private UtranBand() {}
331     }
332 
333     /**
334      * 3GPP TS 25.101, Table 5.1 UARFCN definition (general)
335      * 3GPP TS 25.102, Table 5.2 UTRA Absolute Radio Frequency Channel Number 1.28 Mcps TDD Option.
336      *
337      * @hide
338      */
339     enum UtranBandArfcnFrequency {
340 
341         UTRAN_ARFCN_FREQUENCY_BAND_1(UtranBand.BAND_1, 0, 10562, 10838, 0, 9612, 9888),
342         UTRAN_ARFCN_FREQUENCY_BAND_2(UtranBand.BAND_2, 0, 9662, 9938, 0, 9262, 9538),
343         UTRAN_ARFCN_FREQUENCY_BAND_3(UtranBand.BAND_3, 1575000, 1162, 1513, 1525000, 937, 1288),
344         UTRAN_ARFCN_FREQUENCY_BAND_4(UtranBand.BAND_4, 1805000, 1537, 1738, 1450000, 1312, 1513),
345         UTRAN_ARFCN_FREQUENCY_BAND_5(UtranBand.BAND_5, 0, 4357, 4458, 0, 4132, 4233),
346         UTRAN_ARFCN_FREQUENCY_BAND_6(UtranBand.BAND_6, 0, 4387, 4413, 0, 4162, 4188),
347         UTRAN_ARFCN_FREQUENCY_BAND_7(UtranBand.BAND_7, 2175000, 2237, 2563, 2100000, 2012, 2338),
348         UTRAN_ARFCN_FREQUENCY_BAND_8(UtranBand.BAND_8, 340000, 2937, 3088, 340000, 2712, 2863),
349         UTRAN_ARFCN_FREQUENCY_BAND_9(UtranBand.BAND_9, 0, 9327, 9837, 0, 8762, 8912),
350         UTRAN_ARFCN_FREQUENCY_BAND_10(UtranBand.BAND_10, 1490000, 3112, 3388, 1135000, 2887, 3163),
351         UTRAN_ARFCN_FREQUENCY_BAND_11(UtranBand.BAND_11, 736000, 3712, 3787, 733000, 3487, 3562),
352         UTRAN_ARFCN_FREQUENCY_BAND_12(UtranBand.BAND_12, -37000, 3842, 3903, -22000, 3617, 3678),
353         UTRAN_ARFCN_FREQUENCY_BAND_13(UtranBand.BAND_13, -55000, 4017, 4043, 21000, 3792, 3818),
354         UTRAN_ARFCN_FREQUENCY_BAND_14(UtranBand.BAND_14, -63000, 4117, 4143, 12000, 3892, 3918),
355         UTRAN_ARFCN_FREQUENCY_BAND_19(UtranBand.BAND_19, 735000, 712, 763, 770000, 312, 363),
356         UTRAN_ARFCN_FREQUENCY_BAND_20(UtranBand.BAND_20, -109000, 4512, 4638, -23000, 4287, 4413),
357         UTRAN_ARFCN_FREQUENCY_BAND_21(UtranBand.BAND_21, 1326000, 862, 912, 1358000, 462, 512),
358         UTRAN_ARFCN_FREQUENCY_BAND_22(UtranBand.BAND_22, 2580000, 4662, 5038, 2525000, 4437, 4813),
359         UTRAN_ARFCN_FREQUENCY_BAND_25(UtranBand.BAND_25, 910000, 5112, 5413, 875000, 4887, 5188),
360         UTRAN_ARFCN_FREQUENCY_BAND_A(UtranBand.BAND_A, 0, 10054, 10121, 0, 9504, 9596),
361         UTRAN_ARFCN_FREQUENCY_BAND_B(UtranBand.BAND_B, 0, 9654, 9946, 0, 9254, 9546),
362         UTRAN_ARFCN_FREQUENCY_BAND_C(UtranBand.BAND_C, 0, 0, 0, 0, 9554, 9646),
363         UTRAN_ARFCN_FREQUENCY_BAND_D(UtranBand.BAND_D, 0, 0, 0, 0, 12854, 13096),
364         UTRAN_ARFCN_FREQUENCY_BAND_E(UtranBand.BAND_E, 0, 0, 0, 0, 11504, 11996),
365         UTRAN_ARFCN_FREQUENCY_BAND_F(UtranBand.BAND_F, 0, 0, 0, 0, 9404, 9596);
366 
UtranBandArfcnFrequency(int band, int downlinkOffsetKhz, int downlinkRangeFirst, int downlinkRangeLast, int uplinkOffsetKhz, int uplinkRangeFirst, int uplinkRangeLast)367         UtranBandArfcnFrequency(int band, int downlinkOffsetKhz, int downlinkRangeFirst,
368                                 int downlinkRangeLast, int uplinkOffsetKhz, int uplinkRangeFirst,
369                                 int uplinkRangeLast) {
370             this.band = band;
371             this.downlinkOffset = downlinkOffsetKhz;
372             this.downlinkRangeFirst = downlinkRangeFirst;
373             this.downlinkRangeLast = downlinkRangeLast;
374             this.uplinkOffset = uplinkOffsetKhz;
375             this.uplinkRangeFirst = uplinkRangeFirst;
376             this.uplinkRangeLast = uplinkRangeLast;
377         }
378 
379         int band;
380         int downlinkOffset;
381         int downlinkRangeFirst;
382         int downlinkRangeLast;
383         int uplinkOffset;
384         int uplinkRangeFirst;
385         int uplinkRangeLast;
386     }
387 
388     /**
389      * Frequency bands for EUTRAN.
390      * 3GPP TS 36.101, Version 16.4.0, Table 5.5: Operating bands
391      * https://www.etsi.org/deliver/etsi_ts/136100_136199/136101/15.09.00_60/ts_136101v150900p.pdf
392      */
393     public static final class EutranBand {
394         public static final int BAND_1 = android.hardware.radio.network.EutranBands.BAND_1;
395         public static final int BAND_2 = android.hardware.radio.network.EutranBands.BAND_2;
396         public static final int BAND_3 = android.hardware.radio.network.EutranBands.BAND_3;
397         public static final int BAND_4 = android.hardware.radio.network.EutranBands.BAND_4;
398         public static final int BAND_5 = android.hardware.radio.network.EutranBands.BAND_5;
399         public static final int BAND_6 = android.hardware.radio.network.EutranBands.BAND_6;
400         public static final int BAND_7 = android.hardware.radio.network.EutranBands.BAND_7;
401         public static final int BAND_8 = android.hardware.radio.network.EutranBands.BAND_8;
402         public static final int BAND_9 = android.hardware.radio.network.EutranBands.BAND_9;
403         public static final int BAND_10 = android.hardware.radio.network.EutranBands.BAND_10;
404         public static final int BAND_11 = android.hardware.radio.network.EutranBands.BAND_11;
405         public static final int BAND_12 = android.hardware.radio.network.EutranBands.BAND_12;
406         public static final int BAND_13 = android.hardware.radio.network.EutranBands.BAND_13;
407         public static final int BAND_14 = android.hardware.radio.network.EutranBands.BAND_14;
408         public static final int BAND_17 = android.hardware.radio.network.EutranBands.BAND_17;
409         public static final int BAND_18 = android.hardware.radio.network.EutranBands.BAND_18;
410         public static final int BAND_19 = android.hardware.radio.network.EutranBands.BAND_19;
411         public static final int BAND_20 = android.hardware.radio.network.EutranBands.BAND_20;
412         public static final int BAND_21 = android.hardware.radio.network.EutranBands.BAND_21;
413         public static final int BAND_22 = android.hardware.radio.network.EutranBands.BAND_22;
414         public static final int BAND_23 = android.hardware.radio.network.EutranBands.BAND_23;
415         public static final int BAND_24 = android.hardware.radio.network.EutranBands.BAND_24;
416         public static final int BAND_25 = android.hardware.radio.network.EutranBands.BAND_25;
417         public static final int BAND_26 = android.hardware.radio.network.EutranBands.BAND_26;
418         public static final int BAND_27 = android.hardware.radio.network.EutranBands.BAND_27;
419         public static final int BAND_28 = android.hardware.radio.network.EutranBands.BAND_28;
420         public static final int BAND_30 = android.hardware.radio.network.EutranBands.BAND_30;
421         public static final int BAND_31 = android.hardware.radio.network.EutranBands.BAND_31;
422         public static final int BAND_33 = android.hardware.radio.network.EutranBands.BAND_33;
423         public static final int BAND_34 = android.hardware.radio.network.EutranBands.BAND_34;
424         public static final int BAND_35 = android.hardware.radio.network.EutranBands.BAND_35;
425         public static final int BAND_36 = android.hardware.radio.network.EutranBands.BAND_36;
426         public static final int BAND_37 = android.hardware.radio.network.EutranBands.BAND_37;
427         public static final int BAND_38 = android.hardware.radio.network.EutranBands.BAND_38;
428         public static final int BAND_39 = android.hardware.radio.network.EutranBands.BAND_39;
429         public static final int BAND_40 = android.hardware.radio.network.EutranBands.BAND_40;
430         public static final int BAND_41 = android.hardware.radio.network.EutranBands.BAND_41;
431         public static final int BAND_42 = android.hardware.radio.network.EutranBands.BAND_42;
432         public static final int BAND_43 = android.hardware.radio.network.EutranBands.BAND_43;
433         public static final int BAND_44 = android.hardware.radio.network.EutranBands.BAND_44;
434         public static final int BAND_45 = android.hardware.radio.network.EutranBands.BAND_45;
435         public static final int BAND_46 = android.hardware.radio.network.EutranBands.BAND_46;
436         public static final int BAND_47 = android.hardware.radio.network.EutranBands.BAND_47;
437         public static final int BAND_48 = android.hardware.radio.network.EutranBands.BAND_48;
438         public static final int BAND_49 = android.hardware.radio.network.EutranBands.BAND_49;
439         public static final int BAND_50 = android.hardware.radio.network.EutranBands.BAND_50;
440         public static final int BAND_51 = android.hardware.radio.network.EutranBands.BAND_51;
441         public static final int BAND_52 = android.hardware.radio.network.EutranBands.BAND_52;
442         public static final int BAND_53 = android.hardware.radio.network.EutranBands.BAND_53;
443         public static final int BAND_65 = android.hardware.radio.network.EutranBands.BAND_65;
444         public static final int BAND_66 = android.hardware.radio.network.EutranBands.BAND_66;
445         public static final int BAND_68 = android.hardware.radio.network.EutranBands.BAND_68;
446         public static final int BAND_70 = android.hardware.radio.network.EutranBands.BAND_70;
447         public static final int BAND_71 = android.hardware.radio.network.EutranBands.BAND_71;
448         public static final int BAND_72 = android.hardware.radio.network.EutranBands.BAND_72;
449         public static final int BAND_73 = android.hardware.radio.network.EutranBands.BAND_73;
450         public static final int BAND_74 = android.hardware.radio.network.EutranBands.BAND_74;
451         public static final int BAND_85 = android.hardware.radio.network.EutranBands.BAND_85;
452         public static final int BAND_87 = android.hardware.radio.network.EutranBands.BAND_87;
453         public static final int BAND_88 = android.hardware.radio.network.EutranBands.BAND_88;
454 
455         /**
456          * EutranBands
457          *
458          * @hide */
459         @Retention(RetentionPolicy.SOURCE)
460         @IntDef(prefix = {"BAND_"},
461                 value = {BAND_1,
462                         BAND_2,
463                         BAND_3,
464                         BAND_4,
465                         BAND_5,
466                         BAND_6,
467                         BAND_7,
468                         BAND_8,
469                         BAND_9,
470                         BAND_10,
471                         BAND_11,
472                         BAND_12,
473                         BAND_13,
474                         BAND_14,
475                         BAND_17,
476                         BAND_18,
477                         BAND_19,
478                         BAND_20,
479                         BAND_21,
480                         BAND_22,
481                         BAND_23,
482                         BAND_24,
483                         BAND_25,
484                         BAND_26,
485                         BAND_27,
486                         BAND_28,
487                         BAND_30,
488                         BAND_31,
489                         BAND_33,
490                         BAND_34,
491                         BAND_35,
492                         BAND_36,
493                         BAND_37,
494                         BAND_38,
495                         BAND_39,
496                         BAND_40,
497                         BAND_41,
498                         BAND_42,
499                         BAND_43,
500                         BAND_44,
501                         BAND_45,
502                         BAND_46,
503                         BAND_47,
504                         BAND_48,
505                         BAND_49,
506                         BAND_50,
507                         BAND_51,
508                         BAND_52,
509                         BAND_53,
510                         BAND_65,
511                         BAND_66,
512                         BAND_68,
513                         BAND_70,
514                         BAND_71,
515                         BAND_72,
516                         BAND_73,
517                         BAND_74,
518                         BAND_85,
519                         BAND_87,
520                         BAND_88})
521 
522         public @interface EutranBands {}
523 
524         /** @hide */
EutranBand()525         private EutranBand() {};
526     }
527 
528     /**
529      * 3GPP TS 36.101 Table 5.7.3-1 E-UTRA channel numbers.
530      *
531      * @hide
532      */
533     enum EutranBandArfcnFrequency {
534 
535         EUTRAN_ARFCN_FREQUENCY_BAND_1(
536                 EutranBand.BAND_1, 2110000, 0, 599, 1920000, 18800, 18599),
537         EUTRAN_ARFCN_FREQUENCY_BAND_2(
538                 EutranBand.BAND_2, 1930000, 600, 1199, 1850000, 18600, 19199),
539         EUTRAN_ARFCN_FREQUENCY_BAND_3(
540                 EutranBand.BAND_3, 1805000, 1200, 1949, 1710000, 19200, 19949),
541         EUTRAN_ARFCN_FREQUENCY_BAND_4(
542                 EutranBand.BAND_4, 2110000, 1950, 2399, 1710000, 19950, 20399),
543         EUTRAN_ARFCN_FREQUENCY_BAND_5(
544                 EutranBand.BAND_5, 869000, 2400, 2649, 824000, 20400, 20649),
545         EUTRAN_ARFCN_FREQUENCY_BAND_6(
546                 EutranBand.BAND_6, 875000, 2650, 2749, 830000, 20650, 20749),
547         EUTRAN_ARFCN_FREQUENCY_BAND_7(
548                 EutranBand.BAND_7, 2620000, 2750, 3449, 2500000, 20750, 21449),
549         EUTRAN_ARFCN_FREQUENCY_BAND_8(
550                 EutranBand.BAND_8, 925000, 3450, 3799, 880000, 21450, 21799),
551         EUTRAN_ARFCN_FREQUENCY_BAND_9(
552                 EutranBand.BAND_9, 1844900, 3800, 4149, 1749900, 21800, 22149),
553         EUTRAN_ARFCN_FREQUENCY_BAND_10(
554                 EutranBand.BAND_10, 2110000, 4150, 4749, 1710000, 22150, 22749),
555         EUTRAN_ARFCN_FREQUENCY_BAND_11(
556                 EutranBand.BAND_11, 1475900, 4750, 4949, 1427900, 22750, 22949),
557         EUTRAN_ARFCN_FREQUENCY_BAND_12(
558                 EutranBand.BAND_12, 729000, 5010, 5179, 699000, 23010, 23179),
559         EUTRAN_ARFCN_FREQUENCY_BAND_13(
560                 EutranBand.BAND_13, 746000, 5180, 5279, 777000, 23180, 23279),
561         EUTRAN_ARFCN_FREQUENCY_BAND_14(
562                 EutranBand.BAND_14, 758000, 5280, 5379, 788000, 23230, 23379),
563         EUTRAN_ARFCN_FREQUENCY_BAND_17(
564                 EutranBand.BAND_17, 734000, 5730, 5849, 704000, 23730, 23849),
565         EUTRAN_ARFCN_FREQUENCY_BAND_18(
566                 EutranBand.BAND_18, 860000, 5850, 5999, 815000, 23850, 23999),
567         EUTRAN_ARFCN_FREQUENCY_BAND_19(
568                 EutranBand.BAND_19, 875000, 6000, 6149, 830000, 24000, 24149),
569         EUTRAN_ARFCN_FREQUENCY_BAND_20(
570                 EutranBand.BAND_20, 791000, 6150, 6449, 832000, 24150, 24449),
571         EUTRAN_ARFCN_FREQUENCY_BAND_21(
572                 EutranBand.BAND_21, 1495900, 6450, 6599, 1447900, 24450, 24599),
573         EUTRAN_ARFCN_FREQUENCY_BAND_22(
574                 EutranBand.BAND_22, 3510000, 6600, 7399, 3410000, 24600, 25399),
575         EUTRAN_ARFCN_FREQUENCY_BAND_23(
576                 EutranBand.BAND_23, 2180000, 7500, 7699, 2000000, 25500, 25699),
577         EUTRAN_ARFCN_FREQUENCY_BAND_24(
578                 EutranBand.BAND_24, 1525000, 7700, 8039, 1626500, 25700, 26039),
579         EUTRAN_ARFCN_FREQUENCY_BAND_25(
580                 EutranBand.BAND_25, 1930000, 8040, 8689, 1850000, 26040, 26689),
581         EUTRAN_ARFCN_FREQUENCY_BAND_26(
582                 EutranBand.BAND_26, 859000, 8690, 9039, 814000, 26690, 27039),
583         EUTRAN_ARFCN_FREQUENCY_BAND_27(
584                 EutranBand.BAND_27, 852000, 9040, 9209, 807000, 27040, 27209),
585         EUTRAN_ARFCN_FREQUENCY_BAND_28(
586                 EutranBand.BAND_28, 758000, 9210, 9659, 703000, 27210, 27659),
587         EUTRAN_ARFCN_FREQUENCY_BAND_30(
588                 EutranBand.BAND_30, 2350000, 9770, 9869, 2305000, 27660, 27759),
589         EUTRAN_ARFCN_FREQUENCY_BAND_31(
590                 EutranBand.BAND_31, 462500, 9870, 9919, 452500, 27760, 27809),
591         EUTRAN_ARFCN_FREQUENCY_BAND_33(
592                 EutranBand.BAND_33, 1900000, 36000, 36199, 1900000, 36000, 36199),
593         EUTRAN_ARFCN_FREQUENCY_BAND_34(
594                 EutranBand.BAND_34, 2010000, 36200, 36349, 2010000, 36200, 36349),
595         EUTRAN_ARFCN_FREQUENCY_BAND_35(
596                 EutranBand.BAND_35, 1850000, 36350, 36949, 1850000, 36350, 36949),
597         EUTRAN_ARFCN_FREQUENCY_BAND_36(
598                 EutranBand.BAND_36, 1930000, 36950, 37549, 1930000, 36950, 37549),
599         EUTRAN_ARFCN_FREQUENCY_BAND_37(
600                 EutranBand.BAND_37, 1910000, 37550, 37749, 1910000, 37550, 37749),
601         EUTRAN_ARFCN_FREQUENCY_BAND_38(
602                 EutranBand.BAND_38, 2570000, 37750, 38249, 2570000, 37750, 38249),
603         EUTRAN_ARFCN_FREQUENCY_BAND_39(
604                 EutranBand.BAND_39, 1880000, 38250, 38649, 1880000, 38250, 38649),
605         EUTRAN_ARFCN_FREQUENCY_BAND_40(
606                 EutranBand.BAND_40, 2300000, 38650, 39649, 2300000, 38650, 39649),
607         EUTRAN_ARFCN_FREQUENCY_BAND_41(
608                 EutranBand.BAND_41, 2496000, 39650, 41589, 2496000, 39650, 41589),
609         EUTRAN_ARFCN_FREQUENCY_BAND_42(
610                 EutranBand.BAND_42, 3400000, 41590, 43589, 3400000, 41590, 43589),
611         EUTRAN_ARFCN_FREQUENCY_BAND_43(
612                 EutranBand.BAND_43, 3600000, 43590, 45589, 3600000, 43590, 45589),
613         EUTRAN_ARFCN_FREQUENCY_BAND_44(
614                 EutranBand.BAND_44, 703000, 45590, 46589, 703000, 45590, 46589),
615         EUTRAN_ARFCN_FREQUENCY_BAND_45(
616                 EutranBand.BAND_45, 1447000, 46590, 46789, 1447000, 46590, 46789),
617         EUTRAN_ARFCN_FREQUENCY_BAND_46(
618                 EutranBand.BAND_46, 5150000, 46790, 54539, 5150000, 46790, 54539),
619         EUTRAN_ARFCN_FREQUENCY_BAND_47(
620                 EutranBand.BAND_47, 5855000, 54540, 55239, 5855000, 54540, 55239),
621         EUTRAN_ARFCN_FREQUENCY_BAND_48(
622                 EutranBand.BAND_48, 3550000, 55240, 56739, 3550000, 55240, 56739),
623         EUTRAN_ARFCN_FREQUENCY_BAND_49(
624                 EutranBand.BAND_49, 3550000, 56740, 58239, 3550000, 56740, 58239),
625         EUTRAN_ARFCN_FREQUENCY_BAND_50(
626                 EutranBand.BAND_50, 1432000, 58240, 59089, 1432000, 58240, 59089),
627         EUTRAN_ARFCN_FREQUENCY_BAND_51(
628                 EutranBand.BAND_51, 1427000, 59090, 59139, 1427000, 59090, 59139),
629         EUTRAN_ARFCN_FREQUENCY_BAND_52(
630                 EutranBand.BAND_52, 3300000, 59140, 60139, 3300000, 59140, 60139),
631         EUTRAN_ARFCN_FREQUENCY_BAND_53(
632                 EutranBand.BAND_53, 2483500, 60140, 60254, 2483500, 60140, 60254),
633         EUTRAN_ARFCN_FREQUENCY_BAND_65(
634                 EutranBand.BAND_65, 2110000, 65536, 66435, 1920000, 131072, 131971),
635         EUTRAN_ARFCN_FREQUENCY_BAND_66(
636                 EutranBand.BAND_66, 2110000, 66436, 67335, 1710000, 131972, 132671),
637         EUTRAN_ARFCN_FREQUENCY_BAND_68(
638                 EutranBand.BAND_68, 753000, 67536, 67835, 698000, 132672, 132971),
639         EUTRAN_ARFCN_FREQUENCY_BAND_70(
640                 EutranBand.BAND_70, 1995000, 68336, 68585, 1695000, 132972, 133121),
641         EUTRAN_ARFCN_FREQUENCY_BAND_71(
642                 EutranBand.BAND_71, 617000, 68586, 68935, 663000, 133122, 133471),
643         EUTRAN_ARFCN_FREQUENCY_BAND_72(
644                 EutranBand.BAND_72, 461000, 68936, 68985, 451000, 133472, 133521),
645         EUTRAN_ARFCN_FREQUENCY_BAND_73(
646                 EutranBand.BAND_73, 460000, 68986, 69035, 450000, 133522, 133571),
647         EUTRAN_ARFCN_FREQUENCY_BAND_74(
648                 EutranBand.BAND_74, 1475000, 69036, 69465, 1427000, 133572, 134001),
649         EUTRAN_ARFCN_FREQUENCY_BAND_85(
650                 EutranBand.BAND_85, 728000, 70366, 70545, 698000, 134002, 134181),
651         EUTRAN_ARFCN_FREQUENCY_BAND_87(
652                 EutranBand.BAND_87, 420000, 70546, 70595, 410000, 134182, 134231),
653         EUTRAN_ARFCN_FREQUENCY_BAND_88(
654                 EutranBand.BAND_88, 422000, 70596, 70645, 412000, 134231, 134280);
655 
EutranBandArfcnFrequency(int band, int downlinkLowKhz, int downlinkOffset, int downlinkRange, int uplinkLowKhz, int uplinkOffset, int uplinkRange)656         EutranBandArfcnFrequency(int band, int downlinkLowKhz, int downlinkOffset,
657                                  int downlinkRange, int uplinkLowKhz, int uplinkOffset,
658                                  int uplinkRange) {
659             this.band = band;
660             this.downlinkLowKhz = downlinkLowKhz;
661             this.downlinkOffset = downlinkOffset;
662             this.downlinkRange = downlinkRange;
663             this.uplinkLowKhz = uplinkLowKhz;
664             this.uplinkOffset = uplinkOffset;
665             this.uplinkRange = uplinkRange;
666         }
667 
668         int band;
669         int downlinkLowKhz;
670         int downlinkOffset;
671         int downlinkRange;
672         int uplinkLowKhz;
673         int uplinkOffset;
674         int uplinkRange;
675     }
676 
677     /**
678      * Frequency bands for CDMA2000.
679      * http://www.3gpp2.org/Public_html/Specs/C.S0057-E_v1.0_Bandclass_Specification.pdf
680      * @hide
681      *
682      * TODO(yinxu): Check with the nexus team about the definition of CDMA bands.
683      */
684     public static final class CdmaBands {
685         public static final int BAND_0 = 1;
686         public static final int BAND_1 = 2;
687         public static final int BAND_2 = 3;
688         public static final int BAND_3 = 4;
689         public static final int BAND_4 = 5;
690         public static final int BAND_5 = 6;
691         public static final int BAND_6 = 7;
692         public static final int BAND_7 = 8;
693         public static final int BAND_8 = 9;
694         public static final int BAND_9 = 10;
695         public static final int BAND_10 = 11;
696         public static final int BAND_11 = 12;
697         public static final int BAND_12 = 13;
698         public static final int BAND_13 = 14;
699         public static final int BAND_14 = 15;
700         public static final int BAND_15 = 16;
701         public static final int BAND_16 = 17;
702         public static final int BAND_17 = 18;
703         public static final int BAND_18 = 19;
704         public static final int BAND_19 = 20;
705         public static final int BAND_20 = 21;
706         public static final int BAND_21 = 22;
707 
708         /** @hide */
CdmaBands()709         private CdmaBands() {}
710     }
711 
712     /**
713      * Frequency bands for NGRAN
714      * https://www.etsi.org/deliver/etsi_ts/138100_138199/13810101/15.08.02_60/ts_13810101v150802p.pdf
715      * https://www.etsi.org/deliver/etsi_ts/138100_138199/13810102/15.08.00_60/ts_13810102v150800p.pdf
716      */
717     public static final class NgranBands {
718         /** 3GPP TS 38.101-1, Version 16.5.0, Table 5.2-1: FR1 bands */
719         public static final int BAND_1 = android.hardware.radio.network.NgranBands.BAND_1;
720         public static final int BAND_2 = android.hardware.radio.network.NgranBands.BAND_2;
721         public static final int BAND_3 = android.hardware.radio.network.NgranBands.BAND_3;
722         public static final int BAND_5 = android.hardware.radio.network.NgranBands.BAND_5;
723         public static final int BAND_7 = android.hardware.radio.network.NgranBands.BAND_7;
724         public static final int BAND_8 = android.hardware.radio.network.NgranBands.BAND_8;
725         public static final int BAND_12 = android.hardware.radio.network.NgranBands.BAND_12;
726         public static final int BAND_14 = android.hardware.radio.network.NgranBands.BAND_14;
727         public static final int BAND_18 = android.hardware.radio.network.NgranBands.BAND_18;
728         public static final int BAND_20 = android.hardware.radio.network.NgranBands.BAND_20;
729         public static final int BAND_25 = android.hardware.radio.network.NgranBands.BAND_25;
730         public static final int BAND_26 = android.hardware.radio.network.NgranBands.BAND_26;
731         public static final int BAND_28 = android.hardware.radio.network.NgranBands.BAND_28;
732         public static final int BAND_29 = android.hardware.radio.network.NgranBands.BAND_29;
733         public static final int BAND_30 = android.hardware.radio.network.NgranBands.BAND_30;
734         public static final int BAND_34 = android.hardware.radio.network.NgranBands.BAND_34;
735         public static final int BAND_38 = android.hardware.radio.network.NgranBands.BAND_38;
736         public static final int BAND_39 = android.hardware.radio.network.NgranBands.BAND_39;
737         public static final int BAND_40 = android.hardware.radio.network.NgranBands.BAND_40;
738         public static final int BAND_41 = android.hardware.radio.network.NgranBands.BAND_41;
739         public static final int BAND_46 = android.hardware.radio.network.NgranBands.BAND_46;
740         public static final int BAND_48 = android.hardware.radio.network.NgranBands.BAND_48;
741         public static final int BAND_50 = android.hardware.radio.network.NgranBands.BAND_50;
742         public static final int BAND_51 = android.hardware.radio.network.NgranBands.BAND_51;
743         public static final int BAND_53 = android.hardware.radio.network.NgranBands.BAND_53;
744         public static final int BAND_65 = android.hardware.radio.network.NgranBands.BAND_65;
745         public static final int BAND_66 = android.hardware.radio.network.NgranBands.BAND_66;
746         public static final int BAND_70 = android.hardware.radio.network.NgranBands.BAND_70;
747         public static final int BAND_71 = android.hardware.radio.network.NgranBands.BAND_71;
748         public static final int BAND_74 = android.hardware.radio.network.NgranBands.BAND_74;
749         public static final int BAND_75 = android.hardware.radio.network.NgranBands.BAND_75;
750         public static final int BAND_76 = android.hardware.radio.network.NgranBands.BAND_76;
751         public static final int BAND_77 = android.hardware.radio.network.NgranBands.BAND_77;
752         public static final int BAND_78 = android.hardware.radio.network.NgranBands.BAND_78;
753         public static final int BAND_79 = android.hardware.radio.network.NgranBands.BAND_79;
754         public static final int BAND_80 = android.hardware.radio.network.NgranBands.BAND_80;
755         public static final int BAND_81 = android.hardware.radio.network.NgranBands.BAND_81;
756         public static final int BAND_82 = android.hardware.radio.network.NgranBands.BAND_82;
757         public static final int BAND_83 = android.hardware.radio.network.NgranBands.BAND_83;
758         public static final int BAND_84 = android.hardware.radio.network.NgranBands.BAND_84;
759         public static final int BAND_86 = android.hardware.radio.network.NgranBands.BAND_86;
760         public static final int BAND_89 = android.hardware.radio.network.NgranBands.BAND_89;
761         public static final int BAND_90 = android.hardware.radio.network.NgranBands.BAND_90;
762         public static final int BAND_91 = android.hardware.radio.network.NgranBands.BAND_91;
763         public static final int BAND_92 = android.hardware.radio.network.NgranBands.BAND_92;
764         public static final int BAND_93 = android.hardware.radio.network.NgranBands.BAND_93;
765         public static final int BAND_94 = android.hardware.radio.network.NgranBands.BAND_94;
766         public static final int BAND_95 = android.hardware.radio.network.NgranBands.BAND_95;
767         public static final int BAND_96 = android.hardware.radio.network.NgranBands.BAND_96;
768 
769         /** 3GPP TS 38.101-2, Version 16.2.0, Table 5.2-1: FR2 bands */
770         public static final int BAND_257 = android.hardware.radio.network.NgranBands.BAND_257;
771         public static final int BAND_258 = android.hardware.radio.network.NgranBands.BAND_258;
772         public static final int BAND_260 = android.hardware.radio.network.NgranBands.BAND_260;
773         public static final int BAND_261 = android.hardware.radio.network.NgranBands.BAND_261;
774 
775         /**
776          * NR Bands
777          *
778          * @hide */
779         @Retention(RetentionPolicy.SOURCE)
780         @IntDef(prefix = {"BAND_"},
781                 value = {BAND_1,
782                         BAND_2,
783                         BAND_3,
784                         BAND_5,
785                         BAND_7,
786                         BAND_8,
787                         BAND_12,
788                         BAND_14,
789                         BAND_18,
790                         BAND_20,
791                         BAND_25,
792                         BAND_26,
793                         BAND_28,
794                         BAND_29,
795                         BAND_30,
796                         BAND_34,
797                         BAND_38,
798                         BAND_39,
799                         BAND_40,
800                         BAND_41,
801                         BAND_46,
802                         BAND_48,
803                         BAND_50,
804                         BAND_51,
805                         BAND_53,
806                         BAND_65,
807                         BAND_66,
808                         BAND_70,
809                         BAND_71,
810                         BAND_74,
811                         BAND_75,
812                         BAND_76,
813                         BAND_77,
814                         BAND_78,
815                         BAND_79,
816                         BAND_80,
817                         BAND_81,
818                         BAND_82,
819                         BAND_83,
820                         BAND_84,
821                         BAND_86,
822                         BAND_89,
823                         BAND_90,
824                         BAND_91,
825                         BAND_92,
826                         BAND_93,
827                         BAND_94,
828                         BAND_95,
829                         BAND_96,
830                         BAND_257,
831                         BAND_258,
832                         BAND_260,
833                         BAND_261})
834         public @interface NgranBand {}
835 
836         /**
837          * Unknown NR frequency.
838          *
839          * @hide
840          */
841         @SystemApi
842         public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0;
843 
844         /**
845          * NR frequency group 1 defined in 3GPP TS 38.101-1 table 5.2-1
846          *
847          * @hide
848          */
849         @SystemApi
850         public static final int FREQUENCY_RANGE_GROUP_1 = 1;
851 
852         /**
853          * NR frequency group 2 defined in 3GPP TS 38.101-2 table 5.2-1
854          *
855          * @hide
856          */
857         @SystemApi
858         public static final int FREQUENCY_RANGE_GROUP_2 = 2;
859 
860         /**
861          * Radio frequency range group
862          *
863          * @hide
864          */
865         @Retention(RetentionPolicy.SOURCE)
866         @IntDef(prefix = {"FREQUENCY_RANGE_GROUP_"},
867                 value = {
868                         FREQUENCY_RANGE_GROUP_UNKNOWN,
869                         FREQUENCY_RANGE_GROUP_1,
870                         FREQUENCY_RANGE_GROUP_2
871                 })
872         public @interface FrequencyRangeGroup {}
873 
874         /**
875          * Get frequency range group
876          *
877          * @param band NR band
878          * @return The frequency range group
879          *
880          * @hide
881          */
882         @SystemApi
getFrequencyRangeGroup(@granBand int band)883         public static @FrequencyRangeGroup int getFrequencyRangeGroup(@NgranBand int band) {
884             switch (band) {
885                 case BAND_1:
886                 case BAND_2:
887                 case BAND_3:
888                 case BAND_5:
889                 case BAND_7:
890                 case BAND_8:
891                 case BAND_12:
892                 case BAND_14:
893                 case BAND_18:
894                 case BAND_20:
895                 case BAND_25:
896                 case BAND_26:
897                 case BAND_28:
898                 case BAND_29:
899                 case BAND_30:
900                 case BAND_34:
901                 case BAND_38:
902                 case BAND_39:
903                 case BAND_40:
904                 case BAND_41:
905                 case BAND_46:
906                 case BAND_48:
907                 case BAND_50:
908                 case BAND_51:
909                 case BAND_53:
910                 case BAND_65:
911                 case BAND_66:
912                 case BAND_70:
913                 case BAND_71:
914                 case BAND_74:
915                 case BAND_75:
916                 case BAND_76:
917                 case BAND_77:
918                 case BAND_78:
919                 case BAND_79:
920                 case BAND_80:
921                 case BAND_81:
922                 case BAND_82:
923                 case BAND_83:
924                 case BAND_84:
925                 case BAND_86:
926                 case BAND_89:
927                 case BAND_90:
928                 case BAND_91:
929                 case BAND_92:
930                 case BAND_93:
931                 case BAND_94:
932                 case BAND_95:
933                 case BAND_96:
934                     return FREQUENCY_RANGE_GROUP_1;
935                 case BAND_257:
936                 case BAND_258:
937                 case BAND_260:
938                 case BAND_261:
939                     return FREQUENCY_RANGE_GROUP_2;
940                 default:
941                     return FREQUENCY_RANGE_GROUP_UNKNOWN;
942             }
943         };
944 
945         /** @hide */
NgranBands()946         private NgranBands() {}
947     }
948 
949     /**
950      * 3GPP TS 38.104 Table 5.4.2.1-1 NR-ARFCN parameters for the global frequency raster.
951      *
952      * @hide
953      */
954     enum NgranArfcnFrequency {
955 
956         NGRAN_ARFCN_FREQUENCY_RANGE_1(5, 0, 0, 0, 599999),
957         NGRAN_ARFCN_FREQUENCY_RANGE_2(15, 3000000, 600000, 600000, 2016666),
958         NGRAN_ARFCN_FREQUENCY_RANGE_3(60, 24250080, 2016667, 2016667, 3279165);
959 
NgranArfcnFrequency(int globalKhz, int rangeOffset, int arfcnOffset, int rangeFirst, int rangeLast)960         NgranArfcnFrequency(int globalKhz, int rangeOffset, int arfcnOffset,
961                             int rangeFirst, int rangeLast) {
962             this.globalKhz = globalKhz;
963             this.rangeOffset = rangeOffset;
964             this.arfcnOffset = arfcnOffset;
965             this.rangeFirst = rangeFirst;
966             this.rangeLast = rangeLast;
967         }
968 
969         int globalKhz;
970         int rangeOffset;
971         int arfcnOffset;
972         int rangeFirst;
973         int rangeLast;
974     }
975 
976     /** @hide */
AccessNetworkConstants()977     private AccessNetworkConstants() {};
978 }
979