Made changes in xmm7modem plugin to allow mutiple PDP context
activation and to assign correct network interface to the
activated PDP context.
---
 plugins/udevng.c  | 12 +++++++++++-
 plugins/xmm7xxx.c | 21 +++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/plugins/udevng.c b/plugins/udevng.c
index ff6e1fc..e00b6ac 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -1179,7 +1179,7 @@ static gboolean setup_gemalto(struct modem_info* modem)
 
 static gboolean setup_xmm7xxx(struct modem_info *modem)
 {
-       const char *mdm = NULL, *net = NULL;
+       const char *mdm = NULL, *net = NULL, *net2 = NULL, *net3 = NULL;
        GSList *list;
 
        DBG("%s %s\n", __DATE__, __TIME__);
@@ -1200,6 +1200,10 @@ static gboolean setup_xmm7xxx(struct modem_info *modem)
                        } else if (g_strcmp0(info->subsystem, "net") == 0) {
                                if (g_strcmp0(info->number, "06") == 0)
                                        net = info->devnode;
+                               if (g_strcmp0(info->number, "08") == 0)
+                                       net2 = info->devnode;
+                               if (g_strcmp0(info->number, "0a") == 0)
+                                       net3 = info->devnode;
                        }
                } else {
                        if (g_strcmp0(info->subsystem, "tty") == 0) {
@@ -1219,6 +1223,12 @@ static gboolean setup_xmm7xxx(struct modem_info *modem)
 
        ofono_modem_set_string(modem->modem, "Modem", mdm);
        ofono_modem_set_string(modem->modem, "NetworkInterface", net);
+       if (net2)
+               ofono_modem_set_string(modem->modem, "NetworkInterface2", net2);
+       if (net3)
+               ofono_modem_set_string(modem->modem, "NetworkInterface3", net3);
+       ofono_modem_set_string(modem->modem, "CtrlPath", "/USBCDC/0");
+       ofono_modem_set_string(modem->modem, "DataPath", "/USBHS/NCM/");
 
        return TRUE;
 }
diff --git a/plugins/xmm7xxx.c b/plugins/xmm7xxx.c
index 237c62c..eaae4ad 100644
--- a/plugins/xmm7xxx.c
+++ b/plugins/xmm7xxx.c
@@ -1269,6 +1269,7 @@ static void xmm7xxx_post_online(struct ofono_modem *modem)
        struct xmm7xxx_data *data = ofono_modem_get_data(modem);
        struct ofono_gprs *gprs;
        struct ofono_gprs_context *gc;
+       const char *interface = NULL;
 
        DBG("%p", modem);
 
@@ -1282,6 +1283,26 @@ static void xmm7xxx_post_online(struct ofono_modem 
*modem)
        if (gprs && gc)
                ofono_gprs_add_context(gprs, gc);
 
+       interface = ofono_modem_get_string(modem, "NetworkInterface2");
+
+       if (interface) {
+               gc = ofono_gprs_context_create(modem, OFONO_VENDOR_XMM, 
"ifxmodem",
+                                       data->chat);
+
+               if (gprs && gc)
+                       ofono_gprs_add_context(gprs, gc);
+       }
+
+       interface = ofono_modem_get_string(modem, "NetworkInterface3");
+
+       if (interface) {
+               gc = ofono_gprs_context_create(modem, OFONO_VENDOR_XMM, 
"ifxmodem",
+                                       data->chat);
+
+               if (gprs && gc)
+                       ofono_gprs_add_context(gprs, gc);
+       }
+
        ofono_ims_create(modem, "xmm7modem", data->chat);
        ofono_netmon_create(modem, 0, "xmm7modem", data->chat);
 }
-- 
1.9.1

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to