~binli/ubuntu/vivid/modemmanager/lp1441095

« back to all changes in this revision

Viewing changes to src/mm-broadband-modem-mbim.c

  • Committer: Package Import Robot
  • Author(s): Michael Biebl, Guido Günther, Michael Biebl
  • Date: 2014-06-25 02:23:09 UTC
  • mfrom: (20.2.2 sid)
  • Revision ID: package-import@ubuntu.com-20140625022309-43papaenj5ikbx3y
Tags: 1.2.0-1
[ Guido Günther ]
* New upstream version 1.2.0 (Closes: #731851)
* Update patches
* Install locale files
* Require newer libqmi
* Update symbols file
* Ship gobject introspection data
* Ship vala bindings

[ Michael Biebl ]
* Use canonical URI for Vcs-Git
* Use gir dh addon
* Update extendend package description (Closes: #744180)

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
#include "mm-iface-modem.h"
37
37
#include "mm-iface-modem-3gpp.h"
38
38
#include "mm-iface-modem-messaging.h"
 
39
#include "mm-sms-part-3gpp.h"
39
40
 
40
41
static void iface_modem_init (MMIfaceModem *iface);
41
42
static void iface_modem_3gpp_init (MMIfaceModem3gpp *iface);
260
261
    result = g_simple_async_result_new (G_OBJECT (self),
261
262
                                        callback,
262
263
                                        user_data,
263
 
                                        modem_load_manufacturer);
 
264
                                        modem_load_model);
264
265
    g_simple_async_result_complete_in_idle (result);
265
266
    g_object_unref (result);
266
267
}
1486
1487
    result = g_simple_async_result_new (G_OBJECT (self),
1487
1488
                                        callback,
1488
1489
                                        user_data,
1489
 
                                        modem_load_unlock_retries);
 
1490
                                        modem_3gpp_load_enabled_facility_locks);
1490
1491
 
1491
1492
    message = mbim_message_pin_list_query_new (NULL);
1492
1493
    mbim_device_command (device,
2276
2277
    result = g_simple_async_result_new (G_OBJECT (self),
2277
2278
                                        callback,
2278
2279
                                        user_data,
2279
 
                                        modem_3gpp_run_registration_checks);
 
2280
                                        modem_3gpp_register_in_network);
2280
2281
 
2281
2282
    if (operator_id && operator_id[0])
2282
2283
        message = (mbim_message_register_state_set_new (
2300
2301
}
2301
2302
 
2302
2303
/*****************************************************************************/
 
2304
/* Scan networks (3GPP interface) */
 
2305
 
 
2306
static GList *
 
2307
modem_3gpp_scan_networks_finish (MMIfaceModem3gpp *self,
 
2308
                                 GAsyncResult *res,
 
2309
                                 GError **error)
 
2310
{
 
2311
    MbimMessage *response;
 
2312
    MbimProvider **providers;
 
2313
    guint n_providers;
 
2314
    GList *info_list = NULL;
 
2315
 
 
2316
    if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
 
2317
        return NULL;
 
2318
 
 
2319
    response = (MbimMessage *)g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
 
2320
    if (mbim_message_command_done_get_result (response, error) &&
 
2321
        mbim_message_visible_providers_response_parse (response,
 
2322
                                                       &n_providers,
 
2323
                                                       &providers,
 
2324
                                                       error)) {
 
2325
        info_list = mm_3gpp_network_info_list_from_mbim_providers ((const MbimProvider *const *)providers,
 
2326
                                                                   n_providers);
 
2327
        mbim_provider_array_free (providers);
 
2328
    }
 
2329
    return info_list;
 
2330
}
 
2331
 
 
2332
static void
 
2333
visible_providers_query_ready (MbimDevice *device,
 
2334
                               GAsyncResult *res,
 
2335
                               GSimpleAsyncResult *simple)
 
2336
{
 
2337
    MbimMessage *response;
 
2338
    GError *error = NULL;
 
2339
 
 
2340
    response = mbim_device_command_finish (device, res, &error);
 
2341
    if (response)
 
2342
        g_simple_async_result_set_op_res_gpointer (simple, response, (GDestroyNotify)mbim_message_unref);
 
2343
    else
 
2344
        g_simple_async_result_take_error (simple, error);
 
2345
 
 
2346
    g_simple_async_result_complete (simple);
 
2347
    g_object_unref (simple);
 
2348
}
 
2349
 
 
2350
static void
 
2351
modem_3gpp_scan_networks (MMIfaceModem3gpp *self,
 
2352
                          GAsyncReadyCallback callback,
 
2353
                          gpointer user_data)
 
2354
{
 
2355
    GSimpleAsyncResult *result;
 
2356
    MbimDevice *device;
 
2357
    MbimMessage *message;
 
2358
 
 
2359
    if (!peek_device (self, &device, callback, user_data))
 
2360
        return;
 
2361
 
 
2362
    result = g_simple_async_result_new (G_OBJECT (self),
 
2363
                                        callback,
 
2364
                                        user_data,
 
2365
                                        modem_3gpp_scan_networks);
 
2366
 
 
2367
    mm_dbg ("scanning networks...");
 
2368
    message = mbim_message_visible_providers_query_new (MBIM_VISIBLE_PROVIDERS_ACTION_FULL_SCAN, NULL);
 
2369
    mbim_device_command (device,
 
2370
                         message,
 
2371
                         120,
 
2372
                         NULL,
 
2373
                         (GAsyncReadyCallback)visible_providers_query_ready,
 
2374
                         result);
 
2375
    mbim_message_unref (message);
 
2376
}
 
2377
 
 
2378
/*****************************************************************************/
2303
2379
/* Check support (Messaging interface) */
2304
2380
 
2305
2381
static gboolean
2407
2483
    MMSmsPart *part;
2408
2484
    GError *error = NULL;
2409
2485
 
2410
 
    part = mm_sms_part_new_from_binary_pdu (pdu->message_index,
2411
 
                                            pdu->pdu_data,
2412
 
                                            pdu->pdu_data_size,
2413
 
                                            &error);
 
2486
    part = mm_sms_part_3gpp_new_from_binary_pdu (pdu->message_index,
 
2487
                                                 pdu->pdu_data,
 
2488
                                                 pdu->pdu_data_size,
 
2489
                                                 &error);
2414
2490
    if (part) {
2415
2491
        mm_dbg ("Correctly parsed PDU (%d)", pdu->message_index);
2416
2492
        mm_iface_modem_messaging_take_part (MM_IFACE_MODEM_MESSAGING (self),
2697
2773
    iface->run_registration_checks_finish = modem_3gpp_run_registration_checks_finish;
2698
2774
    iface->register_in_network = modem_3gpp_register_in_network;
2699
2775
    iface->register_in_network_finish = modem_3gpp_register_in_network_finish;
2700
 
 
2701
 
    /* TODO: use MBIM_CID_VISIBLE_PROVIDERS */
2702
 
    iface->scan_networks = NULL;
2703
 
    iface->scan_networks_finish = NULL;
 
2776
    iface->scan_networks = modem_3gpp_scan_networks;
 
2777
    iface->scan_networks_finish = modem_3gpp_scan_networks_finish;
2704
2778
}
2705
2779
 
2706
2780
static void