* [PATCH 1/2] linktop: reimplemented linktop plugin with minimum features.
@ 2011-06-20 7:35 Amit Mendapara
2011-06-19 11:45 ` Denis Kenzior
2011-06-20 7:35 ` [PATCH 2/2] udev: changed linktop device strings Amit Mendapara
0 siblings, 2 replies; 3+ messages in thread
From: Amit Mendapara @ 2011-06-20 7:35 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 11264 bytes --]
The device supports subset of ST-Ericsson AT command extensions but nither
STE nor the MBM plugin works with these devices.
- Supports voice call and has builtin soundcard but unable to hear any sound.
- Supports sim toolkit commands but I am unable to test this feature.
Fixes MeeGo bug #14784
---
plugins/linktop.c | 234 +++++++++++++++++++++++++----------------------------
1 files changed, 112 insertions(+), 122 deletions(-)
diff --git a/plugins/linktop.c b/plugins/linktop.c
index 953f634..bd8aa3e 100644
--- a/plugins/linktop.c
+++ b/plugins/linktop.c
@@ -26,6 +26,7 @@
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
+#include <string.h>
#include <glib.h>
#include <gatchat.h>
@@ -34,33 +35,30 @@
#define OFONO_API_SUBJECT_TO_CHANGE
#include <ofono/plugin.h>
#include <ofono/modem.h>
-#include <ofono/call-barring.h>
-#include <ofono/call-forwarding.h>
-#include <ofono/call-meter.h>
-#include <ofono/call-settings.h>
#include <ofono/devinfo.h>
#include <ofono/message-waiting.h>
#include <ofono/netreg.h>
#include <ofono/sim.h>
-#include <ofono/cbs.h>
#include <ofono/sms.h>
#include <ofono/ussd.h>
-#include <ofono/call-volume.h>
-#include <ofono/voicecall.h>
#include <ofono/gprs.h>
#include <ofono/gprs-context.h>
#include <ofono/phonebook.h>
#include <ofono/radio-settings.h>
#include <ofono/log.h>
-#include <drivers/atmodem/vendor.h>
#include <drivers/atmodem/atutil.h>
+#include <drivers/atmodem/vendor.h>
+static const char *cpin_prefix[] = { "+CPIN:", NULL };
static const char *none_prefix[] = { NULL };
struct linktop_data {
- GAtChat *modem;
- GAtChat *control;
+ GAtChat *modem_port;
+ GAtChat *data_port;
+ guint cpin_poll_source;
+ guint cpin_poll_count;
+ gboolean have_sim;
struct ofono_gprs *gprs;
struct ofono_gprs_context *gc;
};
@@ -88,25 +86,79 @@ static void linktop_remove(struct ofono_modem *modem)
ofono_modem_set_data(modem, NULL);
- g_at_chat_unref(data->modem);
- g_at_chat_unref(data->control);
+ g_at_chat_unref(data->data_port);
+ g_at_chat_unref(data->modem_port);
+
+ if (data->cpin_poll_source > 0)
+ g_source_remove(data->cpin_poll_source);
g_free(data);
}
static void linktop_debug(const char *str, void *user_data)
{
- const char *prefix = user_data;
+ const char *prefix = user_data;
+
+ ofono_info("%s%s", prefix, str);
+}
+
+static gboolean init_simpin_check(gpointer user_data);
+
+static void simpin_check(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct linktop_data *data = ofono_modem_get_data(modem);
+
+ DBG("");
+
+ /* Modem returns an error if SIM is not ready. */
+ if (!ok && data->cpin_poll_count++ < 5) {
+ data->cpin_poll_source =
+ g_timeout_add_seconds(1, init_simpin_check, modem);
+ return;
+ }
+
+ data->cpin_poll_count = 0;
+
+ /* There is probably no SIM if SIM is not ready after 5 seconds. */
+ data->have_sim = ok;
+
+ ofono_modem_set_powered(modem, TRUE);
+}
+
+static gboolean init_simpin_check(gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct linktop_data *data = ofono_modem_get_data(modem);
+
+ data->cpin_poll_source = 0;
- ofono_info("%s%s", prefix, str);
+ g_at_chat_send(data->modem_port, "AT+CPIN?", cpin_prefix,
+ simpin_check, modem, NULL);
+
+ return FALSE;
+}
+
+static void cfun_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+
+ DBG("");
+
+ if (!ok) {
+ ofono_modem_set_powered(modem, FALSE);
+ return;
+ }
+
+ init_simpin_check(modem);
}
static GAtChat *open_device(struct ofono_modem *modem,
const char *key, char *debug)
{
- const char *device;
GAtSyntax *syntax;
GIOChannel *channel;
+ const char *device;
GAtChat *chat;
device = ofono_modem_get_string(modem, key);
@@ -126,94 +178,53 @@ static GAtChat *open_device(struct ofono_modem *modem,
if (chat == NULL)
return NULL;
-
+
if (getenv("OFONO_AT_DEBUG"))
g_at_chat_set_debug(chat, linktop_debug, debug);
return chat;
}
-static void linktop_disconnect(gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- struct linktop_data *data = ofono_modem_get_data(modem);
-
- DBG("");
-
- if (data->gc)
- ofono_gprs_context_remove(data->gc);
-
- g_at_chat_unref(data->modem);
- data->modem = NULL;
-
- data->modem = open_device(modem, "Modem", "Modem: ");
- if (data->modem == NULL)
- return;
-
- g_at_chat_set_disconnect_function(data->modem,
- linktop_disconnect, modem);
-
- ofono_info("Reopened GPRS context channel");
-
- data->gc = ofono_gprs_context_create(modem, 0, "atmodem", data->modem);
-
- if (data->gprs && data->gc)
- ofono_gprs_add_context(data->gprs, data->gc);
-}
-
-static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
-
- DBG("");
-
- ofono_modem_set_powered(modem, ok);
-}
-
static int linktop_enable(struct ofono_modem *modem)
{
struct linktop_data *data = ofono_modem_get_data(modem);
DBG("%p", modem);
- data->modem = open_device(modem, "Modem", "Modem: ");
- if (data->modem == NULL)
+ data->modem_port = open_device(modem, "ModemDevice", "Modem: ");
+ if (data->modem_port == NULL)
return -EINVAL;
- g_at_chat_set_disconnect_function(data->modem,
- linktop_disconnect, modem);
+ data->data_port = open_device(modem, "DataDevice", "Data: ");
+ if (data->data_port == NULL) {
+ g_at_chat_unref(data->modem_port);
+ data->modem_port = NULL;
- data->control = open_device(modem, "Control", "Control: ");
- if (data->control == NULL) {
- g_at_chat_unref(data->modem);
- data->modem = NULL;
return -EIO;
}
- g_at_chat_send(data->control, "ATE0 +CMEE=1", none_prefix,
- NULL, NULL, NULL);
-
- g_at_chat_send(data->modem, "AT", none_prefix,
- NULL, NULL, NULL);
-
- g_at_chat_send(data->modem, "AT &F", none_prefix,
- NULL, NULL, NULL);
-
- g_at_chat_send(data->control, "AT+CFUN=4", none_prefix,
- cfun_enable, modem, NULL);
-
+ g_at_chat_send(data->modem_port, "AT&F E0 V1 X4 &C1 +CMEE=1", none_prefix,
+ cfun_enable_cb, modem, NULL);
+ g_at_chat_send(data->data_port, "AT&F E0 V1 X4 &C1 +CMEE=1", none_prefix,
+ cfun_enable_cb, modem, NULL);
+ g_at_chat_send(data->modem_port, "AT+CFUN=4", none_prefix,
+ cfun_enable_cb, modem, NULL);
+
return -EINPROGRESS;
}
-static void cfun_disable(gboolean ok, GAtResult *result, gpointer user_data)
+static void cfun_disable_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_modem *modem = user_data;
struct linktop_data *data = ofono_modem_get_data(modem);
DBG("");
- g_at_chat_unref(data->control);
- data->control = NULL;
+ g_at_chat_unref(data->modem_port);
+ data->modem_port = NULL;
+
+ g_at_chat_unref(data->data_port);
+ data->data_port = NULL;
if (ok)
ofono_modem_set_powered(modem, FALSE);
@@ -225,20 +236,14 @@ static int linktop_disable(struct ofono_modem *modem)
DBG("%p", modem);
- if (data->modem) {
- g_at_chat_cancel_all(data->modem);
- g_at_chat_unregister_all(data->modem);
- g_at_chat_unref(data->modem);
- data->modem = NULL;
- }
-
- if (data->control == NULL)
+ if (data->modem_port == NULL)
return 0;
- g_at_chat_cancel_all(data->control);
- g_at_chat_unregister_all(data->control);
- g_at_chat_send(data->control, "AT+CFUN=4", none_prefix,
- cfun_disable, modem, NULL);
+ g_at_chat_cancel_all(data->modem_port);
+ g_at_chat_unregister_all(data->modem_port);
+
+ g_at_chat_send(data->modem_port, "AT+CFUN=4", NULL,
+ cfun_disable_cb, modem, NULL);
return -EINPROGRESS;
}
@@ -257,12 +262,14 @@ static void linktop_set_online(struct ofono_modem *modem, ofono_bool_t online,
ofono_modem_online_cb_t cb, void *user_data)
{
struct linktop_data *data = ofono_modem_get_data(modem);
- GAtChat *chat = data->control;
+ GAtChat *chat = data->modem_port;
struct cb_data *cbd = cb_data_new(cb, user_data);
char const *command = online ? "AT+CFUN=1" : "AT+CFUN=4";
DBG("modem %p %s", modem, online ? "online" : "offline");
+ cbd->user = data;
+
if (g_at_chat_send(chat, command, NULL, set_online_cb, cbd, g_free))
return;
@@ -278,49 +285,33 @@ static void linktop_pre_sim(struct ofono_modem *modem)
DBG("%p", modem);
- ofono_devinfo_create(modem, 0, "atmodem", data->control);
- sim = ofono_sim_create(modem, 0, "atmodem", data->control);
- ofono_voicecall_create(modem, 0, "stemodem", data->control);
+ ofono_devinfo_create(modem, 0, "atmodem", data->modem_port);
+ sim = ofono_sim_create(modem, 0, "atmodem", data->modem_port);
- if (sim)
+ if (data->have_sim && sim)
ofono_sim_inserted_notify(sim, TRUE);
}
static void linktop_post_sim(struct ofono_modem *modem)
{
struct linktop_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- ofono_radio_settings_create(modem, 0, "stemodem", data->control);
- ofono_phonebook_create(modem, 0, "atmodem", data->control);
- ofono_sms_create(modem, 0, "atmodem", data->control);
-}
-
-static void linktop_post_online(struct ofono_modem *modem)
-{
- struct linktop_data *data = ofono_modem_get_data(modem);
struct ofono_message_waiting *mw;
- struct ofono_gprs *gprs;
- struct ofono_gprs_context *gc;
DBG("%p", modem);
- ofono_ussd_create(modem, 0, "atmodem", data->control);
- ofono_call_forwarding_create(modem, 0, "atmodem", data->control);
- ofono_call_settings_create(modem, 0, "atmodem", data->control);
- ofono_netreg_create(modem, OFONO_VENDOR_MBM, "atmodem", data->control);
- ofono_call_meter_create(modem, 0, "atmodem", data->control);
- ofono_call_barring_create(modem, 0, "atmodem", data->control);
- ofono_call_volume_create(modem, 0, "atmodem", data->control);
- ofono_cbs_create(modem, 0, "atmodem", data->control);
-
- gprs = ofono_gprs_create(modem, OFONO_VENDOR_MBM,
- "atmodem", data->control);
- gc = ofono_gprs_context_create(modem, 0, "atmodem", data->modem);
+ ofono_radio_settings_create(modem, 0, "stemodem", data->modem_port);
+ ofono_phonebook_create(modem, 0, "atmodem", data->modem_port);
+ ofono_sms_create(modem, 0, "atmodem", data->modem_port);
+ ofono_ussd_create(modem, 0, "atmodem", data->modem_port);
+ ofono_netreg_create(modem, 0, "atmodem", data->modem_port);
+
+ data->gprs = ofono_gprs_create(modem, 0,
+ "atmodem", data->modem_port);
+ data->gc = ofono_gprs_context_create(modem, 0,
+ "atmodem", data->data_port);
- if (gprs && gc)
- ofono_gprs_add_context(gprs, gc);
+ if (data->gprs && data->gc)
+ ofono_gprs_add_context(data->gprs, data->gc);
mw = ofono_message_waiting_create(modem);
@@ -336,8 +327,7 @@ static struct ofono_modem_driver linktop_driver = {
.disable = linktop_disable,
.set_online = linktop_set_online,
.pre_sim = linktop_pre_sim,
- .post_sim = linktop_post_sim,
- .post_online = linktop_post_online,
+ .post_sim = linktop_post_sim
};
static int linktop_init(void)
--
1.7.4.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 1/2] linktop: reimplemented linktop plugin with minimum features.
2011-06-20 7:35 [PATCH 1/2] linktop: reimplemented linktop plugin with minimum features Amit Mendapara
@ 2011-06-19 11:45 ` Denis Kenzior
2011-06-20 7:35 ` [PATCH 2/2] udev: changed linktop device strings Amit Mendapara
1 sibling, 0 replies; 3+ messages in thread
From: Denis Kenzior @ 2011-06-19 11:45 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 12902 bytes --]
Hi Amit,
On 06/20/2011 02:35 AM, Amit Mendapara wrote:
> The device supports subset of ST-Ericsson AT command extensions but nither
> STE nor the MBM plugin works with these devices.
>
> - Supports voice call and has builtin soundcard but unable to hear any sound.
> - Supports sim toolkit commands but I am unable to test this feature.
>
> Fixes MeeGo bug #14784
> ---
> plugins/linktop.c | 234 +++++++++++++++++++++++++----------------------------
> 1 files changed, 112 insertions(+), 122 deletions(-)
Applying: linktop: reimplemented linktop plugin with minimum features.
/home/denkenz/ofono-master/.git/rebase-apply/patch:148: trailing whitespace.
/home/denkenz/ofono-master/.git/rebase-apply/patch:236: trailing whitespace.
/home/denkenz/ofono-master/.git/rebase-apply/patch:353: trailing whitespace.
fatal: 3 lines add whitespace errors.
>
> diff --git a/plugins/linktop.c b/plugins/linktop.c
> index 953f634..bd8aa3e 100644
> --- a/plugins/linktop.c
> +++ b/plugins/linktop.c
> @@ -26,6 +26,7 @@
> #include <stdio.h>
> #include <errno.h>
> #include <stdlib.h>
> +#include <string.h>
>
> #include <glib.h>
> #include <gatchat.h>
> @@ -34,33 +35,30 @@
> #define OFONO_API_SUBJECT_TO_CHANGE
> #include <ofono/plugin.h>
> #include <ofono/modem.h>
> -#include <ofono/call-barring.h>
> -#include <ofono/call-forwarding.h>
> -#include <ofono/call-meter.h>
> -#include <ofono/call-settings.h>
> #include <ofono/devinfo.h>
> #include <ofono/message-waiting.h>
> #include <ofono/netreg.h>
> #include <ofono/sim.h>
> -#include <ofono/cbs.h>
> #include <ofono/sms.h>
> #include <ofono/ussd.h>
> -#include <ofono/call-volume.h>
> -#include <ofono/voicecall.h>
> #include <ofono/gprs.h>
> #include <ofono/gprs-context.h>
> #include <ofono/phonebook.h>
> #include <ofono/radio-settings.h>
> #include <ofono/log.h>
>
> -#include <drivers/atmodem/vendor.h>
> #include <drivers/atmodem/atutil.h>
> +#include <drivers/atmodem/vendor.h>
>
> +static const char *cpin_prefix[] = { "+CPIN:", NULL };
> static const char *none_prefix[] = { NULL };
>
> struct linktop_data {
> - GAtChat *modem;
> - GAtChat *control;
> + GAtChat *modem_port;
> + GAtChat *data_port;
> + guint cpin_poll_source;
> + guint cpin_poll_count;
> + gboolean have_sim;
> struct ofono_gprs *gprs;
> struct ofono_gprs_context *gc;
> };
> @@ -88,25 +86,79 @@ static void linktop_remove(struct ofono_modem *modem)
>
> ofono_modem_set_data(modem, NULL);
>
> - g_at_chat_unref(data->modem);
> - g_at_chat_unref(data->control);
> + g_at_chat_unref(data->data_port);
> + g_at_chat_unref(data->modem_port);
> +
> + if (data->cpin_poll_source > 0)
> + g_source_remove(data->cpin_poll_source);
>
> g_free(data);
> }
>
> static void linktop_debug(const char *str, void *user_data)
> {
> - const char *prefix = user_data;
> + const char *prefix = user_data;
> +
> + ofono_info("%s%s", prefix, str);
> +}
> +
> +static gboolean init_simpin_check(gpointer user_data);
> +
> +static void simpin_check(gboolean ok, GAtResult *result, gpointer user_data)
> +{
> + struct ofono_modem *modem = user_data;
> + struct linktop_data *data = ofono_modem_get_data(modem);
> +
> + DBG("");
> +
> + /* Modem returns an error if SIM is not ready. */
> + if (!ok && data->cpin_poll_count++ < 5) {
> + data->cpin_poll_source =
> + g_timeout_add_seconds(1, init_simpin_check, modem);
> + return;
> + }
> +
> + data->cpin_poll_count = 0;
> +
> + /* There is probably no SIM if SIM is not ready after 5 seconds. */
> + data->have_sim = ok;
> +
> + ofono_modem_set_powered(modem, TRUE);
> +}
> +
> +static gboolean init_simpin_check(gpointer user_data)
> +{
> + struct ofono_modem *modem = user_data;
> + struct linktop_data *data = ofono_modem_get_data(modem);
> +
> + data->cpin_poll_source = 0;
>
> - ofono_info("%s%s", prefix, str);
> + g_at_chat_send(data->modem_port, "AT+CPIN?", cpin_prefix,
> + simpin_check, modem, NULL);
> +
> + return FALSE;
> +}
> +
> +static void cfun_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
> +{
> + struct ofono_modem *modem = user_data;
> +
> + DBG("");
> +
> + if (!ok) {
> + ofono_modem_set_powered(modem, FALSE);
> + return;
> + }
> +
> + init_simpin_check(modem);
> }
>
> static GAtChat *open_device(struct ofono_modem *modem,
> const char *key, char *debug)
> {
> - const char *device;
> GAtSyntax *syntax;
> GIOChannel *channel;
> + const char *device;
> GAtChat *chat;
>
> device = ofono_modem_get_string(modem, key);
> @@ -126,94 +178,53 @@ static GAtChat *open_device(struct ofono_modem *modem,
>
> if (chat == NULL)
> return NULL;
> -
> +
You're introducing whitespace corruption above
> if (getenv("OFONO_AT_DEBUG"))
> g_at_chat_set_debug(chat, linktop_debug, debug);
>
> return chat;
> }
>
> -static void linktop_disconnect(gpointer user_data)
> -{
> - struct ofono_modem *modem = user_data;
> - struct linktop_data *data = ofono_modem_get_data(modem);
> -
> - DBG("");
> -
> - if (data->gc)
> - ofono_gprs_context_remove(data->gc);
> -
> - g_at_chat_unref(data->modem);
> - data->modem = NULL;
> -
> - data->modem = open_device(modem, "Modem", "Modem: ");
> - if (data->modem == NULL)
> - return;
> -
> - g_at_chat_set_disconnect_function(data->modem,
> - linktop_disconnect, modem);
> -
> - ofono_info("Reopened GPRS context channel");
> -
> - data->gc = ofono_gprs_context_create(modem, 0, "atmodem", data->modem);
> -
> - if (data->gprs && data->gc)
> - ofono_gprs_add_context(data->gprs, data->gc);
> -}
> -
So I'm totally confused now, does your modem send a HUP on the PPP tty
when NO CARRIER due to context deactivation or not? If it does, then
you still need to detect disconnects and re-create the context.
> -static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
> -{
> - struct ofono_modem *modem = user_data;
> -
> - DBG("");
> -
> - ofono_modem_set_powered(modem, ok);
> -}
> -
> static int linktop_enable(struct ofono_modem *modem)
> {
> struct linktop_data *data = ofono_modem_get_data(modem);
>
> DBG("%p", modem);
>
> - data->modem = open_device(modem, "Modem", "Modem: ");
> - if (data->modem == NULL)
> + data->modem_port = open_device(modem, "ModemDevice", "Modem: ");
> + if (data->modem_port == NULL)
> return -EINVAL;
>
> - g_at_chat_set_disconnect_function(data->modem,
> - linktop_disconnect, modem);
> + data->data_port = open_device(modem, "DataDevice", "Data: ");
> + if (data->data_port == NULL) {
> + g_at_chat_unref(data->modem_port);
> + data->modem_port = NULL;
>
> - data->control = open_device(modem, "Control", "Control: ");
> - if (data->control == NULL) {
> - g_at_chat_unref(data->modem);
> - data->modem = NULL;
> return -EIO;
> }
>
> - g_at_chat_send(data->control, "ATE0 +CMEE=1", none_prefix,
> - NULL, NULL, NULL);
> -
> - g_at_chat_send(data->modem, "AT", none_prefix,
> - NULL, NULL, NULL);
> -
> - g_at_chat_send(data->modem, "AT &F", none_prefix,
> - NULL, NULL, NULL);
> -
> - g_at_chat_send(data->control, "AT+CFUN=4", none_prefix,
> - cfun_enable, modem, NULL);
> -
> + g_at_chat_send(data->modem_port, "AT&F E0 V1 X4 &C1 +CMEE=1", none_prefix,
> + cfun_enable_cb, modem, NULL);
> + g_at_chat_send(data->data_port, "AT&F E0 V1 X4 &C1 +CMEE=1", none_prefix,
> + cfun_enable_cb, modem, NULL);
> + g_at_chat_send(data->modem_port, "AT+CFUN=4", none_prefix,
> + cfun_enable_cb, modem, NULL);
> +
> return -EINPROGRESS;
> }
>
> -static void cfun_disable(gboolean ok, GAtResult *result, gpointer user_data)
> +static void cfun_disable_cb(gboolean ok, GAtResult *result, gpointer user_data)
> {
> struct ofono_modem *modem = user_data;
> struct linktop_data *data = ofono_modem_get_data(modem);
>
> DBG("");
>
> - g_at_chat_unref(data->control);
> - data->control = NULL;
> + g_at_chat_unref(data->modem_port);
> + data->modem_port = NULL;
> +
> + g_at_chat_unref(data->data_port);
> + data->data_port = NULL;
>
> if (ok)
> ofono_modem_set_powered(modem, FALSE);
> @@ -225,20 +236,14 @@ static int linktop_disable(struct ofono_modem *modem)
>
> DBG("%p", modem);
>
> - if (data->modem) {
> - g_at_chat_cancel_all(data->modem);
> - g_at_chat_unregister_all(data->modem);
> - g_at_chat_unref(data->modem);
> - data->modem = NULL;
> - }
> -
> - if (data->control == NULL)
> + if (data->modem_port == NULL)
> return 0;
>
> - g_at_chat_cancel_all(data->control);
> - g_at_chat_unregister_all(data->control);
> - g_at_chat_send(data->control, "AT+CFUN=4", none_prefix,
> - cfun_disable, modem, NULL);
> + g_at_chat_cancel_all(data->modem_port);
> + g_at_chat_unregister_all(data->modem_port);
> +
> + g_at_chat_send(data->modem_port, "AT+CFUN=4", NULL,
> + cfun_disable_cb, modem, NULL);
>
> return -EINPROGRESS;
> }
> @@ -257,12 +262,14 @@ static void linktop_set_online(struct ofono_modem *modem, ofono_bool_t online,
> ofono_modem_online_cb_t cb, void *user_data)
> {
> struct linktop_data *data = ofono_modem_get_data(modem);
> - GAtChat *chat = data->control;
> + GAtChat *chat = data->modem_port;
> struct cb_data *cbd = cb_data_new(cb, user_data);
> char const *command = online ? "AT+CFUN=1" : "AT+CFUN=4";
>
> DBG("modem %p %s", modem, online ? "online" : "offline");
>
> + cbd->user = data;
> +
> if (g_at_chat_send(chat, command, NULL, set_online_cb, cbd, g_free))
> return;
>
> @@ -278,49 +285,33 @@ static void linktop_pre_sim(struct ofono_modem *modem)
>
> DBG("%p", modem);
>
> - ofono_devinfo_create(modem, 0, "atmodem", data->control);
> - sim = ofono_sim_create(modem, 0, "atmodem", data->control);
> - ofono_voicecall_create(modem, 0, "stemodem", data->control);
> + ofono_devinfo_create(modem, 0, "atmodem", data->modem_port);
> + sim = ofono_sim_create(modem, 0, "atmodem", data->modem_port);
>
> - if (sim)
> + if (data->have_sim && sim)
> ofono_sim_inserted_notify(sim, TRUE);
> }
>
> static void linktop_post_sim(struct ofono_modem *modem)
> {
> struct linktop_data *data = ofono_modem_get_data(modem);
> -
> - DBG("%p", modem);
> -
> - ofono_radio_settings_create(modem, 0, "stemodem", data->control);
> - ofono_phonebook_create(modem, 0, "atmodem", data->control);
> - ofono_sms_create(modem, 0, "atmodem", data->control);
> -}
> -
> -static void linktop_post_online(struct ofono_modem *modem)
> -{
> - struct linktop_data *data = ofono_modem_get_data(modem);
> struct ofono_message_waiting *mw;
> - struct ofono_gprs *gprs;
> - struct ofono_gprs_context *gc;
>
> DBG("%p", modem);
>
> - ofono_ussd_create(modem, 0, "atmodem", data->control);
> - ofono_call_forwarding_create(modem, 0, "atmodem", data->control);
> - ofono_call_settings_create(modem, 0, "atmodem", data->control);
> - ofono_netreg_create(modem, OFONO_VENDOR_MBM, "atmodem", data->control);
> - ofono_call_meter_create(modem, 0, "atmodem", data->control);
> - ofono_call_barring_create(modem, 0, "atmodem", data->control);
> - ofono_call_volume_create(modem, 0, "atmodem", data->control);
> - ofono_cbs_create(modem, 0, "atmodem", data->control);
> -
> - gprs = ofono_gprs_create(modem, OFONO_VENDOR_MBM,
> - "atmodem", data->control);
> - gc = ofono_gprs_context_create(modem, 0, "atmodem", data->modem);
> + ofono_radio_settings_create(modem, 0, "stemodem", data->modem_port);
> + ofono_phonebook_create(modem, 0, "atmodem", data->modem_port);
> + ofono_sms_create(modem, 0, "atmodem", data->modem_port);
> + ofono_ussd_create(modem, 0, "atmodem", data->modem_port);
> + ofono_netreg_create(modem, 0, "atmodem", data->modem_port);
netreg and ussd are not really meant to be created in post_sim stage.
They should be created in post_online.
radio_settings, sms, phonebook, gprs and gprs contexts are fine here.
> +
> + data->gprs = ofono_gprs_create(modem, 0,
> + "atmodem", data->modem_port);
> + data->gc = ofono_gprs_context_create(modem, 0,
> + "atmodem", data->data_port);
>
> - if (gprs && gc)
> - ofono_gprs_add_context(gprs, gc);
> + if (data->gprs && data->gc)
> + ofono_gprs_add_context(data->gprs, data->gc);
>
> mw = ofono_message_waiting_create(modem);
>
> @@ -336,8 +327,7 @@ static struct ofono_modem_driver linktop_driver = {
> .disable = linktop_disable,
> .set_online = linktop_set_online,
> .pre_sim = linktop_pre_sim,
> - .post_sim = linktop_post_sim,
> - .post_online = linktop_post_online,
> + .post_sim = linktop_post_sim
> };
>
> static int linktop_init(void)
Regards,
-Denis
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 2/2] udev: changed linktop device strings
2011-06-20 7:35 [PATCH 1/2] linktop: reimplemented linktop plugin with minimum features Amit Mendapara
2011-06-19 11:45 ` Denis Kenzior
@ 2011-06-20 7:35 ` Amit Mendapara
1 sibling, 0 replies; 3+ messages in thread
From: Amit Mendapara @ 2011-06-20 7:35 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 806 bytes --]
---
plugins/udev.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/plugins/udev.c b/plugins/udev.c
index 0234fc0..4f4e6d8 100644
--- a/plugins/udev.c
+++ b/plugins/udev.c
@@ -577,10 +577,10 @@ static void add_linktop(struct ofono_modem *modem,
if (g_strcmp0(intfnum, "01") == 0) {
devnode = udev_device_get_devnode(udev_device);
- ofono_modem_set_string(modem, "Modem", devnode);
+ ofono_modem_set_string(modem, "ModemDevice", devnode);
} else if (g_strcmp0(intfnum, "03") == 0) {
devnode = udev_device_get_devnode(udev_device);
- ofono_modem_set_string(modem, "Control", devnode);
+ ofono_modem_set_string(modem, "DataDevice", devnode);
ofono_modem_set_integer(modem, "Registered", 1);
ofono_modem_register(modem);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-06-20 7:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-20 7:35 [PATCH 1/2] linktop: reimplemented linktop plugin with minimum features Amit Mendapara
2011-06-19 11:45 ` Denis Kenzior
2011-06-20 7:35 ` [PATCH 2/2] udev: changed linktop device strings Amit Mendapara
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.