aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Palatin <vpalatin@chromium.org>2021-03-03 10:36:01 +0100
committerAleksander Morgado <aleksander@aleksander.es>2021-03-12 08:43:15 +0000
commitac8e799acccb1958ab5578575f54fc8bd56db13f (patch)
tree0bed5cb00c7557d64399ae40e3265ec6838787cc
parentd4538d1f2fd1f5ccc538fe6c65f81ababc6a4afb (diff)
wds: add 'APN Type' mask in profile settings
Read the APN Type mask when getting profile settings and display it in qmicli. This can be used later to filter APN in the list of APNs (MBIM as a similar 'ContextType')
-rw-r--r--build-aux/qmi-codegen/utils.py4
-rw-r--r--data/qmi-service-wds.json10
-rw-r--r--docs/reference/libqmi-glib/libqmi-glib-common.sections5
-rw-r--r--src/libqmi-glib/Makefile.am4
-rw-r--r--src/libqmi-glib/generated/Makefile.am5
-rw-r--r--src/libqmi-glib/libqmi-glib.h1
-rw-r--r--src/libqmi-glib/qmi-flags64-wds.h54
-rw-r--r--src/qmicli/qmicli-wds.c8
8 files changed, 85 insertions, 6 deletions
diff --git a/build-aux/qmi-codegen/utils.py b/build-aux/qmi-codegen/utils.py
index 1f1ed78..59fb68b 100644
--- a/build-aux/qmi-codegen/utils.py
+++ b/build-aux/qmi-codegen/utils.py
@@ -77,8 +77,8 @@ def add_header_start(f, output_name, service):
if service == 'CTL':
template += (
"#include \"qmi-enums-private.h\"\n")
- # DMS, NAS, LOC and DSD have flags64
- if service in ('DMS', 'NAS', 'LOC', 'DSD'):
+ # DMS, NAS, LOC, DSD and WDS have flags64
+ if service in ('DMS', 'NAS', 'LOC', 'DSD', 'WDS'):
template += (
"#include \"qmi-flags64-${service}.h\"\n")
template += (
diff --git a/data/qmi-service-wds.json b/data/qmi-service-wds.json
index 9d2c00f..9f253b0 100644
--- a/data/qmi-service-wds.json
+++ b/data/qmi-service-wds.json
@@ -388,6 +388,13 @@
"format" : "guint8",
"public-format" : "gboolean" },
+ { "common-ref" : "WDS APN Type",
+ "name" : "APN Type Mask",
+ "id" : "0xDD",
+ "type" : "TLV",
+ "format" : "guint64",
+ "public-format" : "QmiWdsApnTypeMask" },
+
// *********************************************************************************
{ "name" : "Reset",
"type" : "Message",
@@ -1452,6 +1459,9 @@
// 0xA9, APN enabled
// 0xAA, PDN inactivity timeout
// 0xAB, APN class
+ { "common-ref" : "WDS APN Type",
+ "since" : "1.30",
+ "prerequisites" : [ { "common-ref" : "Success" } ] },
{ "common-ref" : "WDS Extended Error Code",
"since" : "1.8" } ] },
diff --git a/docs/reference/libqmi-glib/libqmi-glib-common.sections b/docs/reference/libqmi-glib/libqmi-glib-common.sections
index 247e2bf..39abf8c 100644
--- a/docs/reference/libqmi-glib/libqmi-glib-common.sections
+++ b/docs/reference/libqmi-glib/libqmi-glib-common.sections
@@ -689,6 +689,7 @@ QmiWdsTetheredCallType
QmiWdsAttachPdnListAction
QmiWdsClientType
QmiWdsIpSupportType
+QmiWdsApnTypeMask
QMI_WDS_RATE_UNAVAILABLE
<SUBSECTION Methods>
qmi_wds_ip_family_get_string
@@ -744,6 +745,7 @@ qmi_wds_tethered_call_type_get_string
qmi_wds_attach_pdn_list_action_get_string
qmi_wds_client_type_get_string
qmi_wds_ip_support_type_get_string
+qmi_wds_apn_type_mask_build_string_from_mask
<SUBSECTION Private>
qmi_wds_ip_family_build_string_from_mask
qmi_wds_profile_family_build_string_from_mask
@@ -797,6 +799,7 @@ qmi_wds_tethered_call_type_build_string_from_mask
qmi_wds_attach_pdn_list_action_build_string_from_mask
qmi_wds_client_type_build_string_from_mask
qmi_wds_ip_support_type_build_string_from_mask
+qmi_wds_apn_type_mask_get_string
<SUBSECTION Standard>
QMI_TYPE_WDS_AUTHENTICATION
QMI_TYPE_WDS_AUTOCONNECT_SETTING
@@ -850,6 +853,7 @@ QMI_TYPE_WDS_TETHERED_CALL_TYPE
QMI_TYPE_WDS_ATTACH_PDN_LIST_ACTION
QMI_TYPE_WDS_CLIENT_TYPE
QMI_TYPE_WDS_IP_SUPPORT_TYPE
+QMI_TYPE_WDS_APN_TYPE_MASK
qmi_wds_authentication_get_type
qmi_wds_autoconnect_setting_get_type
qmi_wds_autoconnect_setting_roaming_get_type
@@ -902,6 +906,7 @@ qmi_wds_tethered_call_type_get_type
qmi_wds_attach_pdn_list_action_get_type
qmi_wds_client_type_get_type
qmi_wds_ip_support_type_get_type
+qmi_wds_apn_type_mask_get_type
</SECTION>
<SECTION>
diff --git a/src/libqmi-glib/Makefile.am b/src/libqmi-glib/Makefile.am
index c20b526..1cecfed 100644
--- a/src/libqmi-glib/Makefile.am
+++ b/src/libqmi-glib/Makefile.am
@@ -48,7 +48,7 @@ libqmi_glib_la_CPPFLAGS = \
libqmi_glib_la_SOURCES = \
libqmi-glib.h \
qmi-errors.h \
- qmi-enums-wds.h qmi-enums-wds.c \
+ qmi-enums-wds.h qmi-flags64-wds.h qmi-enums-wds.c \
qmi-enums-dms.h qmi-flags64-dms.h qmi-enums-dms.c \
qmi-enums-nas.h qmi-flags64-nas.h qmi-enums-nas.c \
qmi-enums-wms.h \
@@ -121,7 +121,7 @@ include_HEADERS = \
qmi-enums-private.h \
qmi-compat.h \
qmi-enums-dms.h qmi-flags64-dms.h \
- qmi-enums-wds.h \
+ qmi-enums-wds.h qmi-flags64-wds.h \
qmi-enums-nas.h qmi-flags64-nas.h \
qmi-enums-wms.h \
qmi-enums-pds.h \
diff --git a/src/libqmi-glib/generated/Makefile.am b/src/libqmi-glib/generated/Makefile.am
index 9116869..113576b 100644
--- a/src/libqmi-glib/generated/Makefile.am
+++ b/src/libqmi-glib/generated/Makefile.am
@@ -147,10 +147,11 @@ FLAGS64 = \
$(top_srcdir)/src/libqmi-glib/qmi-flags64-dms.h \
$(top_srcdir)/src/libqmi-glib/qmi-flags64-nas.h \
$(top_srcdir)/src/libqmi-glib/qmi-flags64-loc.h \
- $(top_srcdir)/src/libqmi-glib/qmi-flags64-dsd.h
+ $(top_srcdir)/src/libqmi-glib/qmi-flags64-dsd.h \
+ $(top_srcdir)/src/libqmi-glib/qmi-flags64-wds.h
qmi-flags64-types.h: $(FLAGS64) $(top_srcdir)/build-aux/templates/qmi-flags64-types-template.h
$(AM_V_GEN) $(PYTHON) $(top_srcdir)/build-aux/qmi-mkenums \
- --fhead "#ifndef __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#define __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#include \"qmi-flags64-dms.h\"\n#include \"qmi-flags64-nas.h\"\n#include \"qmi-flags64-loc.h\"\n#include \"qmi-flags64-dsd.h\"\n" \
+ --fhead "#ifndef __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#define __LIBQMI_GLIB_FLAGS64_TYPES_H__\n#include \"qmi-flags64-dms.h\"\n#include \"qmi-flags64-nas.h\"\n#include \"qmi-flags64-loc.h\"\n#include \"qmi-flags64-dsd.h\"\n#include \"qmi-flags64-wds.h\"\n" \
--template $(top_srcdir)/build-aux/templates/qmi-flags64-types-template.h \
--ftail "#endif /* __LIBQMI_GLIB_FLAGS64_TYPES_H__ */\n" \
$(FLAGS64) > $@
diff --git a/src/libqmi-glib/libqmi-glib.h b/src/libqmi-glib/libqmi-glib.h
index 886e3a6..1127005 100644
--- a/src/libqmi-glib/libqmi-glib.h
+++ b/src/libqmi-glib/libqmi-glib.h
@@ -47,6 +47,7 @@
#include "qmi-enums-nas.h"
#include "qmi-nas.h"
+#include "qmi-flags64-wds.h"
#include "qmi-enums-wds.h"
#include "qmi-wds.h"
diff --git a/src/libqmi-glib/qmi-flags64-wds.h b/src/libqmi-glib/qmi-flags64-wds.h
new file mode 100644
index 0000000..95e7700
--- /dev/null
+++ b/src/libqmi-glib/qmi-flags64-wds.h
@@ -0,0 +1,54 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libqmi-glib -- GLib/GIO based library to control QMI devices
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2021 Google Inc.
+ */
+
+#ifndef _LIBQMI_GLIB_QMI_FLAGS64_WDS_H_
+#define _LIBQMI_GLIB_QMI_FLAGS64_WDS_H_
+
+#if !defined (__LIBQMI_GLIB_H_INSIDE__) && !defined (LIBQMI_GLIB_COMPILATION)
+#error "Only <libqmi-glib.h> can be included directly."
+#endif
+
+#include <glib.h>
+
+/**
+ * QmiWdsApnTypeMask:
+ * @QMI_WDS_APN_TYPE_MASK_DEFAULT: Default/Internet traffic.
+ * @QMI_WDS_APN_TYPE_MASK_IMS: IP Multimedia Subsystem.
+ * @QMI_WDS_APN_TYPE_MASK_MMS: Multimedia Messaging Service.
+ * @QMI_WDS_APN_TYPE_MASK_FOTA: over the air administration.
+ * @QMI_WDS_APN_TYPE_MASK_IA: Initial Attach.
+ * @QMI_WDS_APN_TYPE_MASK_EMERGENCY: Emergency.
+ *
+ * APN type as a bitmask.
+ *
+ * Since: 1.30
+ */
+typedef enum { /*< since=1.30 >*/
+ QMI_WDS_APN_TYPE_MASK_DEFAULT = ((guint64) 1) << 0,
+ QMI_WDS_APN_TYPE_MASK_IMS = ((guint64) 1) << 1,
+ QMI_WDS_APN_TYPE_MASK_MMS = ((guint64) 1) << 2,
+ QMI_WDS_APN_TYPE_MASK_FOTA = ((guint64) 1) << 6,
+ QMI_WDS_APN_TYPE_MASK_IA = ((guint64) 1) << 8,
+ QMI_WDS_APN_TYPE_MASK_EMERGENCY = ((guint64) 1) << 9,
+} QmiWdsApnTypeMask;
+
+#endif /* _LIBQMI_GLIB_QMI_FLAGS64_WDS_H_ */
diff --git a/src/qmicli/qmicli-wds.c b/src/qmicli/qmicli-wds.c
index 68c1731..a047161 100644
--- a/src/qmicli/qmicli-wds.c
+++ b/src/qmicli/qmicli-wds.c
@@ -2046,10 +2046,18 @@ get_profile_settings_ready (QmiClientWds *client,
guint8 context_number;
QmiWdsPdpType pdp_type;
QmiWdsAuthentication auth;
+ QmiWdsApnTypeMask apn_type;
gboolean flag;
if (qmi_message_wds_get_profile_settings_output_get_apn_name (output, &str, NULL))
g_print ("\t\tAPN: '%s'\n", str);
+ if (qmi_message_wds_get_profile_settings_output_get_apn_type_mask (output, &apn_type, NULL)) {
+ gchar *aux;
+
+ aux = qmi_wds_apn_type_mask_build_string_from_mask (apn_type);
+ g_print ("\t\tAPN type: '%s'\n", aux);
+ g_free (aux);
+ }
if (qmi_message_wds_get_profile_settings_output_get_pdp_type (output, &pdp_type, NULL))
g_print ("\t\tPDP type: '%s'\n", qmi_wds_pdp_type_get_string (pdp_type));
if (qmi_message_wds_get_profile_settings_output_get_pdp_context_number (output, &context_number, NULL))