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