summaryrefslogtreecommitdiff
path: root/plugins/speedup.c
diff options
context:
space:
mode:
authorBertrand Aygon <bertrand.aygon@intel.com>2011-07-27 18:54:09 +0200
committerMarcel Holtmann <marcel@holtmann.org>2011-07-27 20:05:23 +0200
commit946e30abb2b4043805fca6bb722ea4dae94b1f78 (patch)
treea5b2db7faa73f51c3a98c9cc22530444095dd814 /plugins/speedup.c
parent77ab26c61ccb908670407a158f61a20cb22393da (diff)
downloadofono-946e30abb2b4043805fca6bb722ea4dae94b1f78.tar.gz
speedup: Use at_util's cpin polling implementation.
Diffstat (limited to 'plugins/speedup.c')
-rw-r--r--plugins/speedup.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/plugins/speedup.c b/plugins/speedup.c
index 7f42b55c..90ca5e37 100644
--- a/plugins/speedup.c
+++ b/plugins/speedup.c
@@ -52,6 +52,8 @@ static const char *none_prefix[] = { NULL };
struct speedup_data {
GAtChat *modem;
GAtChat *aux;
+ gboolean have_sim;
+ struct at_util_sim_state_query *sim_state_query;
};
static int speedup_probe(struct ofono_modem *modem)
@@ -120,6 +122,19 @@ static GAtChat *open_device(struct ofono_modem *modem,
return chat;
}
+static void sim_state_cb(gboolean present, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct speedup_data *data = ofono_modem_get_data(modem);
+
+ at_util_sim_state_query_free(data->sim_state_query);
+ data->sim_state_query = NULL;
+
+ data->have_sim = present;
+
+ ofono_modem_set_powered(modem, TRUE);
+}
+
static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_modem *modem = user_data;
@@ -133,9 +148,13 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
g_at_chat_unref(data->aux);
data->aux = NULL;
+
+ ofono_modem_set_powered(modem, FALSE);
+ return;
}
- ofono_modem_set_powered(modem, ok);
+ data->sim_state_query = at_util_sim_state_query_new(data->aux,
+ 2, 20, sim_state_cb, modem);
}
static int speedup_enable(struct ofono_modem *modem)
@@ -238,7 +257,7 @@ static void speedup_pre_sim(struct ofono_modem *modem)
sim = ofono_sim_create(modem, OFONO_VENDOR_QUALCOMM_MSM,
"atmodem", data->aux);
- if (sim)
+ if (sim && data->have_sim == TRUE)
ofono_sim_inserted_notify(sim, TRUE);
}