diff options
author | Bertrand Aygon <bertrand.aygon@intel.com> | 2011-07-27 18:54:09 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2011-07-27 20:05:23 +0200 |
commit | 946e30abb2b4043805fca6bb722ea4dae94b1f78 (patch) | |
tree | a5b2db7faa73f51c3a98c9cc22530444095dd814 /plugins/speedup.c | |
parent | 77ab26c61ccb908670407a158f61a20cb22393da (diff) | |
download | ofono-946e30abb2b4043805fca6bb722ea4dae94b1f78.tar.gz |
speedup: Use at_util's cpin polling implementation.
Diffstat (limited to 'plugins/speedup.c')
-rw-r--r-- | plugins/speedup.c | 23 |
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); } |