huawei: the AT^SYSCFGEX command supports additional modes

- LTE and UMTS preferred (acqorder = 0302);
AT^SYSCFGEX="0302",40000000,2,4,40000000

- UMTS and GSM preferred (acqorder = 0201);
AT^SYSCFGEX="0201",40000000,2,4,40000000

For AT^SYSCFG, the modes are not available.
This commit is contained in:
Jimmy Gysens 2020-06-25 11:29:42 +02:00 committed by Denis Kenzior
parent 47b52aab34
commit 6c574ee24a
1 changed files with 13 additions and 0 deletions

View File

@ -207,6 +207,10 @@ static void syscfgex_query_mode_cb(gboolean ok, GAtResult *result,
strstr(acqorder, "02") &&
strstr(acqorder, "03")))
mode = OFONO_RADIO_ACCESS_MODE_ANY;
else if (strstr(acqorder, "0302"))
mode = (OFONO_RADIO_ACCESS_MODE_LTE | OFONO_RADIO_ACCESS_MODE_UMTS);
else if (strstr(acqorder, "0201"))
mode = (OFONO_RADIO_ACCESS_MODE_UMTS | OFONO_RADIO_ACCESS_MODE_LTE);
else if (strstr(acqorder, "03"))
mode = OFONO_RADIO_ACCESS_MODE_LTE;
else if (strstr(acqorder, "02"))
@ -281,6 +285,8 @@ static void syscfg_set_rat_mode(struct radio_settings_data *rsd,
break;
case OFONO_RADIO_ACCESS_MODE_LTE:
goto error;
default:
goto error;
}
snprintf(buf, sizeof(buf), "AT^SYSCFG=%u,%u,40000000,2,4",
@ -318,8 +324,15 @@ static void syscfgex_set_rat_mode(struct radio_settings_data *rsd,
case OFONO_RADIO_ACCESS_MODE_LTE:
acqorder = "03";
break;
default:
break;
}
if (mode == (OFONO_RADIO_ACCESS_MODE_LTE | OFONO_RADIO_ACCESS_MODE_UMTS))
acqorder = "0302";
else if (mode == (OFONO_RADIO_ACCESS_MODE_UMTS | OFONO_RADIO_ACCESS_MODE_LTE))
acqorder = "0201";
snprintf(buf, sizeof(buf), atcmd, acqorder);
if (g_at_chat_send(rsd->chat, buf, none_prefix,