In Android's source code, I see
typedef enum {
PREF_NET_TYPE_GSM_WCDMA
= 0, /* GSM/WCDMA (WCDMA preferred) */
PREF_NET_TYPE_GSM_ONLY
= 1, /* GSM only */
PREF_NET_TYPE_WCDMA
= 2, /* WCDMA */
PREF_NET_TYPE_GSM_WCDMA_AUTO
= 3, /* GSM/WCDMA (auto mode, according to PRL) */
PREF_NET_TYPE_CDMA_EVDO_AUTO
= 4, /* CDMA and EvDo (auto mode, according to PRL) */
PREF_NET_TYPE_CDMA_ONLY
= 5, /* CDMA only */
PREF_NET_TYPE_EVDO_ONLY
= 6, /* EvDo only */
PREF_NET_TYPE_GSM_WCDMA_CDMA_EVDO_AUTO = 7, /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL) */
PREF_NET_TYPE_LTE_CDMA_EVDO
= 8, /* LTE, CDMA and EvDo */
PREF_NET_TYPE_LTE_GSM_WCDMA
= 9, /* LTE, GSM/WCDMA */
PREF_NET_TYPE_LTE_CMDA_EVDO_GSM_WCDMA = 10, /* LTE, CDMA, EvDo, GSM/WCDMA */
PREF_NET_TYPE_LTE_ONLY
= 11, /* LTE only */
PREF_NET_TYPE_LTE_WCDMA
= 12, /* LTE/WCDMA */
PREF_NET_TYPE_TD_SCDMA_ONLY
= 13, /* TD-SCDMA only */
PREF_NET_TYPE_TD_SCDMA_WCDMA
= 14, /* TD-SCDMA and WCDMA */
PREF_NET_TYPE_TD_SCDMA_LTE
= 15, /* TD-SCDMA and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM
= 16, /* TD-SCDMA and GSM */
PREF_NET_TYPE_TD_SCDMA_GSM_LTE
= 17, /* TD-SCDMA,GSM and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA
= 18, /* TD-SCDMA, GSM/WCDMA */
PREF_NET_TYPE_TD_SCDMA_WCDMA_LTE
= 19, /* TD-SCDMA, WCDMA and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA_LTE
= 20, /* TD-SCDMA, GSM/WCDMA and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO = 21, /* TD-SCDMA, GSM/WCDMA, CDMA and EvDo */
PREF_NET_TYPE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA
= 22 /* TD-SCDMA, LTE, CDMA, EvDo GSM/WCDMA */
}
RIL_PreferredNetworkType;
The problem is, I don't know what the terminology maps to.
"LTE" is obviously just 4G LTE, but what are TD-SCDMA, WCDMA, and EvDo?
I'm assuming at least some of them must map to 2G (GPRS), 2G (EDGE), 3G, "3.9G" (HSPA+), but which is which? And which ones are actually CDMA (Sprint, Verizon, etc.) rather than GSM?
(I'm a little confused because it seems GSM LTE phones also have modes like WCDMA?)