Пример #1
0
static void
list_bearers_process_reply (GList        *result,
                            const GError *error)
{
    if (error) {
        g_printerr ("error: couldn't list bearers: '%s'\n",
                    error->message);
        exit (EXIT_FAILURE);
    }

    g_print ("\n");
    if (!result) {
        g_print ("No bearers were found\n");
    } else {
        GList *l;

        g_print ("Found %u bearers:\n", g_list_length (result));
        for (l = result; l; l = g_list_next (l)) {
            MMBearer *bearer = MM_BEARER (l->data);

            g_print ("\n");
            print_bearer_short_info (bearer);
            g_object_unref (bearer);
        }
        g_list_free (result);
    }
}
void
mm_broadband_bearer_hso_report_connection_status (MMBroadbandBearerHso *self,
                                                  MMBroadbandBearerHsoConnectionStatus status)
{
    Dial3gppContext *ctx;

    /* Recover context (if any) and remove both cancellation and timeout (if any)*/
    ctx = self->priv->connect_pending;
    self->priv->connect_pending = NULL;

    if (self->priv->connect_pending_id) {
        g_source_remove (self->priv->connect_pending_id);
        self->priv->connect_pending_id = 0;
    }

    if (self->priv->connect_cancellable_id) {
        g_cancellable_disconnect (ctx->cancellable,
                                  self->priv->connect_cancellable_id);
        self->priv->connect_cancellable_id = 0;
    }

    switch (status) {
    case MM_BROADBAND_BEARER_HSO_CONNECTION_STATUS_UNKNOWN:
        g_warn_if_reached ();
        break;

    case MM_BROADBAND_BEARER_HSO_CONNECTION_STATUS_CONNECTED:
        if (!ctx)
            break;

        g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
        dial_3gpp_context_complete_and_free (ctx);
        return;

    case MM_BROADBAND_BEARER_HSO_CONNECTION_STATUS_CONNECTION_FAILED:
        if (!ctx)
            break;

        g_simple_async_result_set_error (ctx->result,
                                         MM_CORE_ERROR,
                                         MM_CORE_ERROR_FAILED,
                                         "Call setup failed");
        dial_3gpp_context_complete_and_free (ctx);
        return;

    case MM_BROADBAND_BEARER_HSO_CONNECTION_STATUS_DISCONNECTED:
        if (ctx) {
            g_simple_async_result_set_error (ctx->result,
                                             MM_CORE_ERROR,
                                             MM_CORE_ERROR_FAILED,
                                             "Call setup failed");
            dial_3gpp_context_complete_and_free (ctx);
        } else {
            /* Just ensure we mark ourselves as being disconnected... */
            mm_bearer_report_disconnection (MM_BEARER (self));
        }
        break;
    }
}
MMBearer *
mm_broadband_bearer_novatel_new_finish (GAsyncResult *res,
                                        GError **error)
{
    GObject *bearer;
    GObject *source;

    source = g_async_result_get_source_object (res);
    bearer = g_async_initable_new_finish (G_ASYNC_INITABLE (source), res, error);
    g_object_unref (source);

    if (!bearer)
        return NULL;

    /* Only export valid bearers */
    mm_bearer_export (MM_BEARER (bearer));

    return MM_BEARER (bearer);
}
Пример #4
0
static void
dispose (GObject *object)
{
    MMBearer *self = MM_BEARER (object);

    g_clear_object (&self->priv->ipv4_config);
    g_clear_object (&self->priv->ipv6_config);
    g_clear_object (&self->priv->properties);

    G_OBJECT_CLASS (mm_bearer_parent_class)->dispose (object);
}
Пример #5
0
static void
finalize (GObject *object)
{
    MMBearer *self = MM_BEARER (object);

    g_mutex_clear (&self->priv->ipv4_config_mutex);
    g_mutex_clear (&self->priv->ipv6_config_mutex);
    g_mutex_clear (&self->priv->properties_mutex);

    G_OBJECT_CLASS (mm_bearer_parent_class)->finalize (object);
}
Пример #6
0
static MMBearer *
find_bearer_in_list (GList *list,
                     const gchar *bearer_path)
{
    GList *l;

    for (l = list; l; l = g_list_next (l)) {
        MMBearer *bearer = MM_BEARER (l->data);

        if (g_str_equal (mm_bearer_get_path (bearer), bearer_path)) {
            g_debug ("Bearer found at '%s'\n", bearer_path);
            return g_object_ref (bearer);
        }
    }

    return NULL;
}