Add support for LTE CarrierAgregation
Note this may be redesigned in O to better handle the various bitrate/channel combinations in a sane way. bug:27360321 Change-Id: If6ffbd02e3a7f170cc041747e32bb624234c3e09
This commit is contained in:
committed by
Robert Greenwalt
parent
d4ac4c7786
commit
7965fa41c3
@@ -933,10 +933,11 @@ public class CarrierConfigManager {
|
||||
sDefaults.putStringArray(KEY_SIGNAL_PCO_RECEIVER_STRING_ARRAY, null);
|
||||
sDefaults.putString(KEY_CARRIER_SETUP_APP_STRING, "");
|
||||
|
||||
// Rat families: {GPRS, EDGE}, {EVDO, EVDO_A, EVDO_B}, {UMTS, HSPA, HSDPA, HSUPA, HSPAP}
|
||||
// Rat families: {GPRS, EDGE}, {EVDO, EVDO_A, EVDO_B}, {UMTS, HSPA, HSDPA, HSUPA, HSPAP},
|
||||
// {LTE, LTE_CA}
|
||||
// Order is important - lowest precidence first
|
||||
sDefaults.putStringArray(KEY_RATCHET_RAT_FAMILIES,
|
||||
new String[]{"1,2","7,8,12","3,11,9,10,15"});
|
||||
new String[]{"1,2","7,8,12","3,11,9,10,15","14,19"});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,6 +47,7 @@ public class RadioAccessFamily implements Parcelable {
|
||||
public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP);
|
||||
public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM);
|
||||
public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA);
|
||||
public static final int RAF_LTE_CA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA);
|
||||
|
||||
// Grouping of RAFs
|
||||
private static final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE;
|
||||
@@ -54,6 +55,7 @@ public class RadioAccessFamily implements Parcelable {
|
||||
private static final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT;
|
||||
private static final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B | RAF_EHRPD;
|
||||
private static final int WCDMA = HS | RAF_UMTS;
|
||||
private static final int LTE = RAF_LTE | RAF_LTE_CA;
|
||||
|
||||
/* Phone ID of phone */
|
||||
private int mPhoneId;
|
||||
@@ -162,19 +164,19 @@ public class RadioAccessFamily implements Parcelable {
|
||||
raf = CDMA | EVDO;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO:
|
||||
raf = RAF_LTE | CDMA | EVDO;
|
||||
raf = LTE | CDMA | EVDO;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA:
|
||||
raf = RAF_LTE | GSM | WCDMA;
|
||||
raf = LTE | GSM | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
|
||||
raf = RAF_LTE | CDMA | EVDO | GSM | WCDMA;
|
||||
raf = LTE | CDMA | EVDO | GSM | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_ONLY:
|
||||
raf = RAF_LTE;
|
||||
raf = LTE;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_WCDMA:
|
||||
raf = RAF_LTE | WCDMA;
|
||||
raf = LTE | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
|
||||
raf = CDMA;
|
||||
@@ -192,28 +194,28 @@ public class RadioAccessFamily implements Parcelable {
|
||||
raf = RAF_TD_SCDMA | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_TDSCDMA:
|
||||
raf = RAF_LTE | RAF_TD_SCDMA;
|
||||
raf = LTE | RAF_TD_SCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_TDSCDMA_GSM:
|
||||
raf = RAF_TD_SCDMA | GSM;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
|
||||
raf = RAF_LTE | RAF_TD_SCDMA | GSM;
|
||||
raf = LTE | RAF_TD_SCDMA | GSM;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
|
||||
raf = RAF_TD_SCDMA | GSM | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
|
||||
raf = RAF_LTE | RAF_TD_SCDMA | WCDMA;
|
||||
raf = LTE | RAF_TD_SCDMA | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
|
||||
raf = RAF_LTE | RAF_TD_SCDMA | GSM | WCDMA;
|
||||
raf = LTE | RAF_TD_SCDMA | GSM | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
|
||||
raf = RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
|
||||
raf = RAF_LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA;
|
||||
raf = LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA;
|
||||
break;
|
||||
default:
|
||||
raf = RAF_UNKNOWN;
|
||||
@@ -232,6 +234,7 @@ public class RadioAccessFamily implements Parcelable {
|
||||
raf = ((WCDMA & raf) > 0) ? (WCDMA | raf) : raf;
|
||||
raf = ((CDMA & raf) > 0) ? (CDMA | raf) : raf;
|
||||
raf = ((EVDO & raf) > 0) ? (EVDO | raf) : raf;
|
||||
raf = ((LTE & raf) > 0) ? (LTE | raf) : raf;
|
||||
|
||||
return raf;
|
||||
}
|
||||
@@ -254,19 +257,19 @@ public class RadioAccessFamily implements Parcelable {
|
||||
case (CDMA | EVDO):
|
||||
type = RILConstants.NETWORK_MODE_CDMA;
|
||||
break;
|
||||
case (RAF_LTE | CDMA | EVDO):
|
||||
case (LTE | CDMA | EVDO):
|
||||
type = RILConstants.NETWORK_MODE_LTE_CDMA_EVDO;
|
||||
break;
|
||||
case (RAF_LTE | GSM | WCDMA):
|
||||
case (LTE | GSM | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_GSM_WCDMA;
|
||||
break;
|
||||
case (RAF_LTE | CDMA | EVDO | GSM | WCDMA):
|
||||
case (LTE | CDMA | EVDO | GSM | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
|
||||
break;
|
||||
case RAF_LTE:
|
||||
case LTE:
|
||||
type = RILConstants.NETWORK_MODE_LTE_ONLY;
|
||||
break;
|
||||
case (RAF_LTE | WCDMA):
|
||||
case (LTE | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_WCDMA;
|
||||
break;
|
||||
case CDMA:
|
||||
@@ -284,28 +287,28 @@ public class RadioAccessFamily implements Parcelable {
|
||||
case (RAF_TD_SCDMA | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_TDSCDMA_WCDMA;
|
||||
break;
|
||||
case (RAF_LTE | RAF_TD_SCDMA):
|
||||
case (LTE | RAF_TD_SCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_TDSCDMA;
|
||||
break;
|
||||
case (RAF_TD_SCDMA | GSM):
|
||||
type = RILConstants.NETWORK_MODE_TDSCDMA_GSM;
|
||||
break;
|
||||
case (RAF_LTE | RAF_TD_SCDMA | GSM):
|
||||
case (LTE | RAF_TD_SCDMA | GSM):
|
||||
type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
|
||||
break;
|
||||
case (RAF_TD_SCDMA | GSM | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA;
|
||||
break;
|
||||
case (RAF_LTE | RAF_TD_SCDMA | WCDMA):
|
||||
case (LTE | RAF_TD_SCDMA | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
|
||||
break;
|
||||
case (RAF_LTE | RAF_TD_SCDMA | GSM | WCDMA):
|
||||
case (LTE | RAF_TD_SCDMA | GSM | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
|
||||
break;
|
||||
case (RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
|
||||
break;
|
||||
case (RAF_LTE | RAF_TD_SCDMA | RAF_LTE | CDMA | EVDO | GSM | WCDMA):
|
||||
case (LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA):
|
||||
type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
|
||||
break;
|
||||
default:
|
||||
@@ -339,6 +342,7 @@ public class RadioAccessFamily implements Parcelable {
|
||||
case "CDMA": return CDMA;
|
||||
case "EVDO": return EVDO;
|
||||
case "WCDMA": return WCDMA;
|
||||
case "LTE_CA": return RAF_LTE_CA;
|
||||
default: return RAF_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,6 +155,12 @@ public class ServiceState implements Parcelable {
|
||||
*/
|
||||
public static final int RIL_RADIO_TECHNOLOGY_IWLAN = 18;
|
||||
|
||||
/**
|
||||
* LTE_CA
|
||||
* @hide
|
||||
*/
|
||||
public static final int RIL_RADIO_TECHNOLOGY_LTE_CA = 19;
|
||||
|
||||
/** @hide */
|
||||
public static final int RIL_RADIO_CDMA_TECHNOLOGY_BITMASK =
|
||||
(1 << (RIL_RADIO_TECHNOLOGY_IS95A - 1))
|
||||
@@ -746,6 +752,9 @@ public class ServiceState implements Parcelable {
|
||||
case RIL_RADIO_TECHNOLOGY_TD_SCDMA:
|
||||
rtString = "TD-SCDMA";
|
||||
break;
|
||||
case RIL_RADIO_TECHNOLOGY_LTE_CA:
|
||||
rtString = "LTE_CA";
|
||||
break;
|
||||
default:
|
||||
rtString = "Unexpected";
|
||||
Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt);
|
||||
@@ -1088,6 +1097,8 @@ public class ServiceState implements Parcelable {
|
||||
return TelephonyManager.NETWORK_TYPE_TD_SCDMA;
|
||||
case ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN:
|
||||
return TelephonyManager.NETWORK_TYPE_IWLAN;
|
||||
case ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA:
|
||||
return TelephonyManager.NETWORK_TYPE_LTE_CA;
|
||||
default:
|
||||
return TelephonyManager.NETWORK_TYPE_UNKNOWN;
|
||||
}
|
||||
@@ -1139,7 +1150,9 @@ public class ServiceState implements Parcelable {
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_HSPAP
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_GSM
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_TD_SCDMA
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_IWLAN;
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_IWLAN
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_LTE_CA;
|
||||
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@@ -1153,6 +1166,12 @@ public class ServiceState implements Parcelable {
|
||||
|| radioTechnology == RIL_RADIO_TECHNOLOGY_EHRPD;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public static boolean isLte(int radioTechnology) {
|
||||
return radioTechnology == RIL_RADIO_TECHNOLOGY_LTE ||
|
||||
radioTechnology == RIL_RADIO_TECHNOLOGY_LTE_CA;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public static boolean bearerBitmapHasCdma(int radioTechnologyBitmap) {
|
||||
return (RIL_RADIO_CDMA_TECHNOLOGY_BITMASK & radioTechnologyBitmap) != 0;
|
||||
|
||||
@@ -1451,7 +1451,8 @@ public class TelephonyManager {
|
||||
public static final int NETWORK_TYPE_TD_SCDMA = 17;
|
||||
/** Current network is IWLAN */
|
||||
public static final int NETWORK_TYPE_IWLAN = 18;
|
||||
|
||||
/** Current network is LTE_CA {@hide} */
|
||||
public static final int NETWORK_TYPE_LTE_CA = 19;
|
||||
/**
|
||||
* @return the NETWORK_TYPE_xxxx for current data connection.
|
||||
*/
|
||||
@@ -1654,6 +1655,7 @@ public class TelephonyManager {
|
||||
return NETWORK_CLASS_3_G;
|
||||
case NETWORK_TYPE_LTE:
|
||||
case NETWORK_TYPE_IWLAN:
|
||||
case NETWORK_TYPE_LTE_CA:
|
||||
return NETWORK_CLASS_4_G;
|
||||
default:
|
||||
return NETWORK_CLASS_UNKNOWN;
|
||||
@@ -1717,6 +1719,8 @@ public class TelephonyManager {
|
||||
return "TD_SCDMA";
|
||||
case NETWORK_TYPE_IWLAN:
|
||||
return "IWLAN";
|
||||
case NETWORK_TYPE_LTE_CA:
|
||||
return "LTE_CA";
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user