---
plugins/isigen.c | 23 +++++++++++++++++------
plugins/udev.c | 6 +++++-
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/plugins/isigen.c b/plugins/isigen.c
index 838d060..cee4e44 100644
--- a/plugins/isigen.c
+++ b/plugins/isigen.c
@@ -58,6 +58,8 @@
#include "drivers/isimodem/mtc.h"
#include "drivers/isimodem/debug.h"
+#define ISI_DEFAULT_PDPS 4 /* Number of supported PDP contexts */
+
struct isi_data {
struct ofono_modem *modem;
char const *ifname;
@@ -407,6 +409,8 @@ static void isigen_post_online(struct ofono_modem *modem)
struct isi_data *isi = ofono_modem_get_data(modem);
struct ofono_gprs *gprs;
struct ofono_gprs_context *gc;
+ int pdps = ofono_modem_get_integer(modem, "PDPS");
+ int i;
DBG("(%p) with %s", modem, isi->ifname);
@@ -420,13 +424,20 @@ static void isigen_post_online(struct ofono_modem *modem)
ofono_call_barring_create(isi->modem, 0, "isimodem", isi->idx);
ofono_call_meter_create(isi->modem, 0, "isimodem", isi->idx);
ofono_radio_settings_create(isi->modem, 0, "isimodem", isi->idx);
- gprs = ofono_gprs_create(isi->modem, 0, "isimodem", isi->idx);
- gc = ofono_gprs_context_create(isi->modem, 0, "isimodem", isi->idx);
- if (gprs && gc)
- ofono_gprs_add_context(gprs, gc);
- else
- DBG("Failed to add context");
+ gprs = ofono_gprs_create(isi->modem, 0, "isimodem", isi->idx);
+ if (!gprs)
+ return;
+ if (!pdps)
+ pdps = ISI_DEFAULT_PDPS;
+ for (i = 1; i <= pdps; i++) {
+ gc = ofono_gprs_context_create(isi->modem, 0,
+ "isimodem", isi->idx);
+ if (gc)
+ ofono_gprs_add_context(gprs, gc);
+ else
+ DBG("Failed to add context %d", i);
+ }
}
static int isigen_enable(struct ofono_modem *modem)
diff --git a/plugins/udev.c b/plugins/udev.c
index 737a637..a25adcd 100644
--- a/plugins/udev.c
+++ b/plugins/udev.c
@@ -423,7 +423,7 @@ static void add_nokia(struct ofono_modem *modem,
static void add_isi(struct ofono_modem *modem,
struct udev_device *udev_device)
{
- const char *ifname, *type, *addr;
+ const char *ifname, *type, *addr, *pdps;
DBG("modem %p", modem);
@@ -434,6 +434,10 @@ static void add_isi(struct ofono_modem *modem,
if (addr != NULL)
ofono_modem_set_integer(modem, "Address", atoi(addr));
+ pdps = get_property(udev_device, "OFONO_ISI_PDPS");
+ if (pdps != NULL)
+ ofono_modem_set_integer(modem, "PDPS", atoi(pdps));
+
if (g_strcmp0(udev_device_get_subsystem(udev_device), "net") != 0)
return;
--
1.7.0.4
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono