summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJimmy Gysens <jimmy.gysens_ext@softathome.com>2020-06-25 11:29:42 +0200
committerDenis Kenzior <denkenz@gmail.com>2020-06-25 11:33:58 -0500
commit6c574ee24a57d0397e4e3c617016bf026405960a (patch)
tree38ab0078304e8b2d15bc0743278112d3bb032c51 /drivers
parent47b52aab34dc12939753c003025bc14700f5e6b6 (diff)
downloadofono-6c574ee24a57d0397e4e3c617016bf026405960a.tar.gz
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.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/huaweimodem/radio-settings.c13
1 files changed, 13 insertions, 0 deletions
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,