blob: 4d5e470655c3f718df15f6406cc4a5849234b35d [file] [log] [blame]
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* libmbim-glib -- GLib/GIO based library to control MBIM devices
*
* Copyright (C) 2014 Aleksander Morgado <aleksander@lanedo.com>
* Copyright (C) 2014 Smith Micro Software, Inc.
*/
#ifndef MBIM_PROXY_H
#define MBIM_PROXY_H
#if !defined (__LIBMBIM_GLIB_H_INSIDE__) && !defined (LIBMBIM_GLIB_COMPILATION)
#error "Only <libmbim-glib.h> can be included directly."
#endif
#include <glib-object.h>
#include <gio/gio.h>
G_BEGIN_DECLS
/**
* SECTION:mbim-proxy
* @title: MbimProxy
* @short_description: MBIM proxy handling routines
*
* The #MbimProxy will setup an abstract socket listening on a predefined
* address, and will take care of synchronizing the access to a set of shared
* MBIM ports.
*
* Multiple #MbimDevice objects may be connected to the #MbimProxy at any given
* time. The #MbimProxy acts as a stateful proxy (all remote #MbimDevice objects
* will need to share the same message sequence).
*/
#define MBIM_TYPE_PROXY (mbim_proxy_get_type ())
#define MBIM_PROXY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MBIM_TYPE_PROXY, MbimProxy))
#define MBIM_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MBIM_TYPE_PROXY, MbimProxyClass))
#define MBIM_IS_PROXY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MBIM_TYPE_PROXY))
#define MBIM_IS_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), MBIM_TYPE_PROXY))
#define MBIM_PROXY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MBIM_TYPE_PROXY, MbimProxyClass))
typedef struct _MbimProxy MbimProxy;
typedef struct _MbimProxyClass MbimProxyClass;
typedef struct _MbimProxyPrivate MbimProxyPrivate;
/**
* MBIM_PROXY_SOCKET_PATH:
*
* Symbol defining the default abstract socket name where the #MbimProxy will listen.
*
* Since: 1.10
*/
#define MBIM_PROXY_SOCKET_PATH "mbim-proxy"
/**
* MBIM_PROXY_N_CLIENTS:
*
* Symbol defining the #MbimProxy:mbim-proxy-n-clients property.
*
* Since: 1.10
*/
#define MBIM_PROXY_N_CLIENTS "mbim-proxy-n-clients"
/**
* MBIM_PROXY_N_DEVICES:
*
* Symbol defining the #MbimProxy:mbim-proxy-n-devices property.
*
* Since: 1.10
*/
#define MBIM_PROXY_N_DEVICES "mbim-proxy-n-devices"
/**
* MbimProxy:
*
* The #MbimProxy structure contains private data and should only be accessed
* using the provided API.
*
* Since: 1.10
*/
struct _MbimProxy {
GObject parent;
MbimProxyPrivate *priv;
};
struct _MbimProxyClass {
GObjectClass parent;
};
GType mbim_proxy_get_type (void);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MbimProxy, g_object_unref)
/**
* mbim_proxy_new:
* @error: Return location for error or %NULL.
*
* Creates a #MbimProxy object.
*
* Returns: (transfer full): a newly created #MbimProxy, or #NULL if @error is set.
*
* Since: 1.10
*/
MbimProxy *mbim_proxy_new (GError **error);
/**
* mbim_proxy_get_n_clients: (skip)
* @self: a #MbimProxy.
*
* Get the number of clients currently connected to the proxy.
*
* Returns: a #guint.
*
* Since: 1.10
*/
guint mbim_proxy_get_n_clients (MbimProxy *self);
/**
* mbim_proxy_get_n_devices: (skip)
* @self: a #MbimProxy.
*
* Get the number of devices currently connected to the proxy.
*
* Returns: a #guint.
*
* Since: 1.10
*/
guint mbim_proxy_get_n_devices (MbimProxy *self);
G_END_DECLS
#endif /* MBIM_PROXY_H */