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