/* mediators_call.c generated by valac 0.14.2, the Vala compiler
 * generated from mediators_call.vala, do not modify */

/*
 * Copyright (C) 2011 Simon Busch <morphis@gravedo.de>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 */

#include <glib.h>
#include <glib-object.h>
#include <fsogsm.h>
#include <gio/gio.h>
#include <freesmartphone.h>
#include <stdlib.h>
#include <string.h>
#include <fsotransport.h>
#include <radio.h>
#include <fsobasics.h>


#define TYPE_SAMSUNG_CALL_ACTIVATE (samsung_call_activate_get_type ())
#define SAMSUNG_CALL_ACTIVATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_ACTIVATE, SamsungCallActivate))
#define SAMSUNG_CALL_ACTIVATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_ACTIVATE, SamsungCallActivateClass))
#define IS_SAMSUNG_CALL_ACTIVATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_ACTIVATE))
#define IS_SAMSUNG_CALL_ACTIVATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_ACTIVATE))
#define SAMSUNG_CALL_ACTIVATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_ACTIVATE, SamsungCallActivateClass))

typedef struct _SamsungCallActivate SamsungCallActivate;
typedef struct _SamsungCallActivateClass SamsungCallActivateClass;
typedef struct _SamsungCallActivatePrivate SamsungCallActivatePrivate;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef struct _SamsungCallActivateRunData SamsungCallActivateRunData;

#define TYPE_SAMSUNG_CALL_HOLD_ACTIVE (samsung_call_hold_active_get_type ())
#define SAMSUNG_CALL_HOLD_ACTIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_HOLD_ACTIVE, SamsungCallHoldActive))
#define SAMSUNG_CALL_HOLD_ACTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_HOLD_ACTIVE, SamsungCallHoldActiveClass))
#define IS_SAMSUNG_CALL_HOLD_ACTIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_HOLD_ACTIVE))
#define IS_SAMSUNG_CALL_HOLD_ACTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_HOLD_ACTIVE))
#define SAMSUNG_CALL_HOLD_ACTIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_HOLD_ACTIVE, SamsungCallHoldActiveClass))

typedef struct _SamsungCallHoldActive SamsungCallHoldActive;
typedef struct _SamsungCallHoldActiveClass SamsungCallHoldActiveClass;
typedef struct _SamsungCallHoldActivePrivate SamsungCallHoldActivePrivate;
typedef struct _SamsungCallHoldActiveRunData SamsungCallHoldActiveRunData;

#define TYPE_SAMSUNG_CALL_INITIATE (samsung_call_initiate_get_type ())
#define SAMSUNG_CALL_INITIATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_INITIATE, SamsungCallInitiate))
#define SAMSUNG_CALL_INITIATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_INITIATE, SamsungCallInitiateClass))
#define IS_SAMSUNG_CALL_INITIATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_INITIATE))
#define IS_SAMSUNG_CALL_INITIATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_INITIATE))
#define SAMSUNG_CALL_INITIATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_INITIATE, SamsungCallInitiateClass))

typedef struct _SamsungCallInitiate SamsungCallInitiate;
typedef struct _SamsungCallInitiateClass SamsungCallInitiateClass;
typedef struct _SamsungCallInitiatePrivate SamsungCallInitiatePrivate;
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _SamsungCallInitiateRunData SamsungCallInitiateRunData;

#define TYPE_SAMSUNG_CALL_LIST_CALLS (samsung_call_list_calls_get_type ())
#define SAMSUNG_CALL_LIST_CALLS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_LIST_CALLS, SamsungCallListCalls))
#define SAMSUNG_CALL_LIST_CALLS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_LIST_CALLS, SamsungCallListCallsClass))
#define IS_SAMSUNG_CALL_LIST_CALLS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_LIST_CALLS))
#define IS_SAMSUNG_CALL_LIST_CALLS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_LIST_CALLS))
#define SAMSUNG_CALL_LIST_CALLS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_LIST_CALLS, SamsungCallListCallsClass))

typedef struct _SamsungCallListCalls SamsungCallListCalls;
typedef struct _SamsungCallListCallsClass SamsungCallListCallsClass;
typedef struct _SamsungCallListCallsPrivate SamsungCallListCallsPrivate;

#define SAMSUNG_TYPE_IPC_CHANNEL (samsung_ipc_channel_get_type ())
#define SAMSUNG_IPC_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SAMSUNG_TYPE_IPC_CHANNEL, SamsungIpcChannel))
#define SAMSUNG_IPC_CHANNEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SAMSUNG_TYPE_IPC_CHANNEL, SamsungIpcChannelClass))
#define SAMSUNG_IS_IPC_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SAMSUNG_TYPE_IPC_CHANNEL))
#define SAMSUNG_IS_IPC_CHANNEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SAMSUNG_TYPE_IPC_CHANNEL))
#define SAMSUNG_IPC_CHANNEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SAMSUNG_TYPE_IPC_CHANNEL, SamsungIpcChannelClass))

typedef struct _SamsungIpcChannel SamsungIpcChannel;
typedef struct _SamsungIpcChannelClass SamsungIpcChannelClass;
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _fso_gsm_constants_unref0(var) ((var == NULL) ? NULL : (var = (fso_gsm_constants_unref (var), NULL)))
typedef struct _SamsungCallListCallsRunData SamsungCallListCallsRunData;

#define TYPE_SAMSUNG_CALL_SEND_DTMF (samsung_call_send_dtmf_get_type ())
#define SAMSUNG_CALL_SEND_DTMF(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_SEND_DTMF, SamsungCallSendDtmf))
#define SAMSUNG_CALL_SEND_DTMF_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_SEND_DTMF, SamsungCallSendDtmfClass))
#define IS_SAMSUNG_CALL_SEND_DTMF(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_SEND_DTMF))
#define IS_SAMSUNG_CALL_SEND_DTMF_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_SEND_DTMF))
#define SAMSUNG_CALL_SEND_DTMF_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_SEND_DTMF, SamsungCallSendDtmfClass))

typedef struct _SamsungCallSendDtmf SamsungCallSendDtmf;
typedef struct _SamsungCallSendDtmfClass SamsungCallSendDtmfClass;
typedef struct _SamsungCallSendDtmfPrivate SamsungCallSendDtmfPrivate;
typedef struct _SamsungCallSendDtmfRunData SamsungCallSendDtmfRunData;

#define TYPE_SAMSUNG_CALL_RELEASE (samsung_call_release_get_type ())
#define SAMSUNG_CALL_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_RELEASE, SamsungCallRelease))
#define SAMSUNG_CALL_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_RELEASE, SamsungCallReleaseClass))
#define IS_SAMSUNG_CALL_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_RELEASE))
#define IS_SAMSUNG_CALL_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_RELEASE))
#define SAMSUNG_CALL_RELEASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_RELEASE, SamsungCallReleaseClass))

typedef struct _SamsungCallRelease SamsungCallRelease;
typedef struct _SamsungCallReleaseClass SamsungCallReleaseClass;
typedef struct _SamsungCallReleasePrivate SamsungCallReleasePrivate;
typedef struct _SamsungCallReleaseRunData SamsungCallReleaseRunData;

#define TYPE_SAMSUNG_CALL_RELEASE_ALL (samsung_call_release_all_get_type ())
#define SAMSUNG_CALL_RELEASE_ALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAMSUNG_CALL_RELEASE_ALL, SamsungCallReleaseAll))
#define SAMSUNG_CALL_RELEASE_ALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAMSUNG_CALL_RELEASE_ALL, SamsungCallReleaseAllClass))
#define IS_SAMSUNG_CALL_RELEASE_ALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAMSUNG_CALL_RELEASE_ALL))
#define IS_SAMSUNG_CALL_RELEASE_ALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAMSUNG_CALL_RELEASE_ALL))
#define SAMSUNG_CALL_RELEASE_ALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAMSUNG_CALL_RELEASE_ALL, SamsungCallReleaseAllClass))

typedef struct _SamsungCallReleaseAll SamsungCallReleaseAll;
typedef struct _SamsungCallReleaseAllClass SamsungCallReleaseAllClass;
typedef struct _SamsungCallReleaseAllPrivate SamsungCallReleaseAllPrivate;
typedef struct _SamsungCallReleaseAllRunData SamsungCallReleaseAllRunData;

struct _SamsungCallActivate {
	FsoGsmCallActivate parent_instance;
	SamsungCallActivatePrivate * priv;
};

struct _SamsungCallActivateClass {
	FsoGsmCallActivateClass parent_class;
};

struct _SamsungCallActivateRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallActivate* self;
	gint id;
	FsoGsmModem* _tmp0_;
	FsoGsmCallHandler* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	gint _tmp3_;
	GError * _inner_error_;
};

struct _SamsungCallHoldActive {
	FsoGsmCallHoldActive parent_instance;
	SamsungCallHoldActivePrivate * priv;
};

struct _SamsungCallHoldActiveClass {
	FsoGsmCallHoldActiveClass parent_class;
};

struct _SamsungCallHoldActiveRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallHoldActive* self;
	FsoGsmModem* _tmp0_;
	FsoGsmCallHandler* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	GError * _inner_error_;
};

struct _SamsungCallInitiate {
	FsoGsmCallInitiate parent_instance;
	SamsungCallInitiatePrivate * priv;
};

struct _SamsungCallInitiateClass {
	FsoGsmCallInitiateClass parent_class;
};

struct _SamsungCallInitiateRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallInitiate* self;
	gchar* number;
	gchar* ctype;
	const gchar* _tmp0_;
	FsoGsmModem* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	FsoGsmCallHandler* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	gint _tmp6_;
	gint _tmp7_;
	GError * _inner_error_;
};

struct _SamsungCallListCalls {
	FsoGsmCallListCalls parent_instance;
	SamsungCallListCallsPrivate * priv;
};

struct _SamsungCallListCallsClass {
	FsoGsmCallListCallsClass parent_class;
};

struct _SamsungCallListCallsRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallListCalls* self;
	FsoGsmModem* _tmp0_;
	FsoGsmChannel* _tmp1_;
	SamsungIpcChannel* channel;
	struct ipc_message_info* response;
	FreeSmartphoneGSMCallDetail* _tmp2_;
	FreeSmartphoneGSMCallDetail* _calls;
	gint _calls_length1;
	gint __calls_size_;
	SamsungIpcChannel* _tmp3_;
	guint8* _tmp4_;
	guint8* _tmp5_;
	gint _tmp5__length1;
	struct ipc_message_info* _tmp6_;
	struct ipc_message_info* _tmp7_;
	GError* _tmp8_;
	struct ipc_message_info* _tmp9_;
	struct ipc_message_info callListResponse;
	guint _tmp10_;
	guint numberOfCalls;
	FsoFrameworkLogger* _tmp11_;
	guint _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gboolean _tmp17_;
	gint n;
	gboolean _tmp18_;
	gboolean _tmp19_;
	gint _tmp20_;
	gint _tmp21_;
	guint _tmp22_;
	gint _tmp23_;
	struct ipc_call_list_entry* _tmp24_;
	struct ipc_call_list_entry* currentCallEntry;
	struct ipc_call_list_entry* _tmp25_;
	int _tmp26_;
	struct ipc_call_list_entry* _tmp27_;
	guint8 _tmp28_;
	FsoGsmConstants* _tmp29_;
	FsoGsmConstants* _tmp30_;
	struct ipc_call_list_entry* _tmp31_;
	gint8 _tmp32_;
	FreeSmartphoneGSMCallStatus _tmp33_;
	GHashFunc _tmp34_;
	GEqualFunc _tmp35_;
	GHashTable* _tmp36_;
	GHashTable* _tmp37_;
	FreeSmartphoneGSMCallDetail ci;
	FsoFrameworkLogger* _tmp38_;
	FreeSmartphoneGSMCallDetail _tmp39_;
	gint _tmp40_;
	gchar* _tmp41_;
	gchar* _tmp42_;
	gchar* _tmp43_;
	gchar* _tmp44_;
	gboolean _tmp45_;
	gint _tmp46_;
	gchar* _tmp47_;
	gchar* number;
	const gchar* _tmp48_;
	FreeSmartphoneGSMCallDetail _tmp49_;
	GHashTable* _tmp50_;
	gchar* _tmp51_;
	const gchar* _tmp52_;
	GVariant* _tmp53_;
	FreeSmartphoneGSMCallDetail* _tmp54_;
	gint _tmp54__length1;
	FreeSmartphoneGSMCallDetail _tmp55_;
	FreeSmartphoneGSMCallDetail _tmp56_;
	FreeSmartphoneGSMCallDetail* _tmp57_;
	gint _tmp57__length1;
	GError * _inner_error_;
};

struct _SamsungCallSendDtmf {
	FsoGsmCallSendDtmf parent_instance;
	SamsungCallSendDtmfPrivate * priv;
};

struct _SamsungCallSendDtmfClass {
	FsoGsmCallSendDtmfClass parent_class;
};

struct _SamsungCallSendDtmfRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallSendDtmf* self;
	gchar* tones;
	GError* _tmp0_;
	GError * _inner_error_;
};

struct _SamsungCallRelease {
	FsoGsmCallRelease parent_instance;
	SamsungCallReleasePrivate * priv;
};

struct _SamsungCallReleaseClass {
	FsoGsmCallReleaseClass parent_class;
};

struct _SamsungCallReleaseRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallRelease* self;
	gint id;
	FsoGsmModem* _tmp0_;
	FsoGsmCallHandler* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	gint _tmp3_;
	GError * _inner_error_;
};

struct _SamsungCallReleaseAll {
	FsoGsmCallReleaseAll parent_instance;
	SamsungCallReleaseAllPrivate * priv;
};

struct _SamsungCallReleaseAllClass {
	FsoGsmCallReleaseAllClass parent_class;
};

struct _SamsungCallReleaseAllRunData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GSimpleAsyncResult* _async_result;
	SamsungCallReleaseAll* self;
	FsoGsmModem* _tmp0_;
	FsoGsmCallHandler* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	GError * _inner_error_;
};


static gpointer samsung_call_activate_parent_class = NULL;
static GType samsung_call_activate_type_id = 0;
static gpointer samsung_call_hold_active_parent_class = NULL;
static GType samsung_call_hold_active_type_id = 0;
static gpointer samsung_call_initiate_parent_class = NULL;
static GType samsung_call_initiate_type_id = 0;
static gpointer samsung_call_list_calls_parent_class = NULL;
static GType samsung_call_list_calls_type_id = 0;
static gpointer samsung_call_send_dtmf_parent_class = NULL;
static GType samsung_call_send_dtmf_type_id = 0;
static gpointer samsung_call_release_parent_class = NULL;
static GType samsung_call_release_type_id = 0;
static gpointer samsung_call_release_all_parent_class = NULL;
static GType samsung_call_release_all_type_id = 0;

GType samsung_call_activate_get_type (void) G_GNUC_CONST;
GType samsung_call_activate_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_ACTIVATE_DUMMY_PROPERTY
};
static void samsung_call_activate_real_run_data_free (gpointer _data);
static void samsung_call_activate_real_run (FsoGsmCallActivate* base, gint id, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_activate_real_run_co (SamsungCallActivateRunData* _data_);
static void samsung_call_activate_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
SamsungCallActivate* samsung_call_activate_new (void);
SamsungCallActivate* samsung_call_activate_construct (GType object_type);
GType samsung_call_hold_active_get_type (void) G_GNUC_CONST;
GType samsung_call_hold_active_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_HOLD_ACTIVE_DUMMY_PROPERTY
};
static void samsung_call_hold_active_real_run_data_free (gpointer _data);
static void samsung_call_hold_active_real_run (FsoGsmCallHoldActive* base, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_hold_active_real_run_co (SamsungCallHoldActiveRunData* _data_);
static void samsung_call_hold_active_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
SamsungCallHoldActive* samsung_call_hold_active_new (void);
SamsungCallHoldActive* samsung_call_hold_active_construct (GType object_type);
GType samsung_call_initiate_get_type (void) G_GNUC_CONST;
GType samsung_call_initiate_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_INITIATE_DUMMY_PROPERTY
};
static void samsung_call_initiate_real_run_data_free (gpointer _data);
static void samsung_call_initiate_real_run (FsoGsmCallInitiate* base, const gchar* number, const gchar* ctype, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_initiate_real_run_co (SamsungCallInitiateRunData* _data_);
static void samsung_call_initiate_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
SamsungCallInitiate* samsung_call_initiate_new (void);
SamsungCallInitiate* samsung_call_initiate_construct (GType object_type);
GType samsung_call_list_calls_get_type (void) G_GNUC_CONST;
GType samsung_call_list_calls_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_LIST_CALLS_DUMMY_PROPERTY
};
static void samsung_call_list_calls_real_run_data_free (gpointer _data);
static void samsung_call_list_calls_real_run (FsoGsmCallListCalls* base, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_list_calls_real_run_co (SamsungCallListCallsRunData* _data_);
GType samsung_ipc_channel_get_type (void) G_GNUC_CONST;
GType samsung_ipc_channel_register_type (GTypeModule * module);
void samsung_ipc_channel_enqueue_async (SamsungIpcChannel* self, int type, unsigned short command, guint8* data, int data_length1, gint retry, gint timeout, GAsyncReadyCallback _callback_, gpointer _user_data_);
struct ipc_message_info* samsung_ipc_channel_enqueue_finish (SamsungIpcChannel* self, GAsyncResult* _res_);
static void samsung_call_list_calls_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static void _vala_FreeSmartphoneGSMCallDetail_array_free (FreeSmartphoneGSMCallDetail* array, gint array_length);
static void _g_free0_ (gpointer var);
static void _g_variant_unref0_ (gpointer var);
static GVariant* _variant_new29 (const gchar* value);
static void _vala_array_add2 (FreeSmartphoneGSMCallDetail** array, int* length, int* size, const FreeSmartphoneGSMCallDetail* value);
SamsungCallListCalls* samsung_call_list_calls_new (void);
SamsungCallListCalls* samsung_call_list_calls_construct (GType object_type);
GType samsung_call_send_dtmf_get_type (void) G_GNUC_CONST;
GType samsung_call_send_dtmf_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_SEND_DTMF_DUMMY_PROPERTY
};
static void samsung_call_send_dtmf_real_run_data_free (gpointer _data);
static void samsung_call_send_dtmf_real_run (FsoGsmCallSendDtmf* base, const gchar* tones, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_send_dtmf_real_run_co (SamsungCallSendDtmfRunData* _data_);
SamsungCallSendDtmf* samsung_call_send_dtmf_new (void);
SamsungCallSendDtmf* samsung_call_send_dtmf_construct (GType object_type);
GType samsung_call_release_get_type (void) G_GNUC_CONST;
GType samsung_call_release_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_RELEASE_DUMMY_PROPERTY
};
static void samsung_call_release_real_run_data_free (gpointer _data);
static void samsung_call_release_real_run (FsoGsmCallRelease* base, gint id, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_release_real_run_co (SamsungCallReleaseRunData* _data_);
static void samsung_call_release_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
SamsungCallRelease* samsung_call_release_new (void);
SamsungCallRelease* samsung_call_release_construct (GType object_type);
GType samsung_call_release_all_get_type (void) G_GNUC_CONST;
GType samsung_call_release_all_register_type (GTypeModule * module);
enum  {
	SAMSUNG_CALL_RELEASE_ALL_DUMMY_PROPERTY
};
static void samsung_call_release_all_real_run_data_free (gpointer _data);
static void samsung_call_release_all_real_run (FsoGsmCallReleaseAll* base, GAsyncReadyCallback _callback_, gpointer _user_data_);
static gboolean samsung_call_release_all_real_run_co (SamsungCallReleaseAllRunData* _data_);
static void samsung_call_release_all_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
SamsungCallReleaseAll* samsung_call_release_all_new (void);
SamsungCallReleaseAll* samsung_call_release_all_construct (GType object_type);


static void samsung_call_activate_real_run_data_free (gpointer _data) {
	SamsungCallActivateRunData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallActivateRunData, _data_);
}


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


static void samsung_call_activate_real_run (FsoGsmCallActivate* base, gint id, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallActivate * self;
	SamsungCallActivateRunData* _data_;
	SamsungCallActivate* _tmp0_;
	gint _tmp1_;
	self = (SamsungCallActivate*) base;
	_data_ = g_slice_new0 (SamsungCallActivateRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_activate_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_activate_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = id;
	_data_->id = _tmp1_;
	samsung_call_activate_real_run_co (_data_);
}


static void samsung_call_activate_real_run_finish (FsoGsmCallActivate* base, GAsyncResult* _res_, GError** error) {
	SamsungCallActivateRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static void samsung_call_activate_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	SamsungCallActivateRunData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	samsung_call_activate_real_run_co (_data_);
}


static gboolean samsung_call_activate_real_run_co (SamsungCallActivateRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = fso_gsm_theModem;
	_data_->_tmp1_ = fso_gsm_modem_get_callhandler (_data_->_tmp0_);
	_data_->_tmp2_ = _data_->_tmp1_;
	_data_->_tmp3_ = _data_->id;
	_data_->_state_ = 1;
	fso_gsm_call_handler_activate (_data_->_tmp2_, _data_->_tmp3_, samsung_call_activate_run_ready, _data_);
	return FALSE;
	_state_1:
	fso_gsm_call_handler_activate_finish (_data_->_tmp2_, _data_->_res_, &_data_->_inner_error_);
	if (_data_->_inner_error_ != NULL) {
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallActivate* samsung_call_activate_construct (GType object_type) {
	SamsungCallActivate * self = NULL;
	self = (SamsungCallActivate*) fso_gsm_call_activate_construct (object_type);
	return self;
}


SamsungCallActivate* samsung_call_activate_new (void) {
	return samsung_call_activate_construct (TYPE_SAMSUNG_CALL_ACTIVATE);
}


static void samsung_call_activate_class_init (SamsungCallActivateClass * klass) {
	samsung_call_activate_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_ACTIVATE_CLASS (klass)->run = samsung_call_activate_real_run;
	FSO_GSM_CALL_ACTIVATE_CLASS (klass)->run_finish = samsung_call_activate_real_run_finish;
}


static void samsung_call_activate_instance_init (SamsungCallActivate * self) {
}


GType samsung_call_activate_get_type (void) {
	return samsung_call_activate_type_id;
}


GType samsung_call_activate_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallActivateClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_activate_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallActivate), 0, (GInstanceInitFunc) samsung_call_activate_instance_init, NULL };
	samsung_call_activate_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_ACTIVATE, "SamsungCallActivate", &g_define_type_info, 0);
	return samsung_call_activate_type_id;
}


static void samsung_call_hold_active_real_run_data_free (gpointer _data) {
	SamsungCallHoldActiveRunData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallHoldActiveRunData, _data_);
}


static void samsung_call_hold_active_real_run (FsoGsmCallHoldActive* base, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallHoldActive * self;
	SamsungCallHoldActiveRunData* _data_;
	SamsungCallHoldActive* _tmp0_;
	self = (SamsungCallHoldActive*) base;
	_data_ = g_slice_new0 (SamsungCallHoldActiveRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_hold_active_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_hold_active_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	samsung_call_hold_active_real_run_co (_data_);
}


static void samsung_call_hold_active_real_run_finish (FsoGsmCallHoldActive* base, GAsyncResult* _res_, GError** error) {
	SamsungCallHoldActiveRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static void samsung_call_hold_active_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	SamsungCallHoldActiveRunData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	samsung_call_hold_active_real_run_co (_data_);
}


static gboolean samsung_call_hold_active_real_run_co (SamsungCallHoldActiveRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = fso_gsm_theModem;
	_data_->_tmp1_ = fso_gsm_modem_get_callhandler (_data_->_tmp0_);
	_data_->_tmp2_ = _data_->_tmp1_;
	_data_->_state_ = 1;
	fso_gsm_call_handler_hold (_data_->_tmp2_, samsung_call_hold_active_run_ready, _data_);
	return FALSE;
	_state_1:
	fso_gsm_call_handler_hold_finish (_data_->_tmp2_, _data_->_res_, &_data_->_inner_error_);
	if (_data_->_inner_error_ != NULL) {
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallHoldActive* samsung_call_hold_active_construct (GType object_type) {
	SamsungCallHoldActive * self = NULL;
	self = (SamsungCallHoldActive*) fso_gsm_call_hold_active_construct (object_type);
	return self;
}


SamsungCallHoldActive* samsung_call_hold_active_new (void) {
	return samsung_call_hold_active_construct (TYPE_SAMSUNG_CALL_HOLD_ACTIVE);
}


static void samsung_call_hold_active_class_init (SamsungCallHoldActiveClass * klass) {
	samsung_call_hold_active_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_HOLD_ACTIVE_CLASS (klass)->run = samsung_call_hold_active_real_run;
	FSO_GSM_CALL_HOLD_ACTIVE_CLASS (klass)->run_finish = samsung_call_hold_active_real_run_finish;
}


static void samsung_call_hold_active_instance_init (SamsungCallHoldActive * self) {
}


GType samsung_call_hold_active_get_type (void) {
	return samsung_call_hold_active_type_id;
}


GType samsung_call_hold_active_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallHoldActiveClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_hold_active_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallHoldActive), 0, (GInstanceInitFunc) samsung_call_hold_active_instance_init, NULL };
	samsung_call_hold_active_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_HOLD_ACTIVE, "SamsungCallHoldActive", &g_define_type_info, 0);
	return samsung_call_hold_active_type_id;
}


static void samsung_call_initiate_real_run_data_free (gpointer _data) {
	SamsungCallInitiateRunData* _data_;
	_data_ = _data;
	_g_free0 (_data_->number);
	_g_free0 (_data_->ctype);
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallInitiateRunData, _data_);
}


static void samsung_call_initiate_real_run (FsoGsmCallInitiate* base, const gchar* number, const gchar* ctype, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallInitiate * self;
	SamsungCallInitiateRunData* _data_;
	SamsungCallInitiate* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	self = (SamsungCallInitiate*) base;
	_data_ = g_slice_new0 (SamsungCallInitiateRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_initiate_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_initiate_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = number;
	_tmp2_ = g_strdup (_tmp1_);
	_data_->number = _tmp2_;
	_tmp3_ = ctype;
	_tmp4_ = g_strdup (_tmp3_);
	_data_->ctype = _tmp4_;
	samsung_call_initiate_real_run_co (_data_);
}


static void samsung_call_initiate_real_run_finish (FsoGsmCallInitiate* base, GAsyncResult* _res_, GError** error) {
	SamsungCallInitiateRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static void samsung_call_initiate_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	SamsungCallInitiateRunData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	samsung_call_initiate_real_run_co (_data_);
}


static gboolean samsung_call_initiate_real_run_co (SamsungCallInitiateRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = _data_->number;
	fso_gsm_validatePhoneNumber (_data_->_tmp0_, &_data_->_inner_error_);
	if (_data_->_inner_error_ != NULL) {
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	_data_->_tmp1_ = fso_gsm_theModem;
	_data_->_tmp2_ = fso_gsm_modem_get_callhandler (_data_->_tmp1_);
	_data_->_tmp3_ = _data_->_tmp2_;
	_data_->_tmp4_ = _data_->number;
	_data_->_tmp5_ = _data_->ctype;
	_data_->_state_ = 1;
	fso_gsm_call_handler_initiate (_data_->_tmp3_, _data_->_tmp4_, _data_->_tmp5_, samsung_call_initiate_run_ready, _data_);
	return FALSE;
	_state_1:
	_data_->_tmp6_ = 0;
	_data_->_tmp6_ = fso_gsm_call_handler_initiate_finish (_data_->_tmp3_, _data_->_res_, &_data_->_inner_error_);
	_data_->_tmp7_ = _data_->_tmp6_;
	if (_data_->_inner_error_ != NULL) {
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	fso_gsm_call_initiate_set_id ((FsoGsmCallInitiate*) _data_->self, _data_->_tmp7_);
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallInitiate* samsung_call_initiate_construct (GType object_type) {
	SamsungCallInitiate * self = NULL;
	self = (SamsungCallInitiate*) fso_gsm_call_initiate_construct (object_type);
	return self;
}


SamsungCallInitiate* samsung_call_initiate_new (void) {
	return samsung_call_initiate_construct (TYPE_SAMSUNG_CALL_INITIATE);
}


static void samsung_call_initiate_class_init (SamsungCallInitiateClass * klass) {
	samsung_call_initiate_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_INITIATE_CLASS (klass)->run = samsung_call_initiate_real_run;
	FSO_GSM_CALL_INITIATE_CLASS (klass)->run_finish = samsung_call_initiate_real_run_finish;
}


static void samsung_call_initiate_instance_init (SamsungCallInitiate * self) {
}


GType samsung_call_initiate_get_type (void) {
	return samsung_call_initiate_type_id;
}


GType samsung_call_initiate_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallInitiateClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_initiate_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallInitiate), 0, (GInstanceInitFunc) samsung_call_initiate_instance_init, NULL };
	samsung_call_initiate_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_INITIATE, "SamsungCallInitiate", &g_define_type_info, 0);
	return samsung_call_initiate_type_id;
}


static void samsung_call_list_calls_real_run_data_free (gpointer _data) {
	SamsungCallListCallsRunData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallListCallsRunData, _data_);
}


static void samsung_call_list_calls_real_run (FsoGsmCallListCalls* base, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallListCalls * self;
	SamsungCallListCallsRunData* _data_;
	SamsungCallListCalls* _tmp0_;
	self = (SamsungCallListCalls*) base;
	_data_ = g_slice_new0 (SamsungCallListCallsRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_list_calls_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_list_calls_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	samsung_call_list_calls_real_run_co (_data_);
}


static void samsung_call_list_calls_real_run_finish (FsoGsmCallListCalls* base, GAsyncResult* _res_, GError** error) {
	SamsungCallListCallsRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static void samsung_call_list_calls_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	SamsungCallListCallsRunData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	samsung_call_list_calls_real_run_co (_data_);
}


static void _vala_FreeSmartphoneGSMCallDetail_array_free (FreeSmartphoneGSMCallDetail* array, gint array_length) {
	if (array != NULL) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			free_smartphone_gsm_call_detail_destroy (&array[i]);
		}
	}
	g_free (array);
}


static void _g_free0_ (gpointer var) {
	var = (g_free (var), NULL);
}


static void _g_variant_unref0_ (gpointer var) {
	(var == NULL) ? NULL : (var = (g_variant_unref (var), NULL));
}


static GVariant* _variant_new29 (const gchar* value) {
	return g_variant_ref_sink (g_variant_new_string (value));
}


static void _vala_array_add2 (FreeSmartphoneGSMCallDetail** array, int* length, int* size, const FreeSmartphoneGSMCallDetail* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (FreeSmartphoneGSMCallDetail, *array, *size);
	}
	(*array)[(*length)++] = *value;
}


static gboolean samsung_call_list_calls_real_run_co (SamsungCallListCallsRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = fso_gsm_theModem;
	_data_->_tmp1_ = NULL;
	_data_->_tmp1_ = fso_gsm_modem_channel (_data_->_tmp0_, "main");
	_data_->channel = SAMSUNG_IS_IPC_CHANNEL (_data_->_tmp1_) ? ((SamsungIpcChannel*) _data_->_tmp1_) : NULL;
	_data_->response = NULL;
	_data_->_tmp2_ = NULL;
	_data_->_tmp2_ = g_new0 (FreeSmartphoneGSMCallDetail, 0);
	_data_->_calls = _data_->_tmp2_;
	_data_->_calls_length1 = 0;
	_data_->__calls_size_ = _data_->_calls_length1;
	_data_->_tmp3_ = _data_->channel;
	_data_->_tmp4_ = NULL;
	_data_->_tmp4_ = g_new0 (guint8, 0);
	_data_->_tmp5_ = _data_->_tmp4_;
	_data_->_tmp5__length1 = 0;
	_data_->_state_ = 1;
	samsung_ipc_channel_enqueue_async (_data_->_tmp3_, IPC_TYPE_GET, IPC_CALL_LIST, _data_->_tmp5_, 0, 0, 5, samsung_call_list_calls_run_ready, _data_);
	return FALSE;
	_state_1:
	_data_->_tmp6_ = NULL;
	_data_->_tmp6_ = samsung_ipc_channel_enqueue_finish (_data_->_tmp3_, _data_->_res_);
	_data_->response = _data_->_tmp6_;
	_data_->_tmp5_ = (g_free (_data_->_tmp5_), NULL);
	_data_->_tmp7_ = _data_->response;
	if (_data_->_tmp7_ == NULL) {
		_data_->_tmp8_ = g_error_new_literal (FREE_SMARTPHONE_ERROR, FREE_SMARTPHONE_ERROR_INTERNAL_ERROR, "Modem didn't respond current call list!");
		_data_->_inner_error_ = _data_->_tmp8_;
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			_data_->_calls = (_vala_FreeSmartphoneGSMCallDetail_array_free (_data_->_calls, _data_->_calls_length1), NULL);
			_g_object_unref0 (_data_->channel);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			_data_->_calls = (_vala_FreeSmartphoneGSMCallDetail_array_free (_data_->_calls, _data_->_calls_length1), NULL);
			_g_object_unref0 (_data_->channel);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	_data_->_tmp9_ = _data_->response;
	_data_->callListResponse = (struct ipc_message_info) (*_data_->_tmp9_);
	_data_->_tmp10_ = 0U;
	_data_->_tmp10_ = ipc_call_list_response_get_num_entries (&_data_->callListResponse);
	_data_->numberOfCalls = _data_->_tmp10_;
	_data_->_tmp11_ = fso_framework_theLogger;
	_data_->_tmp12_ = _data_->numberOfCalls;
	_data_->_tmp13_ = NULL;
	_data_->_tmp13_ = g_strdup_printf ("%u", _data_->_tmp12_);
	_data_->_tmp14_ = _data_->_tmp13_;
	_data_->_tmp15_ = NULL;
	_data_->_tmp15_ = g_strconcat ("We have totally a number of ", _data_->_tmp14_, " calls pending", NULL);
	_data_->_tmp16_ = _data_->_tmp15_;
	_data_->_tmp17_ = FALSE;
	_data_->_tmp17_ = fso_framework_logger_debug (_data_->_tmp11_, _data_->_tmp16_);
	g_assert (_data_->_tmp17_);
	_g_free0 (_data_->_tmp16_);
	_g_free0 (_data_->_tmp14_);
	{
		_data_->n = 0;
		{
			_data_->_tmp18_ = TRUE;
			while (TRUE) {
				_data_->_tmp19_ = _data_->_tmp18_;
				if (!_data_->_tmp19_) {
					_data_->_tmp20_ = _data_->n;
					_data_->n = _data_->_tmp20_ + 1;
				}
				_data_->_tmp18_ = FALSE;
				_data_->_tmp21_ = _data_->n;
				_data_->_tmp22_ = _data_->numberOfCalls;
				if (!(((guint) _data_->_tmp21_) < _data_->_tmp22_)) {
					break;
				}
				_data_->_tmp23_ = _data_->n;
				_data_->_tmp24_ = NULL;
				_data_->_tmp24_ = ipc_call_list_response_get_entry (&_data_->callListResponse, (guint) _data_->_tmp23_);
				_data_->currentCallEntry = _data_->_tmp24_;
				_data_->_tmp25_ = _data_->currentCallEntry;
				_data_->_tmp26_ = (*_data_->_tmp25_).type;
				if (_data_->_tmp26_ == IPC_CALL_TYPE_DATA) {
					continue;
				}
				_data_->_tmp27_ = _data_->currentCallEntry;
				_data_->_tmp28_ = (*_data_->_tmp27_).idx;
				_data_->_tmp29_ = NULL;
				_data_->_tmp29_ = fso_gsm_constants_instance ();
				_data_->_tmp30_ = _data_->_tmp29_;
				_data_->_tmp31_ = _data_->currentCallEntry;
				_data_->_tmp32_ = (*_data_->_tmp31_).state;
				_data_->_tmp33_ = 0;
				_data_->_tmp33_ = fso_gsm_constants_callStatusToEnum (_data_->_tmp30_, ((gint) _data_->_tmp32_) - 1);
				_data_->_tmp34_ = g_str_hash;
				_data_->_tmp35_ = g_str_equal;
				_data_->_tmp36_ = g_hash_table_new_full (_data_->_tmp34_, _data_->_tmp35_, _g_free0_, _g_variant_unref0_);
				_data_->_tmp37_ = _data_->_tmp36_;
				free_smartphone_gsm_call_detail_init (&_data_->ci, (gint) _data_->_tmp28_, _data_->_tmp33_, _data_->_tmp37_);
				_g_hash_table_unref0 (_data_->_tmp37_);
				_fso_gsm_constants_unref0 (_data_->_tmp30_);
				_data_->_tmp38_ = fso_framework_theLogger;
				_data_->_tmp39_ = _data_->ci;
				_data_->_tmp40_ = _data_->_tmp39_.id;
				_data_->_tmp41_ = NULL;
				_data_->_tmp41_ = g_strdup_printf ("%i", _data_->_tmp40_);
				_data_->_tmp42_ = _data_->_tmp41_;
				_data_->_tmp43_ = NULL;
				_data_->_tmp43_ = g_strconcat ("Retrieved call with id = ", _data_->_tmp42_, " from modem", NULL);
				_data_->_tmp44_ = _data_->_tmp43_;
				_data_->_tmp45_ = FALSE;
				_data_->_tmp45_ = fso_framework_logger_debug (_data_->_tmp38_, _data_->_tmp44_);
				g_assert (_data_->_tmp45_);
				_g_free0 (_data_->_tmp44_);
				_g_free0 (_data_->_tmp42_);
				_data_->_tmp46_ = _data_->n;
				_data_->_tmp47_ = NULL;
				_data_->_tmp47_ = ipc_call_list_response_get_entry_number (&_data_->callListResponse, (guint) _data_->_tmp46_);
				_data_->number = _data_->_tmp47_;
				_data_->_tmp48_ = _data_->number;
				if (_data_->_tmp48_ != NULL) {
					_data_->_tmp49_ = _data_->ci;
					_data_->_tmp50_ = _data_->_tmp49_.properties;
					_data_->_tmp51_ = g_strdup ("peer");
					_data_->_tmp52_ = _data_->number;
					_data_->_tmp53_ = _variant_new29 (_data_->_tmp52_);
					g_hash_table_insert (_data_->_tmp50_, _data_->_tmp51_, _data_->_tmp53_);
				}
				_data_->_tmp54_ = _data_->_calls;
				_data_->_tmp54__length1 = _data_->_calls_length1;
				_data_->_tmp55_ = _data_->ci;
				memset (&_data_->_tmp56_, 0, sizeof (FreeSmartphoneGSMCallDetail));
				free_smartphone_gsm_call_detail_copy (&_data_->_tmp55_, &_data_->_tmp56_);
				_vala_array_add2 (&_data_->_calls, &_data_->_calls_length1, &_data_->__calls_size_, &_data_->_tmp56_);
				_g_free0 (_data_->number);
				free_smartphone_gsm_call_detail_destroy (&_data_->ci);
			}
		}
	}
	_data_->_tmp57_ = _data_->_calls;
	_data_->_tmp57__length1 = _data_->_calls_length1;
	fso_gsm_call_list_calls_set_calls ((FsoGsmCallListCalls*) _data_->self, _data_->_tmp57_, _data_->_tmp57__length1);
	_data_->_calls = (_vala_FreeSmartphoneGSMCallDetail_array_free (_data_->_calls, _data_->_calls_length1), NULL);
	_g_object_unref0 (_data_->channel);
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallListCalls* samsung_call_list_calls_construct (GType object_type) {
	SamsungCallListCalls * self = NULL;
	self = (SamsungCallListCalls*) fso_gsm_call_list_calls_construct (object_type);
	return self;
}


SamsungCallListCalls* samsung_call_list_calls_new (void) {
	return samsung_call_list_calls_construct (TYPE_SAMSUNG_CALL_LIST_CALLS);
}


static void samsung_call_list_calls_class_init (SamsungCallListCallsClass * klass) {
	samsung_call_list_calls_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_LIST_CALLS_CLASS (klass)->run = samsung_call_list_calls_real_run;
	FSO_GSM_CALL_LIST_CALLS_CLASS (klass)->run_finish = samsung_call_list_calls_real_run_finish;
}


static void samsung_call_list_calls_instance_init (SamsungCallListCalls * self) {
}


GType samsung_call_list_calls_get_type (void) {
	return samsung_call_list_calls_type_id;
}


GType samsung_call_list_calls_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallListCallsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_list_calls_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallListCalls), 0, (GInstanceInitFunc) samsung_call_list_calls_instance_init, NULL };
	samsung_call_list_calls_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_LIST_CALLS, "SamsungCallListCalls", &g_define_type_info, 0);
	return samsung_call_list_calls_type_id;
}


static void samsung_call_send_dtmf_real_run_data_free (gpointer _data) {
	SamsungCallSendDtmfRunData* _data_;
	_data_ = _data;
	_g_free0 (_data_->tones);
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallSendDtmfRunData, _data_);
}


static void samsung_call_send_dtmf_real_run (FsoGsmCallSendDtmf* base, const gchar* tones, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallSendDtmf * self;
	SamsungCallSendDtmfRunData* _data_;
	SamsungCallSendDtmf* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	self = (SamsungCallSendDtmf*) base;
	_data_ = g_slice_new0 (SamsungCallSendDtmfRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_send_dtmf_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_send_dtmf_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = tones;
	_tmp2_ = g_strdup (_tmp1_);
	_data_->tones = _tmp2_;
	samsung_call_send_dtmf_real_run_co (_data_);
}


static void samsung_call_send_dtmf_real_run_finish (FsoGsmCallSendDtmf* base, GAsyncResult* _res_, GError** error) {
	SamsungCallSendDtmfRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static gboolean samsung_call_send_dtmf_real_run_co (SamsungCallSendDtmfRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = g_error_new_literal (FREE_SMARTPHONE_ERROR, FREE_SMARTPHONE_ERROR_UNSUPPORTED, "Not implemented yet!");
	_data_->_inner_error_ = _data_->_tmp0_;
	if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
		g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
		g_error_free (_data_->_inner_error_);
		if (_data_->_state_ == 0) {
			g_simple_async_result_complete_in_idle (_data_->_async_result);
		} else {
			g_simple_async_result_complete (_data_->_async_result);
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	} else {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
		g_clear_error (&_data_->_inner_error_);
		return FALSE;
	}
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallSendDtmf* samsung_call_send_dtmf_construct (GType object_type) {
	SamsungCallSendDtmf * self = NULL;
	self = (SamsungCallSendDtmf*) fso_gsm_call_send_dtmf_construct (object_type);
	return self;
}


SamsungCallSendDtmf* samsung_call_send_dtmf_new (void) {
	return samsung_call_send_dtmf_construct (TYPE_SAMSUNG_CALL_SEND_DTMF);
}


static void samsung_call_send_dtmf_class_init (SamsungCallSendDtmfClass * klass) {
	samsung_call_send_dtmf_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_SEND_DTMF_CLASS (klass)->run = samsung_call_send_dtmf_real_run;
	FSO_GSM_CALL_SEND_DTMF_CLASS (klass)->run_finish = samsung_call_send_dtmf_real_run_finish;
}


static void samsung_call_send_dtmf_instance_init (SamsungCallSendDtmf * self) {
}


GType samsung_call_send_dtmf_get_type (void) {
	return samsung_call_send_dtmf_type_id;
}


GType samsung_call_send_dtmf_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallSendDtmfClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_send_dtmf_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallSendDtmf), 0, (GInstanceInitFunc) samsung_call_send_dtmf_instance_init, NULL };
	samsung_call_send_dtmf_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_SEND_DTMF, "SamsungCallSendDtmf", &g_define_type_info, 0);
	return samsung_call_send_dtmf_type_id;
}


static void samsung_call_release_real_run_data_free (gpointer _data) {
	SamsungCallReleaseRunData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallReleaseRunData, _data_);
}


static void samsung_call_release_real_run (FsoGsmCallRelease* base, gint id, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallRelease * self;
	SamsungCallReleaseRunData* _data_;
	SamsungCallRelease* _tmp0_;
	gint _tmp1_;
	self = (SamsungCallRelease*) base;
	_data_ = g_slice_new0 (SamsungCallReleaseRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_release_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_release_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = id;
	_data_->id = _tmp1_;
	samsung_call_release_real_run_co (_data_);
}


static void samsung_call_release_real_run_finish (FsoGsmCallRelease* base, GAsyncResult* _res_, GError** error) {
	SamsungCallReleaseRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static void samsung_call_release_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	SamsungCallReleaseRunData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	samsung_call_release_real_run_co (_data_);
}


static gboolean samsung_call_release_real_run_co (SamsungCallReleaseRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = fso_gsm_theModem;
	_data_->_tmp1_ = fso_gsm_modem_get_callhandler (_data_->_tmp0_);
	_data_->_tmp2_ = _data_->_tmp1_;
	_data_->_tmp3_ = _data_->id;
	_data_->_state_ = 1;
	fso_gsm_call_handler_release (_data_->_tmp2_, _data_->_tmp3_, samsung_call_release_run_ready, _data_);
	return FALSE;
	_state_1:
	fso_gsm_call_handler_release_finish (_data_->_tmp2_, _data_->_res_, &_data_->_inner_error_);
	if (_data_->_inner_error_ != NULL) {
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallRelease* samsung_call_release_construct (GType object_type) {
	SamsungCallRelease * self = NULL;
	self = (SamsungCallRelease*) fso_gsm_call_release_construct (object_type);
	return self;
}


SamsungCallRelease* samsung_call_release_new (void) {
	return samsung_call_release_construct (TYPE_SAMSUNG_CALL_RELEASE);
}


static void samsung_call_release_class_init (SamsungCallReleaseClass * klass) {
	samsung_call_release_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_RELEASE_CLASS (klass)->run = samsung_call_release_real_run;
	FSO_GSM_CALL_RELEASE_CLASS (klass)->run_finish = samsung_call_release_real_run_finish;
}


static void samsung_call_release_instance_init (SamsungCallRelease * self) {
}


GType samsung_call_release_get_type (void) {
	return samsung_call_release_type_id;
}


GType samsung_call_release_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallReleaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_release_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallRelease), 0, (GInstanceInitFunc) samsung_call_release_instance_init, NULL };
	samsung_call_release_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_RELEASE, "SamsungCallRelease", &g_define_type_info, 0);
	return samsung_call_release_type_id;
}


static void samsung_call_release_all_real_run_data_free (gpointer _data) {
	SamsungCallReleaseAllRunData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SamsungCallReleaseAllRunData, _data_);
}


static void samsung_call_release_all_real_run (FsoGsmCallReleaseAll* base, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	SamsungCallReleaseAll * self;
	SamsungCallReleaseAllRunData* _data_;
	SamsungCallReleaseAll* _tmp0_;
	self = (SamsungCallReleaseAll*) base;
	_data_ = g_slice_new0 (SamsungCallReleaseAllRunData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, samsung_call_release_all_real_run);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, samsung_call_release_all_real_run_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	samsung_call_release_all_real_run_co (_data_);
}


static void samsung_call_release_all_real_run_finish (FsoGsmCallReleaseAll* base, GAsyncResult* _res_, GError** error) {
	SamsungCallReleaseAllRunData* _data_;
	if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
		return;
	}
	_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
}


static void samsung_call_release_all_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	SamsungCallReleaseAllRunData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	samsung_call_release_all_real_run_co (_data_);
}


static gboolean samsung_call_release_all_real_run_co (SamsungCallReleaseAllRunData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = fso_gsm_theModem;
	_data_->_tmp1_ = fso_gsm_modem_get_callhandler (_data_->_tmp0_);
	_data_->_tmp2_ = _data_->_tmp1_;
	_data_->_state_ = 1;
	fso_gsm_call_handler_releaseAll (_data_->_tmp2_, samsung_call_release_all_run_ready, _data_);
	return FALSE;
	_state_1:
	fso_gsm_call_handler_releaseAll_finish (_data_->_tmp2_, _data_->_res_, &_data_->_inner_error_);
	if (_data_->_inner_error_ != NULL) {
		if ((_data_->_inner_error_->domain == FREE_SMARTPHONE_GSM_ERROR) || (_data_->_inner_error_->domain == FREE_SMARTPHONE_ERROR)) {
			g_simple_async_result_set_from_error (_data_->_async_result, _data_->_inner_error_);
			g_error_free (_data_->_inner_error_);
			if (_data_->_state_ == 0) {
				g_simple_async_result_complete_in_idle (_data_->_async_result);
			} else {
				g_simple_async_result_complete (_data_->_async_result);
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		} else {
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code);
			g_clear_error (&_data_->_inner_error_);
			return FALSE;
		}
	}
	if (_data_->_state_ == 0) {
		g_simple_async_result_complete_in_idle (_data_->_async_result);
	} else {
		g_simple_async_result_complete (_data_->_async_result);
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


SamsungCallReleaseAll* samsung_call_release_all_construct (GType object_type) {
	SamsungCallReleaseAll * self = NULL;
	self = (SamsungCallReleaseAll*) fso_gsm_call_release_all_construct (object_type);
	return self;
}


SamsungCallReleaseAll* samsung_call_release_all_new (void) {
	return samsung_call_release_all_construct (TYPE_SAMSUNG_CALL_RELEASE_ALL);
}


static void samsung_call_release_all_class_init (SamsungCallReleaseAllClass * klass) {
	samsung_call_release_all_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_CALL_RELEASE_ALL_CLASS (klass)->run = samsung_call_release_all_real_run;
	FSO_GSM_CALL_RELEASE_ALL_CLASS (klass)->run_finish = samsung_call_release_all_real_run_finish;
}


static void samsung_call_release_all_instance_init (SamsungCallReleaseAll * self) {
}


GType samsung_call_release_all_get_type (void) {
	return samsung_call_release_all_type_id;
}


GType samsung_call_release_all_register_type (GTypeModule * module) {
	static const GTypeInfo g_define_type_info = { sizeof (SamsungCallReleaseAllClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) samsung_call_release_all_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SamsungCallReleaseAll), 0, (GInstanceInitFunc) samsung_call_release_all_instance_init, NULL };
	samsung_call_release_all_type_id = g_type_module_register_type (module, FSO_GSM_TYPE_CALL_RELEASE_ALL, "SamsungCallReleaseAll", &g_define_type_info, 0);
	return samsung_call_release_all_type_id;
}



