~indicator-network-developers/ofono/trunk.packaging

« back to all changes in this revision

Viewing changes to plugins/sierra.c

  • Committer: Kalle Valo
  • Date: 2011-02-21 07:46:07 UTC
  • mfrom: (2738.1.2125)
  • Revision ID: kalle.valo@canonical.com-20110221074607-u4rocuj2p75kpht9
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
#include <ofono/devinfo.h>
39
39
#include <ofono/netreg.h>
40
40
#include <ofono/sim.h>
 
41
#include <ofono/gprs.h>
41
42
#include <ofono/phonebook.h>
42
43
 
43
44
#include <drivers/atmodem/atutil.h>
136
137
        g_at_chat_send(data->chat, "ATE0 +CMEE=1", none_prefix,
137
138
                                                NULL, NULL, NULL);
138
139
 
139
 
        g_at_chat_send(data->chat, "AT+CFUN=1", none_prefix,
 
140
        g_at_chat_send(data->chat, "AT+CFUN=4", none_prefix,
140
141
                                        cfun_enable, modem, NULL);
141
142
 
142
143
        return -EINPROGRESS;
174
175
        return -EINPROGRESS;
175
176
}
176
177
 
 
178
static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
 
179
{
 
180
        struct cb_data *cbd = user_data;
 
181
        ofono_modem_online_cb_t cb = cbd->cb;
 
182
 
 
183
        if (ok)
 
184
                CALLBACK_WITH_SUCCESS(cb, cbd->data);
 
185
        else
 
186
                CALLBACK_WITH_FAILURE(cb, cbd->data);
 
187
}
 
188
 
 
189
static void sierra_set_online(struct ofono_modem *modem, ofono_bool_t online,
 
190
                                ofono_modem_online_cb_t cb, void *user_data)
 
191
{
 
192
        struct sierra_data *data = ofono_modem_get_data(modem);
 
193
        struct cb_data *cbd = cb_data_new(cb, user_data);
 
194
        char const *command = online ? "AT+CFUN=1" : "AT+CFUN=4";
 
195
 
 
196
        DBG("modem %p %s", modem, online ? "online" : "offline");
 
197
 
 
198
        if (data->chat == NULL)
 
199
                goto error;
 
200
 
 
201
        if (g_at_chat_send(data->chat, command, NULL,
 
202
                                        set_online_cb, cbd, g_free))
 
203
                return;
 
204
 
 
205
error:
 
206
        g_free(cbd);
 
207
 
 
208
        CALLBACK_WITH_FAILURE(cb, cbd->data);
 
209
}
 
210
 
177
211
static void sierra_pre_sim(struct ofono_modem *modem)
178
212
{
179
213
        struct sierra_data *data = ofono_modem_get_data(modem);
182
216
        DBG("%p", modem);
183
217
 
184
218
        ofono_devinfo_create(modem, 0, "atmodem", data->chat);
185
 
        sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
 
219
        sim = ofono_sim_create(modem, OFONO_VENDOR_SIERRA,
 
220
                                        "atmodem", data->chat);
186
221
 
187
222
        if (sim)
188
223
                ofono_sim_inserted_notify(sim, TRUE);
200
235
static void sierra_post_online(struct ofono_modem *modem)
201
236
{
202
237
        struct sierra_data *data = ofono_modem_get_data(modem);
 
238
        struct ofono_gprs *gprs;
203
239
 
204
240
        DBG("%p", modem);
205
241
 
206
242
        ofono_netreg_create(modem, 0, "atmodem", data->chat);
 
243
 
 
244
        gprs = ofono_gprs_create(modem, 0, "atmodem", data->chat);
207
245
}
208
246
 
209
247
static struct ofono_modem_driver sierra_driver = {
212
250
        .remove         = sierra_remove,
213
251
        .enable         = sierra_enable,
214
252
        .disable        = sierra_disable,
 
253
        .set_online     = sierra_set_online,
215
254
        .pre_sim        = sierra_pre_sim,
216
255
        .post_sim       = sierra_post_sim,
217
 
        .post_online    = sierra_post_online,
 
256
        .post_online    = sierra_post_online,
218
257
};
219
258
 
220
259
static int sierra_init(void)