zte: extend allowed modes for LTE/4G devices for +ZSNT command

Updates:
  AT+ZSNT=6 means LTE only
  AT+ZSNT to specify 2G and 3G doesn't support 2G or 3G preference in LTE modems

Tested with a ZTE MF 820D.
This commit is contained in:
Marius B. Kotsbak
2012-09-06 08:36:34 +02:00
committed by Aleksander Morgado
parent 4804c37604
commit 02b71336ae

View File

@@ -208,7 +208,7 @@ load_allowed_modes_finish (MMIfaceModem *self,
goto done;
if (!mm_get_int_from_match_info (match_info, 1, &cm_mode) ||
cm_mode < 0 || cm_mode > 2 ||
cm_mode < 0 || (cm_mode > 2 && cm_mode != 6) ||
!mm_get_int_from_match_info (match_info, 3, &pref_acq) ||
pref_acq < 0 || pref_acq > 2) {
g_set_error (error,
@@ -222,10 +222,10 @@ load_allowed_modes_finish (MMIfaceModem *self,
/* Correctly parsed! */
result = TRUE;
if (cm_mode == 0) {
/* Both 2G and 3G allowed */
if (pref_acq == 0) {
/* Both 2G, 3G and LTE allowed. For LTE modems, no 2G/3G preference supported. */
if (pref_acq == 0 || mm_iface_modem_is_3gpp_lte (self)) {
/* Any allowed */
*allowed = (MM_MODEM_MODE_CS | MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
*allowed = MM_MODEM_MODE_ANY;
*preferred = MM_MODEM_MODE_NONE;
} else if (pref_acq == 1) {
*allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
@@ -243,6 +243,10 @@ load_allowed_modes_finish (MMIfaceModem *self,
/* WCDMA only */
*allowed = MM_MODEM_MODE_3G;
*preferred = MM_MODEM_MODE_NONE;
} else if (cm_mode == 6) {
/* LTE only */
*allowed = MM_MODEM_MODE_4G;
*preferred = MM_MODEM_MODE_NONE;
} else
g_assert_not_reached ();
@@ -327,7 +331,8 @@ set_allowed_modes (MMIfaceModem *self,
} else if (allowed == MM_MODEM_MODE_3G) {
cm_mode = 2;
pref_acq = 0;
} else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G)) {
} else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G)
&& !mm_iface_modem_is_3gpp_lte (self)) { /* LTE models do not support 2G|3G mode */
cm_mode = 0;
if (preferred == MM_MODEM_MODE_2G)
pref_acq = 1;
@@ -335,6 +340,12 @@ set_allowed_modes (MMIfaceModem *self,
pref_acq = 2;
else /* none preferred, so AUTO */
pref_acq = 0;
} else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G)) {
cm_mode = 0;
pref_acq = 0;
} else if (allowed == MM_MODEM_MODE_4G) {
cm_mode = 6;
pref_acq = 0;
}
if (cm_mode < 0 || pref_acq < 0) {