helpers-mbim: add support for 3GPP2 data classes
Just for completeness.
This commit is contained in:
@@ -1212,7 +1212,9 @@ modem_set_current_modes (MMIfaceModem *self,
|
|||||||
g_autoptr(MbimMessage) message = NULL;
|
g_autoptr(MbimMessage) message = NULL;
|
||||||
MbimDataClass data_class;
|
MbimDataClass data_class;
|
||||||
|
|
||||||
data_class = mm_mbim_data_class_from_modem_mode (allowed);
|
data_class = mm_mbim_data_class_from_modem_mode (allowed,
|
||||||
|
mm_iface_modem_is_3gpp (self),
|
||||||
|
mm_iface_modem_is_cdma (self));
|
||||||
g_task_set_task_data (task, GUINT_TO_POINTER (data_class), NULL);
|
g_task_set_task_data (task, GUINT_TO_POINTER (data_class), NULL);
|
||||||
message = mbim_message_register_state_set_new (
|
message = mbim_message_register_state_set_new (
|
||||||
NULL,
|
NULL,
|
||||||
|
@@ -128,39 +128,71 @@ mm_modem_mode_from_mbim_data_class (MbimDataClass data_class)
|
|||||||
{
|
{
|
||||||
MMModemMode mask = MM_MODEM_MODE_NONE;
|
MMModemMode mask = MM_MODEM_MODE_NONE;
|
||||||
|
|
||||||
if (data_class & MBIM_DATA_CLASS_GPRS)
|
/* 3GPP... */
|
||||||
|
if (data_class & (MBIM_DATA_CLASS_GPRS |
|
||||||
|
MBIM_DATA_CLASS_EDGE))
|
||||||
mask |= MM_MODEM_MODE_2G;
|
mask |= MM_MODEM_MODE_2G;
|
||||||
if (data_class & MBIM_DATA_CLASS_EDGE)
|
if (data_class & (MBIM_DATA_CLASS_UMTS |
|
||||||
mask |= MM_MODEM_MODE_2G;
|
MBIM_DATA_CLASS_HSDPA |
|
||||||
if (data_class & MBIM_DATA_CLASS_UMTS)
|
MBIM_DATA_CLASS_HSUPA))
|
||||||
mask |= MM_MODEM_MODE_3G;
|
|
||||||
if (data_class & MBIM_DATA_CLASS_HSDPA)
|
|
||||||
mask |= MM_MODEM_MODE_3G;
|
|
||||||
if (data_class & MBIM_DATA_CLASS_HSUPA)
|
|
||||||
mask |= MM_MODEM_MODE_3G;
|
mask |= MM_MODEM_MODE_3G;
|
||||||
if (data_class & MBIM_DATA_CLASS_LTE)
|
if (data_class & MBIM_DATA_CLASS_LTE)
|
||||||
mask |= MM_MODEM_MODE_4G;
|
mask |= MM_MODEM_MODE_4G;
|
||||||
if(data_class & MBIM_DATA_CLASS_5G_NSA)
|
if (data_class & (MBIM_DATA_CLASS_5G_NSA |
|
||||||
mask |= MM_MODEM_MODE_5G;
|
MBIM_DATA_CLASS_5G_SA))
|
||||||
if(data_class & MBIM_DATA_CLASS_5G_SA)
|
|
||||||
mask |= MM_MODEM_MODE_5G;
|
mask |= MM_MODEM_MODE_5G;
|
||||||
|
|
||||||
|
/* 3GPP2... */
|
||||||
|
if (self->priv->caps_data_class & MBIM_DATA_CLASS_1XRTT)
|
||||||
|
all |= MM_MODEM_MODE_2G;
|
||||||
|
if (self->priv->caps_data_class & (MBIM_DATA_CLASS_1XEVDO |
|
||||||
|
MBIM_DATA_CLASS_1XEVDO_REVA |
|
||||||
|
MBIM_DATA_CLASS_1XEVDV |
|
||||||
|
MBIM_DATA_CLASS_3XRTT |
|
||||||
|
MBIM_DATA_CLASS_1XEVDO_REVB))
|
||||||
|
all |= MM_MODEM_MODE_3G;
|
||||||
|
if (self->priv->caps_data_class & MBIM_DATA_CLASS_UMB)
|
||||||
|
all |= MM_MODEM_MODE_4G;
|
||||||
|
|
||||||
return mask;
|
return mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
MbimDataClass
|
MbimDataClass
|
||||||
mm_mbim_data_class_from_modem_mode (MMModemMode modem_mode)
|
mm_mbim_data_class_from_modem_mode (MMModemMode modem_mode,
|
||||||
|
gboolean is_3gpp,
|
||||||
|
gboolean is_cdma)
|
||||||
{
|
{
|
||||||
MbimDataClass mask = 0;
|
MbimDataClass mask = 0;
|
||||||
|
|
||||||
|
/* 3GPP... */
|
||||||
|
if (is_3gpp) {
|
||||||
if (modem_mode & MM_MODEM_MODE_2G)
|
if (modem_mode & MM_MODEM_MODE_2G)
|
||||||
mask |= MBIM_DATA_CLASS_GPRS | MBIM_DATA_CLASS_EDGE;
|
mask |= (MBIM_DATA_CLASS_GPRS |
|
||||||
|
MBIM_DATA_CLASS_EDGE);
|
||||||
if (modem_mode & MM_MODEM_MODE_3G)
|
if (modem_mode & MM_MODEM_MODE_3G)
|
||||||
mask |= MBIM_DATA_CLASS_UMTS | MBIM_DATA_CLASS_HSDPA | MBIM_DATA_CLASS_HSUPA;
|
mask |= (MBIM_DATA_CLASS_UMTS |
|
||||||
|
MBIM_DATA_CLASS_HSDPA |
|
||||||
|
MBIM_DATA_CLASS_HSUPA);
|
||||||
if (modem_mode & MM_MODEM_MODE_4G)
|
if (modem_mode & MM_MODEM_MODE_4G)
|
||||||
mask |= MBIM_DATA_CLASS_LTE;
|
mask |= MBIM_DATA_CLASS_LTE;
|
||||||
if (modem_mode & MM_MODEM_MODE_5G)
|
if (modem_mode & MM_MODEM_MODE_5G)
|
||||||
mask |= MBIM_DATA_CLASS_5G_NSA | MBIM_DATA_CLASS_5G_SA;
|
mask |= (MBIM_DATA_CLASS_5G_NSA |
|
||||||
|
MBIM_DATA_CLASS_5G_SA);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 3GPP2... */
|
||||||
|
if (is_cdma) {
|
||||||
|
if (modem_mode & MM_MODEM_MODE_2G)
|
||||||
|
mask |= MBIM_DATA_CLASS_1XRTT;
|
||||||
|
if (modem_mode & MM_MODEM_MODE_3G)
|
||||||
|
mask |= (MBIM_DATA_CLASS_1XEVDO |
|
||||||
|
MBIM_DATA_CLASS_1XEVDO_REVA |
|
||||||
|
MBIM_DATA_CLASS_1XEVDV |
|
||||||
|
MBIM_DATA_CLASS_3XRTT |
|
||||||
|
MBIM_DATA_CLASS_1XEVDO_REVB);
|
||||||
|
if (modem_mode & MM_MODEM_MODE_4G)
|
||||||
|
mask |= MBIM_DATA_CLASS_UMB;
|
||||||
|
}
|
||||||
|
|
||||||
return mask;
|
return mask;
|
||||||
}
|
}
|
||||||
@@ -585,4 +617,3 @@ mm_signal_quality_from_mbim_signal_state (guint rssi,
|
|||||||
|
|
||||||
return quality;
|
return quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,7 +34,9 @@ MMModem3gppRegistrationState mm_modem_3gpp_registration_state_from_mbim_register
|
|||||||
|
|
||||||
MMModemMode mm_modem_mode_from_mbim_data_class (MbimDataClass data_class);
|
MMModemMode mm_modem_mode_from_mbim_data_class (MbimDataClass data_class);
|
||||||
|
|
||||||
MbimDataClass mm_mbim_data_class_from_modem_mode (MMModemMode modem_mode);
|
MbimDataClass mm_mbim_data_class_from_modem_mode (MMModemMode modem_mode,
|
||||||
|
gboolean is_3gpp,
|
||||||
|
gboolean is_cdma);
|
||||||
|
|
||||||
MMModemAccessTechnology mm_modem_access_technology_from_mbim_data_class (MbimDataClass data_class);
|
MMModemAccessTechnology mm_modem_access_technology_from_mbim_data_class (MbimDataClass data_class);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user