blob: 39a75438925449ee245f7109492d30a387cdfbac [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telephony;
import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.hardware.radio.V1_1.GeranBands;
import android.hardware.radio.V1_5.AccessNetwork;
import android.hardware.radio.V1_5.EutranBands;
import android.hardware.radio.V1_5.UtranBands;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Contains access network related constants.
*/
public final class AccessNetworkConstants {
/**
* Wireless transportation type
*
* @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"TRANSPORT_TYPE_"},
value = {
TRANSPORT_TYPE_INVALID,
TRANSPORT_TYPE_WWAN,
TRANSPORT_TYPE_WLAN})
public @interface TransportType {}
/**
* Invalid transport type
* @hide
*/
@SystemApi
@TestApi
public static final int TRANSPORT_TYPE_INVALID = -1;
/**
* Transport type for Wireless Wide Area Networks (i.e. Cellular)
*/
public static final int TRANSPORT_TYPE_WWAN = 1;
/**
* Transport type for Wireless Local Area Networks (i.e. Wifi)
*/
public static final int TRANSPORT_TYPE_WLAN = 2;
/** @hide */
public static String transportTypeToString(@TransportType int transportType) {
switch (transportType) {
case TRANSPORT_TYPE_WWAN: return "WWAN";
case TRANSPORT_TYPE_WLAN: return "WLAN";
default: return Integer.toString(transportType);
}
}
/**
* Access network type
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"RADIO_ACCESS_NETWORK_TYPE_"},
value = {
AccessNetworkType.UNKNOWN,
AccessNetworkType.GERAN,
AccessNetworkType.UTRAN,
AccessNetworkType.EUTRAN,
AccessNetworkType.CDMA2000,
AccessNetworkType.IWLAN,
AccessNetworkType.NGRAN})
public @interface RadioAccessNetworkType {}
public static final class AccessNetworkType {
public static final int UNKNOWN = AccessNetwork.UNKNOWN;
public static final int GERAN = AccessNetwork.GERAN;
public static final int UTRAN = AccessNetwork.UTRAN;
public static final int EUTRAN = AccessNetwork.EUTRAN;
public static final int CDMA2000 = AccessNetwork.CDMA2000;
public static final int IWLAN = AccessNetwork.IWLAN;
public static final int NGRAN = AccessNetwork.NGRAN;
/** @hide */
private AccessNetworkType() {}
/** @hide */
public static String toString(int type) {
switch (type) {
case UNKNOWN: return "UNKNOWN";
case GERAN: return "GERAN";
case UTRAN: return "UTRAN";
case EUTRAN: return "EUTRAN";
case CDMA2000: return "CDMA2000";
case IWLAN: return "IWLAN";
case NGRAN: return "NGRAN";
default: return Integer.toString(type);
}
}
}
/**
* Frequency bands for GERAN.
* http://www.etsi.org/deliver/etsi_ts/145000_145099/145005/14.00.00_60/ts_145005v140000p.pdf
*/
public static final class GeranBand {
public static final int BAND_T380 = GeranBands.BAND_T380;
public static final int BAND_T410 = GeranBands.BAND_T410;
public static final int BAND_450 = GeranBands.BAND_450;
public static final int BAND_480 = GeranBands.BAND_480;
public static final int BAND_710 = GeranBands.BAND_710;
public static final int BAND_750 = GeranBands.BAND_750;
public static final int BAND_T810 = GeranBands.BAND_T810;
public static final int BAND_850 = GeranBands.BAND_850;
public static final int BAND_P900 = GeranBands.BAND_P900;
public static final int BAND_E900 = GeranBands.BAND_E900;
public static final int BAND_R900 = GeranBands.BAND_R900;
public static final int BAND_DCS1800 = GeranBands.BAND_DCS1800;
public static final int BAND_PCS1900 = GeranBands.BAND_PCS1900;
public static final int BAND_ER900 = GeranBands.BAND_ER900;
/** @hide */
private GeranBand() {}
}
/**
* Frequency bands for UTRAN.
* http://www.etsi.org/deliver/etsi_ts/125100_125199/125104/13.03.00_60/ts_125104v130p.pdf
*/
public static final class UtranBand {
public static final int BAND_1 = UtranBands.BAND_1;
public static final int BAND_2 = UtranBands.BAND_2;
public static final int BAND_3 = UtranBands.BAND_3;
public static final int BAND_4 = UtranBands.BAND_4;
public static final int BAND_5 = UtranBands.BAND_5;
public static final int BAND_6 = UtranBands.BAND_6;
public static final int BAND_7 = UtranBands.BAND_7;
public static final int BAND_8 = UtranBands.BAND_8;
public static final int BAND_9 = UtranBands.BAND_9;
public static final int BAND_10 = UtranBands.BAND_10;
public static final int BAND_11 = UtranBands.BAND_11;
public static final int BAND_12 = UtranBands.BAND_12;
public static final int BAND_13 = UtranBands.BAND_13;
public static final int BAND_14 = UtranBands.BAND_14;
// band 15, 16, 17, 18 are reserved
public static final int BAND_19 = UtranBands.BAND_19;
public static final int BAND_20 = UtranBands.BAND_20;
public static final int BAND_21 = UtranBands.BAND_21;
public static final int BAND_22 = UtranBands.BAND_22;
// band 23, 24 are reserved
public static final int BAND_25 = UtranBands.BAND_25;
public static final int BAND_26 = UtranBands.BAND_26;
// Frequency bands for TD-SCDMA. Defined in 3GPP TS 25.102, Table 5.2.
/**
* Band A
* 1900 - 1920 MHz: Uplink and downlink transmission
* 2010 - 2025 MHz: Uplink and downlink transmission
*/
public static final int BAND_A = UtranBands.BAND_A;
/**
* Band B
* 1850 - 1910 MHz: Uplink and downlink transmission
* 1930 - 1990 MHz: Uplink and downlink transmission
*/
public static final int BAND_B = UtranBands.BAND_B;
/**
* Band C
* 1910 - 1930 MHz: Uplink and downlink transmission
*/
public static final int BAND_C = UtranBands.BAND_C;
/**
* Band D
* 2570 - 2620 MHz: Uplink and downlink transmission
*/
public static final int BAND_D = UtranBands.BAND_D;
/**
* Band E
* 2300—2400 MHz: Uplink and downlink transmission
*/
public static final int BAND_E = UtranBands.BAND_E;
/**
* Band F
* 1880 - 1920 MHz: Uplink and downlink transmission
*/
public static final int BAND_F = UtranBands.BAND_F;
/** @hide */
private UtranBand() {}
}
/**
* Frequency bands for EUTRAN.
* 3GPP TS 36.101, Version 16.4.0, Table 5.5: Operating bands
* https://www.etsi.org/deliver/etsi_ts/136100_136199/136101/15.09.00_60/ts_136101v150900p.pdf
*/
public static final class EutranBand {
public static final int BAND_1 = EutranBands.BAND_1;
public static final int BAND_2 = EutranBands.BAND_2;
public static final int BAND_3 = EutranBands.BAND_3;
public static final int BAND_4 = EutranBands.BAND_4;
public static final int BAND_5 = EutranBands.BAND_5;
public static final int BAND_6 = EutranBands.BAND_6;
public static final int BAND_7 = EutranBands.BAND_7;
public static final int BAND_8 = EutranBands.BAND_8;
public static final int BAND_9 = EutranBands.BAND_9;
public static final int BAND_10 = EutranBands.BAND_10;
public static final int BAND_11 = EutranBands.BAND_11;
public static final int BAND_12 = EutranBands.BAND_12;
public static final int BAND_13 = EutranBands.BAND_13;
public static final int BAND_14 = EutranBands.BAND_14;
public static final int BAND_17 = EutranBands.BAND_17;
public static final int BAND_18 = EutranBands.BAND_18;
public static final int BAND_19 = EutranBands.BAND_19;
public static final int BAND_20 = EutranBands.BAND_20;
public static final int BAND_21 = EutranBands.BAND_21;
public static final int BAND_22 = EutranBands.BAND_22;
public static final int BAND_23 = EutranBands.BAND_23;
public static final int BAND_24 = EutranBands.BAND_24;
public static final int BAND_25 = EutranBands.BAND_25;
public static final int BAND_26 = EutranBands.BAND_26;
public static final int BAND_27 = EutranBands.BAND_27;
public static final int BAND_28 = EutranBands.BAND_28;
public static final int BAND_30 = EutranBands.BAND_30;
public static final int BAND_31 = EutranBands.BAND_31;
public static final int BAND_33 = EutranBands.BAND_33;
public static final int BAND_34 = EutranBands.BAND_34;
public static final int BAND_35 = EutranBands.BAND_35;
public static final int BAND_36 = EutranBands.BAND_36;
public static final int BAND_37 = EutranBands.BAND_37;
public static final int BAND_38 = EutranBands.BAND_38;
public static final int BAND_39 = EutranBands.BAND_39;
public static final int BAND_40 = EutranBands.BAND_40;
public static final int BAND_41 = EutranBands.BAND_41;
public static final int BAND_42 = EutranBands.BAND_42;
public static final int BAND_43 = EutranBands.BAND_43;
public static final int BAND_44 = EutranBands.BAND_44;
public static final int BAND_45 = EutranBands.BAND_45;
public static final int BAND_46 = EutranBands.BAND_46;
public static final int BAND_47 = EutranBands.BAND_47;
public static final int BAND_48 = EutranBands.BAND_48;
public static final int BAND_49 = EutranBands.BAND_49;
public static final int BAND_50 = EutranBands.BAND_50;
public static final int BAND_51 = EutranBands.BAND_51;
public static final int BAND_52 = EutranBands.BAND_52;
public static final int BAND_53 = EutranBands.BAND_53;
public static final int BAND_65 = EutranBands.BAND_65;
public static final int BAND_66 = EutranBands.BAND_66;
public static final int BAND_68 = EutranBands.BAND_68;
public static final int BAND_70 = EutranBands.BAND_70;
public static final int BAND_71 = EutranBands.BAND_71;
public static final int BAND_72 = EutranBands.BAND_72;
public static final int BAND_73 = EutranBands.BAND_73;
public static final int BAND_74 = EutranBands.BAND_74;
public static final int BAND_85 = EutranBands.BAND_85;
public static final int BAND_87 = EutranBands.BAND_87;
public static final int BAND_88 = EutranBands.BAND_88;
/** @hide */
private EutranBand() {};
}
/**
* Frequency bands for CDMA2000.
* http://www.3gpp2.org/Public_html/Specs/C.S0057-E_v1.0_Bandclass_Specification.pdf
* @hide
*
* TODO(yinxu): Check with the nexus team about the definition of CDMA bands.
*/
public static final class CdmaBands {
public static final int BAND_0 = 1;
public static final int BAND_1 = 2;
public static final int BAND_2 = 3;
public static final int BAND_3 = 4;
public static final int BAND_4 = 5;
public static final int BAND_5 = 6;
public static final int BAND_6 = 7;
public static final int BAND_7 = 8;
public static final int BAND_8 = 9;
public static final int BAND_9 = 10;
public static final int BAND_10 = 11;
public static final int BAND_11 = 12;
public static final int BAND_12 = 13;
public static final int BAND_13 = 14;
public static final int BAND_14 = 15;
public static final int BAND_15 = 16;
public static final int BAND_16 = 17;
public static final int BAND_17 = 18;
public static final int BAND_18 = 19;
public static final int BAND_19 = 20;
public static final int BAND_20 = 21;
public static final int BAND_21 = 22;
/** @hide */
private CdmaBands() {}
}
/**
* Frequency bands for NGRAN
* https://www.etsi.org/deliver/etsi_ts/138100_138199/13810101/15.08.02_60/ts_13810101v150802p.pdf
* https://www.etsi.org/deliver/etsi_ts/138100_138199/13810102/15.08.00_60/ts_13810102v150800p.pdf
*/
public static final class NgranBands {
/** 3GPP TS 38.101-1, Version 16.2.0, Table 5.2-1: FR1 bands */
public static final int BAND_1 = android.hardware.radio.V1_5.NgranBands.BAND_1;
public static final int BAND_2 = android.hardware.radio.V1_5.NgranBands.BAND_2;
public static final int BAND_3 = android.hardware.radio.V1_5.NgranBands.BAND_3;
public static final int BAND_5 = android.hardware.radio.V1_5.NgranBands.BAND_5;
public static final int BAND_7 = android.hardware.radio.V1_5.NgranBands.BAND_7;
public static final int BAND_8 = android.hardware.radio.V1_5.NgranBands.BAND_8;
public static final int BAND_12 = android.hardware.radio.V1_5.NgranBands.BAND_12;
public static final int BAND_14 = android.hardware.radio.V1_5.NgranBands.BAND_14;
public static final int BAND_18 = android.hardware.radio.V1_5.NgranBands.BAND_18;
public static final int BAND_20 = android.hardware.radio.V1_5.NgranBands.BAND_20;
public static final int BAND_25 = android.hardware.radio.V1_5.NgranBands.BAND_25;
public static final int BAND_28 = android.hardware.radio.V1_5.NgranBands.BAND_28;
public static final int BAND_29 = android.hardware.radio.V1_5.NgranBands.BAND_29;
public static final int BAND_30 = android.hardware.radio.V1_5.NgranBands.BAND_30;
public static final int BAND_34 = android.hardware.radio.V1_5.NgranBands.BAND_34;
public static final int BAND_38 = android.hardware.radio.V1_5.NgranBands.BAND_38;
public static final int BAND_39 = android.hardware.radio.V1_5.NgranBands.BAND_39;
public static final int BAND_40 = android.hardware.radio.V1_5.NgranBands.BAND_40;
public static final int BAND_41 = android.hardware.radio.V1_5.NgranBands.BAND_41;
public static final int BAND_48 = android.hardware.radio.V1_5.NgranBands.BAND_48;
public static final int BAND_50 = android.hardware.radio.V1_5.NgranBands.BAND_50;
public static final int BAND_51 = android.hardware.radio.V1_5.NgranBands.BAND_51;
public static final int BAND_65 = android.hardware.radio.V1_5.NgranBands.BAND_65;
public static final int BAND_66 = android.hardware.radio.V1_5.NgranBands.BAND_66;
public static final int BAND_70 = android.hardware.radio.V1_5.NgranBands.BAND_70;
public static final int BAND_71 = android.hardware.radio.V1_5.NgranBands.BAND_71;
public static final int BAND_74 = android.hardware.radio.V1_5.NgranBands.BAND_74;
public static final int BAND_75 = android.hardware.radio.V1_5.NgranBands.BAND_75;
public static final int BAND_76 = android.hardware.radio.V1_5.NgranBands.BAND_76;
public static final int BAND_77 = android.hardware.radio.V1_5.NgranBands.BAND_77;
public static final int BAND_78 = android.hardware.radio.V1_5.NgranBands.BAND_78;
public static final int BAND_79 = android.hardware.radio.V1_5.NgranBands.BAND_79;
public static final int BAND_80 = android.hardware.radio.V1_5.NgranBands.BAND_80;
public static final int BAND_81 = android.hardware.radio.V1_5.NgranBands.BAND_81;
public static final int BAND_82 = android.hardware.radio.V1_5.NgranBands.BAND_82;
public static final int BAND_83 = android.hardware.radio.V1_5.NgranBands.BAND_83;
public static final int BAND_84 = android.hardware.radio.V1_5.NgranBands.BAND_84;
public static final int BAND_86 = android.hardware.radio.V1_5.NgranBands.BAND_86;
public static final int BAND_89 = android.hardware.radio.V1_5.NgranBands.BAND_89;
public static final int BAND_90 = android.hardware.radio.V1_5.NgranBands.BAND_90;
public static final int BAND_91 = android.hardware.radio.V1_5.NgranBands.BAND_91;
public static final int BAND_92 = android.hardware.radio.V1_5.NgranBands.BAND_92;
public static final int BAND_93 = android.hardware.radio.V1_5.NgranBands.BAND_93;
public static final int BAND_94 = android.hardware.radio.V1_5.NgranBands.BAND_94;
public static final int BAND_95 = android.hardware.radio.V1_5.NgranBands.BAND_95;
/** 3GPP TS 38.101-2, Version 16.2.0, Table 5.2-1: FR2 bands */
public static final int BAND_257 = android.hardware.radio.V1_5.NgranBands.BAND_257;
public static final int BAND_258 = android.hardware.radio.V1_5.NgranBands.BAND_258;
public static final int BAND_260 = android.hardware.radio.V1_5.NgranBands.BAND_260;
public static final int BAND_261 = android.hardware.radio.V1_5.NgranBands.BAND_261;
/**
* NR Bands
*
* @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"BAND_"},
value = {BAND_1,
BAND_2,
BAND_3,
BAND_5,
BAND_7,
BAND_8,
BAND_12,
BAND_14,
BAND_18,
BAND_20,
BAND_25,
BAND_28,
BAND_29,
BAND_30,
BAND_34,
BAND_38,
BAND_39,
BAND_40,
BAND_41,
BAND_48,
BAND_50,
BAND_51,
BAND_65,
BAND_66,
BAND_70,
BAND_71,
BAND_74,
BAND_75,
BAND_76,
BAND_77,
BAND_78,
BAND_79,
BAND_80,
BAND_81,
BAND_82,
BAND_83,
BAND_84,
BAND_86,
BAND_89,
BAND_90,
BAND_91,
BAND_92,
BAND_93,
BAND_94,
BAND_95,
BAND_257,
BAND_258,
BAND_260,
BAND_261})
public @interface NgranBand {}
/**
* Unknown NR frequency.
*
* @hide
*/
@SystemApi
@TestApi
public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0;
/**
* NR frequency group 1 defined in 3GPP TS 38.101-1 table 5.2-1
*
* @hide
*/
@SystemApi
@TestApi
public static final int FREQUENCY_RANGE_GROUP_1 = 1;
/**
* NR frequency group 2 defined in 3GPP TS 38.101-2 table 5.2-1
*
* @hide
*/
@SystemApi
@TestApi
public static final int FREQUENCY_RANGE_GROUP_2 = 2;
/**
* Radio frequency range group
*
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"FREQUENCY_RANGE_GROUP_"},
value = {
FREQUENCY_RANGE_GROUP_UNKNOWN,
FREQUENCY_RANGE_GROUP_1,
FREQUENCY_RANGE_GROUP_2})
public @interface FrequencyRangeGroup {}
/**
* Get frequency range group
*
* @param band NR band
* @return The frequency range group
*
* @hide
*/
@SystemApi
@TestApi
public static @FrequencyRangeGroup int getFrequencyRangeGroup(@NgranBand int band) {
switch (band) {
case BAND_1:
case BAND_2:
case BAND_3:
case BAND_5:
case BAND_7:
case BAND_8:
case BAND_12:
case BAND_14:
case BAND_18:
case BAND_20:
case BAND_25:
case BAND_28:
case BAND_29:
case BAND_30:
case BAND_34:
case BAND_38:
case BAND_39:
case BAND_40:
case BAND_41:
case BAND_48:
case BAND_50:
case BAND_51:
case BAND_65:
case BAND_66:
case BAND_70:
case BAND_71:
case BAND_74:
case BAND_75:
case BAND_76:
case BAND_77:
case BAND_78:
case BAND_79:
case BAND_80:
case BAND_81:
case BAND_82:
case BAND_83:
case BAND_84:
case BAND_86:
case BAND_89:
case BAND_90:
case BAND_91:
case BAND_92:
case BAND_93:
case BAND_94:
case BAND_95:
return FREQUENCY_RANGE_GROUP_1;
case BAND_257:
case BAND_258:
case BAND_260:
case BAND_261:
return FREQUENCY_RANGE_GROUP_2;
default:
return FREQUENCY_RANGE_GROUP_UNKNOWN;
}
};
/** @hide */
private NgranBands() {}
}
/** @hide */
private AccessNetworkConstants() {};
}