diff --git a/drivers/huaweimodem/radio-settings.c b/drivers/huaweimodem/radio-settings.c index 20181d2b..ff7be48a 100644 --- a/drivers/huaweimodem/radio-settings.c +++ b/drivers/huaweimodem/radio-settings.c @@ -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,