diff options
author | Jimmy Gysens <jimmy.gysens_ext@softathome.com> | 2020-06-25 11:29:42 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2020-06-25 11:33:58 -0500 |
commit | 6c574ee24a57d0397e4e3c617016bf026405960a (patch) | |
tree | 38ab0078304e8b2d15bc0743278112d3bb032c51 /drivers | |
parent | 47b52aab34dc12939753c003025bc14700f5e6b6 (diff) | |
download | ofono-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.c | 13 |
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, |