[PATCH] libqmi-qmicli: extend --wds-start-network with 3gpp-profile and 3gpp2-profile parameters
Džiugas Baltrūnas
dziugas at simula.no
Wed Dec 2 08:46:32 PST 2015
Hi Aleksander,
I fixed the dashes and the '2' part of '3gpp_profile2' was indeed a typo.
---
src/qmicli/qmicli-wds.c | 38 +++++++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 7 deletions(-)
diff --git a/src/qmicli/qmicli-wds.c b/src/qmicli/qmicli-wds.c
index 5e6979d..06a8b92 100644
--- a/src/qmicli/qmicli-wds.c
+++ b/src/qmicli/qmicli-wds.c
@@ -67,7 +67,7 @@ static gboolean noop_flag;
static GOptionEntry entries[] = {
{ "wds-start-network", 0, 0, G_OPTION_ARG_STRING, &start_network_str,
- "Start network (allowed keys: apn, auth (PAP|CHAP|BOTH), username,
password, autoconnect=yes)",
+ "Start network (allowed keys: apn, 3gpp-profile, 3gpp2-profile, auth
(PAP|CHAP|BOTH), username, password, autoconnect=yes)",
"[\"key=value,...\"]"
},
{ "wds-follow-network", 0, 0, G_OPTION_ARG_NONE, &follow_network_flag,
@@ -332,6 +332,8 @@ packet_status_timeout (void)
typedef struct {
gchar *apn;
+ guint8 profile_index_3gpp;
+ guint8 profile_index_3gpp2;
QmiWdsAuthentication auth;
gboolean auth_set;
gchar *username;
@@ -362,6 +364,16 @@ start_network_properties_handle (const gchar *key,
return TRUE;
}
+ if (g_ascii_strcasecmp (key, "3gpp-profile") == 0 &&
!props->profile_index_3gpp) {
+ props->profile_index_3gpp = atoi (value);
+ return TRUE;
+ }
+
+ if (g_ascii_strcasecmp (key, "3gpp2-profile") == 0 &&
!props->profile_index_3gpp2) {
+ props->profile_index_3gpp2 = atoi (value);
+ return TRUE;
+ }
+
if (g_ascii_strcasecmp (key, "auth") == 0 && !props->auth_set) {
if (!qmicli_read_authentication_from_string (value,
&(props->auth))) {
g_set_error (error,
@@ -413,11 +425,13 @@ start_network_input_create (const gchar *str)
gchar **split = NULL;
QmiMessageWdsStartNetworkInput *input = NULL;
StartNetworkProperties props = {
- .apn = NULL,
- .auth = QMI_WDS_AUTHENTICATION_NONE,
- .auth_set = FALSE,
- .username = NULL,
- .password = NULL,
+ .apn = NULL,
+ .profile_index_3gpp = 0,
+ .profile_index_3gpp2 = 0,
+ .auth = QMI_WDS_AUTHENTICATION_NONE,
+ .auth_set = FALSE,
+ .username = NULL,
+ .password = NULL,
};
/* An empty string is totally valid (i.e. no TLVs) */
@@ -465,6 +479,14 @@ start_network_input_create (const gchar *str)
if (props.apn)
qmi_message_wds_start_network_input_set_apn (input, props.apn,
NULL);
+ /* Set 3GPP profile */
+ if (props.profile_index_3gpp > 0)
+ qmi_message_wds_start_network_input_set_profile_index_3gpp (input,
props.profile_index_3gpp, NULL);
+
+ /* Set 3GPP2 profile */
+ if (props.profile_index_3gpp2 > 0)
+ qmi_message_wds_start_network_input_set_profile_index_3gpp2
(input, props.profile_index_3gpp2, NULL);
+
/* Set authentication method */
if (props.auth_set) {
aux_auth_str = qmi_wds_authentication_build_string_from_mask
(props.auth);
@@ -483,8 +505,10 @@ start_network_input_create (const gchar *str)
if (props.autoconnect_set)
qmi_message_wds_start_network_input_set_enable_autoconnect (input,
props.autoconnect, NULL);
- g_debug ("Network start parameters set (apn: '%s', auth: '%s',
username: '%s', password: '%s', autoconnect: '%s')",
+ g_debug ("Network start parameters set (apn: '%s', 3gpp_profile: '%u',
3gpp2_profile: '%u', auth: '%s', username: '%s', password: '%s',
autoconnect: '%s')",
props.apn ? props.apn
: "unspecified",
+ props.profile_index_3gpp,
+ props.profile_index_3gpp2,
aux_auth_str ? aux_auth_str
: "unspecified",
(props.username && props.username[0]) ? props.username
: "unspecified",
(props.password && props.password[0]) ? props.password
: "unspecified",
--
2.1.0
On 2 December 2015 at 15:45, Aleksander Morgado <aleksander at aleksander.es>
wrote:
> Hey,
>
> On Wed, Dec 2, 2015 at 1:07 PM, Džiugas Baltrūnas <dziugas at simula.no>
> wrote:
> > Some modems with multiple PDN connection support (for example, Sierra
> > Wireless MC7304) seem to require the usage of 3GPP(2) Configured Profile
> > Identifier in order to successfully establish more than one active PDN
> > connection. Trying to start a second connection with
> > --wds-start-network="apn=xxx" typically leads to the termination of the
> > first connection. Multiple connections are established as expected when
> > using profile indexes, e.g.:
> >
> > # qmicli -d /dev/cdc-wdm0 --wds-start-network="3gpp-profile=1"
> > # qmicli -d /dev/cdc-wdm1 --wds-start-network="3gpp-profile=2"
> >
> > Note that pre-configured profile indexes can be obtained using
> > --wds-get-profile-list command or using 'AT+CGCONT?' AT command.
> >
> > ---
> > src/qmicli/qmicli-wds.c | 38 +++++++++++++++++++++++++++++++-------
> > 1 file changed, 31 insertions(+), 7 deletions(-)
> >
> > diff --git a/src/qmicli/qmicli-wds.c b/src/qmicli/qmicli-wds.c
> > index 5e6979d..94835f9 100644
> > --- a/src/qmicli/qmicli-wds.c
> > +++ b/src/qmicli/qmicli-wds.c
> > @@ -67,7 +67,7 @@ static gboolean noop_flag;
> >
> > static GOptionEntry entries[] = {
> > { "wds-start-network", 0, 0, G_OPTION_ARG_STRING,
> &start_network_str,
> > - "Start network (allowed keys: apn, auth (PAP|CHAP|BOTH), username,
> > password, autoconnect=yes)",
> > + "Start network (allowed keys: apn, 3gpp-profile, 3gpp2-profile,
> auth
> > (PAP|CHAP|BOTH), username, password, autoconnect=yes)",
> > "[\"key=value,...\"]"
> > },
> > { "wds-follow-network", 0, 0, G_OPTION_ARG_NONE,
> &follow_network_flag,
> > @@ -332,6 +332,8 @@ packet_status_timeout (void)
> >
> > typedef struct {
> > gchar *apn;
> > + guint8 profile_index_3gpp;
> > + guint8 profile_index_3gpp2;
> > QmiWdsAuthentication auth;
> > gboolean auth_set;
> > gchar *username;
> > @@ -362,6 +364,16 @@ start_network_properties_handle (const gchar *key,
> > return TRUE;
> > }
> >
> > + if (g_ascii_strcasecmp (key, "3gpp_profile") == 0 &&
> > !props->profile_index_3gpp) {
> > + props->profile_index_3gpp = atoi (value);
> > + return TRUE;
> > + }
> > +
> > + if (g_ascii_strcasecmp (key, "3gpp_profile2") == 0 &&
> > !props->profile_index_3gpp2) {
> > + props->profile_index_3gpp2 = atoi (value);
> > + return TRUE;
> > + }
> > +
>
> Aren't the expected keys with a dash instead of an underscore?
>
> Also, I'd suggest to name the 3GPP2 profile one as "3gpp2-profile"
> instead of "3gpp-profile2"
>
>
> > if (g_ascii_strcasecmp (key, "auth") == 0 && !props->auth_set) {
> > if (!qmicli_read_authentication_from_string (value,
> > &(props->auth))) {
> > g_set_error (error,
> > @@ -413,11 +425,13 @@ start_network_input_create (const gchar *str)
> > gchar **split = NULL;
> > QmiMessageWdsStartNetworkInput *input = NULL;
> > StartNetworkProperties props = {
> > - .apn = NULL,
> > - .auth = QMI_WDS_AUTHENTICATION_NONE,
> > - .auth_set = FALSE,
> > - .username = NULL,
> > - .password = NULL,
> > + .apn = NULL,
> > + .profile_index_3gpp = 0,
> > + .profile_index_3gpp2 = 0,
> > + .auth = QMI_WDS_AUTHENTICATION_NONE,
> > + .auth_set = FALSE,
> > + .username = NULL,
> > + .password = NULL,
> > };
> >
> > /* An empty string is totally valid (i.e. no TLVs) */
> > @@ -465,6 +479,14 @@ start_network_input_create (const gchar *str)
> > if (props.apn)
> > qmi_message_wds_start_network_input_set_apn (input, props.apn,
> > NULL);
> >
> > + /* Set 3GPP profile */
> > + if (props.profile_index_3gpp > 0)
> > + qmi_message_wds_start_network_input_set_profile_index_3gpp
> (input,
> > props.profile_index_3gpp, NULL);
> > +
> > + /* Set 3GPP2 profile */
> > + if (props.profile_index_3gpp2 > 0)
> > + qmi_message_wds_start_network_input_set_profile_index_3gpp2
> (input,
> > props.profile_index_3gpp2, NULL);
> > +
> > /* Set authentication method */
> > if (props.auth_set) {
> > aux_auth_str = qmi_wds_authentication_build_string_from_mask
> > (props.auth);
> > @@ -483,8 +505,10 @@ start_network_input_create (const gchar *str)
> > if (props.autoconnect_set)
> > qmi_message_wds_start_network_input_set_enable_autoconnect
> (input,
> > props.autoconnect, NULL);
> >
> > - g_debug ("Network start parameters set (apn: '%s', auth: '%s',
> > username: '%s', password: '%s', autoconnect: '%s')",
> > + g_debug ("Network start parameters set (apn: '%s', 3gpp_profile:
> '%u',
> > 3gpp2_profile: '%u', auth: '%s', username: '%s', password: '%s',
> > autoconnect: '%s')",
> > props.apn ? props.apn
> > : "unspecified",
> > + props.profile_index_3gpp,
> > + props.profile_index_3gpp2,
> > aux_auth_str ? aux_auth_str
> > : "unspecified",
> > (props.username && props.username[0]) ? props.username
> > : "unspecified",
> > (props.password && props.password[0]) ? props.password
> > : "unspecified",
> > --
> > 2.1.0
> >
> >
> > _______________________________________________
> > libqmi-devel mailing list
> > libqmi-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/libqmi-devel
> >
>
>
>
> --
> Aleksander
> https://aleksander.es
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libqmi-devel/attachments/20151202/cd052d4e/attachment-0001.html>
More information about the libqmi-devel
mailing list