aboutsummaryrefslogtreecommitdiff
path: root/src/mm-modem-helpers-mbim.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-modem-helpers-mbim.c')
-rw-r--r--src/mm-modem-helpers-mbim.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c
index e418969f..c907b22e 100644
--- a/src/mm-modem-helpers-mbim.c
+++ b/src/mm-modem-helpers-mbim.c
@@ -408,6 +408,70 @@ mm_bearer_allowed_auth_to_mbim_auth_protocol (MMBearerAllowedAuth bearer_auth,
/*****************************************************************************/
+MMBearerApnType
+mm_bearer_apn_type_from_mbim_context_type (MbimContextType context_type)
+{
+ switch (context_type) {
+ case MBIM_CONTEXT_TYPE_INTERNET:
+ return MM_BEARER_APN_TYPE_DEFAULT;
+ case MBIM_CONTEXT_TYPE_VPN:
+ return MM_BEARER_APN_TYPE_PRIVATE;
+ case MBIM_CONTEXT_TYPE_VOICE:
+ return MM_BEARER_APN_TYPE_VOICE;
+ case MBIM_CONTEXT_TYPE_PURCHASE:
+ return MM_BEARER_APN_TYPE_MANAGEMENT;
+ case MBIM_CONTEXT_TYPE_IMS:
+ return MM_BEARER_APN_TYPE_IMS;
+ case MBIM_CONTEXT_TYPE_MMS:
+ return MM_BEARER_APN_TYPE_MMS;
+ case MBIM_CONTEXT_TYPE_INVALID:
+ case MBIM_CONTEXT_TYPE_NONE:
+ case MBIM_CONTEXT_TYPE_LOCAL:
+ case MBIM_CONTEXT_TYPE_VIDEO_SHARE:
+ /* some types unused right now */
+ default:
+ return MM_BEARER_APN_TYPE_NONE;
+ }
+}
+
+MbimContextType
+mm_bearer_apn_type_to_mbim_context_type (MMBearerApnType apn_type,
+ gpointer log_object,
+ GError **error)
+{
+ g_autofree gchar *str = NULL;
+
+ /* NOTE: the input is a BITMASK, so we try to find a "best match" */
+
+ if (apn_type == MM_BEARER_APN_TYPE_NONE) {
+ mm_obj_dbg (log_object, "using default (internet) APN type");
+ return MBIM_CONTEXT_TYPE_INTERNET;
+ }
+
+ if (apn_type & MM_BEARER_APN_TYPE_DEFAULT)
+ return MBIM_CONTEXT_TYPE_INTERNET;
+ if (apn_type & MM_BEARER_APN_TYPE_IMS)
+ return MBIM_CONTEXT_TYPE_IMS;
+ if (apn_type & MM_BEARER_APN_TYPE_MMS)
+ return MBIM_CONTEXT_TYPE_MMS;
+ if (apn_type &MM_BEARER_APN_TYPE_MANAGEMENT)
+ return MBIM_CONTEXT_TYPE_PURCHASE;
+ if (apn_type & MM_BEARER_APN_TYPE_VOICE)
+ return MBIM_CONTEXT_TYPE_VOICE;
+ if (apn_type & MM_BEARER_APN_TYPE_PRIVATE)
+ return MBIM_CONTEXT_TYPE_VPN;
+
+ str = mm_bearer_apn_type_build_string_from_mask (apn_type);
+ g_set_error (error,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_UNSUPPORTED,
+ "Unsupported APN types (%s)",
+ str);
+ return MBIM_CONTEXT_TYPE_NONE;
+}
+
+/*****************************************************************************/
+
MMBearerIpFamily
mm_bearer_ip_family_from_mbim_context_ip_type (MbimContextIpType ip_type)
{