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


#ifndef __FSOTRANSPORT_H__
#define __FSOTRANSPORT_H__

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

G_BEGIN_DECLS


#define FSO_FRAMEWORK_TYPE_TRANSPORT (fso_framework_transport_get_type ())
#define FSO_FRAMEWORK_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_TRANSPORT, FsoFrameworkTransport))
#define FSO_FRAMEWORK_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_TRANSPORT, FsoFrameworkTransportClass))
#define FSO_FRAMEWORK_IS_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_TRANSPORT))
#define FSO_FRAMEWORK_IS_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_TRANSPORT))
#define FSO_FRAMEWORK_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_TRANSPORT, FsoFrameworkTransportClass))

typedef struct _FsoFrameworkTransport FsoFrameworkTransport;
typedef struct _FsoFrameworkTransportClass FsoFrameworkTransportClass;
typedef struct _FsoFrameworkTransportPrivate FsoFrameworkTransportPrivate;

#define FSO_FRAMEWORK_TYPE_BASE_TRANSPORT (fso_framework_base_transport_get_type ())
#define FSO_FRAMEWORK_BASE_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_BASE_TRANSPORT, FsoFrameworkBaseTransport))
#define FSO_FRAMEWORK_BASE_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_BASE_TRANSPORT, FsoFrameworkBaseTransportClass))
#define FSO_FRAMEWORK_IS_BASE_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_BASE_TRANSPORT))
#define FSO_FRAMEWORK_IS_BASE_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_BASE_TRANSPORT))
#define FSO_FRAMEWORK_BASE_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_BASE_TRANSPORT, FsoFrameworkBaseTransportClass))

typedef struct _FsoFrameworkBaseTransport FsoFrameworkBaseTransport;
typedef struct _FsoFrameworkBaseTransportClass FsoFrameworkBaseTransportClass;
typedef struct _FsoFrameworkBaseTransportPrivate FsoFrameworkBaseTransportPrivate;

#define FSO_FRAMEWORK_TYPE_COMMAND_QUEUE (fso_framework_command_queue_get_type ())
#define FSO_FRAMEWORK_COMMAND_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_COMMAND_QUEUE, FsoFrameworkCommandQueue))
#define FSO_FRAMEWORK_IS_COMMAND_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_COMMAND_QUEUE))
#define FSO_FRAMEWORK_COMMAND_QUEUE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_FRAMEWORK_TYPE_COMMAND_QUEUE, FsoFrameworkCommandQueueIface))

typedef struct _FsoFrameworkCommandQueue FsoFrameworkCommandQueue;
typedef struct _FsoFrameworkCommandQueueIface FsoFrameworkCommandQueueIface;

#define FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_HANDLER (fso_framework_abstract_command_handler_get_type ())
#define FSO_FRAMEWORK_ABSTRACT_COMMAND_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_HANDLER, FsoFrameworkAbstractCommandHandler))
#define FSO_FRAMEWORK_ABSTRACT_COMMAND_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_HANDLER, FsoFrameworkAbstractCommandHandlerClass))
#define FSO_FRAMEWORK_IS_ABSTRACT_COMMAND_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_HANDLER))
#define FSO_FRAMEWORK_IS_ABSTRACT_COMMAND_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_HANDLER))
#define FSO_FRAMEWORK_ABSTRACT_COMMAND_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_HANDLER, FsoFrameworkAbstractCommandHandlerClass))

typedef struct _FsoFrameworkAbstractCommandHandler FsoFrameworkAbstractCommandHandler;
typedef struct _FsoFrameworkAbstractCommandHandlerClass FsoFrameworkAbstractCommandHandlerClass;
typedef struct _FsoFrameworkAbstractCommandHandlerPrivate FsoFrameworkAbstractCommandHandlerPrivate;

#define FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_QUEUE (fso_framework_abstract_command_queue_get_type ())
#define FSO_FRAMEWORK_ABSTRACT_COMMAND_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_QUEUE, FsoFrameworkAbstractCommandQueue))
#define FSO_FRAMEWORK_ABSTRACT_COMMAND_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_QUEUE, FsoFrameworkAbstractCommandQueueClass))
#define FSO_FRAMEWORK_IS_ABSTRACT_COMMAND_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_QUEUE))
#define FSO_FRAMEWORK_IS_ABSTRACT_COMMAND_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_QUEUE))
#define FSO_FRAMEWORK_ABSTRACT_COMMAND_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_ABSTRACT_COMMAND_QUEUE, FsoFrameworkAbstractCommandQueueClass))

typedef struct _FsoFrameworkAbstractCommandQueue FsoFrameworkAbstractCommandQueue;
typedef struct _FsoFrameworkAbstractCommandQueueClass FsoFrameworkAbstractCommandQueueClass;
typedef struct _FsoFrameworkAbstractCommandQueuePrivate FsoFrameworkAbstractCommandQueuePrivate;

#define FSO_FRAMEWORK_TYPE_DELEGATE_TRANSPORT (fso_framework_delegate_transport_get_type ())
#define FSO_FRAMEWORK_DELEGATE_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_DELEGATE_TRANSPORT, FsoFrameworkDelegateTransport))
#define FSO_FRAMEWORK_DELEGATE_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_DELEGATE_TRANSPORT, FsoFrameworkDelegateTransportClass))
#define FSO_FRAMEWORK_IS_DELEGATE_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_DELEGATE_TRANSPORT))
#define FSO_FRAMEWORK_IS_DELEGATE_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_DELEGATE_TRANSPORT))
#define FSO_FRAMEWORK_DELEGATE_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_DELEGATE_TRANSPORT, FsoFrameworkDelegateTransportClass))

typedef struct _FsoFrameworkDelegateTransport FsoFrameworkDelegateTransport;
typedef struct _FsoFrameworkDelegateTransportClass FsoFrameworkDelegateTransportClass;
typedef struct _FsoFrameworkDelegateTransportPrivate FsoFrameworkDelegateTransportPrivate;

#define FSO_FRAMEWORK_TYPE_NULL_TRANSPORT (fso_framework_null_transport_get_type ())
#define FSO_FRAMEWORK_NULL_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_NULL_TRANSPORT, FsoFrameworkNullTransport))
#define FSO_FRAMEWORK_NULL_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_NULL_TRANSPORT, FsoFrameworkNullTransportClass))
#define FSO_FRAMEWORK_IS_NULL_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_NULL_TRANSPORT))
#define FSO_FRAMEWORK_IS_NULL_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_NULL_TRANSPORT))
#define FSO_FRAMEWORK_NULL_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_NULL_TRANSPORT, FsoFrameworkNullTransportClass))

typedef struct _FsoFrameworkNullTransport FsoFrameworkNullTransport;
typedef struct _FsoFrameworkNullTransportClass FsoFrameworkNullTransportClass;
typedef struct _FsoFrameworkNullTransportPrivate FsoFrameworkNullTransportPrivate;

#define FSO_FRAMEWORK_TYPE_PARSER (fso_framework_parser_get_type ())
#define FSO_FRAMEWORK_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_PARSER, FsoFrameworkParser))
#define FSO_FRAMEWORK_IS_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_PARSER))
#define FSO_FRAMEWORK_PARSER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_FRAMEWORK_TYPE_PARSER, FsoFrameworkParserIface))

typedef struct _FsoFrameworkParser FsoFrameworkParser;
typedef struct _FsoFrameworkParserIface FsoFrameworkParserIface;

#define FSO_FRAMEWORK_TYPE_BASE_PARSER (fso_framework_base_parser_get_type ())
#define FSO_FRAMEWORK_BASE_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_BASE_PARSER, FsoFrameworkBaseParser))
#define FSO_FRAMEWORK_BASE_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_BASE_PARSER, FsoFrameworkBaseParserClass))
#define FSO_FRAMEWORK_IS_BASE_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_BASE_PARSER))
#define FSO_FRAMEWORK_IS_BASE_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_BASE_PARSER))
#define FSO_FRAMEWORK_BASE_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_BASE_PARSER, FsoFrameworkBaseParserClass))

typedef struct _FsoFrameworkBaseParser FsoFrameworkBaseParser;
typedef struct _FsoFrameworkBaseParserClass FsoFrameworkBaseParserClass;
typedef struct _FsoFrameworkBaseParserPrivate FsoFrameworkBaseParserPrivate;

#define FSO_FRAMEWORK_TYPE_NULL_PARSER (fso_framework_null_parser_get_type ())
#define FSO_FRAMEWORK_NULL_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_NULL_PARSER, FsoFrameworkNullParser))
#define FSO_FRAMEWORK_NULL_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_NULL_PARSER, FsoFrameworkNullParserClass))
#define FSO_FRAMEWORK_IS_NULL_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_NULL_PARSER))
#define FSO_FRAMEWORK_IS_NULL_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_NULL_PARSER))
#define FSO_FRAMEWORK_NULL_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_NULL_PARSER, FsoFrameworkNullParserClass))

typedef struct _FsoFrameworkNullParser FsoFrameworkNullParser;
typedef struct _FsoFrameworkNullParserClass FsoFrameworkNullParserClass;
typedef struct _FsoFrameworkNullParserPrivate FsoFrameworkNullParserPrivate;

#define FSO_FRAMEWORK_TYPE_LINE_BY_LINE_PARSER (fso_framework_line_by_line_parser_get_type ())
#define FSO_FRAMEWORK_LINE_BY_LINE_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_LINE_BY_LINE_PARSER, FsoFrameworkLineByLineParser))
#define FSO_FRAMEWORK_LINE_BY_LINE_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_LINE_BY_LINE_PARSER, FsoFrameworkLineByLineParserClass))
#define FSO_FRAMEWORK_IS_LINE_BY_LINE_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_LINE_BY_LINE_PARSER))
#define FSO_FRAMEWORK_IS_LINE_BY_LINE_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_LINE_BY_LINE_PARSER))
#define FSO_FRAMEWORK_LINE_BY_LINE_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_LINE_BY_LINE_PARSER, FsoFrameworkLineByLineParserClass))

typedef struct _FsoFrameworkLineByLineParser FsoFrameworkLineByLineParser;
typedef struct _FsoFrameworkLineByLineParserClass FsoFrameworkLineByLineParserClass;
typedef struct _FsoFrameworkLineByLineParserPrivate FsoFrameworkLineByLineParserPrivate;

#define FSO_FRAMEWORK_TYPE_FD_PIPE (fso_framework_fd_pipe_get_type ())
#define FSO_FRAMEWORK_FD_PIPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_FD_PIPE, FsoFrameworkFdPipe))
#define FSO_FRAMEWORK_FD_PIPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_FD_PIPE, FsoFrameworkFdPipeClass))
#define FSO_FRAMEWORK_IS_FD_PIPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_FD_PIPE))
#define FSO_FRAMEWORK_IS_FD_PIPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_FD_PIPE))
#define FSO_FRAMEWORK_FD_PIPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_FD_PIPE, FsoFrameworkFdPipeClass))

typedef struct _FsoFrameworkFdPipe FsoFrameworkFdPipe;
typedef struct _FsoFrameworkFdPipeClass FsoFrameworkFdPipeClass;
typedef struct _FsoFrameworkFdPipePrivate FsoFrameworkFdPipePrivate;

#define FSO_FRAMEWORK_TYPE_PTY_TRANSPORT (fso_framework_pty_transport_get_type ())
#define FSO_FRAMEWORK_PTY_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_PTY_TRANSPORT, FsoFrameworkPtyTransport))
#define FSO_FRAMEWORK_PTY_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_PTY_TRANSPORT, FsoFrameworkPtyTransportClass))
#define FSO_FRAMEWORK_IS_PTY_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_PTY_TRANSPORT))
#define FSO_FRAMEWORK_IS_PTY_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_PTY_TRANSPORT))
#define FSO_FRAMEWORK_PTY_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_PTY_TRANSPORT, FsoFrameworkPtyTransportClass))

typedef struct _FsoFrameworkPtyTransport FsoFrameworkPtyTransport;
typedef struct _FsoFrameworkPtyTransportClass FsoFrameworkPtyTransportClass;
typedef struct _FsoFrameworkPtyTransportPrivate FsoFrameworkPtyTransportPrivate;

#define FSO_FRAMEWORK_TYPE_SERIAL_TRANSPORT (fso_framework_serial_transport_get_type ())
#define FSO_FRAMEWORK_SERIAL_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_SERIAL_TRANSPORT, FsoFrameworkSerialTransport))
#define FSO_FRAMEWORK_SERIAL_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_SERIAL_TRANSPORT, FsoFrameworkSerialTransportClass))
#define FSO_FRAMEWORK_IS_SERIAL_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_SERIAL_TRANSPORT))
#define FSO_FRAMEWORK_IS_SERIAL_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_SERIAL_TRANSPORT))
#define FSO_FRAMEWORK_SERIAL_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_SERIAL_TRANSPORT, FsoFrameworkSerialTransportClass))

typedef struct _FsoFrameworkSerialTransport FsoFrameworkSerialTransport;
typedef struct _FsoFrameworkSerialTransportClass FsoFrameworkSerialTransportClass;
typedef struct _FsoFrameworkSerialTransportPrivate FsoFrameworkSerialTransportPrivate;

#define FSO_FRAMEWORK_TYPE_SOCKET_TRANSPORT (fso_framework_socket_transport_get_type ())
#define FSO_FRAMEWORK_SOCKET_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_SOCKET_TRANSPORT, FsoFrameworkSocketTransport))
#define FSO_FRAMEWORK_SOCKET_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_SOCKET_TRANSPORT, FsoFrameworkSocketTransportClass))
#define FSO_FRAMEWORK_IS_SOCKET_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_SOCKET_TRANSPORT))
#define FSO_FRAMEWORK_IS_SOCKET_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_SOCKET_TRANSPORT))
#define FSO_FRAMEWORK_SOCKET_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_SOCKET_TRANSPORT, FsoFrameworkSocketTransportClass))

typedef struct _FsoFrameworkSocketTransport FsoFrameworkSocketTransport;
typedef struct _FsoFrameworkSocketTransportClass FsoFrameworkSocketTransportClass;
typedef struct _FsoFrameworkSocketTransportPrivate FsoFrameworkSocketTransportPrivate;

#define FSO_FRAMEWORK_TYPE_TRANSPORT_STATE (fso_framework_transport_state_get_type ())

#define FSO_FRAMEWORK_TYPE_TRANSPORT_SPEC (fso_framework_transport_spec_get_type ())
#define FSO_FRAMEWORK_TRANSPORT_SPEC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_TRANSPORT_SPEC, FsoFrameworkTransportSpec))
#define FSO_FRAMEWORK_TRANSPORT_SPEC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_TRANSPORT_SPEC, FsoFrameworkTransportSpecClass))
#define FSO_FRAMEWORK_IS_TRANSPORT_SPEC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_TRANSPORT_SPEC))
#define FSO_FRAMEWORK_IS_TRANSPORT_SPEC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_TRANSPORT_SPEC))
#define FSO_FRAMEWORK_TRANSPORT_SPEC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_TRANSPORT_SPEC, FsoFrameworkTransportSpecClass))

typedef struct _FsoFrameworkTransportSpec FsoFrameworkTransportSpec;
typedef struct _FsoFrameworkTransportSpecClass FsoFrameworkTransportSpecClass;
typedef struct _FsoFrameworkTransportSpecPrivate FsoFrameworkTransportSpecPrivate;

#define FSO_FRAMEWORK_TYPE_RAW_TRANSPORT (fso_framework_raw_transport_get_type ())
#define FSO_FRAMEWORK_RAW_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_RAW_TRANSPORT, FsoFrameworkRawTransport))
#define FSO_FRAMEWORK_RAW_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_RAW_TRANSPORT, FsoFrameworkRawTransportClass))
#define FSO_FRAMEWORK_IS_RAW_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_RAW_TRANSPORT))
#define FSO_FRAMEWORK_IS_RAW_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_RAW_TRANSPORT))
#define FSO_FRAMEWORK_RAW_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_RAW_TRANSPORT, FsoFrameworkRawTransportClass))

typedef struct _FsoFrameworkRawTransport FsoFrameworkRawTransport;
typedef struct _FsoFrameworkRawTransportClass FsoFrameworkRawTransportClass;
typedef struct _FsoFrameworkRawTransportPrivate FsoFrameworkRawTransportPrivate;

#define FSO_FRAMEWORK_TYPE_COMBINED_TRANSPORT (fso_framework_combined_transport_get_type ())
#define FSO_FRAMEWORK_COMBINED_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_COMBINED_TRANSPORT, FsoFrameworkCombinedTransport))
#define FSO_FRAMEWORK_COMBINED_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_COMBINED_TRANSPORT, FsoFrameworkCombinedTransportClass))
#define FSO_FRAMEWORK_IS_COMBINED_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_COMBINED_TRANSPORT))
#define FSO_FRAMEWORK_IS_COMBINED_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_COMBINED_TRANSPORT))
#define FSO_FRAMEWORK_COMBINED_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_COMBINED_TRANSPORT, FsoFrameworkCombinedTransportClass))

typedef struct _FsoFrameworkCombinedTransport FsoFrameworkCombinedTransport;
typedef struct _FsoFrameworkCombinedTransportClass FsoFrameworkCombinedTransportClass;
typedef struct _FsoFrameworkCombinedTransportPrivate FsoFrameworkCombinedTransportPrivate;

#define FSO_FRAMEWORK_TYPE_NGSM_TRANSPORT (fso_framework_ngsm_transport_get_type ())
#define FSO_FRAMEWORK_NGSM_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_NGSM_TRANSPORT, FsoFrameworkNgsmTransport))
#define FSO_FRAMEWORK_NGSM_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_NGSM_TRANSPORT, FsoFrameworkNgsmTransportClass))
#define FSO_FRAMEWORK_IS_NGSM_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_NGSM_TRANSPORT))
#define FSO_FRAMEWORK_IS_NGSM_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_NGSM_TRANSPORT))
#define FSO_FRAMEWORK_NGSM_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_NGSM_TRANSPORT, FsoFrameworkNgsmTransportClass))

typedef struct _FsoFrameworkNgsmTransport FsoFrameworkNgsmTransport;
typedef struct _FsoFrameworkNgsmTransportClass FsoFrameworkNgsmTransportClass;
typedef struct _FsoFrameworkNgsmTransportPrivate FsoFrameworkNgsmTransportPrivate;

#define FSO_FRAMEWORK_TYPE_NGSM_BASIC_MUX_TRANSPORT (fso_framework_ngsm_basic_mux_transport_get_type ())
#define FSO_FRAMEWORK_NGSM_BASIC_MUX_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_NGSM_BASIC_MUX_TRANSPORT, FsoFrameworkNgsmBasicMuxTransport))
#define FSO_FRAMEWORK_NGSM_BASIC_MUX_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_NGSM_BASIC_MUX_TRANSPORT, FsoFrameworkNgsmBasicMuxTransportClass))
#define FSO_FRAMEWORK_IS_NGSM_BASIC_MUX_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_NGSM_BASIC_MUX_TRANSPORT))
#define FSO_FRAMEWORK_IS_NGSM_BASIC_MUX_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_NGSM_BASIC_MUX_TRANSPORT))
#define FSO_FRAMEWORK_NGSM_BASIC_MUX_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_NGSM_BASIC_MUX_TRANSPORT, FsoFrameworkNgsmBasicMuxTransportClass))

typedef struct _FsoFrameworkNgsmBasicMuxTransport FsoFrameworkNgsmBasicMuxTransport;
typedef struct _FsoFrameworkNgsmBasicMuxTransportClass FsoFrameworkNgsmBasicMuxTransportClass;
typedef struct _FsoFrameworkNgsmBasicMuxTransportPrivate FsoFrameworkNgsmBasicMuxTransportPrivate;

#define FSO_FRAMEWORK_TYPE_NGSM_ADVANCED_MUX_TRANSPORT (fso_framework_ngsm_advanced_mux_transport_get_type ())
#define FSO_FRAMEWORK_NGSM_ADVANCED_MUX_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_FRAMEWORK_TYPE_NGSM_ADVANCED_MUX_TRANSPORT, FsoFrameworkNgsmAdvancedMuxTransport))
#define FSO_FRAMEWORK_NGSM_ADVANCED_MUX_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_FRAMEWORK_TYPE_NGSM_ADVANCED_MUX_TRANSPORT, FsoFrameworkNgsmAdvancedMuxTransportClass))
#define FSO_FRAMEWORK_IS_NGSM_ADVANCED_MUX_TRANSPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_FRAMEWORK_TYPE_NGSM_ADVANCED_MUX_TRANSPORT))
#define FSO_FRAMEWORK_IS_NGSM_ADVANCED_MUX_TRANSPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_FRAMEWORK_TYPE_NGSM_ADVANCED_MUX_TRANSPORT))
#define FSO_FRAMEWORK_NGSM_ADVANCED_MUX_TRANSPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_FRAMEWORK_TYPE_NGSM_ADVANCED_MUX_TRANSPORT, FsoFrameworkNgsmAdvancedMuxTransportClass))

typedef struct _FsoFrameworkNgsmAdvancedMuxTransport FsoFrameworkNgsmAdvancedMuxTransport;
typedef struct _FsoFrameworkNgsmAdvancedMuxTransportClass FsoFrameworkNgsmAdvancedMuxTransportClass;
typedef struct _FsoFrameworkNgsmAdvancedMuxTransportPrivate FsoFrameworkNgsmAdvancedMuxTransportPrivate;

typedef void (*FsoFrameworkTransportFunc) (FsoFrameworkTransport* transport, void* user_data);
struct _FsoFrameworkTransport {
	GObject parent_instance;
	FsoFrameworkTransportPrivate * priv;
	FsoFrameworkLogger* logger;
};

struct _FsoFrameworkTransportClass {
	GObjectClass parent_class;
	gboolean (*isOpen) (FsoFrameworkTransport* self);
	void (*openAsync) (FsoFrameworkTransport* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*openAsync_finish) (FsoFrameworkTransport* self, GAsyncResult* _res_);
	gboolean (*open) (FsoFrameworkTransport* self);
	void (*close) (FsoFrameworkTransport* self);
	gchar* (*getName) (FsoFrameworkTransport* self);
	void (*setDelegates) (FsoFrameworkTransport* self, FsoFrameworkTransportFunc readfunc, void* readfunc_target, FsoFrameworkTransportFunc hupfunc, void* hupfunc_target);
	void (*getDelegates) (FsoFrameworkTransport* self, FsoFrameworkTransportFunc* readfun, void** readfun_target, GDestroyNotify* readfun_target_destroy_notify, FsoFrameworkTransportFunc* hupfun, void** hupfun_target, GDestroyNotify* hupfun_target_destroy_notify);
	void (*setPriorities) (FsoFrameworkTransport* self, gint rp, gint wp);
	void (*setBuffered) (FsoFrameworkTransport* self, gboolean on);
	gint (*writeAndRead) (FsoFrameworkTransport* self, void* wdata, gint wlength, void* rdata, gint rlength, gint maxWait);
	gint (*read) (FsoFrameworkTransport* self, void* data, gint length);
	gint (*write) (FsoFrameworkTransport* self, void* data, gint length);
	gint (*freeze) (FsoFrameworkTransport* self);
	void (*thaw) (FsoFrameworkTransport* self);
	void (*drain) (FsoFrameworkTransport* self);
	void (*flush) (FsoFrameworkTransport* self);
	gboolean (*suspend) (FsoFrameworkTransport* self);
	void (*resume) (FsoFrameworkTransport* self);
};

struct _FsoFrameworkBaseTransport {
	FsoFrameworkTransport parent_instance;
	FsoFrameworkBaseTransportPrivate * priv;
	gchar* name;
	guint speed;
	gboolean raw;
	gboolean hard;
	gint fd;
	FsoFrameworkTransportFunc hupfunc;
	gpointer hupfunc_target;
	GDestroyNotify hupfunc_target_destroy_notify;
	FsoFrameworkTransportFunc readfunc;
	gpointer readfunc_target;
	GDestroyNotify readfunc_target_destroy_notify;
	GByteArray* buffer;
};

struct _FsoFrameworkBaseTransportClass {
	FsoFrameworkTransportClass parent_class;
	gssize (*_real_write) (FsoFrameworkBaseTransport* self, gint fd, void* data, gint len);
	void (*configure) (FsoFrameworkBaseTransport* self);
	gchar* (*repr) (FsoFrameworkBaseTransport* self);
	gssize (*_real_read) (FsoFrameworkBaseTransport* self, gint fd, void* data, gint len);
};

typedef void (*FsoFrameworkCommandQueueUnsolicitedHandler) (const gchar* prefix, const gchar* response, const gchar* pdu, void* user_data);
struct _FsoFrameworkCommandQueueIface {
	GTypeInterface parent_iface;
	void (*open) (FsoFrameworkCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*open_finish) (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
	void (*close) (FsoFrameworkCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*close_finish) (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
	void (*registerUnsolicitedHandler) (FsoFrameworkCommandQueue* self, FsoFrameworkCommandQueueUnsolicitedHandler urchandler, void* urchandler_target);
	void (*freeze) (FsoFrameworkCommandQueue* self, gboolean drain, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*freeze_finish) (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
	void (*thaw) (FsoFrameworkCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*thaw_finish) (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
	FsoFrameworkTransport* (*get_transport) (FsoFrameworkCommandQueue* self);
	void (*set_transport) (FsoFrameworkCommandQueue* self, FsoFrameworkTransport* value);
};

struct _FsoFrameworkAbstractCommandHandler {
	GTypeInstance parent_instance;
	volatile int ref_count;
	FsoFrameworkAbstractCommandHandlerPrivate * priv;
	guint timeout;
	guint retry;
	GSourceFunc callback;
	gpointer callback_target;
	GDestroyNotify callback_target_destroy_notify;
};

struct _FsoFrameworkAbstractCommandHandlerClass {
	GTypeClass parent_class;
	void (*finalize) (FsoFrameworkAbstractCommandHandler *self);
	void (*writeToTransport) (FsoFrameworkAbstractCommandHandler* self, FsoFrameworkTransport* t);
	gchar* (*to_string) (FsoFrameworkAbstractCommandHandler* self);
};

struct _FsoFrameworkAbstractCommandQueue {
	GObject parent_instance;
	FsoFrameworkAbstractCommandQueuePrivate * priv;
	FsoFrameworkCommandQueueUnsolicitedHandler urchandler;
	gpointer urchandler_target;
	GDestroyNotify urchandler_target_destroy_notify;
	FsoFrameworkAbstractCommandHandler* current;
};

struct _FsoFrameworkAbstractCommandQueueClass {
	GObjectClass parent_class;
	void (*onReadFromTransport) (FsoFrameworkAbstractCommandQueue* self, FsoFrameworkTransport* t);
	void (*onResponseTimeout) (FsoFrameworkAbstractCommandQueue* self, FsoFrameworkAbstractCommandHandler* ach);
	void (*open) (FsoFrameworkAbstractCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*open_finish) (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
	void (*freeze) (FsoFrameworkAbstractCommandQueue* self, gboolean drain, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*freeze_finish) (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
	void (*thaw) (FsoFrameworkAbstractCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*thaw_finish) (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
	void (*close) (FsoFrameworkAbstractCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*close_finish) (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
};

struct _FsoFrameworkDelegateTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkDelegateTransportPrivate * priv;
};

struct _FsoFrameworkDelegateTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

typedef gint (*FsoFrameworkTransportDataFunc) (void* data, gint length, FsoFrameworkTransport* transport, void* user_data);
typedef gboolean (*FsoFrameworkTransportBoolFunc) (FsoFrameworkTransport* transport, void* user_data);
typedef gint (*FsoFrameworkTransportIntFunc) (FsoFrameworkTransport* transport, void* user_data);
struct _FsoFrameworkNullTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkNullTransportPrivate * priv;
};

struct _FsoFrameworkNullTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

typedef gboolean (*FsoFrameworkParserHaveCommandFunc) (void* user_data);
typedef gboolean (*FsoFrameworkParserExpectedPrefixFunc) (const gchar* line, void* user_data);
typedef void (*FsoFrameworkParserSolicitedCompletedFunc) (gchar** response, int response_length1, void* user_data);
typedef void (*FsoFrameworkParserUnsolicitedCompletedFunc) (gchar** response, int response_length1, void* user_data);
struct _FsoFrameworkParserIface {
	GTypeInterface parent_iface;
	void (*setDelegates) (FsoFrameworkParser* self, FsoFrameworkParserHaveCommandFunc haveCommand, void* haveCommand_target, FsoFrameworkParserExpectedPrefixFunc expectedPrefix, void* expectedPrefix_target, FsoFrameworkParserSolicitedCompletedFunc solicitedCompleted, void* solicitedCompleted_target, FsoFrameworkParserUnsolicitedCompletedFunc unsolicitedCompleted, void* unsolicitedCompleted_target);
	gint (*feed) (FsoFrameworkParser* self, void* data, gint len);
};

struct _FsoFrameworkBaseParser {
	GObject parent_instance;
	FsoFrameworkBaseParserPrivate * priv;
	FsoFrameworkParserHaveCommandFunc haveCommand;
	gpointer haveCommand_target;
	GDestroyNotify haveCommand_target_destroy_notify;
	FsoFrameworkParserExpectedPrefixFunc expectedPrefix;
	gpointer expectedPrefix_target;
	GDestroyNotify expectedPrefix_target_destroy_notify;
	FsoFrameworkParserSolicitedCompletedFunc solicitedCompleted;
	gpointer solicitedCompleted_target;
	GDestroyNotify solicitedCompleted_target_destroy_notify;
	FsoFrameworkParserUnsolicitedCompletedFunc unsolicitedCompleted;
	gpointer unsolicitedCompleted_target;
	GDestroyNotify unsolicitedCompleted_target_destroy_notify;
};

struct _FsoFrameworkBaseParserClass {
	GObjectClass parent_class;
	gint (*feed) (FsoFrameworkBaseParser* self, void* data, gint len);
};

struct _FsoFrameworkNullParser {
	FsoFrameworkBaseParser parent_instance;
	FsoFrameworkNullParserPrivate * priv;
};

struct _FsoFrameworkNullParserClass {
	FsoFrameworkBaseParserClass parent_class;
};

struct _FsoFrameworkLineByLineParser {
	FsoFrameworkBaseParser parent_instance;
	FsoFrameworkLineByLineParserPrivate * priv;
};

struct _FsoFrameworkLineByLineParserClass {
	FsoFrameworkBaseParserClass parent_class;
};

struct _FsoFrameworkFdPipe {
	GObject parent_instance;
	FsoFrameworkFdPipePrivate * priv;
};

struct _FsoFrameworkFdPipeClass {
	GObjectClass parent_class;
};

struct _FsoFrameworkPtyTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkPtyTransportPrivate * priv;
};

struct _FsoFrameworkPtyTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

struct _FsoFrameworkSerialTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkSerialTransportPrivate * priv;
	gboolean dtr_cycle;
};

struct _FsoFrameworkSerialTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

struct _FsoFrameworkSocketTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkSocketTransportPrivate * priv;
};

struct _FsoFrameworkSocketTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

typedef enum  {
	FSO_FRAMEWORK_TRANSPORT_ERROR_UNABLE_TO_OPEN,
	FSO_FRAMEWORK_TRANSPORT_ERROR_UNABLE_TO_WRITE
} FsoFrameworkTransportError;
#define FSO_FRAMEWORK_TRANSPORT_ERROR fso_framework_transport_error_quark ()
typedef enum  {
	FSO_FRAMEWORK_TRANSPORT_STATE_CLOSED,
	FSO_FRAMEWORK_TRANSPORT_STATE_OPEN,
	FSO_FRAMEWORK_TRANSPORT_STATE_ALIVE,
	FSO_FRAMEWORK_TRANSPORT_STATE_FROZEN,
	FSO_FRAMEWORK_TRANSPORT_STATE_DEAD
} FsoFrameworkTransportState;

struct _FsoFrameworkTransportSpec {
	GTypeInstance parent_instance;
	volatile int ref_count;
	FsoFrameworkTransportSpecPrivate * priv;
	gchar* type;
	gchar* name;
	guint speed;
	gboolean raw;
	gboolean hard;
};

struct _FsoFrameworkTransportSpecClass {
	GTypeClass parent_class;
	void (*finalize) (FsoFrameworkTransportSpec *self);
};

struct _FsoFrameworkRawTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkRawTransportPrivate * priv;
};

struct _FsoFrameworkRawTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

struct _FsoFrameworkCombinedTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkCombinedTransportPrivate * priv;
};

struct _FsoFrameworkCombinedTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

struct _FsoFrameworkNgsmTransport {
	FsoFrameworkBaseTransport parent_instance;
	FsoFrameworkNgsmTransportPrivate * priv;
};

struct _FsoFrameworkNgsmTransportClass {
	FsoFrameworkBaseTransportClass parent_class;
};

struct _FsoFrameworkNgsmBasicMuxTransport {
	FsoFrameworkNgsmTransport parent_instance;
	FsoFrameworkNgsmBasicMuxTransportPrivate * priv;
};

struct _FsoFrameworkNgsmBasicMuxTransportClass {
	FsoFrameworkNgsmTransportClass parent_class;
};

struct _FsoFrameworkNgsmAdvancedMuxTransport {
	FsoFrameworkNgsmTransport parent_instance;
	FsoFrameworkNgsmAdvancedMuxTransportPrivate * priv;
};

struct _FsoFrameworkNgsmAdvancedMuxTransportClass {
	FsoFrameworkNgsmTransportClass parent_class;
};


GType fso_framework_transport_get_type (void) G_GNUC_CONST;
GType fso_framework_base_transport_get_type (void) G_GNUC_CONST;
void fso_framework_base_transport_restartWriter (FsoFrameworkBaseTransport* self);
gssize _fso_framework_base_transport_real_write (FsoFrameworkBaseTransport* self, gint fd, void* data, gint len);
speed_t fso_framework_base_transport_parse_speed (FsoFrameworkBaseTransport* self, guint speed);
void fso_framework_base_transport_configure (FsoFrameworkBaseTransport* self);
gchar* fso_framework_base_transport_repr (FsoFrameworkBaseTransport* self);
FsoFrameworkBaseTransport* fso_framework_base_transport_new (const gchar* name, guint speed, gboolean raw, gboolean hard);
FsoFrameworkBaseTransport* fso_framework_base_transport_construct (GType object_type, const gchar* name, guint speed, gboolean raw, gboolean hard);
gssize _fso_framework_base_transport_real_read (FsoFrameworkBaseTransport* self, gint fd, void* data, gint len);
gsize _fso_framework_base_transport_read (FsoFrameworkBaseTransport* self, void* rdata, gint rlength, gint maxWait);
GType fso_framework_command_queue_get_type (void) G_GNUC_CONST;
void fso_framework_command_queue_open (FsoFrameworkCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean fso_framework_command_queue_open_finish (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
void fso_framework_command_queue_close (FsoFrameworkCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_framework_command_queue_close_finish (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
void fso_framework_command_queue_registerUnsolicitedHandler (FsoFrameworkCommandQueue* self, FsoFrameworkCommandQueueUnsolicitedHandler urchandler, void* urchandler_target);
void fso_framework_command_queue_freeze (FsoFrameworkCommandQueue* self, gboolean drain, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_framework_command_queue_freeze_finish (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
void fso_framework_command_queue_thaw (FsoFrameworkCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_framework_command_queue_thaw_finish (FsoFrameworkCommandQueue* self, GAsyncResult* _res_);
FsoFrameworkTransport* fso_framework_command_queue_get_transport (FsoFrameworkCommandQueue* self);
void fso_framework_command_queue_set_transport (FsoFrameworkCommandQueue* self, FsoFrameworkTransport* value);
gpointer fso_framework_abstract_command_handler_ref (gpointer instance);
void fso_framework_abstract_command_handler_unref (gpointer instance);
GParamSpec* fso_framework_param_spec_abstract_command_handler (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_framework_value_set_abstract_command_handler (GValue* value, gpointer v_object);
void fso_framework_value_take_abstract_command_handler (GValue* value, gpointer v_object);
gpointer fso_framework_value_get_abstract_command_handler (const GValue* value);
GType fso_framework_abstract_command_handler_get_type (void) G_GNUC_CONST;
void fso_framework_abstract_command_handler_writeToTransport (FsoFrameworkAbstractCommandHandler* self, FsoFrameworkTransport* t);
gchar* fso_framework_abstract_command_handler_to_string (FsoFrameworkAbstractCommandHandler* self);
FsoFrameworkAbstractCommandHandler* fso_framework_abstract_command_handler_construct (GType object_type);
GType fso_framework_abstract_command_queue_get_type (void) G_GNUC_CONST;
void fso_framework_abstract_command_queue_onReadFromTransport (FsoFrameworkAbstractCommandQueue* self, FsoFrameworkTransport* t);
gboolean fso_framework_abstract_command_queue_checkRestartingQ (FsoFrameworkAbstractCommandQueue* self);
void fso_framework_abstract_command_queue_writeNextCommand (FsoFrameworkAbstractCommandQueue* self);
void fso_framework_abstract_command_queue_resetTimeout (FsoFrameworkAbstractCommandQueue* self);
void fso_framework_abstract_command_queue_onHupFromTransport (FsoFrameworkAbstractCommandQueue* self);
gboolean fso_framework_abstract_command_queue_onTimeout (FsoFrameworkAbstractCommandQueue* self);
void fso_framework_abstract_command_queue_onResponseTimeout (FsoFrameworkAbstractCommandQueue* self, FsoFrameworkAbstractCommandHandler* ach);
void fso_framework_abstract_command_queue_enqueueCommand (FsoFrameworkAbstractCommandQueue* self, FsoFrameworkAbstractCommandHandler* command);
void fso_framework_abstract_command_queue_reset (FsoFrameworkAbstractCommandQueue* self);
gboolean fso_framework_abstract_command_queue_is_busy (FsoFrameworkAbstractCommandQueue* self);
FsoFrameworkAbstractCommandQueue* fso_framework_abstract_command_queue_construct (GType object_type, FsoFrameworkTransport* transport);
void fso_framework_abstract_command_queue_open (FsoFrameworkAbstractCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean fso_framework_abstract_command_queue_open_finish (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
void fso_framework_abstract_command_queue_freeze (FsoFrameworkAbstractCommandQueue* self, gboolean drain, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_framework_abstract_command_queue_freeze_finish (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
void fso_framework_abstract_command_queue_thaw (FsoFrameworkAbstractCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_framework_abstract_command_queue_thaw_finish (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
void fso_framework_abstract_command_queue_close (FsoFrameworkAbstractCommandQueue* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_framework_abstract_command_queue_close_finish (FsoFrameworkAbstractCommandQueue* self, GAsyncResult* _res_);
GType fso_framework_delegate_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkDelegateTransport* fso_framework_delegate_transport_new (FsoFrameworkTransportDataFunc writefunc, void* writefunc_target, FsoFrameworkTransportDataFunc readfunc, void* readfunc_target, FsoFrameworkTransportFunc hupfunc, void* hupfunc_target, FsoFrameworkTransportBoolFunc openfunc, void* openfunc_target, FsoFrameworkTransportFunc closefunc, void* closefunc_target, FsoFrameworkTransportIntFunc freezefunc, void* freezefunc_target, FsoFrameworkTransportFunc thawfunc, void* thawfunc_target);
FsoFrameworkDelegateTransport* fso_framework_delegate_transport_construct (GType object_type, FsoFrameworkTransportDataFunc writefunc, void* writefunc_target, FsoFrameworkTransportDataFunc readfunc, void* readfunc_target, FsoFrameworkTransportFunc hupfunc, void* hupfunc_target, FsoFrameworkTransportBoolFunc openfunc, void* openfunc_target, FsoFrameworkTransportFunc closefunc, void* closefunc_target, FsoFrameworkTransportIntFunc freezefunc, void* freezefunc_target, FsoFrameworkTransportFunc thawfunc, void* thawfunc_target);
GType fso_framework_null_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkNullTransport* fso_framework_null_transport_new (const gchar* name, guint speed, gboolean raw, gboolean hard);
FsoFrameworkNullTransport* fso_framework_null_transport_construct (GType object_type, const gchar* name, guint speed, gboolean raw, gboolean hard);
GType fso_framework_parser_get_type (void) G_GNUC_CONST;
void fso_framework_parser_setDelegates (FsoFrameworkParser* self, FsoFrameworkParserHaveCommandFunc haveCommand, void* haveCommand_target, FsoFrameworkParserExpectedPrefixFunc expectedPrefix, void* expectedPrefix_target, FsoFrameworkParserSolicitedCompletedFunc solicitedCompleted, void* solicitedCompleted_target, FsoFrameworkParserUnsolicitedCompletedFunc unsolicitedCompleted, void* unsolicitedCompleted_target);
gint fso_framework_parser_feed (FsoFrameworkParser* self, void* data, gint len);
GType fso_framework_base_parser_get_type (void) G_GNUC_CONST;
gint fso_framework_base_parser_feed (FsoFrameworkBaseParser* self, void* data, gint len);
FsoFrameworkBaseParser* fso_framework_base_parser_new (void);
FsoFrameworkBaseParser* fso_framework_base_parser_construct (GType object_type);
GType fso_framework_null_parser_get_type (void) G_GNUC_CONST;
FsoFrameworkNullParser* fso_framework_null_parser_new (void);
FsoFrameworkNullParser* fso_framework_null_parser_construct (GType object_type);
GType fso_framework_line_by_line_parser_get_type (void) G_GNUC_CONST;
FsoFrameworkLineByLineParser* fso_framework_line_by_line_parser_new (const gchar* termination, gboolean swallow);
FsoFrameworkLineByLineParser* fso_framework_line_by_line_parser_construct (GType object_type, const gchar* termination, gboolean swallow);
GType fso_framework_fd_pipe_get_type (void) G_GNUC_CONST;
FsoFrameworkFdPipe* fso_framework_fd_pipe_new (gint s, gint din, gint dout);
FsoFrameworkFdPipe* fso_framework_fd_pipe_construct (GType object_type, gint s, gint din, gint dout);
GType fso_framework_pty_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkPtyTransport* fso_framework_pty_transport_new (void);
FsoFrameworkPtyTransport* fso_framework_pty_transport_construct (GType object_type);
GType fso_framework_serial_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkSerialTransport* fso_framework_serial_transport_new (const gchar* portname, guint portspeed, gboolean raw, gboolean hard);
FsoFrameworkSerialTransport* fso_framework_serial_transport_construct (GType object_type, const gchar* portname, guint portspeed, gboolean raw, gboolean hard);
GType fso_framework_socket_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkSocketTransport* fso_framework_socket_transport_new (const gchar* type, const gchar* host, guint port);
FsoFrameworkSocketTransport* fso_framework_socket_transport_construct (GType object_type, const gchar* type, const gchar* host, guint port);
GQuark fso_framework_transport_error_quark (void);
GType fso_framework_transport_state_get_type (void) G_GNUC_CONST;
gpointer fso_framework_transport_spec_ref (gpointer instance);
void fso_framework_transport_spec_unref (gpointer instance);
GParamSpec* fso_framework_param_spec_transport_spec (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_framework_value_set_transport_spec (GValue* value, gpointer v_object);
void fso_framework_value_take_transport_spec (GValue* value, gpointer v_object);
gpointer fso_framework_value_get_transport_spec (const GValue* value);
GType fso_framework_transport_spec_get_type (void) G_GNUC_CONST;
FsoFrameworkTransportSpec* fso_framework_transport_spec_new (const gchar* type, const gchar* name, guint speed, gboolean raw, gboolean hard);
FsoFrameworkTransportSpec* fso_framework_transport_spec_construct (GType object_type, const gchar* type, const gchar* name, guint speed, gboolean raw, gboolean hard);
gchar* fso_framework_transport_spec_repr (FsoFrameworkTransportSpec* self);
FsoFrameworkTransportSpec* fso_framework_transport_spec_parse (const gchar* line);
FsoFrameworkTransport* fso_framework_transport_spec_create (FsoFrameworkTransportSpec* self);
FsoFrameworkTransport* fso_framework_transport_create (const gchar* type, const gchar* name, guint speed, gboolean raw, gboolean hard);
gboolean fso_framework_transport_isOpen (FsoFrameworkTransport* self);
void fso_framework_transport_openAsync (FsoFrameworkTransport* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean fso_framework_transport_openAsync_finish (FsoFrameworkTransport* self, GAsyncResult* _res_);
gboolean fso_framework_transport_open (FsoFrameworkTransport* self);
void fso_framework_transport_close (FsoFrameworkTransport* self);
gchar* fso_framework_transport_getName (FsoFrameworkTransport* self);
void fso_framework_transport_setDelegates (FsoFrameworkTransport* self, FsoFrameworkTransportFunc readfunc, void* readfunc_target, FsoFrameworkTransportFunc hupfunc, void* hupfunc_target);
void fso_framework_transport_getDelegates (FsoFrameworkTransport* self, FsoFrameworkTransportFunc* readfun, void** readfun_target, GDestroyNotify* readfun_target_destroy_notify, FsoFrameworkTransportFunc* hupfun, void** hupfun_target, GDestroyNotify* hupfun_target_destroy_notify);
void fso_framework_transport_setPriorities (FsoFrameworkTransport* self, gint rp, gint wp);
void fso_framework_transport_setBuffered (FsoFrameworkTransport* self, gboolean on);
gint fso_framework_transport_writeAndRead (FsoFrameworkTransport* self, void* wdata, gint wlength, void* rdata, gint rlength, gint maxWait);
gint fso_framework_transport_read (FsoFrameworkTransport* self, void* data, gint length);
gint fso_framework_transport_write (FsoFrameworkTransport* self, void* data, gint length);
gint fso_framework_transport_freeze (FsoFrameworkTransport* self);
void fso_framework_transport_thaw (FsoFrameworkTransport* self);
void fso_framework_transport_drain (FsoFrameworkTransport* self);
void fso_framework_transport_flush (FsoFrameworkTransport* self);
gboolean fso_framework_transport_suspend (FsoFrameworkTransport* self);
void fso_framework_transport_resume (FsoFrameworkTransport* self);
FsoFrameworkTransport* fso_framework_transport_construct (GType object_type);
GType fso_framework_raw_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkRawTransport* fso_framework_raw_transport_new (const gchar* portname);
FsoFrameworkRawTransport* fso_framework_raw_transport_construct (GType object_type, const gchar* portname);
GType fso_framework_combined_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkCombinedTransport* fso_framework_combined_transport_new (const gchar* specification);
FsoFrameworkCombinedTransport* fso_framework_combined_transport_construct (GType object_type, const gchar* specification);
GType fso_framework_ngsm_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkNgsmTransport* fso_framework_ngsm_transport_new (const gchar* portname, guint portspeed, gboolean advanced, guint framesize);
FsoFrameworkNgsmTransport* fso_framework_ngsm_transport_construct (GType object_type, const gchar* portname, guint portspeed, gboolean advanced, guint framesize);
GType fso_framework_ngsm_basic_mux_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkNgsmBasicMuxTransport* fso_framework_ngsm_basic_mux_transport_new (const gchar* portname, guint portspeed, guint framesize);
FsoFrameworkNgsmBasicMuxTransport* fso_framework_ngsm_basic_mux_transport_construct (GType object_type, const gchar* portname, guint portspeed, guint framesize);
GType fso_framework_ngsm_advanced_mux_transport_get_type (void) G_GNUC_CONST;
FsoFrameworkNgsmAdvancedMuxTransport* fso_framework_ngsm_advanced_mux_transport_new (const gchar* portname, guint portspeed, guint framesize);
FsoFrameworkNgsmAdvancedMuxTransport* fso_framework_ngsm_advanced_mux_transport_construct (GType object_type, const gchar* portname, guint portspeed, guint framesize);


G_END_DECLS

#endif
