From: Gustavo F. Padovan <padovan@profusion.mobi>
To: ofono@ofono.org
Subject: Re: [PATCH -v2 6/7] emulator: Implement dialing up for DUN
Date: Tue, 08 Feb 2011 16:46:58 -0200 [thread overview]
Message-ID: <20110208184658.GC2160@joana> (raw)
In-Reply-To: <4D514AE3.3090903@linux.intel.com>
[-- Attachment #1: Type: text/plain, Size: 4629 bytes --]
HI Guillaume,
* Guillaume Zajac <guillaume.zajac@linux.intel.com> [2011-02-08 14:53:39 +0100]:
> Hi Gustavo,
>
> On 04/02/2011 22:46, Gustavo F. Padovan wrote:
> > It handles client ATD*99# request and then initiate the PPP negotiation.
> > IP forward through the new ppp interface is not done yet.
> >
> > Initially based on patches from Zhenhua Zhang<zhenhua.zhang@intel.com>
> > ---
> > src/emulator.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 files changed, 123 insertions(+), 0 deletions(-)
> >
> > diff --git a/src/emulator.c b/src/emulator.c
> > index 49b129b..f1a079d 100644
> > --- a/src/emulator.c
> > +++ b/src/emulator.c
> > @@ -32,11 +32,18 @@
> > #include "ofono.h"
> > #include "common.h"
> > #include "gatserver.h"
> > +#include "gatppp.h"
> > +
> > +#define DUN_SERVER_ADDRESS "192.168.1.1"
> > +#define DUN_PEER_ADDRESS "192.168.1.2"
> > +#define DUN_DNS_SERVER_1 "10.10.10.10"
> > +#define DUN_DNS_SERVER_2 "10.10.10.11"
> >
> > struct ofono_emulator {
> > struct ofono_modem *modem;
> > struct ofono_atom *atom;
> > GAtServer *server;
> > + GAtPPP *ppp;
> > struct ofono_emulator_driver *driver;
> > };
> >
> > @@ -55,10 +62,124 @@ void ofono_emulator_remove(struct ofono_emulator *emulator)
> > __ofono_atom_free(emulator->atom);
> > }
> >
> > +static void ppp_connect(const char *iface, const char *local,
> > + const char *remote,
> > + const char *dns1, const char *dns2,
> > + gpointer user_data)
> > +{
> > + DBG("Network Device: %s\n", iface);
> > + DBG("IP Address: %s\n", local);
> > + DBG("Remote IP Address: %s\n", remote);
> > + DBG("Primary DNS Server: %s\n", dns1);
> > + DBG("Secondary DNS Server: %s\n", dns2);
> > +}
> > +
> > +static void ppp_disconnect(GAtPPPDisconnectReason reason, gpointer user_data)
> > +{
> > + struct ofono_emulator *e = user_data;
> > +
> > + DBG("");
> > +
> > + g_at_ppp_unref(e->ppp);
> > + e->ppp = NULL;
> > +
> > + if (e->server == NULL)
> > + return;
> > +
> > + g_at_server_resume(e->server);
> > +
> > + g_at_server_send_final(e->server, G_AT_SERVER_RESULT_NO_CARRIER);
> > +}
> > +
> > +static gboolean setup_ppp(gpointer user_data)
> > +{
> > + struct ofono_emulator *e = user_data;
> > + GAtServer *server = e->server;
> > + GAtIO *io;
> > +
> > + DBG("");
> > +
> > + io = g_at_server_get_io(server);
> > +
> > + g_at_server_suspend(server);
> > +
> > + e->ppp = g_at_ppp_server_new_from_io(io, DUN_SERVER_ADDRESS);
> > + if (e->ppp == NULL) {
> > + g_at_server_resume(server);
> > + return FALSE;
> > + }
> > +
> > + g_at_ppp_set_server_info(e->ppp, DUN_PEER_ADDRESS,
> > + DUN_DNS_SERVER_1, DUN_DNS_SERVER_2);
> > +
> > + g_at_ppp_set_credentials(e->ppp, "", "");
> > + g_at_ppp_set_debug(e->ppp, ofono_emulator_debug, "PPP");
> > +
> > + g_at_ppp_set_connect_function(e->ppp, ppp_connect, e);
> > + g_at_ppp_set_disconnect_function(e->ppp, ppp_disconnect, e);
> > +
> > + return FALSE;
> > +}
> > +
> > +static gboolean dial_call(struct ofono_emulator *e, const char *dial_str)
> > +{
> > + char c = *dial_str;
> > +
> > + DBG("dial call %s", dial_str);
> > +
> > + if (c == '*' || c == '#' || c == 'T' || c == 't') {
> > +
> > + g_at_server_send_intermediate(e->server, "CONNECT");
> > + g_idle_add(setup_ppp, e);
> > + }
> > +
> > + return TRUE;
> > +}
> > +
> > +static void dial_cb(GAtServerRequestType type, GAtResult *result,
> > + gpointer user_data)
> > +{
> > + struct ofono_emulator *e = user_data;
> > + GAtServer *server = e->server;
> > + GAtResultIter iter;
> > + const char *dial_str;
> > +
> > + DBG("");
> > +
> > + if (type != G_AT_SERVER_REQUEST_TYPE_SET)
> > + goto error;
> > +
> > + g_at_result_iter_init(&iter, result);
> > +
> > + if (!g_at_result_iter_next(&iter, "D"))
> > + goto error;
> > +
> > + dial_str = g_at_result_iter_raw_line(&iter);
> > + if (!dial_str)
> > + goto error;
> > +
> > + if (e->ppp)
> > + goto error;
> > +
> > + if (!dial_call(e, dial_str))
> > + goto error;
> > +
> > + return;
> > +
> > +error:
> > + g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
> > +}
> > +
>
> Shouldn't we register a generic dial_cb() and separate it in 2 cases:
> OFONO_ATOM_TYPE_DUN_EMULATOR, we do a dun_dial() that would look
> like the dial_cb() you have implemented.
> OFONO_ATOM_TYPE_HFP_AG, we do a hfp_dial() e.g. dial a number for a
> voice call.
Yes, once we have HFP AG support we can do that.
--
Gustavo F. Padovan
http://profusion.mobi
next prev parent reply other threads:[~2011-02-08 18:46 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-04 21:46 [PATCH -v2 1/7] bluetooth: Add bluetooth server support Gustavo F. Padovan
2011-02-04 21:46 ` [PATCH -v2 2/7] bluetooth: Add Bluetooth service authorization support Gustavo F. Padovan
2011-02-04 21:46 ` [PATCH -v2 3/7] include: add public headed to emulator atom Gustavo F. Padovan
2011-02-04 21:46 ` [PATCH -v2 4/7] emulator: Add emulator atom in oFono Gustavo F. Padovan
2011-02-04 21:46 ` [PATCH -v2 5/7] dun_gw: Add DUN server plugin for oFono Gustavo F. Padovan
2011-02-04 21:46 ` [PATCH -v2 6/7] emulator: Implement dialing up for DUN Gustavo F. Padovan
2011-02-04 21:46 ` [PATCH -v2 7/7] gsmdial: add option for Bluetooth DUN dialing Gustavo F. Padovan
2011-02-08 13:53 ` [PATCH -v2 6/7] emulator: Implement dialing up for DUN Guillaume Zajac
2011-02-08 18:46 ` Gustavo F. Padovan [this message]
2011-02-07 9:21 ` [PATCH -v2 5/7] dun_gw: Add DUN server plugin for oFono Guillaume Zajac
2011-02-07 18:19 ` Gustavo F. Padovan
2011-02-08 9:16 ` Guillaume Zajac
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110208184658.GC2160@joana \
--to=padovan@profusion.mobi \
--cc=ofono@ofono.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox