diff options
Diffstat (limited to 'src/mm-modem-helpers-mbim.c')
-rw-r--r-- | src/mm-modem-helpers-mbim.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c index d58ed595..8060ace1 100644 --- a/src/mm-modem-helpers-mbim.c +++ b/src/mm-modem-helpers-mbim.c @@ -14,6 +14,7 @@ */ #include "mm-modem-helpers-mbim.h" +#include "mm-modem-helpers.h" #include "mm-enums-types.h" #include "mm-errors-types.h" #include "mm-log.h" @@ -127,6 +128,53 @@ mm_modem_access_technology_from_mbim_data_class (MbimDataClass data_class) /*****************************************************************************/ +MMModem3gppNetworkAvailability +mm_modem_3gpp_network_availability_from_mbim_provider_state (MbimProviderState state) +{ + switch (state) { + case MBIM_PROVIDER_STATE_HOME: + case MBIM_PROVIDER_STATE_PREFERRED: + case MBIM_PROVIDER_STATE_VISIBLE: + case MBIM_PROVIDER_STATE_PREFERRED_MULTICARRIER: + return MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE; + case MBIM_PROVIDER_STATE_REGISTERED: + return MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT; + case MBIM_PROVIDER_STATE_FORBIDDEN: + return MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN; + case MBIM_PROVIDER_STATE_UNKNOWN: + default: + return MM_MODEM_3GPP_NETWORK_AVAILABILITY_UNKNOWN; + } +} + +/*****************************************************************************/ + +GList * +mm_3gpp_network_info_list_from_mbim_providers (const MbimProvider *const *providers, guint n_providers) +{ + GList *info_list = NULL; + guint i; + + g_return_val_if_fail (providers != NULL, NULL); + + for (i = 0; i < n_providers; i++) { + MM3gppNetworkInfo *info; + + info = g_new0 (MM3gppNetworkInfo, 1); + info->status = mm_modem_3gpp_network_availability_from_mbim_provider_state (providers[i]->provider_state); + info->operator_long = g_strdup (providers[i]->provider_name); + info->operator_short = g_strdup (providers[i]->provider_name); + info->operator_code = g_strdup (providers[i]->provider_id); + info->access_tech = mm_modem_access_technology_from_mbim_data_class (providers[i]->cellular_class); + + info_list = g_list_append (info_list, info); + } + + return info_list; +} + +/*****************************************************************************/ + GError * mm_mobile_equipment_error_from_mbim_nw_error (MbimNwError nw_error) { |