telit: add shared support for 5G modes

This commit is contained in:
Daniele Palmas
2022-09-05 11:47:45 +02:00
parent 664c95c684
commit 2c235260e4
2 changed files with 39 additions and 1 deletions

View File

@@ -821,7 +821,7 @@ mm_telit_build_modes_list (void)
MMModemModeCombination mode; MMModemModeCombination mode;
/* Build list of combinations for 3GPP devices */ /* Build list of combinations for 3GPP devices */
combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 7); combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 11);
/* 2G only */ /* 2G only */
mode.allowed = MM_MODEM_MODE_2G; mode.allowed = MM_MODEM_MODE_2G;
@@ -851,6 +851,22 @@ mm_telit_build_modes_list (void)
mode.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G); mode.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
mode.preferred = MM_MODEM_MODE_NONE; mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode); g_array_append_val (combinations, mode);
/* 5G only */
mode.allowed = MM_MODEM_MODE_5G;
mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode);
/* 3G and 5G */
mode.allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_5G);
mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode);
/* 4G and 5G */
mode.allowed = (MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode);
/* 3G, 4G and 5G */
mode.allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode);
return combinations; return combinations;
} }

View File

@@ -215,6 +215,18 @@ mm_shared_telit_load_current_modes_finish (MMIfaceModem *self,
case 31: case 31:
*allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G); *allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
return TRUE; return TRUE;
case 36:
*allowed = MM_MODEM_MODE_5G;
return TRUE;
case 37:
*allowed = (MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
return TRUE;
case 38:
*allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
return TRUE;
case 40:
*allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_5G);
return TRUE;
default: default:
break; break;
} }
@@ -601,6 +613,8 @@ mm_shared_telit_set_current_modes (MMIfaceModem *self,
allowed |= MM_MODEM_MODE_3G; allowed |= MM_MODEM_MODE_3G;
if (g_array_index (priv->supported_modes, MMModemMode, i) & MM_MODEM_MODE_4G) if (g_array_index (priv->supported_modes, MMModemMode, i) & MM_MODEM_MODE_4G)
allowed |= MM_MODEM_MODE_4G; allowed |= MM_MODEM_MODE_4G;
if (g_array_index (priv->supported_modes, MMModemMode, i) & MM_MODEM_MODE_5G)
allowed |= MM_MODEM_MODE_5G;
} }
} }
@@ -610,6 +624,8 @@ mm_shared_telit_set_current_modes (MMIfaceModem *self,
ws46_mode = 22; ws46_mode = 22;
else if (allowed == MM_MODEM_MODE_4G) else if (allowed == MM_MODEM_MODE_4G)
ws46_mode = 28; ws46_mode = 28;
else if (allowed == MM_MODEM_MODE_5G)
ws46_mode = 36;
else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G)) { else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G)) {
if (mm_iface_modem_is_3gpp_lte (self)) if (mm_iface_modem_is_3gpp_lte (self))
ws46_mode = 29; ws46_mode = 29;
@@ -621,6 +637,12 @@ mm_shared_telit_set_current_modes (MMIfaceModem *self,
ws46_mode = 31; ws46_mode = 31;
else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G)) else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G))
ws46_mode = 25; ws46_mode = 25;
else if (allowed == (MM_MODEM_MODE_3G | MM_MODEM_MODE_5G))
ws46_mode = 40;
else if (allowed == (MM_MODEM_MODE_4G | MM_MODEM_MODE_5G))
ws46_mode = 37;
else if (allowed == (MM_MODEM_MODE_3G |MM_MODEM_MODE_4G | MM_MODEM_MODE_5G))
ws46_mode = 38;
/* Telit modems do not support preferred mode selection */ /* Telit modems do not support preferred mode selection */
if ((ws46_mode < 0) || (preferred != MM_MODEM_MODE_NONE)) { if ((ws46_mode < 0) || (preferred != MM_MODEM_MODE_NONE)) {