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