From 9b3a8183f32a01e66a2cdbb887f89604379076b1 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 2 Sep 2009 19:48:02 -0700 Subject: [PATCH] Parse and use Address and Port options from modem.conf --- plugins/modemconf.c | 26 ++++++++++++++++++++++++++ plugins/phonesim.c | 15 ++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/plugins/modemconf.c b/plugins/modemconf.c index 3a199382..36aa78fc 100644 --- a/plugins/modemconf.c +++ b/plugins/modemconf.c @@ -24,6 +24,7 @@ #endif #include +#include #include @@ -34,6 +35,28 @@ static GSList *modem_list = NULL; +static int set_address(struct ofono_modem *modem, + GKeyFile *keyfile, const char *group) +{ + char *address, *port; + + address = g_key_file_get_string(keyfile, group, "Address", NULL); + if (address) { + ofono_modem_set_string(modem, "Address", address); + g_free(address); + } else + ofono_modem_set_string(modem, "Address", "127.0.0.1"); + + port = g_key_file_get_string(keyfile, group, "Port", NULL); + if (port) { + ofono_modem_set_integer(modem, "Port", atoi(port)); + g_free(port); + } else + ofono_modem_set_integer(modem, "Port", 12345); + + return 0; +} + static int set_device(struct ofono_modem *modem, GKeyFile *keyfile, const char *group) { @@ -61,6 +84,9 @@ static struct ofono_modem *create_modem(GKeyFile *keyfile, const char *group) modem = ofono_modem_create(driver); + if (!g_strcmp0(driver, "phonesim")) + set_address(modem, keyfile, group); + if (!g_strcmp0(driver, "g1") || !g_strcmp0(driver, "mbm")) set_device(modem, keyfile, group); diff --git a/plugins/phonesim.c b/plugins/phonesim.c index 9190874a..66807567 100644 --- a/plugins/phonesim.c +++ b/plugins/phonesim.c @@ -72,18 +72,27 @@ static int phonesim_enable(struct ofono_modem *modem) GAtChat *chat; GAtSyntax *syntax; struct sockaddr_in addr; - int sk, err; + const char *address; + int sk, err, port; DBG("%p", modem); + address = ofono_modem_get_string(modem, "Address"); + if (!address) + return -EINVAL; + + port = ofono_modem_get_integer(modem, "Port"); + if (port < 0) + return -EINVAL; + sk = socket(PF_INET, SOCK_STREAM, 0); if (sk < 0) return -EINVAL; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; - addr.sin_addr.s_addr = inet_addr("127.0.0.1"); - addr.sin_port = htons(12345); + addr.sin_addr.s_addr = inet_addr(address); + addr.sin_port = htons(port); err = connect(sk, (struct sockaddr *) &addr, sizeof(addr)); if (err < 0) {