/* gsm0710mux.h generated by valac 0.16.1, the Vala compiler, do not modify */


#ifndef __GSM0710MUX_H__
#define __GSM0710MUX_H__

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <fsotransport.h>
#include <gio/gio.h>

G_BEGIN_DECLS


#define GSM0710MUX_TYPE_CHANNEL_INFO (gsm0710mux_channel_info_get_type ())
#define GSM0710MUX_CHANNEL_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM0710MUX_TYPE_CHANNEL_INFO, Gsm0710muxChannelInfo))
#define GSM0710MUX_CHANNEL_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSM0710MUX_TYPE_CHANNEL_INFO, Gsm0710muxChannelInfoClass))
#define GSM0710MUX_IS_CHANNEL_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM0710MUX_TYPE_CHANNEL_INFO))
#define GSM0710MUX_IS_CHANNEL_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM0710MUX_TYPE_CHANNEL_INFO))
#define GSM0710MUX_CHANNEL_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM0710MUX_TYPE_CHANNEL_INFO, Gsm0710muxChannelInfoClass))

typedef struct _Gsm0710muxChannelInfo Gsm0710muxChannelInfo;
typedef struct _Gsm0710muxChannelInfoClass Gsm0710muxChannelInfoClass;
typedef struct _Gsm0710muxChannelInfoPrivate Gsm0710muxChannelInfoPrivate;

#define GSM0710MUX_TYPE_MANAGER (gsm0710mux_manager_get_type ())
#define GSM0710MUX_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM0710MUX_TYPE_MANAGER, Gsm0710muxManager))
#define GSM0710MUX_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSM0710MUX_TYPE_MANAGER, Gsm0710muxManagerClass))
#define GSM0710MUX_IS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM0710MUX_TYPE_MANAGER))
#define GSM0710MUX_IS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM0710MUX_TYPE_MANAGER))
#define GSM0710MUX_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM0710MUX_TYPE_MANAGER, Gsm0710muxManagerClass))

typedef struct _Gsm0710muxManager Gsm0710muxManager;
typedef struct _Gsm0710muxManagerClass Gsm0710muxManagerClass;
typedef struct _Gsm0710muxManagerPrivate Gsm0710muxManagerPrivate;

typedef enum  {
	GSM0710MUX_MUXER_ERROR_CHANNEL_TAKEN,
	GSM0710MUX_MUXER_ERROR_INVALID_CHANNEL,
	GSM0710MUX_MUXER_ERROR_INVALID_TRANSPORT,
	GSM0710MUX_MUXER_ERROR_NO_SESSION,
	GSM0710MUX_MUXER_ERROR_NO_CHANNEL,
	GSM0710MUX_MUXER_ERROR_SESSION_ALREADY_OPEN,
	GSM0710MUX_MUXER_ERROR_SESSION_OPEN_ERROR
} Gsm0710muxMuxerError;
#define GSM0710MUX_MUXER_ERROR gsm0710mux_muxer_error_quark ()
struct _Gsm0710muxChannelInfo {
	GTypeInstance parent_instance;
	volatile int ref_count;
	Gsm0710muxChannelInfoPrivate * priv;
	gchar* consumer;
	gint number;
	FsoFrameworkTransport* transport;
};

struct _Gsm0710muxChannelInfoClass {
	GTypeClass parent_class;
	void (*finalize) (Gsm0710muxChannelInfo *self);
};

struct _Gsm0710muxManager {
	GObject parent_instance;
	Gsm0710muxManagerPrivate * priv;
	guint channel_ack_timeout;
};

struct _Gsm0710muxManagerClass {
	GObjectClass parent_class;
};


GQuark gsm0710mux_muxer_error_quark (void);
gpointer gsm0710mux_channel_info_ref (gpointer instance);
void gsm0710mux_channel_info_unref (gpointer instance);
GParamSpec* gsm0710mux_param_spec_channel_info (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gsm0710mux_value_set_channel_info (GValue* value, gpointer v_object);
void gsm0710mux_value_take_channel_info (GValue* value, gpointer v_object);
gpointer gsm0710mux_value_get_channel_info (const GValue* value);
GType gsm0710mux_channel_info_get_type (void) G_GNUC_CONST;
Gsm0710muxChannelInfo* gsm0710mux_channel_info_new (void);
Gsm0710muxChannelInfo* gsm0710mux_channel_info_construct (GType object_type);
GType gsm0710mux_manager_get_type (void) G_GNUC_CONST;
extern gboolean gsm0710mux_manager_leave_mux_alone;
extern gboolean gsm0710mux_manager_leave_fc_alone;
Gsm0710muxManager* gsm0710mux_manager_new (void);
Gsm0710muxManager* gsm0710mux_manager_construct (GType object_type);
gchar* gsm0710mux_manager_repr (Gsm0710muxManager* self);
gchar* gsm0710mux_manager_getVersion (Gsm0710muxManager* self);
gboolean gsm0710mux_manager_hasAutoSession (Gsm0710muxManager* self);
void gsm0710mux_manager_openSession (Gsm0710muxManager* self, gboolean advanced, gint framesize, const gchar* porttype, const gchar* portname, gint portspeed, GError** error);
void gsm0710mux_manager_closeSession (Gsm0710muxManager* self, GError** error);
void gsm0710mux_manager_allocChannel (Gsm0710muxManager* self, Gsm0710muxChannelInfo* channel, GAsyncReadyCallback _callback_, gpointer _user_data_);
gint gsm0710mux_manager_allocChannel_finish (Gsm0710muxManager* self, GAsyncResult* _res_, GError** error);
void gsm0710mux_manager_releaseChannel (Gsm0710muxManager* self, const gchar* name, GError** error);
void gsm0710mux_manager_setWakeupThreshold (Gsm0710muxManager* self, guint seconds, guint waitms, GError** error);
void gsm0710mux_manager_setSendPauseThreshold (Gsm0710muxManager* self, guint ms, GError** error);
void gsm0710mux_manager_setStatus (Gsm0710muxManager* self, gint channel, const gchar* status, GError** error);
void gsm0710mux_manager_testCommand (Gsm0710muxManager* self, guint8* data, int data_length1, GError** error);


G_END_DECLS

#endif
