aboutsummaryrefslogtreecommitdiff
path: root/src/mm-modem-helpers-mbim.c
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2013-12-04 11:07:42 -0800
committerDan Williams <dcbw@redhat.com>2013-12-05 13:01:44 -0600
commit2db3df9d934acf01e93b11b6bcb1fc5a34f7b25a (patch)
tree7f6c1295c6ac1cd3bab3be7f98c00bbe16c756b4 /src/mm-modem-helpers-mbim.c
parent891f55f25c86e8bc35dd02b4254891508d4becba (diff)
broadband-modem-mbim: implement network scan
Diffstat (limited to 'src/mm-modem-helpers-mbim.c')
-rw-r--r--src/mm-modem-helpers-mbim.c48
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)
{